@aperturesyndicate/synx-format 3.6.1 → 3.6.3

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/parser.js CHANGED
@@ -10,40 +10,75 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.parseData = parseData;
13
+ // ─── Resource limits (per SYNX 3.6 §3) ────────────────────
14
+ /** Maximum UTF-8 bytes accepted per parse() — text is truncated to a valid UTF-16 prefix not exceeding this length. */
15
+ const MAX_SYNX_INPUT_BYTES = 16 * 1024 * 1024; // 16 MiB
16
+ /** Maximum line count considered. */
17
+ const MAX_LINE_STARTS = 2000000;
18
+ /** Maximum nesting depth for the parser stack. */
19
+ const MAX_PARSE_NESTING_DEPTH = 128;
20
+ /** Maximum accumulated bytes per multiline `key |` block body. */
21
+ const MAX_MULTILINE_BLOCK_BYTES = 1024 * 1024; // 1 MiB
22
+ /** Maximum items per single list. */
23
+ const MAX_LIST_ITEMS = 1048576;
24
+ /** Maximum `!include` directives per file. */
25
+ const MAX_INCLUDE_DIRECTIVES = 4096;
26
+ /** Maximum comma-separated parts inside a single `enum:` constraint. */
27
+ const MAX_CONSTRAINT_ENUM_PARTS = 4096;
28
+ /** Maximum `:a:b:c` marker chain segments on one line. */
29
+ const MAX_MARKER_CHAIN_SEGMENTS = 512;
13
30
  // ─── Helpers ──────────────────────────────────────────────
14
31
  /** Cast a raw string value to a JS primitive */
