@milehimikey/em 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/.claude/skills/event-modeling/SKILL.md +60 -12
  2. package/.claude/skills/event-modeling/reference/conform.md +30 -8
  3. package/.claude/skills/event-modeling/reference/em-dsl.md +139 -23
  4. package/.claude/skills/event-modeling/reference/extract.md +2 -1
  5. package/.claude/skills/event-modeling/reference/implement.md +172 -0
  6. package/.claude/skills/event-modeling/templates/conformance-report.md +15 -9
  7. package/.claude/skills/event-modeling/templates/model-readme.md +3 -3
  8. package/.claude/skills/event-modeling/templates/slice.md +70 -4
  9. package/.claude/skills/event-modeling/templates/state.md +6 -5
  10. package/README.md +1 -0
  11. package/dist/catalog/build.d.ts +5 -0
  12. package/dist/catalog/build.js +1 -3
  13. package/dist/catalog/build.js.map +1 -1
  14. package/dist/catalog/docJoin.d.ts +39 -0
  15. package/dist/catalog/docJoin.js +86 -0
  16. package/dist/catalog/docJoin.js.map +1 -0
  17. package/dist/catalog/driftSignal.d.ts +16 -0
  18. package/dist/catalog/driftSignal.js +24 -0
  19. package/dist/catalog/driftSignal.js.map +1 -0
  20. package/dist/catalog/frontmatterCoherenceValidate.d.ts +8 -0
  21. package/dist/catalog/frontmatterCoherenceValidate.js +52 -0
  22. package/dist/catalog/frontmatterCoherenceValidate.js.map +1 -0
  23. package/dist/catalog/lineageValidate.d.ts +9 -0
  24. package/dist/catalog/lineageValidate.js +161 -0
  25. package/dist/catalog/lineageValidate.js.map +1 -0
  26. package/dist/catalog/readSliceDoc.d.ts +2 -0
  27. package/dist/catalog/readSliceDoc.js +21 -0
  28. package/dist/catalog/readSliceDoc.js.map +1 -0
  29. package/dist/catalog/sliceDoc.d.ts +94 -3
  30. package/dist/catalog/sliceDoc.js +157 -7
  31. package/dist/catalog/sliceDoc.js.map +1 -1
  32. package/dist/catalog/sliceReadyValidate.d.ts +11 -0
  33. package/dist/catalog/sliceReadyValidate.js +85 -0
  34. package/dist/catalog/sliceReadyValidate.js.map +1 -0
  35. package/dist/cli/diff-inputs.d.ts +20 -0
  36. package/dist/cli/diff-inputs.js +75 -18
  37. package/dist/cli/diff-inputs.js.map +1 -1
  38. package/dist/cli/ledgerCheck.d.ts +38 -0
  39. package/dist/cli/ledgerCheck.js +116 -0
  40. package/dist/cli/ledgerCheck.js.map +1 -0
  41. package/dist/cli/skillCheck.d.ts +18 -0
  42. package/dist/cli/skillCheck.js +63 -0
  43. package/dist/cli/skillCheck.js.map +1 -0
  44. package/dist/cli/skillSync.d.ts +22 -0
  45. package/dist/cli/skillSync.js +69 -0
  46. package/dist/cli/skillSync.js.map +1 -0
  47. package/dist/cli/skillVersionCheck.d.ts +32 -0
  48. package/dist/cli/skillVersionCheck.js +145 -0
  49. package/dist/cli/skillVersionCheck.js.map +1 -0
  50. package/dist/cli.d.ts +3 -1
  51. package/dist/cli.js +199 -32
  52. package/dist/cli.js.map +1 -1
  53. package/dist/emit/diffJson.d.ts +1 -1
  54. package/dist/emit/diffJson.js +18 -14
  55. package/dist/emit/diffJson.js.map +1 -1
  56. package/dist/emit/json.d.ts +10 -25
  57. package/dist/emit/json.js +70 -103
  58. package/dist/emit/json.js.map +1 -1
  59. package/dist/emit/ledgerJson.d.ts +5 -0
  60. package/dist/emit/ledgerJson.js +25 -0
  61. package/dist/emit/ledgerJson.js.map +1 -0
  62. package/dist/emit/skillCheckJson.d.ts +5 -0
  63. package/dist/emit/skillCheckJson.js +32 -0
  64. package/dist/emit/skillCheckJson.js.map +1 -0
  65. package/dist/model/diff.d.ts +44 -1
  66. package/dist/model/diff.js +51 -9
  67. package/dist/model/diff.js.map +1 -1
  68. package/dist/model/model.d.ts +1 -1
  69. package/dist/model/refs.d.ts +23 -0
  70. package/dist/model/refs.js +75 -0
  71. package/dist/model/refs.js.map +1 -0
  72. package/dist/model/rules.d.ts +252 -0
  73. package/dist/model/rules.js +253 -0
  74. package/dist/model/rules.js.map +1 -0
  75. package/dist/model/validate.d.ts +23 -1
  76. package/dist/model/validate.js +168 -47
  77. package/dist/model/validate.js.map +1 -1
  78. package/dist/parser/ast.d.ts +3 -2
  79. package/dist/parser/parser.js +23 -11
  80. package/dist/parser/parser.js.map +1 -1
  81. package/dist/pipeline.d.ts +9 -0
  82. package/dist/pipeline.js +4 -2
  83. package/dist/pipeline.js.map +1 -1
  84. package/dist/render/sliceStatus.js +1 -1
  85. package/dist/render/sliceStatus.js.map +1 -1
  86. package/dist/util/isMainModule.d.ts +14 -0
  87. package/dist/util/isMainModule.js +33 -0
  88. package/dist/util/isMainModule.js.map +1 -0
  89. package/dist/util/walkDir.d.ts +4 -0
  90. package/dist/util/walkDir.js +28 -0
  91. package/dist/util/walkDir.js.map +1 -0
  92. package/package.json +5 -2
