@hyperscale0/hsx 1.0.342 → 1.0.350
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/README.md +1 -1
- package/bases/cards.hsx +0 -1
- package/bases/collections.hsx +0 -2
- package/bases/escrow.hsx +0 -1
- package/bases/financing.hsx +0 -1
- package/bases/insurance.hsx +0 -1
- package/bases/lending.hsx +0 -3
- package/bases/marketplace.hsx +0 -2
- package/bases/money.hsx +0 -1
- package/bases/reporting.hsx +0 -2
- package/bases/savings.hsx +0 -1
- package/bases/wallet.hsx +0 -1
- package/dist/bin/hsx.d.ts.map +1 -1
- package/dist/bin/hsx.js.map +1 -1
- package/dist/src/ast.d.ts +57 -7
- package/dist/src/ast.d.ts.map +1 -1
- package/dist/src/ast.js.map +1 -1
- package/dist/src/attachment-economics.d.ts.map +1 -1
- package/dist/src/attachment-economics.js.map +1 -1
- package/dist/src/bases-bundle.d.ts.map +1 -1
- package/dist/src/bases-bundle.js +11 -11
- package/dist/src/bases-bundle.js.map +1 -1
- package/dist/src/bases.d.ts.map +1 -1
- package/dist/src/bases.js.map +1 -1
- package/dist/src/catalog-program.d.ts +1 -1
- package/dist/src/catalog-program.d.ts.map +1 -1
- package/dist/src/catalog-program.js +0 -13
- package/dist/src/catalog-program.js.map +1 -1
- package/dist/src/checks.d.ts +60 -0
- package/dist/src/checks.d.ts.map +1 -0
- package/dist/src/checks.js +240 -0
- package/dist/src/checks.js.map +1 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +6 -25
- package/dist/src/cli.js.map +1 -1
- package/dist/src/compile.d.ts +29 -12
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +414 -316
- package/dist/src/compile.js.map +1 -1
- package/dist/src/cost.d.ts.map +1 -1
- package/dist/src/cost.js.map +1 -1
- package/dist/src/diagnostics.d.ts +14 -1
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js +31 -0
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/examples-bundle.d.ts.map +1 -1
- package/dist/src/examples-bundle.js +15 -15
- package/dist/src/examples-bundle.js.map +1 -1
- package/dist/src/examples.d.ts.map +1 -1
- package/dist/src/examples.js.map +1 -1
- package/dist/src/format.d.ts.map +1 -1
- package/dist/src/format.js.map +1 -1
- package/dist/src/header-source.d.ts +30 -0
- package/dist/src/header-source.d.ts.map +1 -1
- package/dist/src/header-source.js +120 -9
- package/dist/src/header-source.js.map +1 -1
- package/dist/src/headers.d.ts +9 -18
- package/dist/src/headers.d.ts.map +1 -1
- package/dist/src/headers.js +25 -23
- package/dist/src/headers.js.map +1 -1
- package/dist/src/index.d.ts +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/keywords.d.ts +2 -4
- package/dist/src/keywords.d.ts.map +1 -1
- package/dist/src/keywords.js +6 -5
- package/dist/src/keywords.js.map +1 -1
- package/dist/src/language.d.ts +3 -4
- package/dist/src/language.d.ts.map +1 -1
- package/dist/src/language.js +123 -60
- package/dist/src/language.js.map +1 -1
- package/dist/src/lex.d.ts +1 -1
- package/dist/src/lex.d.ts.map +1 -1
- package/dist/src/lex.js +3 -5
- package/dist/src/lex.js.map +1 -1
- package/dist/src/parse.d.ts +3 -1
- package/dist/src/parse.d.ts.map +1 -1
- package/dist/src/parse.js +234 -22
- package/dist/src/parse.js.map +1 -1
- package/dist/src/std-bundle.d.ts +2 -1
- package/dist/src/std-bundle.d.ts.map +1 -1
- package/dist/src/std-bundle.js +16 -15
- package/dist/src/std-bundle.js.map +1 -1
- package/dist/src/template-guide.d.ts +3 -9
- package/dist/src/template-guide.d.ts.map +1 -1
- package/dist/src/template-guide.js +16 -23
- package/dist/src/template-guide.js.map +1 -1
- package/dist/src/toolchain.d.ts +23 -0
- package/dist/src/toolchain.d.ts.map +1 -0
- package/dist/src/toolchain.js +29 -0
- package/dist/src/toolchain.js.map +1 -0
- package/dist/src/tunables.d.ts.map +1 -1
- package/dist/src/tunables.js.map +1 -1
- package/docs/README.md +69 -28
- package/examples/camera-rental.hsx +0 -1
- package/examples/cards.hsx +0 -1
- package/examples/collections.hsx +0 -2
- package/examples/escrow.hsx +0 -1
- package/examples/financing.hsx +0 -1
- package/examples/insurance.hsx +0 -2
- package/examples/lending.hsx +0 -3
- package/examples/library.hsx +0 -3
- package/examples/marketplace.hsx +0 -2
- package/examples/money.hsx +0 -1
- package/examples/rental-hire.hsx +0 -1
- package/examples/reporting.hsx +0 -2
- package/examples/savings.hsx +0 -1
- package/examples/serviced.hsx +0 -4
- package/examples/wallet.hsx +0 -1
- package/package.json +8 -8
- package/src/ast.ts +56 -3
- package/src/bases-bundle.ts +11 -11
- package/src/catalog-program.ts +0 -13
- package/src/checks.ts +386 -0
- package/src/cli.ts +6 -25
- package/src/compile.ts +583 -438
- package/src/diagnostics.ts +49 -1
- package/src/examples-bundle.ts +15 -15
- package/src/header-source.ts +187 -11
- package/src/headers.ts +31 -32
- package/src/index.ts +10 -4
- package/src/keywords.ts +6 -5
- package/src/language.ts +153 -68
- package/src/lex.ts +3 -5
- package/src/parse.ts +216 -24
- package/src/std-bundle.ts +17 -15
- package/src/template-guide.ts +17 -34
- package/src/toolchain.ts +51 -0
- package/std/booking.hsx +14 -1
- package/std/collections.hsx +12 -2
- package/std/financing.hsx +10 -16
- package/std/money.hsx +2 -3
- package/std/reporting.hsx +10 -1
- package/dist/src/binding-contract.d.ts +0 -22
- package/dist/src/binding-contract.d.ts.map +0 -1
- package/dist/src/binding-contract.js +0 -80
- package/dist/src/binding-contract.js.map +0 -1
- package/dist/src/std-library.d.ts +0 -5
- package/dist/src/std-library.d.ts.map +0 -1
- package/dist/src/std-library.js +0 -5
- package/dist/src/std-library.js.map +0 -1
- package/src/binding-contract.ts +0 -111
- package/src/std-library.ts +0 -7
package/dist/src/language.js
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
|
+
import { compile } from "./compile.js";
|
|
1
2
|
import { headerManifest } from "./headers.js";
|
|
2
3
|
import { KEYWORD_HELP } from "./keywords.js";
|
|
3
4
|
import { KEYWORDS, scan } from "./lex.js";
|
|
4
5
|
import { parseProgram } from "./parse.js";
|
|
5
|
-
import {
|
|
6
|
+
import { defaultToolchain } from "./toolchain.js";
|
|
6
7
|
const keywords = new Set(KEYWORDS);
|
|
8
|
+
const CHECK_WORDS = new Set([
|
|
9
|
+
"customer",
|
|
10
|
+
"organization",
|
|
11
|
+
"funded",
|
|
12
|
+
"binds",
|
|
13
|
+
"clock",
|
|
14
|
+
"until",
|
|
15
|
+
"record",
|
|
16
|
+
"close",
|
|
17
|
+
"remember",
|
|
18
|
+
"status",
|
|
19
|
+
"balances",
|
|
20
|
+
"expect",
|
|
21
|
+
"held",
|
|
22
|
+
"pending",
|
|
23
|
+
]);
|
|
24
|
+
const CHECK_HELP = "A check step. Promote runs every check in an isolated world and refuses a Build whose check fails.";
|
|
7
25
|
const types = new Set([
|
|
8
26
|
"money",
|
|
9
27
|
"account",
|
|
@@ -19,11 +37,11 @@ const types = new Set([
|
|
|
19
37
|
"list",
|
|
20
38
|
"policy",
|
|
21
39
|
]);
|
|
22
|
-
// Cache by source bytes, not
|
|
40
|
+
// Cache by source bytes, not toolchain identity: callers can edit their own headers.
|
|
23
41
|
const headerCache = new Map();
|
|
24
|
-
function header(name,
|
|
42
|
+
function header(name, toolchain) {
|
|
25
43
|
try {
|
|
26
|
-
const source =
|
|
44
|
+
const source = toolchain.std.get(name);
|
|
27
45
|
if (!source)
|
|
28
46
|
return;
|
|
29
47
|
const cached = headerCache.get(name);
|
|
@@ -31,7 +49,7 @@ function header(name, library) {
|
|
|
31
49
|
return cached.value;
|
|
32
50
|
let value;
|
|
33
51
|
try {
|
|
34
|
-
value = headerManifest(
|
|
52
|
+
value = headerManifest(new Map([[name, source]]), [name]).headers[0];
|
|
35
53
|
}
|
|
36
54
|
catch {
|
|
37
55
|
/* Half-written headers have no metadata yet. */
|
|
@@ -64,17 +82,33 @@ function instrumentHelp(object, owner) {
|
|
|
64
82
|
label: a.name,
|
|
65
83
|
value: `${a.summary} Actor: ${a.actor}`,
|
|
66
84
|
})),
|
|
85
|
+
...object.checks.map((check) => ({
|
|
86
|
+
label: "check",
|
|
87
|
+
value: `${check.rule}${check.when ? ` when ${check.when.selector} is ${check.when.is}` : ""}: ${check.message}`,
|
|
88
|
+
})),
|
|
67
89
|
],
|
|
68
90
|
};
|
|
69
91
|
}
|
|
70
|
-
function analyze(source,
|
|
92
|
+
function analyze(source, toolchain) {
|
|
71
93
|
const all = scan(source).tokens.filter((t) => t.kind !== "eof");
|
|
72
94
|
const tokens = all.filter((t) => t.kind !== "comment");
|
|
73
95
|
const helps = new Map();
|
|
74
96
|
const classes = new Map();
|
|
75
97
|
const bindings = new Map();
|
|
76
|
-
|
|
77
|
-
const headerHelp =
|
|
98
|
+
// A qualified name such as booking.reservation names its header directly.
|
|
99
|
+
const headerHelp = (value) => ({
|
|
100
|
+
kind: "header",
|
|
101
|
+
title: value.name,
|
|
102
|
+
header: value.name,
|
|
103
|
+
summary: value.objects
|
|
104
|
+
.map((o) => o.summary)
|
|
105
|
+
.slice(0, 2)
|
|
106
|
+
.join(" "),
|
|
107
|
+
details: value.objects.map((o) => ({
|
|
108
|
+
label: o.qualifiedName,
|
|
109
|
+
value: o.summary,
|
|
110
|
+
})),
|
|
111
|
+
});
|
|
78
112
|
const whole = { start: 0, end: source.length };
|
|
79
113
|
const text = (span) => source.slice(span.start, span.end);
|
|
80
114
|
const mark = (token, kind, help) => {
|
|
@@ -112,29 +146,6 @@ function analyze(source, library) {
|
|
|
112
146
|
for (let i = 0; i < tokens.length; i++) {
|
|
113
147
|
const token = tokens[i];
|
|
114
148
|
const previous = tokens[i - 1]?.text;
|
|
115
|
-
if (previous === "use") {
|
|
116
|
-
const value = header(token.text, library);
|
|
117
|
-
if (value)
|
|
118
|
-
imports.set(token.text, value);
|
|
119
|
-
mark(token, "header", value
|
|
120
|
-
? {
|
|
121
|
-
kind: "header",
|
|
122
|
-
title: value.name,
|
|
123
|
-
header: value.name,
|
|
124
|
-
summary: value.objects
|
|
125
|
-
.map((o) => o.summary)
|
|
126
|
-
.slice(0, 2)
|
|
127
|
-
.join(" "),
|
|
128
|
-
details: value.objects.map((o) => ({
|
|
129
|
-
label: o.qualifiedName,
|
|
130
|
-
value: o.summary,
|
|
131
|
-
})),
|
|
132
|
-
}
|
|
133
|
-
: undefined);
|
|
134
|
-
const help = helps.get(token.span.start);
|
|
135
|
-
if (help)
|
|
136
|
-
headerHelp.set(token.text, help);
|
|
137
|
-
}
|
|
138
149
|
if (previous === "program" ||
|
|
139
150
|
previous === "object" ||
|
|
140
151
|
previous === "header")
|
|
@@ -148,7 +159,6 @@ function analyze(source, library) {
|
|
|
148
159
|
previous === "action" ||
|
|
149
160
|
previous === "attach" ||
|
|
150
161
|
previous === "expose" ||
|
|
151
|
-
previous === "hide" ||
|
|
152
162
|
previous === "as")
|
|
153
163
|
mark(token, previous === "instrument" || previous === "attach"
|
|
154
164
|
? "instrument"
|
|
@@ -167,9 +177,7 @@ function analyze(source, library) {
|
|
|
167
177
|
}
|
|
168
178
|
const attachment = (target, scope) => {
|
|
169
179
|
const [owner, name] = target.split(".");
|
|
170
|
-
const object =
|
|
171
|
-
.get(owner ?? "")
|
|
172
|
-
?.objects.find((o) => o.name === name);
|
|
180
|
+
const object = header(owner ?? "", toolchain)?.objects.find((o) => o.name === name);
|
|
173
181
|
if (!object)
|
|
174
182
|
return;
|
|
175
183
|
for (const parameter of object.tunables)
|
|
@@ -282,6 +290,30 @@ function analyze(source, library) {
|
|
|
282
290
|
walk(expr.cap, scope);
|
|
283
291
|
}
|
|
284
292
|
};
|
|
293
|
+
const at = (span) => tokens[atStart.get(span.start) ?? -1];
|
|
294
|
+
// A check's step words are keywords inside the check alone.
|
|
295
|
+
const checkHelp = (check) => {
|
|
296
|
+
for (const token of tokens)
|
|
297
|
+
if (token.span.start > check.span.start &&
|
|
298
|
+
token.span.end < check.span.end &&
|
|
299
|
+
CHECK_WORDS.has(token.text))
|
|
300
|
+
mark(token, "keyword", {
|
|
301
|
+
kind: "keyword",
|
|
302
|
+
title: token.text,
|
|
303
|
+
summary: CHECK_HELP,
|
|
304
|
+
});
|
|
305
|
+
for (const statement of check.statements) {
|
|
306
|
+
if (statement.kind === "customer")
|
|
307
|
+
mark(at(statement.id.span), "party", declared(statement.id.name, "party", check.span, statement.id.span, `customer ${statement.id.name}`, `${statement.title}, a customer of check "${check.name}".`));
|
|
308
|
+
if (statement.kind === "action") {
|
|
309
|
+
mark(at(statement.action.span), "action");
|
|
310
|
+
if (statement.state)
|
|
311
|
+
mark(at(statement.state.span), "state");
|
|
312
|
+
}
|
|
313
|
+
if (statement.kind === "clock" && statement.until)
|
|
314
|
+
mark(at(statement.until.state.span), "state");
|
|
315
|
+
}
|
|
316
|
+
};
|
|
285
317
|
// The parser owns declarations and scopes. A parse failure leaves lexical context intact.
|
|
286
318
|
try {
|
|
287
319
|
const parsed = parseProgram(source);
|
|
@@ -308,6 +340,8 @@ function analyze(source, library) {
|
|
|
308
340
|
walk(decl.body, decl.span);
|
|
309
341
|
}
|
|
310
342
|
}
|
|
343
|
+
for (const check of parsed.program.checks)
|
|
344
|
+
checkHelp(check);
|
|
311
345
|
}
|
|
312
346
|
catch {
|
|
313
347
|
/* Arbitrary editor input must not interrupt typing. */
|
|
@@ -320,12 +354,13 @@ function analyze(source, library) {
|
|
|
320
354
|
const previous = tokens[i - 1]?.text;
|
|
321
355
|
const next = tokens[i + 1]?.text;
|
|
322
356
|
const owner = previous === "." ? tokens[i - 2]?.text : undefined;
|
|
323
|
-
const imported = owner ?
|
|
357
|
+
const imported = owner ? header(owner, toolchain) : undefined;
|
|
324
358
|
const object = imported?.objects.find((o) => o.name === token.text);
|
|
359
|
+
const named = next === "." ? header(token.text, toolchain) : undefined;
|
|
325
360
|
if (object && owner)
|
|
326
361
|
mark(token, "instrument", instrumentHelp(object, owner));
|
|
327
|
-
else if (
|
|
328
|
-
mark(token, "header", headerHelp
|
|
362
|
+
else if (named)
|
|
363
|
+
mark(token, "header", headerHelp(named));
|
|
329
364
|
else if (!helps.has(token.span.start)) {
|
|
330
365
|
const candidates = bindings
|
|
331
366
|
.get(token.text)
|
|
@@ -342,7 +377,6 @@ function analyze(source, library) {
|
|
|
342
377
|
const isReference = !keywords.has(token.text) ||
|
|
343
378
|
previous === "." ||
|
|
344
379
|
previous === "expose" ||
|
|
345
|
-
previous === "hide" ||
|
|
346
380
|
next === ":" ||
|
|
347
381
|
[":", "=", "fee", "moves", "from", "to", "(", ",", "["].includes(previous ?? "") ||
|
|
348
382
|
binding?.declaration === token.span.start;
|
|
@@ -406,36 +440,65 @@ function analyze(source, library) {
|
|
|
406
440
|
}
|
|
407
441
|
// One editor document is retained. Hovering never reparses the same keystroke.
|
|
408
442
|
let last;
|
|
409
|
-
function analysis(source,
|
|
410
|
-
//
|
|
411
|
-
if (
|
|
412
|
-
last?.source === source &&
|
|
413
|
-
last.library === library)
|
|
443
|
+
function analysis(source, toolchain) {
|
|
444
|
+
// A test toolchain may change its headers in place; the default never does.
|
|
445
|
+
if (toolchain === defaultToolchain && last?.source === source)
|
|
414
446
|
return last.result;
|
|
415
|
-
const result = analyze(source,
|
|
416
|
-
if (
|
|
417
|
-
last = { source,
|
|
447
|
+
const result = analyze(source, toolchain);
|
|
448
|
+
if (toolchain === defaultToolchain)
|
|
449
|
+
last = { source, result };
|
|
418
450
|
return result;
|
|
419
451
|
}
|
|
420
452
|
/** Total, sorted, non-overlapping UTF-16 spans, including incomplete source. */
|
|
421
|
-
export function highlight(source,
|
|
422
|
-
return analysis(source,
|
|
453
|
+
export function highlight(source, toolchain = defaultToolchain) {
|
|
454
|
+
return analysis(source, toolchain).highlights.map((span) => ({ ...span }));
|
|
423
455
|
}
|
|
456
|
+
// The terms of the attach line around an offset, from the last valid compile.
|
|
457
|
+
let compiled;
|
|
458
|
+
function termsAt(source, offset, toolchain) {
|
|
459
|
+
if (compiled?.source !== source || compiled.toolchain !== toolchain) {
|
|
460
|
+
const origins = compile(source, toolchain).artifacts?.originMap ?? [];
|
|
461
|
+
compiled = {
|
|
462
|
+
source,
|
|
463
|
+
toolchain,
|
|
464
|
+
// A record shares its attach line's span; the attach comes first.
|
|
465
|
+
terms: (at) => origins.find((entry) => entry.terms && entry.span.start <= at && at < entry.span.end)?.terms,
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
return compiled.terms(offset);
|
|
469
|
+
}
|
|
470
|
+
const inForce = (term) => `${term.text} (${term.from === "std" ? `${term.source} default` : term.from === "party" ? "the party of that name" : "set by the program"})`;
|
|
424
471
|
/** Offsets use half-open UTF-16 spans. Whitespace and out-of-range offsets return null. */
|
|
425
|
-
export function describe(source, offset,
|
|
472
|
+
export function describe(source, offset, toolchain = defaultToolchain) {
|
|
426
473
|
if (!Number.isInteger(offset) || offset < 0 || offset >= source.length)
|
|
427
474
|
return null;
|
|
428
|
-
const result = analysis(source,
|
|
475
|
+
const result = analysis(source, toolchain);
|
|
429
476
|
const span = result.highlights.find((s) => s.start <= offset && offset < s.end);
|
|
430
477
|
const hover = span && result.hovers.get(span.start);
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
:
|
|
478
|
+
if (!hover)
|
|
479
|
+
return null;
|
|
480
|
+
const details = hover.details?.map((d) => ({ ...d }));
|
|
481
|
+
// A std tunable and an attach line show the value in force and who set it.
|
|
482
|
+
const terms = (hover.kind === "parameter" && hover.header) ||
|
|
483
|
+
(hover.kind === "instrument" &&
|
|
484
|
+
source.lastIndexOf("attach", offset) > source.lastIndexOf("{", offset))
|
|
485
|
+
? termsAt(source, offset, toolchain)
|
|
486
|
+
: undefined;
|
|
487
|
+
const term = terms?.find((t) => t.name === hover.title);
|
|
488
|
+
const added = hover.kind === "parameter"
|
|
489
|
+
? term
|
|
490
|
+
? [{ label: "In force", value: inForce(term) }]
|
|
491
|
+
: []
|
|
492
|
+
: (terms ?? []).map((t) => ({
|
|
493
|
+
label: `${t.name} in force`,
|
|
494
|
+
value: inForce(t),
|
|
495
|
+
}));
|
|
496
|
+
return {
|
|
497
|
+
...hover,
|
|
498
|
+
span: { ...hover.span },
|
|
499
|
+
...(details || added.length
|
|
500
|
+
? { details: [...(details ?? []), ...added] }
|
|
501
|
+
: {}),
|
|
502
|
+
};
|
|
440
503
|
}
|
|
441
504
|
//# sourceMappingURL=language.js.map
|
package/dist/src/language.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/language.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"language.js","sources":["../../src/language.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAc,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAC;AAuClE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,CAAC;AAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,UAAU;IACV,cAAc;IACd,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;IACV,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AACH,MAAM,UAAU,GACd,oGAAoG,CAAC;AACvG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;IACpB,OAAO;IACP,SAAS;IACT,KAAK;IACL,MAAM;IACN,UAAU;IACV,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,SAAS;IACT,MAAM;IACN,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AACH,qFAAqF;AACrF,MAAM,WAAW,GAAG,IAAI,GAAG,EAGxB,CAAC;AACJ,SAAS,MAAM,CAAC,IAAY,EAAE,SAAoB;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;QACnD,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,KAAK,GAAG,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,IAAI,EAAE;YAAE,WAAW,CAAC,KAAK,EAAE,CAAC;QAChD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;AACH,CAAC;AACD,SAAS,cAAc,CACrB,MAAiC,EACjC,KAAa;IAEb,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,MAAM,CAAC,aAAa;QAC3B,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE;aACnJ,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;gBACtB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,KAAK,EAAE;aACxC,CAAC,CAAC;YACH,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC/B,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;aAChH,CAAC,CAAC;SACJ;KACF,CAAC;AACJ,CAAC;AAYD,SAAS,OAAO,CAAC,MAAc,EAAE,SAAoB;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC9C,0EAA0E;IAC1E,MAAM,UAAU,GAAG,CAAC,KAAa,EAAQ,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,MAAM,EAAE,KAAK,CAAC,IAAI;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,IAAI,CAAC,GAAG,CAAC;QACZ,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,CAAC,CAAC,aAAa;YACtB,KAAK,EAAE,CAAC,CAAC,OAAO;SACjB,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,CAAC,KAAwB,EAAE,IAAmB,EAAE,IAAW,EAAE,EAAE;QAC1E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,KAAW,EACX,WAAmB,EACnB,IAAU,EACV,QAAQ,GAAG,KAAK,EAChB,SAAkB,EAClB,EAAE;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC;YACR,KAAK;YACL,WAAW;YACX,IAAI;YACJ,QAAQ;YACR,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,CACf,IAAY,EACZ,IAAmB,EACnB,KAAW,EACX,IAAU,EACV,SAAiB,EACjB,OAAe,EACf,SAAkB,EACZ,EAAE;QACR,MAAM,IAAI,GAAS;YACjB,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,SAAS;YACT,OAAO;YACP,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;SAC1E,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,0EAA0E;IAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;QACrC,IACE,QAAQ,KAAK,SAAS;YACtB,QAAQ,KAAK,QAAQ;YACrB,QAAQ,KAAK,QAAQ;YAErB,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;YACxD,IAAI,CACF,KAAK,EACL,OAAO,EACP,QAAQ,CACN,KAAK,CAAC,IAAI,EACV,OAAO,EACP,KAAK,EACL,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAC7C,kBAAkB,KAAK,CAAC,IAAI,GAAG,CAChC,CACF,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,KAAK,MAAM;YACrB,IAAI,CACF,KAAK,EACL,MAAM,EACN,QAAQ,CACN,KAAK,CAAC,IAAI,EACV,MAAM,EACN,KAAK,EACL,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,cAAc,KAAK,CAAC,IAAI,GAAG,CAC5B,CACF,CAAC;QACJ,IACE,QAAQ,KAAK,YAAY;YACzB,QAAQ,KAAK,QAAQ;YACrB,QAAQ,KAAK,QAAQ;YACrB,QAAQ,KAAK,QAAQ;YACrB,QAAQ,KAAK,IAAI;YAEjB,IAAI,CACF,KAAK,EACL,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,QAAQ;gBAChD,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ,CACb,CAAC;QACJ,IACE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YACnD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG;YAE3B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBAClB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO,EACL,KAAK,CAAC,IAAI,KAAK,OAAO;oBACpB,CAAC,CAAC,kCAAkC;oBACpC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;wBACtB,CAAC,CAAC,iDAAiD;wBACnD,CAAC,CAAC,mCAAmC;aAC5C,CAAC,CAAC;IACP,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAW,EAAE,EAAE;QACjD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,QAAQ;YACrC,IAAI,CACF,SAAS,CAAC,IAAI,EACd,KAAK,EACL,KAAK,CAAC,KAAK,EACX;gBACE,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,SAAS,CAAC,IAAI;gBACrB,MAAM,EAAE,KAAM;gBACd,OAAO,EAAE,gBAAgB,MAAM,CAAC,aAAa,GAAG;gBAChD,SAAS,EAAE,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE;gBACpH,OAAO,EACL,SAAS,IAAI,SAAS;oBACpB,CAAC,CAAC;wBACE;4BACE,KAAK,EAAE,qBAAqB;4BAC5B,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,OAAO,SAAS,CAAC,OAAO,EAAE;yBACtD;qBACF;oBACH,CAAC,CAAC,EAAE;aACT,EACD,IAAI,CACL,CAAC;QACJ,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;gBACpC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,MAAM,EAAE,KAAM;gBACd,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;aACnD,CAAC,CAAC;IACP,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;YAAE,WAAW,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;YAAE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,WAAW,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG;YAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACzE,IACE,KAAK,CAAC,IAAI,KAAK,GAAG;YAClB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG;YAC3B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,EAC3B,CAAC;YACD,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE;gBAC1D,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,CAChB,KAAY,EACZ,IAAmB,EACnB,KAAW,EACX,SAAkB,EAClB,EAAE;QACF,MAAM,IAAI,GAAG,QAAQ,CACnB,KAAK,CAAC,GAAG,EACT,IAAI,EACJ,KAAK,EACL,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAChB,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,oBAAoB,EAChF,SAAS,CACV,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,IAAU,EAAE,KAAW,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAClD,SAAS,CACP,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CACxC,CAAC;gBACJ,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC;oBAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,EAAE,KAAK,CAAC;oBAC1D,MAAM,IAAI,GAAG,QAAQ,CACnB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,CAAC,IAAI,EACV,UAAU,IAAI,EAAE,EAChB,OAAO,EAAE,IAAI,KAAK,MAAM;wBACtB,CAAC,CAAC,OAAO,CAAC,KAAK;wBACf,CAAC,CAAC,UAAU,IAAI,qBAAqB,CACxC,CAAC;oBACF,IAAI,KAAK;wBACP,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;oBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;qBAAM,IACL,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;oBAC/B,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAC5B,CAAC;oBACD,MAAM,CAAC,EAAE,IAAI,EAAE,AAAD,EAAG,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,MAAM,IAAI,GAAG,QAAQ,CACnB,IAAK,EACL,YAAY,EACZ,KAAK,EACL,KAAK,CAAC,IAAI,EACV,GAAG,IAAI,MAAM,MAAM,EAAE,EACrB,iBAAiB,MAAM,GAAG,CAC3B,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,IACE,OAAO,KAAK,WAAW;wBACvB,KAAK,CAAC,GAAG,KAAK,QAAQ;wBACtB,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAC3B,CAAC;wBACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK;4BACnC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gCACvB,QAAQ,CACN,KAAK,CAAC,KAAK,EACX,OAAO,EACP,KAAK,EACL,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,mBAAmB,KAAK,CAAC,KAAK,GAAG,CAClC,CAAC;oBACR,CAAC;oBACD,IAAI,CACF,KAAK,CAAC,KAAK,EACX,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAChD,KAAK,CAAC,GAAG,CACV,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aACvD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,EAAE,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,4DAA4D;IAC5D,MAAM,SAAS,GAAG,CAAC,KAAgB,EAAE,EAAE;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM;YACxB,IACE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;gBACnC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG;gBAC/B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAE3B,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;oBACrB,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,OAAO,EAAE,UAAU;iBACpB,CAAC,CAAC;QACP,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;gBAC/B,IAAI,CACF,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EACrB,OAAO,EACP,QAAQ,CACN,SAAS,CAAC,EAAE,CAAC,IAAI,EACjB,OAAO,EACP,KAAK,CAAC,IAAI,EACV,SAAS,CAAC,EAAE,CAAC,IAAI,EACjB,YAAY,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAC/B,GAAG,SAAS,CAAC,KAAK,0BAA0B,KAAK,CAAC,IAAI,IAAI,CAC3D,CACF,CAAC;YACJ,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1C,IAAI,SAAS,CAAC,KAAK;oBAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK;gBAC/C,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;IACF,0FAA0F;IAC1F,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAC3B,EAAE,KAAK,CAAC;gBACT,MAAM,IAAI,GAAG,QAAQ,CACnB,IAAI,CAAC,IAAI,EACT,YAAY,EACZ,KAAK,EACL,IAAI,CAAC,IAAI,EACT,MAAM;qBACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;qBAC5C,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;qBAC7B,IAAI,EAAE,EACT,OAAO,EAAE,IAAI,KAAK,MAAM;oBACtB,CAAC,CAAC,OAAO,CAAC,KAAK;oBACf,CAAC,CAAC,cAAc,IAAI,CAAC,IAAI,4BAA4B,CACxD,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC3C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU;oBACrC,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,IAAI,CACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB,MAAM,EACN,QAAQ,CACN,IAAI,CAAC,IAAI,EACT,MAAM,EACN,KAAK,EACL,IAAI,CAAC,IAAI,EACT,UAAU,IAAI,CAAC,IAAI,EAAE,EACrB,IAAI,CAAC,KAAK,CACX,CACF,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtC,QAAQ,CACN,IAAI,CAAC,IAAI,EACT,YAAY,EACZ,KAAK,EACL,IAAI,CAAC,IAAI,EACT,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAC/B,eAAe,IAAI,CAAC,MAAM,GAAG,CAC9B,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM;YAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,MAAM,IAAI,KAAK;YACjB,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;aACtD,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;aACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,QAAQ;iBACxB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChB,EAAE,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK;gBACjC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG;gBAC7B,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,CAAC;gBAC7B,CAAC,CAAC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,SAAS,KAAK,KAAK;oBACrB,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBACrC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;oBACtB,QAAQ,KAAK,GAAG;oBAChB,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CACxC,CAAC;YACJ,MAAM,OAAO,GAAG,UAAU,EAAE,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CACtE,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,WAAW,GACf,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACzB,QAAQ,KAAK,GAAG;gBAChB,QAAQ,KAAK,QAAQ;gBACrB,IAAI,KAAK,GAAG;gBACZ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAC9D,QAAQ,IAAI,EAAE,CACf;gBACD,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5C,IAAI,OAAO,IAAI,WAAW;gBAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;iBACpE,IACH,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrB,CAAC,QAAQ,KAAK,GAAG;oBACf,QAAQ,KAAK,GAAG;oBAChB,IAAI,KAAK,GAAG;oBACZ,IAAI,KAAK,GAAG;oBACZ,IAAI,KAAK,IAAI,CAAC;gBAEhB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACjB,IACH,QAAQ,KAAK,GAAG;gBAChB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;gBAElD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;iBAClB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,YAAY,CACxC,KAAK,CAAC,IAAiC,CACV,CAAC;YAChC,IAAI,GAAG;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO;gBACP,GAAG,CAAC,UAAU;oBACZ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE;oBAC5D,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;QACD,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAgB,EAAE;QACjD,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBACvB,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;iBAClD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAC7B,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;iBAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAC9B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAC7B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;wBACzB,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,QAAQ,CAAC;;gBACZ,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IACE,UAAU,CAAC,CAAC,CAAE,CAAC,KAAK,KAAK,QAAQ;YACjC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,IAAI,KAAK,MAAM;YAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,EACnC,CAAC;YACD,UAAU,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,OAAO,CAAC;YAC/B,UAAU,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,GAAG,OAAO,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AACD,+EAA+E;AAC/E,IAAI,IAAsD,CAAC;AAC3D,SAAS,QAAQ,CAAC,MAAc,EAAE,SAAoB;IACpD,4EAA4E;IAC5E,IAAI,SAAS,KAAK,gBAAgB,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,SAAS,KAAK,gBAAgB;QAAE,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,gFAAgF;AAChF,MAAM,UAAU,SAAS,CACvB,MAAc,EACd,SAAS,GAAc,gBAAgB;IAEvC,OAAO,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AACD,8EAA8E;AAC9E,IAAI,QAMS,CAAC;AACd,SAAS,OAAO,CACd,MAAc,EACd,MAAc,EACd,SAAoB;IAEpB,IAAI,QAAQ,EAAE,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;QACtE,QAAQ,GAAG;YACT,MAAM;YACN,SAAS;YACT,kEAAkE;YAClE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACZ,OAAO,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAC/D,EAAE,KAAK;SACX,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AACD,MAAM,OAAO,GAAG,CAAC,IAAiB,EAAE,EAAE,CACpC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,oBAAoB,GAAG,CAAC;AAC/I,2FAA2F;AAC3F,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,MAAc,EACd,SAAS,GAAc,gBAAgB;IAEvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM;QACpE,OAAO,IAAI,CAAC;IACd,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAC3C,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,2EAA2E;IAC3E,MAAM,KAAK,GACT,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;QAC5C,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY;YAC1B,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;QACpC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,KAAK,GACT,KAAK,CAAC,IAAI,KAAK,WAAW;QACxB,CAAC,CAAC,IAAI;YACJ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,CAAC,CAAC,EAAE;QACN,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,WAAW;YAC3B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;SAClB,CAAC,CAAC,CAAC;IACV,OAAO;QACL,GAAG,KAAK;QACR,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;QACvB,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM;YACzB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE;YAC7C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
|
package/dist/src/lex.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Diagnostic, Span } from "./ast.ts";
|
|
2
|
-
export declare const KEYWORDS: readonly ["program", "header", "
|
|
2
|
+
export declare const KEYWORDS: readonly ["program", "header", "party", "role", "currency", "instrument", "fields", "lifecycle", "action", "expose", "as", "cap", "of", "when", "checks", "requires", "invariants", "moves", "from", "to", "in", "is", "has", "unique", "on", "count", "sum", "hours", "between", "and", "timezone", "evidence", "family", "check", "result", "maxAge", "instruction", "reserve", "post", "void", "capture", "boundary", "key", "fee", "shares", "object", "attach", "subject", "rename", "columns"];
|
|
3
3
|
export interface Token {
|
|
4
4
|
kind: "name" | "number" | "string" | "date" | "punct" | "comment" | "eof";
|
|
5
5
|
text: string;
|
package/dist/src/lex.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lex.d.ts","
|
|
1
|
+
{"version":3,"file":"lex.d.ts","sources":["../../src/lex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACjD,eAAO,MAAM,QAAQ,YACnB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,OAAO,EACP,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,EACT,MAAM,EACN,MAAM,EACN,SAAS,EACT,UAAU,EACV,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,CACD,CAAC;AACX,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM;YASxB,KAAK,EAAE;iBACF,UAAU,EAAE;EAR1B;AAED,wFAAwF;AACxF,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,UAAO,GACZ;IACD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAmFA"}
|
package/dist/src/lex.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export const KEYWORDS = [
|
|
2
2
|
"program",
|
|
3
3
|
"header",
|
|
4
|
-
"use",
|
|
5
4
|
"party",
|
|
6
5
|
"role",
|
|
7
6
|
"currency",
|
|
@@ -10,12 +9,11 @@ export const KEYWORDS = [
|
|
|
10
9
|
"lifecycle",
|
|
11
10
|
"action",
|
|
12
11
|
"expose",
|
|
13
|
-
"hide",
|
|
14
12
|
"as",
|
|
15
13
|
"cap",
|
|
16
14
|
"of",
|
|
17
15
|
"when",
|
|
18
|
-
"
|
|
16
|
+
"checks",
|
|
19
17
|
"requires",
|
|
20
18
|
"invariants",
|
|
21
19
|
"moves",
|
|
@@ -118,11 +116,11 @@ export function scan(source, editor = true) {
|
|
|
118
116
|
kind = "string";
|
|
119
117
|
text = quoted[0];
|
|
120
118
|
}
|
|
121
|
-
else if (/^(
|
|
119
|
+
else if (/^(==|!=|<=|>=|->)/.test(tail)) {
|
|
122
120
|
kind = "punct";
|
|
123
121
|
text = tail.slice(0, 2);
|
|
124
122
|
}
|
|
125
|
-
else if (/^[{}()[\]
|
|
123
|
+
else if (/^[{}()[\]:,;=<>?.|+]/.test(tail)) {
|
|
126
124
|
kind = "punct";
|
|
127
125
|
text = tail[0];
|
|
128
126
|
}
|
package/dist/src/lex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lex.js","
|
|
1
|
+
{"version":3,"file":"lex.js","sources":["../../src/lex.ts"],"names":[],"mappings":"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"}
|
package/dist/src/parse.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { Diagnostic, Program } from "./ast.ts";
|
|
1
|
+
import type { Diagnostic, Expr, Program } from "./ast.ts";
|
|
2
2
|
export declare function parseProgram(source: string): {
|
|
3
3
|
program: Program;
|
|
4
4
|
diagnostics: Diagnostic[];
|
|
5
5
|
};
|
|
6
|
+
/** One value as a header parameter takes it, such as `10%`; undefined if it is not one. */
|
|
7
|
+
export declare function parseExpression(source: string): Expr | undefined;
|
|
6
8
|
//# sourceMappingURL=parse.d.ts.map
|
package/dist/src/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sources":["../../src/parse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,UAAU,EAEV,IAAI,EAEJ,OAAO,EAER,MAAM,UAAU,CAAC;AAOlB,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CA+CA;AACD,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAShE"}
|