universal-physics-tensor 10.0.0 → 11.0.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 (720) hide show
  1. package/README.md +4 -3
  2. package/bin/upt.mjs +13 -1
  3. package/data/atlas/atlas.json +25 -25
  4. package/data/atlas/atlas.jsonld +1 -1
  5. package/data/atlas/diffusion.json +6 -6
  6. package/data/atlas/oscillators.json +7 -7
  7. package/data/atlas/waves.json +14 -14
  8. package/data/atlas/witness-results.json +11 -11
  9. package/data/bridge-catalog.json +371 -228
  10. package/data/bridge-catalog.schema.json +45 -7
  11. package/dist/atlas/applicability.d.ts.map +1 -1
  12. package/dist/atlas/applicability.js +21 -15
  13. package/dist/atlas/applicability.js.map +1 -1
  14. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +9 -1
  15. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  16. package/dist/atlas/benchmark/hybrid-retrieval.js +15 -13
  17. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  18. package/dist/atlas/benchmark/loader.js +2 -2
  19. package/dist/atlas/benchmark/loader.js.map +1 -1
  20. package/dist/atlas/benchmark/stats.d.ts +2 -2
  21. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  22. package/dist/atlas/benchmark/stats.js +15 -7
  23. package/dist/atlas/benchmark/stats.js.map +1 -1
  24. package/dist/atlas/catalog-formal-ref.d.ts +26 -3
  25. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
  26. package/dist/atlas/catalog-formal-ref.js +52 -5
  27. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  28. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  29. package/dist/atlas/chain-pipeline.js +7 -8
  30. package/dist/atlas/chain-pipeline.js.map +1 -1
  31. package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
  32. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  33. package/dist/atlas/diffusion/bridges-closure.js +8 -12
  34. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  35. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  36. package/dist/atlas/diffusion/bridges.js +27 -39
  37. package/dist/atlas/diffusion/bridges.js.map +1 -1
  38. package/dist/atlas/diffusion/dimensions.d.ts +6 -14
  39. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
  40. package/dist/atlas/diffusion/dimensions.js +8 -16
  41. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  42. package/dist/atlas/diffusion/models.d.ts +3 -3
  43. package/dist/atlas/diffusion/models.d.ts.map +1 -1
  44. package/dist/atlas/diffusion/models.js +5 -10
  45. package/dist/atlas/diffusion/models.js.map +1 -1
  46. package/dist/atlas/diffusion/numerics.d.ts +16 -4
  47. package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
  48. package/dist/atlas/diffusion/numerics.js +38 -24
  49. package/dist/atlas/diffusion/numerics.js.map +1 -1
  50. package/dist/atlas/link-prediction.d.ts +106 -3
  51. package/dist/atlas/link-prediction.d.ts.map +1 -1
  52. package/dist/atlas/link-prediction.js +212 -66
  53. package/dist/atlas/link-prediction.js.map +1 -1
  54. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  55. package/dist/atlas/oscillators/bridges-coarse.js +7 -11
  56. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  57. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  58. package/dist/atlas/oscillators/bridges-exact.js +6 -7
  59. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  60. package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
  61. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  62. package/dist/atlas/oscillators/bridges-limits.js +23 -34
  63. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  64. package/dist/atlas/oscillators/dimensions.d.ts +9 -21
  65. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
  66. package/dist/atlas/oscillators/dimensions.js +9 -21
  67. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  68. package/dist/atlas/oscillators/limit-witnesses.d.ts +2 -2
  69. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
  70. package/dist/atlas/oscillators/limit-witnesses.js +17 -15
  71. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  72. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  73. package/dist/atlas/oscillators/models.js +2 -6
  74. package/dist/atlas/oscillators/models.js.map +1 -1
  75. package/dist/atlas/oscillators/pendulum-motion.d.ts +29 -6
  76. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
  77. package/dist/atlas/oscillators/pendulum-motion.js +60 -40
  78. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  79. package/dist/atlas/oscillators/phase-translation.d.ts +0 -11
  80. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
  81. package/dist/atlas/oscillators/phase-translation.js +3 -4
  82. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  83. package/dist/atlas/oscillators/position-translation.d.ts +68 -7
  84. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
  85. package/dist/atlas/oscillators/position-translation.js +123 -12
  86. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  87. package/dist/atlas/oscillators/rejections.d.ts +0 -2
  88. package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
  89. package/dist/atlas/oscillators/rejections.js +0 -7
  90. package/dist/atlas/oscillators/rejections.js.map +1 -1
  91. package/dist/atlas/physjs-entries.generated.d.ts +25 -24
  92. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  93. package/dist/atlas/physjs-entries.generated.js +25 -24
  94. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  95. package/dist/atlas/physjs-ref.d.ts +34 -31
  96. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  97. package/dist/atlas/physjs-ref.js +55 -53
  98. package/dist/atlas/physjs-ref.js.map +1 -1
  99. package/dist/atlas/physjs-reviewed.d.ts +1 -1
  100. package/dist/atlas/physjs-reviewed.js +15 -15
  101. package/dist/atlas/physjs-reviewed.js.map +1 -1
  102. package/dist/atlas/poster/statements.d.ts +0 -19
  103. package/dist/atlas/poster/statements.d.ts.map +1 -1
  104. package/dist/atlas/poster/statements.js +1 -1
  105. package/dist/atlas/poster/statements.js.map +1 -1
  106. package/dist/atlas/proof-target.d.ts +1 -1
  107. package/dist/atlas/proof-target.js +1 -1
  108. package/dist/atlas/proof-target.js.map +1 -1
  109. package/dist/atlas/regime.d.ts +1 -1
  110. package/dist/atlas/regime.d.ts.map +1 -1
  111. package/dist/atlas/regime.js +1 -1
  112. package/dist/atlas/regime.js.map +1 -1
  113. package/dist/atlas/text-overlap.d.ts +23 -0
  114. package/dist/atlas/text-overlap.d.ts.map +1 -0
  115. package/dist/atlas/text-overlap.js +41 -0
  116. package/dist/atlas/text-overlap.js.map +1 -0
  117. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  118. package/dist/atlas/waves/bridges-closure.js +2 -6
  119. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  120. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  121. package/dist/atlas/waves/bridges.js +32 -48
  122. package/dist/atlas/waves/bridges.js.map +1 -1
  123. package/dist/atlas/waves/models.d.ts +5 -6
  124. package/dist/atlas/waves/models.d.ts.map +1 -1
  125. package/dist/atlas/waves/models.js +7 -13
  126. package/dist/atlas/waves/models.js.map +1 -1
  127. package/dist/atlas/waves/numerics.d.ts.map +1 -1
  128. package/dist/atlas/waves/numerics.js +10 -3
  129. package/dist/atlas/waves/numerics.js.map +1 -1
  130. package/dist/atlas/witness-numeric.d.ts +30 -0
  131. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  132. package/dist/atlas/witness-numeric.js +53 -0
  133. package/dist/atlas/witness-numeric.js.map +1 -1
  134. package/dist/atlas/witness-specs.d.ts.map +1 -1
  135. package/dist/atlas/witness-specs.js +19 -0
  136. package/dist/atlas/witness-specs.js.map +1 -1
  137. package/dist/atlas/witness-symbolic.d.ts +75 -3
  138. package/dist/atlas/witness-symbolic.d.ts.map +1 -1
  139. package/dist/atlas/witness-symbolic.js +116 -10
  140. package/dist/atlas/witness-symbolic.js.map +1 -1
  141. package/dist/bridges/catalog-load.d.ts.map +1 -1
  142. package/dist/bridges/catalog-load.js +13 -8
  143. package/dist/bridges/catalog-load.js.map +1 -1
  144. package/dist/bridges/catalog-types.d.ts +26 -2
  145. package/dist/bridges/catalog-types.d.ts.map +1 -1
  146. package/dist/bridges/catalog-types.js +11 -1
  147. package/dist/bridges/catalog-types.js.map +1 -1
  148. package/dist/bridges/evaluation-errors.d.ts +31 -1
  149. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  150. package/dist/bridges/evaluation-errors.js +20 -2
  151. package/dist/bridges/evaluation-errors.js.map +1 -1
  152. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  153. package/dist/bridges/evaluator-inputs.js +7 -5
  154. package/dist/bridges/evaluator-inputs.js.map +1 -1
  155. package/dist/bridges/evaluators.d.ts.map +1 -1
  156. package/dist/bridges/evaluators.js +27 -12
  157. package/dist/bridges/evaluators.js.map +1 -1
  158. package/dist/bridges/expr-parse.d.ts +11 -0
  159. package/dist/bridges/expr-parse.d.ts.map +1 -1
  160. package/dist/bridges/expr-parse.js +14 -5
  161. package/dist/bridges/expr-parse.js.map +1 -1
  162. package/dist/bridges/holds.d.ts +35 -3
  163. package/dist/bridges/holds.d.ts.map +1 -1
  164. package/dist/bridges/holds.js +117 -23
  165. package/dist/bridges/holds.js.map +1 -1
  166. package/dist/bridges/notices.d.ts.map +1 -1
  167. package/dist/bridges/notices.js +5 -5
  168. package/dist/bridges/notices.js.map +1 -1
  169. package/dist/bridges/relation-eval.d.ts +4 -4
  170. package/dist/bridges/relation-eval.d.ts.map +1 -1
  171. package/dist/bridges/relation-eval.js +15 -16
  172. package/dist/bridges/relation-eval.js.map +1 -1
  173. package/dist/bridges/sensitivity.d.ts.map +1 -1
  174. package/dist/bridges/sensitivity.js +3 -3
  175. package/dist/bridges/sensitivity.js.map +1 -1
  176. package/dist/bridges/validity.d.ts +33 -0
  177. package/dist/bridges/validity.d.ts.map +1 -0
  178. package/dist/bridges/validity.js +67 -0
  179. package/dist/bridges/validity.js.map +1 -0
  180. package/dist/canonical/entries/atomic.js +1 -3
  181. package/dist/canonical/entries/atomic.js.map +1 -1
  182. package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
  183. package/dist/canonical/entries/condensed-matter.js +4 -5
  184. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  185. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  186. package/dist/canonical/entries/dimensional-classics.js +3 -4
  187. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  188. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  189. package/dist/canonical/entries/electromagnetism.js +4 -10
  190. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  191. package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
  192. package/dist/canonical/entries/fluids-waves.js +3 -7
  193. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  194. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  195. package/dist/canonical/entries/mechanics.js +4 -6
  196. package/dist/canonical/entries/mechanics.js.map +1 -1
  197. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  198. package/dist/canonical/entries/nonmonomial.js +9 -17
  199. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  200. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  201. package/dist/canonical/entries/relativity.js +6 -6
  202. package/dist/canonical/entries/relativity.js.map +1 -1
  203. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  204. package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
  205. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  206. package/dist/canonical/fixed-points.d.ts +94 -0
  207. package/dist/canonical/fixed-points.d.ts.map +1 -0
  208. package/dist/canonical/fixed-points.js +81 -0
  209. package/dist/canonical/fixed-points.js.map +1 -0
  210. package/dist/canonical/linkage.d.ts.map +1 -1
  211. package/dist/canonical/linkage.js +25 -44
  212. package/dist/canonical/linkage.js.map +1 -1
  213. package/dist/canonical/normal-form.d.ts.map +1 -1
  214. package/dist/canonical/normal-form.js +5 -11
  215. package/dist/canonical/normal-form.js.map +1 -1
  216. package/dist/canonical/structural.d.ts +21 -21
  217. package/dist/canonical/structural.d.ts.map +1 -1
  218. package/dist/canonical/structural.js +40 -19
  219. package/dist/canonical/structural.js.map +1 -1
  220. package/dist/cases/brownian-sphere.d.ts +3 -3
  221. package/dist/cases/brownian-sphere.d.ts.map +1 -1
  222. package/dist/cases/brownian-sphere.js +6 -5
  223. package/dist/cases/brownian-sphere.js.map +1 -1
  224. package/dist/cases/damped-resonator.d.ts.map +1 -1
  225. package/dist/cases/damped-resonator.js +6 -9
  226. package/dist/cases/damped-resonator.js.map +1 -1
  227. package/dist/cases/kepler-rv.d.ts +1 -1
  228. package/dist/cases/kepler-rv.d.ts.map +1 -1
  229. package/dist/cases/kepler-rv.js +3 -2
  230. package/dist/cases/kepler-rv.js.map +1 -1
  231. package/dist/cases/lumped-cooling.d.ts +8 -3
  232. package/dist/cases/lumped-cooling.d.ts.map +1 -1
  233. package/dist/cases/lumped-cooling.js +21 -23
  234. package/dist/cases/lumped-cooling.js.map +1 -1
  235. package/dist/cases/quadrature.d.ts +7 -9
  236. package/dist/cases/quadrature.d.ts.map +1 -1
  237. package/dist/cases/quadrature.js +28 -32
  238. package/dist/cases/quadrature.js.map +1 -1
  239. package/dist/cases/resistor-noise.js +4 -4
  240. package/dist/cases/resistor-noise.js.map +1 -1
  241. package/dist/cases/skin-depth.d.ts +0 -4
  242. package/dist/cases/skin-depth.d.ts.map +1 -1
  243. package/dist/cases/skin-depth.js +3 -7
  244. package/dist/cases/skin-depth.js.map +1 -1
  245. package/dist/cli/args.d.ts +23 -1
  246. package/dist/cli/args.d.ts.map +1 -1
  247. package/dist/cli/args.js +30 -8
  248. package/dist/cli/args.js.map +1 -1
  249. package/dist/cli/bindings.d.ts.map +1 -1
  250. package/dist/cli/bindings.js +5 -4
  251. package/dist/cli/bindings.js.map +1 -1
  252. package/dist/cli/command.d.ts +8 -1
  253. package/dist/cli/command.d.ts.map +1 -1
  254. package/dist/cli/command.js.map +1 -1
  255. package/dist/cli/commands/_atlas-map.d.ts +0 -9
  256. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  257. package/dist/cli/commands/_atlas-map.js +8 -18
  258. package/dist/cli/commands/_atlas-map.js.map +1 -1
  259. package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
  260. package/dist/cli/commands/_atlas-route.js +6 -2
  261. package/dist/cli/commands/_atlas-route.js.map +1 -1
  262. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  263. package/dist/cli/commands/_discovery-opts.js +8 -9
  264. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  265. package/dist/cli/commands/atlas.d.ts.map +1 -1
  266. package/dist/cli/commands/atlas.js +8 -5
  267. package/dist/cli/commands/atlas.js.map +1 -1
  268. package/dist/cli/commands/audit.d.ts.map +1 -1
  269. package/dist/cli/commands/audit.js +8 -1
  270. package/dist/cli/commands/audit.js.map +1 -1
  271. package/dist/cli/commands/axes.d.ts.map +1 -1
  272. package/dist/cli/commands/axes.js +20 -1
  273. package/dist/cli/commands/axes.js.map +1 -1
  274. package/dist/cli/commands/confront.d.ts.map +1 -1
  275. package/dist/cli/commands/confront.js +8 -14
  276. package/dist/cli/commands/confront.js.map +1 -1
  277. package/dist/cli/commands/derive.d.ts.map +1 -1
  278. package/dist/cli/commands/derive.js +22 -22
  279. package/dist/cli/commands/derive.js.map +1 -1
  280. package/dist/cli/commands/discover.d.ts.map +1 -1
  281. package/dist/cli/commands/discover.js +6 -2
  282. package/dist/cli/commands/discover.js.map +1 -1
  283. package/dist/cli/commands/eval.d.ts.map +1 -1
  284. package/dist/cli/commands/eval.js +1 -0
  285. package/dist/cli/commands/eval.js.map +1 -1
  286. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  287. package/dist/cli/commands/evaluate.js +65 -37
  288. package/dist/cli/commands/evaluate.js.map +1 -1
  289. package/dist/cli/commands/explain.d.ts.map +1 -1
  290. package/dist/cli/commands/explain.js +2 -1
  291. package/dist/cli/commands/explain.js.map +1 -1
  292. package/dist/cli/commands/ground.d.ts.map +1 -1
  293. package/dist/cli/commands/ground.js +1 -0
  294. package/dist/cli/commands/ground.js.map +1 -1
  295. package/dist/cli/commands/map.d.ts.map +1 -1
  296. package/dist/cli/commands/map.js +75 -5
  297. package/dist/cli/commands/map.js.map +1 -1
  298. package/dist/cli/commands/metric.d.ts.map +1 -1
  299. package/dist/cli/commands/metric.js +12 -9
  300. package/dist/cli/commands/metric.js.map +1 -1
  301. package/dist/cli/commands/path.d.ts +10 -0
  302. package/dist/cli/commands/path.d.ts.map +1 -1
  303. package/dist/cli/commands/path.js +25 -3
  304. package/dist/cli/commands/path.js.map +1 -1
  305. package/dist/cli/commands/probe.d.ts.map +1 -1
  306. package/dist/cli/commands/probe.js +59 -16
  307. package/dist/cli/commands/probe.js.map +1 -1
  308. package/dist/cli/commands/regime.d.ts.map +1 -1
  309. package/dist/cli/commands/regime.js +1 -0
  310. package/dist/cli/commands/regime.js.map +1 -1
  311. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  312. package/dist/cli/commands/retrieve.js +1 -0
  313. package/dist/cli/commands/retrieve.js.map +1 -1
  314. package/dist/cli/commands/search.d.ts.map +1 -1
  315. package/dist/cli/commands/search.js +1 -0
  316. package/dist/cli/commands/search.js.map +1 -1
  317. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  318. package/dist/cli/commands/symbolic.js +19 -28
  319. package/dist/cli/commands/symbolic.js.map +1 -1
  320. package/dist/cli/commands/testplan.d.ts.map +1 -1
  321. package/dist/cli/commands/testplan.js +4 -2
  322. package/dist/cli/commands/testplan.js.map +1 -1
  323. package/dist/cli/expr-print.d.ts +0 -2
  324. package/dist/cli/expr-print.d.ts.map +1 -1
  325. package/dist/cli/expr-print.js +7 -31
  326. package/dist/cli/expr-print.js.map +1 -1
  327. package/dist/cli/main.d.ts +7 -0
  328. package/dist/cli/main.d.ts.map +1 -1
  329. package/dist/cli/main.js +18 -3
  330. package/dist/cli/main.js.map +1 -1
  331. package/dist/cli/numeric-flag.d.ts +12 -0
  332. package/dist/cli/numeric-flag.d.ts.map +1 -0
  333. package/dist/cli/numeric-flag.js +44 -0
  334. package/dist/cli/numeric-flag.js.map +1 -0
  335. package/dist/cli/output.d.ts +20 -0
  336. package/dist/cli/output.d.ts.map +1 -1
  337. package/dist/cli/output.js +15 -0
  338. package/dist/cli/output.js.map +1 -1
  339. package/dist/cli/record-reach.js +2 -2
  340. package/dist/cli/record-reach.js.map +1 -1
  341. package/dist/cli/record-tables.d.ts.map +1 -1
  342. package/dist/cli/record-tables.js +6 -5
  343. package/dist/cli/record-tables.js.map +1 -1
  344. package/dist/cli/record.d.ts +1 -5
  345. package/dist/cli/record.d.ts.map +1 -1
  346. package/dist/cli/record.js +9 -8
  347. package/dist/cli/record.js.map +1 -1
  348. package/dist/cli/search-index.d.ts.map +1 -1
  349. package/dist/cli/search-index.js +7 -6
  350. package/dist/cli/search-index.js.map +1 -1
  351. package/dist/cli/statuses.d.ts +0 -2
  352. package/dist/cli/statuses.d.ts.map +1 -1
  353. package/dist/cli/statuses.js +0 -7
  354. package/dist/cli/statuses.js.map +1 -1
  355. package/dist/cli/stored-results.d.ts +7 -0
  356. package/dist/cli/stored-results.d.ts.map +1 -0
  357. package/dist/cli/stored-results.js +23 -0
  358. package/dist/cli/stored-results.js.map +1 -0
  359. package/dist/cli/version.d.ts.map +1 -1
  360. package/dist/cli/version.js +7 -5
  361. package/dist/cli/version.js.map +1 -1
  362. package/dist/cli-api.d.ts +34 -5
  363. package/dist/cli-api.d.ts.map +1 -1
  364. package/dist/cli-api.js +28 -4
  365. package/dist/cli-api.js.map +1 -1
  366. package/dist/composition/algebraic-equivalence.d.ts +43 -0
  367. package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
  368. package/dist/composition/algebraic-equivalence.js +115 -0
  369. package/dist/composition/algebraic-equivalence.js.map +1 -0
  370. package/dist/composition/axes.d.ts +0 -6
  371. package/dist/composition/axes.d.ts.map +1 -1
  372. package/dist/composition/axes.js +6 -6
  373. package/dist/composition/axes.js.map +1 -1
  374. package/dist/composition/axis-audit.d.ts +47 -20
  375. package/dist/composition/axis-audit.d.ts.map +1 -1
  376. package/dist/composition/axis-audit.js +82 -9
  377. package/dist/composition/axis-audit.js.map +1 -1
  378. package/dist/composition/bridge-analysis.d.ts +17 -0
  379. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  380. package/dist/composition/bridge-analysis.js +102 -55
  381. package/dist/composition/bridge-analysis.js.map +1 -1
  382. package/dist/composition/canonical-compare.d.ts +40 -0
  383. package/dist/composition/canonical-compare.d.ts.map +1 -1
  384. package/dist/composition/canonical-compare.js +122 -24
  385. package/dist/composition/canonical-compare.js.map +1 -1
  386. package/dist/composition/canonical-graph.d.ts +1 -1
  387. package/dist/composition/canonical-graph.d.ts.map +1 -1
  388. package/dist/composition/canonical-graph.js +9 -36
  389. package/dist/composition/canonical-graph.js.map +1 -1
  390. package/dist/composition/canonical-json.js +2 -2
  391. package/dist/composition/canonical-json.js.map +1 -1
  392. package/dist/composition/catalog-graph.d.ts.map +1 -1
  393. package/dist/composition/catalog-graph.js +2 -5
  394. package/dist/composition/catalog-graph.js.map +1 -1
  395. package/dist/composition/chain-candidate.d.ts +8 -0
  396. package/dist/composition/chain-candidate.d.ts.map +1 -1
  397. package/dist/composition/chain-candidate.js +9 -2
  398. package/dist/composition/chain-candidate.js.map +1 -1
  399. package/dist/composition/chain-match.d.ts +6 -3
  400. package/dist/composition/chain-match.d.ts.map +1 -1
  401. package/dist/composition/chain-match.js +4 -1
  402. package/dist/composition/chain-match.js.map +1 -1
  403. package/dist/composition/chain-result.d.ts.map +1 -1
  404. package/dist/composition/chain-result.js +2 -14
  405. package/dist/composition/chain-result.js.map +1 -1
  406. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  407. package/dist/composition/compose-symbolic.js +3 -2
  408. package/dist/composition/compose-symbolic.js.map +1 -1
  409. package/dist/composition/compose.d.ts.map +1 -1
  410. package/dist/composition/compose.js +13 -5
  411. package/dist/composition/compose.js.map +1 -1
  412. package/dist/composition/composition-recovery.d.ts.map +1 -1
  413. package/dist/composition/composition-recovery.js +4 -7
  414. package/dist/composition/composition-recovery.js.map +1 -1
  415. package/dist/composition/discovery.d.ts +56 -0
  416. package/dist/composition/discovery.d.ts.map +1 -1
  417. package/dist/composition/discovery.js +114 -60
  418. package/dist/composition/discovery.js.map +1 -1
  419. package/dist/composition/edge.d.ts +21 -2
  420. package/dist/composition/edge.d.ts.map +1 -1
  421. package/dist/composition/edge.js +23 -1
  422. package/dist/composition/edge.js.map +1 -1
  423. package/dist/composition/enumerate.d.ts.map +1 -1
  424. package/dist/composition/enumerate.js +18 -3
  425. package/dist/composition/enumerate.js.map +1 -1
  426. package/dist/composition/evaluate-relation.d.ts +35 -11
  427. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  428. package/dist/composition/evaluate-relation.js +60 -39
  429. package/dist/composition/evaluate-relation.js.map +1 -1
  430. package/dist/composition/explain.d.ts +3 -12
  431. package/dist/composition/explain.d.ts.map +1 -1
  432. package/dist/composition/explain.js +7 -20
  433. package/dist/composition/explain.js.map +1 -1
  434. package/dist/composition/expr-eval.d.ts.map +1 -1
  435. package/dist/composition/expr-eval.js +2 -11
  436. package/dist/composition/expr-eval.js.map +1 -1
  437. package/dist/composition/expr-simplify.d.ts +16 -0
  438. package/dist/composition/expr-simplify.d.ts.map +1 -1
  439. package/dist/composition/expr-simplify.js +15 -20
  440. package/dist/composition/expr-simplify.js.map +1 -1
  441. package/dist/composition/formula-shape.d.ts +23 -4
  442. package/dist/composition/formula-shape.d.ts.map +1 -1
  443. package/dist/composition/formula-shape.js +57 -17
  444. package/dist/composition/formula-shape.js.map +1 -1
  445. package/dist/composition/graph-structure.d.ts +98 -0
  446. package/dist/composition/graph-structure.d.ts.map +1 -0
  447. package/dist/composition/graph-structure.js +167 -0
  448. package/dist/composition/graph-structure.js.map +1 -0
  449. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  450. package/dist/composition/graph-viz-svg.js +1 -1
  451. package/dist/composition/graph-viz-svg.js.map +1 -1
  452. package/dist/composition/graph-viz.d.ts.map +1 -1
  453. package/dist/composition/graph-viz.js +8 -37
  454. package/dist/composition/graph-viz.js.map +1 -1
  455. package/dist/composition/identifiability.d.ts +91 -4
  456. package/dist/composition/identifiability.d.ts.map +1 -1
  457. package/dist/composition/identifiability.js +363 -6
  458. package/dist/composition/identifiability.js.map +1 -1
  459. package/dist/composition/index.d.ts +8 -4
  460. package/dist/composition/index.d.ts.map +1 -1
  461. package/dist/composition/index.js +3 -2
  462. package/dist/composition/index.js.map +1 -1
  463. package/dist/composition/mathts-quiet.d.ts +4 -3
  464. package/dist/composition/mathts-quiet.d.ts.map +1 -1
  465. package/dist/composition/mathts-quiet.js +4 -3
  466. package/dist/composition/mathts-quiet.js.map +1 -1
  467. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  468. package/dist/composition/mathts-scalar-symbols.js +2 -1
  469. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  470. package/dist/composition/probe/corpus.d.ts +4 -2
  471. package/dist/composition/probe/corpus.d.ts.map +1 -1
  472. package/dist/composition/probe/corpus.js +20 -9
  473. package/dist/composition/probe/corpus.js.map +1 -1
  474. package/dist/composition/probe/dataset.d.ts +17 -0
  475. package/dist/composition/probe/dataset.d.ts.map +1 -1
  476. package/dist/composition/probe/dataset.js +95 -50
  477. package/dist/composition/probe/dataset.js.map +1 -1
  478. package/dist/composition/probe/experiment-design.d.ts +5 -1
  479. package/dist/composition/probe/experiment-design.d.ts.map +1 -1
  480. package/dist/composition/probe/experiment-design.js +44 -24
  481. package/dist/composition/probe/experiment-design.js.map +1 -1
  482. package/dist/composition/probe/falsify.d.ts.map +1 -1
  483. package/dist/composition/probe/falsify.js +2 -0
  484. package/dist/composition/probe/falsify.js.map +1 -1
  485. package/dist/composition/probe/fit.d.ts +6 -0
  486. package/dist/composition/probe/fit.d.ts.map +1 -1
  487. package/dist/composition/probe/fit.js +46 -22
  488. package/dist/composition/probe/fit.js.map +1 -1
  489. package/dist/composition/probe/frontier.d.ts.map +1 -1
  490. package/dist/composition/probe/frontier.js +33 -15
  491. package/dist/composition/probe/frontier.js.map +1 -1
  492. package/dist/composition/probe/generator.d.ts +27 -1
  493. package/dist/composition/probe/generator.d.ts.map +1 -1
  494. package/dist/composition/probe/generator.js +53 -30
  495. package/dist/composition/probe/generator.js.map +1 -1
  496. package/dist/composition/probe/index.d.ts +14 -0
  497. package/dist/composition/probe/index.d.ts.map +1 -1
  498. package/dist/composition/probe/index.js +6 -0
  499. package/dist/composition/probe/index.js.map +1 -1
  500. package/dist/composition/probe/limits.d.ts +24 -1
  501. package/dist/composition/probe/limits.d.ts.map +1 -1
  502. package/dist/composition/probe/limits.js +53 -11
  503. package/dist/composition/probe/limits.js.map +1 -1
  504. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  505. package/dist/composition/probe/pipeline.js +10 -4
  506. package/dist/composition/probe/pipeline.js.map +1 -1
  507. package/dist/composition/probe/power-law.d.ts +121 -0
  508. package/dist/composition/probe/power-law.d.ts.map +1 -0
  509. package/dist/composition/probe/power-law.js +255 -0
  510. package/dist/composition/probe/power-law.js.map +1 -0
  511. package/dist/composition/probe/problem.d.ts +7 -4
  512. package/dist/composition/probe/problem.d.ts.map +1 -1
  513. package/dist/composition/probe/problem.js +177 -49
  514. package/dist/composition/probe/problem.js.map +1 -1
  515. package/dist/composition/probe/report.js +1 -1
  516. package/dist/composition/probe/report.js.map +1 -1
  517. package/dist/composition/probe/residual.d.ts +6 -1
  518. package/dist/composition/probe/residual.d.ts.map +1 -1
  519. package/dist/composition/probe/residual.js +9 -7
  520. package/dist/composition/probe/residual.js.map +1 -1
  521. package/dist/composition/probe/structure.d.ts +82 -17
  522. package/dist/composition/probe/structure.d.ts.map +1 -1
  523. package/dist/composition/probe/structure.js +129 -55
  524. package/dist/composition/probe/structure.js.map +1 -1
  525. package/dist/composition/probe/study.d.ts +31 -9
  526. package/dist/composition/probe/study.d.ts.map +1 -1
  527. package/dist/composition/probe/study.js +236 -181
  528. package/dist/composition/probe/study.js.map +1 -1
  529. package/dist/composition/probe/t-tail.d.ts +17 -0
  530. package/dist/composition/probe/t-tail.d.ts.map +1 -0
  531. package/dist/composition/probe/t-tail.js +32 -0
  532. package/dist/composition/probe/t-tail.js.map +1 -0
  533. package/dist/composition/probe/types.d.ts +3 -0
  534. package/dist/composition/probe/types.d.ts.map +1 -1
  535. package/dist/composition/probe/types.js.map +1 -1
  536. package/dist/composition/proposed-bridges.d.ts +41 -10
  537. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  538. package/dist/composition/proposed-bridges.js +100 -55
  539. package/dist/composition/proposed-bridges.js.map +1 -1
  540. package/dist/composition/quantity-clusters.d.ts +48 -0
  541. package/dist/composition/quantity-clusters.d.ts.map +1 -0
  542. package/dist/composition/quantity-clusters.js +98 -0
  543. package/dist/composition/quantity-clusters.js.map +1 -0
  544. package/dist/composition/rational-exponent.d.ts +40 -0
  545. package/dist/composition/rational-exponent.d.ts.map +1 -0
  546. package/dist/composition/rational-exponent.js +65 -0
  547. package/dist/composition/rational-exponent.js.map +1 -0
  548. package/dist/composition/representative-values.d.ts +22 -0
  549. package/dist/composition/representative-values.d.ts.map +1 -1
  550. package/dist/composition/representative-values.js +23 -0
  551. package/dist/composition/representative-values.js.map +1 -1
  552. package/dist/composition/retrodiction.d.ts.map +1 -1
  553. package/dist/composition/retrodiction.js +2 -1
  554. package/dist/composition/retrodiction.js.map +1 -1
  555. package/dist/composition/user-equation.d.ts.map +1 -1
  556. package/dist/composition/user-equation.js +2 -2
  557. package/dist/composition/user-equation.js.map +1 -1
  558. package/dist/core/assignment.d.ts +19 -0
  559. package/dist/core/assignment.d.ts.map +1 -0
  560. package/dist/core/assignment.js +19 -0
  561. package/dist/core/assignment.js.map +1 -0
  562. package/dist/core/compare.d.ts +32 -0
  563. package/dist/core/compare.d.ts.map +1 -0
  564. package/dist/core/compare.js +46 -0
  565. package/dist/core/compare.js.map +1 -0
  566. package/dist/core/constants.d.ts +30 -30
  567. package/dist/core/constants.d.ts.map +1 -1
  568. package/dist/core/constants.js +47 -30
  569. package/dist/core/constants.js.map +1 -1
  570. package/dist/core/data-file.d.ts +7 -0
  571. package/dist/core/data-file.d.ts.map +1 -1
  572. package/dist/core/data-file.js +17 -0
  573. package/dist/core/data-file.js.map +1 -1
  574. package/dist/core/format.d.ts +36 -0
  575. package/dist/core/format.d.ts.map +1 -0
  576. package/dist/core/format.js +39 -0
  577. package/dist/core/format.js.map +1 -0
  578. package/dist/core/hash.d.ts +14 -0
  579. package/dist/core/hash.d.ts.map +1 -0
  580. package/dist/core/hash.js +17 -0
  581. package/dist/core/hash.js.map +1 -0
  582. package/dist/core/json-schema.d.ts +2 -0
  583. package/dist/core/json-schema.d.ts.map +1 -1
  584. package/dist/core/json-schema.js +14 -13
  585. package/dist/core/json-schema.js.map +1 -1
  586. package/dist/core/labeled-tensor.d.ts.map +1 -1
  587. package/dist/core/labeled-tensor.js +0 -8
  588. package/dist/core/labeled-tensor.js.map +1 -1
  589. package/dist/core/mathts-read.d.ts +25 -0
  590. package/dist/core/mathts-read.d.ts.map +1 -0
  591. package/dist/core/mathts-read.js +51 -0
  592. package/dist/core/mathts-read.js.map +1 -0
  593. package/dist/core/tensor.d.ts.map +1 -1
  594. package/dist/core/tensor.js +24 -0
  595. package/dist/core/tensor.js.map +1 -1
  596. package/dist/core/types.d.ts +5 -5
  597. package/dist/diff/bridge-gradient.d.ts +19 -6
  598. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  599. package/dist/diff/bridge-gradient.js +19 -11
  600. package/dist/diff/bridge-gradient.js.map +1 -1
  601. package/dist/diff/bridge-specs.d.ts.map +1 -1
  602. package/dist/diff/bridge-specs.js +3 -0
  603. package/dist/diff/bridge-specs.js.map +1 -1
  604. package/dist/dimensional/algebra.d.ts +18 -0
  605. package/dist/dimensional/algebra.d.ts.map +1 -1
  606. package/dist/dimensional/algebra.js +41 -1
  607. package/dist/dimensional/algebra.js.map +1 -1
  608. package/dist/dimensional/ast-builders.d.ts +7 -0
  609. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  610. package/dist/dimensional/ast-builders.js +11 -0
  611. package/dist/dimensional/ast-builders.js.map +1 -1
  612. package/dist/dimensional/ast-leaves.d.ts +81 -0
  613. package/dist/dimensional/ast-leaves.d.ts.map +1 -0
  614. package/dist/dimensional/ast-leaves.js +146 -0
  615. package/dist/dimensional/ast-leaves.js.map +1 -0
  616. package/dist/dimensional/buckingham.d.ts.map +1 -1
  617. package/dist/dimensional/buckingham.js +15 -27
  618. package/dist/dimensional/buckingham.js.map +1 -1
  619. package/dist/dimensional/constant-rows.js +9 -9
  620. package/dist/dimensional/constant-rows.js.map +1 -1
  621. package/dist/dimensional/dimension-inference.d.ts.map +1 -1
  622. package/dist/dimensional/dimension-inference.js +1 -2
  623. package/dist/dimensional/dimension-inference.js.map +1 -1
  624. package/dist/dimensional/errors.d.ts +1 -1
  625. package/dist/dimensional/errors.d.ts.map +1 -1
  626. package/dist/dimensional/errors.js +1 -15
  627. package/dist/dimensional/errors.js.map +1 -1
  628. package/dist/dimensional/exact-scale.d.ts +0 -17
  629. package/dist/dimensional/exact-scale.d.ts.map +1 -1
  630. package/dist/dimensional/exact-scale.js +8 -8
  631. package/dist/dimensional/exact-scale.js.map +1 -1
  632. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  633. package/dist/dimensional/gauge-field.js +2 -2
  634. package/dist/dimensional/gauge-field.js.map +1 -1
  635. package/dist/dimensional/hyphen-names.d.ts +12 -2
  636. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  637. package/dist/dimensional/hyphen-names.js +44 -19
  638. package/dist/dimensional/hyphen-names.js.map +1 -1
  639. package/dist/dimensional/metric.d.ts.map +1 -1
  640. package/dist/dimensional/metric.js +0 -1
  641. package/dist/dimensional/metric.js.map +1 -1
  642. package/dist/dimensional/symbolic-constants.d.ts +9 -0
  643. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  644. package/dist/dimensional/symbolic-constants.js +13 -1
  645. package/dist/dimensional/symbolic-constants.js.map +1 -1
  646. package/dist/dimensional/types.d.ts +36 -0
  647. package/dist/dimensional/types.d.ts.map +1 -1
  648. package/dist/dimensional/types.js +45 -7
  649. package/dist/dimensional/types.js.map +1 -1
  650. package/dist/dimensional/unit-data.js +2 -2
  651. package/dist/dimensional/unit-data.js.map +1 -1
  652. package/dist/index.d.ts +9 -3
  653. package/dist/index.d.ts.map +1 -1
  654. package/dist/index.js +10 -4
  655. package/dist/index.js.map +1 -1
  656. package/dist/numerical/christoffel-flat.d.ts.map +1 -1
  657. package/dist/numerical/christoffel-flat.js +3 -2
  658. package/dist/numerical/christoffel-flat.js.map +1 -1
  659. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  660. package/dist/numerical/covariant-eikonal.js +34 -11
  661. package/dist/numerical/covariant-eikonal.js.map +1 -1
  662. package/dist/numerical/curvature-lowering-helpers.js +3 -2
  663. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  664. package/dist/numerical/errors.d.ts.map +1 -1
  665. package/dist/numerical/errors.js +0 -3
  666. package/dist/numerical/errors.js.map +1 -1
  667. package/dist/numerical/finite-difference.d.ts +22 -0
  668. package/dist/numerical/finite-difference.d.ts.map +1 -0
  669. package/dist/numerical/finite-difference.js +27 -0
  670. package/dist/numerical/finite-difference.js.map +1 -0
  671. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  672. package/dist/numerical/geodesic-integrator.js +22 -14
  673. package/dist/numerical/geodesic-integrator.js.map +1 -1
  674. package/dist/numerical/geometrized.d.ts.map +1 -1
  675. package/dist/numerical/geometrized.js +0 -1
  676. package/dist/numerical/geometrized.js.map +1 -1
  677. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  678. package/dist/numerical/mathts-engine.js +10 -24
  679. package/dist/numerical/mathts-engine.js.map +1 -1
  680. package/dist/numerical/metric-inverse.d.ts.map +1 -1
  681. package/dist/numerical/metric-inverse.js +83 -46
  682. package/dist/numerical/metric-inverse.js.map +1 -1
  683. package/dist/numerical/null-ray-integrator.d.ts +2 -1
  684. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  685. package/dist/numerical/null-ray-integrator.js +12 -12
  686. package/dist/numerical/null-ray-integrator.js.map +1 -1
  687. package/dist/numerical/painleve-gullstrand-metric.js +2 -2
  688. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  689. package/dist/numerical/perihelion-finder.d.ts +0 -36
  690. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  691. package/dist/numerical/perihelion-finder.js +41 -87
  692. package/dist/numerical/perihelion-finder.js.map +1 -1
  693. package/dist/numerical/quadrature.d.ts.map +1 -1
  694. package/dist/numerical/quadrature.js +8 -10
  695. package/dist/numerical/quadrature.js.map +1 -1
  696. package/dist/numerical/rk4-trajectory.d.ts +10 -0
  697. package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
  698. package/dist/numerical/rk4-trajectory.js +37 -0
  699. package/dist/numerical/rk4-trajectory.js.map +1 -0
  700. package/dist/numerical/schwarzschild.d.ts +14 -0
  701. package/dist/numerical/schwarzschild.d.ts.map +1 -0
  702. package/dist/numerical/schwarzschild.js +17 -0
  703. package/dist/numerical/schwarzschild.js.map +1 -0
  704. package/dist/numerical/spacetime-metrics.d.ts +12 -0
  705. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  706. package/dist/numerical/spacetime-metrics.js +72 -56
  707. package/dist/numerical/spacetime-metrics.js.map +1 -1
  708. package/dist/numerical/statistics.d.ts +24 -0
  709. package/dist/numerical/statistics.d.ts.map +1 -0
  710. package/dist/numerical/statistics.js +52 -0
  711. package/dist/numerical/statistics.js.map +1 -0
  712. package/dist/numerical/tensor-engine.d.ts +21 -0
  713. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  714. package/dist/numerical/tensor-engine.js +12 -0
  715. package/dist/numerical/tensor-engine.js.map +1 -1
  716. package/dist/relations/regime.d.ts +10 -0
  717. package/dist/relations/regime.d.ts.map +1 -1
  718. package/dist/relations/regime.js +18 -1
  719. package/dist/relations/regime.js.map +1 -1
  720. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"_atlas-map.js","sourceRoot":"","sources":["../../../src/cli/commands/_atlas-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,CAAC,MAAM,YAAY,GAAG,kDAAkD,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC;AACvH,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AACtD,MAAM,OAAO,GACX,uGAAuG;IACvG,sDAAsD,CAAC;AACzD,MAAM,UAAU,GACd,0GAA0G;IAC1G,2DAA2D,CAAC;AA2E9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AACrE,MAAM,gBAAgB,GAAG,mDAAmD,CAAC;AAE7E,kFAAkF;AAClF,SAAS,QAAQ;IACf,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,GAAG,CAAC,IAAc,EAAE,GAAW;IACtC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzH,CAAC;IAAC,MAAM,CAAC;QACP,+FAA+F;QAC/F,6FAA6F;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,iBAAiB,EAAE;IAC/E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,qFAAqF;QACrF,4EAA4E;QAC5E,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAChB,GAAG,OAAO,6BAA6B,YAAY,CAAC,mBAAmB,CAAC,KAAK,IAAI,IAAI,YAAY,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;gBACnJ,4DAA4D,CAC/D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,QAAQ,CAChB,GAAG,OAAO,oBAAoB,YAAY,CAAC,mBAAmB,CAAC,qDAAqD;YAClH,4EAA4E,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,2FAA2F;QAC3F,MAAM,IAAI,QAAQ,CAAC,GAAG,OAAO,KAAK,YAAY,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3I,CAAC;IACD,oEAAoE;IACpE,MAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,IAAI,QAAQ,CAAC,aAAa,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,QAAQ,CAChB,GAAG,OAAO,KAAK,YAAY,CAAC,mBAAmB,CAAC,uBAAuB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CACjI,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,CAAC,EAAoB,EAAE;QACpE,MAAM,GAAG,GAA4B,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QACpD,IACE,OAAO,QAAQ,KAAK,QAAQ;YAC5B,OAAO,SAAS,KAAK,QAAQ;YAC7B,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,YAAY,CAAC;YACzE,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,EACpD,CAAC;YACD,MAAM,IAAI,QAAQ,CAChB,GAAG,OAAO,KAAK,YAAY,CAAC,mBAAmB,CAAC,YAAY,CAAC,4BAA4B;gBACvF,6EAA6E,CAChF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACtF,CAAC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;IACnF,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5G,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,GAAG,EAAE,YAAY,CAAC,mBAAmB,CAAC;YACtC,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,OAAO,EAAE,gBAAgB;YACzB,UAAU;YACV,mBAAmB,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE;SAC5D;QACD,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,SAA8B;IACvE,MAAM,YAAY,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAClC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC1D,OAAO;QACL,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,EAAE,GAAG,EAAE,0DAA0D,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE;QAC9G,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SACxD,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,CAAc,EAAE,OAAuB;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAoB,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC/G,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,GAAG,KAAK,SAAS;YAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACnD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;YACnD,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAUD,SAAS,KAAK,CAAC,OAA8B,EAAE,OAA8B;IAC3E,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAQ,CAAU,CAAC,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,CAAC,CAAiC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE;YACT,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YAC3C,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAgBD,SAAS,SAAS,CAAC,GAAQ;IACzB,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,MAAM,CAAC,GAAQ;IACtB,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC,MAAM;QACnC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ,EAAE,CAAa;IACxC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,MAAM,EAAE,GAAG,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;YAC3D,OAAO;gBACL,EAAE,EAAE,GAAG;gBACP,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI;gBACtB,OAAO,EAAE,EAAE,EAAE,aAAa,IAAI,IAAI;gBAClC,SAAS,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;aAC9G,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAQ,EAAE,CAAc,EAAE,OAA8B;IAC5E,MAAM,CAAC,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzD,SAAS,EACP,CAAC,CAAC,SAAS,KAAK,SAAS;YACvB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;gBAC1B,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ;gBAC9B,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI;gBACtB,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG;aACrB;QACP,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;QAC7B,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,GAAQ,EACR,CAAc,EACd,MAAc,EACd,MAA+B,EAC/B,OAAO,GAA0B,IAAI;IAErC,MAAM,EAAE,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IACjF,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM;QACN,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5B,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;QAClC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAChH,KAAK,EACH,CAAC,CAAC,KAAK,KAAK,SAAS;YACnB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;QAC1F,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAQ,EAAE,EAAU;IAC1C,OAAO,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC;AACjG,CAAC;AAED,SAAS,WAAW,CAAC,MAA4B;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACzE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACrG,CAAC;AAgCD,MAAM,SAAS,GACb,4HAA4H,CAAC;AAE/H,uDAAuD;AACvD,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3F,MAAM,IAAI,QAAQ,CAAC,qBAAqB,GAAG,yEAAyE,CAAC,CAAC;IACxH,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CAAC,MAA+B,EAAE,IAAY,EAAE,EAAU;IAC/E,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,kGAAkG,CAAC,CAAC;QACxI,CAAC;IACH,CAAC;AACH,CAAC;AAED,0GAA0G;AAC1G,SAAS,aAAa,CAAC,IAAY,EAAE,OAA+B;IAClE,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAaD,MAAM,cAAc,GAClB,8GAA8G;IAC9G,wHAAwH;IACxH,IAAI,YAAY,CAAC,mDAAmD,CAAC,MAAM,CAAC;AAE9E,SAAS,eAAe,CAAC,EAA2C,EAAE,OAA8B;IAClG,MAAM,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7F,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACtD,CAAC;AAED,gHAAgH;AAChH,SAAS,iBAAiB,CACxB,GAAQ,EACR,OAA+B,EAC/B,UAAuC,EACvC,OAA8B;IAE9B,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAc,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAc,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,SAAS,YAAY,CAAC,GAAQ,EAAE,OAA+B,EAAE,OAA8B;IAC7F,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,GAAG,GAA+C,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC;IAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,oBAAoB;YAAE,GAAG,GAAG,IAAI,CAAC;aACxD,CAAC;YACJ,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,GAAG,KAAK,oBAAoB;gBAAE,QAAQ,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACzF,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAE,EAAU,EAAE,OAAO,GAA0B,IAAI;IACtG,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3H,MAAM,WAAW,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjF,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,GAC/D,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QACtC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3F,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAEnD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,EAAE;QACF,MAAM,EAAE,YAAY;QACpB,KAAK;QACL,MAAM,EAAE,EAAE;QACV,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;YACrD,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;SAC3C;QACD,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE;QACxE,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3D,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAsCvC,MAAM,gBAAgB,GACpB,mHAAmH;IACnH,mHAAmH,CAAC;AAEtH,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAC7B,GAAQ,EACR,IAAY,EACZ,EAAU,EACV,KAAa,EACb,OAAO,GAA0B,IAAI;IAErC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC;IAC3D,MAAM,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,WAAW,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC;QAC1C,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW;KACvD,CAAC,CAAC,CAAC;IACN,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAClG,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1J,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,KAAM,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,EAAE;QACF,MAAM,EAAE,YAAY;QACpB,MAAM;QACN,OAAO;QACP,MAAM,EAAE,EAAE;QACV,KAAK,EAAE;YACL,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B;QACD,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE;QAC9F,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9G,SAAS,EAAE,gBAAgB;QAC3B,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3D,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC;AAyBD,MAAM,gBAAgB,GACpB,oHAAoH;IACpH,kHAAkH;IAClH,oHAAoH;IACpH,qBAAqB,CAAC;AAExB,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,sBAAsB,OAAO,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CACjC,GAAQ,EACR,UAAkB,EAClB,MAAmB,EACnB,OAAO,GAA0B,IAAI;IAErC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,0BAA0B,UAAU,oDAAoD,CAAC,CAAC;IAClI,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM;QACN,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;QAClC,YAAY,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3E,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;KACvC,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAG,OAAO;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;SAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5I,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;IACjF,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IACjE,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,OAAO;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,MAAM,EAAE,EAAE;QACV,WAAW,EAAE;YACX,OAAO,EAAE;gBACP,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;gBAC/D,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;gBACnE,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;gBACnE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM;gBACjH,EAAE,EAAE,CAAC,CAAC,OAAO;aACd;YACD,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;SAC3C;QACD,MAAM,EAAE,SAAS;YACf,CAAC,CAAC;gBACE,GAAG,MAAM;gBACT,KAAK,EAAE,UAAU,CAAC,MAAM;gBACxB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,kBAAkB,EAAE,CAAC,CAAC,cAAc,CAAC;gBACrC,gBAAgB,EAAE,CAAC,CAAC,WAAW,CAAC;gBAChC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;aACvD;YACH,CAAC,CAAC,IAAI;QACR,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3D,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC;AAuBD,8GAA8G;AAC9G,MAAM,UAAU,sBAAsB,CAAC,GAAQ,EAAE,OAAO,GAA0B,IAAI;IACpF,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrH,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE;YACX,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC,MAAM;YACnC,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;SAC/D;QACD,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvG,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClH,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACzE,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAClI;QACD,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3D,UAAU,EACR,gHAAgH;YAChH,oHAAoH;KACvH,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,iBAAiB,CAAC,CAAoB;IACpD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;IACxB,MAAM,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,QAAQ,cAAc,CAAC,CAAC,SAAS,iCAAiC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAChJ,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACxC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,oIAAoI,EAAE,CAAC,CAAC;IAC3J,GAAG,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;IACzG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrJ,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,KAAK,EAAE,CAAC,MAAM,UAAU,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5E,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjE,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,cAAc;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,aAAa,EAAE,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAClH,GAAG,CAAC,IAAI,CAAC,mHAAmH,CAAC,CAAC;IAC9H,OAAO,GAAG,CAAC;AACb,CAAC;AA2CD,SAAS,KAAK,CAAC,CAAa,EAAE,CAAc;IAC1C,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QAAE,OAAO,cAAc,CAAC;IACjF,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IACvF,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;AAClF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,uBAAuB,CAAC,CAA0B;IAChE,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;IACF,OAAO,CACL,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,iBAAiB;QACrE,GAAG,CAAC,CAAC,kBAAkB,4BAA4B;QACnD,GAAG,CAAC,CAAC,gBAAgB,wBAAwB,UAAU,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAChF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAyC;IACvD,IAAI,EAAE,0DAA0D;IAChE,MAAM,EAAE,0CAA0C,YAAY,CAAC,mBAAmB,CAAC,EAAE;IACrF,GAAG,EAAE,uDAAuD;CAC7D,CAAC;AAEF,2GAA2G;AAC3G,MAAM,UAAU,WAAW,CAAC,CAAY;IACtC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,GAAQ,EAAE,IAAY,EAAE,MAAmB,EAAE,OAAO,GAA0B,IAAI;IAChH,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAChB,8BAA8B,IAAI,gBAAgB,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,CAAC;IACvH,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACzE,CAAC,CAAC,OAAO;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC,CAAC,CACjG,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;IACjF,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;YACzB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC;QACH,WAAW,EAAE;YACX,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;YAC1C,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;YACrF,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;YAC3F,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM;SAClC;QACD,MAAM,EAAE,SAAS;YACf,CAAC,CAAC;gBACE,GAAG,MAAM;gBACT,KAAK,EAAE,GAAG,CAAC,MAAM;gBACjB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,kBAAkB,EAAE,CAAC,CAAC,cAAc,CAAC;gBACrC,gBAAgB,EAAE,CAAC,CAAC,WAAW,CAAC;gBAChC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;aACvD;YACH,CAAC,CAAC,IAAI;QACR,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3D,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,MAAM,UAAU,GAAgC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACrF,MAAM,SAAS,GAAgC;IAC7C,MAAM,EAAE,uBAAuB;IAC/B,GAAG,EAAE,sDAAsD;CAC5D,CAAC;AAEF,SAAS,YAAY,CAAC,CAAe,EAAE,EAAU;IAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,MAAM,GACV,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,MAAM,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,8BAA8B,CAAC;IAChI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACpB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,SAAS,GACb,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,wCAAwC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,6BAA6B,EAAE,WAAW,CAAC;QAC/H,OAAO,uBAAuB,OAAO,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,SAAS,GACb,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,gBAAgB,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC5G,OAAO,sCAAsC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;AACxG,CAAC;AAED,SAAS,WAAW,CAAC,CAAkB;IACrC,MAAM,GAAG,GAAG,CAAC,EAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,IAAI,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5I,OAAO,CACL,cAAc,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;QAC/F,cAAc,UAAU,gBAAgB,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAC7D,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,CAA2B;IACrD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACtB,MAAM,MAAM,GACV,2BAA2B,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,UAAU,gBAAgB;QACrG,GAAG,CAAC,CAAC,WAAW,8BAA8B,CAAC;IACjD,IAAI,KAAK,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,8BAA8B,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,iCAAiC,MAAM,EAAE,CAAC;IAC7H,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;IACvB,MAAM,IAAI,GACR,CAAC,CAAC,UAAU,KAAK,IAAI;QACnB,CAAC,CAAC,uEAAuE;QACzE,CAAC,CAAC,2BAA2B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG;YAClF,CAAC,CAAC,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,6BAA6B,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,MAAM,MAAM,EAAE,CAAC;AACnH,CAAC;AAED,SAAS,WAAW,CAAC,CAAa,EAAE,MAAc;IAChD,MAAM,EAAE,GAAG,CAAC,CAAiC,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACrH,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,GAAG;QACnI,GAAG,MAAM,mBAAmB,CAAC,CAAC,cAAc,EAAE;QAC9C,GAAG,MAAM,gBAAgB,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAChG,GAAG,MAAM,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5G,GAAG,MAAM,UAAU,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACnJ,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAC5C,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAC7F,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,CAAY,EAAE,MAAc;IAC9C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,cAAc,OAAO,EAAE,CAAC,CAAC;IAC/E,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7G,MAAM,IAAI,GACR,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC/I,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,CAAiC;IACjD,OAAO,2BAA2B,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,WAAW,cAAc,CAAC;AAC1H,CAAC;AAED,SAAS,gBAAgB,CAAC,CAA2B,EAAE,SAAkC,EAAE,MAAc;IACvG,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,KAAK,GACT,CAAC,CAAC,QAAQ,KAAK,IAAI;YACjB,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,oBAAoB;gBACnC,CAAC,CAAC,wBAAwB,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,SAAS,SAAS,CAAC,CAAC,CAAE,oBAAoB;gBACrF,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnB,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAK,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAC,CAAC,KAAM,CAAC;IACvB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,gBAAgB,KAAK,CAAC,QAAQ,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAC7I,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CACN,GAAG,MAAM,aAAa,EAAE,CAAC,QAAQ,gCAAgC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,OAAO,IAAI;gBAC1G,OAAO,EAAE,CAAC,CAAC,gCAAgC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAC1I,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnF,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrG,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,iCAAiC,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,6CAA6C,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,oCAAoC,CAAC,CAAC;YACxD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,SAAS,CAAC,CAAY;IACpC,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CACN,iBAAiB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,6DAA6D;YACpG,0FAA0F,CAC7F,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC;IACb,CAAC;IACD,GAAG,CAAC,IAAI,CACN,YAAY,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB;QACtF,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,SAAS,EAAE,CACxF,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC3E,GAAG,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACpE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,CAAa;IACtC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;IACxB,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAClE,GAAG,CAAC,IAAI,CACN,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,YAAY,CAAC,KAAK,0BAA0B,CAAC,CAAC,MAAM,GAAG;QACrH,OAAO,CAAC,CAAC,eAAe,CAAC,KAAK,8CAA8C,CAAC,CAAC,YAAY,CAAC,EAAE,kBAAkB;QAC/G,GAAG,CAAC,CAAC,UAAU,eAAe,CACjC,CAAC;IACF,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,CAAU,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;QACrK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,MAAM,wCAAwC,CAAC,CAAC;IACvF,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,CAAa;IACtC,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS;QACvB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,0EAA0E;QACtF,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO;YACtB,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,sDAAsD,CAAC,CAAC,KAAK,kCAAkC;YACrH,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,qGAAqG,CAAC;YACpH,0BAA0B,CAAC,CAAC,eAAe,2DAA2D,CAAC;IAC3G,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,GAAG,CAAC,IAAI,CACN,YAAY,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB;QACtF,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,gCAAgC,CAC9F,CAAC;IACF,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;QACpH,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChF,GAAG,CAAC,IAAI,CACN,mBAAmB,CAAC,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,2BAA2B;QACrG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3D,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9G,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpH,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACvE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,CAAiB;IAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,UAAU,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5E,GAAG,CAAC,IAAI,CACN,QAAQ,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,SAAS,4BAA4B,CAAC,CAAC,UAAU,wCAAwC;QACxH,GAAG,CAAC,CAAC,eAAe,gCAAgC,CAAC,CAAC,cAAc,4DAA4D,CACnI,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/H,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;IAClF,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,MAAM,wBAAwB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1G,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAE9E,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAC/B,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3H,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAa5G,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,CAAY;IACrC,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7G,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QACxB,OAAO,CACL,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU;YAC7H,YAAY,CAAC,CAAC,MAAM,qBAAqB,WAAW,GAAG,IAAI,GAAG,CAC/D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClB,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,yCAAyC,CAAC,CAAC,SAAS,mBAAmB,CAAC;QACzJ,OAAO,CACL,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM;YAC1H,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,MAAM,qBAAqB,WAAW,GAAG,IAAI,GAAG,CACrF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;QAChC,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,CACL,eAAe,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,wBAAwB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,SAAS,wBAAwB;YAClI,GAAG,CAAC,CAAC,UAAU,uBAAuB,CAAC,CAAC,eAAe,6BAA6B,CAAC,CAAC,cAAc,kBAAkB;YACtH,YAAY,CAAC,CAAC,MAAM,qFAAqF,WAAW,GAAG,IAAI,GAAG;YAC9H,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;IACxB,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,CACL,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,YAAY,CAAC,KAAK,WAAW;QACxG,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAAE,2BAA2B,CAAC,CAAC,MAAM,qBAAqB,WAAW,GAAG,IAAI,GAAG;QACxI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,CAAY;IAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzH,CAAC;IACD,mGAAmG;IACnG,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,OAAO;IACd,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC;QAC9D,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAAE,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAS,gBAAgB,CAAC,CAAU;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACnI,CAAC;AAED,SAAS,SAAS,CAAC,CAAa,EAAE,MAAe;IAC/C,OAAO,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrF,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAC,CAAY;IACpC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IACrB,mGAAmG;IACnG,MAAM,GAAG,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACjH,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC;IACpG,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACvF,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC;YACvG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,kCAAkC,CAAC,CAAC;IACvF,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACzD,GAAG,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAChF,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACjF,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,KAAK,CAAC,CAAY;IAChC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG;QACV,oBAAoB;QACpB,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;QAC3B,eAAe;QACf,gCAAgC;KACjC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9G,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5G,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG;YAClC,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7H,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,uCAAuC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC/B,CAAC","sourcesContent":["/**\n * `upt map --route=FROM,TO` and `upt map --family=NAME` — focused maps of the\n * ATLAS (models and the bridges between them), as opposed to the rest of `map`,\n * which draws the equation graph by shared quantities. The two graphs are\n * different facts: a shared quantity is connectivity, a bridge is a recorded\n * transformation between models, and neither is drawn as the other.\n *\n * Every view states its denominator (how many of the atlas's models and\n * bridges it shows) and its source.\n *\n * ## The join to the equation graph\n *\n * A model is joined to a canonical equation ONLY through the model's own\n * `canonicalRefs` field. Nothing is inferred from a shared dimension, a shared\n * quantity or a similar name, and a model with no recorded reference is shown\n * as having none recorded — an absent link, not a finding that none exists.\n *\n * ## Evidence, and the witness results it is derived from\n *\n * Which witnesses pass is decided by runs the view may or may not observe.\n * Every tag `deriveEvidence` emits is monotone in the passing set except\n * `proposed`, which is antitone, so deriving under the witnesses KNOWN to pass\n * and under those plus every witness with NO observed result brackets every\n * possible result: a tag in both is derived whatever the unobserved results\n * are, a tag in neither cannot be, and a tag in exactly one is undecided here.\n * An undecided bridge is counted apart from one that does not match.\n *\n * With no results source every witness is unobserved. `--stored` observes the\n * committed artifact (`data/atlas/witness-results.json`); `--run` observes the\n * in-process registered witnesses, run by this invocation. Only a `'checked'`\n * row is a pass. A `'refuted'` or `'unresolved'` row is observed and not\n * passing, and the two are counted apart; a witness with no row stays\n * unobserved, whatever its name.\n */\nimport { execFileSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { CommandCtx } from '../command.js';\nimport { CliError } from '../errors.js';\nimport { publishedUrl } from '../published-url.js';\nimport type { AppliedTransport, AtlasBridge, AtlasModel } from '../../cli-api.js';\nimport type { EvidenceTag, RelationType } from '../../atlas/types.js';\nimport { showInequality } from './regime.js';\nimport {\n claimReport,\n explainsRefusal,\n missingForComposite,\n routeClaim,\n selectRoute,\n transportReport,\n type TransportReport,\n} from './_atlas-route.js';\n\ntype Api = CommandCtx['api'];\n\nexport const ATLAS_SOURCE = `atlas (the models and bridges of every family, ${publishedUrl('src/atlas/families.ts')})`;\nexport const LINK_SOURCE = 'AtlasModel.canonicalRefs';\nconst NO_LINK =\n 'no canonical equation recorded in its canonicalRefs (an absent link, not a finding that none exists; ' +\n 'nothing is inferred from shared quantities or names)';\nconst EPISTEMICS =\n 'bridges are recorded transformations between models; the equation links are only those a model records. ' +\n 'A route existing is not a warrant: the composed claim is.';\n\n/** A canonical equation recorded for an atlas model, with its graph edge when present. */\nexport interface EquationLink {\n id: string;\n name: string | null;\n formula: string | null;\n /** The canonical equation's edge in the equation graph, or null when the graph has none by that id. */\n graphEdge: { sources: string[]; target: string } | null;\n}\n\n/** An atlas model row with its family and recorded canonical-equation links. */\nexport interface ModelView {\n id: string;\n family: string;\n dynamics: string;\n equationLinks: EquationLink[];\n}\n\n/** A bridge's derived evidence tags and witness observations for the current view. */\nexport interface EvidenceView {\n /** Derived whatever the unobserved witness results are. */\n derived: EvidenceTag[];\n /** Derived under some unobserved witness results and not others. */\n undecided: EvidenceTag[];\n formalRef: { system: string; fidelity: string; kind: string; url: string } | null;\n witnesses: number;\n /** Present only when the view reads a witness-results source. */\n results?: WitnessOutcomes;\n}\n\n// ── witness results ────────────────────────────────────────────────────────\n\n/** The witness-result source a view can observe. */\nexport type ResultsMode = 'stored' | 'run';\n\n/** One stored or freshly run witness result for an atlas record. */\nexport interface WitnessResultRow {\n recordId: string;\n witnessId: string;\n status: 'checked' | 'refuted' | 'unresolved';\n reason?: string;\n}\n\n/** Where stored witness results came from and whether the artifact changed since its last commit. */\nexport interface StoredProvenance {\n /** GitHub blob URL of the artifact. The file ships in `data/`; a checkout or install without it has no stored results. */\n url: string;\n schemaVersion: string;\n /** What the artifact itself records about when it was produced. */\n carries: string;\n /** The last commit touching the file, read from git; null when git cannot say. */\n lastCommit: { hash: string; date: string } | null;\n /** Whether the working-tree file differs from that commit; null when git cannot say. */\n modifiedSinceCommit: boolean | null;\n}\n\n/** The witness-result rows a view observed, with provenance for their source. */\nexport interface WitnessResults {\n mode: ResultsMode;\n /** stored: the artifact and what is known of when it was made. run: what ran. */\n provenance: StoredProvenance | { ran: string; registered: number };\n rows: readonly WitnessResultRow[];\n}\n\n/** One bridge's witnesses, split by what the results source observed of each. */\nexport interface WitnessOutcomes {\n source: ResultsMode;\n checked: string[];\n refuted: string[];\n unresolved: { id: string; reason: string | null }[];\n /** No row in the source: a name, not a result. */\n notObserved: string[];\n}\n\nexport const STORED_RESULTS_PATH = 'data/atlas/witness-results.json';\nconst ARTIFACT_CARRIES = 'the artifact records no commit or date of its own';\n\n/** The repository root, when this module runs from a checkout (src/ or dist/). */\nfunction repoRoot(): string {\n return fileURLToPath(new URL('../../../', import.meta.url));\n}\n\n/** The absolute path `--stored` reads, which an experiment record hashes as an input. */\nexport function storedResultsFile(): string {\n return join(repoRoot(), STORED_RESULTS_PATH);\n}\n\nfunction git(args: string[], cwd: string): string | null {\n try {\n return execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 5000 }).trim();\n } catch {\n // git absent, no repository here (an installed package has none), a path git does not know, or\n // a call that ran past its limit: each is \"git cannot say\", which the callers print as such.\n return null;\n }\n}\n\n/**\n * The committed witness-results artifact. It is a repository file, not shipped\n * in the package, so its absence is refused rather than read as \"no results\":\n * an empty source would render every tag exactly as the default view does,\n * under a label claiming it had been observed.\n */\nexport function loadStoredResults(command = 'upt map', file = storedResultsFile()): WitnessResults {\n const root = repoRoot();\n let raw: string;\n try {\n raw = readFileSync(file, 'utf8');\n } catch (e) {\n const code = e instanceof Error && 'code' in e && typeof e.code === 'string' ? e.code : undefined;\n // Only an absent file is \"not present here\". A file that is there and cannot be read\n // (a directory, no permission) is another fact, and the refusal says which.\n if (code !== 'ENOENT') {\n throw new CliError(\n `${command}: --stored could not read ${publishedUrl(STORED_RESULTS_PATH)} (${code ?? 'read error'}: ${e instanceof Error ? e.message : String(e)}). ` +\n '--run executes the in-process registered witnesses instead',\n );\n }\n throw new CliError(\n `${command}: --stored reads ${publishedUrl(STORED_RESULTS_PATH)}, which is not present here (a checkout or install ` +\n 'without data/). --run executes the in-process registered witnesses instead',\n );\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (e) {\n // A corrupt artifact is refused as such, not thrown through as a SyntaxError with a stack.\n throw new CliError(`${command}: ${publishedUrl(STORED_RESULTS_PATH)} is not valid JSON (${e instanceof Error ? e.message : String(e)})`);\n }\n // `null`, a list or a number is valid JSON and is not the artifact.\n const artifact: { schemaVersion?: unknown; results?: unknown } =\n typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) ? parsed : {};\n if (artifact.schemaVersion !== '0' || !Array.isArray(artifact.results)) {\n throw new CliError(\n `${command}: ${publishedUrl(STORED_RESULTS_PATH)} has schemaVersion '${String(artifact.schemaVersion)}'; this command reads '0'`,\n );\n }\n const rows = artifact.results.map((r: unknown, i): WitnessResultRow => {\n const row: Record<string, unknown> = typeof r === 'object' && r !== null && !Array.isArray(r) ? { ...r } : {};\n const { recordId, witnessId, status, reason } = row;\n if (\n typeof recordId !== 'string' ||\n typeof witnessId !== 'string' ||\n (status !== 'checked' && status !== 'refuted' && status !== 'unresolved') ||\n (reason !== undefined && typeof reason !== 'string')\n ) {\n throw new CliError(\n `${command}: ${publishedUrl(STORED_RESULTS_PATH)} results[${i}] is not a witness result ` +\n '(recordId and witnessId are text, status is checked, refuted or unresolved)',\n );\n }\n return { recordId, witnessId, status, ...(reason === undefined ? {} : { reason }) };\n });\n const log = git(['log', '-1', '--format=%H %cI', '--', STORED_RESULTS_PATH], root);\n const [hash, date] = log === null || log === '' ? [] : log.split(' ');\n const lastCommit = hash !== undefined && date !== undefined ? { hash, date } : null;\n const status = lastCommit === null ? null : git(['status', '--porcelain', '--', STORED_RESULTS_PATH], root);\n return {\n mode: 'stored',\n provenance: {\n url: publishedUrl(STORED_RESULTS_PATH),\n schemaVersion: artifact.schemaVersion,\n carries: ARTIFACT_CARRIES,\n lastCommit,\n modifiedSinceCommit: status === null ? null : status !== '',\n },\n rows,\n };\n}\n\n/**\n * Run the in-process registered witnesses of `bridgeIds`, now, and those of\n * the norm transports the bridges declare (registered under the transport id).\n */\nexport async function runResults(api: Api, bridgeIds: ReadonlySet<string>): Promise<WitnessResults> {\n const transportIds = api.ATLAS_FAMILIES.flatMap((f) => f.bridges)\n .filter((b) => bridgeIds.has(b.id))\n .flatMap((b) => (b.normTransports ?? []).map((nt) => nt.id));\n const ids = new Set([...bridgeIds, ...transportIds]);\n const registered = api.WITNESS_REGISTRY.filter((e) => ids.has(e.recordId));\n const artifact = await api.runWitnessRegistry(registered);\n return {\n mode: 'run',\n provenance: { ran: 'the registered witnesses, in-process, by this invocation', registered: registered.length },\n rows: artifact.results.map((r) => ({\n recordId: r.recordId,\n witnessId: r.witnessId,\n status: r.status,\n ...(r.reason === undefined ? {} : { reason: r.reason }),\n })),\n };\n}\n\nfunction outcomes(b: AtlasBridge, results: WitnessResults): WitnessOutcomes {\n const rows = results.rows.filter((r) => r.recordId === b.id);\n const o: WitnessOutcomes = { source: results.mode, checked: [], refuted: [], unresolved: [], notObserved: [] };\n for (const w of b.witnesses) {\n const row = rows.find((r) => r.witnessId === w.id);\n if (row === undefined) o.notObserved.push(w.id);\n else if (row.status === 'checked') o.checked.push(w.id);\n else if (row.status === 'refuted') o.refuted.push(w.id);\n else o.unresolved.push({ id: w.id, reason: row.reason ?? null });\n }\n return o;\n}\n\n/** Aggregate witness result counts over the bridges a view shows. */\nexport interface ResultsTally {\n mode: ResultsMode;\n provenance: WitnessResults['provenance'];\n /** Witnesses of the bridges this view shows, by what the source observed. */\n witnesses: { checked: number; refuted: number; unresolved: number; notObserved: number };\n}\n\nfunction tally(results: WitnessResults | null, bridges: readonly BridgeView[]): ResultsTally | undefined {\n if (results === null) return undefined;\n const seen = new Map(bridges.map((b) => [b.id, b.evidence.results!] as const));\n const sum = (f: (o: WitnessOutcomes) => number) => [...seen.values()].reduce((n, o) => n + f(o), 0);\n return {\n mode: results.mode,\n provenance: results.provenance,\n witnesses: {\n checked: sum((o) => o.checked.length),\n refuted: sum((o) => o.refuted.length),\n unresolved: sum((o) => o.unresolved.length),\n notObserved: sum((o) => o.notObserved.length),\n },\n };\n}\n\n/** The atlas bridge data a map view renders after joining models, evidence, regime and bounds. */\nexport interface BridgeView {\n id: string;\n family: string;\n relation: RelationType;\n premises: { id: string; family: string }[];\n conclusion: { id: string; family: string };\n transformation: string;\n assumptions: string[];\n regime: { inequalities: string[]; vacuous: boolean };\n bound: { K: number; delta: number; norm: string; horizon: string } | null;\n evidence: EvidenceView;\n}\n\nfunction allModels(api: Api): Map<string, AtlasModel> {\n return new Map(api.ATLAS_FAMILIES.flatMap((f) => f.models.map((m) => [m.id, m] as const)));\n}\n\nfunction totals(api: Api): { families: number; models: number; bridges: number } {\n return {\n families: api.ATLAS_FAMILIES.length,\n models: api.ATLAS_FAMILIES.reduce((n, f) => n + f.models.length, 0),\n bridges: api.ATLAS_FAMILIES.reduce((n, f) => n + f.bridges.length, 0),\n };\n}\n\nfunction modelView(api: Api, m: AtlasModel): ModelView {\n return {\n id: m.id,\n family: m.family,\n dynamics: m.dynamics,\n equationLinks: m.canonicalRefs.map((ref) => {\n const eq = api.CANONICAL_EQUATIONS.find((e) => e.id === ref);\n const edge = api.CANONICAL_GRAPH.find((e) => e.id === ref);\n return {\n id: ref,\n name: eq?.name ?? null,\n formula: eq?.formula_latex ?? null,\n graphEdge: edge === undefined ? null : { sources: edge.sources.map((q) => q.name), target: edge.target.name },\n };\n }),\n };\n}\n\nfunction evidenceView(api: Api, b: AtlasBridge, results: WitnessResults | null): EvidenceView {\n const o = results === null ? null : outcomes(b, results);\n const passing = o === null ? api.NO_PASSING_WITNESSES : new Set(o.checked);\n const open = o === null ? b.witnesses.map((w) => w.id) : o.notObserved;\n const low = api.deriveEvidence(b, passing);\n const high = api.deriveEvidence(b, new Set([...passing, ...open]));\n const tags = [...new Set([...low, ...high])].sort();\n return {\n derived: tags.filter((t) => low.has(t) && high.has(t)),\n undecided: tags.filter((t) => low.has(t) !== high.has(t)),\n formalRef:\n b.formalRef === undefined\n ? null\n : {\n system: b.formalRef.system,\n fidelity: b.formalRef.fidelity,\n kind: b.formalRef.kind,\n url: b.formalRef.url,\n },\n witnesses: b.witnesses.length,\n ...(o === null ? {} : { results: o }),\n };\n}\n\nfunction bridgeView(\n api: Api,\n b: AtlasBridge,\n family: string,\n models: Map<string, AtlasModel>,\n results: WitnessResults | null = null,\n): BridgeView {\n const at = (id: string) => ({ id, family: models.get(id)?.family ?? 'UNKNOWN' });\n return {\n id: b.id,\n family,\n relation: b.relation,\n premises: b.premises.map(at),\n conclusion: at(b.conclusion),\n transformation: b.transformation,\n assumptions: [...b.sideConditions],\n regime: { inequalities: b.regime.inequalities.map(showInequality), vacuous: b.regime.inequalities.length === 0 },\n bound:\n b.bound === undefined\n ? null\n : { K: b.bound.K, delta: b.bound.delta, norm: b.bound.norm, horizon: b.bound.horizon },\n evidence: evidenceView(api, b, results),\n };\n}\n\nfunction familyOfBridge(api: Api, id: string): string {\n return api.ATLAS_FAMILIES.find((f) => f.bridges.some((b) => b.id === id))?.family ?? 'UNKNOWN';\n}\n\nfunction linkSummary(models: readonly ModelView[]): { source: string; withLink: number; withoutLink: number; of: number } {\n const withLink = models.filter((m) => m.equationLinks.length > 0).length;\n return { source: LINK_SOURCE, withLink, withoutLink: models.length - withLink, of: models.length };\n}\n\n// ── route ──────────────────────────────────────────────────────────────────\n\n/** The focused view for one selected atlas route and the claim its composition makes. */\nexport interface RouteView {\n view: 'route';\n from: string;\n to: string;\n source: string;\n /** null: no chain of bridges connects the endpoints. */\n steps: BridgeView[] | null;\n models: ModelView[];\n denominator: { bridges: { shown: number; of: number }; models: { shown: number; of: number } };\n selection: string;\n composition: {\n /** The running composite after each step; null once a step has composed to no claim. */\n running: { after: string; relation: RelationType | 'no-composite-claim' | null }[];\n /** Index into `steps` of the step whose composition the table declines, or null. */\n breaksAt: number | null;\n claim: ReturnType<typeof claimReport> | null;\n missing: string[];\n /** The declared norm transports that carried the bound across exact steps, with their witness results. */\n transports: (TransportReport & { result: TransportResult })[];\n /** The composite claim's evidence (ADR §4); null when the route makes no composite claim. */\n evidence: CompositeEvidenceView | null;\n };\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nconst SELECTION =\n 'the shortest route by bridge count (the one `upt path` reports); other routes between the endpoints, if any, are not shown';\n\n/** Parse a FROM,TO route flag into atlas model ids. */\nexport function parseRoute(raw: string): [string, string] {\n const [from, to, ...extra] = raw.split(',').map((s) => s.trim());\n if (from === undefined || to === undefined || extra.length > 0 || from === '' || to === '') {\n throw new CliError(`upt map: --route='${raw}' must be FROM,TO (two model ids), e.g. --route=model-pendulum,model-lc`);\n }\n return [from, to];\n}\n\nfunction checkEndpoints(models: Map<string, AtlasModel>, from: string, to: string): void {\n for (const id of [from, to]) {\n if (!models.has(id)) {\n throw new CliError(`upt map: '${id}' is not a model of any atlas family (run \\`upt map --family=NAME\\` to list one family's models)`);\n }\n }\n}\n\n/** The models a route visits, in route order: an exact equivalence may be walked conclusion → premise. */\nfunction routeModelIds(from: string, bridges: readonly AtlasBridge[]): string[] {\n const ids = [from];\n for (const b of bridges) {\n const at = ids[ids.length - 1]!;\n ids.push(b.conclusion === at && b.relation === 'exact-equivalence' ? b.premises[0]! : b.conclusion);\n }\n return ids;\n}\n\n/** What a results source observed of a transport's witness; 'no result' when it has no row or there is no source. */\nexport type TransportResult = 'checked' | 'refuted' | 'unresolved' | 'no result';\n\n/** The composite evidence of a bound route: the tags derived, the tags left undecided, and the rule that derived them. */\nexport interface CompositeEvidenceView {\n /** Derived whatever the unobserved results are: never stronger than the weakest part. */\n derived: EvidenceTag[];\n undecided: EvidenceTag[];\n rule: string;\n}\n\nconst COMPOSITE_RULE =\n 'derived from the parts (every step and every transport applied): a positive tag survives only if every part ' +\n \"carries it, contradicted if any part does; a transport contributes its basis when its witness checks, else 'proposed' \" +\n `(${publishedUrl('docs/planning/ADR-transported-norm-composition.md')} §4)`;\n\nfunction transportResult(nt: { id: string; witness: { id: string } }, results: WitnessResults | null): TransportResult {\n const row = results?.rows.find((r) => r.recordId === nt.id && r.witnessId === nt.witness.id);\n return row === undefined ? 'no result' : row.status;\n}\n\n/** The composite evidence of a bound route, bracketed over the unobserved witness results like one bridge's. */\nfunction compositeEvidence(\n api: Api,\n bridges: readonly AtlasBridge[],\n transports: readonly AppliedTransport[],\n results: WitnessResults | null,\n): CompositeEvidenceView {\n const lows: ReadonlySet<EvidenceTag>[] = [];\n const highs: ReadonlySet<EvidenceTag>[] = [];\n for (const b of bridges) {\n const o = results === null ? null : outcomes(b, results);\n const passing = o === null ? api.NO_PASSING_WITNESSES : new Set(o.checked);\n const open = o === null ? b.witnesses.map((w) => w.id) : o.notObserved;\n lows.push(api.deriveEvidence(b, passing));\n highs.push(api.deriveEvidence(b, new Set([...passing, ...open])));\n }\n for (const { transport } of transports) {\n const r = transportResult(transport, results);\n lows.push(new Set<EvidenceTag>([r === 'checked' ? transport.basis : 'proposed']));\n highs.push(new Set<EvidenceTag>([r === 'checked' || r === 'no result' ? transport.basis : 'proposed']));\n }\n const low = api.deriveCompositeEvidence(lows);\n const high = api.deriveCompositeEvidence(highs);\n const tags = [...new Set([...low, ...high])].sort();\n return {\n derived: tags.filter((t) => low.has(t) && high.has(t)),\n undecided: tags.filter((t) => low.has(t) !== high.has(t)),\n rule: COMPOSITE_RULE,\n };\n}\n\n/** The composition table folded along a non-empty route, and what the route supports. */\nfunction composeSteps(api: Api, bridges: readonly AtlasBridge[], results: WitnessResults | null): RouteView['composition'] {\n const running: RouteView['composition']['running'] = [];\n let breaksAt: number | null = null;\n let rel: RelationType | 'no-composite-claim' | null = bridges[0]!.relation;\n running.push({ after: bridges[0]!.id, relation: rel });\n for (let i = 1; i < bridges.length; i++) {\n if (rel === null || rel === 'no-composite-claim') rel = null;\n else {\n rel = api.composeRelation(rel, bridges[i]!.relation);\n if (rel === 'no-composite-claim') breaksAt = i;\n }\n running.push({ after: bridges[i]!.id, relation: rel });\n }\n const claim = routeClaim(api, bridges);\n const missing = explainsRefusal(claim) ? missingForComposite(api, bridges) : [];\n const applied = claim.kind === 'bound' ? (claim.transports ?? []) : [];\n const transports = applied.map((a) => ({ ...transportReport(a), result: transportResult(a.transport, results) }));\n const evidence = claim.kind === 'bound' ? compositeEvidence(api, bridges, applied, results) : null;\n return { running, breaksAt, claim: claimReport(claim), missing, transports, evidence };\n}\n\n/** Build the focused atlas route view for two model ids. */\nexport function buildRouteView(api: Api, from: string, to: string, results: WitnessResults | null = null): RouteView {\n const models = allModels(api);\n checkEndpoints(models, from, to);\n const { bridges } = selectRoute(api, from, to, 'map');\n const t = totals(api);\n const steps = bridges === null ? null : bridges.map((b) => bridgeView(api, b, familyOfBridge(api, b.id), models, results));\n const routeModels = bridges === null ? [from, to] : routeModelIds(from, bridges);\n const mv = routeModels.map((id) => modelView(api, models.get(id)!));\n const { running, breaksAt, claim, missing, transports, evidence } =\n bridges === null || bridges.length === 0\n ? { running: [], breaksAt: null, claim: null, missing: [], transports: [], evidence: null }\n : composeSteps(api, bridges, results);\n const witnessResults = tally(results, steps ?? []);\n\n return {\n view: 'route',\n from,\n to,\n source: ATLAS_SOURCE,\n steps,\n models: mv,\n denominator: {\n bridges: { shown: steps?.length ?? 0, of: t.bridges },\n models: { shown: mv.length, of: t.models },\n },\n selection: SELECTION,\n composition: { running, breaksAt, claim, missing, transports, evidence },\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── all routes ─────────────────────────────────────────────────────────────\n\nexport const DEFAULT_MAX_ROUTES = 20;\nexport const MAX_ROUTES_CEILING = 1000;\n\n/** The multi-route view between two atlas models, including composition outcomes for each route. */\nexport interface RoutesView {\n view: 'routes';\n from: string;\n to: string;\n source: string;\n routes: {\n /** Bridge ids, in route order. */\n bridges: string[];\n /** Model ids, in route order. */\n models: string[];\n composition: RouteView['composition'];\n /** True for the route `upt path` (and `map --route` without --all-routes) reports. */\n reported: boolean;\n }[];\n /** Each bridge used by a shown route, once, in atlas order. */\n bridges: BridgeView[];\n models: ModelView[];\n count: {\n shown: number;\n limit: number;\n /** True: the search ran out of routes, so `shown` is every simple route. */\n exhausted: boolean;\n /** When not exhausted: every route of at most this many bridges is among those found. */\n completeThrough: number | null;\n /** When not exhausted: the route limit, or the search's work budget. */\n stoppedBy: 'limit' | 'budget' | null;\n };\n claims: { bound: number; noClaim: Record<string, number> };\n denominator: { bridges: { shown: number; of: number }; models: { shown: number; of: number } };\n selection: string;\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nconst ROUTES_SELECTION =\n 'every simple route (no model visited twice), ordered by bridge count and then atlas order; the same traversal as ' +\n '`upt path`: an exact equivalence both ways, every other relation forward only, multi-premise bridges not followed';\n\n/** Build the simple-route atlas view between two model ids up to the requested limit. */\nexport function buildRoutesView(\n api: Api,\n from: string,\n to: string,\n limit: number,\n results: WitnessResults | null = null,\n): RoutesView {\n const models = allModels(api);\n checkEndpoints(models, from, to);\n const found = api.enumerateAtlasRoutes(from, to, limit);\n const reported = selectRoute(api, from, to, 'map').bridges;\n const reportedKey = reported === null ? null : reported.map((b) => b.id).join(' ');\n const routes = found.routes\n .filter((r) => r.length > 0)\n .map((r) => ({\n bridges: r.map((b) => b.id),\n models: routeModelIds(from, r),\n composition: composeSteps(api, r, results),\n reported: r.map((b) => b.id).join(' ') === reportedKey,\n }));\n const used = new Set(routes.flatMap((r) => r.bridges));\n const bridges = api.ATLAS_FAMILIES.flatMap((f) =>\n f.bridges.filter((b) => used.has(b.id)).map((b) => bridgeView(api, b, f.family, models, results)),\n );\n const visited = new Set(routes.flatMap((r) => r.models));\n const mv = [...models.values()].filter((m) => visited.has(m.id) || (routes.length === 0 && (m.id === from || m.id === to))).map((m) => modelView(api, m));\n const noClaim: Record<string, number> = {};\n for (const r of routes) {\n const c = r.composition.claim!;\n if (c.kind === 'no-claim') noClaim[c.reason] = (noClaim[c.reason] ?? 0) + 1;\n }\n const t = totals(api);\n const witnessResults = tally(results, bridges);\n return {\n view: 'routes',\n from,\n to,\n source: ATLAS_SOURCE,\n routes,\n bridges,\n models: mv,\n count: {\n shown: routes.length,\n limit,\n exhausted: found.exhausted,\n completeThrough: found.completeThrough,\n stoppedBy: found.stoppedBy,\n },\n claims: { bound: routes.filter((r) => r.composition.claim!.kind === 'bound').length, noClaim },\n denominator: { bridges: { shown: bridges.length, of: t.bridges }, models: { shown: mv.length, of: t.models } },\n selection: ROUTES_SELECTION,\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── observable ─────────────────────────────────────────────────────────────\n\n/** The observable-focused atlas view listing bridges that preserve, translate or reject a named observable. */\nexport interface ObservableView {\n view: 'observable';\n observable: string;\n source: string;\n match: string;\n /** Bridges recording the observable as preserved, or declaring a translation of their bound into it. */\n bridges: (BridgeView & { preservesMatched: string[]; translationsMatched: string[] })[];\n /** Bridges recording the observable as NOT preserved; a bridge may appear here and above. */\n notPreserved: { id: string; family: string; relation: RelationType; matched: string[] }[];\n models: ModelView[];\n denominator: {\n bridges: { preserves: number; translates: number; doesNotPreserve: number; recordsNothing: number; of: number };\n models: { shown: number; of: number };\n };\n filter: AtlasFilterStats | null;\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nconst OBSERVABLE_MATCH =\n \"a case-insensitive whole-word text match against each bridge's recorded `preserves` and `doesNotPreserve` strings \" +\n 'and the observable names of its declared bound translations; nothing is inferred from dimensions, quantities or ' +\n 'the transformation, and a bridge that records nothing about the observable is counted apart from one that records ' +\n 'it as not preserved';\n\nfunction wordMatcher(term: string): (text: string) => boolean {\n const escaped = term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const re = new RegExp(`(^|[^\\\\p{L}\\\\p{N}])${escaped}($|[^\\\\p{L}\\\\p{N}])`, 'iu');\n return (text) => re.test(text);\n}\n\n/** Build an observable-focused atlas view by matching recorded observable text and translations. */\nexport function buildObservableView(\n api: Api,\n observable: string,\n filter: AtlasFilter,\n results: WitnessResults | null = null,\n): ObservableView {\n const term = observable.trim();\n if (term.length < 2) throw new CliError(`upt map: --observable='${observable}' must name an observable (two characters or more)`);\n const hit = wordMatcher(term);\n const models = allModels(api);\n const rows = api.ATLAS_FAMILIES.flatMap((f) => f.bridges.map((b) => ({ family: f.family, b })));\n const matched = rows.map(({ family, b }) => ({\n family,\n b,\n preserves: b.preserves.filter(hit),\n translations: api.translationsOf(b.id).map((x) => x.observable).filter(hit),\n doesNot: b.doesNotPreserve.filter(hit),\n }));\n const candidates = matched\n .filter((m) => m.preserves.length > 0 || m.translations.length > 0)\n .map((m) => ({ ...bridgeView(api, m.b, m.family, models, results), preservesMatched: m.preserves, translationsMatched: m.translations }));\n const filtering = filter.relation !== undefined || filter.evidence !== undefined;\n const verdicts = candidates.map((b) => (filtering ? judge(b, filter) : 'kept'));\n const kept = candidates.filter((_, i) => verdicts[i] === 'kept');\n const n = (v: string) => verdicts.filter((x) => x === v).length;\n const onKept = new Set(kept.flatMap((b) => [...b.premises.map((p) => p.id), b.conclusion.id]));\n const mv = [...models.values()].filter((m) => onKept.has(m.id)).map((m) => modelView(api, m));\n const t = totals(api);\n const witnessResults = tally(results, kept);\n return {\n view: 'observable',\n observable: term,\n source: ATLAS_SOURCE,\n match: OBSERVABLE_MATCH,\n bridges: kept,\n notPreserved: matched\n .filter((m) => m.doesNot.length > 0)\n .map((m) => ({ id: m.b.id, family: m.family, relation: m.b.relation, matched: m.doesNot })),\n models: mv,\n denominator: {\n bridges: {\n preserves: matched.filter((m) => m.preserves.length > 0).length,\n translates: matched.filter((m) => m.translations.length > 0).length,\n doesNotPreserve: matched.filter((m) => m.doesNot.length > 0).length,\n recordsNothing: matched.filter((m) => m.preserves.length + m.translations.length + m.doesNot.length === 0).length,\n of: t.bridges,\n },\n models: { shown: mv.length, of: t.models },\n },\n filter: filtering\n ? {\n ...filter,\n total: candidates.length,\n kept: kept.length,\n droppedNotMatching: n('not-matching'),\n droppedUndecided: n('undecided'),\n ...(results === null ? {} : { results: results.mode }),\n }\n : null,\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── atlas-wide evidence ────────────────────────────────────────────────────\n\n/** The atlas-wide evidence view of `upt atlas --evidence`: each bridge's derived evidence and the per-tag counts. */\nexport interface AtlasEvidenceView {\n view: 'atlas-evidence';\n source: string;\n denominator: { families: number; bridges: number; witnesses: number };\n bridges: { id: string; family: string; relation: RelationType; evidence: EvidenceView }[];\n /**\n * Per tag, over every atlas bridge: how many derive it whatever the unobserved\n * witness results are, and, apart, how many it is undecided on. Every tag is\n * listed, zero included; a bridge carries several tags, so no column sums to\n * the bridge count.\n */\n byTag: { tag: EvidenceTag; derived: number; undecided: number }[];\n /** Declared norm transports, whose witnesses are registered under the transport id. */\n normTransports: { id: string; bridge: string; witness: string; status: TransportResult }[];\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\n/** Every bridge of every family, with its derived evidence: the atlas-wide view of `upt atlas --evidence`. */\nexport function buildAtlasEvidenceView(api: Api, results: WitnessResults | null = null): AtlasEvidenceView {\n const models = allModels(api);\n const views = api.ATLAS_FAMILIES.flatMap((f) => f.bridges.map((b) => bridgeView(api, b, f.family, models, results)));\n const derived = api.summarizeEvidence(views.map((v) => new Set(v.evidence.derived)));\n const undecided = api.summarizeEvidence(views.map((v) => new Set(v.evidence.undecided)));\n const witnessResults = tally(results, views);\n return {\n view: 'atlas-evidence',\n source: ATLAS_SOURCE,\n denominator: {\n families: api.ATLAS_FAMILIES.length,\n bridges: views.length,\n witnesses: views.reduce((n, v) => n + v.evidence.witnesses, 0),\n },\n bridges: views.map((v) => ({ id: v.id, family: v.family, relation: v.relation, evidence: v.evidence })),\n byTag: api.ALL_EVIDENCE_TAGS.map((tag) => ({ tag, derived: derived.byTag[tag], undecided: undecided.byTag[tag] })),\n normTransports: api.ATLAS_FAMILIES.flatMap((f) => f.bridges).flatMap((b) =>\n (b.normTransports ?? []).map((nt) => ({ id: nt.id, bridge: b.id, witness: nt.witness.id, status: transportResult(nt, results) })),\n ),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics:\n 'evidence is derived from each record and the witness results the view observes, never read from a stored tag; ' +\n 'a tag is undecided when unobserved witness results could give it or withhold it. Only a checked witness is a pass.',\n };\n}\n\n/** The text lines `upt atlas --evidence` prints for the view `v`. */\nexport function atlasEvidenceText(v: AtlasEvidenceView): string[] {\n const d = v.denominator;\n const out = [`\\nAtlas evidence — ${d.bridges} bridges across ${d.families} families, ${d.witnesses} recorded witnesses [source: ${v.source}]`];\n const r = resultsLine(v.witnessResults);\n out.push(` ${r ?? 'witness results: none observed (every witness is a name, not a result); --stored reads the committed artifact, --run runs them now'}`);\n out.push(` by tag (bridges; a bridge carries several tags, so the counts do not sum to ${d.bridges}):`);\n for (const t of v.byTag) out.push(` ${t.tag.padEnd(22)} derived ${String(t.derived).padStart(2)} · undecided ${String(t.undecided).padStart(2)}`);\n for (const family of [...new Set(v.bridges.map((b) => b.family))]) {\n const bs = v.bridges.filter((b) => b.family === family);\n out.push(` ${family} (${bs.length} bridge${bs.length === 1 ? '' : 's'}):`);\n for (const b of bs) {\n out.push(` ${b.id} — ${b.relation}`);\n out.push(` ${evidenceLine(b.evidence, b.id)}`);\n if (b.evidence.results !== undefined) out.push(` ${outcomeLine(b.evidence.results)}`);\n }\n }\n out.push(` norm transports (${v.normTransports.length}):`);\n if (v.normTransports.length === 0) out.push(' none declared');\n for (const nt of v.normTransports) out.push(` ${nt.id} on ${nt.bridge}: witness ${nt.witness} — ${nt.status}`);\n out.push(' Refuted and unresolved are counted apart; neither is a pass. `upt atlas <bridge-id>` shows one bridge by claim.');\n return out;\n}\n\n// ── family ─────────────────────────────────────────────────────────────────\n/** Filter options applied to atlas bridge views. */\nexport interface AtlasFilter {\n relation?: RelationType;\n evidence?: EvidenceTag;\n}\n\n/** Counts explaining how an atlas bridge filter kept or dropped rows. */\nexport interface AtlasFilterStats {\n relation?: RelationType;\n evidence?: EvidenceTag;\n total: number;\n kept: number;\n droppedNotMatching: number;\n /** Bridges whose match depends on witness results the view does not observe. */\n droppedUndecided: number;\n /** The witness-results source, when the view reads one. */\n results?: ResultsMode;\n}\n\n/** The family-focused atlas view with local models, filed bridges, touching bridges and rejections. */\nexport interface FamilyView {\n view: 'family';\n family: string;\n source: string;\n models: ModelView[];\n /** Bridges filed under the family, then bridges filed elsewhere that touch one of its models. */\n bridges: (BridgeView & { role: 'filed' | 'touching' })[];\n rejections: { id: string; claimed: RelationType; premises: string[]; conclusion: string; reason: string }[];\n denominator: {\n models: { shown: number; of: number };\n bridgesFiled: { shown: number; of: number };\n bridgesTouching: { shown: number; of: number };\n rejections: number;\n };\n filter: AtlasFilterStats | null;\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nfunction judge(b: BridgeView, f: AtlasFilter): 'kept' | 'not-matching' | 'undecided' {\n if (f.relation !== undefined && b.relation !== f.relation) return 'not-matching';\n if (f.evidence === undefined || b.evidence.derived.includes(f.evidence)) return 'kept';\n return b.evidence.undecided.includes(f.evidence) ? 'undecided' : 'not-matching';\n}\n\n/** Format the bridge-filter counts shown in text and diagram legends. */\nexport function formatAtlasFilterLegend(s: AtlasFilterStats | null): string | null {\n if (s === null) return null;\n const terms = [\n ...(s.relation !== undefined ? [`relation=${s.relation}`] : []),\n ...(s.evidence !== undefined ? [`evidence=${s.evidence}`] : []),\n ];\n return (\n `filter: ${terms.join(' ')} — ${s.kept} of ${s.total} bridges kept; ` +\n `${s.droppedNotMatching} dropped (did not match); ` +\n `${s.droppedUndecided} dropped (undecided: ${UNOBSERVED[s.results ?? 'none']})`\n );\n}\n\nconst UNOBSERVED: Record<ResultsMode | 'none', string> = {\n none: 'depends on witness results this command does not observe',\n stored: `depends on witnesses with no result in ${publishedUrl(STORED_RESULTS_PATH)}`,\n run: 'depends on witnesses not registered to run in-process',\n};\n\n/** Every bridge a view draws on, for running their witnesses before the view is built with the results. */\nexport function bridgeIdsOf(v: AtlasView): Set<string> {\n if (v.view === 'route') return new Set((v.steps ?? []).map((b) => b.id));\n return new Set(v.bridges.map((b) => b.id));\n}\n\n/** Build a family-focused atlas map, applying relation and evidence filters to its bridges. */\nexport function buildFamilyView(api: Api, name: string, filter: AtlasFilter, results: WitnessResults | null = null): FamilyView {\n const fam = api.ATLAS_FAMILIES.find((f) => f.family === name);\n if (fam === undefined) {\n throw new CliError(\n `upt map: unknown --family='${name}' (expected: ${api.ATLAS_FAMILIES.map((f) => f.family).join(' | ')})`,\n );\n }\n const models = allModels(api);\n const own = new Set(fam.models.map((m) => m.id));\n const filed = fam.bridges.map((b) => ({ ...bridgeView(api, b, fam.family, models, results), role: 'filed' as const }));\n const touching = api.ATLAS_FAMILIES.filter((f) => f !== fam).flatMap((f) =>\n f.bridges\n .filter((b) => [...b.premises, b.conclusion].some((id) => own.has(id)))\n .map((b) => ({ ...bridgeView(api, b, f.family, models, results), role: 'touching' as const })),\n );\n const all = [...filed, ...touching];\n const filtering = filter.relation !== undefined || filter.evidence !== undefined;\n const verdicts = all.map((b) => (filtering ? judge(b, filter) : 'kept'));\n const kept = all.filter((_, i) => verdicts[i] === 'kept');\n const n = (v: string) => verdicts.filter((x) => x === v).length;\n const mv = fam.models.map((m) => modelView(api, m));\n const t = totals(api);\n const witnessResults = tally(results, kept);\n return {\n view: 'family',\n family: fam.family,\n source: ATLAS_SOURCE,\n models: mv,\n bridges: kept,\n rejections: fam.rejections.map((r) => ({\n id: r.id,\n claimed: r.claimed,\n premises: [...r.premises],\n conclusion: r.conclusion,\n reason: r.reason,\n })),\n denominator: {\n models: { shown: mv.length, of: t.models },\n bridgesFiled: { shown: kept.filter((b) => b.role === 'filed').length, of: t.bridges },\n bridgesTouching: { shown: kept.filter((b) => b.role === 'touching').length, of: t.bridges },\n rejections: fam.rejections.length,\n },\n filter: filtering\n ? {\n ...filter,\n total: all.length,\n kept: kept.length,\n droppedNotMatching: n('not-matching'),\n droppedUndecided: n('undecided'),\n ...(results === null ? {} : { results: results.mode }),\n }\n : null,\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── text ───────────────────────────────────────────────────────────────────\n\nconst MODE_LABEL: Record<ResultsMode, string> = { stored: 'stored', run: 'run now' };\nconst NO_RESULT: Record<ResultsMode, string> = {\n stored: 'with no stored result',\n run: 'not run: no in-process runner is registered for them',\n};\n\nfunction evidenceLine(e: EvidenceView, id: string): string {\n const derived = e.derived.length === 0 ? 'none' : e.derived.join(', ');\n const formal =\n e.formalRef === null ? '' : ` [formalRef ${e.formalRef.system}, fidelity ${e.formalRef.fidelity}; covers its statement only]`;\n const r = e.results;\n if (r === undefined) {\n const undecided =\n e.undecided.length === 0\n ? ''\n : `; undecided without witness results: ${e.undecided.join(', ')} (${e.witnesses} witness(es); \\`upt atlas ${id} --run\\`)`;\n return `evidence (derived): ${derived}${formal}${undecided}`;\n }\n const undecided =\n e.undecided.length === 0\n ? ''\n : `; undecided: ${e.undecided.join(', ')} (${r.notObserved.length} witness(es) ${NO_RESULT[r.source]})`;\n return `evidence (derived, witness results ${MODE_LABEL[r.source]}): ${derived}${formal}${undecided}`;\n}\n\nfunction outcomeLine(r: WitnessOutcomes): string {\n const ids = (xs: readonly string[]) => (xs.length === 0 ? 'none' : xs.join(', '));\n const unresolved = r.unresolved.length === 0 ? 'none' : r.unresolved.map((u) => `${u.id} (${u.reason ?? 'no reason recorded'})`).join(', ');\n return (\n `witnesses (${MODE_LABEL[r.source]}): checked ${ids(r.checked)} · refuted ${ids(r.refuted)} · ` +\n `unresolved ${unresolved} · no result ${ids(r.notObserved)}`\n );\n}\n\n/** Format witness-result provenance and counts for a rendered atlas view. */\nexport function resultsLine(t: ResultsTally | undefined): string | null {\n if (t === undefined) return null;\n const w = t.witnesses;\n const counts =\n `over the bridges shown: ${w.checked} checked · ${w.refuted} refuted · ${w.unresolved} unresolved · ` +\n `${w.notObserved} with no result (not a pass)`;\n if ('ran' in t.provenance) {\n return `witness results: run now — ${t.provenance.ran} (${t.provenance.registered} registered witness(es) ran); ${counts}`;\n }\n const p = t.provenance;\n const when =\n p.lastCommit === null\n ? 'no commit of it found (git unavailable, or the file is not committed)'\n : `last commit touching it ${p.lastCommit.hash.slice(0, 12)} (${p.lastCommit.date})` +\n (p.modifiedSinceCommit === true ? ', and the working-tree file is MODIFIED since' : '');\n return `witness results: stored — ${p.url} (schemaVersion ${p.schemaVersion}; ${p.carries}; ${when}); ${counts}`;\n}\n\nfunction bridgeLines(b: BridgeView, indent: string): string[] {\n const at = (m: { id: string; family: string }, home: string) => (m.family === home ? m.id : `${m.id} (${m.family})`);\n const lines = [\n `${b.premises.map((p) => at(p, b.family)).join(' + ')} --[${b.relation}]--> ${at(b.conclusion, b.family)} (${b.id}) [${b.family}]`,\n `${indent}transformation: ${b.transformation}`,\n `${indent}assumptions: ${b.assumptions.length === 0 ? 'none stated' : b.assumptions.join('; ')}`,\n `${indent}regime: ${b.regime.vacuous ? 'VACUOUS — states no inequality' : b.regime.inequalities.join('; ')}`,\n `${indent}bound: ${b.bound === null ? 'none stated' : `K = ${b.bound.K} · delta = ${b.bound.delta} (${b.bound.norm}); horizon ${b.bound.horizon}`}`,\n `${indent}${evidenceLine(b.evidence, b.id)}`,\n ...(b.evidence.results === undefined ? [] : [`${indent}${outcomeLine(b.evidence.results)}`]),\n ];\n return lines;\n}\n\nfunction modelLines(m: ModelView, indent: string): string[] {\n const lines = [`${m.id} [${m.family}]: ${m.dynamics}`];\n if (m.equationLinks.length === 0) lines.push(`${indent}equations: ${NO_LINK}`);\n for (const l of m.equationLinks) {\n const eq = l.name === null ? `${l.id} (NOT in the canonical registry)` : `${l.id} — ${l.name}: ${l.formula}`;\n const edge =\n l.graphEdge === null ? 'no edge by this id in the equation graph' : `graph edge {${l.graphEdge.sources.join(', ')}} → ${l.graphEdge.target}`;\n lines.push(`${indent}equation: ${eq}; ${edge}`);\n }\n return lines;\n}\n\nfunction linkLine(s: ReturnType<typeof linkSummary>): string {\n return `equation links (source: ${s.source}): ${s.withLink} of ${s.of} models record one; ${s.withoutLink} record none`;\n}\n\nfunction compositionLines(c: RouteView['composition'], relations: readonly RelationType[], indent: string): string[] {\n const out = c.running.map((r, i) => {\n const state =\n r.relation === null\n ? 'not composed (an earlier step already yields no composite claim)'\n : r.relation === 'no-composite-claim'\n ? `NO COMPOSITE CLAIM — ${relations[i - 1]!} then ${relations[i]!} has no table cell`\n : r.relation;\n return `${indent}after step ${i + 1} (${r.after}): ${state}`;\n });\n const claim = c.claim!;\n if (claim.kind === 'bound') {\n out.push(`${indent}route claim: ${claim.relation}, K = ${claim.bound.K} · delta = ${claim.bound.delta} (${claim.norm ?? 'no norm stated'})`);\n for (const nt of c.transports) {\n out.push(\n `${indent} across '${nt.bridgeId}' by its declared transport '${nt.id}' (${nt.fromModel} → ${nt.toModel}, ` +\n `K = ${nt.K}, time map uniform): witness ${nt.witness.id} ${nt.result === 'no result' ? 'has no result here (not a pass)' : nt.result}`,\n );\n }\n if (c.evidence !== null) {\n const d = c.evidence.derived.length === 0 ? 'none' : c.evidence.derived.join(', ');\n const u = c.evidence.undecided.length === 0 ? '' : `; undecided: ${c.evidence.undecided.join(', ')}`;\n out.push(`${indent}composite evidence (derived): ${d}${u} — never stronger than the weakest part`);\n }\n } else {\n out.push(`${indent}route claim: no composite claim — reason '${claim.reason}': ${claim.detail}`);\n if (c.missing.length > 0) {\n out.push(`${indent}to compose, this route would need:`);\n for (const m of c.missing) out.push(`${indent} - ${m}`);\n }\n }\n return out;\n}\n\n/** Render a focused route view as human-readable CLI output lines. */\nexport function routeText(v: RouteView): string[] {\n const out = [`\\nRoute map — ${v.from} → ${v.to} [source: ${v.source}]`];\n if (v.steps === null) {\n out.push(\n ` shown: 0 of ${v.denominator.bridges.of} atlas bridges — no chain of bridges connects these models ` +\n '(only an exact equivalence is followed in both directions); there is nothing to compose.',\n );\n out.push(' endpoints:');\n for (const m of v.models) out.push(...modelLines(m, ' ').map((l, i) => (i === 0 ? ` ${l}` : l)));\n out.push(` ${linkLine(v.equationLinks)}`);\n return out;\n }\n if (v.steps.length === 0) {\n out.push(' the endpoints are the same model: the route is empty and composes nothing.');\n return out;\n }\n out.push(\n ` shown: ${v.denominator.bridges.shown} of ${v.denominator.bridges.of} atlas bridges, ` +\n `${v.denominator.models.shown} of ${v.denominator.models.of} models — ${v.selection}`,\n );\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n out.push('');\n v.steps.forEach((b, i) => {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` step ${i + 1} ${head}`, ...rest);\n });\n out.push('');\n out.push(' composition (the composition table, folded along the route):');\n out.push(...compositionLines(v.composition, v.steps.map((b) => b.relation), ' '));\n out.push('');\n out.push(' models on the route, with the equations each records:');\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n/** Render a family atlas view as human-readable CLI output lines. */\nexport function familyText(v: FamilyView): string[] {\n const d = v.denominator;\n const out = [`\\nFamily map — ${v.family} [source: ${v.source}]`];\n out.push(\n ` shown: ${d.models.shown} of ${d.models.of} atlas models; ${d.bridgesFiled.shown} bridge(s) filed under ${v.family} ` +\n `and ${d.bridgesTouching.shown} filed elsewhere that touch its models, of ${d.bridgesFiled.of} atlas bridges; ` +\n `${d.rejections} rejection(s)`,\n );\n const legend = formatAtlasFilterLegend(v.filter);\n if (legend !== null) out.push(` ${legend}`);\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n out.push('');\n out.push(' models, with the equations each records:');\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n for (const role of ['filed', 'touching'] as const) {\n const bs = v.bridges.filter((b) => b.role === role);\n out.push('');\n out.push(role === 'filed' ? ` bridges filed under ${v.family} (${bs.length}):` : ` bridges filed in other families that touch ${v.family} models (${bs.length}):`);\n if (bs.length === 0) out.push(' none');\n for (const b of bs) {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` ${head}`, ...rest);\n }\n }\n out.push('');\n out.push(` rejections (${v.rejections.length}) — claimed bridges the atlas refutes:`);\n if (v.rejections.length === 0) out.push(' none recorded');\n for (const r of v.rejections) out.push(` ${r.premises.join(' + ')} -x[${r.claimed}]-> ${r.conclusion} (${r.id}): ${r.reason}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n/** Render a multi-route atlas view as human-readable CLI output lines. */\nexport function routesText(v: RoutesView): string[] {\n const out = [`\\nAll routes — ${v.from} → ${v.to} [source: ${v.source}]`];\n const c = v.count;\n if (v.from === v.to) {\n out.push(' the endpoints are the same model: the route is empty and composes nothing.');\n return out;\n }\n const scope = c.exhausted\n ? `${c.shown} simple route(s): the search ran out of routes, so these are all of them`\n : (c.stoppedBy === 'limit'\n ? `the first ${c.shown} simple routes: the search stopped at the limit of ${c.limit} (--max-routes), so MORE exist; `\n : `${c.shown} simple route(s) found before the search exhausted its work budget; whether more exist is UNKNOWN; `) +\n `every route of at most ${c.completeThrough} bridge(s) is among these, and longer ones may be missing`;\n out.push(` ${scope} — ${v.selection}`);\n out.push(\n ` shown: ${v.denominator.bridges.shown} of ${v.denominator.bridges.of} atlas bridges, ` +\n `${v.denominator.models.shown} of ${v.denominator.models.of} models, over the routes shown`,\n );\n if (c.shown === 0) {\n out.push(' no chain of bridges connects these models (only an exact equivalence is followed in both directions).');\n return out;\n }\n const reasons = Object.entries(v.claims.noClaim).map(([r, n]) => `${n} '${r}'`);\n out.push(\n ` route claims: ${v.claims.bound} carry a bound; ${c.shown - v.claims.bound} carry no composite claim` +\n (reasons.length === 0 ? '' : ` (${reasons.join(', ')})`),\n );\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n const byId = new Map(v.bridges.map((b) => [b.id, b] as const));\n v.routes.forEach((r, i) => {\n out.push('');\n const hops = r.bridges.map((id, k) => ` --[${byId.get(id)!.relation}: ${id}]--> ${r.models[k + 1]}`).join('');\n out.push(` route ${i + 1} (${r.bridges.length} bridge(s))${r.reported ? ' — the route `upt path` reports' : ''}:`);\n out.push(` ${r.models[0]}${hops}`);\n out.push(...compositionLines(r.composition, r.bridges.map((id) => byId.get(id)!.relation), ' '));\n });\n out.push('');\n out.push(` bridges on these routes (${v.bridges.length}), each once:`);\n for (const b of v.bridges) {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push('');\n out.push(' models on these routes, with the equations each records:');\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n/** Render an observable atlas view as human-readable CLI output lines. */\nexport function observableText(v: ObservableView): string[] {\n const d = v.denominator.bridges;\n const out = [`\\nObservable map — '${v.observable}' [source: ${v.source}]`];\n out.push(\n ` of ${d.of} atlas bridges: ${d.preserves} record it as preserved, ${d.translates} declare a bound translation into it, ` +\n `${d.doesNotPreserve} record it as NOT preserved, ${d.recordsNothing} record nothing about it (an absent record, not a finding)`,\n );\n out.push(` match: ${v.match}`);\n const legend = formatAtlasFilterLegend(v.filter);\n if (legend !== null) out.push(` ${legend}`);\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n out.push('');\n out.push(` bridges that preserve or translate it (${v.bridges.length}):`);\n if (v.bridges.length === 0) out.push(' none');\n for (const b of v.bridges) {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` ${head}`, ...rest);\n if (b.preservesMatched.length > 0) out.push(` preserves (recorded): ${b.preservesMatched.join('; ')}`);\n if (b.translationsMatched.length > 0) out.push(` bound translation declared into: ${b.translationsMatched.join(', ')}`);\n }\n out.push('');\n out.push(` bridges that record it as NOT preserved (${v.notPreserved.length}):`);\n if (v.notPreserved.length === 0) out.push(' none');\n for (const b of v.notPreserved) out.push(` ${b.id} (${b.relation}) [${b.family}]: does not preserve ${b.matched.join('; ')}`);\n out.push('');\n out.push(` models these bridges connect (${v.denominator.models.shown} of ${v.denominator.models.of}):`);\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n// ── diagrams ───────────────────────────────────────────────────────────────\n\nconst mm = (s: string): string =>\n s.replace(/\\r\\n|\\r|\\n/g, ' ').replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\nconst dq = (s: string): string => s.replace(/\\r\\n|\\r|\\n/g, ' ').replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n\ninterface Diagram {\n title: string;\n models: ModelView[];\n bridges: BridgeView[];\n /** Bridge ids drawn as the step where composition yields no composite claim. */\n breaks: Set<string>;\n}\n\n/** Any atlas map view that can be rendered as text or a diagram. */\nexport type AtlasView = RouteView | RoutesView | FamilyView | ObservableView;\n\n/** The one-line denominator every diagram carries in its title. */\nexport function viewLegend(v: AtlasView): string {\n const tail = v.witnessResults === undefined ? '' : `; witness results: ${MODE_LABEL[v.witnessResults.mode]}`;\n if (v.view === 'route') {\n const d = v.denominator;\n return (\n `route ${v.from} → ${v.to}: ${d.bridges.shown} of ${d.bridges.of} atlas bridges, ${d.models.shown} of ${d.models.of} models ` +\n `[source: ${v.source}; equation links: ${LINK_SOURCE}${tail}]`\n );\n }\n if (v.view === 'routes') {\n const d = v.denominator;\n const c = v.count;\n const scope = c.exhausted ? `all ${c.shown} simple routes` : `the first ${c.shown} simple routes (search stopped by its ${c.stoppedBy}; more may exist)`;\n return (\n `routes ${v.from} → ${v.to}: ${scope}, over ${d.bridges.shown} of ${d.bridges.of} atlas bridges and ${d.models.shown} of ` +\n `${d.models.of} models [source: ${v.source}; equation links: ${LINK_SOURCE}${tail}]`\n );\n }\n if (v.view === 'observable') {\n const d = v.denominator.bridges;\n const f = formatAtlasFilterLegend(v.filter);\n return (\n `observable '${v.observable}': ${v.bridges.length} bridge(s) shown; of ${d.of} atlas bridges ${d.preserves} record it preserved, ` +\n `${d.translates} translate into it, ${d.doesNotPreserve} record it NOT preserved, ${d.recordsNothing} record nothing ` +\n `[source: ${v.source}, recorded preserves/doesNotPreserve text and bound translations; equation links: ${LINK_SOURCE}${tail}]` +\n (f === null ? '' : ` — ${f}`)\n );\n }\n const d = v.denominator;\n const f = formatAtlasFilterLegend(v.filter);\n return (\n `family ${v.family}: ${d.models.shown} of ${d.models.of} atlas models, ${d.bridgesFiled.shown} filed + ` +\n `${d.bridgesTouching.shown} touching of ${d.bridgesFiled.of} atlas bridges [source: ${v.source}; equation links: ${LINK_SOURCE}${tail}]` +\n (f === null ? '' : ` — ${f}`)\n );\n}\n\nfunction diagramOf(v: AtlasView): Diagram {\n if (v.view === 'route') {\n const steps = v.steps ?? [];\n const br = v.composition.breaksAt;\n return { title: viewLegend(v), models: v.models, bridges: steps, breaks: new Set(br === null ? [] : [steps[br]!.id]) };\n }\n // A route-specific break is not a property of a bridge shared by several routes, so none is drawn.\n return { title: viewLegend(v), models: v.models, bridges: v.bridges, breaks: new Set() };\n}\n\nfunction idMaker(): (prefix: string, key: string) => string {\n const seen = new Map<string, string>();\n const used = new Set<string>();\n return (prefix, key) => {\n const k = `${prefix}:${key}`;\n const hit = seen.get(k);\n if (hit !== undefined) return hit;\n const base = `${prefix}_${key.replace(/[^A-Za-z0-9]/g, '_')}`;\n let id = base;\n for (let n = 1; used.has(id); n++) id = `${base}_${n}`;\n used.add(id);\n seen.set(k, id);\n return id;\n };\n}\n\n/** Models not in the view but named by a drawn bridge (a touching bridge's far end). */\nfunction endpointsOutside(d: Diagram): string[] {\n const inView = new Set(d.models.map((m) => m.id));\n return [...new Set(d.bridges.flatMap((b) => [...b.premises.map((p) => p.id), b.conclusion.id]))].filter((id) => !inView.has(id));\n}\n\nfunction edgeLabel(b: BridgeView, breaks: boolean): string {\n return `${b.relation} (${b.id})${breaks ? ' — no composite claim from here' : ''}`;\n}\n\n/** Render an atlas map view as a Mermaid flowchart. */\nexport function toMermaid(v: AtlasView): string {\n const d = diagramOf(v);\n const id = idMaker();\n // The title carries the observable the user typed, so a line break in it must not end the comment.\n const out = ['flowchart LR', `%% ${d.title.replace(/\\r\\n|\\r|\\n/g, ' ')}`, ` legend[\"${mm(d.title)}\"]:::legend`];\n for (const m of d.models) out.push(` ${id('m', m.id)}[\"${mm(`${m.id}: ${m.dynamics}`)}\"]:::model`);\n for (const m of endpointsOutside(d)) out.push(` ${id('m', m)}[\"${mm(m)}\"]:::outside`);\n // linkStyle addresses links by definition order, so the bridge links are\n // emitted before any canonicalRef link.\n const breakIdx: number[] = [];\n let link = 0;\n for (const b of d.bridges) {\n const arrow = b.relation === 'exact-equivalence' ? '<-->' : '-->';\n for (const p of b.premises) {\n if (d.breaks.has(b.id)) breakIdx.push(link);\n link++;\n out.push(` ${id('m', p.id)} ${arrow}|\"${mm(edgeLabel(b, d.breaks.has(b.id)))}\"| ${id('m', b.conclusion.id)}`);\n }\n }\n for (const m of d.models) {\n for (const l of m.equationLinks) {\n out.push(` ${id('c', l.id)}([\"${mm(l.name === null ? l.id : `${l.id}: ${l.formula}`)}\"]):::equation`);\n out.push(` ${id('m', m.id)} -.->|\"canonicalRef\"| ${id('c', l.id)}`);\n }\n }\n for (const i of breakIdx) out.push(` linkStyle ${i} stroke:#c0392b,stroke-width:2px`);\n out.push(' classDef model fill:#cfe3f7,stroke:#3a6ea5');\n out.push(' classDef outside fill:#ffffff,stroke:#999999,stroke-dasharray:4 3');\n out.push(' classDef equation fill:#f3f0e7,stroke:#8d7b4f,stroke-dasharray:4 3');\n out.push(' classDef legend fill:#ffffff,stroke:#333333');\n return out.join('\\n') + '\\n';\n}\n\n/** Render an atlas map view as a DOT graph. */\nexport function toDot(v: AtlasView): string {\n const d = diagramOf(v);\n const id = idMaker();\n const out = [\n 'digraph AtlasMap {',\n ` label=\"${dq(d.title)}\";`,\n ' rankdir=LR;',\n ' node [fontname=\"Helvetica\"];',\n ];\n for (const m of d.models) out.push(` ${id('m', m.id)} [shape=box,label=\"${dq(`${m.id}: ${m.dynamics}`)}\"];`);\n for (const m of endpointsOutside(d)) out.push(` ${id('m', m)} [shape=box,style=dashed,label=\"${dq(m)}\"];`);\n for (const b of d.bridges) {\n const brk = d.breaks.has(b.id);\n const attrs = [\n `label=\"${dq(edgeLabel(b, brk))}\"`,\n ...(b.relation === 'exact-equivalence' ? ['dir=both'] : []),\n ...(brk ? ['color=\"#c0392b\"', 'penwidth=2'] : []),\n ];\n for (const p of b.premises) out.push(` ${id('m', p.id)} -> ${id('m', b.conclusion.id)} [${attrs.join(',')}];`);\n }\n for (const m of d.models) {\n for (const l of m.equationLinks) {\n out.push(` ${id('c', l.id)} [shape=ellipse,style=dashed,label=\"${dq(l.name === null ? l.id : `${l.id}: ${l.formula}`)}\"];`);\n out.push(` ${id('m', m.id)} -> ${id('c', l.id)} [style=dashed,label=\"canonicalRef\"];`);\n }\n }\n out.push('}');\n return out.join('\\n') + '\\n';\n}\n"]}
