@stevenvo780/st-lang 4.7.0 → 4.9.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 (285) hide show
  1. package/dist/logic/profiles/quantum/index.d.ts +153 -0
  2. package/dist/logic/profiles/quantum/index.d.ts.map +1 -0
  3. package/dist/logic/profiles/quantum/index.js +788 -0
  4. package/dist/logic/profiles/quantum/index.js.map +1 -0
  5. package/dist/namespaces/reasoning.d.ts +3 -1
  6. package/dist/namespaces/reasoning.d.ts.map +1 -1
  7. package/dist/namespaces/reasoning.js +5 -1
  8. package/dist/namespaces/reasoning.js.map +1 -1
  9. package/dist/proof-systems/certificate/canonical.d.ts +18 -0
  10. package/dist/proof-systems/certificate/canonical.d.ts.map +1 -0
  11. package/dist/proof-systems/certificate/canonical.js +79 -0
  12. package/dist/proof-systems/certificate/canonical.js.map +1 -0
  13. package/dist/proof-systems/certificate/generate.d.ts +39 -0
  14. package/dist/proof-systems/certificate/generate.d.ts.map +1 -0
  15. package/dist/proof-systems/certificate/generate.js +259 -0
  16. package/dist/proof-systems/certificate/generate.js.map +1 -0
  17. package/dist/proof-systems/certificate/index.d.ts +7 -0
  18. package/dist/proof-systems/certificate/index.d.ts.map +1 -0
  19. package/dist/proof-systems/certificate/index.js +23 -0
  20. package/dist/proof-systems/certificate/index.js.map +1 -0
  21. package/dist/proof-systems/certificate/lfsc.d.ts +15 -0
  22. package/dist/proof-systems/certificate/lfsc.d.ts.map +1 -0
  23. package/dist/proof-systems/certificate/lfsc.js +395 -0
  24. package/dist/proof-systems/certificate/lfsc.js.map +1 -0
  25. package/dist/proof-systems/certificate/rules.d.ts +8 -0
  26. package/dist/proof-systems/certificate/rules.d.ts.map +1 -0
  27. package/dist/proof-systems/certificate/rules.js +369 -0
  28. package/dist/proof-systems/certificate/rules.js.map +1 -0
  29. package/dist/proof-systems/certificate/types.d.ts +114 -0
  30. package/dist/proof-systems/certificate/types.d.ts.map +1 -0
  31. package/dist/proof-systems/certificate/types.js +18 -0
  32. package/dist/proof-systems/certificate/types.js.map +1 -0
  33. package/dist/proof-systems/certificate/verify.d.ts +20 -0
  34. package/dist/proof-systems/certificate/verify.d.ts.map +1 -0
  35. package/dist/proof-systems/certificate/verify.js +171 -0
  36. package/dist/proof-systems/certificate/verify.js.map +1 -0
  37. package/dist/reasoning/ban-logic/analyze.d.ts +31 -0
  38. package/dist/reasoning/ban-logic/analyze.d.ts.map +1 -0
  39. package/dist/reasoning/ban-logic/analyze.js +113 -0
  40. package/dist/reasoning/ban-logic/analyze.js.map +1 -0
  41. package/dist/reasoning/ban-logic/index.d.ts +7 -0
  42. package/dist/reasoning/ban-logic/index.d.ts.map +1 -0
  43. package/dist/reasoning/ban-logic/index.js +66 -0
  44. package/dist/reasoning/ban-logic/index.js.map +1 -0
  45. package/dist/reasoning/ban-logic/protocols.d.ts +54 -0
  46. package/dist/reasoning/ban-logic/protocols.d.ts.map +1 -0
  47. package/dist/reasoning/ban-logic/protocols.js +219 -0
  48. package/dist/reasoning/ban-logic/protocols.js.map +1 -0
  49. package/dist/reasoning/ban-logic/rules.d.ts +83 -0
  50. package/dist/reasoning/ban-logic/rules.d.ts.map +1 -0
  51. package/dist/reasoning/ban-logic/rules.js +409 -0
  52. package/dist/reasoning/ban-logic/rules.js.map +1 -0
  53. package/dist/reasoning/ban-logic/terms.d.ts +26 -0
  54. package/dist/reasoning/ban-logic/terms.d.ts.map +1 -0
  55. package/dist/reasoning/ban-logic/terms.js +262 -0
  56. package/dist/reasoning/ban-logic/terms.js.map +1 -0
  57. package/dist/reasoning/ban-logic/types.d.ts +107 -0
  58. package/dist/reasoning/ban-logic/types.d.ts.map +1 -0
  59. package/dist/reasoning/ban-logic/types.js +27 -0
  60. package/dist/reasoning/ban-logic/types.js.map +1 -0
  61. package/dist/reasoning/combinatorial-games/index.d.ts +105 -0
  62. package/dist/reasoning/combinatorial-games/index.d.ts.map +1 -0
  63. package/dist/reasoning/combinatorial-games/index.js +377 -0
  64. package/dist/reasoning/combinatorial-games/index.js.map +1 -0
  65. package/dist/reasoning/differential-privacy/index.d.ts +121 -0
  66. package/dist/reasoning/differential-privacy/index.d.ts.map +1 -0
  67. package/dist/reasoning/differential-privacy/index.js +417 -0
  68. package/dist/reasoning/differential-privacy/index.js.map +1 -0
  69. package/dist/reasoning/mechanism-design/auctions.d.ts +49 -0
  70. package/dist/reasoning/mechanism-design/auctions.d.ts.map +1 -0
  71. package/dist/reasoning/mechanism-design/auctions.js +179 -0
  72. package/dist/reasoning/mechanism-design/auctions.js.map +1 -0
  73. package/dist/reasoning/mechanism-design/index.d.ts +5 -0
  74. package/dist/reasoning/mechanism-design/index.d.ts.map +1 -0
  75. package/dist/reasoning/mechanism-design/index.js +39 -0
  76. package/dist/reasoning/mechanism-design/index.js.map +1 -0
  77. package/dist/reasoning/mechanism-design/myerson.d.ts +64 -0
  78. package/dist/reasoning/mechanism-design/myerson.d.ts.map +1 -0
  79. package/dist/reasoning/mechanism-design/myerson.js +253 -0
  80. package/dist/reasoning/mechanism-design/myerson.js.map +1 -0
  81. package/dist/reasoning/mechanism-design/types.d.ts +44 -0
  82. package/dist/reasoning/mechanism-design/types.d.ts.map +1 -0
  83. package/dist/reasoning/mechanism-design/types.js +22 -0
  84. package/dist/reasoning/mechanism-design/types.js.map +1 -0
  85. package/dist/reasoning/mechanism-design/vcg.d.ts +29 -0
  86. package/dist/reasoning/mechanism-design/vcg.d.ts.map +1 -0
  87. package/dist/reasoning/mechanism-design/vcg.js +305 -0
  88. package/dist/reasoning/mechanism-design/vcg.js.map +1 -0
  89. package/dist/reasoning/probabilistic/distributions.d.ts +44 -0
  90. package/dist/reasoning/probabilistic/distributions.d.ts.map +1 -0
  91. package/dist/reasoning/probabilistic/distributions.js +207 -0
  92. package/dist/reasoning/probabilistic/distributions.js.map +1 -0
  93. package/dist/reasoning/probabilistic/examples.d.ts +31 -0
  94. package/dist/reasoning/probabilistic/examples.d.ts.map +1 -0
  95. package/dist/reasoning/probabilistic/examples.js +85 -0
  96. package/dist/reasoning/probabilistic/examples.js.map +1 -0
  97. package/dist/reasoning/probabilistic/index.d.ts +6 -0
  98. package/dist/reasoning/probabilistic/index.d.ts.map +1 -0
  99. package/dist/reasoning/probabilistic/index.js +42 -0
  100. package/dist/reasoning/probabilistic/index.js.map +1 -0
  101. package/dist/reasoning/probabilistic/inference.d.ts +45 -0
  102. package/dist/reasoning/probabilistic/inference.d.ts.map +1 -0
  103. package/dist/reasoning/probabilistic/inference.js +579 -0
  104. package/dist/reasoning/probabilistic/inference.js.map +1 -0
  105. package/dist/reasoning/probabilistic/types.d.ts +153 -0
  106. package/dist/reasoning/probabilistic/types.d.ts.map +1 -0
  107. package/dist/reasoning/probabilistic/types.js +37 -0
  108. package/dist/reasoning/probabilistic/types.js.map +1 -0
  109. package/dist/solver/smt-z3/index.d.ts +3 -0
  110. package/dist/solver/smt-z3/index.d.ts.map +1 -0
  111. package/dist/solver/smt-z3/index.js +11 -0
  112. package/dist/solver/smt-z3/index.js.map +1 -0
  113. package/dist/solver/smt-z3/types.d.ts +52 -0
  114. package/dist/solver/smt-z3/types.d.ts.map +1 -0
  115. package/dist/solver/smt-z3/types.js +6 -0
  116. package/dist/solver/smt-z3/types.js.map +1 -0
  117. package/dist/solver/smt-z3/z3-wasm-backend.d.ts +88 -0
  118. package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -0
  119. package/dist/solver/smt-z3/z3-wasm-backend.js +437 -0
  120. package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -0
  121. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts +2 -0
  122. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts.map +1 -0
  123. package/dist/tests/logic/profiles/quantum/quantum.test.js +209 -0
  124. package/dist/tests/logic/profiles/quantum/quantum.test.js.map +1 -0
  125. package/dist/tests/proof-systems/certificate/certificate.test.d.ts +2 -0
  126. package/dist/tests/proof-systems/certificate/certificate.test.d.ts.map +1 -0
  127. package/dist/tests/proof-systems/certificate/certificate.test.js +449 -0
  128. package/dist/tests/proof-systems/certificate/certificate.test.js.map +1 -0
  129. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts +2 -0
  130. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts.map +1 -0
  131. package/dist/tests/reasoning/ban-logic/ban-logic.test.js +270 -0
  132. package/dist/tests/reasoning/ban-logic/ban-logic.test.js.map +1 -0
  133. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts +2 -0
  134. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts.map +1 -0
  135. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js +203 -0
  136. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js.map +1 -0
  137. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts +2 -0
  138. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts.map +1 -0
  139. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js +388 -0
  140. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js.map +1 -0
  141. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts +2 -0
  142. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts.map +1 -0
  143. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js +290 -0
  144. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js.map +1 -0
  145. package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts +2 -0
  146. package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts.map +1 -0
  147. package/dist/tests/reasoning/probabilistic/probabilistic.test.js +370 -0
  148. package/dist/tests/reasoning/probabilistic/probabilistic.test.js.map +1 -0
  149. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts +2 -0
  150. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts.map +1 -0
  151. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js +394 -0
  152. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -0
  153. package/dist/tests/tooling/mathlib/mathlib.test.d.ts +2 -0
  154. package/dist/tests/tooling/mathlib/mathlib.test.d.ts.map +1 -0
  155. package/dist/tests/tooling/mathlib/mathlib.test.js +214 -0
  156. package/dist/tests/tooling/mathlib/mathlib.test.js.map +1 -0
  157. package/dist/tests/tooling/proof-guidance/features.test.d.ts +2 -0
  158. package/dist/tests/tooling/proof-guidance/features.test.d.ts.map +1 -0
  159. package/dist/tests/tooling/proof-guidance/features.test.js +72 -0
  160. package/dist/tests/tooling/proof-guidance/features.test.js.map +1 -0
  161. package/dist/tests/tooling/proof-guidance/model.test.d.ts +2 -0
  162. package/dist/tests/tooling/proof-guidance/model.test.d.ts.map +1 -0
  163. package/dist/tests/tooling/proof-guidance/model.test.js +165 -0
  164. package/dist/tests/tooling/proof-guidance/model.test.js.map +1 -0
  165. package/dist/tests/tooling/proof-guidance/search.test.d.ts +2 -0
  166. package/dist/tests/tooling/proof-guidance/search.test.d.ts.map +1 -0
  167. package/dist/tests/tooling/proof-guidance/search.test.js +238 -0
  168. package/dist/tests/tooling/proof-guidance/search.test.js.map +1 -0
  169. package/dist/tests/type-theory/cubical/cubical.test.d.ts +2 -0
  170. package/dist/tests/type-theory/cubical/cubical.test.d.ts.map +1 -0
  171. package/dist/tests/type-theory/cubical/cubical.test.js +207 -0
  172. package/dist/tests/type-theory/cubical/cubical.test.js.map +1 -0
  173. package/dist/tests/type-theory/effects/effects.test.d.ts +2 -0
  174. package/dist/tests/type-theory/effects/effects.test.d.ts.map +1 -0
  175. package/dist/tests/type-theory/effects/effects.test.js +242 -0
  176. package/dist/tests/type-theory/effects/effects.test.js.map +1 -0
  177. package/dist/tooling/mathlib/group.d.ts +27 -0
  178. package/dist/tooling/mathlib/group.d.ts.map +1 -0
  179. package/dist/tooling/mathlib/group.js +89 -0
  180. package/dist/tooling/mathlib/group.js.map +1 -0
  181. package/dist/tooling/mathlib/index.d.ts +8 -0
  182. package/dist/tooling/mathlib/index.d.ts.map +1 -0
  183. package/dist/tooling/mathlib/index.js +40 -0
  184. package/dist/tooling/mathlib/index.js.map +1 -0
  185. package/dist/tooling/mathlib/instances.d.ts +29 -0
  186. package/dist/tooling/mathlib/instances.d.ts.map +1 -0
  187. package/dist/tooling/mathlib/instances.js +139 -0
  188. package/dist/tooling/mathlib/instances.js.map +1 -0
  189. package/dist/tooling/mathlib/lemmas.d.ts +3 -0
  190. package/dist/tooling/mathlib/lemmas.d.ts.map +1 -0
  191. package/dist/tooling/mathlib/lemmas.js +72 -0
  192. package/dist/tooling/mathlib/lemmas.js.map +1 -0
  193. package/dist/tooling/mathlib/order.d.ts +29 -0
  194. package/dist/tooling/mathlib/order.d.ts.map +1 -0
  195. package/dist/tooling/mathlib/order.js +91 -0
  196. package/dist/tooling/mathlib/order.js.map +1 -0
  197. package/dist/tooling/mathlib/ring.d.ts +15 -0
  198. package/dist/tooling/mathlib/ring.d.ts.map +1 -0
  199. package/dist/tooling/mathlib/ring.js +91 -0
  200. package/dist/tooling/mathlib/ring.js.map +1 -0
  201. package/dist/tooling/mathlib/types.d.ts +62 -0
  202. package/dist/tooling/mathlib/types.d.ts.map +1 -0
  203. package/dist/tooling/mathlib/types.js +7 -0
  204. package/dist/tooling/mathlib/types.js.map +1 -0
  205. package/dist/tooling/proof-guidance/features.d.ts +10 -0
  206. package/dist/tooling/proof-guidance/features.d.ts.map +1 -0
  207. package/dist/tooling/proof-guidance/features.js +97 -0
  208. package/dist/tooling/proof-guidance/features.js.map +1 -0
  209. package/dist/tooling/proof-guidance/index.d.ts +5 -0
  210. package/dist/tooling/proof-guidance/index.d.ts.map +1 -0
  211. package/dist/tooling/proof-guidance/index.js +25 -0
  212. package/dist/tooling/proof-guidance/index.js.map +1 -0
  213. package/dist/tooling/proof-guidance/model.d.ts +42 -0
  214. package/dist/tooling/proof-guidance/model.d.ts.map +1 -0
  215. package/dist/tooling/proof-guidance/model.js +149 -0
  216. package/dist/tooling/proof-guidance/model.js.map +1 -0
  217. package/dist/tooling/proof-guidance/search.d.ts +7 -0
  218. package/dist/tooling/proof-guidance/search.d.ts.map +1 -0
  219. package/dist/tooling/proof-guidance/search.js +102 -0
  220. package/dist/tooling/proof-guidance/search.js.map +1 -0
  221. package/dist/tooling/proof-guidance/types.d.ts +77 -0
  222. package/dist/tooling/proof-guidance/types.d.ts.map +1 -0
  223. package/dist/tooling/proof-guidance/types.js +8 -0
  224. package/dist/tooling/proof-guidance/types.js.map +1 -0
  225. package/dist/type-theory/cubical/equality.d.ts +4 -0
  226. package/dist/type-theory/cubical/equality.d.ts.map +1 -0
  227. package/dist/type-theory/cubical/equality.js +78 -0
  228. package/dist/type-theory/cubical/equality.js.map +1 -0
  229. package/dist/type-theory/cubical/index.d.ts +14 -0
  230. package/dist/type-theory/cubical/index.d.ts.map +1 -0
  231. package/dist/type-theory/cubical/index.js +71 -0
  232. package/dist/type-theory/cubical/index.js.map +1 -0
  233. package/dist/type-theory/cubical/infer.d.ts +18 -0
  234. package/dist/type-theory/cubical/infer.d.ts.map +1 -0
  235. package/dist/type-theory/cubical/infer.js +241 -0
  236. package/dist/type-theory/cubical/infer.js.map +1 -0
  237. package/dist/type-theory/cubical/interval.d.ts +12 -0
  238. package/dist/type-theory/cubical/interval.d.ts.map +1 -0
  239. package/dist/type-theory/cubical/interval.js +118 -0
  240. package/dist/type-theory/cubical/interval.js.map +1 -0
  241. package/dist/type-theory/cubical/normalize.d.ts +5 -0
  242. package/dist/type-theory/cubical/normalize.d.ts.map +1 -0
  243. package/dist/type-theory/cubical/normalize.js +191 -0
  244. package/dist/type-theory/cubical/normalize.js.map +1 -0
  245. package/dist/type-theory/cubical/path-algebra.d.ts +12 -0
  246. package/dist/type-theory/cubical/path-algebra.d.ts.map +1 -0
  247. package/dist/type-theory/cubical/path-algebra.js +109 -0
  248. package/dist/type-theory/cubical/path-algebra.js.map +1 -0
  249. package/dist/type-theory/cubical/substitute.d.ts +3 -0
  250. package/dist/type-theory/cubical/substitute.d.ts.map +1 -0
  251. package/dist/type-theory/cubical/substitute.js +109 -0
  252. package/dist/type-theory/cubical/substitute.js.map +1 -0
  253. package/dist/type-theory/cubical/types.d.ts +77 -0
  254. package/dist/type-theory/cubical/types.d.ts.map +1 -0
  255. package/dist/type-theory/cubical/types.js +258 -0
  256. package/dist/type-theory/cubical/types.js.map +1 -0
  257. package/dist/type-theory/effects/core.d.ts +27 -0
  258. package/dist/type-theory/effects/core.d.ts.map +1 -0
  259. package/dist/type-theory/effects/core.js +79 -0
  260. package/dist/type-theory/effects/core.js.map +1 -0
  261. package/dist/type-theory/effects/exception.d.ts +18 -0
  262. package/dist/type-theory/effects/exception.d.ts.map +1 -0
  263. package/dist/type-theory/effects/exception.js +59 -0
  264. package/dist/type-theory/effects/exception.js.map +1 -0
  265. package/dist/type-theory/effects/index.d.ts +11 -0
  266. package/dist/type-theory/effects/index.d.ts.map +1 -0
  267. package/dist/type-theory/effects/index.js +50 -0
  268. package/dist/type-theory/effects/index.js.map +1 -0
  269. package/dist/type-theory/effects/reader.d.ts +20 -0
  270. package/dist/type-theory/effects/reader.d.ts.map +1 -0
  271. package/dist/type-theory/effects/reader.js +62 -0
  272. package/dist/type-theory/effects/reader.js.map +1 -0
  273. package/dist/type-theory/effects/state.d.ts +31 -0
  274. package/dist/type-theory/effects/state.d.ts.map +1 -0
  275. package/dist/type-theory/effects/state.js +91 -0
  276. package/dist/type-theory/effects/state.js.map +1 -0
  277. package/dist/type-theory/effects/types.d.ts +45 -0
  278. package/dist/type-theory/effects/types.d.ts.map +1 -0
  279. package/dist/type-theory/effects/types.js +21 -0
  280. package/dist/type-theory/effects/types.js.map +1 -0
  281. package/dist/type-theory/effects/writer.d.ts +30 -0
  282. package/dist/type-theory/effects/writer.d.ts.map +1 -0
  283. package/dist/type-theory/effects/writer.js +79 -0
  284. package/dist/type-theory/effects/writer.js.map +1 -0
  285. package/package.json +1 -1
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // BAN Logic — Constructores y equality de términos/fórmulas
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formulaAnd = exports.controls = exports.sharedSecret = exports.publicKey = exports.sharedKey = exports.fresh = exports.jurisdiction = exports.saidMessage = exports.said = exports.sees = exports.believes = exports.compound = exports.hashed = exports.encrypted = exports.message = exports.atom = exports.nonce = exports.key = exports.principal = void 0;
7
+ exports.termEquals = termEquals;
8
+ exports.formulaEquals = formulaEquals;
9
+ exports.hasFormula = hasFormula;
10
+ exports.termToString = termToString;
11
+ exports.formulaToString = formulaToString;
12
+ /* ── Constructores de términos ── */
13
+ const principal = (name) => ({ kind: 'principal', name });
14
+ exports.principal = principal;
15
+ const key = (name, shared) => shared ? { kind: 'key', name, shared } : { kind: 'key', name };
16
+ exports.key = key;
17
+ const nonce = (name) => ({ kind: 'nonce', name });
18
+ exports.nonce = nonce;
19
+ const atom = (name) => ({ kind: 'atom', name });
20
+ exports.atom = atom;
21
+ const message = (...content) => ({ kind: 'message', content });
22
+ exports.message = message;
23
+ const encrypted = (msg, k) => ({
24
+ kind: 'encrypted',
25
+ message: msg,
26
+ key: k,
27
+ });
28
+ exports.encrypted = encrypted;
29
+ const hashed = (msg) => ({ kind: 'hashed', message: msg });
30
+ exports.hashed = hashed;
31
+ const compound = (...parts) => ({ kind: 'compound', parts });
32
+ exports.compound = compound;
33
+ /* ── Constructores de fórmulas ── */
34
+ const believes = (p, f) => ({
35
+ kind: 'believes',
36
+ principal: p,
37
+ about: f,
38
+ });
39
+ exports.believes = believes;
40
+ const sees = (p, w) => ({
41
+ kind: 'sees',
42
+ principal: p,
43
+ what: w,
44
+ });
45
+ exports.sees = sees;
46
+ const said = (p, f) => ({
47
+ kind: 'said',
48
+ principal: p,
49
+ what: f,
50
+ });
51
+ exports.said = said;
52
+ const saidMessage = (p, w) => ({
53
+ kind: 'said-message',
54
+ principal: p,
55
+ what: w,
56
+ });
57
+ exports.saidMessage = saidMessage;
58
+ const jurisdiction = (p, f) => ({
59
+ kind: 'jurisdiction',
60
+ principal: p,
61
+ over: f,
62
+ });
63
+ exports.jurisdiction = jurisdiction;
64
+ const fresh = (w) => ({ kind: 'fresh', what: w });
65
+ exports.fresh = fresh;
66
+ const sharedKey = (a, b, k) => ({
67
+ kind: 'sharedKey',
68
+ a,
69
+ b,
70
+ key: k,
71
+ });
72
+ exports.sharedKey = sharedKey;
73
+ const publicKey = (p, k) => ({
74
+ kind: 'publicKey',
75
+ principal: p,
76
+ key: k,
77
+ });
78
+ exports.publicKey = publicKey;
79
+ const sharedSecret = (a, b, s) => ({
80
+ kind: 'sharedSecret',
81
+ a,
82
+ b,
83
+ secret: s,
84
+ });
85
+ exports.sharedSecret = sharedSecret;
86
+ const controls = (p, f) => ({
87
+ kind: 'controls',
88
+ principal: p,
89
+ statement: f,
90
+ });
91
+ exports.controls = controls;
92
+ const formulaAnd = (left, right) => ({
93
+ kind: 'formula-and',
94
+ left,
95
+ right,
96
+ });
97
+ exports.formulaAnd = formulaAnd;
98
+ /* ── Igualdad estructural ── */
99
+ function termEquals(a, b) {
100
+ if (a.kind !== b.kind)
101
+ return false;
102
+ switch (a.kind) {
103
+ case 'principal':
104
+ case 'nonce':
105
+ case 'atom':
106
+ // narrow b to a kind with .name
107
+ return b.name === a.name;
108
+ case 'key': {
109
+ const bk = b;
110
+ if (bk.name !== a.name)
111
+ return false;
112
+ const as = a.shared;
113
+ const bs = bk.shared;
114
+ if (!as && !bs)
115
+ return true;
116
+ if (!as || !bs)
117
+ return false;
118
+ // Shared pair es bi-direccional: {A,B} == {B,A}.
119
+ return (as[0] === bs[0] && as[1] === bs[1]) || (as[0] === bs[1] && as[1] === bs[0]);
120
+ }
121
+ case 'message': {
122
+ const bm = b;
123
+ if (a.content.length !== bm.content.length)
124
+ return false;
125
+ for (let i = 0; i < a.content.length; i++) {
126
+ const ai = a.content[i];
127
+ const bi = bm.content[i];
128
+ if (!ai || !bi)
129
+ return false;
130
+ if (!termEquals(ai, bi))
131
+ return false;
132
+ }
133
+ return true;
134
+ }
135
+ case 'compound': {
136
+ const bc = b;
137
+ if (a.parts.length !== bc.parts.length)
138
+ return false;
139
+ for (let i = 0; i < a.parts.length; i++) {
140
+ const ai = a.parts[i];
141
+ const bi = bc.parts[i];
142
+ if (!ai || !bi)
143
+ return false;
144
+ if (!termEquals(ai, bi))
145
+ return false;
146
+ }
147
+ return true;
148
+ }
149
+ case 'encrypted': {
150
+ const be = b;
151
+ return termEquals(a.message, be.message) && termEquals(a.key, be.key);
152
+ }
153
+ case 'hashed': {
154
+ const bh = b;
155
+ return termEquals(a.message, bh.message);
156
+ }
157
+ }
158
+ }
159
+ function formulaEquals(a, b) {
160
+ if (a.kind !== b.kind)
161
+ return false;
162
+ switch (a.kind) {
163
+ case 'believes': {
164
+ const bb = b;
165
+ return termEquals(a.principal, bb.principal) && formulaEquals(a.about, bb.about);
166
+ }
167
+ case 'sees': {
168
+ const bs = b;
169
+ return termEquals(a.principal, bs.principal) && termEquals(a.what, bs.what);
170
+ }
171
+ case 'said': {
172
+ const bs = b;
173
+ return termEquals(a.principal, bs.principal) && formulaEquals(a.what, bs.what);
174
+ }
175
+ case 'said-message': {
176
+ const bs = b;
177
+ return termEquals(a.principal, bs.principal) && termEquals(a.what, bs.what);
178
+ }
179
+ case 'jurisdiction': {
180
+ const bj = b;
181
+ return termEquals(a.principal, bj.principal) && formulaEquals(a.over, bj.over);
182
+ }
183
+ case 'fresh': {
184
+ const bf = b;
185
+ return termEquals(a.what, bf.what);
186
+ }
187
+ case 'sharedKey': {
188
+ const bs = b;
189
+ // El predicado "A ↔K B" es simétrico en (A,B).
190
+ const ab = termEquals(a.a, bs.a) && termEquals(a.b, bs.b);
191
+ const ba = termEquals(a.a, bs.b) && termEquals(a.b, bs.a);
192
+ return (ab || ba) && termEquals(a.key, bs.key);
193
+ }
194
+ case 'publicKey': {
195
+ const bp = b;
196
+ return termEquals(a.principal, bp.principal) && termEquals(a.key, bp.key);
197
+ }
198
+ case 'sharedSecret': {
199
+ const bs = b;
200
+ const ab = termEquals(a.a, bs.a) && termEquals(a.b, bs.b);
201
+ const ba = termEquals(a.a, bs.b) && termEquals(a.b, bs.a);
202
+ return (ab || ba) && termEquals(a.secret, bs.secret);
203
+ }
204
+ case 'controls': {
205
+ const bc = b;
206
+ return termEquals(a.principal, bc.principal) && formulaEquals(a.statement, bc.statement);
207
+ }
208
+ case 'formula-and': {
209
+ const ba = b;
210
+ return formulaEquals(a.left, ba.left) && formulaEquals(a.right, ba.right);
211
+ }
212
+ }
213
+ }
214
+ function hasFormula(state, target) {
215
+ return state.some((f) => formulaEquals(f, target));
216
+ }
217
+ /* ── Pretty printing ── */
218
+ function termToString(t) {
219
+ switch (t.kind) {
220
+ case 'principal':
221
+ case 'nonce':
222
+ case 'atom':
223
+ return t.name;
224
+ case 'key':
225
+ return t.shared ? `K_${t.shared[0]}${t.shared[1]}` : t.name;
226
+ case 'message':
227
+ return `<${t.content.map(termToString).join(', ')}>`;
228
+ case 'compound':
229
+ return `(${t.parts.map(termToString).join(' · ')})`;
230
+ case 'encrypted':
231
+ return `{${termToString(t.message)}}_${termToString(t.key)}`;
232
+ case 'hashed':
233
+ return `H(${termToString(t.message)})`;
234
+ }
235
+ }
236
+ function formulaToString(f) {
237
+ switch (f.kind) {
238
+ case 'believes':
239
+ return `${termToString(f.principal)} |≡ ${formulaToString(f.about)}`;
240
+ case 'sees':
241
+ return `${termToString(f.principal)} ◁ ${termToString(f.what)}`;
242
+ case 'said':
243
+ return `${termToString(f.principal)} |~ ${formulaToString(f.what)}`;
244
+ case 'said-message':
245
+ return `${termToString(f.principal)} |~ ${termToString(f.what)}`;
246
+ case 'jurisdiction':
247
+ return `${termToString(f.principal)} |⇒ ${formulaToString(f.over)}`;
248
+ case 'fresh':
249
+ return `#(${termToString(f.what)})`;
250
+ case 'sharedKey':
251
+ return `${termToString(f.a)} ↔${termToString(f.key)} ${termToString(f.b)}`;
252
+ case 'publicKey':
253
+ return `|→${termToString(f.key)} ${termToString(f.principal)}`;
254
+ case 'sharedSecret':
255
+ return `${termToString(f.a)} ⇌${termToString(f.secret)} ${termToString(f.b)}`;
256
+ case 'controls':
257
+ return `${termToString(f.principal)} |⇒ ${formulaToString(f.statement)}`;
258
+ case 'formula-and':
259
+ return `(${formulaToString(f.left)}) ∧ (${formulaToString(f.right)})`;
260
+ }
261
+ }
262
+ //# sourceMappingURL=terms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terms.js","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/terms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Un término BAN es un objeto del dominio: principal (agente), clave,
3
+ * nonce, mensaje compuesto, mensaje cifrado, hash o término genérico.
4
+ */
5
+ export type BANTerm = {
6
+ kind: 'principal';
7
+ name: string;
8
+ } | {
9
+ kind: 'key';
10
+ name: string;
11
+ shared?: [string, string];
12
+ } | {
13
+ kind: 'nonce';
14
+ name: string;
15
+ } | {
16
+ kind: 'message';
17
+ content: BANTerm[];
18
+ } | {
19
+ kind: 'encrypted';
20
+ message: BANTerm;
21
+ key: BANTerm;
22
+ } | {
23
+ kind: 'hashed';
24
+ message: BANTerm;
25
+ } | {
26
+ kind: 'compound';
27
+ parts: BANTerm[];
28
+ } | {
29
+ kind: 'atom';
30
+ name: string;
31
+ };
32
+ /**
33
+ * Una fórmula BAN es una proposición sobre creencias, posesión o
34
+ * propiedades de términos. Es lo que las reglas manipulan.
35
+ *
36
+ * Nota: tratamos `said` y `said-message` por separado porque BAN distingue
37
+ * entre "P dijo una fórmula completa" (raro) y "P dijo un término"
38
+ * (caso usual; lo que aparece en mensajes ciphered).
39
+ */
40
+ export type BANFormula = {
41
+ kind: 'believes';
42
+ principal: BANTerm;
43
+ about: BANFormula;
44
+ } | {
45
+ kind: 'sees';
46
+ principal: BANTerm;
47
+ what: BANTerm;
48
+ } | {
49
+ kind: 'said';
50
+ principal: BANTerm;
51
+ what: BANFormula;
52
+ } | {
53
+ kind: 'said-message';
54
+ principal: BANTerm;
55
+ what: BANTerm;
56
+ } | {
57
+ kind: 'jurisdiction';
58
+ principal: BANTerm;
59
+ over: BANFormula;
60
+ } | {
61
+ kind: 'fresh';
62
+ what: BANTerm;
63
+ } | {
64
+ kind: 'sharedKey';
65
+ a: BANTerm;
66
+ b: BANTerm;
67
+ key: BANTerm;
68
+ } | {
69
+ kind: 'publicKey';
70
+ principal: BANTerm;
71
+ key: BANTerm;
72
+ } | {
73
+ kind: 'sharedSecret';
74
+ a: BANTerm;
75
+ b: BANTerm;
76
+ secret: BANTerm;
77
+ } | {
78
+ kind: 'controls';
79
+ principal: BANTerm;
80
+ statement: BANFormula;
81
+ } | {
82
+ kind: 'formula-and';
83
+ left: BANFormula;
84
+ right: BANFormula;
85
+ };
86
+ export interface BANRule {
87
+ name: string;
88
+ description: string;
89
+ }
90
+ export interface ProtocolStep {
91
+ from: string;
92
+ to: string;
93
+ message: BANTerm;
94
+ }
95
+ export interface Protocol {
96
+ name: string;
97
+ participants: string[];
98
+ initialAssumptions: BANFormula[];
99
+ steps: ProtocolStep[];
100
+ goals: BANFormula[];
101
+ }
102
+ export interface ProtocolAnalysis {
103
+ satisfied: BANFormula[];
104
+ unsatisfied: BANFormula[];
105
+ trace: BANFormula[];
106
+ }
107
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // BAN Logic — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Burrows-Abadi-Needham logic (1989): cálculo modal de creencias para
7
+ // análisis de protocolos criptográficos de autenticación.
8
+ //
9
+ // Símbolos (notación estándar BAN):
10
+ //
11
+ // P |≡ X "P believes X" P cree X
12
+ // P ◁ X "P sees X" P ve X (recibió un mensaje con X)
13
+ // P |~ X "P once said X" P dijo X alguna vez
14
+ // P |⇒ X "P has jurisdiction over X" P es autoridad sobre X
15
+ // #(X) "fresh X" X es fresco (nonce reciente)
16
+ // P ↔K Q "K is shared between P, Q" K es clave compartida
17
+ // |→K P "K is public key for P" K es la clave pública de P
18
+ // P ⇌X Q "X is shared secret" X es un secreto compartido
19
+ // {X}_K "X encrypted with K" X cifrado con K
20
+ // <X>_Y "X combined with secret Y" X concatenado con secreto Y
21
+ // H(X) "hash of X" hash de X
22
+ //
23
+ // Reglas de inferencia clásicas (10): message-meaning (3 variantes:
24
+ // shared-key, public-key, shared-secret), nonce-verification,
25
+ // jurisdiction, freshness propagation, belief conjunction, seeing rules.
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,6BAA6B;AAC7B,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAC1D,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,sDAAsD;AACtD,+EAA+E;AAC/E,iEAAiE;AACjE,oEAAoE;AACpE,0EAA0E;AAC1E,mEAAmE;AACnE,wEAAwE;AACxE,wEAAwE;AACxE,6DAA6D;AAC7D,yEAAyE;AACzE,uDAAuD;AACvD,EAAE;AACF,oEAAoE;AACpE,8DAA8D;AAC9D,yEAAyE"}
@@ -0,0 +1,105 @@
1
+ export interface ImpartialGame<S> {
2
+ readonly initial: S;
3
+ readonly moves: (state: S) => S[];
4
+ readonly isTerminal: (state: S) => boolean;
5
+ readonly key?: (state: S) => string;
6
+ }
7
+ /**
8
+ * Minimum Excludant: menor entero ≥ 0 que no está en el conjunto.
9
+ * mex(∅) = 0, mex({0,1,3}) = 2, mex({1,2}) = 0.
10
+ */
11
+ export declare function mex(set: Set<number>): number;
12
+ /**
13
+ * Valor de Grundy del estado dado bajo el juego imparcial.
14
+ * Define: G(terminal) = 0; G(s) = mex { G(s') : s' ∈ moves(s) }.
15
+ * Usa caché (compartido entre llamadas) keyed por la clave canónica del estado.
16
+ */
17
+ export declare function grundyValue<S>(game: ImpartialGame<S>, state: S, cache?: Map<string, number>): number;
18
+ /**
19
+ * El jugador a mover gana sii grundy ≠ 0 (juego imparcial con convención
20
+ * normal: el que no puede mover, pierde).
21
+ */
22
+ export declare function isWinning<S>(game: ImpartialGame<S>, state: S): boolean;
23
+ /**
24
+ * Nim-sum: XOR bit a bit de los valores. Identidad del monoide de Grundy
25
+ * bajo suma disjunta de juegos imparciales.
26
+ */
27
+ export declare function nimSum(values: number[]): number;
28
+ /**
29
+ * Grundy de la suma disjunta de juegos imparciales independientes:
30
+ * G(G1 + G2 + ... + Gn)(s1,...,sn) = G1(s1) ⊕ G2(s2) ⊕ ... ⊕ Gn(sn).
31
+ * Requiere games.length === states.length.
32
+ */
33
+ export declare function multiGameGrundy<S>(games: Array<ImpartialGame<S>>, states: S[]): number;
34
+ /**
35
+ * Nim clásico: varios montones de piedras, un movimiento = sacar ≥1
36
+ * piedras de un único montón. Pierde quien no puede mover (todos los
37
+ * montones a 0). Estado: vector de tamaños (normalizado, sin ceros y
38
+ * ordenado descendente para que el caché sea efectivo entre simetrías).
39
+ */
40
+ export declare function nim(piles: number[]): ImpartialGame<number[]>;
41
+ /**
42
+ * Nim 1D: una sola pila de `stones` piedras; sacar 1..stones. Equivale
43
+ * a `nim([stones])` pero con estado más compacto (un número).
44
+ */
45
+ export declare function nim1d(stones: number): ImpartialGame<number>;
46
+ /**
47
+ * Chomp: tablero rows×cols de "chocolate". Cada movida elige una casilla
48
+ * viva (true) y "muerde" todo el rectángulo abajo-derecha desde ella. La
49
+ * casilla (0,0) es veneno: quien la come pierde (convención misère
50
+ * implementada como: estado terminal cuando solo queda (0,0)).
51
+ *
52
+ * Estado: matriz booleana rows×cols con true = casilla viva.
53
+ *
54
+ * Nota: Chomp tiene posición ganadora conocida para el primer jugador
55
+ * en todo tablero ≥ 2×2 (argumento de robo de estrategia), pero la
56
+ * estrategia explícita es desconocida en general. Para 1×1 (sólo el
57
+ * veneno) el jugador a mover pierde, así que grundy = 0.
58
+ */
59
+ export declare function chompGame(rows: number, cols: number): ImpartialGame<boolean[][]>;
60
+ export interface SurrealNumber {
61
+ readonly left: SurrealNumber[];
62
+ readonly right: SurrealNumber[];
63
+ }
64
+ /** 0 = { | } — sin opciones para ninguno; "second player wins". */
65
+ export declare const ZERO: SurrealNumber;
66
+ /** 1 = { 0 | }. */
67
+ export declare const ONE: SurrealNumber;
68
+ /** -1 = { | 0 }. */
69
+ export declare const MINUS_ONE: SurrealNumber;
70
+ /** * (star) = { 0 | 0 } — primer jugador gana, no comparable a 0 (fuzzy). */
71
+ export declare const STAR: SurrealNumber;
72
+ /**
73
+ * Construye el surreal correspondiente al entero `n`.
74
+ * 0 = { | }
75
+ * n = { n-1 | } (n > 0)
76
+ * -n = { | -(n-1) } (n < 0)
77
+ */
78
+ export declare function fromInt(n: number): SurrealNumber;
79
+ /**
80
+ * Negación: -G = { -GR | -GL }.
81
+ */
82
+ export declare function negate(s: SurrealNumber): SurrealNumber;
83
+ /**
84
+ * Suma de juegos: G + H = { GL+H, G+HL | GR+H, G+HR }.
85
+ */
86
+ export declare function add(a: SurrealNumber, b: SurrealNumber): SurrealNumber;
87
+ export declare function compare(a: SurrealNumber, b: SurrealNumber): -1 | 0 | 1;
88
+ /**
89
+ * G es fuzzy con 0 sii no satisface G ≤ 0 ni 0 ≤ G — es decir, el
90
+ * primer jugador gana. * es el ejemplo canónico.
91
+ */
92
+ export declare function isFuzzy(s: SurrealNumber): boolean;
93
+ /**
94
+ * Simplificación parcial: elimina opciones dominadas en cada lado.
95
+ *
96
+ * En la lista Left, una opción L1 domina a L2 si L1 ≥ L2 (entonces
97
+ * L2 puede borrarse: el jugador Left preferirá L1).
98
+ * En la lista Right, una opción R1 domina a R2 si R1 ≤ R2.
99
+ *
100
+ * No hace eliminación reversible ("bypass") — eso podría requerirse
101
+ * para canonicalización completa Conway. Para nuestros tests es
102
+ * suficiente.
103
+ */
104
+ export declare function simplify(s: SurrealNumber): SurrealNumber;
105
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/combinatorial-games/index.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IAE3C,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;CACrC;AAMD;;;GAGG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAI5C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,CAAC,EACR,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAA6B,GACrD,MAAM,CAgBR;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAI/C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAYtF;AAID;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAuB5D;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAc3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAsDhF;AAID,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC;CACjC;AAMD,mEAAmE;AACnE,eAAO,MAAM,IAAI,EAAE,aAAmC,CAAC;AAEvD,mBAAmB;AACnB,eAAO,MAAM,GAAG,EAAE,aAAuC,CAAC;AAE1D,oBAAoB;AACpB,eAAO,MAAM,SAAS,EAAE,aAAuC,CAAC;AAEhE,6EAA6E;AAC7E,eAAO,MAAM,IAAI,EAAE,aAA2C,CAAC;AAE/D;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAKhD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAKtD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa,CAQrE;AAwBD,wBAAgB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAOtE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAqCxD"}