@@ -1,5 +1,7 @@
1
+ import { RefsResult } from "./refs.js";
1
2
  import { NormalizedModel } from "./model.js";
2
3
  import { ElementKind } from "../parser/ast.js";
4
+ import { SliceDoc, SliceRef } from "../catalog/sliceDoc.js";
3
5
  export type ChangeType = "slice-added" | "slice-removed" | "source-added" | "source-removed" | "source-changed" | "element-added" | "element-removed" | "element-moved" | "field-added" | "field-removed" | "field-changed" | "from-added" | "from-removed" | "note-added" | "note-removed" | "note-changed" | "issue-opened" | "issue-resolved" | "issue-changed" | "event-marked-public" | "event-unmarked-public" | "arrow-added" | "arrow-removed" | "type-added" | "type-removed" | "type-field-added" | "type-field-removed" | "type-field-changed";
4
6
  /**
5
7
  * One reported change. Not every field applies to every `type` — see
@@ -46,6 +48,22 @@ export interface ChangeEntry {
46
48
  * `element-added`, `element-moved` — out of scope for v1, see model.ts's `divergence` doc).
47
49
  */
48
50
  acceptedDivergence?: string | null;
51
+ /**
52
+ * MIL-84: the added slice's own doc frontmatter lineage — attached to `slice-added` entries
53
+ * only, and only when the new-side doc resolves (readable + parseable; see `LineageResolvers`
54
+ * below). Same shape/defaults as `em export`'s `slice.doc.splitFrom` (catalog/docJoin.ts's
55
+ * `SliceDocExport`). `undefined` when the doc doesn't resolve or lineage wasn't requested
56
+ * (`diffModels()` called without a `lineage` argument) — never cross-checked here (does
57
+ * `checkout@v3` really exist/match? that's `em validate`'s job, catalog/lineageValidate.ts).
58
+ */
59
+ splitFrom?: SliceRef | null;
60
+ /** MIL-84: same as `splitFrom`, for `merged-from`. Attached to `slice-added` entries. */
61
+ mergedFrom?: SliceRef[];
62
+ /**
63
+ * MIL-84: the removed slice's own (old-side) doc frontmatter `superseded-by` — attached to
64
+ * `slice-removed` entries only, when the old-side doc resolves. Never cross-checked here.
65
+ */
66
+ supersededBy?: SliceRef[];
49
67
  }
