aontu 0.52.1 → 0.54.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 (310) hide show
  1. package/README.md +88 -0
  2. package/bin/aontu-mcp.js +4 -0
  3. package/dist/agentsmd.d.ts +16 -0
  4. package/dist/agentsmd.js +107 -0
  5. package/dist/agentsmd.js.map +1 -0
  6. package/dist/aontu.d.ts +15 -3
  7. package/dist/aontu.js +126 -5
  8. package/dist/aontu.js.map +1 -1
  9. package/dist/cli.d.ts +45 -1
  10. package/dist/cli.js +2845 -69
  11. package/dist/cli.js.map +1 -1
  12. package/dist/ctx.d.ts +18 -0
  13. package/dist/ctx.js +44 -0
  14. package/dist/ctx.js.map +1 -1
  15. package/dist/diff.d.ts +22 -0
  16. package/dist/diff.js +141 -0
  17. package/dist/diff.js.map +1 -0
  18. package/dist/err.d.ts +3 -1
  19. package/dist/err.js +45 -8
  20. package/dist/err.js.map +1 -1
  21. package/dist/graph.d.ts +13 -0
  22. package/dist/graph.js +110 -0
  23. package/dist/graph.js.map +1 -0
  24. package/dist/hcanon.d.ts +3 -0
  25. package/dist/hcanon.js +145 -0
  26. package/dist/hcanon.js.map +1 -0
  27. package/dist/hints.js +235 -8
  28. package/dist/hints.js.map +1 -1
  29. package/dist/jsonschema.d.ts +20 -0
  30. package/dist/jsonschema.js +425 -0
  31. package/dist/jsonschema.js.map +1 -0
  32. package/dist/lang.js +955 -110
  33. package/dist/lang.js.map +1 -1
  34. package/dist/lsp.d.ts +9 -2
  35. package/dist/lsp.js +343 -48
  36. package/dist/lsp.js.map +1 -1
  37. package/dist/mcp-server.d.ts +20 -0
  38. package/dist/mcp-server.js +147 -0
  39. package/dist/mcp-server.js.map +1 -0
  40. package/dist/mcp.d.ts +42 -0
  41. package/dist/mcp.js +941 -0
  42. package/dist/mcp.js.map +1 -0
  43. package/dist/mod-tool.d.ts +58 -0
  44. package/dist/mod-tool.js +532 -0
  45. package/dist/mod-tool.js.map +1 -0
  46. package/dist/mod.d.ts +35 -0
  47. package/dist/mod.js +345 -0
  48. package/dist/mod.js.map +1 -0
  49. package/dist/patch.d.ts +49 -0
  50. package/dist/patch.js +506 -0
  51. package/dist/patch.js.map +1 -0
  52. package/dist/provenance.d.ts +41 -0
  53. package/dist/provenance.js +336 -0
  54. package/dist/provenance.js.map +1 -0
  55. package/dist/query.d.ts +27 -0
  56. package/dist/query.js +294 -0
  57. package/dist/query.js.map +1 -0
  58. package/dist/reach.d.ts +15 -0
  59. package/dist/reach.js +168 -0
  60. package/dist/reach.js.map +1 -0
  61. package/dist/relation.d.ts +23 -0
  62. package/dist/relation.js +230 -0
  63. package/dist/relation.js.map +1 -0
  64. package/dist/report-sarif.d.ts +14 -0
  65. package/dist/report-sarif.js +102 -0
  66. package/dist/report-sarif.js.map +1 -0
  67. package/dist/sig.d.ts +25 -0
  68. package/dist/sig.js +277 -0
  69. package/dist/sig.js.map +1 -0
  70. package/dist/sigdecl.d.ts +2 -0
  71. package/dist/sigdecl.js +11 -0
  72. package/dist/sigdecl.js.map +1 -0
  73. package/dist/siggate.d.ts +4 -0
  74. package/dist/siggate.js +90 -0
  75. package/dist/siggate.js.map +1 -0
  76. package/dist/site.d.ts +4 -0
  77. package/dist/site.js +31 -0
  78. package/dist/site.js.map +1 -1
  79. package/dist/std.d.ts +1 -0
  80. package/dist/std.js +129 -0
  81. package/dist/std.js.map +1 -0
  82. package/dist/subsume.d.ts +39 -0
  83. package/dist/subsume.js +573 -0
  84. package/dist/subsume.js.map +1 -0
  85. package/dist/trim.d.ts +19 -0
  86. package/dist/trim.js +155 -0
  87. package/dist/trim.js.map +1 -0
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/dist/type.d.ts +17 -1
  90. package/dist/type.js.map +1 -1
  91. package/dist/unify.d.ts +2 -1
  92. package/dist/unify.js +234 -38
  93. package/dist/unify.js.map +1 -1
  94. package/dist/utility.d.ts +8 -1
  95. package/dist/utility.js +68 -1
  96. package/dist/utility.js.map +1 -1
  97. package/dist/val/AggFuncVal.d.ts +44 -0
  98. package/dist/val/AggFuncVal.js +364 -0
  99. package/dist/val/AggFuncVal.js.map +1 -0
  100. package/dist/val/ArithFuncVal.d.ts +31 -0
  101. package/dist/val/ArithFuncVal.js +62 -0
  102. package/dist/val/ArithFuncVal.js.map +1 -0
  103. package/dist/val/BagVal.d.ts +7 -0
  104. package/dist/val/BagVal.js +150 -11
  105. package/dist/val/BagVal.js.map +1 -1
  106. package/dist/val/CloseFuncVal.js +9 -1
  107. package/dist/val/CloseFuncVal.js.map +1 -1
  108. package/dist/val/ConjunctVal.d.ts +1 -1
  109. package/dist/val/ConjunctVal.js +19 -0
  110. package/dist/val/ConjunctVal.js.map +1 -1
  111. package/dist/val/ConstraintVal.d.ts +7 -1
  112. package/dist/val/ConstraintVal.js +523 -45
  113. package/dist/val/ConstraintVal.js.map +1 -1
  114. package/dist/val/ContainerKindVal.d.ts +35 -0
  115. package/dist/val/ContainerKindVal.js +99 -0
  116. package/dist/val/ContainerKindVal.js.map +1 -0
  117. package/dist/val/CopyFuncVal.d.ts +1 -2
  118. package/dist/val/CopyFuncVal.js.map +1 -1
  119. package/dist/val/Decimal.d.ts +1 -0
  120. package/dist/val/Decimal.js +13 -0
  121. package/dist/val/Decimal.js.map +1 -1
  122. package/dist/val/DeprecateFuncVal.d.ts +11 -0
  123. package/dist/val/DeprecateFuncVal.js +47 -0
  124. package/dist/val/DeprecateFuncVal.js.map +1 -0
  125. package/dist/val/DisjunctVal.d.ts +1 -2
  126. package/dist/val/DisjunctVal.js +269 -53
  127. package/dist/val/DisjunctVal.js.map +1 -1
  128. package/dist/val/EachFuncVal.d.ts +15 -0
  129. package/dist/val/EachFuncVal.js +75 -0
  130. package/dist/val/EachFuncVal.js.map +1 -0
  131. package/dist/val/ExpectVal.js +62 -4
  132. package/dist/val/ExpectVal.js.map +1 -1
  133. package/dist/val/FeatureVal.js +1 -1
  134. package/dist/val/FeatureVal.js.map +1 -1
  135. package/dist/val/FilterFuncVal.d.ts +15 -0
  136. package/dist/val/FilterFuncVal.js +91 -0
  137. package/dist/val/FilterFuncVal.js.map +1 -0
  138. package/dist/val/FuncBaseVal.d.ts +7 -1
  139. package/dist/val/FuncBaseVal.js +183 -2
  140. package/dist/val/FuncBaseVal.js.map +1 -1
  141. package/dist/val/GraphAtomVal.d.ts +39 -0
  142. package/dist/val/GraphAtomVal.js +184 -0
  143. package/dist/val/GraphAtomVal.js.map +1 -0
  144. package/dist/val/HideFuncVal.js.map +1 -1
  145. package/dist/val/JunctionVal.js +24 -1
  146. package/dist/val/JunctionVal.js.map +1 -1
  147. package/dist/val/KeyFuncVal.d.ts +1 -1
  148. package/dist/val/KeyFuncVal.js +38 -30
  149. package/dist/val/KeyFuncVal.js.map +1 -1
  150. package/dist/val/ListVal.js +94 -14
  151. package/dist/val/ListVal.js.map +1 -1
  152. package/dist/val/LowerFuncVal.js.map +1 -1
  153. package/dist/val/MapVal.d.ts +1 -0
  154. package/dist/val/MapVal.js +146 -14
  155. package/dist/val/MapVal.js.map +1 -1
  156. package/dist/val/MatchFuncVal.d.ts +15 -0
  157. package/dist/val/MatchFuncVal.js +107 -0
  158. package/dist/val/MatchFuncVal.js.map +1 -0
  159. package/dist/val/MoveFuncVal.js.map +1 -1
  160. package/dist/val/NilVal.js +24 -0
  161. package/dist/val/NilVal.js.map +1 -1
  162. package/dist/val/OpBaseVal.d.ts +1 -1
  163. package/dist/val/OpBaseVal.js +19 -1
  164. package/dist/val/OpBaseVal.js.map +1 -1
  165. package/dist/val/OpenFuncVal.js +4 -1
  166. package/dist/val/OpenFuncVal.js.map +1 -1
  167. package/dist/val/PackFuncVal.d.ts +15 -0
  168. package/dist/val/PackFuncVal.js +108 -0
  169. package/dist/val/PackFuncVal.js.map +1 -0
  170. package/dist/val/PathFuncVal.d.ts +2 -2
  171. package/dist/val/PathFuncVal.js +75 -16
  172. package/dist/val/PathFuncVal.js.map +1 -1
  173. package/dist/val/PathVal.d.ts +25 -0
  174. package/dist/val/PathVal.js +150 -0
  175. package/dist/val/PathVal.js.map +1 -0
  176. package/dist/val/PlaceVal.d.ts +13 -0
  177. package/dist/val/PlaceVal.js +131 -0
  178. package/dist/val/PlaceVal.js.map +1 -0
  179. package/dist/val/PlusOpVal.d.ts +2 -1
  180. package/dist/val/PlusOpVal.js +61 -37
  181. package/dist/val/PlusOpVal.js.map +1 -1
  182. package/dist/val/PrefFuncVal.js.map +1 -1
  183. package/dist/val/PrefVal.d.ts +4 -2
  184. package/dist/val/PrefVal.js +223 -41
  185. package/dist/val/PrefVal.js.map +1 -1
  186. package/dist/val/RecurseVal.d.ts +19 -0
  187. package/dist/val/RecurseVal.js +217 -0
  188. package/dist/val/RecurseVal.js.map +1 -0
  189. package/dist/val/RefVal.d.ts +3 -2
  190. package/dist/val/RefVal.js +181 -66
  191. package/dist/val/RefVal.js.map +1 -1
  192. package/dist/val/ReferFuncVal.d.ts +59 -0
  193. package/dist/val/ReferFuncVal.js +604 -0
  194. package/dist/val/ReferFuncVal.js.map +1 -0
  195. package/dist/val/ScalarKindVal.d.ts +4 -3
  196. package/dist/val/ScalarKindVal.js +12 -12
  197. package/dist/val/ScalarKindVal.js.map +1 -1
  198. package/dist/val/SuperFuncVal.d.ts +4 -2
  199. package/dist/val/SuperFuncVal.js +118 -14
  200. package/dist/val/SuperFuncVal.js.map +1 -1
  201. package/dist/val/TopVal.d.ts +1 -1
  202. package/dist/val/TopVal.js.map +1 -1
  203. package/dist/val/TypeFuncVal.js.map +1 -1
  204. package/dist/val/UpperFuncVal.js.map +1 -1
  205. package/dist/val/Val.d.ts +7 -1
  206. package/dist/val/Val.js +170 -2
  207. package/dist/val/Val.js.map +1 -1
  208. package/dist/val/VarVal.js.map +1 -1
  209. package/dist/val/arith.d.ts +6 -0
  210. package/dist/val/arith.js +173 -0
  211. package/dist/val/arith.js.map +1 -0
  212. package/dist/vet.d.ts +45 -0
  213. package/dist/vet.js +802 -0
  214. package/dist/vet.js.map +1 -0
  215. package/dist/view.d.ts +85 -0
  216. package/dist/view.js +1948 -0
  217. package/dist/view.js.map +1 -0
  218. package/dist/walk.d.ts +2 -0
  219. package/dist/walk.js +91 -0
  220. package/dist/walk.js.map +1 -0
  221. package/grammar/aontu.gbnf +138 -0
  222. package/grammar/aontu.lark +118 -0
  223. package/grammar/aontu.tmLanguage.json +184 -0
  224. package/package.json +30 -8
  225. package/skill/SKILL.md +37 -0
  226. package/skill/error-codes.md +62 -0
  227. package/skill/examples.md +99 -0
  228. package/skill/grammar-card.md +56 -0
  229. package/src/agentsmd.ts +135 -0
  230. package/src/aontu.ts +166 -5
  231. package/src/cli.ts +3324 -72
  232. package/src/ctx.ts +93 -1
  233. package/src/diff.ts +198 -0
  234. package/src/err.ts +50 -8
  235. package/src/graph.ts +185 -0
  236. package/src/hcanon.ts +167 -0
  237. package/src/hints.ts +291 -8
  238. package/src/jsonschema.ts +552 -0
  239. package/src/lang.ts +1049 -110
  240. package/src/lsp.ts +351 -49
  241. package/src/mcp-server.ts +187 -0
  242. package/src/mcp.ts +1130 -0
  243. package/src/mod-tool.ts +718 -0
  244. package/src/mod.ts +453 -0
  245. package/src/patch.ts +628 -0
  246. package/src/provenance.ts +437 -0
  247. package/src/query.ts +381 -0
  248. package/src/reach.ts +213 -0
  249. package/src/relation.ts +298 -0
  250. package/src/report-sarif.ts +137 -0
  251. package/src/sig.ts +345 -0
  252. package/src/sigdecl.ts +11 -0
  253. package/src/siggate.ts +144 -0
  254. package/src/site.ts +36 -1
  255. package/src/std.ts +131 -0
  256. package/src/subsume.ts +739 -0
  257. package/src/trim.ts +195 -0
  258. package/src/tsconfig.json +10 -4
  259. package/src/type.ts +51 -2
  260. package/src/unify.ts +253 -38
  261. package/src/utility.ts +79 -1
  262. package/src/val/AggFuncVal.ts +546 -0
  263. package/src/val/ArithFuncVal.ts +108 -0
  264. package/src/val/BagVal.ts +158 -12
  265. package/src/val/CloseFuncVal.ts +9 -1
  266. package/src/val/ConjunctVal.ts +20 -0
  267. package/src/val/ConstraintVal.ts +576 -48
  268. package/src/val/ContainerKindVal.ts +158 -0
  269. package/src/val/CopyFuncVal.ts +0 -1
  270. package/src/val/Decimal.ts +15 -0
  271. package/src/val/DeprecateFuncVal.ts +84 -0
  272. package/src/val/DisjunctVal.ts +282 -59
  273. package/src/val/EachFuncVal.ts +133 -0
  274. package/src/val/ExpectVal.ts +65 -8
  275. package/src/val/FeatureVal.ts +1 -1
  276. package/src/val/FilterFuncVal.ts +154 -0
  277. package/src/val/FuncBaseVal.ts +206 -2
  278. package/src/val/GraphAtomVal.ts +264 -0
  279. package/src/val/HideFuncVal.ts +0 -2
  280. package/src/val/JunctionVal.ts +24 -1
  281. package/src/val/KeyFuncVal.ts +39 -35
  282. package/src/val/ListVal.ts +101 -15
  283. package/src/val/LowerFuncVal.ts +0 -1
  284. package/src/val/MapVal.ts +153 -14
  285. package/src/val/MatchFuncVal.ts +176 -0
  286. package/src/val/MoveFuncVal.ts +0 -2
  287. package/src/val/NilVal.ts +25 -0
  288. package/src/val/OpBaseVal.ts +20 -1
  289. package/src/val/OpenFuncVal.ts +4 -2
  290. package/src/val/PackFuncVal.ts +175 -0
  291. package/src/val/PathFuncVal.ts +107 -20
  292. package/src/val/PathVal.ts +221 -0
  293. package/src/val/PlaceVal.ts +193 -0
  294. package/src/val/PlusOpVal.ts +67 -39
  295. package/src/val/PrefFuncVal.ts +0 -1
  296. package/src/val/PrefVal.ts +251 -60
  297. package/src/val/RecurseVal.ts +285 -0
  298. package/src/val/RefVal.ts +183 -78
  299. package/src/val/ReferFuncVal.ts +732 -0
  300. package/src/val/ScalarKindVal.ts +12 -13
  301. package/src/val/SuperFuncVal.ts +137 -13
  302. package/src/val/TopVal.ts +1 -2
  303. package/src/val/TypeFuncVal.ts +0 -2
  304. package/src/val/UpperFuncVal.ts +0 -1
  305. package/src/val/Val.ts +216 -4
  306. package/src/val/VarVal.ts +0 -1
  307. package/src/val/arith.ts +319 -0
  308. package/src/vet.ts +1025 -0
  309. package/src/view.ts +2563 -0
  310. package/src/walk.ts +99 -0