1
+ {"version":3,"file":"_atlas-map.js","sourceRoot":"","sources":["../../../src/cli/commands/_atlas-map.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `upt map --route=FROM,TO` and `upt map --family=NAME` — focused maps of the\n * ATLAS (models and the bridges between them), as opposed to the rest of `map`,\n * which draws the equation graph by shared quantities. The two graphs are\n * different facts: a shared quantity is connectivity, a bridge is a recorded\n * transformation between models, and neither is drawn as the other.\n *\n * Every view states its denominator (how many of the atlas's models and\n * bridges it shows) and its source.\n *\n * ## The join to the equation graph\n *\n * A model is joined to a canonical equation ONLY through the model's own\n * `canonicalRefs` field. Nothing is inferred from a shared dimension, a shared\n * quantity or a similar name, and a model with no recorded reference is shown\n * as having none recorded — an absent link, not a finding that none exists.\n *\n * ## Evidence, and the witness results it is derived from\n *\n * Which witnesses pass is decided by runs the view may or may not observe.\n * Every tag `deriveEvidence` emits is monotone in the passing set except\n * `proposed`, which is antitone, so deriving under the witnesses KNOWN to pass\n * and under those plus every witness with NO observed result brackets every\n * possible result: a tag in both is derived whatever the unobserved results\n * are, a tag in neither cannot be, and a tag in exactly one is undecided here.\n * An undecided bridge is counted apart from one that does not match.\n *\n * With no results source every witness is unobserved. `--stored` observes the\n * committed artifact (`data/atlas/witness-results.json`); `--run` observes the\n * in-process registered witnesses, run by this invocation. Only a `'checked'`\n * row is a pass. A `'refuted'` or `'unresolved'` row is observed and not\n * passing, and the two are counted apart; a witness with no row stays\n * unobserved, whatever its name.\n */\nimport { execFileSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport type { CommandCtx } from '../command.js';\nimport { CliError } from '../errors.js';\nimport { publishedUrl } from '../published-url.js';\nimport { repoRoot, STORED_RESULTS_PATH, storedResultsFile } from '../stored-results.js';\nimport type { AppliedTransport, AtlasBridge, AtlasModel } from '../../cli-api.js';\nimport type { EvidenceTag, RelationType } from '../../atlas/types.js';\nimport { showInequality } from './regime.js';\nimport {\n claimReport,\n explainsRefusal,\n missingForComposite,\n routeClaim,\n selectRoute,\n transportReport,\n type TransportReport,\n} from './_atlas-route.js';\n\ntype Api = CommandCtx['api'];\n\nconst ATLAS_SOURCE = `atlas (the models and bridges of every family, ${publishedUrl('src/atlas/families.ts')})`;\nconst LINK_SOURCE = 'AtlasModel.canonicalRefs';\nconst NO_LINK =\n 'no canonical equation recorded in its canonicalRefs (an absent link, not a finding that none exists; ' +\n 'nothing is inferred from shared quantities or names)';\nconst EPISTEMICS =\n 'bridges are recorded transformations between models; the equation links are only those a model records. ' +\n 'A route existing is not a warrant: the composed claim is.';\n\n/** A canonical equation recorded for an atlas model, with its graph edge when present. */\nexport interface EquationLink {\n id: string;\n name: string | null;\n formula: string | null;\n /** The canonical equation's edge in the equation graph, or null when the graph has none by that id. */\n graphEdge: { sources: string[]; target: string } | null;\n}\n\n/** An atlas model row with its family and recorded canonical-equation links. */\nexport interface ModelView {\n id: string;\n family: string;\n dynamics: string;\n equationLinks: EquationLink[];\n}\n\n/** A bridge's derived evidence tags and witness observations for the current view. */\nexport interface EvidenceView {\n /** Derived whatever the unobserved witness results are. */\n derived: EvidenceTag[];\n /** Derived under some unobserved witness results and not others. */\n undecided: EvidenceTag[];\n formalRef: { system: string; fidelity: string; kind: string; url: string } | null;\n witnesses: number;\n /** Present only when the view reads a witness-results source. */\n results?: WitnessOutcomes;\n}\n\n// ── witness results ────────────────────────────────────────────────────────\n\n/** The witness-result source a view can observe. */\nexport type ResultsMode = 'stored' | 'run';\n\n/** One stored or freshly run witness result for an atlas record. */\nexport interface WitnessResultRow {\n recordId: string;\n witnessId: string;\n status: 'checked' | 'refuted' | 'unresolved';\n reason?: string;\n}\n\n/** Where stored witness results came from and whether the artifact changed since its last commit. */\nexport interface StoredProvenance {\n /** GitHub blob URL of the artifact. The file ships in `data/`; a checkout or install without it has no stored results. */\n url: string;\n schemaVersion: string;\n /** What the artifact itself records about when it was produced. */\n carries: string;\n /** The last commit touching the file, read from git; null when git cannot say. */\n lastCommit: { hash: string; date: string } | null;\n /** Whether the working-tree file differs from that commit; null when git cannot say. */\n modifiedSinceCommit: boolean | null;\n}\n\n/** The witness-result rows a view observed, with provenance for their source. */\nexport interface WitnessResults {\n mode: ResultsMode;\n /** stored: the artifact and what is known of when it was made. run: what ran. */\n provenance: StoredProvenance | { ran: string; registered: number };\n rows: readonly WitnessResultRow[];\n}\n\n/** One bridge's witnesses, split by what the results source observed of each. */\nexport interface WitnessOutcomes {\n source: ResultsMode;\n checked: string[];\n refuted: string[];\n unresolved: { id: string; reason: string | null }[];\n /** No row in the source: a name, not a result. */\n notObserved: string[];\n}\n\nconst ARTIFACT_CARRIES = 'the artifact records no commit or date of its own';\n\nfunction git(args: string[], cwd: string): string | null {\n try {\n return execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 5000 }).trim();\n } catch {\n // git absent, no repository here (an installed package has none), a path git does not know, or\n // a call that ran past its limit: each is \"git cannot say\", which the callers print as such.\n return null;\n }\n}\n\n/**\n * The committed witness-results artifact. It is a repository file, not shipped\n * in the package, so its absence is refused rather than read as \"no results\":\n * an empty source would render every tag exactly as the default view does,\n * under a label claiming it had been observed.\n */\nexport function loadStoredResults(command = 'upt map', file = storedResultsFile()): WitnessResults {\n const root = repoRoot();\n let raw: string;\n try {\n raw = readFileSync(file, 'utf8');\n } catch (e) {\n const code = e instanceof Error && 'code' in e && typeof e.code === 'string' ? e.code : undefined;\n // Only an absent file is \"not present here\". A file that is there and cannot be read\n // (a directory, no permission) is another fact, and the refusal says which.\n if (code !== 'ENOENT') {\n throw new CliError(\n `${command}: --stored could not read ${publishedUrl(STORED_RESULTS_PATH)} (${code ?? 'read error'}: ${e instanceof Error ? e.message : String(e)}). ` +\n '--run executes the in-process registered witnesses instead',\n );\n }\n throw new CliError(\n `${command}: --stored reads ${publishedUrl(STORED_RESULTS_PATH)}, which is not present here (a checkout or install ` +\n 'without data/). --run executes the in-process registered witnesses instead',\n );\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (e) {\n // A corrupt artifact is refused as such, not thrown through as a SyntaxError with a stack.\n throw new CliError(`${command}: ${publishedUrl(STORED_RESULTS_PATH)} is not valid JSON (${e instanceof Error ? e.message : String(e)})`);\n }\n // `null`, a list or a number is valid JSON and is not the artifact.\n const artifact: { schemaVersion?: unknown; results?: unknown } =\n typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) ? parsed : {};\n if (artifact.schemaVersion !== '0' || !Array.isArray(artifact.results)) {\n throw new CliError(\n `${command}: ${publishedUrl(STORED_RESULTS_PATH)} has schemaVersion '${String(artifact.schemaVersion)}'; this command reads '0'`,\n );\n }\n const rows = artifact.results.map((r: unknown, i): WitnessResultRow => {\n const row: Record<string, unknown> = typeof r === 'object' && r !== null && !Array.isArray(r) ? { ...r } : {};\n const { recordId, witnessId, status, reason } = row;\n if (\n typeof recordId !== 'string' ||\n typeof witnessId !== 'string' ||\n (status !== 'checked' && status !== 'refuted' && status !== 'unresolved') ||\n (reason !== undefined && typeof reason !== 'string')\n ) {\n throw new CliError(\n `${command}: ${publishedUrl(STORED_RESULTS_PATH)} results[${i}] is not a witness result ` +\n '(recordId and witnessId are text, status is checked, refuted or unresolved)',\n );\n }\n return { recordId, witnessId, status, ...(reason === undefined ? {} : { reason }) };\n });\n const log = git(['log', '-1', '--format=%H %cI', '--', STORED_RESULTS_PATH], root);\n const [hash, date] = log === null || log === '' ? [] : log.split(' ');\n const lastCommit = hash !== undefined && date !== undefined ? { hash, date } : null;\n const status = lastCommit === null ? null : git(['status', '--porcelain', '--', STORED_RESULTS_PATH], root);\n return {\n mode: 'stored',\n provenance: {\n url: publishedUrl(STORED_RESULTS_PATH),\n schemaVersion: artifact.schemaVersion,\n carries: ARTIFACT_CARRIES,\n lastCommit,\n modifiedSinceCommit: status === null ? null : status !== '',\n },\n rows,\n };\n}\n\n/**\n * Run the in-process registered witnesses of `bridgeIds`, now, and those of\n * the norm transports the bridges declare (registered under the transport id).\n */\nexport async function runResults(api: Api, bridgeIds: ReadonlySet<string>): Promise<WitnessResults> {\n const transportIds = api.ATLAS_FAMILIES.flatMap((f) => f.bridges)\n .filter((b) => bridgeIds.has(b.id))\n .flatMap((b) => (b.normTransports ?? []).map((nt) => nt.id));\n const ids = new Set([...bridgeIds, ...transportIds]);\n const registered = api.WITNESS_REGISTRY.filter((e) => ids.has(e.recordId));\n const artifact = await api.runWitnessRegistry(registered);\n return {\n mode: 'run',\n provenance: { ran: 'the registered witnesses, in-process, by this invocation', registered: registered.length },\n rows: artifact.results.map((r) => ({\n recordId: r.recordId,\n witnessId: r.witnessId,\n status: r.status,\n ...(r.reason === undefined ? {} : { reason: r.reason }),\n })),\n };\n}\n\nfunction outcomes(b: AtlasBridge, results: WitnessResults): WitnessOutcomes {\n const rows = results.rows.filter((r) => r.recordId === b.id);\n const o: WitnessOutcomes = { source: results.mode, checked: [], refuted: [], unresolved: [], notObserved: [] };\n for (const w of b.witnesses) {\n const row = rows.find((r) => r.witnessId === w.id);\n if (row === undefined) o.notObserved.push(w.id);\n else if (row.status === 'checked') o.checked.push(w.id);\n else if (row.status === 'refuted') o.refuted.push(w.id);\n else o.unresolved.push({ id: w.id, reason: row.reason ?? null });\n }\n return o;\n}\n\n/** Aggregate witness result counts over the bridges a view shows. */\nexport interface ResultsTally {\n mode: ResultsMode;\n provenance: WitnessResults['provenance'];\n /** Witnesses of the bridges this view shows, by what the source observed. */\n witnesses: { checked: number; refuted: number; unresolved: number; notObserved: number };\n}\n\nfunction tally(results: WitnessResults | null, bridges: readonly BridgeView[]): ResultsTally | undefined {\n if (results === null) return undefined;\n const seen = new Map(bridges.map((b) => [b.id, b.evidence.results!] as const));\n const sum = (f: (o: WitnessOutcomes) => number) => [...seen.values()].reduce((n, o) => n + f(o), 0);\n return {\n mode: results.mode,\n provenance: results.provenance,\n witnesses: {\n checked: sum((o) => o.checked.length),\n refuted: sum((o) => o.refuted.length),\n unresolved: sum((o) => o.unresolved.length),\n notObserved: sum((o) => o.notObserved.length),\n },\n };\n}\n\n/** The atlas bridge data a map view renders after joining models, evidence, regime and bounds. */\nexport interface BridgeView {\n id: string;\n family: string;\n relation: RelationType;\n premises: { id: string; family: string }[];\n conclusion: { id: string; family: string };\n transformation: string;\n assumptions: string[];\n regime: { inequalities: string[]; vacuous: boolean };\n bound: { K: number; delta: number; norm: string; horizon: string } | null;\n evidence: EvidenceView;\n}\n\nfunction allModels(api: Api): Map<string, AtlasModel> {\n return new Map(api.ATLAS_FAMILIES.flatMap((f) => f.models.map((m) => [m.id, m] as const)));\n}\n\nfunction totals(api: Api): { families: number; models: number; bridges: number } {\n return {\n families: api.ATLAS_FAMILIES.length,\n models: api.ATLAS_FAMILIES.reduce((n, f) => n + f.models.length, 0),\n bridges: api.ATLAS_FAMILIES.reduce((n, f) => n + f.bridges.length, 0),\n };\n}\n\nfunction modelView(api: Api, m: AtlasModel): ModelView {\n return {\n id: m.id,\n family: m.family,\n dynamics: m.dynamics,\n equationLinks: m.canonicalRefs.map((ref) => {\n const eq = api.CANONICAL_EQUATIONS.find((e) => e.id === ref);\n const edge = api.CANONICAL_GRAPH.find((e) => e.id === ref);\n return {\n id: ref,\n name: eq?.name ?? null,\n formula: eq?.formula_latex ?? null,\n graphEdge: edge === undefined ? null : { sources: edge.sources.map((q) => q.name), target: edge.target.name },\n };\n }),\n };\n}\n\nfunction evidenceView(api: Api, b: AtlasBridge, results: WitnessResults | null): EvidenceView {\n const o = results === null ? null : outcomes(b, results);\n const passing = o === null ? api.NO_PASSING_WITNESSES : new Set(o.checked);\n const open = o === null ? b.witnesses.map((w) => w.id) : o.notObserved;\n const low = api.deriveEvidence(b, passing);\n const high = api.deriveEvidence(b, new Set([...passing, ...open]));\n const tags = [...new Set([...low, ...high])].sort();\n return {\n derived: tags.filter((t) => low.has(t) && high.has(t)),\n undecided: tags.filter((t) => low.has(t) !== high.has(t)),\n formalRef:\n b.formalRef === undefined\n ? null\n : {\n system: b.formalRef.system,\n fidelity: b.formalRef.fidelity,\n kind: b.formalRef.kind,\n url: b.formalRef.url,\n },\n witnesses: b.witnesses.length,\n ...(o === null ? {} : { results: o }),\n };\n}\n\nfunction bridgeView(\n api: Api,\n b: AtlasBridge,\n family: string,\n models: Map<string, AtlasModel>,\n results: WitnessResults | null = null,\n): BridgeView {\n const at = (id: string) => ({ id, family: models.get(id)?.family ?? 'UNKNOWN' });\n return {\n id: b.id,\n family,\n relation: b.relation,\n premises: b.premises.map(at),\n conclusion: at(b.conclusion),\n transformation: b.transformation,\n assumptions: [...b.sideConditions],\n regime: { inequalities: b.regime.inequalities.map(showInequality), vacuous: b.regime.inequalities.length === 0 },\n bound:\n b.bound === undefined\n ? null\n : { K: b.bound.K, delta: b.bound.delta, norm: b.bound.norm, horizon: b.bound.horizon },\n evidence: evidenceView(api, b, results),\n };\n}\n\nfunction familyOfBridge(api: Api, id: string): string {\n return api.ATLAS_FAMILIES.find((f) => f.bridges.some((b) => b.id === id))?.family ?? 'UNKNOWN';\n}\n\nfunction linkSummary(models: readonly ModelView[]): { source: string; withLink: number; withoutLink: number; of: number } {\n const withLink = models.filter((m) => m.equationLinks.length > 0).length;\n return { source: LINK_SOURCE, withLink, withoutLink: models.length - withLink, of: models.length };\n}\n\n// ── route ──────────────────────────────────────────────────────────────────\n\n/** The focused view for one selected atlas route and the claim its composition makes. */\nexport interface RouteView {\n view: 'route';\n from: string;\n to: string;\n source: string;\n /** null: no chain of bridges connects the endpoints. */\n steps: BridgeView[] | null;\n models: ModelView[];\n denominator: { bridges: { shown: number; of: number }; models: { shown: number; of: number } };\n selection: string;\n composition: {\n /** The running composite after each step; null once a step has composed to no claim. */\n running: { after: string; relation: RelationType | 'no-composite-claim' | null }[];\n /** Index into `steps` of the step whose composition the table declines, or null. */\n breaksAt: number | null;\n claim: ReturnType<typeof claimReport> | null;\n missing: string[];\n /** The declared norm transports that carried the bound across exact steps, with their witness results. */\n transports: (TransportReport & { result: TransportResult })[];\n /** The composite claim's evidence (ADR §4); null when the route makes no composite claim. */\n evidence: CompositeEvidenceView | null;\n };\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nconst SELECTION =\n 'the shortest route by bridge count (the one `upt path` reports); other routes between the endpoints, if any, are not shown';\n\n/** Parse a FROM,TO route flag into atlas model ids. */\nexport function parseRoute(raw: string): [string, string] {\n const [from, to, ...extra] = raw.split(',').map((s) => s.trim());\n if (from === undefined || to === undefined || extra.length > 0 || from === '' || to === '') {\n throw new CliError(`upt map: --route='${raw}' must be FROM,TO (two model ids), e.g. --route=model-pendulum,model-lc`);\n }\n return [from, to];\n}\n\nfunction checkEndpoints(models: Map<string, AtlasModel>, from: string, to: string): void {\n for (const id of [from, to]) {\n if (!models.has(id)) {\n throw new CliError(`upt map: '${id}' is not a model of any atlas family (run \\`upt map --family=NAME\\` to list one family's models)`);\n }\n }\n}\n\n/** The models a route visits, in route order: an exact equivalence may be walked conclusion → premise. */\nfunction routeModelIds(from: string, bridges: readonly AtlasBridge[]): string[] {\n const ids = [from];\n for (const b of bridges) {\n const at = ids[ids.length - 1]!;\n ids.push(b.conclusion === at && b.relation === 'exact-equivalence' ? b.premises[0]! : b.conclusion);\n }\n return ids;\n}\n\n/** What a results source observed of a transport's witness; 'no result' when it has no row or there is no source. */\nexport type TransportResult = 'checked' | 'refuted' | 'unresolved' | 'no result';\n\n/** The composite evidence of a bound route: the tags derived, the tags left undecided, and the rule that derived them. */\nexport interface CompositeEvidenceView {\n /** Derived whatever the unobserved results are: never stronger than the weakest part. */\n derived: EvidenceTag[];\n undecided: EvidenceTag[];\n rule: string;\n}\n\nconst COMPOSITE_RULE =\n 'derived from the parts (every step and every transport applied): a positive tag survives only if every part ' +\n \"carries it, contradicted if any part does; a transport contributes its basis when its witness checks, else 'proposed' \" +\n `(${publishedUrl('docs/planning/ADR-transported-norm-composition.md')} §4)`;\n\nfunction transportResult(nt: { id: string; witness: { id: string } }, results: WitnessResults | null): TransportResult {\n const row = results?.rows.find((r) => r.recordId === nt.id && r.witnessId === nt.witness.id);\n return row === undefined ? 'no result' : row.status;\n}\n\n/** The composite evidence of a bound route, bracketed over the unobserved witness results like one bridge's. */\nfunction compositeEvidence(\n api: Api,\n bridges: readonly AtlasBridge[],\n transports: readonly AppliedTransport[],\n results: WitnessResults | null,\n): CompositeEvidenceView {\n const lows: ReadonlySet<EvidenceTag>[] = [];\n const highs: ReadonlySet<EvidenceTag>[] = [];\n for (const b of bridges) {\n const o = results === null ? null : outcomes(b, results);\n const passing = o === null ? api.NO_PASSING_WITNESSES : new Set(o.checked);\n const open = o === null ? b.witnesses.map((w) => w.id) : o.notObserved;\n lows.push(api.deriveEvidence(b, passing));\n highs.push(api.deriveEvidence(b, new Set([...passing, ...open])));\n }\n for (const { transport } of transports) {\n const r = transportResult(transport, results);\n lows.push(new Set<EvidenceTag>([r === 'checked' ? transport.basis : 'proposed']));\n highs.push(new Set<EvidenceTag>([r === 'checked' || r === 'no result' ? transport.basis : 'proposed']));\n }\n const low = api.deriveCompositeEvidence(lows);\n const high = api.deriveCompositeEvidence(highs);\n const tags = [...new Set([...low, ...high])].sort();\n return {\n derived: tags.filter((t) => low.has(t) && high.has(t)),\n undecided: tags.filter((t) => low.has(t) !== high.has(t)),\n rule: COMPOSITE_RULE,\n };\n}\n\n/** The composition table folded along a non-empty route, and what the route supports. */\nfunction composeSteps(api: Api, bridges: readonly AtlasBridge[], results: WitnessResults | null): RouteView['composition'] {\n const running: RouteView['composition']['running'] = [];\n let breaksAt: number | null = null;\n let rel: RelationType | 'no-composite-claim' | null = bridges[0]!.relation;\n running.push({ after: bridges[0]!.id, relation: rel });\n for (let i = 1; i < bridges.length; i++) {\n if (rel === null || rel === 'no-composite-claim') rel = null;\n else {\n rel = api.composeRelation(rel, bridges[i]!.relation);\n if (rel === 'no-composite-claim') breaksAt = i;\n }\n running.push({ after: bridges[i]!.id, relation: rel });\n }\n const claim = routeClaim(api, bridges);\n const missing = explainsRefusal(claim) ? missingForComposite(api, bridges) : [];\n const applied = claim.kind === 'bound' ? (claim.transports ?? []) : [];\n const transports = applied.map((a) => ({ ...transportReport(a), result: transportResult(a.transport, results) }));\n const evidence = claim.kind === 'bound' ? compositeEvidence(api, bridges, applied, results) : null;\n return { running, breaksAt, claim: claimReport(claim), missing, transports, evidence };\n}\n\n/** Build the focused atlas route view for two model ids. */\nexport function buildRouteView(api: Api, from: string, to: string, results: WitnessResults | null = null): RouteView {\n const models = allModels(api);\n checkEndpoints(models, from, to);\n const { bridges } = selectRoute(api, from, to, 'map');\n const t = totals(api);\n const steps = bridges === null ? null : bridges.map((b) => bridgeView(api, b, familyOfBridge(api, b.id), models, results));\n const routeModels = bridges === null ? [from, to] : routeModelIds(from, bridges);\n const mv = routeModels.map((id) => modelView(api, models.get(id)!));\n const { running, breaksAt, claim, missing, transports, evidence } =\n bridges === null || bridges.length === 0\n ? { running: [], breaksAt: null, claim: null, missing: [], transports: [], evidence: null }\n : composeSteps(api, bridges, results);\n const witnessResults = tally(results, steps ?? []);\n\n return {\n view: 'route',\n from,\n to,\n source: ATLAS_SOURCE,\n steps,\n models: mv,\n denominator: {\n bridges: { shown: steps?.length ?? 0, of: t.bridges },\n models: { shown: mv.length, of: t.models },\n },\n selection: SELECTION,\n composition: { running, breaksAt, claim, missing, transports, evidence },\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── all routes ─────────────────────────────────────────────────────────────\n\nexport const DEFAULT_MAX_ROUTES = 20;\nexport const MAX_ROUTES_CEILING = 1000;\n\n/** The multi-route view between two atlas models, including composition outcomes for each route. */\nexport interface RoutesView {\n view: 'routes';\n from: string;\n to: string;\n source: string;\n routes: {\n /** Bridge ids, in route order. */\n bridges: string[];\n /** Model ids, in route order. */\n models: string[];\n composition: RouteView['composition'];\n /** True for the route `upt path` (and `map --route` without --all-routes) reports. */\n reported: boolean;\n }[];\n /** Each bridge used by a shown route, once, in atlas order. */\n bridges: BridgeView[];\n models: ModelView[];\n count: {\n shown: number;\n limit: number;\n /** True: the search ran out of routes, so `shown` is every simple route. */\n exhausted: boolean;\n /** When not exhausted: every route of at most this many bridges is among those found. */\n completeThrough: number | null;\n /** When not exhausted: the route limit, or the search's work budget. */\n stoppedBy: 'limit' | 'budget' | null;\n };\n claims: { bound: number; noClaim: Record<string, number> };\n denominator: { bridges: { shown: number; of: number }; models: { shown: number; of: number } };\n selection: string;\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nconst ROUTES_SELECTION =\n 'every simple route (no model visited twice), ordered by bridge count and then atlas order; the same traversal as ' +\n '`upt path`: an exact equivalence both ways, every other relation forward only, multi-premise bridges not followed';\n\n/** Build the simple-route atlas view between two model ids up to the requested limit. */\nexport function buildRoutesView(\n api: Api,\n from: string,\n to: string,\n limit: number,\n results: WitnessResults | null = null,\n): RoutesView {\n const models = allModels(api);\n checkEndpoints(models, from, to);\n const found = api.enumerateAtlasRoutes(from, to, limit);\n const reported = selectRoute(api, from, to, 'map').bridges;\n const reportedKey = reported === null ? null : reported.map((b) => b.id).join(' ');\n const routes = found.routes\n .filter((r) => r.length > 0)\n .map((r) => ({\n bridges: r.map((b) => b.id),\n models: routeModelIds(from, r),\n composition: composeSteps(api, r, results),\n reported: r.map((b) => b.id).join(' ') === reportedKey,\n }));\n const used = new Set(routes.flatMap((r) => r.bridges));\n const bridges = api.ATLAS_FAMILIES.flatMap((f) =>\n f.bridges.filter((b) => used.has(b.id)).map((b) => bridgeView(api, b, f.family, models, results)),\n );\n const visited = new Set(routes.flatMap((r) => r.models));\n const mv = [...models.values()].filter((m) => visited.has(m.id) || (routes.length === 0 && (m.id === from || m.id === to))).map((m) => modelView(api, m));\n const noClaim: Record<string, number> = {};\n for (const r of routes) {\n const c = r.composition.claim!;\n if (c.kind === 'no-claim') noClaim[c.reason] = (noClaim[c.reason] ?? 0) + 1;\n }\n const t = totals(api);\n const witnessResults = tally(results, bridges);\n return {\n view: 'routes',\n from,\n to,\n source: ATLAS_SOURCE,\n routes,\n bridges,\n models: mv,\n count: {\n shown: routes.length,\n limit,\n exhausted: found.exhausted,\n completeThrough: found.completeThrough,\n stoppedBy: found.stoppedBy,\n },\n claims: { bound: routes.filter((r) => r.composition.claim!.kind === 'bound').length, noClaim },\n denominator: { bridges: { shown: bridges.length, of: t.bridges }, models: { shown: mv.length, of: t.models } },\n selection: ROUTES_SELECTION,\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── observable ─────────────────────────────────────────────────────────────\n\n/** The observable-focused atlas view listing bridges that preserve, translate or reject a named observable. */\nexport interface ObservableView {\n view: 'observable';\n observable: string;\n source: string;\n match: string;\n /** Bridges recording the observable as preserved, or declaring a translation of their bound into it. */\n bridges: (BridgeView & { preservesMatched: string[]; translationsMatched: string[] })[];\n /** Bridges recording the observable as NOT preserved; a bridge may appear here and above. */\n notPreserved: { id: string; family: string; relation: RelationType; matched: string[] }[];\n models: ModelView[];\n denominator: {\n bridges: { preserves: number; translates: number; doesNotPreserve: number; recordsNothing: number; of: number };\n models: { shown: number; of: number };\n };\n filter: AtlasFilterStats | null;\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nconst OBSERVABLE_MATCH =\n \"a case-insensitive whole-word text match against each bridge's recorded `preserves` and `doesNotPreserve` strings \" +\n 'and the observable names of its declared bound translations; nothing is inferred from dimensions, quantities or ' +\n 'the transformation, and a bridge that records nothing about the observable is counted apart from one that records ' +\n 'it as not preserved';\n\nfunction wordMatcher(api: Api, term: string): (text: string) => boolean {\n const escaped = api.escapeRegExp(term);\n const re = new RegExp(`(^|[^\\\\p{L}\\\\p{N}])${escaped}($|[^\\\\p{L}\\\\p{N}])`, 'iu');\n return (text) => re.test(text);\n}\n\n/** Build an observable-focused atlas view by matching recorded observable text and translations. */\nexport function buildObservableView(\n api: Api,\n observable: string,\n filter: AtlasFilter,\n results: WitnessResults | null = null,\n): ObservableView {\n const term = observable.trim();\n if (term.length < 2) throw new CliError(`upt map: --observable='${observable}' must name an observable (two characters or more)`);\n const hit = wordMatcher(api, term);\n const models = allModels(api);\n const rows = api.ATLAS_FAMILIES.flatMap((f) => f.bridges.map((b) => ({ family: f.family, b })));\n const matched = rows.map(({ family, b }) => ({\n family,\n b,\n preserves: b.preserves.filter(hit),\n translations: api.translationsOf(b.id).map((x) => x.observable).filter(hit),\n doesNot: b.doesNotPreserve.filter(hit),\n }));\n const candidates = matched\n .filter((m) => m.preserves.length > 0 || m.translations.length > 0)\n .map((m) => ({ ...bridgeView(api, m.b, m.family, models, results), preservesMatched: m.preserves, translationsMatched: m.translations }));\n const filtering = filter.relation !== undefined || filter.evidence !== undefined;\n const verdicts = candidates.map((b) => (filtering ? judge(b, filter) : 'kept'));\n const kept = candidates.filter((_, i) => verdicts[i] === 'kept');\n const n = (v: string) => verdicts.filter((x) => x === v).length;\n const onKept = new Set(kept.flatMap((b) => [...b.premises.map((p) => p.id), b.conclusion.id]));\n const mv = [...models.values()].filter((m) => onKept.has(m.id)).map((m) => modelView(api, m));\n const t = totals(api);\n const witnessResults = tally(results, kept);\n return {\n view: 'observable',\n observable: term,\n source: ATLAS_SOURCE,\n match: OBSERVABLE_MATCH,\n bridges: kept,\n notPreserved: matched\n .filter((m) => m.doesNot.length > 0)\n .map((m) => ({ id: m.b.id, family: m.family, relation: m.b.relation, matched: m.doesNot })),\n models: mv,\n denominator: {\n bridges: {\n preserves: matched.filter((m) => m.preserves.length > 0).length,\n translates: matched.filter((m) => m.translations.length > 0).length,\n doesNotPreserve: matched.filter((m) => m.doesNot.length > 0).length,\n recordsNothing: matched.filter((m) => m.preserves.length + m.translations.length + m.doesNot.length === 0).length,\n of: t.bridges,\n },\n models: { shown: mv.length, of: t.models },\n },\n filter: filtering\n ? {\n ...filter,\n total: candidates.length,\n kept: kept.length,\n droppedNotMatching: n('not-matching'),\n droppedUndecided: n('undecided'),\n ...(results === null ? {} : { results: results.mode }),\n }\n : null,\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── atlas-wide evidence ────────────────────────────────────────────────────\n\n/** The atlas-wide evidence view of `upt atlas --evidence`: each bridge's derived evidence and the per-tag counts. */\nexport interface AtlasEvidenceView {\n view: 'atlas-evidence';\n source: string;\n denominator: { families: number; bridges: number; witnesses: number };\n bridges: { id: string; family: string; relation: RelationType; evidence: EvidenceView }[];\n /**\n * Per tag, over every atlas bridge: how many derive it whatever the unobserved\n * witness results are, and, apart, how many it is undecided on. Every tag is\n * listed, zero included; a bridge carries several tags, so no column sums to\n * the bridge count.\n */\n byTag: { tag: EvidenceTag; derived: number; undecided: number }[];\n /** Declared norm transports, whose witnesses are registered under the transport id. */\n normTransports: { id: string; bridge: string; witness: string; status: TransportResult }[];\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\n/** Every bridge of every family, with its derived evidence: the atlas-wide view of `upt atlas --evidence`. */\nexport function buildAtlasEvidenceView(api: Api, results: WitnessResults | null = null): AtlasEvidenceView {\n const models = allModels(api);\n const views = api.ATLAS_FAMILIES.flatMap((f) => f.bridges.map((b) => bridgeView(api, b, f.family, models, results)));\n const derived = api.summarizeEvidence(views.map((v) => new Set(v.evidence.derived)));\n const undecided = api.summarizeEvidence(views.map((v) => new Set(v.evidence.undecided)));\n const witnessResults = tally(results, views);\n return {\n view: 'atlas-evidence',\n source: ATLAS_SOURCE,\n denominator: {\n families: api.ATLAS_FAMILIES.length,\n bridges: views.length,\n witnesses: views.reduce((n, v) => n + v.evidence.witnesses, 0),\n },\n bridges: views.map((v) => ({ id: v.id, family: v.family, relation: v.relation, evidence: v.evidence })),\n byTag: api.ALL_EVIDENCE_TAGS.map((tag) => ({ tag, derived: derived.byTag[tag], undecided: undecided.byTag[tag] })),\n normTransports: api.ATLAS_FAMILIES.flatMap((f) => f.bridges).flatMap((b) =>\n (b.normTransports ?? []).map((nt) => ({ id: nt.id, bridge: b.id, witness: nt.witness.id, status: transportResult(nt, results) })),\n ),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics:\n 'evidence is derived from each record and the witness results the view observes, never read from a stored tag; ' +\n 'a tag is undecided when unobserved witness results could give it or withhold it. Only a checked witness is a pass.',\n };\n}\n\n/** The text lines `upt atlas --evidence` prints for the view `v`. */\nexport function atlasEvidenceText(v: AtlasEvidenceView): string[] {\n const d = v.denominator;\n const out = [`\\nAtlas evidence — ${d.bridges} bridges across ${d.families} families, ${d.witnesses} recorded witnesses [source: ${v.source}]`];\n const r = resultsLine(v.witnessResults);\n out.push(` ${r ?? 'witness results: none observed (every witness is a name, not a result); --stored reads the committed artifact, --run runs them now'}`);\n out.push(` by tag (bridges; a bridge carries several tags, so the counts do not sum to ${d.bridges}):`);\n for (const t of v.byTag) out.push(` ${t.tag.padEnd(22)} derived ${String(t.derived).padStart(2)} · undecided ${String(t.undecided).padStart(2)}`);\n for (const family of [...new Set(v.bridges.map((b) => b.family))]) {\n const bs = v.bridges.filter((b) => b.family === family);\n out.push(` ${family} (${bs.length} bridge${bs.length === 1 ? '' : 's'}):`);\n for (const b of bs) {\n out.push(` ${b.id} — ${b.relation}`);\n out.push(` ${evidenceLine(b.evidence, b.id)}`);\n if (b.evidence.results !== undefined) out.push(` ${outcomeLine(b.evidence.results)}`);\n }\n }\n out.push(` norm transports (${v.normTransports.length}):`);\n if (v.normTransports.length === 0) out.push(' none declared');\n for (const nt of v.normTransports) out.push(` ${nt.id} on ${nt.bridge}: witness ${nt.witness} — ${nt.status}`);\n out.push(' Refuted and unresolved are counted apart; neither is a pass. `upt atlas <bridge-id>` shows one bridge by claim.');\n return out;\n}\n\n// ── family ─────────────────────────────────────────────────────────────────\n/** Filter options applied to atlas bridge views. */\nexport interface AtlasFilter {\n relation?: RelationType;\n evidence?: EvidenceTag;\n}\n\n/** Counts explaining how an atlas bridge filter kept or dropped rows. */\nexport interface AtlasFilterStats {\n relation?: RelationType;\n evidence?: EvidenceTag;\n total: number;\n kept: number;\n droppedNotMatching: number;\n /** Bridges whose match depends on witness results the view does not observe. */\n droppedUndecided: number;\n /** The witness-results source, when the view reads one. */\n results?: ResultsMode;\n}\n\n/** The family-focused atlas view with local models, filed bridges, touching bridges and rejections. */\nexport interface FamilyView {\n view: 'family';\n family: string;\n source: string;\n models: ModelView[];\n /** Bridges filed under the family, then bridges filed elsewhere that touch one of its models. */\n bridges: (BridgeView & { role: 'filed' | 'touching' })[];\n rejections: { id: string; claimed: RelationType; premises: string[]; conclusion: string; reason: string }[];\n denominator: {\n models: { shown: number; of: number };\n bridgesFiled: { shown: number; of: number };\n bridgesTouching: { shown: number; of: number };\n rejections: number;\n };\n filter: AtlasFilterStats | null;\n equationLinks: ReturnType<typeof linkSummary>;\n witnessResults?: ResultsTally;\n epistemics: string;\n}\n\nfunction judge(b: BridgeView, f: AtlasFilter): 'kept' | 'not-matching' | 'undecided' {\n if (f.relation !== undefined && b.relation !== f.relation) return 'not-matching';\n if (f.evidence === undefined || b.evidence.derived.includes(f.evidence)) return 'kept';\n return b.evidence.undecided.includes(f.evidence) ? 'undecided' : 'not-matching';\n}\n\n/** Format the bridge-filter counts shown in text and diagram legends. */\nfunction formatAtlasFilterLegend(s: AtlasFilterStats | null): string | null {\n if (s === null) return null;\n const terms = [\n ...(s.relation !== undefined ? [`relation=${s.relation}`] : []),\n ...(s.evidence !== undefined ? [`evidence=${s.evidence}`] : []),\n ];\n return (\n `filter: ${terms.join(' ')} — ${s.kept} of ${s.total} bridges kept; ` +\n `${s.droppedNotMatching} dropped (did not match); ` +\n `${s.droppedUndecided} dropped (undecided: ${UNOBSERVED[s.results ?? 'none']})`\n );\n}\n\nconst UNOBSERVED: Record<ResultsMode | 'none', string> = {\n none: 'depends on witness results this command does not observe',\n stored: `depends on witnesses with no result in ${publishedUrl(STORED_RESULTS_PATH)}`,\n run: 'depends on witnesses not registered to run in-process',\n};\n\n/** Every bridge a view draws on, for running their witnesses before the view is built with the results. */\nexport function bridgeIdsOf(v: AtlasView): Set<string> {\n if (v.view === 'route') return new Set((v.steps ?? []).map((b) => b.id));\n return new Set(v.bridges.map((b) => b.id));\n}\n\n/** Build a family-focused atlas map, applying relation and evidence filters to its bridges. */\nexport function buildFamilyView(api: Api, name: string, filter: AtlasFilter, results: WitnessResults | null = null): FamilyView {\n const fam = api.ATLAS_FAMILIES.find((f) => f.family === name);\n if (fam === undefined) {\n throw new CliError(\n `upt map: unknown --family='${name}' (expected: ${api.ATLAS_FAMILIES.map((f) => f.family).join(' | ')})`,\n );\n }\n const models = allModels(api);\n const own = new Set(fam.models.map((m) => m.id));\n const filed = fam.bridges.map((b) => ({ ...bridgeView(api, b, fam.family, models, results), role: 'filed' as const }));\n const touching = api.ATLAS_FAMILIES.filter((f) => f !== fam).flatMap((f) =>\n f.bridges\n .filter((b) => [...b.premises, b.conclusion].some((id) => own.has(id)))\n .map((b) => ({ ...bridgeView(api, b, f.family, models, results), role: 'touching' as const })),\n );\n const all = [...filed, ...touching];\n const filtering = filter.relation !== undefined || filter.evidence !== undefined;\n const verdicts = all.map((b) => (filtering ? judge(b, filter) : 'kept'));\n const kept = all.filter((_, i) => verdicts[i] === 'kept');\n const n = (v: string) => verdicts.filter((x) => x === v).length;\n const mv = fam.models.map((m) => modelView(api, m));\n const t = totals(api);\n const witnessResults = tally(results, kept);\n return {\n view: 'family',\n family: fam.family,\n source: ATLAS_SOURCE,\n models: mv,\n bridges: kept,\n rejections: fam.rejections.map((r) => ({\n id: r.id,\n claimed: r.claimed,\n premises: [...r.premises],\n conclusion: r.conclusion,\n reason: r.reason,\n })),\n denominator: {\n models: { shown: mv.length, of: t.models },\n bridgesFiled: { shown: kept.filter((b) => b.role === 'filed').length, of: t.bridges },\n bridgesTouching: { shown: kept.filter((b) => b.role === 'touching').length, of: t.bridges },\n rejections: fam.rejections.length,\n },\n filter: filtering\n ? {\n ...filter,\n total: all.length,\n kept: kept.length,\n droppedNotMatching: n('not-matching'),\n droppedUndecided: n('undecided'),\n ...(results === null ? {} : { results: results.mode }),\n }\n : null,\n equationLinks: linkSummary(mv),\n ...(witnessResults === undefined ? {} : { witnessResults }),\n epistemics: EPISTEMICS,\n };\n}\n\n// ── text ───────────────────────────────────────────────────────────────────\n\nconst MODE_LABEL: Record<ResultsMode, string> = { stored: 'stored', run: 'run now' };\nconst NO_RESULT: Record<ResultsMode, string> = {\n stored: 'with no stored result',\n run: 'not run: no in-process runner is registered for them',\n};\n\nfunction evidenceLine(e: EvidenceView, id: string): string {\n const derived = e.derived.length === 0 ? 'none' : e.derived.join(', ');\n const formal =\n e.formalRef === null ? '' : ` [formalRef ${e.formalRef.system}, fidelity ${e.formalRef.fidelity}; covers its statement only]`;\n const r = e.results;\n if (r === undefined) {\n const undecided =\n e.undecided.length === 0\n ? ''\n : `; undecided without witness results: ${e.undecided.join(', ')} (${e.witnesses} witness(es); \\`upt atlas ${id} --run\\`)`;\n return `evidence (derived): ${derived}${formal}${undecided}`;\n }\n const undecided =\n e.undecided.length === 0\n ? ''\n : `; undecided: ${e.undecided.join(', ')} (${r.notObserved.length} witness(es) ${NO_RESULT[r.source]})`;\n return `evidence (derived, witness results ${MODE_LABEL[r.source]}): ${derived}${formal}${undecided}`;\n}\n\nfunction outcomeLine(r: WitnessOutcomes): string {\n const ids = (xs: readonly string[]) => (xs.length === 0 ? 'none' : xs.join(', '));\n const unresolved = r.unresolved.length === 0 ? 'none' : r.unresolved.map((u) => `${u.id} (${u.reason ?? 'no reason recorded'})`).join(', ');\n return (\n `witnesses (${MODE_LABEL[r.source]}): checked ${ids(r.checked)} · refuted ${ids(r.refuted)} · ` +\n `unresolved ${unresolved} · no result ${ids(r.notObserved)}`\n );\n}\n\n/** Format witness-result provenance and counts for a rendered atlas view. */\nfunction resultsLine(t: ResultsTally | undefined): string | null {\n if (t === undefined) return null;\n const w = t.witnesses;\n const counts =\n `over the bridges shown: ${w.checked} checked · ${w.refuted} refuted · ${w.unresolved} unresolved · ` +\n `${w.notObserved} with no result (not a pass)`;\n if ('ran' in t.provenance) {\n return `witness results: run now — ${t.provenance.ran} (${t.provenance.registered} registered witness(es) ran); ${counts}`;\n }\n const p = t.provenance;\n const when =\n p.lastCommit === null\n ? 'no commit of it found (git unavailable, or the file is not committed)'\n : `last commit touching it ${p.lastCommit.hash.slice(0, 12)} (${p.lastCommit.date})` +\n (p.modifiedSinceCommit === true ? ', and the working-tree file is MODIFIED since' : '');\n return `witness results: stored — ${p.url} (schemaVersion ${p.schemaVersion}; ${p.carries}; ${when}); ${counts}`;\n}\n\nfunction bridgeLines(b: BridgeView, indent: string): string[] {\n const at = (m: { id: string; family: string }, home: string) => (m.family === home ? m.id : `${m.id} (${m.family})`);\n const lines = [\n `${b.premises.map((p) => at(p, b.family)).join(' + ')} --[${b.relation}]--> ${at(b.conclusion, b.family)} (${b.id}) [${b.family}]`,\n `${indent}transformation: ${b.transformation}`,\n `${indent}assumptions: ${b.assumptions.length === 0 ? 'none stated' : b.assumptions.join('; ')}`,\n `${indent}regime: ${b.regime.vacuous ? 'VACUOUS — states no inequality' : b.regime.inequalities.join('; ')}`,\n `${indent}bound: ${b.bound === null ? 'none stated' : `K = ${b.bound.K} · delta = ${b.bound.delta} (${b.bound.norm}); horizon ${b.bound.horizon}`}`,\n `${indent}${evidenceLine(b.evidence, b.id)}`,\n ...(b.evidence.results === undefined ? [] : [`${indent}${outcomeLine(b.evidence.results)}`]),\n ];\n return lines;\n}\n\nfunction modelLines(m: ModelView, indent: string): string[] {\n const lines = [`${m.id} [${m.family}]: ${m.dynamics}`];\n if (m.equationLinks.length === 0) lines.push(`${indent}equations: ${NO_LINK}`);\n for (const l of m.equationLinks) {\n const eq = l.name === null ? `${l.id} (NOT in the canonical registry)` : `${l.id} — ${l.name}: ${l.formula}`;\n const edge =\n l.graphEdge === null ? 'no edge by this id in the equation graph' : `graph edge {${l.graphEdge.sources.join(', ')}} → ${l.graphEdge.target}`;\n lines.push(`${indent}equation: ${eq}; ${edge}`);\n }\n return lines;\n}\n\nfunction linkLine(s: ReturnType<typeof linkSummary>): string {\n return `equation links (source: ${s.source}): ${s.withLink} of ${s.of} models record one; ${s.withoutLink} record none`;\n}\n\nfunction compositionLines(c: RouteView['composition'], relations: readonly RelationType[], indent: string): string[] {\n const out = c.running.map((r, i) => {\n const state =\n r.relation === null\n ? 'not composed (an earlier step already yields no composite claim)'\n : r.relation === 'no-composite-claim'\n ? `NO COMPOSITE CLAIM — ${relations[i - 1]!} then ${relations[i]!} has no table cell`\n : r.relation;\n return `${indent}after step ${i + 1} (${r.after}): ${state}`;\n });\n const claim = c.claim!;\n if (claim.kind === 'bound') {\n out.push(`${indent}route claim: ${claim.relation}, K = ${claim.bound.K} · delta = ${claim.bound.delta} (${claim.norm ?? 'no norm stated'})`);\n for (const nt of c.transports) {\n out.push(\n `${indent} across '${nt.bridgeId}' by its declared transport '${nt.id}' (${nt.fromModel} → ${nt.toModel}, ` +\n `K = ${nt.K}, time map uniform): witness ${nt.witness.id} ${nt.result === 'no result' ? 'has no result here (not a pass)' : nt.result}`,\n );\n }\n if (c.evidence !== null) {\n const d = c.evidence.derived.length === 0 ? 'none' : c.evidence.derived.join(', ');\n const u = c.evidence.undecided.length === 0 ? '' : `; undecided: ${c.evidence.undecided.join(', ')}`;\n out.push(`${indent}composite evidence (derived): ${d}${u} — never stronger than the weakest part`);\n }\n } else {\n out.push(`${indent}route claim: no composite claim — reason '${claim.reason}': ${claim.detail}`);\n if (c.missing.length > 0) {\n out.push(`${indent}to compose, this route would need:`);\n for (const m of c.missing) out.push(`${indent} - ${m}`);\n }\n }\n return out;\n}\n\n/** Render a focused route view as human-readable CLI output lines. */\nexport function routeText(v: RouteView): string[] {\n const out = [`\\nRoute map — ${v.from} → ${v.to} [source: ${v.source}]`];\n if (v.steps === null) {\n out.push(\n ` shown: 0 of ${v.denominator.bridges.of} atlas bridges — no chain of bridges connects these models ` +\n '(only an exact equivalence is followed in both directions); there is nothing to compose.',\n );\n out.push(' endpoints:');\n for (const m of v.models) out.push(...modelLines(m, ' ').map((l, i) => (i === 0 ? ` ${l}` : l)));\n out.push(` ${linkLine(v.equationLinks)}`);\n return out;\n }\n if (v.steps.length === 0) {\n out.push(' the endpoints are the same model: the route is empty and composes nothing.');\n return out;\n }\n out.push(\n ` shown: ${v.denominator.bridges.shown} of ${v.denominator.bridges.of} atlas bridges, ` +\n `${v.denominator.models.shown} of ${v.denominator.models.of} models — ${v.selection}`,\n );\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n out.push('');\n v.steps.forEach((b, i) => {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` step ${i + 1} ${head}`, ...rest);\n });\n out.push('');\n out.push(' composition (the composition table, folded along the route):');\n out.push(...compositionLines(v.composition, v.steps.map((b) => b.relation), ' '));\n out.push('');\n out.push(' models on the route, with the equations each records:');\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n/** Render a family atlas view as human-readable CLI output lines. */\nexport function familyText(v: FamilyView): string[] {\n const d = v.denominator;\n const out = [`\\nFamily map — ${v.family} [source: ${v.source}]`];\n out.push(\n ` shown: ${d.models.shown} of ${d.models.of} atlas models; ${d.bridgesFiled.shown} bridge(s) filed under ${v.family} ` +\n `and ${d.bridgesTouching.shown} filed elsewhere that touch its models, of ${d.bridgesFiled.of} atlas bridges; ` +\n `${d.rejections} rejection(s)`,\n );\n const legend = formatAtlasFilterLegend(v.filter);\n if (legend !== null) out.push(` ${legend}`);\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n out.push('');\n out.push(' models, with the equations each records:');\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n for (const role of ['filed', 'touching'] as const) {\n const bs = v.bridges.filter((b) => b.role === role);\n out.push('');\n out.push(role === 'filed' ? ` bridges filed under ${v.family} (${bs.length}):` : ` bridges filed in other families that touch ${v.family} models (${bs.length}):`);\n if (bs.length === 0) out.push(' none');\n for (const b of bs) {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` ${head}`, ...rest);\n }\n }\n out.push('');\n out.push(` rejections (${v.rejections.length}) — claimed bridges the atlas refutes:`);\n if (v.rejections.length === 0) out.push(' none recorded');\n for (const r of v.rejections) out.push(` ${r.premises.join(' + ')} -x[${r.claimed}]-> ${r.conclusion} (${r.id}): ${r.reason}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n/** Render a multi-route atlas view as human-readable CLI output lines. */\nexport function routesText(v: RoutesView): string[] {\n const out = [`\\nAll routes — ${v.from} → ${v.to} [source: ${v.source}]`];\n const c = v.count;\n if (v.from === v.to) {\n out.push(' the endpoints are the same model: the route is empty and composes nothing.');\n return out;\n }\n const scope = c.exhausted\n ? `${c.shown} simple route(s): the search ran out of routes, so these are all of them`\n : (c.stoppedBy === 'limit'\n ? `the first ${c.shown} simple routes: the search stopped at the limit of ${c.limit} (--max-routes), so MORE exist; `\n : `${c.shown} simple route(s) found before the search exhausted its work budget; whether more exist is UNKNOWN; `) +\n `every route of at most ${c.completeThrough} bridge(s) is among these, and longer ones may be missing`;\n out.push(` ${scope} — ${v.selection}`);\n out.push(\n ` shown: ${v.denominator.bridges.shown} of ${v.denominator.bridges.of} atlas bridges, ` +\n `${v.denominator.models.shown} of ${v.denominator.models.of} models, over the routes shown`,\n );\n if (c.shown === 0) {\n out.push(' no chain of bridges connects these models (only an exact equivalence is followed in both directions).');\n return out;\n }\n const reasons = Object.entries(v.claims.noClaim).map(([r, n]) => `${n} '${r}'`);\n out.push(\n ` route claims: ${v.claims.bound} carry a bound; ${c.shown - v.claims.bound} carry no composite claim` +\n (reasons.length === 0 ? '' : ` (${reasons.join(', ')})`),\n );\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n const byId = new Map(v.bridges.map((b) => [b.id, b] as const));\n v.routes.forEach((r, i) => {\n out.push('');\n const hops = r.bridges.map((id, k) => ` --[${byId.get(id)!.relation}: ${id}]--> ${r.models[k + 1]}`).join('');\n out.push(` route ${i + 1} (${r.bridges.length} bridge(s))${r.reported ? ' — the route `upt path` reports' : ''}:`);\n out.push(` ${r.models[0]}${hops}`);\n out.push(...compositionLines(r.composition, r.bridges.map((id) => byId.get(id)!.relation), ' '));\n });\n out.push('');\n out.push(` bridges on these routes (${v.bridges.length}), each once:`);\n for (const b of v.bridges) {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push('');\n out.push(' models on these routes, with the equations each records:');\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n/** Render an observable atlas view as human-readable CLI output lines. */\nexport function observableText(v: ObservableView): string[] {\n const d = v.denominator.bridges;\n const out = [`\\nObservable map — '${v.observable}' [source: ${v.source}]`];\n out.push(\n ` of ${d.of} atlas bridges: ${d.preserves} record it as preserved, ${d.translates} declare a bound translation into it, ` +\n `${d.doesNotPreserve} record it as NOT preserved, ${d.recordsNothing} record nothing about it (an absent record, not a finding)`,\n );\n out.push(` match: ${v.match}`);\n const legend = formatAtlasFilterLegend(v.filter);\n if (legend !== null) out.push(` ${legend}`);\n const results = resultsLine(v.witnessResults);\n if (results !== null) out.push(` ${results}`);\n out.push('');\n out.push(` bridges that preserve or translate it (${v.bridges.length}):`);\n if (v.bridges.length === 0) out.push(' none');\n for (const b of v.bridges) {\n const [head, ...rest] = bridgeLines(b, ' ');\n out.push(` ${head}`, ...rest);\n if (b.preservesMatched.length > 0) out.push(` preserves (recorded): ${b.preservesMatched.join('; ')}`);\n if (b.translationsMatched.length > 0) out.push(` bound translation declared into: ${b.translationsMatched.join(', ')}`);\n }\n out.push('');\n out.push(` bridges that record it as NOT preserved (${v.notPreserved.length}):`);\n if (v.notPreserved.length === 0) out.push(' none');\n for (const b of v.notPreserved) out.push(` ${b.id} (${b.relation}) [${b.family}]: does not preserve ${b.matched.join('; ')}`);\n out.push('');\n out.push(` models these bridges connect (${v.denominator.models.shown} of ${v.denominator.models.of}):`);\n for (const m of v.models) {\n const [head, ...rest] = modelLines(m, ' ');\n out.push(` ${head}`, ...rest);\n }\n out.push(` ${linkLine(v.equationLinks)}`);\n out.push(`\\n (${v.epistemics})`);\n return out;\n}\n\n// ── diagrams ───────────────────────────────────────────────────────────────\n\nconst mm = (s: string): string =>\n s.replace(/\\r\\n|\\r|\\n/g, ' ').replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\nconst dq = (s: string): string => s.replace(/\\r\\n|\\r|\\n/g, ' ').replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n\ninterface Diagram {\n title: string;\n models: ModelView[];\n bridges: BridgeView[];\n /** Bridge ids drawn as the step where composition yields no composite claim. */\n breaks: Set<string>;\n}\n\n/** Any atlas map view that can be rendered as text or a diagram. */\nexport type AtlasView = RouteView | RoutesView | FamilyView | ObservableView;\n\n/** The one-line denominator every diagram carries in its title. */\nexport function viewLegend(v: AtlasView): string {\n const tail = v.witnessResults === undefined ? '' : `; witness results: ${MODE_LABEL[v.witnessResults.mode]}`;\n if (v.view === 'route') {\n const d = v.denominator;\n return (\n `route ${v.from} → ${v.to}: ${d.bridges.shown} of ${d.bridges.of} atlas bridges, ${d.models.shown} of ${d.models.of} models ` +\n `[source: ${v.source}; equation links: ${LINK_SOURCE}${tail}]`\n );\n }\n if (v.view === 'routes') {\n const d = v.denominator;\n const c = v.count;\n const scope = c.exhausted ? `all ${c.shown} simple routes` : `the first ${c.shown} simple routes (search stopped by its ${c.stoppedBy}; more may exist)`;\n return (\n `routes ${v.from} → ${v.to}: ${scope}, over ${d.bridges.shown} of ${d.bridges.of} atlas bridges and ${d.models.shown} of ` +\n `${d.models.of} models [source: ${v.source}; equation links: ${LINK_SOURCE}${tail}]`\n );\n }\n if (v.view === 'observable') {\n const d = v.denominator.bridges;\n const f = formatAtlasFilterLegend(v.filter);\n return (\n `observable '${v.observable}': ${v.bridges.length} bridge(s) shown; of ${d.of} atlas bridges ${d.preserves} record it preserved, ` +\n `${d.translates} translate into it, ${d.doesNotPreserve} record it NOT preserved, ${d.recordsNothing} record nothing ` +\n `[source: ${v.source}, recorded preserves/doesNotPreserve text and bound translations; equation links: ${LINK_SOURCE}${tail}]` +\n (f === null ? '' : ` — ${f}`)\n );\n }\n const d = v.denominator;\n const f = formatAtlasFilterLegend(v.filter);\n return (\n `family ${v.family}: ${d.models.shown} of ${d.models.of} atlas models, ${d.bridgesFiled.shown} filed + ` +\n `${d.bridgesTouching.shown} touching of ${d.bridgesFiled.of} atlas bridges [source: ${v.source}; equation links: ${LINK_SOURCE}${tail}]` +\n (f === null ? '' : ` — ${f}`)\n );\n}\n\nfunction diagramOf(v: AtlasView): Diagram {\n if (v.view === 'route') {\n const steps = v.steps ?? [];\n const br = v.composition.breaksAt;\n return { title: viewLegend(v), models: v.models, bridges: steps, breaks: new Set(br === null ? [] : [steps[br]!.id]) };\n }\n // A route-specific break is not a property of a bridge shared by several routes, so none is drawn.\n return { title: viewLegend(v), models: v.models, bridges: v.bridges, breaks: new Set() };\n}\n\nfunction idMaker(): (prefix: string, key: string) => string {\n const seen = new Map<string, string>();\n const used = new Set<string>();\n return (prefix, key) => {\n const k = `${prefix}:${key}`;\n const hit = seen.get(k);\n if (hit !== undefined) return hit;\n const base = `${prefix}_${key.replace(/[^A-Za-z0-9]/g, '_')}`;\n let id = base;\n for (let n = 1; used.has(id); n++) id = `${base}_${n}`;\n used.add(id);\n seen.set(k, id);\n return id;\n };\n}\n\n/** Models not in the view but named by a drawn bridge (a touching bridge's far end). */\nfunction endpointsOutside(d: Diagram): string[] {\n const inView = new Set(d.models.map((m) => m.id));\n return [...new Set(d.bridges.flatMap((b) => [...b.premises.map((p) => p.id), b.conclusion.id]))].filter((id) => !inView.has(id));\n}\n\nfunction edgeLabel(b: BridgeView, breaks: boolean): string {\n return `${b.relation} (${b.id})${breaks ? ' — no composite claim from here' : ''}`;\n}\n\n/** Render an atlas map view as a Mermaid flowchart. */\nexport function toMermaid(v: AtlasView): string {\n const d = diagramOf(v);\n const id = idMaker();\n // The title carries the observable the user typed, so a line break in it must not end the comment.\n const out = ['flowchart LR', `%% ${d.title.replace(/\\r\\n|\\r|\\n/g, ' ')}`, ` legend[\"${mm(d.title)}\"]:::legend`];\n for (const m of d.models) out.push(` ${id('m', m.id)}[\"${mm(`${m.id}: ${m.dynamics}`)}\"]:::model`);\n for (const m of endpointsOutside(d)) out.push(` ${id('m', m)}[\"${mm(m)}\"]:::outside`);\n // linkStyle addresses links by definition order, so the bridge links are\n // emitted before any canonicalRef link.\n const breakIdx: number[] = [];\n let link = 0;\n for (const b of d.bridges) {\n const arrow = b.relation === 'exact-equivalence' ? '<-->' : '-->';\n for (const p of b.premises) {\n if (d.breaks.has(b.id)) breakIdx.push(link);\n link++;\n out.push(` ${id('m', p.id)} ${arrow}|\"${mm(edgeLabel(b, d.breaks.has(b.id)))}\"| ${id('m', b.conclusion.id)}`);\n }\n }\n for (const m of d.models) {\n for (const l of m.equationLinks) {\n out.push(` ${id('c', l.id)}([\"${mm(l.name === null ? l.id : `${l.id}: ${l.formula}`)}\"]):::equation`);\n out.push(` ${id('m', m.id)} -.->|\"canonicalRef\"| ${id('c', l.id)}`);\n }\n }\n for (const i of breakIdx) out.push(` linkStyle ${i} stroke:#c0392b,stroke-width:2px`);\n out.push(' classDef model fill:#cfe3f7,stroke:#3a6ea5');\n out.push(' classDef outside fill:#ffffff,stroke:#999999,stroke-dasharray:4 3');\n out.push(' classDef equation fill:#f3f0e7,stroke:#8d7b4f,stroke-dasharray:4 3');\n out.push(' classDef legend fill:#ffffff,stroke:#333333');\n return out.join('\\n') + '\\n';\n}\n\n/** Render an atlas map view as a DOT graph. */\nexport function toDot(v: AtlasView): string {\n const d = diagramOf(v);\n const id = idMaker();\n const out = [\n 'digraph AtlasMap {',\n ` label=\"${dq(d.title)}\";`,\n ' rankdir=LR;',\n ' node [fontname=\"Helvetica\"];',\n ];\n for (const m of d.models) out.push(` ${id('m', m.id)} [shape=box,label=\"${dq(`${m.id}: ${m.dynamics}`)}\"];`);\n for (const m of endpointsOutside(d)) out.push(` ${id('m', m)} [shape=box,style=dashed,label=\"${dq(m)}\"];`);\n for (const b of d.bridges) {\n const brk = d.breaks.has(b.id);\n const attrs = [\n `label=\"${dq(edgeLabel(b, brk))}\"`,\n ...(b.relation === 'exact-equivalence' ? ['dir=both'] : []),\n ...(brk ? ['color=\"#c0392b\"', 'penwidth=2'] : []),\n ];\n for (const p of b.premises) out.push(` ${id('m', p.id)} -> ${id('m', b.conclusion.id)} [${attrs.join(',')}];`);\n }\n for (const m of d.models) {\n for (const l of m.equationLinks) {\n out.push(` ${id('c', l.id)} [shape=ellipse,style=dashed,label=\"${dq(l.name === null ? l.id : `${l.id}: ${l.formula}`)}\"];`);\n out.push(` ${id('m', m.id)} -> ${id('c', l.id)} [style=dashed,label=\"canonicalRef\"];`);\n }\n }\n out.push('}');\n return out.join('\\n') + '\\n';\n}\n"]}