50
68
  export interface DiffCounts {
51
69
  slicesAdded: number;
@@ -73,6 +91,12 @@ export interface DiffCounts {
73
91
  typesAdded: number;
74
92
  typesRemoved: number;
75
93
  typeFieldChanges: number;
94
+ /** `slice-added` entries whose new-side doc resolved with a non-null `splitFrom` (MIL-84). */
95
+ slicesSplit: number;
96
+ /** `slice-added` entries whose new-side doc resolved with a non-empty `mergedFrom` (MIL-84). */
97
+ slicesMerged: number;
98
+ /** `slice-removed` entries whose old-side doc resolved with a non-empty `supersededBy` (MIL-84). */
99
+ slicesSuperseded: number;
76
100
  }
77
101
  export interface ModelDiff {
78
102
  /** Additions and changes, in new-file document order. */
@@ -81,7 +105,26 @@ export interface ModelDiff {
81
105
  removals: ChangeEntry[];
82
106
  counts: DiffCounts;
83
107
  }
84
- export declare function diffModels(oldModel: NormalizedModel, newModel: NormalizedModel): ModelDiff;
108
+ /**
109
+ * Optional per-side slice-doc lookups for lineage annotation (MIL-84) — resolve a slice's own
110
+ * doc, by its `em export` key, on that side of the diff. `newDoc` reads the *new*-side doc of a
111
+ * `slice-added` entry (for `split-from`/`merged-from`, which are claims a slice makes about
112
+ * itself); `oldDoc` reads the *old*-side doc of a `slice-removed` entry (for `superseded-by`).
113
+ * Each resolver returns `null` when the doc doesn't exist or can't be read — `diffModels()`
114
+ * never fails on that, it just omits the annotation, same report-not-gate philosophy as `em
115
+ * export`'s doc join (catalog/docJoin.ts). Omit `lineage` entirely (the default) to get today's
116
+ * plain add/remove behavior with no fs access at all — `em changelog`'s `diffModels()` calls
117
+ * deliberately don't pass one.
118
+ */
119
+ export interface LineageResolvers {
120
+ newDoc?: (sliceKey: string) => SliceDoc | null;
121
+ oldDoc?: (sliceKey: string) => SliceDoc | null;
122
+ }
123
+ /** `oldRefs`/`newRefs` are each side's already-computed `RefsResult` (MIL-91) — sourced from
124
+ * the same `compile()` call that produced `oldModel`/`newModel`, never recomputed here, so
125
+ * their ref-collision diagnostics (already in each compile's own `diagnostics`) aren't
126
+ * silently dropped or double-computed. */
127
+ export declare function diffModels(oldModel: NormalizedModel, newModel: NormalizedModel, oldRefs: RefsResult, newRefs: RefsResult, lineage?: LineageResolvers): ModelDiff;
85
128
  export declare function hasChanges(diff: ModelDiff): boolean;
86
129
  /** Full `em diff` report: rollup line + blank + one line per change, or just "no structural changes". */
87
130
  export declare function formatModelDiff(diff: ModelDiff): string;
@@ -1,14 +1,13 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // Structural diff between two NormalizedModels, for `em diff`. Identity is
3
3
  // export identity: slices are matched by their `em export` key, elements by
4
- // their `em export` ref (see computeRefs() in ../emit/json.ts) — the same
4
+ // their `em export` ref (see computeRefs() in ./refs.ts) — the same
5
5
  // edit-stable scheme `em export` already guarantees (inserting/reordering
6
6
  // slices doesn't change an existing element's ref). A rename (same slot,
7
7
  // different name) is therefore NOT tracked as a rename — it reads as a
8
8
  // remove+add, deliberately: a rename IS a model change. A cross-slice MOVE
9
9
  // (same kind + normalized name, different slice) is detected separately and
10
10
  // reported once, not as add+remove.
11
- import { computeRefs } from "../emit/json.js";
12
11
  import { normalizeName } from "./model.js";
13
12
  function emptyCounts() {
14
13
  return {
@@ -32,6 +31,9 @@ function emptyCounts() {
32
31
  typesAdded: 0,
33
32
  typesRemoved: 0,
34
33
  typeFieldChanges: 0,
34
+ slicesSplit: 0,
35
+ slicesMerged: 0,
36
+ slicesSuperseded: 0,
35
37
  };
36
38
  }
37
39
  /** Push `acceptedDivergence` onto an entry and tally it, when the canonical element carries one. */
@@ -42,9 +44,11 @@ function annotate(entry, counts, divergence) {
42
44
  return entry;
43
45
  }
44
46
  const arrowKey = (from, to) => `${normalizeName(from)}->${normalizeName(to)}`;
45
- export function diffModels(oldModel, newModel) {
46
- const oldRefs = computeRefs(oldModel);
47
- const newRefs = computeRefs(newModel);
47
+ /** `oldRefs`/`newRefs` are each side's already-computed `RefsResult` (MIL-91) — sourced from
48
+ * the same `compile()` call that produced `oldModel`/`newModel`, never recomputed here, so
49
+ * their ref-collision diagnostics (already in each compile's own `diagnostics`) aren't
50
+ * silently dropped or double-computed. */
51
+ export function diffModels(oldModel, newModel, oldRefs, newRefs, lineage) {
48
52
  const oldSliceKeySet = new Set(oldRefs.sliceKeys);
49
53
  const newSliceKeySet = new Set(newRefs.sliceKeys);
50
54
  // Slice key -> old Slice, for diffing `source` on slices that survive
@@ -122,7 +126,17 @@ export function diffModels(oldModel, newModel) {
122
126
  const sliceKey = newRefs.sliceKeys[i];
123
127
  const sliceIsNew = !oldSliceKeySet.has(sliceKey);
124
128
  if (sliceIsNew) {
125
- changes.push({ type: "slice-added", name: slice.name, sliceKey });
129
+ const entry = { type: "slice-added", name: slice.name, sliceKey };
130
+ const doc = lineage?.newDoc?.(sliceKey);
131
+ if (doc) {
132
+ entry.splitFrom = doc.splitFrom;
133
+ entry.mergedFrom = doc.mergedFrom;
134
+ if (doc.splitFrom)
135
+ counts.slicesSplit++;
136
+ if (doc.mergedFrom.length > 0)
137
+ counts.slicesMerged++;
138
+ }
139
+ changes.push(entry);
126
140
  counts.slicesAdded++;
127
141
  }
128
142
  else {
@@ -170,7 +184,14 @@ export function diffModels(oldModel, newModel) {
170
184
  const sliceKey = oldRefs.sliceKeys[i];
171
185
  const sliceIsRemoved = !newSliceKeySet.has(sliceKey);
172
186
  if (sliceIsRemoved) {
173
- removals.push({ type: "slice-removed", name: slice.name, sliceKey });
187
+ const entry = { type: "slice-removed", name: slice.name, sliceKey };
188
+ const doc = lineage?.oldDoc?.(sliceKey);
189
+ if (doc) {
190
+ entry.supersededBy = doc.supersededBy;
191
+ if (doc.supersededBy.length > 0)
192
+ counts.slicesSuperseded++;
193
+ }
194
+ removals.push(entry);
174
195
  counts.slicesRemoved++;
175
196
  }
176
197
  for (const el of slice.elements) {
@@ -435,6 +456,9 @@ function formatSummary(c) {
435
456
  push(c.typesRemoved, "type removed", "types removed");
436
457
  push(c.typeFieldChanges, "type field change", "type field changes");
437
458
  push(c.acceptedDivergences, "accepted divergence", "accepted divergences");
459
+ push(c.slicesSplit, "slice split", "slices split");
460
+ push(c.slicesMerged, "slice merged", "slices merged");
461
+ push(c.slicesSuperseded, "slice superseded", "slices superseded");
438
462
  return parts.length === 0 ? "no structural changes" : parts.join(", ");
439
463
  }
440
464
  function typeLabel(t) {
@@ -444,12 +468,30 @@ function typeLabel(t) {
444
468
  function divergenceSuffix(e) {
445
469
  return e.acceptedDivergence ? ` [accepted divergence: "${e.acceptedDivergence}"]` : "";
446
470
  }
471
+ /** Render a lineage ref for a formatted line — falls back to the raw frontmatter text rather
472
+ * than hiding it when the ref didn't parse (MIL-84: a malformed ref still stays visible). */
473
+ function formatRef(r) {
474
+ return r.sliceKey ? `"${r.sliceKey}"@v${r.version}` : r.raw;
475
+ }
476
+ /** MIL-84 lineage suffix for `slice-added`/`slice-removed` lines — `splitFrom` takes priority
477
+ * over `mergedFrom` in the (unexpected) case both are somehow set, mirroring the schema's
478
+ * single-vs-list cardinality rule for the two keys. `undefined` fields (lineage not resolved)
479
+ * and empty arrays both render nothing. */
480
+ function lineageSuffix(e) {
481
+ if (e.splitFrom)
482
+ return ` (split from ${formatRef(e.splitFrom)})`;
483
+ if (e.mergedFrom && e.mergedFrom.length > 0)
484
+ return ` (merged from ${e.mergedFrom.map(formatRef).join(", ")})`;
485
+ if (e.supersededBy && e.supersededBy.length > 0)
486
+ return ` (superseded by ${e.supersededBy.map(formatRef).join(", ")})`;
487
+ return "";
488
+ }
447
489
  function formatEntry(e) {
448
490
  switch (e.type) {
449
491
  case "slice-added":
450
- return `+ slice "${e.name}"`;
492
+ return `+ slice "${e.name}"${lineageSuffix(e)}`;
451
493
  case "slice-removed":
452
- return `- slice "${e.name}"`;
494
+ return `- slice "${e.name}"${lineageSuffix(e)}`;
453
495
  case "source-added":
454
496
  return `~ source added on slice "${e.sliceName}": "${e.newSource}"`;
455
497
  case "source-removed":
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/model/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/model/diff.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,2EAA2E;AAC3E,4EAA4E;AAC5E,oEAAoE;AACpE,0EAA0E;AAC1E,yEAAyE;AACzE,uEAAuE;AACvE,2EAA2E;AAC3E,4EAA4E;AAC5E,oCAAoC;AAGpC,OAAO,EAA6C,aAAa,EAAE,MAAM,YAAY,CAAC;AA2ItF,SAAS,WAAW;IAClB,OAAO;QACL,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,CAAC;QACrB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,CAAC;QAChB,mBAAmB,EAAE,CAAC;QACtB,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;QACnB,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;KACpB,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,SAAS,QAAQ,CAAC,KAAkB,EAAE,MAAkB,EAAE,UAA8B;IACtF,KAAK,CAAC,kBAAkB,GAAG,UAAU,IAAI,IAAI,CAAC;IAC9C,IAAI,UAAU;QAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAQD,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAU,EAAU,EAAE,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;AAkBtG;;;2CAG2C;AAC3C,MAAM,UAAU,UAAU,CACxB,QAAyB,EACzB,QAAyB,EACzB,OAAmB,EACnB,OAAmB,EACnB,OAA0B;IAE1B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,sEAAsE;IACtE,iEAAiE;IACjE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0C,CAAC;IACvE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAClC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;;YACtC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuD,CAAC;IACpF,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,WAAW,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC;YACxC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAG,CAAC;gBAC/B,uEAAuE;gBACvE,wEAAwE;gBACxE,yEAAyE;gBACzE,yEAAyE;gBACzE,0EAA0E;gBAC1E,wEAAwE;gBACxE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,0EAA0E;gBAC1E,MAAM,aAAa,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3D,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,CAAC,WAAW,IAAI,aAAa,CAAC,EAAE,CAAC;oBACpC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAE7B,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC/E,MAAM,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBAChC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBAClC,IAAI,GAAG,CAAC,SAAS;oBAAE,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,CAAC,YAAY,EAAE,CAAC;YACvD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnF,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,QAAQ,EAAE,CAAC;gBACb,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAChF,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,GAAG;oBACH,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,OAAO,EAAE,KAAK,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ;iBACrB,CAAC,CAAC;gBACH,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC;iBAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvB,kEAAkE;gBAClE,mEAAmE;gBACnE,+DAA+D;gBAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5G,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,KAAK,GAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YACjF,MAAM,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gBACtC,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC;YACxC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,qCAAqC;YACxE,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,+BAA+B;YACpE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CACX,QAAQ,CACN,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,EAC/F,MAAM,EACN,EAAE,CAAC,UAAU,CACd,CACF,CAAC;gBACF,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,uFAAuF;IACvF,uEAAuE;IACvE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAElG,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;QAC3C,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,qCAAqC;QAC1E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACvC,CAAC;AAED,sGAAsG;AACtG,SAAS,gBAAgB,CACvB,OAAsB,EACtB,MAAkB,EAClB,QAAe,EACf,QAAe,EACf,QAAgB;IAEhB,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO;IAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACzG,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3G,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,QAAQ,CAAC,IAAI;YACxB,QAAQ;YACR,SAAS,EAAE,QAAQ,CAAC,MAAM;YAC1B,SAAS,EAAE,QAAQ,CAAC,MAAM;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,aAAa,EAAE,CAAC;AACzB,CAAC;AAED;;4DAE4D;AAC5D,SAAS,oBAAoB,CAC3B,OAAsB,EACtB,MAAkB,EAClB,OAAiB,EACjB,OAAiB,EACjB,GAAW;IAEX,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjF,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAC9G,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAChH,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG;gBACH,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;gBAC1B,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;aAC3B,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,SAAS,kBAAkB,CACzB,OAAsB,EACtB,MAAkB,EAClB,KAAc,EACd,KAAc,EACd,SAAiB,EACjB,QAAgB,EAChB,GAAW;IAEX,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvF,uFAAuF;IACvF,sFAAsF;IACtF,gFAAgF;IAChF,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CACV,QAAQ,CACN;gBACE,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG;gBACH,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;aAC1B,EACD,MAAM,EACN,GAAG,CACJ,CACF,CAAC;YACF,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CACV,QAAQ,CACN;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG;gBACH,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;aAC1B,EACD,MAAM,EACN,GAAG,CACJ,CACF,CAAC;YACF,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CACV,QAAQ,CACN;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG;gBACH,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;gBAC1B,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;aAC3B,EACD,MAAM,EACN,GAAG,CACJ,CACF,CAAC;YACF,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CACV,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CACvH,CAAC;YACF,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CACV,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CACzH,CAAC;YACF,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CACV,QAAQ,CACN,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,EACzG,MAAM,EACN,GAAG,CACJ,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CACV,QAAQ,CACN,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,EAC3G,MAAM,EACN,GAAG,CACJ,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,QAAQ,CACN;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG;gBACH,SAAS;gBACT,QAAQ;gBACR,OAAO,EAAE,KAAK,CAAC,IAAI;gBACnB,OAAO,EAAE,KAAK,CAAC,IAAI;aACpB,EACD,MAAM,EACN,GAAG,CACJ,CACF,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,sEAAsE;IACtE,0EAA0E;IAC1E,wCAAwC;IACxC,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CACV,QAAQ,CACN,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,EAC5G,MAAM,EACN,GAAG,CACJ,CACF,CAAC;YACF,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CACV,QAAQ,CACN,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,EAC9G,MAAM,EACN,GAAG,CACJ,CACF,CAAC;YACF,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,QAAQ,CACN;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG;gBACH,SAAS;gBACT,QAAQ;gBACR,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,OAAO,EAAE,KAAK,CAAC,KAAK;aACrB,EACD,MAAM,EACN,GAAG,CACJ,CACF,CAAC;YACF,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,gDAAgD;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5G,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9G,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,kGAAkG;AAClG,SAAS,aAAa,CAAC,CAAa;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,QAAgB,EAAE,MAAc,EAAE,EAAE;QAC3D,IAAI,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC;IACF,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IAChF,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;IACpE,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,CAA4B;IAC7C,OAAO,CAAC,IAAI,WAAW,CAAC;AAC1B,CAAC;AAED,6FAA6F;AAC7F,SAAS,gBAAgB,CAAC,CAAc;IACtC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACzF,CAAC;AAED;8FAC8F;AAC9F,SAAS,SAAS,CAAC,CAAW;IAC5B,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED;;;4CAG4C;AAC5C,SAAS,aAAa,CAAC,CAAc;IACnC,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,gBAAgB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IAClE,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,iBAAiB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/G,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,mBAAmB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvH,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,CAAc;IACjC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,eAAe;YAClB,OAAO,YAAY,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,cAAc;YACjB,OAAO,4BAA4B,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC;QACtE,KAAK,gBAAgB;YACnB,OAAO,gCAAgC,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC;QAC1E,KAAK,gBAAgB;YACnB,OAAO,8BAA8B,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC;QAC5F,KAAK,eAAe;YAClB,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,IAAI,CAAC;QAC5D,KAAK,iBAAiB;YACpB,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,KAAK,eAAe;YAClB,OAAO,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC;QACzF,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACtJ,KAAK,eAAe;YAClB,OAAO,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1J,KAAK,eAAe;YAClB,OAAO,YAAY,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzK,KAAK,YAAY;YACf,OAAO,WAAW,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,KAAK,cAAc;YACjB,OAAO,WAAW,CAAC,CAAC,MAAM,kBAAkB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAClH,KAAK,YAAY;YACf,OAAO,mBAAmB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,KAAK,cAAc;YACjB,OAAO,uBAAuB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACpH,KAAK,cAAc;YACjB,OAAO,qBAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACpI,KAAK,cAAc;YACjB,OAAO,iBAAiB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,KAAK,eAAe;YAClB,OAAO,uBAAuB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACtI,KAAK,qBAAqB;YACxB,OAAO,wBAAwB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,IAAI,CAAC;QAC/E,KAAK,uBAAuB;YAC1B,OAAO,0BAA0B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,IAAI,CAAC;QACjF,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5C,KAAK,eAAe;YAClB,OAAO,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5C,KAAK,YAAY;YACf,OAAO,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC;QAC9B,KAAK,cAAc;YACjB,OAAO,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC;QAC9B,KAAK,kBAAkB;YACrB,OAAO,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,IAAI,GAAG,CAAC;QAClG,KAAK,oBAAoB;YACvB,OAAO,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,IAAI,GAAG,CAAC;QACtG,KAAK,oBAAoB;YACvB,OAAO,YAAY,CAAC,CAAC,KAAK,2BAA2B,CAAC,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvH,CAAC;AACH,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,eAAe,CAAC,IAAe;IAC7C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACpF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,uBAAuB,CAAC;IACvD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC"}
@@ -38,7 +38,7 @@ export interface Element {
38
38
  line: number;
39
39
  /** view-only: marks a later timeline instance of an already-declared read model. */
40
40
  again?: boolean;
41
- /** event-only: marks this event as part of the published integration surface. */
41
+ /** event or view: marks this element as part of the published integration surface. */
42
42
  public?: boolean;
43
43
  /** id of the first instance of this logical element (== id for everything except later view instances). */
44
44
  logicalId: string;
@@ -0,0 +1,23 @@
1
+ import { NormalizedModel } from "./model.js";
2
+ import type { Diagnostic } from "./validate.js";
3
+ export interface RefsResult {
4
+ /** Export key per slice, same order/index as `model.slices`. */
5
+ sliceKeys: string[];
6
+ /** Internal `Element.id` -> stable export `ref`. */
7
+ refById: Map<string, string>;
8
+ /** Internal `TypeDecl.id` -> stable export `ref` (`types/<slug(name)>`). */
9
+ refByTypeId: Map<string, string>;
10
+ /** Ref-collision warnings raised while assigning keys/refs (duplicate names). */
11
+ diagnostics: Diagnostic[];
12
+ }
13
+ /**
14
+ * Assign every slice its export key (`slug(name)`) and every element its export ref
15
+ * (`<sliceKey>/<kind>.<slug(name)>`), in document order, deduped with a `~2`, `~3`, … suffix
16
+ * on collision. Shared by `em export` (`emit/json.ts`), `em diff` (`model/diff.ts`), `em
17
+ * catalog` (`catalog/build.ts`), and `em validate`'s diagnostics (`model/validate.ts`, via
18
+ * `pipeline.ts`'s single per-compile call) — all of which need the same edit-stable identity
19
+ * scheme to match elements/slices across models or tag a finding to the entity it concerns.
20
+ * Also assigns every declared type its export ref (`types/<slug(name)>`) — types aren't
21
+ * slice-scoped, so no sliceKey prefix, same dedup-with-warning machinery otherwise.
22
+ */
23
+ export declare function computeRefs(model: NormalizedModel): RefsResult;
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Computes every export-stable identity (slice keys, element refs, type refs) for a
3
+ // normalized model — the one scheme `em export`, `em diff`, `em catalog`, and (MIL-91)
4
+ // `em validate`'s diagnostics all share so an entity's identity is never re-derived twice.
5
+ //
6
+ // Lives in model/ rather than emit/ (where it lived through MIL-78/86/90, moved here for
7
+ // MIL-91): it's a pure function of NormalizedModel — no JSON shape, no fs — and validate.ts
8
+ // now needs it too. Piling a second model-layer consumer onto an emit-owned module would be
9
+ // backwards; moving it here makes emit/json.ts, model/diff.ts, and catalog/build.ts all
10
+ // depend downward on model/, the correct direction.
11
+ import { pushDiag } from "./rules.js";
12
+ import { dedupe, kebabSlug } from "../util/slug.js";
13
+ /**
14
+ * Assign every slice its export key (`slug(name)`) and every element its export ref
15
+ * (`<sliceKey>/<kind>.<slug(name)>`), in document order, deduped with a `~2`, `~3`, … suffix
16
+ * on collision. Shared by `em export` (`emit/json.ts`), `em diff` (`model/diff.ts`), `em
17
+ * catalog` (`catalog/build.ts`), and `em validate`'s diagnostics (`model/validate.ts`, via
18
+ * `pipeline.ts`'s single per-compile call) — all of which need the same edit-stable identity
19
+ * scheme to match elements/slices across models or tag a finding to the entity it concerns.
20
+ * Also assigns every declared type its export ref (`types/<slug(name)>`) — types aren't
21
+ * slice-scoped, so no sliceKey prefix, same dedup-with-warning machinery otherwise.
22
+ */
23
+ export function computeRefs(model) {
24
+ const diagnostics = [];
25
+ // Pass 1: assign every slice its export key and every element its export
26
+ // ref, in document order, before resolving any cross-references. Doing
27
+ // refs and cross-references in separate passes means a `from` or arrow
28
+ // can point at any element regardless of declaration order within a slice.
29
+ const usedSliceKeys = new Set();
30
+ const sliceKeys = model.slices.map((slice) => {
31
+ const base = kebabSlug(slice.name);
32
+ const key = dedupe(base, usedSliceKeys, "~");
33
+ if (key !== base) {
34
+ pushDiag(diagnostics, "duplicate-slice-name", {
35
+ message: `duplicate slice name "${slice.name}" (export key "${base}" already used); rename slices uniquely for stable export refs`,
36
+ line: slice.line,
37
+ refs: [key, base],
38
+ });
39
+ }
40
+ return key;
41
+ });
42
+ const usedElementRefs = new Set();
43
+ const refById = new Map();
44
+ model.slices.forEach((slice, sliceIndex) => {
45
+ const sliceKey = sliceKeys[sliceIndex];
46
+ for (const el of slice.elements) {
47
+ const base = `${sliceKey}/${el.kind}.${kebabSlug(el.name)}`;
48
+ const ref = dedupe(base, usedElementRefs, "~");
49
+ if (ref !== base) {
50
+ pushDiag(diagnostics, "duplicate-element-ref", {
51
+ message: `duplicate ${el.kind} "${el.name}" in slice "${slice.name}" (export ref "${base}" already used); rename for a stable export ref`,
52
+ line: el.line,
53
+ refs: [ref, base],
54
+ });
55
+ }
56
+ refById.set(el.id, ref);
57
+ }
58
+ });
59
+ const usedTypeRefs = new Set();
60
+ const refByTypeId = new Map();
61
+ for (const t of model.types) {
62
+ const base = `types/${kebabSlug(t.name)}`;
63
+ const ref = dedupe(base, usedTypeRefs, "~");
64
+ if (ref !== base) {
65
+ pushDiag(diagnostics, "duplicate-type-ref", {
66
+ message: `duplicate type "${t.name}" (export ref "${base}" already used); rename for a stable export ref`,
67
+ line: t.line,
68
+ refs: [ref, base],
69
+ });
70
+ }
71
+ refByTypeId.set(t.id, ref);
72
+ }
73
+ return { sliceKeys, refById, refByTypeId, diagnostics };
74
+ }
75
+ //# sourceMappingURL=refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/model/refs.ts"],"names":[],"mappings":"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"}