@@ -0,0 +1,573 @@
1
+ "use strict";
2
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.effectiveDefault = effectiveDefault;
5
+ exports.subsumeNode = subsumeNode;
6
+ exports.subsume = subsume;
7
+ const aontu_1 = require("./aontu");
8
+ const vet_1 = require("./vet");
9
+ const hcanon_1 = require("./hcanon");
10
+ const ConstraintVal_1 = require("./val/ConstraintVal");
11
+ const ScalarKindVal_1 = require("./val/ScalarKindVal");
12
+ const PathVal_1 = require("./val/PathVal");
13
+ const PrefVal_1 = require("./val/PrefVal");
14
+ const DEFAULT_GENERAL_URL = 'general';
15
+ const DEFAULT_SPECIFIC_URL = 'specific';
16
+ function pathText(path) {
17
+ return '$' + (0 < path.length ? '.' + path.join('.') : '');
18
+ }
19
+ // Every recorded operand is a real evaluated Val or the sited topLike
20
+ // stand-in, so no null guards: a Val's site is always an object, and a
21
+ // value parsed without a usable frame (a disjunct, say) already carries
22
+ // the -1 coordinates in it.
23
+ function siteOf(v, role, url) {
24
+ return {
25
+ file: url,
26
+ row: v.site.row,
27
+ col: v.site.col,
28
+ len: v.site.len,
29
+ role: role,
30
+ src: v.site.src,
31
+ value: v.canon,
32
+ };
33
+ }
34
+ // One finding: general and specific sites (general first — it is the
35
+ // contract being weakened or broken), canons as expected/actual.
36
+ function record(state, code, path, g, s, message) {
37
+ state.findings.push({
38
+ code,
39
+ class: 'compat',
40
+ severity: 'error',
41
+ path: pathText(path),
42
+ message,
43
+ sites: [
44
+ siteOf(g, 'general', state.generalUrl),
45
+ siteOf(s, 'specific', state.specificUrl),
46
+ ],
47
+ expected: g.canon,
48
+ actual: s.canon,
49
+ });
50
+ }
51
+ // The admission view of a value under a profile: a BARE preference
52
+ // admits what its superior admits (the engine's own PrefVal.superpeg
53
+ // semantics, and the docs' "a bare preference is gated by kind"); the
54
+ // default itself is compared separately, by the `defaults` and `gen`
55
+ // profiles.
56
+ function admission(v) {
57
+ return true === v?.isPref ? v.superpeg : v;
58
+ }
59
+ // A PREFERRED BRANCH CONTRIBUTES EXACTLY ITS OWN VALUE (ADR-004). The
60
+ // admission gate made that the engine's rule -- `*'auto'|'literal'|'data'`
61
+ // admits those three strings and nothing else -- and the subsumption
62
+ // walk kept comparing a pref MEMBER by its kind superior, the
63
+ // pre-ADR-004 reading. So a disjunction with a default did not subsume
64
+ // ITSELF: every member of the specific side widened to `string`, which
65
+ // no general member admits, and the walk answered the distribution
66
+ // case. `aontu_policy: hide({compat: *backward|forward|full|none})` --
67
+ // the verbatim idiom from reference-api.md -- failed self-subsumption
68
+ // under --profile gen (use-cases/BUGS.md §29).
69
+ //
70
+ // Only for a member of a disjunction: a bare `*x` standing alone is
71
+ // still gated by kind, which is the rule above and the documented one.
72
+ function memberAdmission(v) {
73
+ return true === v?.isPref ? (0, PrefVal_1.prefInnerPeg)(v) : v;
74
+ }
75
+ // The effective default of a value, or undefined when it has none, or
76
+ // 'indeterminate' when equal-rank preferences disagree (which the
77
+ // engine itself refuses only at generation).
78
+ // Exported (with subsumeNode) for the default-validity lint in
79
+ // ts/src/vet.ts (G3 phase 5): the lint asks exactly this walk's two
80
+ // questions — what is the effective default, and does a member admit
81
+ // it.
82
+ function effectiveDefault(v) {
83
+ // EVERY pref layer is unwrapped (prefInnerPeg), not just one: a
84
+ // ranked default's effective value is the innermost peg — `**member`
85
+ // generates "member" exactly as `*member` does (the rank-uniform
86
+ // meet, ADR-004). The one-layer unwrap left a rank-2 default wearing
87
+ // a `*`-wrapper no plain alternative subsumes, which is the
88
+ // pref_not_instance lint's ranked false positive of
89
+ // use-cases/BUGS.md §4 (`**member|member|admin|owner` warned while
90
+ // generating a value its own branch admits).
91
+ if (true === v?.isPref) {
92
+ return (0, PrefVal_1.prefInnerPeg)(v);
93
+ }
94
+ if (true === v?.isDisjunct && Array.isArray(v.peg)) {
95
+ const prefs = v.peg.filter((m) => true === m?.isPref);
96
+ if (0 === prefs.length) {
97
+ return undefined;
98
+ }
99
+ // Generation picks the LOWEST rank (`a:**1|*2` generates 2 —
100
+ // test/spec/edge.tsv), so the effective default does too.
101
+ const minRank = Math.min(...prefs.map((p) => p.rank));
102
+ const top = prefs.filter((p) => p.rank === minRank);
103
+ const first = (0, PrefVal_1.prefInnerPeg)(top[0]);
104
+ for (const p of top.slice(1)) {
105
+ if (!first.same?.((0, PrefVal_1.prefInnerPeg)(p))) {
106
+ return 'indeterminate';
107
+ }
108
+ }
109
+ return first;
110
+ }
111
+ return undefined;
112
+ }
113
+ // Is this evaluated value concrete enough to serve as a witness — a
114
+ // value that certainly IS an instance of the specific side?
115
+ function isConcrete(v) {
116
+ if (true === v?.isScalar) {
117
+ return true;
118
+ }
119
+ if ((true === v?.isMap || true === v?.isList) && null != v.peg) {
120
+ const children = Array.isArray(v.peg) ? v.peg : Object.values(v.peg);
121
+ return children.every((c) => isConcrete(c));
122
+ }
123
+ return false;
124
+ }
125
+ // Unresolved residue makes the relation undecidable at this node:
126
+ // references, variables, unreduced conjuncts and functions have no
127
+ // admitted set to compare.
128
+ function unresolved(v) {
129
+ return true === v?.isRef || true === v?.isVar ||
130
+ true === v?.isConjunct || true === v?.isExpect ||
131
+ (true === v?.isFunc && true !== v?.isConstraint);
132
+ }
133
+ // Exported for the defensive-arm unit test (ADR-002,
134
+ // ts/test/coverage3.test.ts): the no-rule fold at the walk's tail is
135
+ // unreachable through subsume() today — the ladder is total for every
136
+ // evaluated former — and the walk is otherwise private.
137
+ function subsumeNode(state, path, g0, s0) {
138
+ const g = admission(g0);
139
+ const s = admission(s0);
140
+ // Marks change the OUTPUT shape, not the admitted set: only the `gen`
141
+ // profile reports them, and only when they differ on corresponding
142
+ // nodes.
143
+ if ('gen' === state.profile && true !== state.distributing &&
144
+ (!!g?.mark?.type !== !!s?.mark?.type ||
145
+ !!g?.mark?.hide !== !!s?.mark?.hide)) {
146
+ record(state, 'compat_marks_changed', path, g, s, 'marks differ: general ' + JSON.stringify(g?.mark) +
147
+ ', specific ' + JSON.stringify(s?.mark));
148
+ return 'no';
149
+ }
150
+ // TOP admits everything. There is no nil rule: an error-free
151
+ // evaluated document carries no nil (failing disjunct members are
152
+ // discarded, every other nil collects an error, and subsume() answers
153
+ // `error` for a source that does not stand alone), so a nil handed to
154
+ // the walk by a future caller falls to the no-rule fold below —
155
+ // `undecided`, the safe direction.
156
+ if (true === g?.isTop) {
157
+ return 'yes';
158
+ }
159
+ if (unresolved(g) || unresolved(s)) {
160
+ // REFLEXIVITY IS A LAW, not a rule the ladder gets to skip. Every
161
+ // value admits itself, residue included: the set admitted by
162
+ // `integer & min(0)` is exactly the set admitted by
163
+ // `integer & min(0)`. Without this, a constraint inside a spread
164
+ // template made a contract non-SELF-subsumable -- expected and
165
+ // actual byte-identical, verdict `undecided` -- so `breaking` on
166
+ // the documented close-per-entry idiom hard-failed reflexivity and
167
+ // had to run --allow-undecided, which then masks the genuine
168
+ // undecideds it exists to surface (use-cases/BUGS.md §28).
169
+ //
170
+ // Identity is the HASH FORM, not the canon: canon drops closedness
171
+ // and the marks, so `close({a:1})` and `{a:1}` share a canon while
172
+ // admitting different sets. Computed only on this branch, where
173
+ // the answer would otherwise be undecided, so the hot path is
174
+ // untouched.
175
+ if ((0, hcanon_1.hcanon)(g) === (0, hcanon_1.hcanon)(s)) {
176
+ return 'yes';
177
+ }
178
+ record(state, 'sub_unresolved', path, g, s, 'unresolved residue: the admitted set is not comparable');
179
+ return 'undecided';
180
+ }
181
+ // Disjunctions. General side first: a specific member must be
182
+ // subsumed by SOME general member; member-wise failure is not proof
183
+ // (the distribution case), so a concrete failing member becomes the
184
+ // witness and anything else is honestly undecided.
185
+ if (true === s?.isDisjunct) {
186
+ let out = 'yes';
187
+ for (const raw of s.peg) {
188
+ const member = memberAdmission(raw);
189
+ const trial = trialSubsume(state, path, g, member);
190
+ if ('yes' !== trial) {
191
+ if (isConcrete(admission(member))) {
192
+ record(state, 'compat_narrowed', path, g, member, 'a specific alternative is not admitted by the general value');
193
+ return 'no';
194
+ }
195
+ record(state, 'sub_disjunct_distribution', path, g, member, 'a specific alternative is not admitted member-wise, and no' +
196
+ ' concrete counterexample settles the distribution case');
197
+ out = 'undecided';
198
+ }
199
+ }
200
+ return out;
201
+ }
202
+ if (true === g?.isDisjunct) {
203
+ for (const raw of g.peg) {
204
+ if ('yes' === trialSubsume(state, path, memberAdmission(raw), s)) {
205
+ return 'yes';
206
+ }
207
+ }
208
+ if (isConcrete(s)) {
209
+ record(state, 'compat_narrowed', path, g, s, 'no general alternative admits the specific value');
210
+ return 'no';
211
+ }
212
+ record(state, 'sub_disjunct_distribution', path, g, s, 'no general alternative admits the specific value member-wise,' +
213
+ ' and no concrete counterexample settles the distribution case');
214
+ return 'undecided';
215
+ }
216
+ // Scalar kinds: a kind subsumes its scalars, narrower kinds, and the
217
+ // constraint residuals of its domain.
218
+ if (true === g?.isScalarKind) {
219
+ if (true === s?.isScalarKind) {
220
+ if (g.peg === s.peg || (0, ScalarKindVal_1.kindSubsumes)(g.peg, s.peg)) {
221
+ return 'yes';
222
+ }
223
+ record(state, 'compat_narrowed', path, g, s, 'the general kind does not admit the specific kind');
224
+ return 'no';
225
+ }
226
+ if (true === s?.isScalar) {
227
+ const leaf = s.superior?.();
228
+ if (true === leaf?.isScalarKind &&
229
+ (g.peg === leaf.peg || (0, ScalarKindVal_1.kindSubsumes)(g.peg, leaf.peg))) {
230
+ return 'yes';
231
+ }
232
+ record(state, 'compat_narrowed', path, g, s, 'the general kind does not admit the specific scalar');
233
+ return 'no';
234
+ }
235
+ if (true === s?.isConstraint) {
236
+ // A kind covers a residual of its own domain: `number` admits any
237
+ // numeric residual (the supertype admits every leaf a bound can
238
+ // pin), a numeric LEAF kind admits only a residual pinned to that
239
+ // leaf, and `string` admits any pattern residual. A residual with
240
+ // no domain (sizing-only) admits containers no kind covers.
241
+ const dom = s.domain;
242
+ const skind = s.kind;
243
+ if ('number' === dom &&
244
+ (Number === g.peg ||
245
+ (null != skind && (0, ScalarKindVal_1.kindSubsumes)(g.peg, skind)))) {
246
+ return 'yes';
247
+ }
248
+ if ('string' === dom && String === g.peg) {
249
+ return 'yes';
250
+ }
251
+ record(state, 'compat_narrowed', path, g, s, 'the general kind does not cover the specific residual');
252
+ return 'no';
253
+ }
254
+ record(state, 'compat_narrowed', path, g, s, 'the general kind admits no such value');
255
+ return 'no';
256
+ }
257
+ // Container kinds (docs/design/PATHS.0.md): `map()` subsumes every
258
+ // map and itself, `list()` every list. The unit literals (`{}`,
259
+ // `[]`) already subsume through the container rules; only the kind
260
+ // former needs an arm.
261
+ if (true === g?.isContainerKind) {
262
+ const ga = g;
263
+ const sa = s;
264
+ if ((true === ga.isMapKind && (true === sa?.isMap || true === sa?.isMapKind))
265
+ || (true === ga.isListKind && (true === sa?.isList || true === sa?.isListKind))) {
266
+ return 'yes';
267
+ }
268
+ record(state, 'compat_narrowed', path, g, s, 'the general container kind admits no such value');
269
+ return 'no';
270
+ }
271
+ // Constraint residuals.
272
+ if (true === g?.isConstraint) {
273
+ if (true === s?.isConstraint) {
274
+ const r = (0, ConstraintVal_1.constraintSubsumesConstraint)(g, s);
275
+ if (true === r) {
276
+ return 'yes';
277
+ }
278
+ if ('undecided' === r) {
279
+ record(state, 'sub_evaluate_only', path, g, s, 'an evaluate-only check (must) makes the admitted set opaque');
280
+ return 'undecided';
281
+ }
282
+ record(state, 'compat_narrowed', path, g, s, 'the general residual does not contain the specific residual');
283
+ return 'no';
284
+ }
285
+ if (true === s?.isScalar) {
286
+ const r = (0, ConstraintVal_1.constraintAdmitsScalar)(g, s);
287
+ if (true === r) {
288
+ return 'yes';
289
+ }
290
+ if ('undecided' === r) {
291
+ record(state, 'sub_evaluate_only', path, g, s, 'an evaluate-only check (must) makes the admitted set opaque');
292
+ return 'undecided';
293
+ }
294
+ record(state, 'compat_narrowed', path, g, s, 'the general residual does not admit the specific scalar');
295
+ return 'no';
296
+ }
297
+ record(state, 'compat_narrowed', path, g, s, 'the general residual constrains a domain the specific value is not in');
298
+ return 'no';
299
+ }
300
+ // Concrete scalars subsume only themselves (identity compares kind
301
+ // as well as value) -- except paths, whose meet is the prefix rule
302
+ // (ADR-016): a prefix admits every extension of itself, so it
303
+ // subsumes one, exactly as the meet answers the longer.
304
+ if (true === g?.isScalar) {
305
+ if (true === g.isPath && true === s?.isPath &&
306
+ (0, PathVal_1.prefixMeet)(g.peg, s.peg) === s.peg) {
307
+ return 'yes';
308
+ }
309
+ if (true === s?.isScalar && true === g.same?.(s)) {
310
+ return 'yes';
311
+ }
312
+ record(state, 'compat_narrowed', path, g, s, 'a concrete value subsumes only itself');
313
+ return 'no';
314
+ }
315
+ // Maps.
316
+ if (true === g?.isMap) {
317
+ if (true !== s?.isMap) {
318
+ record(state, 'compat_narrowed', path, g, s, 'the general value is a map and the specific value is not');
319
+ return 'no';
320
+ }
321
+ return subsumeBag(state, path, g, s, Object.keys(g.peg), Object.keys(s.peg), (v, k) => v.peg[k]);
322
+ }
323
+ // Lists: element-wise by position; the same required/optional shape
324
+ // as maps, with positions as keys.
325
+ if (true === g?.isList) {
326
+ if (true !== s?.isList) {
327
+ record(state, 'compat_narrowed', path, g, s, 'the general value is a list and the specific value is not');
328
+ return 'no';
329
+ }
330
+ const gk = g.peg.map((_, i) => '' + i);
331
+ const sk = s.peg.map((_, i) => '' + i);
332
+ return subsumeBag(state, path, g, s, gk, sk, (v, k) => v.peg[Number(k)]);
333
+ }
334
+ // THE LADDER IS NOT TOTAL, and the formers that fall past it are the
335
+ // ones the evaluator MEANS to leave standing: a recursion, a
336
+ // relation and its graph atom, a `refer()` target constraint. None
337
+ // of them describes a set of values a structural walk can compare,
338
+ // so `undecided` is the honest answer for two DIFFERENT ones.
339
+ //
340
+ // For two IDENTICAL ones it is not. REFLEXIVITY IS A LAW -- every
341
+ // value admits itself -- and identity is the HASH FORM, the same
342
+ // rule the unresolved branch above applies and for the same reason:
343
+ // it costs nothing, because it runs only where the answer would
344
+ // otherwise be `undecided`. Without it a document that declares a
345
+ // relation, shares a template by reference or alias, or recurses did
346
+ // not subsume ITSELF, so `breaking` on the idiom the language exists
347
+ // for hard-failed and had to run --allow-undecided, which masks the
348
+ // genuine undecideds it exists to surface (use-cases/BUGS.md 64,
349
+ // and 28 before it).
350
+ //
351
+ // A NIL is the exception, and the reason the law is spelled here
352
+ // rather than in `unresolved`: a nil is not a value, so it admits
353
+ // nothing, itself included.
354
+ if (true !== g?.isNil && true !== s?.isNil && (0, hcanon_1.hcanon)(g) === (0, hcanon_1.hcanon)(s)) {
355
+ return 'yes';
356
+ }
357
+ record(state, 'sub_unresolved', path, g, s, 'no subsumption rule covers this pair of value formers');
358
+ return 'undecided';
359
+ }
360
+ // Maps and lists share one shape: required keys of the general side
361
+ // must be required in the specific side and subsume; optional keys
362
+ // compare when present; closedness bounds the specific key set; spread
363
+ // templates govern the specific side's surplus.
364
+ function subsumeBag(state, path, g, s, gKeys, sKeys, child) {
365
+ let out = 'yes';
366
+ const worse = (r) => {
367
+ if ('no' === r || ('undecided' === r && 'no' !== out)) {
368
+ out = 'no' === r ? 'no' : 'undecided';
369
+ }
370
+ };
371
+ // Always arrays on an evaluated bag (BagVal initialises them).
372
+ const gOptional = g.optionalKeys;
373
+ const sOptional = s.optionalKeys;
374
+ for (const k of gKeys) {
375
+ const gChild = child(g, k);
376
+ const has = sKeys.includes(k);
377
+ const optional = gOptional.includes(k);
378
+ if (!has) {
379
+ if (optional) {
380
+ continue;
381
+ }
382
+ record(state, 'compat_required_added', [...path, k], gChild, s, 'the general value requires this key; the specific value admits' +
383
+ ' instances without it');
384
+ worse('no');
385
+ continue;
386
+ }
387
+ if (!optional && sOptional.includes(k)) {
388
+ record(state, 'compat_required_added', [...path, k], gChild, child(s, k), 'the general value requires this key; the specific value makes' +
389
+ ' it optional, so instances without it are admitted');
390
+ worse('no');
391
+ continue;
392
+ }
393
+ worse(subsumeNode(state, [...path, k], gChild, child(s, k)));
394
+ }
395
+ // Closedness: a closed general bag admits only key sets it declares,
396
+ // so the specific side must be closed and inside it.
397
+ if (true === g.closed) {
398
+ if (true !== s.closed) {
399
+ record(state, 'compat_narrowed', path, g, s, 'the general value is closed; the open specific value admits' +
400
+ ' surplus keys');
401
+ worse('no');
402
+ }
403
+ else {
404
+ for (const k of sKeys) {
405
+ if (!gKeys.includes(k)) {
406
+ record(state, 'compat_narrowed', [...path, k], g, child(s, k), 'the closed general value does not declare this key');
407
+ worse('no');
408
+ }
409
+ }
410
+ }
411
+ }
412
+ // Spread templates: a path-dependent template's meaning depends on
413
+ // where it lands, which no structural comparison can decide -- UNLESS
414
+ // the two templates are the same template. REFLEXIVITY IS A LAW and
415
+ // identity is the HASH FORM (the same rule the unresolved branch of
416
+ // subsumeNode applies): two byte-identical templates admit the same
417
+ // set wherever they land, so a document with a reference- or
418
+ // alias-valued template subsumes itself, and the comparison either
419
+ // side of the template is decided on its own merits rather than
420
+ // dragged to `undecided` (use-cases/BUGS.md 64). Where they are NOT
421
+ // identical, nothing structural can decide them and the fold stands.
422
+ const gcj = g.spread?.cj;
423
+ const scj = s.spread?.cj;
424
+ if (null != gcj || null != scj) {
425
+ const sameTemplate = null != gcj && null != scj && (0, hcanon_1.hcanon)(gcj) === (0, hcanon_1.hcanon)(scj);
426
+ if (!sameTemplate &&
427
+ (true === gcj?.isPathDependent || true === scj?.isPathDependent)) {
428
+ record(state, 'sub_path_dependent_spread', path, gcj ?? g, scj ?? s, 'a path-dependent spread template cannot be compared structurally');
429
+ worse('undecided');
430
+ }
431
+ else if (null != gcj) {
432
+ // The general template governs the specific side's surplus keys
433
+ // and its template.
434
+ for (const k of sKeys) {
435
+ if (!gKeys.includes(k)) {
436
+ worse(subsumeNode(state, [...path, k], gcj, child(s, k)));
437
+ }
438
+ }
439
+ worse(subsumeNode(state, [...path, '&'], gcj, scj ?? topLike()));
440
+ }
441
+ // A specific-only template narrows the specific side; nothing for
442
+ // the (unconstrained) general side to refuse.
443
+ }
444
+ return out;
445
+ }
446
+ // A stand-in TOP for "the specific side leaves this unconstrained".
447
+ let topVal;
448
+ function topLike() {
449
+ if (null == topVal) {
450
+ // A full site, not a partial one: `len` and `src` are as much part
451
+ // of the shape as row and col, and leaving them undefined dropped
452
+ // both keys from the emitted report — so this stand-in was the one
453
+ // site in either port with no `len` at all, and the Go twin (which
454
+ // has no undefined) disagreed. It occupies no source, so the values
455
+ // are the "unknown" ones.
456
+ topVal = {
457
+ isTop: true, canon: 'top',
458
+ site: { row: -1, col: -1, len: -1, src: '' },
459
+ };
460
+ }
461
+ return topVal;
462
+ }
463
+ // A trial comparison whose findings are DISCARDED: disjunct
464
+ // member-matching asks many "would this member do?" questions, and only
465
+ // the aggregated outcome is a finding.
466
+ // A DISTRIBUTION TRIAL IS NOT A NODE CORRESPONDENCE. It asks whether
467
+ // one ALTERNATIVE of one side admits one alternative of the other,
468
+ // which is a question about admitted sets; the two values it compares
469
+ // are not the same node of the two documents. The `gen` profile's mark
470
+ // rule is a correspondence question -- did a field that used to be
471
+ // generated become hidden -- and firing it here compared a whole
472
+ // disjunction (carrying its enclosing bag's mark) against a member
473
+ // extracted out of one (which does not), so `hide({c: *a|b})` stopped
474
+ // subsuming ITSELF under --profile gen (use-cases/BUGS.md §29). The
475
+ // enclosing node's marks are compared where they correspond: at that
476
+ // node, by the ordinary walk.
477
+ function trialSubsume(state, path, g, s) {
478
+ const trial = { ...state, findings: [], distributing: true };
479
+ return subsumeNode(trial, path, g, s);
480
+ }
481
+ // The defaults comparison (the `defaults` and `gen` profiles): the
482
+ // specific side's effective default must survive into the general side
483
+ // unchanged. Adding a default where none existed is compatible;
484
+ // changing or removing one is not (removal turns previously generable
485
+ // documents incomplete).
486
+ function subsumeDefaults(state, path, g, s) {
487
+ const sd = effectiveDefault(s);
488
+ if (undefined === sd) {
489
+ return 'yes';
490
+ }
491
+ const gd = effectiveDefault(g);
492
+ if ('indeterminate' === sd || 'indeterminate' === gd) {
493
+ record(state, 'sub_default_indeterminate', path, g, s, 'equal-rank preferences disagree, so the effective default is' +
494
+ ' not a single value');
495
+ return 'undecided';
496
+ }
497
+ if (undefined === gd || true !== gd.same?.(sd)) {
498
+ record(state, 'compat_default_changed', path, g, s, 'the effective default changed: previously generable documents' +
499
+ ' materialise differently or become incomplete');
500
+ return 'no';
501
+ }
502
+ return 'yes';
503
+ }
504
+ // Walk both trees for default agreement wherever the specific side has
505
+ // one: at the node itself and inside every corresponding bag child.
506
+ function subsumeDefaultsWalk(state, path, g, s) {
507
+ let out = subsumeDefaults(state, path, g, s);
508
+ const gm = true === g?.isMap ? g.peg : undefined;
509
+ const sm = true === s?.isMap ? s.peg : undefined;
510
+ if (null != gm && null != sm) {
511
+ for (const k of Object.keys(sm)) {
512
+ if (null != gm[k]) {
513
+ const r = subsumeDefaultsWalk(state, [...path, k], gm[k], sm[k]);
514
+ if ('no' === r || ('undecided' === r && 'no' !== out)) {
515
+ out = 'no' === r ? 'no' : 'undecided';
516
+ }
517
+ }
518
+ }
519
+ }
520
+ return out;
521
+ }
522
+ /**
523
+ * Does `generalSrc` subsume `specificSrc` — is every instance the
524
+ * specific admits admitted by the general too?
525
+ *
526
+ * Both sources are evaluated fresh (single-use trees make this
527
+ * mandatory), and the recursion runs on the finished values. The
528
+ * verdict is three-valued plus `error` (a source that does not stand up
529
+ * on its own, mirroring vet's schema-error verdict); findings reuse
530
+ * G2's object with class `compat`.
531
+ */
532
+ function subsume(generalSrc, specificSrc, opts) {
533
+ const options = opts ?? {};
534
+ const profile = options.profile ?? 'defaults';
535
+ const state = {
536
+ profile,
537
+ findings: [],
538
+ generalUrl: options.generalUrl ?? DEFAULT_GENERAL_URL,
539
+ specificUrl: options.specificUrl ?? DEFAULT_SPECIFIC_URL,
540
+ };
541
+ const load = (src, path) => {
542
+ const aontu = new aontu_1.Aontu(null == options.trust ? undefined : { trust: options.trust });
543
+ const ctx = aontu.ctx({ collect: true });
544
+ const v = aontu.unify(src, null == path ? undefined : { path }, ctx);
545
+ if (0 < ctx.err.length || true === v?.isNil) {
546
+ return undefined;
547
+ }
548
+ return v;
549
+ };
550
+ let g = load(generalSrc, options.generalPath);
551
+ let s = load(specificSrc, options.specificPath);
552
+ if (null == g || null == s) {
553
+ return { verdict: 'error', findings: [] };
554
+ }
555
+ if (null != options.at) {
556
+ g = (0, vet_1.anchorAt)(g, options.at);
557
+ s = (0, vet_1.anchorAt)(s, options.at);
558
+ if (null == g || null == s) {
559
+ return { verdict: 'error', findings: [] };
560
+ }
561
+ }
562
+ let out = subsumeNode(state, [], g, s);
563
+ if ('values' !== profile) {
564
+ const d = subsumeDefaultsWalk(state, [], g, s);
565
+ if ('no' === d || ('undecided' === d && 'no' !== out)) {
566
+ out = 'no' === d ? 'no' : 'undecided';
567
+ }
568
+ }
569
+ const verdict = 'no' === out ? 'does_not_subsume' :
570
+ 'undecided' === out ? 'undecided' : 'subsumes';
571
+ return { verdict, findings: state.findings };
572
+ }
573
+ //# sourceMappingURL=subsume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsume.js","sourceRoot":"","sources":["../src/subsume.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;AAyBpD,mCAA+B;AAC/B,+BAAgC;AAChC,qCAAiC;AAEjC,uDAG4B;AAC5B,uDAAkD;AAClD,2CAA0C;AAC1C,2CAA4C;AA8B5C,MAAM,mBAAmB,GAAG,SAAS,CAAA;AACrC,MAAM,oBAAoB,GAAG,UAAU,CAAA;AAmBvC,SAAS,QAAQ,CAAC,IAAc;IAC9B,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAC5D,CAAC;AAGD,sEAAsE;AACtE,uEAAuE;AACvE,wEAAwE;AACxE,4BAA4B;AAC5B,SAAS,MAAM,CAAC,CAAM,EAAE,IAAY,EAAE,GAAW;IAC/C,OAAO;QACL,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG;QACf,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG;QACf,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG;QACf,IAAI,EAAE,IAAW;QACjB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG;QACf,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAA;AACH,CAAC;AAGD,qEAAqE;AACrE,iEAAiE;AACjE,SAAS,MAAM,CACb,KAAe,EAAE,IAAY,EAAE,IAAc,EAC7C,CAAM,EAAE,CAAM,EAAE,OAAe;IAE/B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClB,IAAI;QACJ,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QACpB,OAAO;QACP,KAAK,EAAE;YACL,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC;YACtC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC;SACzC;QACD,QAAQ,EAAE,CAAC,CAAC,KAAK;QACjB,MAAM,EAAE,CAAC,CAAC,KAAK;KAChB,CAAC,CAAA;AACJ,CAAC;AAGD,mEAAmE;AACnE,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,YAAY;AACZ,SAAS,SAAS,CAAC,CAAM;IACvB,OAAO,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC;AAGD,sEAAsE;AACtE,2EAA2E;AAC3E,qEAAqE;AACrE,8DAA8D;AAC9D,uEAAuE;AACvE,uEAAuE;AACvE,mEAAmE;AACnE,uEAAuE;AACvE,sEAAsE;AACtE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,uEAAuE;AACvE,SAAS,eAAe,CAAC,CAAM;IAC7B,OAAO,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC;AAGD,sEAAsE;AACtE,kEAAkE;AAClE,6CAA6C;AAC7C,+DAA+D;AAC/D,oEAAoE;AACpE,qEAAqE;AACrE,MAAM;AACN,0BAAiC,CAAM;IACrC,gEAAgE;IAChE,qEAAqE;IACrE,iEAAiE;IACjE,qEAAqE;IACrE,4DAA4D;IAC5D,oDAAoD;IACpD,mEAAmE;IACnE,6CAA6C;IAC7C,IAAI,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,IAAA,sBAAY,EAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,EAAE,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,6DAA6D;QAC7D,0DAA0D;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;QACxD,MAAM,KAAK,GAAQ,IAAA,sBAAY,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAA,sBAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,OAAO,eAAe,CAAA;YACxB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAGD,oEAAoE;AACpE,4DAA4D;AAC5D,SAAS,UAAU,CAAC,CAAM;IACxB,IAAI,IAAI,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACpE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAGD,kEAAkE;AAClE,mEAAmE;AACnE,2BAA2B;AAC3B,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK;QAC3C,IAAI,KAAK,CAAC,EAAE,UAAU,IAAI,IAAI,KAAK,CAAC,EAAE,QAAQ;QAC9C,CAAC,IAAI,KAAK,CAAC,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE,YAAY,CAAC,CAAA;AACpD,CAAC;AAGD,qDAAqD;AACrD,qEAAqE;AACrE,sEAAsE;AACtE,wDAAwD;AACxD,qBACE,KAAe,EAAE,IAAc,EAAE,EAAO,EAAE,EAAO;IAEjD,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;IACvB,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;IAEvB,sEAAsE;IACtE,mEAAmE;IACnE,SAAS;IACT,IAAI,KAAK,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,KAAK,KAAK,CAAC,YAAY;QACxD,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI;YAClC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAC9C,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;YAClD,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6DAA6D;IAC7D,kEAAkE;IAClE,sEAAsE;IACtE,sEAAsE;IACtE,gEAAgE;IAChE,mCAAmC;IACnC,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,kEAAkE;QAClE,6DAA6D;QAC7D,oDAAoD;QACpD,iEAAiE;QACjE,+DAA+D;QAC/D,iEAAiE;QACjE,mEAAmE;QACnE,6DAA6D;QAC7D,2DAA2D;QAC3D,EAAE;QACF,mEAAmE;QACnE,mEAAmE;QACnE,gEAAgE;QAChE,8DAA8D;QAC9D,aAAa;QACb,IAAI,IAAA,eAAM,EAAC,CAAC,CAAC,KAAK,IAAA,eAAM,EAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACxC,wDAAwD,CAAC,CAAA;QAC3D,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,8DAA8D;IAC9D,oEAAoE;IACpE,oEAAoE;IACpE,mDAAmD;IACnD,IAAI,IAAI,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAQ,KAAK,CAAA;QACpB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,GAAY,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;YAClD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBACpB,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAClC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAC9C,6DAA6D,CAAC,CAAA;oBAChE,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,MAAM,CAAC,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EACxD,4DAA4D;oBAC5D,wDAAwD,CAAC,CAAA;gBAC3D,GAAG,GAAG,WAAW,CAAA;YACnB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,GAAY,EAAE,CAAC;YACjC,IAAI,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,kDAAkD,CAAC,CAAA;YACrD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACnD,+DAA+D;YAC/D,+DAA+D,CAAC,CAAA;QAClE,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,qEAAqE;IACrE,sCAAsC;IACtC,IAAI,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,IAAA,4BAAY,EAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,mDAAmD,CAAC,CAAA;YACtD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAA;YAC3B,IAAI,IAAI,KAAK,IAAI,EAAE,YAAY;gBAC7B,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,IAAA,4BAAY,EAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACxD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,qDAAqD,CAAC,CAAA;YACxD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;YAC7B,kEAAkE;YAClE,gEAAgE;YAChE,kEAAkE;YAClE,kEAAkE;YAClE,4DAA4D;YAC5D,MAAM,GAAG,GAAI,CAAS,CAAC,MAAM,CAAA;YAC7B,MAAM,KAAK,GAAI,CAAS,CAAC,IAAI,CAAA;YAC7B,IAAI,QAAQ,KAAK,GAAG;gBAClB,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG;oBACf,CAAC,IAAI,IAAI,KAAK,IAAI,IAAA,4BAAY,EAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,IAAI,QAAQ,KAAK,GAAG,IAAI,MAAM,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;gBACzC,OAAO,KAAK,CAAA;YACd,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,uDAAuD,CAAC,CAAA;YAC1D,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,uCAAuC,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mEAAmE;IACnE,gEAAgE;IAChE,mEAAmE;IACnE,uBAAuB;IACvB,IAAI,IAAI,KAAM,CAAS,EAAE,eAAe,EAAE,CAAC;QACzC,MAAM,EAAE,GAAQ,CAAC,CAAA;QACjB,MAAM,EAAE,GAAQ,CAAC,CAAA;QACjB,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,IAAI,IAAI,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;eACxE,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAClF,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,iDAAiD,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,IAAA,4CAA4B,EAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5C,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,KAAK,CAAA;YACd,CAAC;YACD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAC3C,6DAA6D,CAAC,CAAA;gBAChE,OAAO,WAAW,CAAA;YACpB,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,6DAA6D,CAAC,CAAA;YAChE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,IAAA,sCAAsB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACtC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,KAAK,CAAA;YACd,CAAC;YACD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAC3C,6DAA6D,CAAC,CAAA;gBAChE,OAAO,WAAW,CAAA;YACpB,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,yDAAyD,CAAC,CAAA;YAC5D,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,uEAAuE,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mEAAmE;IACnE,mEAAmE;IACnE,8DAA8D;IAC9D,wDAAwD;IACxD,IAAI,IAAI,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAM,CAAS,EAAE,MAAM;YAClD,IAAA,oBAAU,EAAC,CAAC,CAAC,GAAG,EAAG,CAAS,CAAC,GAAG,CAAC,KAAM,CAAS,CAAC,GAAG,EAAE,CAAC;YACvD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,EAAE,QAAQ,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,uCAAuC,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ;IACR,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QACtB,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,0DAA0D,CAAC,CAAA;YAC7D,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,oEAAoE;IACpE,mCAAmC;IACnC,IAAI,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,2DAA2D,CAAC,CAAA;YAC9D,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,EAAE,GAAI,CAAC,CAAC,GAAa,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9D,MAAM,EAAE,GAAI,CAAC,CAAC,GAAa,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9D,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EACzC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,qEAAqE;IACrE,6DAA6D;IAC7D,mEAAmE;IACnE,mEAAmE;IACnE,8DAA8D;IAC9D,EAAE;IACF,kEAAkE;IAClE,iEAAiE;IACjE,oEAAoE;IACpE,gEAAgE;IAChE,kEAAkE;IAClE,qEAAqE;IACrE,qEAAqE;IACrE,oEAAoE;IACpE,iEAAiE;IACjE,qBAAqB;IACrB,EAAE;IACF,iEAAiE;IACjE,kEAAkE;IAClE,4BAA4B;IAC5B,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,IAAA,eAAM,EAAC,CAAC,CAAC,KAAK,IAAA,eAAM,EAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACxC,uDAAuD,CAAC,CAAA;IAC1D,OAAO,WAAW,CAAA;AACpB,CAAC;AAGD,oEAAoE;AACpE,mEAAmE;AACnE,uEAAuE;AACvE,gDAAgD;AAChD,SAAS,UAAU,CACjB,KAAe,EAAE,IAAc,EAAE,CAAM,EAAE,CAAM,EAC/C,KAAe,EAAE,KAAe,EAChC,KAAiC;IAEjC,IAAI,GAAG,GAAQ,KAAK,CAAA;IACpB,MAAM,KAAK,GAAG,CAAC,CAAM,EAAE,EAAE;QACvB,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtD,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAA;QACvC,CAAC;IACH,CAAC,CAAA;IAED,+DAA+D;IAC/D,MAAM,SAAS,GAAa,CAAC,CAAC,YAAY,CAAA;IAC1C,MAAM,SAAS,GAAa,CAAC,CAAC,YAAY,CAAA;IAE1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC7B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAQ;YACV,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAC5D,gEAAgE;gBAChE,uBAAuB,CAAC,CAAA;YAC1B,KAAK,CAAC,IAAI,CAAC,CAAA;YACX,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EACzD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACX,+DAA+D;gBAC/D,oDAAoD,CAAC,CAAA;YACvD,KAAK,CAAC,IAAI,CAAC,CAAA;YACX,SAAQ;QACV,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzC,6DAA6D;gBAC7D,eAAe,CAAC,CAAA;YAClB,KAAK,CAAC,IAAI,CAAC,CAAA;QACb,CAAC;aACI,CAAC;YACJ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvB,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,oDAAoD,CAAC,CAAA;oBACvD,KAAK,CAAC,IAAI,CAAC,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,6DAA6D;IAC7D,mEAAmE;IACnE,gEAAgE;IAChE,oEAAoE;IACpE,qEAAqE;IACrE,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAA;IACxB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAA;IACxB,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,IAAA,eAAM,EAAC,GAAG,CAAC,CAAA;QAC9E,IAAI,CAAC,YAAY;YACf,CAAC,IAAI,KAAK,GAAG,EAAE,eAAe,IAAI,IAAI,KAAK,GAAG,EAAE,eAAe,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EACjE,kEAAkE,CAAC,CAAA;YACrE,KAAK,CAAC,WAAW,CAAC,CAAA;QACpB,CAAC;aACI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACrB,gEAAgE;YAChE,oBAAoB;YACpB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvB,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC3D,CAAC;YACH,CAAC;YACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC,CAAA;QAClE,CAAC;QACD,kEAAkE;QAClE,8CAA8C;IAChD,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD,oEAAoE;AACpE,IAAI,MAAW,CAAA;AACf,SAAS,OAAO;IACd,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnB,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,0BAA0B;QAC1B,MAAM,GAAG;YACP,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;YACzB,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;SAC7C,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAGD,4DAA4D;AAC5D,wEAAwE;AACxE,uCAAuC;AACvC,qEAAqE;AACrE,mEAAmE;AACnE,sEAAsE;AACtE,uEAAuE;AACvE,mEAAmE;AACnE,iEAAiE;AACjE,mEAAmE;AACnE,sEAAsE;AACtE,oEAAoE;AACpE,qEAAqE;AACrE,8BAA8B;AAC9B,SAAS,YAAY,CACnB,KAAe,EAAE,IAAc,EAAE,CAAM,EAAE,CAAM;IAC/C,MAAM,KAAK,GAAa,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA;IACtE,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACvC,CAAC;AAGD,mEAAmE;AACnE,uEAAuE;AACvE,gEAAgE;AAChE,sEAAsE;AACtE,yBAAyB;AACzB,SAAS,eAAe,CACtB,KAAe,EAAE,IAAc,EAAE,CAAM,EAAE,CAAM;IAC/C,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC9B,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC9B,IAAI,eAAe,KAAK,EAAE,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,CAAC,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACnD,8DAA8D;YAC9D,qBAAqB,CAAC,CAAA;QACxB,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,IAAI,SAAS,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAChD,+DAA+D;YAC/D,+CAA+C,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAGD,uEAAuE;AACvE,oEAAoE;AACpE,SAAS,mBAAmB,CAC1B,KAAe,EAAE,IAAc,EAAE,CAAM,EAAE,CAAM;IAC/C,IAAI,GAAG,GAAQ,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEjD,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,MAAM,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAChE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACtD,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAA;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD;;;;;;;;;GASG;AACH,iBACE,UAAkB,EAAE,WAAmB,EAAE,IAAqB;IAE9D,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAmB,OAAO,CAAC,OAAO,IAAI,UAAU,CAAA;IAC7D,MAAM,KAAK,GAAa;QACtB,OAAO;QACP,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,mBAAmB;QACrD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,oBAAoB;KACzD,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,IAAa,EAAO,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,aAAK,CACrB,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,MAAM,CAAC,GAAQ,KAAK,CAAC,KAAK,CACxB,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAChD,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IAED,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAC/C,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAC3C,CAAC;IAED,IAAI,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACvB,CAAC,GAAG,IAAA,cAAQ,EAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3B,CAAC,GAAG,IAAA,cAAQ,EAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3B,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,GAAG,GAAQ,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9C,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtD,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAA;QACvC,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GACX,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACjC,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAA;IAClD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAA;AAC9C,CAAC"}
package/dist/trim.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { VetFinding } from './vet';
2
+ import type { TrustOptions } from './type';
3
+ export type TrimVerdict = 'clean' | 'redundant' | 'error';
4
+ export type TrimReport = {
5
+ verdict: TrimVerdict;
6
+ redundant: string[];
7
+ errors?: VetFinding[];
8
+ };
9
+ export type TrimOptions = {
10
+ path?: string;
11
+ trust?: TrustOptions;
12
+ };
13
+ export declare function candidates(v: any, path: string[], out: string[][]): void;
14
+ export declare function deleteAt(root: any, path: string[]): boolean;
15
+ export declare function evalCanon(src: string, opts: TrimOptions, delPath?: string[], sink?: {
16
+ ctx?: any;
17
+ failed?: any;
18
+ }): string | undefined;
19
+ export declare function trimCheck(src: string, opts?: TrimOptions): TrimReport;