bonescript-compiler 0.8.0 → 0.11.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/cli.js +134 -14
- package/dist/cli.js.map +1 -1
- package/dist/emit_colyseus.d.ts +26 -0
- package/dist/emit_colyseus.js +812 -0
- package/dist/emit_colyseus.js.map +1 -0
- package/dist/emit_graphql.js +19 -7
- package/dist/emit_graphql.js.map +1 -1
- package/dist/emit_notify.js +36 -1
- package/dist/emit_notify.js.map +1 -1
- package/dist/emit_prisma.js +10 -2
- package/dist/emit_prisma.js.map +1 -1
- package/dist/emit_sqlite.d.ts +42 -1
- package/dist/emit_sqlite.js +375 -51
- package/dist/emit_sqlite.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lowering.js +104 -8
- package/dist/lowering.js.map +1 -1
- package/package.json +11 -2
- package/src/cli.ts +142 -15
- package/src/emit_colyseus.ts +867 -0
- package/src/emit_graphql.ts +18 -7
- package/src/emit_notify.ts +36 -1
- package/src/emit_prisma.ts +10 -2
- package/src/emit_sqlite.ts +388 -52
- package/src/index.ts +1 -0
- package/src/lowering.ts +107 -9
- package/dist/test_notify.d.ts +0 -11
- package/dist/test_notify.js +0 -220
- package/dist/test_notify.js.map +0 -1
- package/dist/test_react.d.ts +0 -10
- package/dist/test_react.js +0 -177
- package/dist/test_react.js.map +0 -1
- package/dist/test_sqlite.d.ts +0 -13
- package/dist/test_sqlite.js +0 -262
- package/dist/test_sqlite.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -27,7 +27,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
27
27
|
return result;
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.compile = exports.emitGraphQLSchema = exports.emitCronJobs = exports.emitNotifyService = exports.emitAdminPanel = exports.emitAuditMiddleware = exports.emitAuditSchema = exports.emitSeedFile = exports.emitPostmanCollection = exports.emitZodSchemas = exports.emitReactHooks = exports.emitSdkPackageJson = exports.emitTypescriptSdk = exports.emitOpenApiJson = exports.emitOpenApiSpec = exports.validateExtensions = exports.extractImplementations = exports.mergeWithExisting = exports.listByCategory = exports.listAlgorithms = exports.lookupAlgorithm = exports.IR = exports.AST = exports.scaffold = exports.Formatter = exports.ModuleLoader = exports.optimize = exports.Verifier = exports.SqliteEmitter = exports.PrismaEmitter = exports.NakamaEmitter = exports.FullEmitter = exports.ConstraintSolver = exports.Lowering = exports.TypeChecker = exports.RecoveringParser = exports.ParseError = exports.Parser = exports.TokenKind = exports.LexerError = exports.Lexer = void 0;
|
|
30
|
+
exports.compile = exports.emitGraphQLSchema = exports.emitCronJobs = exports.emitNotifyService = exports.emitAdminPanel = exports.emitAuditMiddleware = exports.emitAuditSchema = exports.emitSeedFile = exports.emitPostmanCollection = exports.emitZodSchemas = exports.emitReactHooks = exports.emitSdkPackageJson = exports.emitTypescriptSdk = exports.emitOpenApiJson = exports.emitOpenApiSpec = exports.validateExtensions = exports.extractImplementations = exports.mergeWithExisting = exports.listByCategory = exports.listAlgorithms = exports.lookupAlgorithm = exports.IR = exports.AST = exports.scaffold = exports.Formatter = exports.ModuleLoader = exports.optimize = exports.Verifier = exports.ColyseusEmitter = exports.SqliteEmitter = exports.PrismaEmitter = exports.NakamaEmitter = exports.FullEmitter = exports.ConstraintSolver = exports.Lowering = exports.TypeChecker = exports.RecoveringParser = exports.ParseError = exports.Parser = exports.TokenKind = exports.LexerError = exports.Lexer = void 0;
|
|
31
31
|
// Core pipeline
|
|
32
32
|
var lexer_1 = require("./lexer");
|
|
33
33
|
Object.defineProperty(exports, "Lexer", { enumerable: true, get: function () { return lexer_1.Lexer; } });
|
|
@@ -52,6 +52,8 @@ var emit_prisma_1 = require("./emit_prisma");
|
|
|
52
52
|
Object.defineProperty(exports, "PrismaEmitter", { enumerable: true, get: function () { return emit_prisma_1.PrismaEmitter; } });
|
|
53
53
|
var emit_sqlite_1 = require("./emit_sqlite");
|
|
54
54
|
Object.defineProperty(exports, "SqliteEmitter", { enumerable: true, get: function () { return emit_sqlite_1.SqliteEmitter; } });
|
|
55
|
+
var emit_colyseus_1 = require("./emit_colyseus");
|
|
56
|
+
Object.defineProperty(exports, "ColyseusEmitter", { enumerable: true, get: function () { return emit_colyseus_1.ColyseusEmitter; } });
|
|
55
57
|
var verifier_1 = require("./verifier");
|
|
56
58
|
Object.defineProperty(exports, "Verifier", { enumerable: true, get: function () { return verifier_1.Verifier; } });
|
|
57
59
|
var optimizer_1 = require("./optimizer");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,gBAAgB;AAChB,iCAAuD;AAA9C,8FAAA,KAAK,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,kGAAA,SAAS,OAAA;AAErC,mCAA8C;AAArC,gGAAA,MAAM,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC3B,qDAAqD;AAA5C,mHAAA,gBAAgB,OAAA;AAEzB,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAEpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA;AAEzB,yCAA0C;AAAjC,wGAAA,WAAW,OAAA;AACpB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lowering.js
CHANGED
|
@@ -15,6 +15,29 @@ const crypto_1 = require("crypto");
|
|
|
15
15
|
function toSnakeCase(s) {
|
|
16
16
|
return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Extract the entity name from a `participants:` type expression.
|
|
20
|
+
*
|
|
21
|
+
* - `Player` → "Player"
|
|
22
|
+
* - `set<Player>` → "Player"
|
|
23
|
+
* - `list<Player>` → "Player"
|
|
24
|
+
* - `optional<Player>` → "Player"
|
|
25
|
+
* - anything else → null
|
|
26
|
+
*/
|
|
27
|
+
function extractParticipantEntity(t) {
|
|
28
|
+
if (!t)
|
|
29
|
+
return null;
|
|
30
|
+
if (t.kind === "EntityRefType")
|
|
31
|
+
return t.name;
|
|
32
|
+
if (t.kind === "GenericType") {
|
|
33
|
+
for (const arg of t.typeArgs) {
|
|
34
|
+
const inner = extractParticipantEntity(arg);
|
|
35
|
+
if (inner)
|
|
36
|
+
return inner;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
18
41
|
// ââ€Âۉâ€Âۉâ€Â€ Deterministic ID Generation ââ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Â€
|
|
19
42
|
function makeId(systemName, kind, name) {
|
|
20
43
|
const input = `${systemName}.${kind}.${name}`;
|
|
@@ -106,10 +129,32 @@ class Lowering {
|
|
|
106
129
|
modules.push(this.lowerEntity(entity, relatedCaps, stores, policies));
|
|
107
130
|
}
|
|
108
131
|
// Lower channels → realtime_service modules
|
|
132
|
+
// Lower channels — realtime_service modules.
|
|
133
|
+
//
|
|
134
|
+
// Capabilities tagged `sync: realtime` are routed into the channel that
|
|
135
|
+
// matches their participant entity, so each room can expose them as typed
|
|
136
|
+
// onMessage handlers. The matching rule: if any of the capability's
|
|
137
|
+
// parameters is the participant entity type (e.g. channel has
|
|
138
|
+
// `participants: set<Player>` and capability has `move(player: Player, ...)`),
|
|
139
|
+
// it gets dispatched on that room.
|
|
140
|
+
const realtimeCaps = capabilities.filter(c => c.sync === "realtime");
|
|
109
141
|
for (const channel of channels) {
|
|
110
|
-
|
|
142
|
+
const channelCaps = realtimeCaps.filter(c => {
|
|
143
|
+
const partEntityName = extractParticipantEntity(channel.participants);
|
|
144
|
+
if (!partEntityName)
|
|
145
|
+
return false;
|
|
146
|
+
return c.params.some(p => {
|
|
147
|
+
if (p.type.kind === "EntityRefType")
|
|
148
|
+
return p.type.name === partEntityName;
|
|
149
|
+
// Also match generic types like `set<Player>` if they happen to appear as a param
|
|
150
|
+
if (p.type.kind === "GenericType") {
|
|
151
|
+
return p.type.typeArgs.some(a => a.kind === "EntityRefType" && a.name === partEntityName);
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
modules.push(this.lowerChannel(channel, channelCaps, entities));
|
|
111
157
|
}
|
|
112
|
-
// Lower events
|
|
113
158
|
for (const ev of eventDecls) {
|
|
114
159
|
events.push(this.lowerEvent(ev));
|
|
115
160
|
}
|
|
@@ -217,6 +262,33 @@ class Lowering {
|
|
|
217
262
|
for (const f of entity.owns) {
|
|
218
263
|
fields.push(this.lowerField(f));
|
|
219
264
|
}
|
|
265
|
+
// Auto-add foreign key columns for `belongs_to` relations.
|
|
266
|
+
//
|
|
267
|
+
// Without this, generated migrations reference a column that doesn't exist
|
|
268
|
+
// (e.g. `FOREIGN KEY (seller_id) REFERENCES sellers(id)` when no seller_id
|
|
269
|
+
// is declared in `owns:`). Users were having to duplicate the FK in
|
|
270
|
+
// `owns:` to make it work; we now synthesize it.
|
|
271
|
+
//
|
|
272
|
+
// If the user already declared a column with the same name (the legacy
|
|
273
|
+
// pattern), we don't add a duplicate — their declaration wins so they
|
|
274
|
+
// can override nullability or add @sensitive.
|
|
275
|
+
const existingFieldNames = new Set(fields.map(f => f.name));
|
|
276
|
+
for (const rel of entity.relations) {
|
|
277
|
+
if (rel.relationType !== "belongs_to")
|
|
278
|
+
continue;
|
|
279
|
+
const fkName = toSnakeCase(rel.target) + "_id";
|
|
280
|
+
if (existingFieldNames.has(fkName))
|
|
281
|
+
continue;
|
|
282
|
+
fields.push({
|
|
283
|
+
name: fkName,
|
|
284
|
+
type: "uuid",
|
|
285
|
+
nullable: false,
|
|
286
|
+
unique: false,
|
|
287
|
+
indexed: true,
|
|
288
|
+
default_value: null,
|
|
289
|
+
});
|
|
290
|
+
existingFieldNames.add(fkName);
|
|
291
|
+
}
|
|
220
292
|
// Add derived fields as generated columns (stored: false = virtual)
|
|
221
293
|
const derivedFields = entity.derived.map(d => ({
|
|
222
294
|
name: d.name,
|
|
@@ -438,18 +510,40 @@ class Lowering {
|
|
|
438
510
|
};
|
|
439
511
|
}
|
|
440
512
|
// ââ€Âۉâ€Âۉâ€Â€ Channel Lowering ââ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Âۉâ€Â€
|
|
441
|
-
lowerChannel(channel) {
|
|
513
|
+
lowerChannel(channel, realtimeCapabilities = [], entities = []) {
|
|
514
|
+
// Default lifecycle methods that every Colyseus/WebSocket channel exposes.
|
|
515
|
+
const baseMethods = [
|
|
516
|
+
{ name: "connect", input: [], output: "connection", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
|
|
517
|
+
{ name: "subscribe", input: [{ name: "topic", type: "string", nullable: false, unique: false, indexed: false, default_value: null }], output: "subscription", preconditions: [], effects: [], emissions: [], idempotent: true, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
|
|
518
|
+
{ name: "publish", input: [{ name: "message", type: "json", nullable: false, unique: false, indexed: false, default_value: null }], output: "void", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
|
|
519
|
+
];
|
|
520
|
+
// Realtime capabilities lower as additional interface methods. The
|
|
521
|
+
// Colyseus emitter will turn these into typed onMessage handlers.
|
|
522
|
+
const capMethods = realtimeCapabilities.map(c => this.lowerCapability(c));
|
|
523
|
+
const participantEntity = extractParticipantEntity(channel.participants);
|
|
524
|
+
// If we have an entity reference, copy its field definitions into the
|
|
525
|
+
// channel's config so the Colyseus emitter can build a Player schema
|
|
526
|
+
// without re-resolving the AST. We only forward primitive-typed `owns:`
|
|
527
|
+
// fields — entity refs and complex types are skipped because Colyseus
|
|
528
|
+
// schemas need scalar @type decorators.
|
|
529
|
+
const participantFields = [];
|
|
530
|
+
if (participantEntity) {
|
|
531
|
+
const entity = entities.find(e => e.name === participantEntity);
|
|
532
|
+
if (entity) {
|
|
533
|
+
for (const f of entity.owns) {
|
|
534
|
+
if (f.type.kind === "PrimitiveType") {
|
|
535
|
+
participantFields.push({ name: f.name, type: f.type.name });
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
442
540
|
return {
|
|
443
541
|
id: makeId(this.systemName, "realtime_service", channel.name),
|
|
444
542
|
kind: "realtime_service",
|
|
445
543
|
name: channel.name,
|
|
446
544
|
interfaces: [{
|
|
447
545
|
name: `I${channel.name}Channel`,
|
|
448
|
-
methods: [
|
|
449
|
-
{ name: "connect", input: [], output: "connection", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
|
|
450
|
-
{ name: "subscribe", input: [{ name: "topic", type: "string", nullable: false, unique: false, indexed: false, default_value: null }], output: "subscription", preconditions: [], effects: [], emissions: [], idempotent: true, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
|
|
451
|
-
{ name: "publish", input: [{ name: "message", type: "json", nullable: false, unique: false, indexed: false, default_value: null }], output: "void", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
|
|
452
|
-
],
|
|
546
|
+
methods: [...baseMethods, ...capMethods],
|
|
453
547
|
}],
|
|
454
548
|
models: [],
|
|
455
549
|
events: [],
|
|
@@ -461,6 +555,8 @@ class Lowering {
|
|
|
461
555
|
ordering: channel.ordering || "fifo",
|
|
462
556
|
persistence: channel.persistence || "none",
|
|
463
557
|
max_size: channel.maxSize || 10000,
|
|
558
|
+
...(participantEntity ? { participant_entity: participantEntity } : {}),
|
|
559
|
+
...(participantFields.length > 0 ? { participant_fields: JSON.stringify(participantFields) } : {}),
|
|
464
560
|
},
|
|
465
561
|
};
|
|
466
562
|
}
|
package/dist/lowering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowering.js","sourceRoot":"","sources":["../src/lowering.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,mCAAoC;AAIpC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,g4BAAg4B;AAEh4B,SAAS,MAAM,CAAC,UAAkB,EAAE,IAAY,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IAC9C,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,2jCAA2jC;AAE3jC,SAAS,eAAe,CAAC,GAAkB;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,KAAM,CAAC;QAChC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,OAAS,CAAC;QACnC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,QAAU,CAAC;QACpC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,81BAA81B;AAE91B,SAAS,aAAa,CAAC,CAAmB;IACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACpC,KAAK,aAAa,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACpF,KAAK,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACpC,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzE,KAAK,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,m7BAAm7B;AAEn7B,SAAS,aAAa,CAAC,CAAe;IACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAK,CAAC,CAAC,KAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,YAAY;YACf,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACxE,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QACjD,KAAK,UAAU;YACb,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9D,KAAK,aAAa;YAChB,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9G,CAAC;AACH,CAAC;AAED,4kCAA4kC;AAE5kC,MAAa,QAAQ;IAArB;QACU,eAAU,GAAW,EAAE,CAAC;IAielC,CAAC;IA/dC,KAAK,CAAC,OAAwB,EAAE,UAAkB;QAChD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,GAAuB,EAAE,UAAkB;QAC7D,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QAE3B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClG,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA4B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACpG,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAClG,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC/F,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;QAEzH,sDAAsD;QACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,oFAAoF;QACpF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CACnF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,eAAe;QACf,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,mDAAmD;QACnD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC;gBACd,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC;gBAChD,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjC,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,MAAM,aAAa,GAA8C;YAC/D,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;SACV,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,aAAa,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3D,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC1B,aAAa,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;YACtD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;YACpD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3G,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO;YACP,MAAM;YACN,KAAK;YACL,UAAU;YACV,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3E,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtD,MAAM,EAAE,EAAE,CAAC,MAAM;aAClB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,KAAwB;QACzC,iFAAiF;QACjF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;QAClE,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;SAChB,CAAC;QAEF,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;gBACnB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB;aAC3G,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC;YACrD,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY;gBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;gBAC7B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D;SACF,CAAC;IACJ,CAAC;IAED,wiCAAwiC;IAEhiC,WAAW,CAAC,MAA0B,EAAE,YAAsC,EAAE,MAA2B,EAAE,WAAiC,EAAE;QACtJ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;QAEjF,wDAAwD;QACxD,MAAM,MAAM,GAAiB;YAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE;YAC9G,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;YAChH,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE;SAClH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,oEAAoE;QACpE,MAAM,aAAa,GAAiB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,EAAE,2BAA2B;YACzC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,wBAAwB,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;SACvE,CAAC,CAAC,CAAC;QAEJ,+CAA+C;QAC/C,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,4CAA4C;QAC5C,MAAM,gBAAgB,GAA2B,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,4BAA4B;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC;YACrC,WAAW,EAAE,IAAI;YACjB,OAAO;YACP,WAAW,EAAE,gBAAgB;SAC9B,CAAC;QAEF,2CAA2C;QAC3C,MAAM,aAAa,GAAwB,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,WAAW,GAAsB,EAAE,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACtC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;YACH,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,+CAA+C;QAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/D,6BAA6B;QAC7B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,KAAK,GAAmB;YAC5B,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,SAAS;YAC9B,OAAO;SACR,CAAC;QAEF,qBAAqB;QACrB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAoB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC5D,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACjD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;YAC9C,IAAI,UAAkB,CAAC;YACvB,IAAI,aAAiC,CAAC;YAEtC,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC;gBACzB,KAAK,YAAY;oBACf,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;oBAC7C,MAAM;gBACR,KAAK,SAAS,CAAC;gBACf,KAAK,UAAU;oBACb,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC9C,MAAM;gBACR,KAAK,cAAc;oBACjB,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC9C,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtD,MAAM;gBACR;oBACE,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YACjD,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,YAAY;gBACtB,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,SAAS,EAAE,GAAG,CAAC,MAAM;gBACrB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,aAAa;aAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,aAAa;YAC7B,SAAS;YACT,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE;gBACN,aAAa,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;gBAC7D,WAAW,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;gBAClC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;gBAC3C,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1F,oBAAoB,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;aAC3I;SACF,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,EAAU,EAAE,UAAkB,EAAE,MAAoB;QACzE,MAAM,KAAK,GAAiB,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ;YAC5D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;YAC3F,CAAC,CAAC,EAAE,KAAK,MAAM;gBACb,CAAC,CAAC;oBACE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE;oBACjG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;iBACxG;gBACH,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAExG,OAAO;YACL,IAAI,EAAE,EAAE;YACR,KAAK;YACL,MAAM,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YACrF,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM;YAC1C,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,GAA2B;QACjD,MAAM,KAAK,GAAiB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC,CAAC;QAEJ,MAAM,aAAa,GAAwB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;YAC5B,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAkB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,QAAiB;YACzF,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAElD,4BAA4B;QAC5B,IAAI,QAAQ,GAAyB,IAAI,CAAC;QAC1C,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,QAAQ,GAAG;gBACT,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ;gBAC/B,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;oBACzB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACpD,OAAO,EAAE,IAAI,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/B,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;oBACnC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;oBAClD,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;iBAC5E,CAAC,CAAC,CAAC,IAAI;aACT,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,IAAI,SAAS,GAA0B,IAAI,CAAC;QAC5C,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,SAAS,GAAG;gBACV,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI;gBAChC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;iBAC9B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB;YACxE,aAAa;YACb,OAAO;YACP,SAAS;YACT,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,KAAK;YACnC,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK;YACjD,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;gBACxC,OAAO,EAAG,GAAG,CAAC,KAAK,CAAC,OAAuC,IAAI,aAAa;gBAC5E,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI;aACzD,CAAC,CAAC,CAAC,IAAI;YACR,QAAQ;YACR,SAAS;YACT,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC;IACJ,CAAC;IAED,uhCAAuhC;IAE/gC,YAAY,CAAC,OAA4B;QAC/C,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC;YAC7D,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,CAAC;oBACX,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,SAAS;oBAC/B,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;wBACvN,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;wBAChU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;qBACxT;iBACF,CAAC;YACF,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE;gBACN,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,WAAW;gBAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;gBACpC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,MAAM;gBAC1C,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;aACnC;SACF,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,EAAqB;QACtC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,EAAE,SAAS,EAAE,wCAAwC;YAC3D,QAAQ,EAAG,EAAE,CAAC,QAA8B,IAAI,eAAe;YAC/D,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,0kCAA0kC;IAElkC,SAAS,CAAC,IAAsB;QACtC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1E,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;aAC/G,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,CAAgB;QACjC,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YACrE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;YACpE,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;YACnC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK;SAChC,CAAC;IACJ,CAAC;CACF;AAleD,4BAkeC"}
|
|
1
|
+
{"version":3,"file":"lowering.js","sourceRoot":"","sources":["../src/lowering.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,mCAAoC;AAIpC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,wBAAwB,CAAC,CAA0B;IAC1D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,g4BAAg4B;AAEh4B,SAAS,MAAM,CAAC,UAAkB,EAAE,IAAY,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IAC9C,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,2jCAA2jC;AAE3jC,SAAS,eAAe,CAAC,GAAkB;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,KAAM,CAAC;QAChC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,OAAS,CAAC;QACnC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,QAAU,CAAC;QACpC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,81BAA81B;AAE91B,SAAS,aAAa,CAAC,CAAmB;IACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACpC,KAAK,aAAa,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACpF,KAAK,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACpC,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzE,KAAK,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,m7BAAm7B;AAEn7B,SAAS,aAAa,CAAC,CAAe;IACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAK,CAAC,CAAC,KAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,YAAY;YACf,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACxE,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QACjD,KAAK,UAAU;YACb,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9D,KAAK,aAAa;YAChB,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9G,CAAC;AACH,CAAC;AAED,4kCAA4kC;AAE5kC,MAAa,QAAQ;IAArB;QACU,eAAU,GAAW,EAAE,CAAC;IA8iBlC,CAAC;IA5iBC,KAAK,CAAC,OAAwB,EAAE,UAAkB;QAChD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,GAAuB,EAAE,UAAkB;QAC7D,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QAE3B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClG,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA4B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACpG,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAClG,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC/F,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;QAEzH,sDAAsD;QACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,oFAAoF;QACpF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CACnF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,8DAA8D;QAC9D,6CAA6C;QAC7C,EAAE;QACF,wEAAwE;QACxE,0EAA0E;QAC1E,oEAAoE;QACpE,8DAA8D;QAC9D,+EAA+E;QAC/E,mCAAmC;QACnC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACrE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC1C,MAAM,cAAc,GAAG,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACtE,IAAI,CAAC,cAAc;oBAAE,OAAO,KAAK,CAAC;gBAClC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBACvB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;wBAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;oBAC3E,kFAAkF;oBAClF,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAClC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;oBAC5F,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,mDAAmD;QACnD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC;gBACd,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC;gBAChD,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjC,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,MAAM,aAAa,GAA8C;YAC/D,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;SACV,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,aAAa,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3D,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC1B,aAAa,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;YACtD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;YACpD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3G,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO;YACP,MAAM;YACN,KAAK;YACL,UAAU;YACV,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3E,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtD,MAAM,EAAE,EAAE,CAAC,MAAM;aAClB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,KAAwB;QACzC,iFAAiF;QACjF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;QAClE,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;SAChB,CAAC;QAEF,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;gBACnB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB;aAC3G,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC;YACrD,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY;gBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;gBAC7B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D;SACF,CAAC;IACJ,CAAC;IAED,wiCAAwiC;IAEhiC,WAAW,CAAC,MAA0B,EAAE,YAAsC,EAAE,MAA2B,EAAE,WAAiC,EAAE;QACtJ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;QAEjF,wDAAwD;QACxD,MAAM,MAAM,GAAiB;YAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE;YAC9G,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;YAChH,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE;SAClH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,2DAA2D;QAC3D,EAAE;QACF,2EAA2E;QAC3E,2EAA2E;QAC3E,oEAAoE;QACpE,iDAAiD;QACjD,EAAE;QACF,uEAAuE;QACvE,sEAAsE;QACtE,8CAA8C;QAC9C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,GAAG,CAAC,YAAY,KAAK,YAAY;gBAAE,SAAS;YAChD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YAC/C,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,oEAAoE;QACpE,MAAM,aAAa,GAAiB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,EAAE,2BAA2B;YACzC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,wBAAwB,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;SACvE,CAAC,CAAC,CAAC;QAEJ,+CAA+C;QAC/C,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,4CAA4C;QAC5C,MAAM,gBAAgB,GAA2B,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,4BAA4B;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC;YACrC,WAAW,EAAE,IAAI;YACjB,OAAO;YACP,WAAW,EAAE,gBAAgB;SAC9B,CAAC;QAEF,2CAA2C;QAC3C,MAAM,aAAa,GAAwB,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,WAAW,GAAsB,EAAE,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACtC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;YACH,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,+CAA+C;QAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/D,6BAA6B;QAC7B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,KAAK,GAAmB;YAC5B,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,SAAS;YAC9B,OAAO;SACR,CAAC;QAEF,qBAAqB;QACrB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAoB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC5D,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACjD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;YAC9C,IAAI,UAAkB,CAAC;YACvB,IAAI,aAAiC,CAAC;YAEtC,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC;gBACzB,KAAK,YAAY;oBACf,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;oBAC7C,MAAM;gBACR,KAAK,SAAS,CAAC;gBACf,KAAK,UAAU;oBACb,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC9C,MAAM;gBACR,KAAK,cAAc;oBACjB,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC9C,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtD,MAAM;gBACR;oBACE,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YACjD,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,YAAY;gBACtB,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,SAAS,EAAE,GAAG,CAAC,MAAM;gBACrB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,aAAa;aAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,aAAa;YAC7B,SAAS;YACT,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE;gBACN,aAAa,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;gBAC7D,WAAW,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;gBAClC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;gBAC3C,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1F,oBAAoB,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;aAC3I;SACF,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,EAAU,EAAE,UAAkB,EAAE,MAAoB;QACzE,MAAM,KAAK,GAAiB,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ;YAC5D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;YAC3F,CAAC,CAAC,EAAE,KAAK,MAAM;gBACb,CAAC,CAAC;oBACE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE;oBACjG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;iBACxG;gBACH,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAExG,OAAO;YACL,IAAI,EAAE,EAAE;YACR,KAAK;YACL,MAAM,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YACrF,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM;YAC1C,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,GAA2B;QACjD,MAAM,KAAK,GAAiB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC,CAAC;QAEJ,MAAM,aAAa,GAAwB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;YAC5B,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAkB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,QAAiB;YACzF,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAElD,4BAA4B;QAC5B,IAAI,QAAQ,GAAyB,IAAI,CAAC;QAC1C,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,QAAQ,GAAG;gBACT,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ;gBAC/B,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;oBACzB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACpD,OAAO,EAAE,IAAI,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/B,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;oBACnC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;oBAClD,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;iBAC5E,CAAC,CAAC,CAAC,IAAI;aACT,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,IAAI,SAAS,GAA0B,IAAI,CAAC;QAC5C,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,SAAS,GAAG;gBACV,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI;gBAChC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;iBAC9B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB;YACxE,aAAa;YACb,OAAO;YACP,SAAS;YACT,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,KAAK;YACnC,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK;YACjD,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;gBACxC,OAAO,EAAG,GAAG,CAAC,KAAK,CAAC,OAAuC,IAAI,aAAa;gBAC5E,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI;aACzD,CAAC,CAAC,CAAC,IAAI;YACR,QAAQ;YACR,SAAS;YACT,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC;IACJ,CAAC;IAED,uhCAAuhC;IAE/gC,YAAY,CAClB,OAA4B,EAC5B,uBAAiD,EAAE,EACnD,WAAiC,EAAE;QAEnC,2EAA2E;QAC3E,MAAM,WAAW,GAAkB;YACjC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YACvN,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YAChU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;SACxT,CAAC;QAEF,mEAAmE;QACnE,kEAAkE;QAClE,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1E,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEzE,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,iBAAiB,GAAqC,EAAE,CAAC;QAC/D,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;YAChE,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;wBACpC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC;YAC7D,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,CAAC;oBACX,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,SAAS;oBAC/B,OAAO,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC;iBACzC,CAAC;YACF,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE;gBACN,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,WAAW;gBAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;gBACpC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,MAAM;gBAC1C,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;gBAClC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnG;SACF,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,EAAqB;QACtC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,EAAE,SAAS,EAAE,wCAAwC;YAC3D,QAAQ,EAAG,EAAE,CAAC,QAA8B,IAAI,eAAe;YAC/D,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,0kCAA0kC;IAElkC,SAAS,CAAC,IAAsB;QACtC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1E,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;aAC/G,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,CAAgB;QACjC,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YACrE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;YACpE,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;YACnC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK;SAChC,CAAC;IACJ,CAAC;CACF;AA/iBD,4BA+iBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bonescript-compiler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "BoneScript compiler — compile .bone system descriptions into complete, runnable Node.js backends",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist/**/*",
|
|
12
|
+
"!dist/test*.js",
|
|
13
|
+
"!dist/test*.js.map",
|
|
14
|
+
"!dist/test*.d.ts",
|
|
12
15
|
"src/**/*.ts",
|
|
13
16
|
"!src/test.ts",
|
|
14
17
|
"!src/test_typechecker.ts",
|
|
@@ -16,6 +19,12 @@
|
|
|
16
19
|
"!src/test_sqlite.ts",
|
|
17
20
|
"!src/test_notify.ts",
|
|
18
21
|
"!src/test_react.ts",
|
|
22
|
+
"!src/test_prisma.ts",
|
|
23
|
+
"!src/test_relations.ts",
|
|
24
|
+
"!src/test_graphql.ts",
|
|
25
|
+
"!src/test_sqlite_e2e.ts",
|
|
26
|
+
"!src/test_colyseus_e2e.ts",
|
|
27
|
+
"!src/test_colyseus_advanced.ts",
|
|
19
28
|
"LICENSE",
|
|
20
29
|
"README.md"
|
|
21
30
|
],
|
|
@@ -24,7 +33,7 @@
|
|
|
24
33
|
"prepare": "npm run build",
|
|
25
34
|
"prepublishOnly": "npm run build",
|
|
26
35
|
"start": "ts-node src/cli.ts",
|
|
27
|
-
"test": "ts-node src/test.ts && ts-node src/test_typechecker.ts && ts-node src/test_nakama.ts && ts-node src/test_sqlite.ts && ts-node src/test_notify.ts && ts-node src/test_react.ts"
|
|
36
|
+
"test": "ts-node src/test.ts && ts-node src/test_typechecker.ts && ts-node src/test_nakama.ts && ts-node src/test_sqlite.ts && ts-node src/test_notify.ts && ts-node src/test_react.ts && ts-node src/test_prisma.ts && ts-node src/test_relations.ts && ts-node src/test_graphql.ts && ts-node src/test_sqlite_e2e.ts && ts-node src/test_colyseus_e2e.ts && ts-node src/test_colyseus_advanced.ts"
|
|
28
37
|
},
|
|
29
38
|
"keywords": [
|
|
30
39
|
"bonescript",
|
package/src/cli.ts
CHANGED
|
@@ -15,6 +15,7 @@ import { FullEmitter } from "./emit_full";
|
|
|
15
15
|
import { NakamaEmitter } from "./emit_nakama";
|
|
16
16
|
import { PrismaEmitter } from "./emit_prisma";
|
|
17
17
|
import { SqliteEmitter } from "./emit_sqlite";
|
|
18
|
+
import { ColyseusEmitter } from "./emit_colyseus";
|
|
18
19
|
import { Verifier } from "./verifier";
|
|
19
20
|
import { ModuleLoader } from "./module_loader";
|
|
20
21
|
import { Formatter } from "./formatter";
|
|
@@ -80,7 +81,7 @@ function main() {
|
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
function showHelp() {
|
|
83
|
-
console.log("BoneScript compiler v0.
|
|
84
|
+
console.log("BoneScript compiler v0.11.0");
|
|
84
85
|
console.log("");
|
|
85
86
|
console.log("Usage:");
|
|
86
87
|
console.log(" bonec compile <file> [--target <target>] Compile to runnable project");
|
|
@@ -96,10 +97,15 @@ function showHelp() {
|
|
|
96
97
|
console.log("");
|
|
97
98
|
console.log("compile options:");
|
|
98
99
|
console.log(" --target <name> Output target (default: express)");
|
|
99
|
-
console.log(" Options:
|
|
100
|
-
console.log("
|
|
101
|
-
console.log("
|
|
102
|
-
console.log("
|
|
100
|
+
console.log(" Options:");
|
|
101
|
+
console.log(" express - Full Express + Postgres backend (complete)");
|
|
102
|
+
console.log(" sqlite - Full Express backend on SQLite (zero external services)");
|
|
103
|
+
console.log(" nakama - Nakama TypeScript runtime");
|
|
104
|
+
console.log(" colyseus - Colyseus realtime game server (rooms from channels)");
|
|
105
|
+
console.log(" prisma - Prisma schema (schema.prisma) only");
|
|
106
|
+
console.log(" --no-sdk Skip SDK generation (express target only)");
|
|
107
|
+
console.log(" --no-openapi Skip OpenAPI spec generation (express target only)");
|
|
108
|
+
console.log(" --no-seed Skip seed file generation (express target only)");
|
|
103
109
|
console.log("");
|
|
104
110
|
console.log("init options:");
|
|
105
111
|
console.log(" bonec init <name> --domain <name> Scaffold from a domain template");
|
|
@@ -284,7 +290,7 @@ function runInit(args: string[]) {
|
|
|
284
290
|
|
|
285
291
|
function runCompile(source: string, resolved: string, extraArgs: string[] = []) {
|
|
286
292
|
// Parse --target flag (default: express)
|
|
287
|
-
let target: "express" | "nakama" | "prisma" | "sqlite" = "express";
|
|
293
|
+
let target: "express" | "nakama" | "prisma" | "sqlite" | "colyseus" = "express";
|
|
288
294
|
// Parse optional feature flags (future enhancement — documented for now)
|
|
289
295
|
let _noSdk = false;
|
|
290
296
|
let _noOpenApi = false;
|
|
@@ -292,8 +298,8 @@ function runCompile(source: string, resolved: string, extraArgs: string[] = [])
|
|
|
292
298
|
for (let i = 0; i < extraArgs.length; i++) {
|
|
293
299
|
if (extraArgs[i] === "--target" && extraArgs[i + 1]) {
|
|
294
300
|
const t = extraArgs[i + 1];
|
|
295
|
-
if (t !== "express" && t !== "nakama" && t !== "prisma" && t !== "sqlite") {
|
|
296
|
-
console.error(`Unknown target '${t}'. Valid targets: express, nakama, prisma, sqlite`);
|
|
301
|
+
if (t !== "express" && t !== "nakama" && t !== "prisma" && t !== "sqlite" && t !== "colyseus") {
|
|
302
|
+
console.error(`Unknown target '${t}'. Valid targets: express, nakama, prisma, sqlite, colyseus`);
|
|
297
303
|
process.exit(1);
|
|
298
304
|
}
|
|
299
305
|
target = t;
|
|
@@ -308,20 +314,37 @@ function runCompile(source: string, resolved: string, extraArgs: string[] = [])
|
|
|
308
314
|
}
|
|
309
315
|
|
|
310
316
|
if (target === "nakama") {
|
|
317
|
+
if (_noSdk || _noOpenApi || _noSeed) {
|
|
318
|
+
console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
|
|
319
|
+
}
|
|
311
320
|
runCompileNakama(source, resolved);
|
|
312
321
|
return;
|
|
313
322
|
}
|
|
314
323
|
|
|
315
324
|
if (target === "prisma") {
|
|
325
|
+
if (_noSdk || _noOpenApi || _noSeed) {
|
|
326
|
+
console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
|
|
327
|
+
}
|
|
316
328
|
runCompilePrisma(source, resolved);
|
|
317
329
|
return;
|
|
318
330
|
}
|
|
319
331
|
|
|
320
332
|
if (target === "sqlite") {
|
|
333
|
+
if (_noSdk || _noOpenApi || _noSeed) {
|
|
334
|
+
console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
|
|
335
|
+
}
|
|
321
336
|
runCompileSqlite(source, resolved);
|
|
322
337
|
return;
|
|
323
338
|
}
|
|
324
339
|
|
|
340
|
+
if (target === "colyseus") {
|
|
341
|
+
if (_noSdk || _noOpenApi || _noSeed) {
|
|
342
|
+
console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
|
|
343
|
+
}
|
|
344
|
+
runCompileColyseus(source, resolved);
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
|
|
325
348
|
try {
|
|
326
349
|
const tokens = new Lexer(source).tokenize();
|
|
327
350
|
console.log(` [1/7] Lexed: ${tokens.length} tokens`);
|
|
@@ -841,7 +864,24 @@ function runCompilePrisma(source: string, resolved: string) {
|
|
|
841
864
|
// ─── Validate ─────────────────────────────────────────────────────────────────
|
|
842
865
|
|
|
843
866
|
function runValidate(args: string[]) {
|
|
844
|
-
|
|
867
|
+
let outputDir: string;
|
|
868
|
+
if (args[0]) {
|
|
869
|
+
outputDir = path.resolve(args[0]);
|
|
870
|
+
} else {
|
|
871
|
+
// Auto-detect: try output/, then output-sqlite/, then output-nakama/.
|
|
872
|
+
const candidates = ["output", "output-sqlite", "output-nakama"];
|
|
873
|
+
const found = candidates
|
|
874
|
+
.map(c => path.resolve(c))
|
|
875
|
+
.find(p => fs.existsSync(path.join(p, "tsconfig.json")));
|
|
876
|
+
if (!found) {
|
|
877
|
+
console.error("Error: No generated output directory found.");
|
|
878
|
+
console.error("Looked for: " + candidates.join(", ") + " in " + process.cwd());
|
|
879
|
+
console.error("Pass an explicit path: bonec validate <dir>");
|
|
880
|
+
process.exit(1);
|
|
881
|
+
}
|
|
882
|
+
outputDir = found;
|
|
883
|
+
console.log(`(detected output directory: ${path.basename(outputDir)})\n`);
|
|
884
|
+
}
|
|
845
885
|
|
|
846
886
|
if (!fs.existsSync(outputDir)) {
|
|
847
887
|
console.error(`Error: Output directory not found: ${outputDir}`);
|
|
@@ -906,6 +946,81 @@ function runValidate(args: string[]) {
|
|
|
906
946
|
// ─── Compile (SQLite target) ──────────────────────────────────────────────────
|
|
907
947
|
|
|
908
948
|
function runCompileSqlite(source: string, resolved: string) {
|
|
949
|
+
try {
|
|
950
|
+
const tokens = new Lexer(source).tokenize();
|
|
951
|
+
console.log(` [1/7] Lexed: ${tokens.length} tokens`);
|
|
952
|
+
|
|
953
|
+
const loader = new ModuleLoader();
|
|
954
|
+
const loadResult = loader.load(resolved);
|
|
955
|
+
if (loadResult.errors.length > 0) {
|
|
956
|
+
for (const e of loadResult.errors.slice(0, 10)) {
|
|
957
|
+
console.log(` ${path.basename(e.file)}: ${e.error.message}`);
|
|
958
|
+
}
|
|
959
|
+
if (!loadResult.ast) process.exit(1);
|
|
960
|
+
}
|
|
961
|
+
const ast = loadResult.ast!;
|
|
962
|
+
console.log(` [2/7] Parsed: ${ast.systems.length} system(s)`);
|
|
963
|
+
|
|
964
|
+
const typeErrors = new TypeChecker().check(ast);
|
|
965
|
+
if (typeErrors.length > 0) {
|
|
966
|
+
console.log(` [3/7] Type check: ${typeErrors.length} error(s)`);
|
|
967
|
+
for (const err of typeErrors) {
|
|
968
|
+
console.log(` ${err.code} at ${err.loc.line}:${err.loc.column}: ${err.message}`);
|
|
969
|
+
}
|
|
970
|
+
} else {
|
|
971
|
+
console.log(` [3/7] Type check: v (0 errors)`);
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
const sourceHash = createHash("sha256").update(source).digest("hex").slice(0, 16);
|
|
975
|
+
const lowering = new Lowering();
|
|
976
|
+
const irSystems = lowering.lower(ast, sourceHash);
|
|
977
|
+
console.log(` [4/7] Lowered to IR: ${irSystems.reduce((s, sys) => s + sys.modules.length, 0)} modules`);
|
|
978
|
+
|
|
979
|
+
// Run optimize + solver so the FullEmitter produces complete output.
|
|
980
|
+
for (let i = 0; i < irSystems.length; i++) {
|
|
981
|
+
const result = optimize(irSystems[i]);
|
|
982
|
+
irSystems[i] = result.system;
|
|
983
|
+
}
|
|
984
|
+
const solver = new ConstraintSolver();
|
|
985
|
+
for (const sys of irSystems) {
|
|
986
|
+
const result = solver.solve(sys);
|
|
987
|
+
sys.resolution = result.resolution;
|
|
988
|
+
}
|
|
989
|
+
console.log(` [5/7] Optimize + solve: v`);
|
|
990
|
+
|
|
991
|
+
const emitter = new SqliteEmitter();
|
|
992
|
+
const allFiles: ReturnType<typeof emitter.emit> = [];
|
|
993
|
+
for (const sys of irSystems) {
|
|
994
|
+
allFiles.push(...emitter.emit(sys));
|
|
995
|
+
}
|
|
996
|
+
console.log(` [6/7] SQLite emit: ${allFiles.length} file(s)`);
|
|
997
|
+
|
|
998
|
+
const outputDir = path.resolve(path.dirname(resolved), "output-sqlite");
|
|
999
|
+
for (const f of allFiles) {
|
|
1000
|
+
const outPath = path.join(outputDir, f.path);
|
|
1001
|
+
const dir = path.dirname(outPath);
|
|
1002
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
1003
|
+
fs.writeFileSync(outPath, f.content, "utf-8");
|
|
1004
|
+
}
|
|
1005
|
+
console.log(` [7/7] Wrote ${allFiles.length} files to ${path.basename(outputDir)}/`);
|
|
1006
|
+
|
|
1007
|
+
console.log(`\nv SQLite compilation complete.`);
|
|
1008
|
+
console.log(`\nNext steps:`);
|
|
1009
|
+
console.log(` cd output-sqlite`);
|
|
1010
|
+
console.log(` npm install`);
|
|
1011
|
+
console.log(` npm run migrate`);
|
|
1012
|
+
console.log(` npm run dev`);
|
|
1013
|
+
console.log(` # → http://localhost:3000`);
|
|
1014
|
+
} catch (e: any) {
|
|
1015
|
+
console.error(`x ${e.message}`);
|
|
1016
|
+
process.exit(1);
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
// ─── Compile (Colyseus target) ────────────────────────────────────────────────
|
|
1022
|
+
|
|
1023
|
+
function runCompileColyseus(source: string, resolved: string) {
|
|
909
1024
|
try {
|
|
910
1025
|
const tokens = new Lexer(source).tokenize();
|
|
911
1026
|
console.log(` [1/5] Lexed: ${tokens.length} tokens`);
|
|
@@ -933,16 +1048,25 @@ function runCompileSqlite(source: string, resolved: string) {
|
|
|
933
1048
|
|
|
934
1049
|
const sourceHash = createHash("sha256").update(source).digest("hex").slice(0, 16);
|
|
935
1050
|
const irSystems = new Lowering().lower(ast, sourceHash);
|
|
936
|
-
console.log(` [4/5] Lowered to IR: ${irSystems.reduce((s, sys) => s + sys.modules.length, 0)} modules`);
|
|
937
1051
|
|
|
938
|
-
|
|
1052
|
+
// Warn if there are no realtime channels — the Colyseus output will be
|
|
1053
|
+
// empty of rooms, which is technically valid but unlikely to be intended.
|
|
1054
|
+
const totalChannels = irSystems.reduce((s, sys) =>
|
|
1055
|
+
s + sys.modules.filter(m => m.kind === "realtime_service").length, 0);
|
|
1056
|
+
if (totalChannels === 0) {
|
|
1057
|
+
console.log(` [4/5] Warning: no 'channel' declarations found. Generated server has no rooms.`);
|
|
1058
|
+
} else {
|
|
1059
|
+
console.log(` [4/5] Lowered to IR: ${totalChannels} channel(s)`);
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
const emitter = new ColyseusEmitter();
|
|
939
1063
|
const allFiles: ReturnType<typeof emitter.emit> = [];
|
|
940
1064
|
for (const sys of irSystems) {
|
|
941
1065
|
allFiles.push(...emitter.emit(sys));
|
|
942
1066
|
}
|
|
943
|
-
console.log(` [5/5]
|
|
1067
|
+
console.log(` [5/5] Colyseus emit: ${allFiles.length} file(s)`);
|
|
944
1068
|
|
|
945
|
-
const outputDir = path.resolve(path.dirname(resolved), "output-
|
|
1069
|
+
const outputDir = path.resolve(path.dirname(resolved), "output-colyseus");
|
|
946
1070
|
for (const f of allFiles) {
|
|
947
1071
|
const outPath = path.join(outputDir, f.path);
|
|
948
1072
|
const dir = path.dirname(outPath);
|
|
@@ -950,9 +1074,12 @@ function runCompileSqlite(source: string, resolved: string) {
|
|
|
950
1074
|
fs.writeFileSync(outPath, f.content, "utf-8");
|
|
951
1075
|
}
|
|
952
1076
|
|
|
953
|
-
console.log(`\nv
|
|
1077
|
+
console.log(`\nv Colyseus compilation complete. ${allFiles.length} file(s) written to output-colyseus/`);
|
|
954
1078
|
console.log(`\nNext steps:`);
|
|
955
|
-
console.log(` cd output-
|
|
1079
|
+
console.log(` cd output-colyseus`);
|
|
1080
|
+
console.log(` npm install`);
|
|
1081
|
+
console.log(` npm run dev`);
|
|
1082
|
+
console.log(` # → ws://localhost:2567`);
|
|
956
1083
|
} catch (e: any) {
|
|
957
1084
|
console.error(`x ${e.message}`);
|
|
958
1085
|
process.exit(1);
|