@sentropic/design-system-vue 0.4.0 → 0.5.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/ForceGraph.d.ts +37 -1
- package/dist/ForceGraph.d.ts.map +1 -1
- package/dist/ForceGraph.js +279 -62
- package/dist/ForceGraph.js.map +1 -1
- package/package.json +1 -1
package/dist/ForceGraph.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type PropType, type VNode } from "vue";
|
|
2
2
|
export type ForceGraphTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
|
|
3
|
-
export type ForceGraphNodeShape = "dot" | "circle" | "diamond" | "star" | "hexagon" | "box" | "square" | "triangle";
|
|
3
|
+
export type ForceGraphNodeShape = "dot" | "circle" | "diamond" | "star" | "hexagon" | "box" | "square" | "roundedbox" | "triangle";
|
|
4
|
+
/** Stroke dash style for typed edges. */
|
|
5
|
+
export type ForceGraphEdgeDash = "solid" | "dashed" | "dotted" | "long-dash";
|
|
4
6
|
export type ForceGraphNode = {
|
|
5
7
|
/** Stable identifier; referenced by edges. */
|
|
6
8
|
id: string;
|
|
@@ -34,8 +36,22 @@ export type ForceGraphEdge = {
|
|
|
34
36
|
/**
|
|
35
37
|
* When true the link renders as a dashed/faded "weak" link. Lets callers
|
|
36
38
|
* map a confidence dimension onto link strength without extra props.
|
|
39
|
+
* Equivalent to `dash: "dashed"` plus a faded stroke (kept for back-compat).
|
|
37
40
|
*/
|
|
38
41
|
weak?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Typed dash pattern for the stroke. Independent of `weak`.
|
|
44
|
+
* "solid" = none, "dashed" = "6 4", "dotted" = "1 4", "long-dash" = "12 6".
|
|
45
|
+
* When omitted, falls back to the `weak` styling.
|
|
46
|
+
*/
|
|
47
|
+
dash?: ForceGraphEdgeDash;
|
|
48
|
+
/**
|
|
49
|
+
* Emphasise the edge (e.g. a reconciliation/match relation) with a thicker,
|
|
50
|
+
* fully-opaque stroke. Defaults to false.
|
|
51
|
+
*/
|
|
52
|
+
emphasis?: boolean;
|
|
53
|
+
/** Explicit stroke width override in px. Takes precedence over `emphasis`. */
|
|
54
|
+
width?: number;
|
|
39
55
|
};
|
|
40
56
|
export type ForceGraphLegendEntry = {
|
|
41
57
|
/** Label shown in the legend. */
|
|
@@ -46,6 +62,11 @@ export type ForceGraphLegendEntry = {
|
|
|
46
62
|
tone?: ForceGraphTone;
|
|
47
63
|
/** When true, renders as a dashed line (edge legend). */
|
|
48
64
|
weak?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Typed dash pattern for an edge legend swatch. Independent of `weak`.
|
|
67
|
+
* When set, the swatch line uses the matching dash-array.
|
|
68
|
+
*/
|
|
69
|
+
dash?: ForceGraphEdgeDash;
|
|
49
70
|
};
|
|
50
71
|
export type ForceGraphProps = {
|
|
51
72
|
nodes: ForceGraphNode[];
|
|
@@ -59,11 +80,17 @@ export type ForceGraphProps = {
|
|
|
59
80
|
selectedIds?: string[];
|
|
60
81
|
focusId?: string | null;
|
|
61
82
|
legend?: ForceGraphLegendEntry[];
|
|
83
|
+
edgeCurve?: number;
|
|
62
84
|
onSelect?: (id: string) => void;
|
|
63
85
|
onOpenEntity?: (id: string) => void;
|
|
64
86
|
onEdgeHover?: (edge: ForceGraphEdge) => void;
|
|
65
87
|
class?: string;
|
|
66
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* Maps a dash style (or the legacy `weak` flag) to an SVG stroke-dasharray.
|
|
91
|
+
* Returns null for a solid stroke.
|
|
92
|
+
*/
|
|
93
|
+
export declare function edgeDashArray(dash: ForceGraphEdgeDash | undefined, weak?: boolean): string | null;
|
|
67
94
|
export declare function nodeShapePath(shape: ForceGraphNodeShape | undefined, r: number): string | null;
|
|
68
95
|
export declare const ForceGraph: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
69
96
|
nodes: {
|
|
@@ -110,6 +137,10 @@ export declare const ForceGraph: import("vue").DefineComponent<import("vue").Ext
|
|
|
110
137
|
type: PropType<ForceGraphLegendEntry[]>;
|
|
111
138
|
default: undefined;
|
|
112
139
|
};
|
|
140
|
+
edgeCurve: {
|
|
141
|
+
type: NumberConstructor;
|
|
142
|
+
default: number;
|
|
143
|
+
};
|
|
113
144
|
onSelect: {
|
|
114
145
|
type: PropType<(id: string) => void>;
|
|
115
146
|
default: undefined;
|
|
@@ -177,6 +208,10 @@ export declare const ForceGraph: import("vue").DefineComponent<import("vue").Ext
|
|
|
177
208
|
type: PropType<ForceGraphLegendEntry[]>;
|
|
178
209
|
default: undefined;
|
|
179
210
|
};
|
|
211
|
+
edgeCurve: {
|
|
212
|
+
type: NumberConstructor;
|
|
213
|
+
default: number;
|
|
214
|
+
};
|
|
180
215
|
onSelect: {
|
|
181
216
|
type: PropType<(id: string) => void>;
|
|
182
217
|
default: undefined;
|
|
@@ -209,6 +244,7 @@ export declare const ForceGraph: import("vue").DefineComponent<import("vue").Ext
|
|
|
209
244
|
showLabels: boolean;
|
|
210
245
|
iterations: number;
|
|
211
246
|
focusId: string | null;
|
|
247
|
+
edgeCurve: number;
|
|
212
248
|
onOpenEntity: (id: string) => void;
|
|
213
249
|
onEdgeHover: (edge: ForceGraphEdge) => void;
|
|
214
250
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
package/dist/ForceGraph.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForceGraph.d.ts","sourceRoot":"","sources":["../src/ForceGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,QAAQ,EACb,KAAK,KAAK,EACX,MAAM,KAAK,CAAC;AAMb,MAAM,MAAM,cAAc,GACtB,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GACrD,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GAAG,QAAQ,GAChB,SAAS,GACT,MAAM,GACN,SAAS,GACT,KAAK,GAAG,QAAQ,GAChB,UAAU,CAAC;AAEf,MAAM,MAAM,cAAc,GAAG;IAC3B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,gEAAgE;IAChE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"ForceGraph.d.ts","sourceRoot":"","sources":["../src/ForceGraph.ts"],"names":[],"mappings":"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"}
|
package/dist/ForceGraph.js
CHANGED
|
@@ -1,42 +1,96 @@
|
|
|
1
1
|
import { defineComponent, h, ref, computed, onMounted, onUnmounted, watch, } from "vue";
|
|
2
2
|
import { classNames } from "./classNames.js";
|
|
3
|
+
/**
|
|
4
|
+
* Maps a dash style (or the legacy `weak` flag) to an SVG stroke-dasharray.
|
|
5
|
+
* Returns null for a solid stroke.
|
|
6
|
+
*/
|
|
7
|
+
export function edgeDashArray(dash, weak) {
|
|
8
|
+
const effective = dash ?? (weak ? "dashed" : undefined);
|
|
9
|
+
switch (effective) {
|
|
10
|
+
case "dashed":
|
|
11
|
+
return "6 4";
|
|
12
|
+
case "dotted":
|
|
13
|
+
return "1 4";
|
|
14
|
+
case "long-dash":
|
|
15
|
+
return "12 6";
|
|
16
|
+
case "solid":
|
|
17
|
+
default:
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
3
21
|
// ---------------------------------------------------------------------------
|
|
4
22
|
// SVG path helpers for the various node shapes.
|
|
5
|
-
// All shapes are centered at (0,0)
|
|
23
|
+
// All shapes are centered at (0,0). Each shape is scaled so its filled area
|
|
24
|
+
// matches that of the reference circle (π·r²) — this keeps equal-weight nodes
|
|
25
|
+
// visually balanced rather than letting squares/diamonds read as "bigger".
|
|
26
|
+
//
|
|
27
|
+
// Per-shape scale factors (closed-form, area = π·r²):
|
|
28
|
+
// square / roundedbox : half-side = (√π)/2 · r ≈ 0.8862·r
|
|
29
|
+
// diamond : half-diag = √(π/2) · r ≈ 1.2533·r
|
|
30
|
+
// triangle (equilat.) : circumradius= √(π/(3√3/4)) · r ≈ 1.5551·r
|
|
31
|
+
// hexagon (regular) : circumradius= √(π/(3√3/2)) · r ≈ 1.0996·r
|
|
32
|
+
// star (5-pt, k=0.42) : outer radius= √(π/A₁) · r ≈ 1.5953·r
|
|
33
|
+
// where A₁ is the unit-star area (≈1.2343).
|
|
6
34
|
// ---------------------------------------------------------------------------
|
|
35
|
+
const STAR_INNER_RATIO = 0.42;
|
|
36
|
+
const STAR_AREA_FACTOR = 1.5953498885642274; // √(π / unit-star-area)
|
|
37
|
+
// Format a coordinate: 4 dp, snapping floating-point near-zero (e.g. 9e-16)
|
|
38
|
+
// to a clean 0 so paths never contain scientific notation.
|
|
39
|
+
function fmt(n) {
|
|
40
|
+
const v = Math.abs(n) < 1e-9 ? 0 : n;
|
|
41
|
+
return Number(v.toFixed(4)).toString();
|
|
42
|
+
}
|
|
7
43
|
export function nodeShapePath(shape, r) {
|
|
8
44
|
const s = shape ?? "dot";
|
|
9
45
|
if (s === "dot" || s === "circle")
|
|
10
46
|
return null; // use <circle>
|
|
11
47
|
if (s === "diamond") {
|
|
12
|
-
|
|
48
|
+
const d = Math.sqrt(Math.PI / 2) * r; // half-diagonal
|
|
49
|
+
return `M 0 ${fmt(-d)} L ${fmt(d)} 0 L 0 ${fmt(d)} L ${fmt(-d)} 0 Z`;
|
|
13
50
|
}
|
|
14
51
|
if (s === "star") {
|
|
15
|
-
const outer = r;
|
|
16
|
-
const inner =
|
|
52
|
+
const outer = STAR_AREA_FACTOR * r;
|
|
53
|
+
const inner = outer * STAR_INNER_RATIO;
|
|
17
54
|
const pts = [];
|
|
18
55
|
for (let i = 0; i < 10; i++) {
|
|
19
56
|
const angle = (i * Math.PI) / 5 - Math.PI / 2;
|
|
20
57
|
const rad = i % 2 === 0 ? outer : inner;
|
|
21
|
-
pts.push(`${rad * Math.cos(angle)},${rad * Math.sin(angle)}`);
|
|
58
|
+
pts.push(`${fmt(rad * Math.cos(angle))},${fmt(rad * Math.sin(angle))}`);
|
|
22
59
|
}
|
|
23
60
|
return `M ${pts.join(" L ")} Z`;
|
|
24
61
|
}
|
|
25
62
|
if (s === "hexagon") {
|
|
63
|
+
const R = Math.sqrt(Math.PI / ((3 * Math.sqrt(3)) / 2)) * r; // circumradius
|
|
26
64
|
const pts = [];
|
|
27
65
|
for (let i = 0; i < 6; i++) {
|
|
28
66
|
const angle = (i * Math.PI) / 3 - Math.PI / 6;
|
|
29
|
-
pts.push(`${
|
|
67
|
+
pts.push(`${fmt(R * Math.cos(angle))},${fmt(R * Math.sin(angle))}`);
|
|
30
68
|
}
|
|
31
69
|
return `M ${pts.join(" L ")} Z`;
|
|
32
70
|
}
|
|
33
71
|
if (s === "box" || s === "square") {
|
|
34
|
-
const
|
|
35
|
-
return `M ${-
|
|
72
|
+
const h = (Math.sqrt(Math.PI) / 2) * r; // half-side, area = (2h)² = π·r²
|
|
73
|
+
return `M ${fmt(-h)} ${fmt(-h)} L ${fmt(h)} ${fmt(-h)} L ${fmt(h)} ${fmt(h)} L ${fmt(-h)} ${fmt(h)} Z`;
|
|
74
|
+
}
|
|
75
|
+
if (s === "roundedbox") {
|
|
76
|
+
const h = (Math.sqrt(Math.PI) / 2) * r; // same footprint as square
|
|
77
|
+
const rx = h * 0.6; // ≈ r·0.3 rounding radius (h ≈ 0.886·r)
|
|
78
|
+
// Rounded rectangle via arcs, clockwise from top edge.
|
|
79
|
+
return (`M ${fmt(-h + rx)} ${fmt(-h)} ` +
|
|
80
|
+
`L ${fmt(h - rx)} ${fmt(-h)} A ${fmt(rx)} ${fmt(rx)} 0 0 1 ${fmt(h)} ${fmt(-h + rx)} ` +
|
|
81
|
+
`L ${fmt(h)} ${fmt(h - rx)} A ${fmt(rx)} ${fmt(rx)} 0 0 1 ${fmt(h - rx)} ${fmt(h)} ` +
|
|
82
|
+
`L ${fmt(-h + rx)} ${fmt(h)} A ${fmt(rx)} ${fmt(rx)} 0 0 1 ${fmt(-h)} ${fmt(h - rx)} ` +
|
|
83
|
+
`L ${fmt(-h)} ${fmt(-h + rx)} A ${fmt(rx)} ${fmt(rx)} 0 0 1 ${fmt(-h + rx)} ${fmt(-h)} Z`);
|
|
36
84
|
}
|
|
37
85
|
if (s === "triangle") {
|
|
38
|
-
|
|
39
|
-
|
|
86
|
+
// Equilateral, centred at centroid; circumradius h so apex is up.
|
|
87
|
+
const h = Math.sqrt(Math.PI / ((3 * Math.sqrt(3)) / 4)) * r;
|
|
88
|
+
const pts = [];
|
|
89
|
+
for (let i = 0; i < 3; i++) {
|
|
90
|
+
const angle = (i * 2 * Math.PI) / 3 - Math.PI / 2;
|
|
91
|
+
pts.push(`${fmt(h * Math.cos(angle))},${fmt(h * Math.sin(angle))}`);
|
|
92
|
+
}
|
|
93
|
+
return `M ${pts.join(" L ")} Z`;
|
|
40
94
|
}
|
|
41
95
|
return null;
|
|
42
96
|
}
|
|
@@ -168,9 +222,14 @@ function runSimulation(ns, es, w, h, ticks, nodeRadius) {
|
|
|
168
222
|
}
|
|
169
223
|
node.x += node.vx;
|
|
170
224
|
node.y += node.vy;
|
|
171
|
-
//
|
|
172
|
-
|
|
173
|
-
|
|
225
|
+
// Soft clamp: allow the layout to overflow the canvas so it keeps a
|
|
226
|
+
// natural shape (fit-to-content reframes it afterwards). The wide bound
|
|
227
|
+
// only guards against runaway coordinates, it no longer glues nodes to
|
|
228
|
+
// the four edges.
|
|
229
|
+
const padX = w * 0.5 + nodeRadius * 2;
|
|
230
|
+
const padY = h * 0.5 + nodeRadius * 2;
|
|
231
|
+
node.x = Math.max(-padX, Math.min(w + padX, node.x));
|
|
232
|
+
node.y = Math.max(-padY, Math.min(h + padY, node.y));
|
|
174
233
|
}
|
|
175
234
|
temperature *= cooling;
|
|
176
235
|
}
|
|
@@ -179,6 +238,11 @@ function runSimulation(ns, es, w, h, ticks, nodeRadius) {
|
|
|
179
238
|
out.set(node.id, { x: node.x, y: node.y });
|
|
180
239
|
return out;
|
|
181
240
|
}
|
|
241
|
+
// Curvature offset factor: how far (relative to chord length) the control
|
|
242
|
+
// point bows out at edgeCurve=1. Kept modest so edgeCurve≈0.15 reads "light".
|
|
243
|
+
const CURVE_FACTOR = 0.5;
|
|
244
|
+
// Fit-to-content margin (per side, fraction of the content box).
|
|
245
|
+
const CONTENT_MARGIN = 0.08;
|
|
182
246
|
export const ForceGraph = defineComponent({
|
|
183
247
|
name: "ForceGraph",
|
|
184
248
|
props: {
|
|
@@ -193,6 +257,7 @@ export const ForceGraph = defineComponent({
|
|
|
193
257
|
selectedIds: { type: Array, default: () => [] },
|
|
194
258
|
focusId: { type: String, default: null },
|
|
195
259
|
legend: { type: Array, default: undefined },
|
|
260
|
+
edgeCurve: { type: Number, default: 0.15 },
|
|
196
261
|
onSelect: { type: Function, default: undefined },
|
|
197
262
|
onOpenEntity: { type: Function, default: undefined },
|
|
198
263
|
onEdgeHover: { type: Function, default: undefined },
|
|
@@ -277,6 +342,7 @@ export const ForceGraph = defineComponent({
|
|
|
277
342
|
}));
|
|
278
343
|
const positionedEdges = computed(() => {
|
|
279
344
|
const nodeById = new Map(props.nodes.map((n) => [n.id, n]));
|
|
345
|
+
const curve = Math.max(0, props.edgeCurve ?? 0);
|
|
280
346
|
return props.edges
|
|
281
347
|
.map((e, i) => {
|
|
282
348
|
const a = layout.value.get(e.source);
|
|
@@ -285,22 +351,133 @@ export const ForceGraph = defineComponent({
|
|
|
285
351
|
return null;
|
|
286
352
|
const srcNode = nodeById.get(e.source);
|
|
287
353
|
const tgtNode = nodeById.get(e.target);
|
|
354
|
+
const x1 = a.x, y1 = a.y, x2 = b.x, y2 = b.y;
|
|
355
|
+
// Quadratic control point: midpoint pushed perpendicular to the chord.
|
|
356
|
+
let path = null;
|
|
357
|
+
let cx = (x1 + x2) / 2;
|
|
358
|
+
let cy = (y1 + y2) / 2;
|
|
359
|
+
if (curve > 0) {
|
|
360
|
+
const dx = x2 - x1;
|
|
361
|
+
const dy = y2 - y1;
|
|
362
|
+
const dist = Math.sqrt(dx * dx + dy * dy) || 0.0001;
|
|
363
|
+
const off = curve * dist * CURVE_FACTOR;
|
|
364
|
+
// Unit perpendicular to the chord.
|
|
365
|
+
const px = -dy / dist;
|
|
366
|
+
const py = dx / dist;
|
|
367
|
+
cx = (x1 + x2) / 2 + px * off;
|
|
368
|
+
cy = (y1 + y2) / 2 + py * off;
|
|
369
|
+
path = `M ${x1} ${y1} Q ${cx} ${cy} ${x2} ${y2}`;
|
|
370
|
+
}
|
|
371
|
+
const dashArray = edgeDashArray(e.dash, e.weak);
|
|
372
|
+
const strokeWidth = typeof e.width === "number" ? e.width : e.emphasis ? 2.5 : null;
|
|
288
373
|
return {
|
|
289
374
|
edge: e,
|
|
290
375
|
i,
|
|
291
|
-
x1
|
|
292
|
-
y1
|
|
293
|
-
x2
|
|
294
|
-
y2
|
|
376
|
+
x1,
|
|
377
|
+
y1,
|
|
378
|
+
x2,
|
|
379
|
+
y2,
|
|
380
|
+
// Tooltip / label anchor follows the curve apex when curved.
|
|
381
|
+
midX: cx,
|
|
382
|
+
midY: cy,
|
|
383
|
+
path,
|
|
384
|
+
dashArray,
|
|
385
|
+
strokeWidth,
|
|
295
386
|
srcLabel: srcNode?.label ?? e.source,
|
|
296
387
|
tgtLabel: tgtNode?.label ?? e.target,
|
|
297
388
|
};
|
|
298
389
|
})
|
|
299
390
|
.filter((e) => e !== null);
|
|
300
391
|
});
|
|
392
|
+
// -------------------------------------------------------------------------
|
|
393
|
+
// Fit-to-content (Feature 5): compute the real content bounding-box (node
|
|
394
|
+
// centres ± radius) and frame it with an 8% margin on each side. The base
|
|
395
|
+
// viewBox is this frame (not the fixed 0,0,w,h), so the graph is centred
|
|
396
|
+
// and never clipped. Zoom/pan stay relative to this frame.
|
|
397
|
+
// -------------------------------------------------------------------------
|
|
398
|
+
const contentBox = computed(() => {
|
|
399
|
+
const pns = positionedNodes.value;
|
|
400
|
+
if (pns.length === 0) {
|
|
401
|
+
return { x: 0, y: 0, w: props.width, h: props.height };
|
|
402
|
+
}
|
|
403
|
+
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
404
|
+
for (const p of pns) {
|
|
405
|
+
// Worst-case extent for non-circular shapes so the glyph is never clipped.
|
|
406
|
+
const ext = p.r * 1.7;
|
|
407
|
+
minX = Math.min(minX, p.x - ext);
|
|
408
|
+
minY = Math.min(minY, p.y - ext);
|
|
409
|
+
maxX = Math.max(maxX, p.x + ext);
|
|
410
|
+
maxY = Math.max(maxY, p.y + ext);
|
|
411
|
+
}
|
|
412
|
+
let w = maxX - minX;
|
|
413
|
+
let h = maxY - minY;
|
|
414
|
+
// Guard against a degenerate (single node / collinear) box.
|
|
415
|
+
if (!(w > 0)) {
|
|
416
|
+
w = props.width;
|
|
417
|
+
minX = maxX - w / 2;
|
|
418
|
+
}
|
|
419
|
+
if (!(h > 0)) {
|
|
420
|
+
h = props.height;
|
|
421
|
+
minY = maxY - h / 2;
|
|
422
|
+
}
|
|
423
|
+
const mx = w * CONTENT_MARGIN;
|
|
424
|
+
const my = h * CONTENT_MARGIN;
|
|
425
|
+
return { x: minX - mx, y: minY - my, w: w + 2 * mx, h: h + 2 * my };
|
|
426
|
+
});
|
|
301
427
|
const hoveredNodeIndex = ref(null);
|
|
302
428
|
const hoveredEdgeIndex = ref(null);
|
|
303
429
|
const selectedSet = computed(() => new Set(props.selectedIds ?? []));
|
|
430
|
+
// Adjacency: id -> set of directly connected node ids. Used to keep the
|
|
431
|
+
// direct neighbours of selected/focused nodes fully visible (demand 6).
|
|
432
|
+
const adjacency = computed(() => {
|
|
433
|
+
const adj = new Map();
|
|
434
|
+
const add = (a, b) => {
|
|
435
|
+
let set = adj.get(a);
|
|
436
|
+
if (!set) {
|
|
437
|
+
set = new Set();
|
|
438
|
+
adj.set(a, set);
|
|
439
|
+
}
|
|
440
|
+
set.add(b);
|
|
441
|
+
};
|
|
442
|
+
for (const e of props.edges) {
|
|
443
|
+
add(e.source, e.target);
|
|
444
|
+
add(e.target, e.source);
|
|
445
|
+
}
|
|
446
|
+
return adj;
|
|
447
|
+
});
|
|
448
|
+
// True when a selection/focus is active — only then do we dim non-related
|
|
449
|
+
// nodes. The set of "active" ids = selected ∪ focus ∪ all their neighbours.
|
|
450
|
+
const hasActiveSelection = computed(() => selectedSet.value.size > 0 || (props.focusId ?? null) != null);
|
|
451
|
+
const activeAndNeighbours = computed(() => {
|
|
452
|
+
const active = new Set(selectedSet.value);
|
|
453
|
+
if (props.focusId != null)
|
|
454
|
+
active.add(props.focusId);
|
|
455
|
+
// Expand to direct neighbours so they stay fully visible.
|
|
456
|
+
const withNeighbours = new Set(active);
|
|
457
|
+
for (const id of active) {
|
|
458
|
+
const nb = adjacency.value.get(id);
|
|
459
|
+
if (nb)
|
|
460
|
+
for (const n of nb)
|
|
461
|
+
withNeighbours.add(n);
|
|
462
|
+
}
|
|
463
|
+
return withNeighbours;
|
|
464
|
+
});
|
|
465
|
+
// A node is dimmed by selection when there IS an active selection and the
|
|
466
|
+
// node is neither selected/focused nor a direct neighbour of one.
|
|
467
|
+
function isSelectionDimmed(id) {
|
|
468
|
+
if (!hasActiveSelection.value)
|
|
469
|
+
return false;
|
|
470
|
+
return !activeAndNeighbours.value.has(id);
|
|
471
|
+
}
|
|
472
|
+
// An edge stays fully visible when at least one endpoint is in the
|
|
473
|
+
// selected/focused set (it is a connection of the selection).
|
|
474
|
+
function isEdgeSelectionDimmed(e) {
|
|
475
|
+
if (!hasActiveSelection.value)
|
|
476
|
+
return false;
|
|
477
|
+
const srcActive = selectedSet.value.has(e.source) || props.focusId === e.source;
|
|
478
|
+
const tgtActive = selectedSet.value.has(e.target) || props.focusId === e.target;
|
|
479
|
+
return !(srcActive || tgtActive);
|
|
480
|
+
}
|
|
304
481
|
function fireSelect(id) {
|
|
305
482
|
props.onSelect?.(id);
|
|
306
483
|
emit("select", id);
|
|
@@ -324,9 +501,11 @@ export const ForceGraph = defineComponent({
|
|
|
324
501
|
}
|
|
325
502
|
}
|
|
326
503
|
// -------------------------------------------------------------------------
|
|
327
|
-
// Zoom + pan state.
|
|
328
|
-
//
|
|
329
|
-
//
|
|
504
|
+
// Zoom + pan state (framed by the fit-to-content box, Feature 5). The base
|
|
505
|
+
// frame is `contentBox` (not 0,0,w,h). Zoom is a scale multiplier and pan
|
|
506
|
+
// is an offset in SVG coords, both relative to that base frame:
|
|
507
|
+
// vbW = baseW / zoomScale, vbH = baseH / zoomScale
|
|
508
|
+
// vbX = baseX + panX, vbY = baseY + panY
|
|
330
509
|
// -------------------------------------------------------------------------
|
|
331
510
|
const zoomScale = ref(1);
|
|
332
511
|
const panX = ref(0);
|
|
@@ -334,10 +513,15 @@ export const ForceGraph = defineComponent({
|
|
|
334
513
|
const isPanning = ref(false);
|
|
335
514
|
let panStart = { x: 0, y: 0, panX: 0, panY: 0 };
|
|
336
515
|
const svgEl = ref(null);
|
|
337
|
-
|
|
338
|
-
const
|
|
339
|
-
const
|
|
340
|
-
const
|
|
516
|
+
// Base frame dimensions = fit-to-content box.
|
|
517
|
+
const baseW = computed(() => contentBox.value.w);
|
|
518
|
+
const baseH = computed(() => contentBox.value.h);
|
|
519
|
+
const baseX = computed(() => contentBox.value.x);
|
|
520
|
+
const baseY = computed(() => contentBox.value.y);
|
|
521
|
+
const vbW = computed(() => baseW.value / zoomScale.value);
|
|
522
|
+
const vbH = computed(() => baseH.value / zoomScale.value);
|
|
523
|
+
const vbX = computed(() => baseX.value + panX.value);
|
|
524
|
+
const vbY = computed(() => baseY.value + panY.value);
|
|
341
525
|
function resetView() {
|
|
342
526
|
zoomScale.value = 1;
|
|
343
527
|
panX.value = 0;
|
|
@@ -354,14 +538,17 @@ export const ForceGraph = defineComponent({
|
|
|
354
538
|
// Anchor zoom around the cursor position in SVG coords.
|
|
355
539
|
if (svgEl.value) {
|
|
356
540
|
const rect = svgEl.value.getBoundingClientRect();
|
|
357
|
-
const
|
|
358
|
-
const
|
|
359
|
-
const
|
|
360
|
-
const
|
|
361
|
-
const
|
|
362
|
-
const
|
|
363
|
-
|
|
364
|
-
|
|
541
|
+
const curW = baseW.value / zoomScale.value;
|
|
542
|
+
const curH = baseH.value / zoomScale.value;
|
|
543
|
+
const cursorSvgX = vbX.value + ((ev.clientX - rect.left) / rect.width) * curW;
|
|
544
|
+
const cursorSvgY = vbY.value + ((ev.clientY - rect.top) / rect.height) * curH;
|
|
545
|
+
const newVbW = baseW.value / newScale;
|
|
546
|
+
const newVbH = baseH.value / newScale;
|
|
547
|
+
const ratioX = (cursorSvgX - vbX.value) / curW;
|
|
548
|
+
const ratioY = (cursorSvgY - vbY.value) / curH;
|
|
549
|
+
// New top-left so the cursor anchor stays put, then back out the pan term.
|
|
550
|
+
panX.value = cursorSvgX - ratioX * newVbW - baseX.value;
|
|
551
|
+
panY.value = cursorSvgY - ratioY * newVbH - baseY.value;
|
|
365
552
|
}
|
|
366
553
|
zoomScale.value = newScale;
|
|
367
554
|
}
|
|
@@ -411,32 +598,57 @@ export const ForceGraph = defineComponent({
|
|
|
411
598
|
// ---- SVG canvas ----
|
|
412
599
|
const edgeVNodes = [];
|
|
413
600
|
for (const e of positionedEdges.value) {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
601
|
+
const onHitEnter = () => {
|
|
602
|
+
hoveredEdgeIndex.value = e.i;
|
|
603
|
+
fireEdgeHover(e.edge);
|
|
604
|
+
};
|
|
605
|
+
const onHitLeave = () => {
|
|
606
|
+
hoveredEdgeIndex.value = null;
|
|
607
|
+
};
|
|
608
|
+
const edgeClass = classNames("st-forceGraph__edge", e.edge.weak && "st-forceGraph__edge--weak", e.edge.emphasis && "st-forceGraph__edge--emphasis", hoveredEdgeIndex.value === e.i && "st-forceGraph__edge--hovered", isEdgeSelectionDimmed(e.edge) && "st-forceGraph__edge--dim");
|
|
609
|
+
// Invisible wider hit area for edge hover (follows the curve).
|
|
610
|
+
edgeVNodes.push(e.path
|
|
611
|
+
? h("path", {
|
|
612
|
+
key: `hit-${e.i}`,
|
|
613
|
+
class: "st-forceGraph__edgeHit",
|
|
614
|
+
role: "presentation",
|
|
615
|
+
d: e.path,
|
|
616
|
+
fill: "none",
|
|
617
|
+
onMouseenter: onHitEnter,
|
|
618
|
+
onMouseleave: onHitLeave,
|
|
619
|
+
})
|
|
620
|
+
: h("line", {
|
|
621
|
+
key: `hit-${e.i}`,
|
|
622
|
+
class: "st-forceGraph__edgeHit",
|
|
623
|
+
role: "presentation",
|
|
624
|
+
x1: e.x1,
|
|
625
|
+
y1: e.y1,
|
|
626
|
+
x2: e.x2,
|
|
627
|
+
y2: e.y2,
|
|
628
|
+
onMouseenter: onHitEnter,
|
|
629
|
+
onMouseleave: onHitLeave,
|
|
630
|
+
}));
|
|
631
|
+
edgeVNodes.push(e.path
|
|
632
|
+
? h("path", {
|
|
633
|
+
key: `edge-${e.i}`,
|
|
634
|
+
class: edgeClass,
|
|
635
|
+
d: e.path,
|
|
636
|
+
fill: "none",
|
|
637
|
+
"stroke-dasharray": e.dashArray ?? undefined,
|
|
638
|
+
"stroke-width": e.strokeWidth ?? undefined,
|
|
639
|
+
"pointer-events": "none",
|
|
640
|
+
})
|
|
641
|
+
: h("line", {
|
|
642
|
+
key: `edge-${e.i}`,
|
|
643
|
+
class: edgeClass,
|
|
644
|
+
x1: e.x1,
|
|
645
|
+
y1: e.y1,
|
|
646
|
+
x2: e.x2,
|
|
647
|
+
y2: e.y2,
|
|
648
|
+
"stroke-dasharray": e.dashArray ?? undefined,
|
|
649
|
+
"stroke-width": e.strokeWidth ?? undefined,
|
|
650
|
+
"pointer-events": "none",
|
|
651
|
+
}));
|
|
440
652
|
}
|
|
441
653
|
const nodeVNodes = positionedNodes.value.map((p) => {
|
|
442
654
|
const isSelected = selectedSet.value.has(p.node.id);
|
|
@@ -465,7 +677,9 @@ export const ForceGraph = defineComponent({
|
|
|
465
677
|
}
|
|
466
678
|
return h("g", {
|
|
467
679
|
key: p.node.id,
|
|
468
|
-
class: classNames("st-forceGraph__node", `st-forceGraph__node--${p.tone}`, hoveredNodeIndex.value !== null && hoveredNodeIndex.value !== p.i
|
|
680
|
+
class: classNames("st-forceGraph__node", `st-forceGraph__node--${p.tone}`, ((hoveredNodeIndex.value !== null && hoveredNodeIndex.value !== p.i) ||
|
|
681
|
+
isSelectionDimmed(p.node.id)) &&
|
|
682
|
+
"st-forceGraph__node--dim", isSelected && "st-forceGraph__node--selected", focusId === p.node.id && "st-forceGraph__node--focus"),
|
|
469
683
|
transform: `translate(${p.x} ${p.y})`,
|
|
470
684
|
onClick: () => fireSelect(p.node.id),
|
|
471
685
|
onDblclick: () => fireOpenEntity(p.node.id),
|
|
@@ -514,8 +728,8 @@ export const ForceGraph = defineComponent({
|
|
|
514
728
|
if (hei !== null) {
|
|
515
729
|
const e = positionedEdges.value.find((pe) => pe.i === hei);
|
|
516
730
|
if (e) {
|
|
517
|
-
const midX =
|
|
518
|
-
const midY =
|
|
731
|
+
const midX = e.midX;
|
|
732
|
+
const midY = e.midY;
|
|
519
733
|
const tipChildren = [
|
|
520
734
|
h("span", { class: "st-forceGraph__tooltipLabel" }, e.srcLabel),
|
|
521
735
|
];
|
|
@@ -544,11 +758,13 @@ export const ForceGraph = defineComponent({
|
|
|
544
758
|
const entries = props.legend.map((entry, idx) => {
|
|
545
759
|
const swatchPath = entry.shape !== undefined ? nodeShapePath(entry.shape, 7) : null;
|
|
546
760
|
const swatchTone = entry.tone ?? "category1";
|
|
761
|
+
const swatchDash = entry.shape === undefined ? edgeDashArray(entry.dash, entry.weak) : null;
|
|
547
762
|
let swatch;
|
|
548
763
|
if (entry.shape !== undefined) {
|
|
764
|
+
// Node shape legend entry (viewBox widened for area-scaled glyphs).
|
|
549
765
|
swatch = h("svg", {
|
|
550
766
|
class: "st-forceGraph__legendSwatch",
|
|
551
|
-
viewBox: "-
|
|
767
|
+
viewBox: "-13 -13 26 26",
|
|
552
768
|
width: "16",
|
|
553
769
|
height: "16",
|
|
554
770
|
"aria-hidden": "true",
|
|
@@ -578,6 +794,7 @@ export const ForceGraph = defineComponent({
|
|
|
578
794
|
x2: "16",
|
|
579
795
|
y2: "4",
|
|
580
796
|
class: classNames("st-forceGraph__legendEdge", entry.weak && "st-forceGraph__legendEdge--weak"),
|
|
797
|
+
"stroke-dasharray": swatchDash ?? undefined,
|
|
581
798
|
}),
|
|
582
799
|
]);
|
|
583
800
|
}
|
package/dist/ForceGraph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForceGraph.js","sourceRoot":"","sources":["../src/ForceGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,CAAC,EACD,GAAG,EACH,QAAQ,EACR,SAAS,EACT,WAAW,EACX,KAAK,GAGN,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAoF7C,8EAA8E;AAC9E,gDAAgD;AAChD,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,KAAsC,EAAE,CAAS;IAC7E,MAAM,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,eAAe;IAC/D,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;QACvB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QACpB,OAAO,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,KAAK,GAAqB;IAC9B,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAClD,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;CACnD,CAAC;AAEF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,SAAS,YAAY,CAAC,EAAoB;IACxC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACpC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,CAAC,IAAI;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;aAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC,CAAC;;YAC5F,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAWD,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IACnB,OAAO,GAAG,EAAE;QACV,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,EAAoB,EACpB,EAAoB,EACpB,CAAS,EACT,CAAS,EACT,KAAa,EACb,UAAkB;IAElB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,GAAG,GAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;QACnE,yEAAyE;QACzE,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,EAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YACtD,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,EAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YACtD,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,CAAC;YACL,KAAK;SACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,EAAE;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACpE,MAAM,CAAC,CAAC,CAAC,EAAiC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAExF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;IAC1E,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC9B,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,oCAAoC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAC9B,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;oBACjB,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;oBAC1B,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;oBAC1B,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBACnC,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;gBAChC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC/B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC/B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACjC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QACD,iCAAiC;QACjC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;YAClD,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC;YAC5C,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;YAC/B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;YAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,+DAA+D;QAC/D,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvD,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACnC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACnC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC;YACnB,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;gBACxB,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC;gBAC1C,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAClB,iCAAiC;YACjC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,WAAW,IAAI,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoC,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,GAAG;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;IACxC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,KAAmC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAmC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE;QAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;QACtC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;QACxC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5C,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;QAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,KAA2B,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACrE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAiC,EAAE,OAAO,EAAE,IAAI,EAAE;QACnE,MAAM,EAAE,EAAE,IAAI,EAAE,KAA0C,EAAE,OAAO,EAAE,SAAS,EAAE;QAChF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAA0C,EAAE,OAAO,EAAE,SAAS,EAAE;QAClF,YAAY,EAAE,EAAE,IAAI,EAAE,QAA0C,EAAE,OAAO,EAAE,SAAS,EAAE;QACtF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAoD,EAAE,OAAO,EAAE,SAAS,EAAE;QAC/F,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,EAAE;QACL,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI;QAC7B,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI;QACjC,SAAS,EAAE,CAAC,KAAqB,EAAE,EAAE,CAAC,IAAI;KAC3C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAC1B,4EAA4E;QAC5E,MAAM,oBAAoB,GACxB,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;YACvC,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;QAEhE,kEAAkE;QAClE,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,MAAM,GAAG,GAAG,CAAwC,IAAI,GAAG,EAAE,CAAC,CAAC;QACrE,IAAI,KAAK,GAAkB,IAAI,CAAC;QAEhC,yEAAyE;QACzE,4EAA4E;QAC5E,wDAAwD;QACxD,SAAS,WAAW,CAAC,KAAa;YAChC,OAAO,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,4EAA4E;QAC5E,gCAAgC;QAChC,SAAS,YAAY;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,GAAG,aAAa,CAC1B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,WAAW,CAAC,KAAK,CAAC,EAClB,KAAK,CAAC,UAAU,CACjB,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,uEAAuE;QACvE,kDAAkD;QAClD,SAAS,WAAW;YAClB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAC5B,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YAExD,yCAAyC;YACzC,YAAY,EAAE,CAAC;YAEf,IAAI,oBAAoB,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,wEAAwE;YACxE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,OAAO,GAAG,MAAM,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,GAAG,EAAE;gBAChB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;gBAC5C,MAAM,CAAC,KAAK,GAAG,aAAa,CAC1B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,OAAO,EACP,KAAK,CAAC,UAAU,CACjB,CAAC;gBACF,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;oBACpB,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,IAAI,CAAC;gBACf,CAAC;YACH,CAAC,CAAC;YACF,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,qEAAqE;QACrE,YAAY,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE1D,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,EAAE,CACpC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChF,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACtE,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5C,OAAO;gBACL,IAAI,EAAE,CAAC;gBACP,CAAC;gBACD,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,CAAC;gBACD,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,WAAW;gBAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE;gBACtB,SAAS;aACV,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC,KAAK;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO;oBACL,IAAI,EAAE,CAAC;oBACP,CAAC;oBACD,EAAE,EAAE,CAAC,CAAC,CAAC;oBACP,EAAE,EAAE,CAAC,CAAC,CAAC;oBACP,EAAE,EAAE,CAAC,CAAC,CAAC;oBACP,EAAE,EAAE,CAAC,CAAC,CAAC;oBACP,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,MAAM;oBACpC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,MAAM;iBACrC,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,GAAG,CAAgB,IAAI,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,GAAG,CAAgB,IAAI,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAS,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;QAE7E,SAAS,UAAU,CAAC,EAAU;YAC5B,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrB,CAAC;QACD,SAAS,cAAc,CAAC,EAAU;YAChC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,SAAS,aAAa,CAAC,IAAoB;YACzC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,yEAAyE;QACzE,SAAS,iBAAiB,CAAC,EAAU,EAAE,CAAgB;YACrD,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,UAAU,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtB,cAAc,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,oBAAoB;QACpB,uDAAuD;QACvD,qDAAqD;QACrD,4EAA4E;QAC5E,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAuB,IAAI,CAAC,CAAC;QAE9C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,SAAS,SAAS;YAChB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,SAAS,WAAW,CAAC,EAAc;YACjC,IAAI,oBAAoB;gBAAE,OAAO;YACjC,EAAE,CAAC,cAAc,EAAE,CAAC;YACpB,8BAA8B;YAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACzC,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,wDAAwD;YACxD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1G,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3G,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvC,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC5E,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;gBAC1C,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;YAC5C,CAAC;YACD,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,SAAS,iBAAiB,CAAC,EAAc;YACvC,yEAAyE;YACzE,IAAK,EAAE,CAAC,MAAkB,CAAC,OAAO,CAAC,sBAAsB,CAAC;gBAAE,OAAO;YACnE,IAAI,oBAAoB;gBAAE,OAAO;YACjC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;YACvB,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClF,CAAC;QAED,SAAS,eAAe,CAAC,EAAc;YACrC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,OAAO;YAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACjD,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;YAChE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;YACjE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;QAClC,CAAC;QAED,SAAS,aAAa;YACpB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAE/F,4EAA4E;QAC5E,uEAAuE;QACvE,qCAAqC;QACrC,4EAA4E;QAC5E,SAAS,CAAC,GAAG,EAAE;YACb,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,CACH,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAC/F,GAAG,EAAE;YACH,WAAW,EAAE,CAAC;QAChB,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QAEF,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAC5B,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC;YAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;YAEtC,MAAM,QAAQ,GAAY,EAAE,CAAC;YAE7B,uBAAuB;YACvB,MAAM,UAAU,GAAY,EAAE,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;gBACtC,2CAA2C;gBAC3C,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,MAAM,EAAE;oBACR,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;oBACjB,KAAK,EAAE,wBAAwB;oBAC/B,IAAI,EAAE,cAAc;oBACpB,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,YAAY,EAAE,GAAG,EAAE;wBACjB,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC7B,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC;oBACD,YAAY,EAAE,GAAG,EAAE;wBACjB,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;oBAChC,CAAC;iBACF,CAAC,CACH,CAAC;gBACF,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,MAAM,EAAE;oBACR,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAClB,KAAK,EAAE,UAAU,CACf,qBAAqB,EACrB,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,2BAA2B,EAC1C,gBAAgB,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,8BAA8B,CACjE;oBACD,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,gBAAgB,EAAE,MAAM;iBACzB,CAAC,CACH,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAY,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1D,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACvF,wEAAwE;gBACxE,mEAAmE;gBACnE,oEAAoE;gBACpE,qCAAqC;gBACrC,MAAM,WAAW,GAAG;oBAClB,QAAQ,EAAE,CAAC;oBACX,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,SAAS;oBACvB,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBAC7C,YAAY,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,YAAY,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;oBACtD,OAAO,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChD,MAAM,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;oBAChD,SAAS,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;iBACnE,CAAC;gBAEF,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS;oBACzB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;oBACjG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;gBAEzE,MAAM,KAAK,GAAY,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACrB,KAAK,CAAC,IAAI,CACR,CAAC,CACC,MAAM,EACN,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAClF,CAAC,CAAC,KAAK,CACR,CACF,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,CACN,GAAG,EACH;oBACE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;oBACd,KAAK,EAAE,UAAU,CACf,qBAAqB,EACrB,wBAAwB,CAAC,CAAC,IAAI,EAAE,EAChC,gBAAgB,CAAC,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,0BAA0B,EAC/F,UAAU,IAAI,+BAA+B,EAC7C,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,4BAA4B,CACtD;oBACD,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;oBACrC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;iBAC5C,EACD,KAAK,CACN,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CACX,CAAC,CACC,KAAK,EACL;gBACE,GAAG,EAAE,KAAK;gBACV,OAAO,EAAE,OAAO,CAAC,KAAK;gBACtB,mBAAmB,EAAE,eAAe;gBACpC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,OAAO;gBAClB,aAAa,EAAE,MAAM;gBACrB,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,6BAA6B,CAAC;gBACnE,OAAO,EAAE,WAAW;gBACpB,WAAW,EAAE,iBAAiB;gBAC9B,WAAW,EAAE,eAAe;gBAC5B,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,aAAa;aAC5B,EACD;gBACE,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,UAAU,CAAC;gBACrD,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,UAAU,CAAC;aACtD,CACF,CACF,CAAC;YAEF,yBAAyB;YACzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC;YACnC,IAAI,GAAG,KAAK,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAClE,CAAC,MAAM,CAAC;gBACT,MAAM,WAAW,GAAY;oBAC3B,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;iBAC7D,CAAC;gBACF,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7F,CAAC;gBACD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACjB,WAAW,CAAC,IAAI,CACd,CAAC,CACC,MAAM,EACN,EAAE,KAAK,EAAE,4BAA4B,EAAE,EACvC,GAAG,QAAQ,YAAY,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CACnD,CACF,CAAC;gBACJ,CAAC;gBACD,QAAQ,CAAC,IAAI,CACX,CAAC,CACC,KAAK,EACL;oBACE,KAAK,EAAE,wBAAwB;oBAC/B,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;iBACzG,EACD,WAAW,CACZ,CACF,CAAC;YACJ,CAAC;YAED,yBAAyB;YACzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC;YACnC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC3D,IAAI,CAAC,EAAE,CAAC;oBACN,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,WAAW,GAAY;wBAC3B,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;qBAChE,CAAC;oBACF,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACpB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC5F,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAClF,QAAQ,CAAC,IAAI,CACX,CAAC,CACC,KAAK,EACL;wBACE,KAAK,EAAE,qDAAqD;wBAC5D,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;qBAC3G,EACD,WAAW,CACZ,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,wDAAwD;YACxD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CACX,CAAC,CACC,QAAQ,EACR;oBACE,KAAK,EAAE,yBAAyB;oBAChC,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,YAAY;oBAC1B,OAAO,EAAE,SAAS;iBACnB,EACD,GAAG,CACJ,CACF,CAAC;YACJ,CAAC;YAED,2BAA2B;YAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAY,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBACvD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACpF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC;oBAC7C,IAAI,MAAa,CAAC;oBAClB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC9B,MAAM,GAAG,CAAC,CACR,KAAK,EACL;4BACE,KAAK,EAAE,6BAA6B;4BACpC,OAAO,EAAE,aAAa;4BACtB,KAAK,EAAE,IAAI;4BACX,MAAM,EAAE,IAAI;4BACZ,aAAa,EAAE,MAAM;yBACtB,EACD;4BACE,UAAU;gCACR,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;oCACR,CAAC,EAAE,UAAU;oCACb,KAAK,EAAE,0DAA0D,UAAU,EAAE;iCAC9E,CAAC;gCACJ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oCACV,CAAC,EAAE,GAAG;oCACN,KAAK,EAAE,0DAA0D,UAAU,EAAE;iCAC9E,CAAC;yBACP,CACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,CAAC,CACR,KAAK,EACL;4BACE,KAAK,EAAE,6BAA6B;4BACpC,OAAO,EAAE,UAAU;4BACnB,KAAK,EAAE,IAAI;4BACX,MAAM,EAAE,GAAG;4BACX,aAAa,EAAE,MAAM;yBACtB,EACD;4BACE,CAAC,CAAC,MAAM,EAAE;gCACR,EAAE,EAAE,GAAG;gCACP,EAAE,EAAE,GAAG;gCACP,EAAE,EAAE,IAAI;gCACR,EAAE,EAAE,GAAG;gCACP,KAAK,EAAE,UAAU,CACf,2BAA2B,EAC3B,KAAK,CAAC,IAAI,IAAI,iCAAiC,CAChD;6BACF,CAAC;yBACH,CACF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE;wBACjE,MAAM;wBACN,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;qBAChE,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CACX,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,cAAc,EAAE,EAChE,OAAO,CACR,CACF,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,CACN,QAAQ,EACR;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC;gBAC/C,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,KAAK;aACpB,EACD,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ForceGraph.js","sourceRoot":"","sources":["../src/ForceGraph.ts"],"names":[],"mappings":"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"}
|