15
32
  function castType(val) {
33
+ const len = val.length;
34
+ // Quoted strings preserve literal value (bypass auto-casting).
35
+ // Per SYNX 3.6 §8.3.1: "<inner>" or '<inner>' with length >= 2 → string of inner text.
36
+ if (len >= 2) {
37
+ const c0q = val.charCodeAt(0);
38
+ const cN = val.charCodeAt(len - 1);
39
+ if ((c0q === 34 && cN === 34) || (c0q === 39 && cN === 39)) {
40
+ return val.substring(1, len - 1);
41
+ }
42
+ }
16
43
  if (val === 'true')
17
44
  return true;
18
45
  if (val === 'false')
19
46
  return false;
20
47
  if (val === 'null')
21
48
  return null;
22
- const len = val.length;
23
49
  if (len === 0)
24
50
  return val;
25
51
  const c0 = val.charCodeAt(0);
26
52
  // Explicit cast: (int)007, (string)90210, (float)3.0, (bool)true, (random), (random:bool)
53
+ // Only treat the leading `(...)` as a type hint when it looks like an
54
+ // identifier-shaped token (`[A-Za-z_][A-Za-z0-9_:]*`). Anything else (e.g.
55
+ // a value that happens to start with a parenthesised arithmetic expression)
56
+ // is left untouched as a plain string.
27
57
  if (c0 === 40 && len > 2) { // '('
28
58
  const closeIdx = val.indexOf(')');
29
59
  if (closeIdx > 1) {
30
60
  const hint = val.substring(1, closeIdx);
31
- const raw = val.substring(closeIdx + 1);
32
- switch (hint) {
33
- case 'int': {
34
- const n = parseInt(raw, 10);
35
- return isNaN(n) ? 0 : n;
36
- }
37
- case 'float': {
38
- const n = parseFloat(raw);
39
- return isNaN(n) ? 0 : n;
61
+ if (/^[A-Za-z_][A-Za-z0-9_:]*$/.test(hint)) {
62
+ const raw = val.substring(closeIdx + 1);
63
+ switch (hint) {
64
+ case 'int': {
65
+ const n = parseInt(raw, 10);
66
+ return isNaN(n) ? 0 : n;
67
+ }
68
+ case 'float': {
69
+ const n = parseFloat(raw);
70
+ return isNaN(n) ? 0 : n;
71
+ }
72
+ case 'bool': return raw.trim() === 'true';
73
+ case 'string': return raw;
74
+ case 'random': return Math.floor(Math.random() * 2147483647);
75
+ case 'random:int': return Math.floor(Math.random() * 2147483647);
76
+ case 'random:float': return Math.random();
77
+ case 'random:bool': return Math.random() < 0.5;
78
+ // Unknown hint — strip the (hint) wrapper and re-cast the bare value
79
+ // (matches the Rust `cast_typed` fallback to `cast`).
80
+ default: return castType(raw);
40
81
  }
41
- case 'bool': return raw.trim() === 'true';
42
- case 'string': return raw;
43
- case 'random': return Math.floor(Math.random() * 2147483647);
44
- case 'random:int': return Math.floor(Math.random() * 2147483647);
45
- case 'random:float': return Math.random();
46
- case 'random:bool': return Math.random() < 0.5;
47
82
  }
48
83
  }
49
84
  }
@@ -133,7 +168,7 @@ function parseConstraints(raw) {
133
168
  constraints.pattern = value;
134
169
  break;
135
170
  case 'enum':
136
- constraints.enum = value.split('|');
171
+ constraints.enum = value.split('|').slice(0, MAX_CONSTRAINT_ENUM_PARTS);
137
172
  break;
138
173
  }
139
174
  }
@@ -169,11 +204,108 @@ function saveMeta(obj, key, markers, args, constraints, mode, typeHint) {
169
204
  meta.typeHint = typeHint;
170
205
  metaMap[key] = meta;
171
206
  }
172
- // ─── Fallback regex for complex lines (type hints, constraints, markers) ──
173
- const LINE_REGEX = /^([^\s\[:\-#/(][^\s\[:(]*)(?:\(([\w:]+)\))?(?:\[([^\]]*)\])?(?::([^\s]+))?\s*(.*)$/;
207
+ /**
208
+ * Parse a key line manually, supporting balanced brackets in [constraints].
209
+ * Returns null if the line is not a valid key line.
210
+ */
211
+ function parseKeyLine(trimmed) {
212
+ const len = trimmed.length;
213
+ if (len === 0)
214
+ return null;
215
+ const first = trimmed.charCodeAt(0);
216
+ // First char cannot be [, :, -, #, /, ( per §7
217
+ if (first === 91 || first === 58 || first === 45 || first === 35 || first === 47 || first === 40) {
218
+ return null;
219
+ }
220
+ // Extract key — stop at space, tab, [, :, (
221
+ let pos = 0;
222
+ while (pos < len) {
223
+ const ch = trimmed.charCodeAt(pos);
224
+ if (ch === 32 || ch === 9 || ch === 91 || ch === 58 || ch === 40)
225
+ break;
226
+ pos++;
227
+ }
228
+ if (pos === 0)
229
+ return null;
230
+ const key = trimmed.substring(0, pos);
231
+ let typeHint;
232
+ let constraintStr;
233
+ let markerChain;
234
+ // Optional (type)
235
+ if (pos < len && trimmed.charCodeAt(pos) === 40) { // '('
236
+ const closeIdx = trimmed.indexOf(')', pos + 1);
237
+ if (closeIdx !== -1) {
238
+ typeHint = trimmed.substring(pos + 1, closeIdx);
239
+ pos = closeIdx + 1;
240
+ }
241
+ else {
242
+ pos++;
243
+ }
244
+ }
245
+ // Optional [constraints] — balanced bracket scan to support patterns like ^[A-Z]{2}$
246
+ if (pos < len && trimmed.charCodeAt(pos) === 91) { // '['
247
+ pos++;
248
+ const cStart = pos;
249
+ let depth = 1;
250
+ while (pos < len && depth > 0) {
251
+ const ch = trimmed.charCodeAt(pos);
252
+ if (ch === 91)
253
+ depth++;
254
+ else if (ch === 93)
255
+ depth--;
256
+ if (depth > 0)
257
+ pos++;
258
+ }
259
+ if (depth === 0) {
260
+ constraintStr = trimmed.substring(cStart, pos);
261
+ pos++; // skip closing ']'
262
+ }
263
+ else {
264
+ // Unbalanced — fallback to first ']' if any
265
+ const fb = trimmed.indexOf(']', cStart);
266
+ if (fb !== -1) {
267
+ constraintStr = trimmed.substring(cStart, fb);
268
+ pos = fb + 1;
269
+ }
270
+ else {
271
+ constraintStr = trimmed.substring(cStart);
272
+ pos = len;
273
+ }
274
+ }
275
+ }
276
+ // Optional :markers
277
+ if (pos < len && trimmed.charCodeAt(pos) === 58) { // ':'
278
+ const mStart = pos + 1;
279
+ let mEnd = mStart;
280
+ while (mEnd < len) {
281
+ const ch = trimmed.charCodeAt(mEnd);
282
+ if (ch === 32 || ch === 9)
283
+ break;
284
+ mEnd++;
285
+ }
286
+ markerChain = trimmed.substring(mStart, mEnd);
287
+ pos = mEnd;
288
+ }
289
+ // Skip whitespace, then take rest as value
290
+ while (pos < len) {
291
+ const ch = trimmed.charCodeAt(pos);
292
+ if (ch !== 32 && ch !== 9)
293
+ break;
294
+ pos++;
295
+ }
296
+ const rawValue = pos < len ? trimmed.substring(pos) : '';
297
+ return { key, typeHint, constraintStr, markerChain, rawValue };
298
+ }
174
299
  // ─── Parser ───────────────────────────────────────────────
175
300
  function parseData(text) {
176
- const lines = text.split('\n');
301
+ // Truncate input to MAX_SYNX_INPUT_BYTES (UTF-16 code-unit boundary).
302
+ if (text.length > MAX_SYNX_INPUT_BYTES) {
303
+ text = text.substring(0, MAX_SYNX_INPUT_BYTES);
304
+ }
305
+ let lines = text.split('\n');
306
+ if (lines.length > MAX_LINE_STARTS) {
307
+ lines = lines.slice(0, MAX_LINE_STARTS);
308
+ }
177
309
  const root = {};
178
310
  const stack = [
179
311
  { indent: -1, obj: root },
@@ -181,6 +313,8 @@ function parseData(text) {
181
313
  let mode = 'static';
182
314
  let locked = false;
183
315
  let llm = false;
316
+ let tool = false;
317
+ let schema = false;
184
318
  const includes = [];
185
319
  let currentBlock = null;
186
320
  let currentList = null;
@@ -233,7 +367,7 @@ function parseData(text) {
233
367
  }
234
368
  const trimmed = rawLine.substring(indent, trimEndPos);
235
369
  const trimmedLen = trimmed.length;
236
- // ── Mode declaration: !active / !lock / !include ──
370
+ // ── Directives: !active / !lock / !llm / !tool / !schema / !include ──
237
371
  if (fc === 33) {
238
372
  if (trimmed === '!active') {
239
373
  mode = 'active';
@@ -247,19 +381,34 @@ function parseData(text) {
247
381
  llm = true;
248
382
  continue;
249
383
  }
384
+ if (trimmed === '!tool') {
385
+ tool = true;
386
+ continue;
387
+ }
388
+ if (trimmed === '!schema') {
389
+ schema = true;
390
+ continue;
391
+ }
250
392
  if (trimmed.startsWith('!include ')) {
251
- const parts = trimmed.substring(9).trim().split(/\s+/);
252
- const inclPath = parts[0];
253
- const alias = parts[1] || inclPath.replace(/^.*[\/\\]/, '').replace(/\.synx$/i, '');
254
- includes.push({ path: inclPath, alias });
393
+ if (includes.length < MAX_INCLUDE_DIRECTIVES) {
394
+ const parts = trimmed.substring(9).trim().split(/\s+/);
395
+ const inclPath = parts[0];
396
+ const alias = parts[1] || inclPath.replace(/^.*[\/\\]/, '').replace(/\.synx$/i, '');
397
+ includes.push({ path: inclPath, alias });
398
+ }
255
399
  continue;
256
400
  }
257
401
  }
258
402
  // ── Continue multiline block ──
259
403
  if (currentBlock && indent > currentBlock.indent) {
260
- const line = trimmed;
261
- currentBlock.obj[currentBlock.key] +=
262
- (currentBlock.obj[currentBlock.key] ? '\n' : '') + line;
404
+ const existing = currentBlock.obj[currentBlock.key];
405
+ if (existing.length < MAX_MULTILINE_BLOCK_BYTES) {
406
+ const line = trimmed;
407
+ const room = MAX_MULTILINE_BLOCK_BYTES - existing.length;
408
+ const sep = existing ? '\n' : '';
409
+ const append = sep + line;
410
+ currentBlock.obj[currentBlock.key] = existing + append.substring(0, room);
411
+ }
263
412
  continue;
264
413
  }
265
414
  else {
@@ -268,6 +417,9 @@ function parseData(text) {
268
417
  // ── List items: '- ' ──
269
418
  if (fc === 45 && trimmedLen > 1 && trimmed.charCodeAt(1) === 32) {
270
419
  if (currentList && indent > currentList.indent) {
420
+ if (currentList.arr.length >= MAX_LIST_ITEMS) {
421
+ continue;
422
+ }
271
423
  const val = stripInlineComment(trimmed.substring(2).trim());
272
424
  // Check if this list item has sub-keys (peek next line)
273
425
  let nextNonEmpty = i + 1;
@@ -290,13 +442,12 @@ function parseData(text) {
290
442
  nfc !== 45 && nfc !== 35 &&
291
443
  !(nfc === 47 && nextIndent + 1 < nextLine.length && nextLine.charCodeAt(nextIndent + 1) === 47)) {
292
444
  const itemObj = {};
293
- const itemMatch = val.match(LINE_REGEX);
294
- if (itemMatch) {
295
- const [, iKey, iTypeHint, , , iVal] = itemMatch;
296
- let iValue = iVal || '';
297
- if (iTypeHint)
298
- iValue = `(${iTypeHint})${iValue}`;
299
- itemObj[iKey] = iValue ? castType(stripInlineComment(iValue)) : {};
445
+ const parsed = parseKeyLine(val);
446
+ if (parsed) {
447
+ let iValue = parsed.rawValue;
448
+ if (parsed.typeHint)
449
+ iValue = `(${parsed.typeHint})${iValue}`;
450
+ itemObj[parsed.key] = iValue ? castType(stripInlineComment(iValue)) : {};
300
451
  }
301
452
  else {
302
453
  itemObj['_value'] = castType(val);
@@ -309,7 +460,7 @@ function parseData(text) {
309
460
  currentList.arr.push(castType(val));
310
461
  continue;
311
462
  }
312
- // Not in list context — skip (LINE_REGEX wouldn't match '- ' anyway)
463
+ // Not in list context — skip (no key-line starting with '- ' is valid)
313
464
  continue;
314
465
  }
315
466
  // Close list if needed (non-list-item line at <= list indent)
@@ -317,12 +468,11 @@ function parseData(text) {
317
468
  currentList = null;
318
469
  }
319
470
  // ── Validate first char can start a key ──
320
- // LINE_REGEX first char: [^\s\[:\-#/(] we already filtered #, //, -
471
+ // First char cannot be [ ( : / (already filtered #, //, -)
321
472
  if (fc === 91 || fc === 40 || fc === 58 || fc === 47)
322
473
  continue; // [ ( : /
323
474
  // ── Parse key line ──
324
- // FAST PATH: scan key for special chars ( [ :
325
- // If none found, skip LINE_REGEX entirely
475
+ // Manual scanner with balanced [] support for patterns like ^[A-Z]{2}$.
326
476
  let key;
327
477
  let typeHint;
328
478
  let constraintStr;
@@ -360,21 +510,24 @@ function parseData(text) {
360
510
  markerChain = undefined;
361
511
  }
362
512
  else {
363
- // ── Slow path: regex for lines with ( [ : ──
364
- const match = trimmed.match(LINE_REGEX);
365
- if (!match)
513
+ // ── Slow path: manual scanner for lines with ( [ : ──
514
+ const parsed = parseKeyLine(trimmed);
515
+ if (!parsed)
366
516
  continue;
367
- [, key, typeHint, constraintStr, markerChain, rawValue] = match;
368
- rawValue = rawValue ? stripInlineComment(rawValue.trim()) : '';
517
+ key = parsed.key;
518
+ typeHint = parsed.typeHint;
519
+ constraintStr = parsed.constraintStr;
520
+ markerChain = parsed.markerChain;
521
+ rawValue = parsed.rawValue ? stripInlineComment(parsed.rawValue) : '';
369
522
  }
370
523
  // Apply explicit type cast
371
524
  if (typeHint)
372
525
  rawValue = `(${typeHint})${rawValue}`;
373
- // Parse markers chain
526
+ // Parse markers chain (with segment cap)
374
527
  let markers = [];
375
528
  let markerArgs = [];
376
529
  if (markerChain) {
377
- markers = markerChain.split(':');
530
+ markers = markerChain.split(':').slice(0, MAX_MARKER_CHAIN_SEGMENTS);
378
531
  }
379
532
  // For :random — the rawValue may contain weight percentages
380
533
  if (markers.length > 0 && markers.includes('random') && rawValue) {
@@ -384,6 +537,12 @@ function parseData(text) {
384
537
  rawValue = '';
385
538
  }
386
539
  }
540
+ // For :inherit — a non-empty value is the parent-key name, not a scalar value.
541
+ // Promote it into markerArgs and clear rawValue so the line opens a group.
542
+ if (markers.length > 0 && markers.includes('inherit') && rawValue) {
543
+ markerArgs = [rawValue.trim()];
544
+ rawValue = '';
545
+ }
387
546
  const constraints = constraintStr ? parseConstraints(constraintStr) : undefined;
388
547
  // ── Pop stack to correct parent ──
389
548
  while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
@@ -411,7 +570,10 @@ function parseData(text) {
411
570
  else if (!rawValue) {
412
571
  // No value → nested object (group) OR plain list
413
572
  parent[key] = {};
414
- stack.push({ indent, obj: parent[key] });
573
+ // Cap nesting depth: still insert the object but don't push deeper.
574
+ if (stack.length < MAX_PARSE_NESTING_DEPTH) {
575
+ stack.push({ indent, obj: parent[key] });
576
+ }
415
577
  // Peek ahead: if next meaningful line starts with -, it's a list
416
578
  let peekIdx = i + 1;
417
579
  while (peekIdx < lines.length) {
@@ -447,6 +609,8 @@ function parseData(text) {
447
609
  mode,
448
610
  locked,
449
611
  ...(llm ? { llm: true } : {}),
612
+ ...(tool ? { tool: true } : {}),
613
+ ...(schema ? { schema: true } : {}),
450
614
  includes: includes.length > 0 ? includes : undefined,
451
615
  };
452
616
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAoSH,8BAiTC;AAvkBD,6DAA6D;AAE7D,uHAAuH;AACvH,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS;AACxD,qCAAqC;AACrC,MAAM,eAAe,GAAG,OAAS,CAAC;AAClC,kDAAkD;AAClD,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,kEAAkE;AAClE,MAAM,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AACvD,qCAAqC;AACrC,MAAM,cAAc,GAAG,OAAS,CAAC;AACjC,8CAA8C;AAC9C,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,wEAAwE;AACxE,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,0DAA0D;AAC1D,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC,6DAA6D;AAE7D,gDAAgD;AAChD,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAEvB,+DAA+D;IAC/D,uFAAuF;IACvF,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC3D,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAE1B,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAE7B,0FAA0F;IAC1F,sEAAsE;IACtE,2EAA2E;IAC3E,4EAA4E;IAC5E,uCAAuC;IACvC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACxC,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,KAAK,CAAC,CAAC,CAAC;wBAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC;oBACrE,KAAK,OAAO,CAAC,CAAC,CAAC;wBAAC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;wBAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC;oBACrE,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;oBAC1C,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;oBAC1B,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;oBAC7D,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;oBACjE,KAAK,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC1C,KAAK,aAAa,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;oBAC/C,qEAAqE;oBACrE,sDAAsD;oBACtD,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;QACrB,IAAI,GAAG,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAC1B,UAAU,GAAG,CAAC,CAAC;QACf,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU;QACpC,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;gBACrB,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;oBAAC,UAAU,GAAG,KAAK,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACjD,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC9B,UAAU,GAAG,KAAK,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,UAAU,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC;gBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+CAA+C;AAC/C,SAAS,kBAAkB,CAAC,GAAW;IACrC,uDAAuD;IACvD,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAExC,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,uEAAuE;AACvE,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,WAAW,GAAoB,EAAE,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClD,QAAQ,GAAG,EAAE,CAAC;oBACZ,KAAK,KAAK;wBAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAAC,MAAM;oBACnD,KAAK,KAAK;wBAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAAC,MAAM;oBACnD,KAAK,MAAM;wBAAE,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC;wBAAC,MAAM;oBAC7C,KAAK,SAAS;wBAAE,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;wBAAC,MAAM;oBACnD,KAAK,MAAM;wBAAE,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;wBAAC,MAAM;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,iDAAiD;AACjD,SAAS,QAAQ,CACf,GAAe,EACf,GAAW,EACX,OAAiB,EACjB,IAAc,EACd,WAAwC,EACxC,IAAc,EACd,QAAiB;IAEjB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;QAAE,OAAO;IAE9D,IAAI,OAAoB,CAAC;IACzB,IAAK,GAAW,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,GAAI,GAAW,CAAC,MAAM,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE;YACnC,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAa,EAAE,OAAO,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACtC,IAAI,WAAW;QAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChD,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAe;IAOnC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,+CAA+C;IAC/C,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAC5C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;YAAE,MAAM;QACxE,GAAG,EAAE,CAAC;IACR,CAAC;IACD,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEtC,IAAI,QAA4B,CAAC;IACjC,IAAI,aAAiC,CAAC;IACtC,IAAI,WAA+B,CAAC;IAEpC,kBAAkB;IAClB,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;QACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAChD,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,GAAG,EAAE,CAAC;QACR,CAAC;IACH,CAAC;IAED,qFAAqF;IACrF,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;QACvD,GAAG,EAAE,CAAC;QACN,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,EAAE,KAAK,EAAE;gBAAE,KAAK,EAAE,CAAC;iBAClB,IAAI,EAAE,KAAK,EAAE;gBAAE,KAAK,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,CAAC;gBAAE,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/C,GAAG,EAAE,CAAC,CAAC,mBAAmB;QAC5B,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACd,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9C,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1C,GAAG,GAAG,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;QACvD,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;QACvB,IAAI,IAAI,GAAG,MAAM,CAAC;QAClB,OAAO,IAAI,GAAG,GAAG,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;gBAAE,MAAM;YACjC,IAAI,EAAE,CAAC;QACT,CAAC;QACD,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IAED,2CAA2C;IAC3C,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;YAAE,MAAM;QACjC,GAAG,EAAE,CAAC;IACR,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACjE,CAAC;AAED,6DAA6D;AAE7D,SAAgB,SAAS,CAAC,IAAY;IACpC,sEAAsE;IACtE,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QACnC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,MAAM,KAAK,GAA2D;QACpE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;KAC1B,CAAC;IAEF,IAAI,IAAI,GAAa,QAAQ,CAAC;IAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,IAAI,YAAY,GAA4D,IAAI,CAAC;IACjF,IAAI,WAAW,GAA8C,IAAI,CAAC;IAClE,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,6CAA6C;QAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,MAAM,CAAC,iBAAiB;YAChE,MAAM,EAAE,CAAC;QACX,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,KAAK,MAAM;YAAE,SAAS;QAEhC,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B;QAEnE,kCAAkC;QAClC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,cAAc,GAAG,CAAC,cAAc,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,cAAc;YAAE,SAAS;QAE7B,0BAA0B;QAC1B,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;YACnB,wCAAwC;YACxC,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;gBACtE,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;oBACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9D,IAAI,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;YAAE,SAAS,CAAC,KAAK;QAE9F,uDAAuD;QACvD,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,OAAO,UAAU,GAAG,MAAM,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;gBAAE,MAAM;YAC3D,UAAU,EAAE,CAAC;QACf,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAElC,wEAAwE;QACxE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAAC,IAAI,GAAG,QAAQ,CAAC;gBAAC,SAAS;YAAC,CAAC;YACzD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBAAC,GAAG,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YACjD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvD,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBACpF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBACD,SAAS;YACX,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,YAAY,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAW,CAAC;YAC9D,IAAI,QAAQ,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,OAAO,CAAC;gBACrB,MAAM,IAAI,GAAG,yBAAyB,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;gBAC1B,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5E,CAAC;YACD,SAAS;QACX,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,yBAAyB;QACzB,IAAI,EAAE,KAAK,EAAE,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAChE,IAAI,WAAW,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC/C,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAE5D,wDAAwD;gBACxD,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACnC,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC/B,IAAI,EAAE,GAAG,CAAC,CAAC;oBACX,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;wBAAE,EAAE,EAAE,CAAC;oBACjH,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM;wBAAE,MAAM;oBAC1B,YAAY,EAAE,CAAC;gBACjB,CAAC;gBAED,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;oBACrC,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,OAAO,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;wBAAE,UAAU,EAAE,CAAC;oBACjL,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,UAAU,GAAG,MAAM,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM;wBACnD,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;wBACxB,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;wBACpG,MAAM,OAAO,GAAe,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBACjC,IAAI,MAAM,EAAE,CAAC;4BACX,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;4BAC7B,IAAI,MAAM,CAAC,QAAQ;gCAAE,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;4BAC9D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3E,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACpC,CAAC;wBACD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;wBACrC,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,uEAAuE;YACvE,SAAS;QACX,CAAC;QAED,8DAA8D;QAC9D,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YAChD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,4CAA4C;QAC5C,2DAA2D;QAC3D,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS,CAAC,UAAU;QAE1E,uBAAuB;QACvB,wEAAwE;QACxE,IAAI,GAAW,CAAC;QAChB,IAAI,QAA4B,CAAC;QACjC,IAAI,aAAiC,CAAC;QACtC,IAAI,WAA+B,CAAC;QACpC,IAAI,QAAgB,CAAC;QAErB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,eAAe;gBAC1C,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;YACR,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ;gBACjD,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,sDAAsD;YACtD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,GAAG,GAAG,OAAO,CAAC;gBACd,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACrC,wCAAwC;gBACxC,IAAI,QAAQ,GAAG,QAAQ,CAAC;gBACxB,OAAO,QAAQ,GAAG,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAAE,QAAQ,EAAE,CAAC;gBACxH,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,SAAS,CAAC;YAC1B,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACjB,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACrC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACjC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,CAAC;QAED,2BAA2B;QAC3B,IAAI,QAAQ;YAAE,QAAQ,GAAG,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAEpD,yCAAyC;QACzC,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;QACvE,CAAC;QAED,4DAA4D;QAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,UAAU,GAAG,IAAI,CAAC;gBAClB,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,2EAA2E;QAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC;YAClE,UAAU,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/B,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,oCAAoC;QACpC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YACpE,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAiB,CAAC;QAEzD,wCAAwC;QACxC,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW;YAAE,SAAS;QAElF,yCAAyC;QACzC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,kBAAkB;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjB,YAAY,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAC5C,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjE,0CAA0C;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjB,WAAW,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAc,EAAE,CAAC;YACxD,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrB,iDAAiD;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjB,oEAAoE;YACpE,IAAI,KAAK,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAe,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,iEAAiE;YACjE,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1B,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBAAE,EAAE,EAAE,CAAC;gBACjH,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM;oBAAE,MAAM;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1B,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBAAE,EAAE,EAAE,CAAC;gBACjH,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;oBACnF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAA0B,EAAE,CAAC;oBAChF,WAAW,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAc,EAAE,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC"}