@stevenvo780/st-lang 2.6.1 → 2.7.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.
- package/dist/ast/nodes.d.ts +18 -1
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/parser/parser.d.ts +2 -0
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +82 -0
- package/dist/parser/parser.js.map +1 -1
- package/dist/profiles/classical/first-order.d.ts +1 -0
- package/dist/profiles/classical/first-order.d.ts.map +1 -1
- package/dist/profiles/classical/first-order.js +35 -0
- package/dist/profiles/classical/first-order.js.map +1 -1
- package/dist/profiles/classical/propositional.d.ts +6 -1
- package/dist/profiles/classical/propositional.d.ts.map +1 -1
- package/dist/profiles/classical/propositional.js +334 -35
- package/dist/profiles/classical/propositional.js.map +1 -1
- package/dist/profiles/paraconsistent/belnap.d.ts.map +1 -1
- package/dist/profiles/paraconsistent/belnap.js +151 -3
- package/dist/profiles/paraconsistent/belnap.js.map +1 -1
- package/dist/profiles/shared/tableau-engine.d.ts.map +1 -1
- package/dist/profiles/shared/tableau-engine.js +49 -22
- package/dist/profiles/shared/tableau-engine.js.map +1 -1
- package/dist/runtime/format.d.ts.map +1 -1
- package/dist/runtime/format.js +4 -0
- package/dist/runtime/format.js.map +1 -1
- package/dist/runtime/formula-factory.d.ts +26 -0
- package/dist/runtime/formula-factory.d.ts.map +1 -0
- package/dist/runtime/formula-factory.js +67 -0
- package/dist/runtime/formula-factory.js.map +1 -0
- package/dist/runtime/interpreter.d.ts +41 -0
- package/dist/runtime/interpreter.d.ts.map +1 -1
- package/dist/runtime/interpreter.js +1029 -245
- package/dist/runtime/interpreter.js.map +1 -1
- package/dist/tests/arithmetic.test.js +2 -1
- package/dist/tests/arithmetic.test.js.map +1 -1
- package/dist/tests/examples.test.js +12 -1
- package/dist/tests/examples.test.js.map +1 -1
- package/dist/tests/exhaustive-matrix.test.js +1 -1
- package/dist/tests/exhaustive-matrix.test.js.map +1 -1
- package/dist/tests/limits.test.js +15 -3
- package/dist/tests/limits.test.js.map +1 -1
- package/dist/tests/result-bindings.test.d.ts +2 -0
- package/dist/tests/result-bindings.test.d.ts.map +1 -0
- package/dist/tests/result-bindings.test.js +59 -0
- package/dist/tests/result-bindings.test.js.map +1 -0
- package/dist/tests/stress-hardware.test.d.ts +2 -0
- package/dist/tests/stress-hardware.test.d.ts.map +1 -0
- package/dist/tests/stress-hardware.test.js +516 -0
- package/dist/tests/stress-hardware.test.js.map +1 -0
- package/dist/tests/v1-features.test.js +1 -1
- package/dist/tests/v1-features.test.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/memo.d.ts +3 -0
- package/dist/utils/memo.d.ts.map +1 -1
- package/dist/utils/memo.js +30 -0
- package/dist/utils/memo.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const interpreter_1 = require("../runtime/interpreter");
|
|
5
|
+
const propositional_1 = require("../profiles/classical/propositional");
|
|
6
|
+
(0, vitest_1.describe)('Captured action results', () => {
|
|
7
|
+
(0, vitest_1.it)('stores derivation results in variables with structured fields', () => {
|
|
8
|
+
const interp = new interpreter_1.Interpreter();
|
|
9
|
+
const out = interp.execute(`
|
|
10
|
+
logic classical.propositional
|
|
11
|
+
axiom a1 = P -> Q
|
|
12
|
+
axiom a2 = P
|
|
13
|
+
let manual = Q
|
|
14
|
+
let deriv = derive Q from {a1, a2}
|
|
15
|
+
let same = formula_eq(deriv.formula, manual)
|
|
16
|
+
`, '<test>');
|
|
17
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
18
|
+
const bindings = interp.getLetBindings();
|
|
19
|
+
(0, vitest_1.expect)((0, propositional_1.formulaToString)(bindings.get('deriv'))).toBe('Q');
|
|
20
|
+
(0, vitest_1.expect)(bindings.get('deriv.status')?.name).toBe('"provable"');
|
|
21
|
+
(0, vitest_1.expect)(bindings.get('deriv.command')?.name).toBe('"derive"');
|
|
22
|
+
(0, vitest_1.expect)(bindings.get('same')?.kind).toBe('number');
|
|
23
|
+
(0, vitest_1.expect)(bindings.get('same')?.value).toBe(1);
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('decomposes formulas into list values and supports indexing helpers', () => {
|
|
26
|
+
const interp = new interpreter_1.Interpreter();
|
|
27
|
+
const out = interp.execute(`
|
|
28
|
+
logic classical.propositional
|
|
29
|
+
let f = (P & Q) -> R
|
|
30
|
+
let atoms = atoms_of(f)
|
|
31
|
+
let count = len(atoms)
|
|
32
|
+
let second = at(atoms, 1)
|
|
33
|
+
`, '<test>');
|
|
34
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
35
|
+
const bindings = interp.getLetBindings();
|
|
36
|
+
(0, vitest_1.expect)(bindings.get('atoms')?.kind).toBe('list');
|
|
37
|
+
(0, vitest_1.expect)(bindings.get('count')?.value).toBe(3);
|
|
38
|
+
(0, vitest_1.expect)(bindings.get('second')?.kind).toBe('atom');
|
|
39
|
+
(0, vitest_1.expect)(bindings.get('second')?.name).toBe('Q');
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)('captures truth table metadata as structured fields', () => {
|
|
42
|
+
const interp = new interpreter_1.Interpreter();
|
|
43
|
+
const out = interp.execute(`
|
|
44
|
+
logic classical.propositional
|
|
45
|
+
let tt = truth_table (P & Q)
|
|
46
|
+
let vars = tt.variables
|
|
47
|
+
let first = at(vars, 0)
|
|
48
|
+
let total = len(vars)
|
|
49
|
+
`, '<test>');
|
|
50
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
51
|
+
const bindings = interp.getLetBindings();
|
|
52
|
+
(0, vitest_1.expect)(bindings.get('tt.status')?.name).toBe('"satisfiable"');
|
|
53
|
+
(0, vitest_1.expect)(bindings.get('tt.rows_count')?.value).toBe(4);
|
|
54
|
+
(0, vitest_1.expect)(bindings.get('vars')?.kind).toBe('list');
|
|
55
|
+
(0, vitest_1.expect)(bindings.get('first')?.name).toBe('P');
|
|
56
|
+
(0, vitest_1.expect)(bindings.get('total')?.value).toBe(2);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=result-bindings.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-bindings.test.js","sourceRoot":"","sources":["../../src/tests/result-bindings.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stress-hardware.test.d.ts","sourceRoot":"","sources":["../../src/tests/stress-hardware.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* ST Hardware Stress Tests
|
|
5
|
+
* ========================
|
|
6
|
+
* Objetivo: que muera el PC antes que el lenguaje.
|
|
7
|
+
* Cada test valida que ST maneje cargas extremas sin:
|
|
8
|
+
* - Stack overflow
|
|
9
|
+
* - Infinite loops / hangs
|
|
10
|
+
* - OOM sin control (debe fallar con mensaje, no con crash)
|
|
11
|
+
* - Resultados incorrectos bajo presión
|
|
12
|
+
*
|
|
13
|
+
* Categorías:
|
|
14
|
+
* 1. Bitset Evaluation (propositional, saturar BigInt)
|
|
15
|
+
* 2. Hash-Consing / DAG (ataque de fórmulas fractales)
|
|
16
|
+
* 3. Tableau Engine (explosión de ramas)
|
|
17
|
+
* 4. FOL (explosión de cuantificadores)
|
|
18
|
+
* 5. Arithmetic (recursión profunda, loops masivos)
|
|
19
|
+
* 6. Belnap (4-valued bitset bajo presión)
|
|
20
|
+
* 7. Multi-profile whiplash (cambios rápidos de perfil)
|
|
21
|
+
*/
|
|
22
|
+
const vitest_1 = require("vitest");
|
|
23
|
+
const interpreter_1 = require("../runtime/interpreter");
|
|
24
|
+
const formula_factory_1 = require("../runtime/formula-factory");
|
|
25
|
+
(0, vitest_1.afterEach)(() => {
|
|
26
|
+
formula_factory_1.FormulaFactory.clear();
|
|
27
|
+
});
|
|
28
|
+
function run(source) {
|
|
29
|
+
const interp = new interpreter_1.Interpreter();
|
|
30
|
+
return interp.execute(source, '<stress>');
|
|
31
|
+
}
|
|
32
|
+
/** Strip diacritics for accent-insensitive comparison */
|
|
33
|
+
function stripAccents(s) {
|
|
34
|
+
return s.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
35
|
+
}
|
|
36
|
+
// ============================================================
|
|
37
|
+
// 1. BITSET PROPOSITIONAL — SATURAR EVALUACIÓN VECTORIZADA
|
|
38
|
+
// ============================================================
|
|
39
|
+
(0, vitest_1.describe)('Stress: Bitset Propositional', () => {
|
|
40
|
+
(0, vitest_1.it)('20 atoms — maximum truth table materialization (1M rows)', () => {
|
|
41
|
+
const atoms = Array.from({ length: 20 }, (_, i) => `V${i}`);
|
|
42
|
+
const formula = atoms.join(' & ');
|
|
43
|
+
const source = `
|
|
44
|
+
logic classical.propositional
|
|
45
|
+
truth_table ${formula}
|
|
46
|
+
`;
|
|
47
|
+
const out = run(source);
|
|
48
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
49
|
+
(0, vitest_1.expect)(out.stdout).toContain('valuaciones analizadas');
|
|
50
|
+
}, 30000);
|
|
51
|
+
(0, vitest_1.it)('20 atoms — tautology check via bitset (instant)', () => {
|
|
52
|
+
const atoms = Array.from({ length: 20 }, (_, i) => `P${i}`);
|
|
53
|
+
const tautology = atoms.map((a) => `(${a} | !${a})`).join(' & ');
|
|
54
|
+
const source = `
|
|
55
|
+
logic classical.propositional
|
|
56
|
+
check valid ${tautology}
|
|
57
|
+
`;
|
|
58
|
+
const out = run(source);
|
|
59
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
60
|
+
(0, vitest_1.expect)(stripAccents(out.stdout).toUpperCase()).toContain('VALIDA');
|
|
61
|
+
}, 10000);
|
|
62
|
+
(0, vitest_1.it)('26 atoms — validity check without materialization', () => {
|
|
63
|
+
// 2^26 = 67M combinations — bitset should handle this without creating rows
|
|
64
|
+
const atoms = Array.from({ length: 26 }, (_, i) => `X${i}`);
|
|
65
|
+
const tautology = atoms.map((a) => `(${a} | !${a})`).join(' & ');
|
|
66
|
+
const source = `
|
|
67
|
+
logic classical.propositional
|
|
68
|
+
check valid ${tautology}
|
|
69
|
+
`;
|
|
70
|
+
const out = run(source);
|
|
71
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
72
|
+
(0, vitest_1.expect)(stripAccents(out.stdout).toUpperCase()).toContain('VALIDA');
|
|
73
|
+
}, 15000);
|
|
74
|
+
(0, vitest_1.it)('26 atoms — satisfiability (instant contradiction detection)', () => {
|
|
75
|
+
const atoms = Array.from({ length: 26 }, (_, i) => `Z${i}`);
|
|
76
|
+
const contradiction = atoms.map((a) => `(${a} & !${a})`).join(' | ');
|
|
77
|
+
const source = `
|
|
78
|
+
logic classical.propositional
|
|
79
|
+
check satisfiable ${contradiction}
|
|
80
|
+
`;
|
|
81
|
+
const out = run(source);
|
|
82
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
83
|
+
(0, vitest_1.expect)(out.stdout).toContain('INSATISFACIBLE');
|
|
84
|
+
}, 15000);
|
|
85
|
+
(0, vitest_1.it)('countermodel for non-tautology with 15 atoms (instant)', () => {
|
|
86
|
+
const atoms = Array.from({ length: 15 }, (_, i) => `M${i}`);
|
|
87
|
+
// M0 & M1 & ... & M14 is satisfiable but not a tautology
|
|
88
|
+
const formula = atoms.join(' & ');
|
|
89
|
+
const source = `
|
|
90
|
+
logic classical.propositional
|
|
91
|
+
countermodel ${formula}
|
|
92
|
+
`;
|
|
93
|
+
const out = run(source);
|
|
94
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
95
|
+
// Should find a countermodel quickly
|
|
96
|
+
}, 10000);
|
|
97
|
+
(0, vitest_1.it)('XOR chain with 14 atoms — complex bitset evaluation', () => {
|
|
98
|
+
const atoms = Array.from({ length: 14 }, (_, i) => `Q${i}`);
|
|
99
|
+
let formula = atoms[0];
|
|
100
|
+
for (let i = 1; i < atoms.length; i++) {
|
|
101
|
+
formula = `(${formula} ^ ${atoms[i]})`;
|
|
102
|
+
}
|
|
103
|
+
const source = `
|
|
104
|
+
logic classical.propositional
|
|
105
|
+
check satisfiable ${formula}
|
|
106
|
+
`;
|
|
107
|
+
const out = run(source);
|
|
108
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
109
|
+
}, 15000);
|
|
110
|
+
(0, vitest_1.it)('deeply nested implications (20 levels, bitset fast path)', () => {
|
|
111
|
+
let formula = 'Z';
|
|
112
|
+
for (let i = 0; i < 20; i++) {
|
|
113
|
+
formula = `(P${i} -> ${formula})`;
|
|
114
|
+
}
|
|
115
|
+
const source = `
|
|
116
|
+
logic classical.propositional
|
|
117
|
+
check valid ${formula}
|
|
118
|
+
`;
|
|
119
|
+
const out = run(source);
|
|
120
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
121
|
+
}, 15000);
|
|
122
|
+
});
|
|
123
|
+
// ============================================================
|
|
124
|
+
// 2. HASH-CONSING / DAG — ATAQUE FRACTAL DE FORMULAS
|
|
125
|
+
// ============================================================
|
|
126
|
+
(0, vitest_1.describe)('Stress: Hash-Consing / Formula Sharing', () => {
|
|
127
|
+
(0, vitest_1.it)('exponential formula doubling (8 iterations = 4^8 theoretical nodes)', () => {
|
|
128
|
+
// Each iteration quadruples the formula: f = (f | f) & (f | f)
|
|
129
|
+
// Tests that the engine handles formula growth gracefully
|
|
130
|
+
const source = `
|
|
131
|
+
logic classical.propositional
|
|
132
|
+
let f = A
|
|
133
|
+
for i in {1,2,3,4,5,6,7,8} {
|
|
134
|
+
set f = (f | f) & (f | f)
|
|
135
|
+
}
|
|
136
|
+
check satisfiable f
|
|
137
|
+
`;
|
|
138
|
+
const out = run(source);
|
|
139
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
140
|
+
(0, vitest_1.expect)(out.stdout).toContain('SATISFACIBLE');
|
|
141
|
+
}, 10000);
|
|
142
|
+
(0, vitest_1.it)('100 axioms sharing same subformulas', () => {
|
|
143
|
+
const axioms = Array.from({ length: 100 }, (_, i) => `axiom a${i} = (P -> Q) & (Q -> R) & (R -> S${i})`).join('\n');
|
|
144
|
+
const source = `
|
|
145
|
+
logic classical.propositional
|
|
146
|
+
${axioms}
|
|
147
|
+
check valid (P -> Q)
|
|
148
|
+
`;
|
|
149
|
+
const out = run(source);
|
|
150
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
151
|
+
}, 10000);
|
|
152
|
+
(0, vitest_1.it)('deep chain of biconditionals (20 levels, bitset fast path)', () => {
|
|
153
|
+
const atoms = Array.from({ length: 20 }, (_, i) => `B${i}`);
|
|
154
|
+
let formula = atoms[0];
|
|
155
|
+
for (let i = 1; i < atoms.length; i++) {
|
|
156
|
+
formula = `(${formula} <-> ${atoms[i]})`;
|
|
157
|
+
}
|
|
158
|
+
const source = `
|
|
159
|
+
logic classical.propositional
|
|
160
|
+
check satisfiable ${formula}
|
|
161
|
+
`;
|
|
162
|
+
const out = run(source);
|
|
163
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
164
|
+
}, 15000);
|
|
165
|
+
});
|
|
166
|
+
// ============================================================
|
|
167
|
+
// 3. TABLEAU ENGINE — EXPLOSIÓN DE RAMAS
|
|
168
|
+
// ============================================================
|
|
169
|
+
(0, vitest_1.describe)('Stress: Tableau Engine', () => {
|
|
170
|
+
(0, vitest_1.it)('modal K — 30 levels of diamond nesting', () => {
|
|
171
|
+
let formula = 'P';
|
|
172
|
+
for (let i = 0; i < 30; i++) {
|
|
173
|
+
formula = `<>(${formula})`;
|
|
174
|
+
}
|
|
175
|
+
const source = `
|
|
176
|
+
logic modal.k
|
|
177
|
+
check satisfiable ${formula}
|
|
178
|
+
`;
|
|
179
|
+
const out = run(source);
|
|
180
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
181
|
+
}, 20000);
|
|
182
|
+
(0, vitest_1.it)('modal S5 — validity of axiom 5 with deep nesting', () => {
|
|
183
|
+
const source = `
|
|
184
|
+
logic epistemic.s5
|
|
185
|
+
check valid (<>P -> []<>P)
|
|
186
|
+
`;
|
|
187
|
+
const out = run(source);
|
|
188
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
189
|
+
}, 10000);
|
|
190
|
+
(0, vitest_1.it)('deontic — 20 levels of obligation nesting', () => {
|
|
191
|
+
let formula = 'A';
|
|
192
|
+
for (let i = 0; i < 20; i++) {
|
|
193
|
+
formula = `O(${formula})`;
|
|
194
|
+
}
|
|
195
|
+
const source = `
|
|
196
|
+
logic deontic.standard
|
|
197
|
+
check valid ${formula} -> ${formula}
|
|
198
|
+
`;
|
|
199
|
+
const out = run(source);
|
|
200
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
201
|
+
}, 15000);
|
|
202
|
+
(0, vitest_1.it)('temporal — nested G/F/X operators', () => {
|
|
203
|
+
const source = `
|
|
204
|
+
logic temporal.ltl
|
|
205
|
+
check satisfiable G(P -> F(X(Q)))
|
|
206
|
+
`;
|
|
207
|
+
const out = run(source);
|
|
208
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
209
|
+
}, 15000);
|
|
210
|
+
(0, vitest_1.it)('intuitionistic — Peirce law is NOT valid', () => {
|
|
211
|
+
const source = `
|
|
212
|
+
logic intuitionistic.propositional
|
|
213
|
+
check valid (((P -> Q) -> P) -> P)
|
|
214
|
+
`;
|
|
215
|
+
const out = run(source);
|
|
216
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
217
|
+
(0, vitest_1.expect)(out.stdout.toLowerCase()).toContain('no es');
|
|
218
|
+
}, 10000);
|
|
219
|
+
});
|
|
220
|
+
// ============================================================
|
|
221
|
+
// 4. FOL — EXPLOSIÓN DE CUANTIFICADORES
|
|
222
|
+
// ============================================================
|
|
223
|
+
(0, vitest_1.describe)('Stress: First-Order Logic', () => {
|
|
224
|
+
(0, vitest_1.it)('valid universal instantiation with 5 constants', () => {
|
|
225
|
+
const source = `
|
|
226
|
+
logic classical.first_order
|
|
227
|
+
check valid (forall x P(x)) -> (P(a) & P(b) & P(c) & P(d) & P(e))
|
|
228
|
+
`;
|
|
229
|
+
const out = run(source);
|
|
230
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
231
|
+
(0, vitest_1.expect)(stripAccents(out.stdout).toUpperCase()).toContain('VALIDA');
|
|
232
|
+
}, 15000);
|
|
233
|
+
(0, vitest_1.it)('existential from specific — P(a) -> exists x P(x)', () => {
|
|
234
|
+
const source = `
|
|
235
|
+
logic classical.first_order
|
|
236
|
+
check valid (P(a) -> exists x P(x))
|
|
237
|
+
`;
|
|
238
|
+
const out = run(source);
|
|
239
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
240
|
+
(0, vitest_1.expect)(stripAccents(out.stdout).toUpperCase()).toContain('VALIDA');
|
|
241
|
+
}, 10000);
|
|
242
|
+
(0, vitest_1.it)('Barbara syllogism (forall x (P(x)->Q(x))) & P(a) -> Q(a)', () => {
|
|
243
|
+
const source = `
|
|
244
|
+
logic classical.first_order
|
|
245
|
+
check valid ((forall x (P(x) -> Q(x))) -> (P(a) -> Q(a)))
|
|
246
|
+
`;
|
|
247
|
+
const out = run(source);
|
|
248
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
249
|
+
(0, vitest_1.expect)(stripAccents(out.stdout).toUpperCase()).toContain('VALIDA');
|
|
250
|
+
}, 15000);
|
|
251
|
+
(0, vitest_1.it)('nested quantifiers — forall x exists y is satisfiable (does not hang)', () => {
|
|
252
|
+
const source = `
|
|
253
|
+
logic classical.first_order
|
|
254
|
+
check satisfiable forall x exists y R(x,y)
|
|
255
|
+
`;
|
|
256
|
+
const out = run(source);
|
|
257
|
+
// Should complete without hanging. May return satisfiable or hit depth limit.
|
|
258
|
+
(0, vitest_1.expect)([0, 3]).toContain(out.exitCode);
|
|
259
|
+
}, 20000);
|
|
260
|
+
(0, vitest_1.it)('invalid formula correctly detected — exists -> forall', () => {
|
|
261
|
+
const source = `
|
|
262
|
+
logic classical.first_order
|
|
263
|
+
check valid (exists x P(x)) -> (forall x P(x))
|
|
264
|
+
`;
|
|
265
|
+
const out = run(source);
|
|
266
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
267
|
+
(0, vitest_1.expect)(out.stdout.toLowerCase()).toContain('no es');
|
|
268
|
+
}, 15000);
|
|
269
|
+
(0, vitest_1.it)('derivation with 10 axioms in FOL', () => {
|
|
270
|
+
const axioms = Array.from({ length: 9 }, (_, i) => `axiom a${i} = forall x (P${i}(x) -> P${i + 1}(x))`).join('\n');
|
|
271
|
+
const source = `
|
|
272
|
+
logic classical.first_order
|
|
273
|
+
${axioms}
|
|
274
|
+
axiom base = P0(a)
|
|
275
|
+
derive P9(a) from {a0, a1, a2, a3, a4, a5, a6, a7, a8, base}
|
|
276
|
+
`;
|
|
277
|
+
const out = run(source);
|
|
278
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
279
|
+
}, 20000);
|
|
280
|
+
});
|
|
281
|
+
// ============================================================
|
|
282
|
+
// 5. ARITHMETIC — RECURSIÓN Y LOOPS MASIVOS
|
|
283
|
+
// ============================================================
|
|
284
|
+
(0, vitest_1.describe)('Stress: Arithmetic & Recursion', () => {
|
|
285
|
+
(0, vitest_1.it)('500 iterations of set x = x + 1', () => {
|
|
286
|
+
let setLines = '';
|
|
287
|
+
for (let i = 0; i < 500; i++) {
|
|
288
|
+
setLines += ` set x = x + 1\n`;
|
|
289
|
+
}
|
|
290
|
+
const source = `
|
|
291
|
+
logic arithmetic
|
|
292
|
+
let x = 0
|
|
293
|
+
${setLines}
|
|
294
|
+
print x
|
|
295
|
+
`;
|
|
296
|
+
const out = run(source);
|
|
297
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
298
|
+
(0, vitest_1.expect)(out.stdout).toContain('500');
|
|
299
|
+
}, 15000);
|
|
300
|
+
(0, vitest_1.it)('recursive function hitting call depth limit gracefully', () => {
|
|
301
|
+
const source = `
|
|
302
|
+
logic arithmetic
|
|
303
|
+
fn infinite(N) {
|
|
304
|
+
let next = N + 1
|
|
305
|
+
return infinite(next)
|
|
306
|
+
}
|
|
307
|
+
let r = infinite(1)
|
|
308
|
+
`;
|
|
309
|
+
const out = run(source);
|
|
310
|
+
// Should not crash — should report a recursion/call limit error
|
|
311
|
+
(0, vitest_1.expect)(out.diagnostics.some((d) => d.message.includes('recursión') ||
|
|
312
|
+
d.message.includes('recursion') ||
|
|
313
|
+
d.message.includes('Límite') ||
|
|
314
|
+
d.message.includes('llamadas'))).toBe(true);
|
|
315
|
+
}, 15000);
|
|
316
|
+
(0, vitest_1.it)('nested for loops (10x10x10 = 1000 iterations)', () => {
|
|
317
|
+
const source = `
|
|
318
|
+
logic arithmetic
|
|
319
|
+
let count = 0
|
|
320
|
+
for i in {1,2,3,4,5,6,7,8,9,10} {
|
|
321
|
+
for j in {1,2,3,4,5,6,7,8,9,10} {
|
|
322
|
+
for k in {1,2,3,4,5,6,7,8,9,10} {
|
|
323
|
+
set count = count + 1
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
print count
|
|
328
|
+
`;
|
|
329
|
+
const out = run(source);
|
|
330
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
331
|
+
(0, vitest_1.expect)(out.stdout).toContain('1000');
|
|
332
|
+
}, 30000);
|
|
333
|
+
(0, vitest_1.it)('factorial(10) via recursion', () => {
|
|
334
|
+
const source = `
|
|
335
|
+
logic arithmetic
|
|
336
|
+
fn factorial(N) {
|
|
337
|
+
if valid N <= 1 {
|
|
338
|
+
return 1
|
|
339
|
+
}
|
|
340
|
+
let prev = N - 1
|
|
341
|
+
let res = factorial(prev)
|
|
342
|
+
return N * res
|
|
343
|
+
}
|
|
344
|
+
let f10 = factorial(10)
|
|
345
|
+
print f10
|
|
346
|
+
`;
|
|
347
|
+
const out = run(source);
|
|
348
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
349
|
+
// 10! = 3628800
|
|
350
|
+
(0, vitest_1.expect)(out.stdout).toContain('3628800');
|
|
351
|
+
}, 10000);
|
|
352
|
+
(0, vitest_1.it)('fibonacci(12) via recursion', () => {
|
|
353
|
+
const source = `
|
|
354
|
+
logic arithmetic
|
|
355
|
+
fn fib(N) {
|
|
356
|
+
if valid N <= 0 { return 0 }
|
|
357
|
+
if valid N <= 1 { return 1 }
|
|
358
|
+
let a = N - 1
|
|
359
|
+
let b = N - 2
|
|
360
|
+
let ra = fib(a)
|
|
361
|
+
let rb = fib(b)
|
|
362
|
+
return ra + rb
|
|
363
|
+
}
|
|
364
|
+
let f12 = fib(12)
|
|
365
|
+
print f12
|
|
366
|
+
`;
|
|
367
|
+
const out = run(source);
|
|
368
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
369
|
+
// fib(12) = 144
|
|
370
|
+
(0, vitest_1.expect)(out.stdout).toContain('144');
|
|
371
|
+
}, 30000);
|
|
372
|
+
(0, vitest_1.it)('division by zero does not crash', () => {
|
|
373
|
+
const source = `
|
|
374
|
+
logic arithmetic
|
|
375
|
+
axiom bad = 10 / 0
|
|
376
|
+
explain 10 / 0
|
|
377
|
+
`;
|
|
378
|
+
const out = run(source);
|
|
379
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
380
|
+
(0, vitest_1.expect)(out.diagnostics.some((d) => d.message.includes('División por cero'))).toBe(true);
|
|
381
|
+
}, 5000);
|
|
382
|
+
});
|
|
383
|
+
// ============================================================
|
|
384
|
+
// 6. BELNAP 4-VALUED — BITSET UNDER PRESSURE
|
|
385
|
+
// ============================================================
|
|
386
|
+
(0, vitest_1.describe)('Stress: Belnap Paraconsistent', () => {
|
|
387
|
+
(0, vitest_1.it)('8 atoms — Belnap truth table (4^8 = 65K rows via bitset)', () => {
|
|
388
|
+
const atoms = Array.from({ length: 8 }, (_, i) => `B${i}`);
|
|
389
|
+
const formula = atoms.join(' & ');
|
|
390
|
+
const source = `
|
|
391
|
+
logic paraconsistent.belnap
|
|
392
|
+
check valid ${formula}
|
|
393
|
+
`;
|
|
394
|
+
const out = run(source);
|
|
395
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
396
|
+
}, 30000);
|
|
397
|
+
(0, vitest_1.it)('Belnap EFQ is NOT valid (P & !P) -> Q', () => {
|
|
398
|
+
const source = `
|
|
399
|
+
logic paraconsistent.belnap
|
|
400
|
+
check valid (P & !P) -> Q
|
|
401
|
+
`;
|
|
402
|
+
const out = run(source);
|
|
403
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
404
|
+
(0, vitest_1.expect)(stripAccents(out.stdout).toLowerCase()).toContain('no es valida');
|
|
405
|
+
}, 10000);
|
|
406
|
+
(0, vitest_1.it)('8 atoms — Belnap satisfiability', () => {
|
|
407
|
+
const atoms = Array.from({ length: 8 }, (_, i) => `C${i}`);
|
|
408
|
+
const formula = atoms.map((a) => `(${a} | !${a})`).join(' & ');
|
|
409
|
+
const source = `
|
|
410
|
+
logic paraconsistent.belnap
|
|
411
|
+
check satisfiable ${formula}
|
|
412
|
+
`;
|
|
413
|
+
const out = run(source);
|
|
414
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
415
|
+
}, 15000);
|
|
416
|
+
});
|
|
417
|
+
// ============================================================
|
|
418
|
+
// 7. MULTI-PROFILE WHIPLASH — CAMBIOS RÁPIDOS DE PERFIL
|
|
419
|
+
// ============================================================
|
|
420
|
+
(0, vitest_1.describe)('Stress: Multi-Profile Whiplash', () => {
|
|
421
|
+
(0, vitest_1.it)('rapid profile switching (10 profiles in one program)', () => {
|
|
422
|
+
const source = `
|
|
423
|
+
logic classical.propositional
|
|
424
|
+
check valid (P -> P)
|
|
425
|
+
|
|
426
|
+
logic modal.k
|
|
427
|
+
check valid [](P -> P)
|
|
428
|
+
|
|
429
|
+
logic deontic.standard
|
|
430
|
+
check valid O(P) -> O(P)
|
|
431
|
+
|
|
432
|
+
logic temporal.ltl
|
|
433
|
+
check satisfiable (P U Q)
|
|
434
|
+
|
|
435
|
+
logic epistemic.s5
|
|
436
|
+
check satisfiable K(P) & !P
|
|
437
|
+
|
|
438
|
+
logic paraconsistent.belnap
|
|
439
|
+
check satisfiable P & !P
|
|
440
|
+
|
|
441
|
+
logic intuitionistic.propositional
|
|
442
|
+
check valid (P -> P)
|
|
443
|
+
|
|
444
|
+
logic classical.first_order
|
|
445
|
+
check valid (forall x P(x)) -> P(a)
|
|
446
|
+
|
|
447
|
+
logic arithmetic
|
|
448
|
+
explain 2 + 3
|
|
449
|
+
|
|
450
|
+
logic probabilistic.basic
|
|
451
|
+
check satisfiable Pr(A) = 0.5
|
|
452
|
+
`;
|
|
453
|
+
const out = run(source);
|
|
454
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
455
|
+
(0, vitest_1.expect)(out.results.length).toBeGreaterThanOrEqual(10);
|
|
456
|
+
}, 15000);
|
|
457
|
+
(0, vitest_1.it)('all profiles produce correct results', () => {
|
|
458
|
+
const source = `
|
|
459
|
+
logic classical.propositional
|
|
460
|
+
check valid (P | !P)
|
|
461
|
+
`;
|
|
462
|
+
const out1 = run(source);
|
|
463
|
+
(0, vitest_1.expect)(out1.results[0].status).toBe('valid');
|
|
464
|
+
const source2 = `
|
|
465
|
+
logic paraconsistent.belnap
|
|
466
|
+
check valid (P | !P)
|
|
467
|
+
`;
|
|
468
|
+
const out2 = run(source2);
|
|
469
|
+
// Belnap: P | !P is NOT valid (fails for Both value)
|
|
470
|
+
(0, vitest_1.expect)(out2.results[0].status).not.toBe('valid');
|
|
471
|
+
}, 10000);
|
|
472
|
+
});
|
|
473
|
+
// ============================================================
|
|
474
|
+
// 8. COMBINADO — PRUEBA OMEGA FINAL
|
|
475
|
+
// ============================================================
|
|
476
|
+
(0, vitest_1.describe)('Stress: Omega Final', () => {
|
|
477
|
+
(0, vitest_1.it)('theory with 50 axioms + derivation chain', () => {
|
|
478
|
+
const axioms = Array.from({ length: 49 }, (_, i) => `axiom a${i} = P${i} -> P${i + 1}`).join('\n');
|
|
479
|
+
const source = `
|
|
480
|
+
logic classical.propositional
|
|
481
|
+
${axioms}
|
|
482
|
+
axiom base = P0
|
|
483
|
+
derive P49 from {${Array.from({ length: 49 }, (_, i) => `a${i}`).join(', ')}, base}
|
|
484
|
+
`;
|
|
485
|
+
const out = run(source);
|
|
486
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
487
|
+
(0, vitest_1.expect)(out.stdout).toContain('[derive]');
|
|
488
|
+
}, 30000);
|
|
489
|
+
(0, vitest_1.it)('proof block with complex premise set', () => {
|
|
490
|
+
const source = `
|
|
491
|
+
logic classical.propositional
|
|
492
|
+
axiom a1 = P -> Q
|
|
493
|
+
axiom a2 = Q -> R
|
|
494
|
+
axiom a3 = R -> S
|
|
495
|
+
axiom a4 = S -> T
|
|
496
|
+
axiom base = P
|
|
497
|
+
prove T from {a1, a2, a3, a4, base}
|
|
498
|
+
`;
|
|
499
|
+
const out = run(source);
|
|
500
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
501
|
+
}, 10000);
|
|
502
|
+
(0, vitest_1.it)('massive theory render (50 axioms + 50 theorems)', () => {
|
|
503
|
+
const decls = Array.from({ length: 50 }, (_, i) => `axiom a${i} = P${i} -> Q${i}`).join('\n') +
|
|
504
|
+
'\n' +
|
|
505
|
+
Array.from({ length: 50 }, (_, i) => `theorem t${i} = Q${i} -> R${i}`).join('\n');
|
|
506
|
+
const source = `
|
|
507
|
+
logic classical.propositional
|
|
508
|
+
${decls}
|
|
509
|
+
render theory
|
|
510
|
+
`;
|
|
511
|
+
const out = run(source);
|
|
512
|
+
(0, vitest_1.expect)(out.exitCode).toBe(0);
|
|
513
|
+
(0, vitest_1.expect)(out.stdout).toContain('render');
|
|
514
|
+
}, 10000);
|
|
515
|
+
});
|
|
516
|
+
//# sourceMappingURL=stress-hardware.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stress-hardware.test.js","sourceRoot":"","sources":["../../src/tests/stress-hardware.test.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,mCAAyD;AACzD,wDAAqD;AACrD,gEAA4D;AAE5D,IAAA,kBAAS,EAAC,GAAG,EAAE;IACb,gCAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,SAAS,GAAG,CAAC,MAAc;IACzB,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAC;IACjC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,yDAAyD;AACzD,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;oBAEC,OAAO;KACtB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACzD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG;;oBAEC,SAAS;KACxB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,4EAA4E;QAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG;;oBAEC,SAAS;KACxB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG;;0BAEO,aAAa;KAClC,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,yDAAyD;QACzD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;qBAEE,OAAO;KACvB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,qCAAqC;IACvC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,OAAO,GAAG,IAAI,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACzC,CAAC;QACD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,OAAO,GAAG,KAAK,CAAC,OAAO,OAAO,GAAG,CAAC;QACpC,CAAC;QACD,MAAM,MAAM,GAAG;;oBAEC,OAAO;KACtB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,qDAAqD;AACrD,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,IAAA,WAAE,EAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,+DAA+D;QAC/D,0DAA0D;QAC1D,MAAM,MAAM,GAAG;;;;;;;KAOd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CACvB,EAAE,MAAM,EAAE,GAAG,EAAE,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,GAAG,CAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG;;QAEX,MAAM;;KAET,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,OAAO,GAAG,IAAI,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,yCAAyC;AACzC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,OAAO,GAAG,MAAM,OAAO,GAAG,CAAC;QAC7B,CAAC;QACD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,OAAO,GAAG,KAAK,OAAO,GAAG,CAAC;QAC5B,CAAC;QACD,MAAM,MAAM,GAAG;;oBAEC,OAAO,OAAO,OAAO;KACpC,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,8EAA8E;QAC9E,IAAA,eAAM,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CACvB,EAAE,MAAM,EAAE,CAAC,EAAE,EACb,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG;;QAEX,MAAM;;;KAGT,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,4CAA4C;AAC5C,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,QAAQ,IAAI,mBAAmB,CAAC;QAClC,CAAC;QACD,MAAM,MAAM,GAAG;;;EAGjB,QAAQ;;KAEL,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG;;;;;;;KAOd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,gEAAgE;QAChE,IAAA,eAAM,EACJ,GAAG,CAAC,WAAW,CAAC,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CACjC,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG;;;;;;;;;;;KAWd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG;;;;;;;;;;;;KAYd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,gBAAgB;QAChB,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG;;;;;;;;;;;;;KAad,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,gBAAgB;QAChB,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG;;;;KAId,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,6CAA6C;AAC7C,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;oBAEC,OAAO;KACtB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3E,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,wDAAwD;AACxD,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8Bd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,IAAA,eAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG;;;KAGf,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,qDAAqD;QACrD,IAAA,eAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,oCAAoC;AACpC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAC1F,IAAI,CACL,CAAC;QACF,MAAM,MAAM,GAAG;;QAEX,MAAM;;yBAEW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5E,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG;;;;;;;;KAQd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GACT,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/E,IAAI;YACJ,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG;;QAEX,KAAK;;KAER,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC"}
|
|
@@ -926,7 +926,7 @@ function parseOk(source) {
|
|
|
926
926
|
foo(P, Q)
|
|
927
927
|
`);
|
|
928
928
|
(0, vitest_1.expect)(out.exitCode).not.toBe(0);
|
|
929
|
-
(0, vitest_1.expect)(out.stderr).toContain('argumento');
|
|
929
|
+
(0, vitest_1.expect)(out.stderr.toLowerCase()).toContain('argumento');
|
|
930
930
|
});
|
|
931
931
|
(0, vitest_1.it)('calling undeclared function throws error', () => {
|
|
932
932
|
const out = run(`
|