@particle-academy/fancy-flow 0.22.0 → 0.23.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.
@@ -0,0 +1,1693 @@
1
+ 'use strict';
2
+
3
+ // node_modules/@dagrejs/dagre/dist/dagre.esm.js
4
+ var ge = Object.defineProperty;
5
+ var hn = (e, n, t) => n in e ? ge(e, n, { enumerable: true, configurable: true, writable: true, value: t }) : e[n] = t;
6
+ var fn = (e, n) => {
7
+ for (var t in n) ge(e, t, { get: n[t], enumerable: true });
8
+ };
9
+ var pe = (e, n, t) => hn(e, n + "" , t);
10
+ var z = {};
11
+ fn(z, { Graph: () => p, alg: () => R, json: () => ye, version: () => pn });
12
+ var bn = Object.defineProperty;
13
+ var Le = (e, n) => {
14
+ for (var t in n) bn(e, t, { get: n[t], enumerable: true });
15
+ };
16
+ var p = class {
17
+ constructor(e) {
18
+ this._isDirected = true, this._isMultigraph = false, this._isCompound = false, this._nodes = {}, this._in = {}, this._preds = {}, this._out = {}, this._sucs = {}, this._edgeObjs = {}, this._edgeLabels = {}, this._nodeCount = 0, this._edgeCount = 0, this._defaultNodeLabelFn = () => {
19
+ }, this._defaultEdgeLabelFn = () => {
20
+ }, e && (this._isDirected = "directed" in e ? e.directed : true, this._isMultigraph = "multigraph" in e ? e.multigraph : false, this._isCompound = "compound" in e ? e.compound : false), this._isCompound && (this._parent = {}, this._children = {}, this._children["\0"] = {});
21
+ }
22
+ isDirected() {
23
+ return this._isDirected;
24
+ }
25
+ isMultigraph() {
26
+ return this._isMultigraph;
27
+ }
28
+ isCompound() {
29
+ return this._isCompound;
30
+ }
31
+ setGraph(e) {
32
+ return this._label = e, this;
33
+ }
34
+ graph() {
35
+ return this._label;
36
+ }
37
+ setDefaultNodeLabel(e) {
38
+ return typeof e != "function" ? this._defaultNodeLabelFn = () => e : this._defaultNodeLabelFn = e, this;
39
+ }
40
+ nodeCount() {
41
+ return this._nodeCount;
42
+ }
43
+ nodes() {
44
+ return Object.keys(this._nodes);
45
+ }
46
+ sources() {
47
+ return this.nodes().filter((e) => Object.keys(this._in[e]).length === 0);
48
+ }
49
+ sinks() {
50
+ return this.nodes().filter((e) => Object.keys(this._out[e]).length === 0);
51
+ }
52
+ setNodes(e, n) {
53
+ return e.forEach((t) => {
54
+ n !== void 0 ? this.setNode(t, n) : this.setNode(t);
55
+ }), this;
56
+ }
57
+ setNode(e, n) {
58
+ return e in this._nodes ? (arguments.length > 1 && (this._nodes[e] = n), this) : (this._nodes[e] = arguments.length > 1 ? n : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = "\0", this._children[e] = {}, this._children["\0"][e] = true), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this);
59
+ }
60
+ node(e) {
61
+ return this._nodes[e];
62
+ }
63
+ hasNode(e) {
64
+ return e in this._nodes;
65
+ }
66
+ removeNode(e) {
67
+ if (e in this._nodes) {
68
+ let n = (t) => this.removeEdge(this._edgeObjs[t]);
69
+ delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], this.children(e).forEach((t) => {
70
+ this.setParent(t);
71
+ }), delete this._children[e]), Object.keys(this._in[e]).forEach(n), delete this._in[e], delete this._preds[e], Object.keys(this._out[e]).forEach(n), delete this._out[e], delete this._sucs[e], --this._nodeCount;
72
+ }
73
+ return this;
74
+ }
75
+ setParent(e, n) {
76
+ if (!this._isCompound) throw new Error("Cannot set parent in a non-compound graph");
77
+ if (n === void 0) n = "\0";
78
+ else {
79
+ n += "";
80
+ for (let t = n; t !== void 0; t = this.parent(t)) if (t === e) throw new Error("Setting " + n + " as parent of " + e + " would create a cycle");
81
+ this.setNode(n);
82
+ }
83
+ return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = n, this._children[n][e] = true, this;
84
+ }
85
+ parent(e) {
86
+ if (this._isCompound) {
87
+ let n = this._parent[e];
88
+ if (n !== "\0") return n;
89
+ }
90
+ }
91
+ children(e = "\0") {
92
+ if (this._isCompound) {
93
+ let n = this._children[e];
94
+ if (n) return Object.keys(n);
95
+ } else {
96
+ if (e === "\0") return this.nodes();
97
+ if (this.hasNode(e)) return [];
98
+ }
99
+ return [];
100
+ }
101
+ predecessors(e) {
102
+ let n = this._preds[e];
103
+ if (n) return Object.keys(n);
104
+ }
105
+ successors(e) {
106
+ let n = this._sucs[e];
107
+ if (n) return Object.keys(n);
108
+ }
109
+ neighbors(e) {
110
+ let n = this.predecessors(e);
111
+ if (n) {
112
+ let t = new Set(n);
113
+ for (let r of this.successors(e)) t.add(r);
114
+ return Array.from(t.values());
115
+ }
116
+ }
117
+ isLeaf(e) {
118
+ let n;
119
+ return this.isDirected() ? n = this.successors(e) : n = this.neighbors(e), n.length === 0;
120
+ }
121
+ filterNodes(e) {
122
+ let n = new this.constructor({ directed: this._isDirected, multigraph: this._isMultigraph, compound: this._isCompound });
123
+ n.setGraph(this.graph()), Object.entries(this._nodes).forEach(([o, i]) => {
124
+ e(o) && n.setNode(o, i);
125
+ }), Object.values(this._edgeObjs).forEach((o) => {
126
+ n.hasNode(o.v) && n.hasNode(o.w) && n.setEdge(o, this.edge(o));
127
+ });
128
+ let t = {}, r = (o) => {
129
+ let i = this.parent(o);
130
+ return !i || n.hasNode(i) ? (t[o] = i != null ? i : void 0, i != null ? i : void 0) : i in t ? t[i] : r(i);
131
+ };
132
+ return this._isCompound && n.nodes().forEach((o) => n.setParent(o, r(o))), n;
133
+ }
134
+ setDefaultEdgeLabel(e) {
135
+ return typeof e != "function" ? this._defaultEdgeLabelFn = () => e : this._defaultEdgeLabelFn = e, this;
136
+ }
137
+ edgeCount() {
138
+ return this._edgeCount;
139
+ }
140
+ edges() {
141
+ return Object.values(this._edgeObjs);
142
+ }
143
+ setPath(e, n) {
144
+ return e.reduce((t, r) => (n !== void 0 ? this.setEdge(t, r, n) : this.setEdge(t, r), r)), this;
145
+ }
146
+ setEdge(e, n, t, r) {
147
+ let o, i, s, a, d = false;
148
+ typeof e == "object" && e !== null && "v" in e ? (o = e.v, i = e.w, s = e.name, arguments.length === 2 && (a = n, d = true)) : (o = e, i = n, s = r, arguments.length > 2 && (a = t, d = true)), o = "" + o, i = "" + i, s !== void 0 && (s = "" + s);
149
+ let l = C(this._isDirected, o, i, s);
150
+ if (l in this._edgeLabels) return d && (this._edgeLabels[l] = a), this;
151
+ if (s !== void 0 && !this._isMultigraph) throw new Error("Cannot set a named edge when isMultigraph = false");
152
+ this.setNode(o), this.setNode(i), this._edgeLabels[l] = d ? a : this._defaultEdgeLabelFn(o, i, s);
153
+ let u = gn(this._isDirected, o, i, s);
154
+ return o = u.v, i = u.w, Object.freeze(u), this._edgeObjs[l] = u, me(this._preds[i], o), me(this._sucs[o], i), this._in[i][l] = u, this._out[o][l] = u, this._edgeCount++, this;
155
+ }
156
+ edge(e, n, t) {
157
+ let r = arguments.length === 1 ? Y(this._isDirected, e) : C(this._isDirected, e, n, t);
158
+ return this._edgeLabels[r];
159
+ }
160
+ edgeAsObj(e, n, t) {
161
+ let r = arguments.length === 1 ? this.edge(e) : this.edge(e, n, t);
162
+ return typeof r != "object" ? { label: r } : r;
163
+ }
164
+ hasEdge(e, n, t) {
165
+ return (arguments.length === 1 ? Y(this._isDirected, e) : C(this._isDirected, e, n, t)) in this._edgeLabels;
166
+ }
167
+ removeEdge(e, n, t) {
168
+ let r = arguments.length === 1 ? Y(this._isDirected, e) : C(this._isDirected, e, n, t), o = this._edgeObjs[r];
169
+ if (o) {
170
+ let i = o.v, s = o.w;
171
+ delete this._edgeLabels[r], delete this._edgeObjs[r], Ee(this._preds[s], i), Ee(this._sucs[i], s), delete this._in[s][r], delete this._out[i][r], this._edgeCount--;
172
+ }
173
+ return this;
174
+ }
175
+ inEdges(e, n) {
176
+ return this.isDirected() ? this.filterEdges(this._in[e], e, n) : this.nodeEdges(e, n);
177
+ }
178
+ outEdges(e, n) {
179
+ return this.isDirected() ? this.filterEdges(this._out[e], e, n) : this.nodeEdges(e, n);
180
+ }
181
+ nodeEdges(e, n) {
182
+ if (e in this._nodes) return this.filterEdges({ ...this._in[e], ...this._out[e] }, e, n);
183
+ }
184
+ _removeFromParentsChildList(e) {
185
+ delete this._children[this._parent[e]][e];
186
+ }
187
+ filterEdges(e, n, t) {
188
+ if (!e) return;
189
+ let r = Object.values(e);
190
+ return t ? r.filter((o) => o.v === n && o.w === t || o.v === t && o.w === n) : r;
191
+ }
192
+ };
193
+ function me(e, n) {
194
+ e[n] ? e[n]++ : e[n] = 1;
195
+ }
196
+ function Ee(e, n) {
197
+ e[n] !== void 0 && !--e[n] && delete e[n];
198
+ }
199
+ function C(e, n, t, r) {
200
+ let o = "" + n, i = "" + t;
201
+ if (!e && o > i) {
202
+ let s = o;
203
+ o = i, i = s;
204
+ }
205
+ return o + "" + i + "" + (r === void 0 ? "\0" : r);
206
+ }
207
+ function gn(e, n, t, r) {
208
+ let o = "" + n, i = "" + t;
209
+ if (!e && o > i) {
210
+ let a = o;
211
+ o = i, i = a;
212
+ }
213
+ let s = { v: o, w: i };
214
+ return r && (s.name = r), s;
215
+ }
216
+ function Y(e, n) {
217
+ return C(e, n.v, n.w, n.name);
218
+ }
219
+ var pn = "4.0.1";
220
+ var ye = {};
221
+ Le(ye, { read: () => yn, write: () => mn });
222
+ function mn(e) {
223
+ let n = { options: { directed: e.isDirected(), multigraph: e.isMultigraph(), compound: e.isCompound() }, nodes: En(e), edges: Ln(e) }, t = e.graph();
224
+ return t !== void 0 && (n.value = structuredClone(t)), n;
225
+ }
226
+ function En(e) {
227
+ return e.nodes().map((n) => {
228
+ let t = e.node(n), r = e.parent(n), o = { v: n };
229
+ return t !== void 0 && (o.value = t), r !== void 0 && (o.parent = r), o;
230
+ });
231
+ }
232
+ function Ln(e) {
233
+ return e.edges().map((n) => {
234
+ let t = e.edge(n), r = { v: n.v, w: n.w };
235
+ return n.name !== void 0 && (r.name = n.name), t !== void 0 && (r.value = t), r;
236
+ });
237
+ }
238
+ function yn(e) {
239
+ let n = new p(e.options);
240
+ return e.value !== void 0 && n.setGraph(e.value), e.nodes.forEach((t) => {
241
+ n.setNode(t.v, t.value), t.parent && n.setParent(t.v, t.parent);
242
+ }), e.edges.forEach((t) => {
243
+ n.setEdge({ v: t.v, w: t.w, name: t.name }, t.value);
244
+ }), n;
245
+ }
246
+ var R = {};
247
+ Le(R, { CycleException: () => D, bellmanFord: () => we, components: () => Gn, dijkstra: () => F, dijkstraAll: () => _n, findCycles: () => xn, floydWarshall: () => On, isAcyclic: () => Cn, postorder: () => Pn, preorder: () => Mn, prim: () => jn, shortestPaths: () => Sn, tarjan: () => Ge, topsort: () => ke });
248
+ var wn = () => 1;
249
+ function we(e, n, t, r) {
250
+ return Nn(e, String(n), t || wn, r || function(o) {
251
+ return e.outEdges(o);
252
+ });
253
+ }
254
+ function Nn(e, n, t, r) {
255
+ let o = {}, i, s = 0, a = e.nodes(), d = function(c) {
256
+ let h = t(c);
257
+ o[c.v].distance + h < o[c.w].distance && (o[c.w] = { distance: o[c.v].distance + h, predecessor: c.v }, i = true);
258
+ }, l = function() {
259
+ a.forEach(function(c) {
260
+ r(c).forEach(function(h) {
261
+ let f = h.v === c ? h.v : h.w, g = f === h.v ? h.w : h.v;
262
+ d({ v: f, w: g });
263
+ });
264
+ });
265
+ };
266
+ a.forEach(function(c) {
267
+ let h = c === n ? 0 : Number.POSITIVE_INFINITY;
268
+ o[c] = { distance: h, predecessor: "" };
269
+ });
270
+ let u = a.length;
271
+ for (let c = 1; c < u && (i = false, s++, l(), !!i); c++) ;
272
+ if (s === u - 1 && (i = false, l(), i)) throw new Error("The graph contains a negative weight cycle");
273
+ return o;
274
+ }
275
+ function Gn(e) {
276
+ let n = {}, t = [], r;
277
+ function o(i) {
278
+ i in n || (n[i] = true, r.push(i), e.successors(i).forEach(o), e.predecessors(i).forEach(o));
279
+ }
280
+ return e.nodes().forEach(function(i) {
281
+ r = [], o(i), r.length && t.push(r);
282
+ }), t;
283
+ }
284
+ var Ne = class {
285
+ constructor() {
286
+ this._arr = [], this._keyIndices = {};
287
+ }
288
+ size() {
289
+ return this._arr.length;
290
+ }
291
+ keys() {
292
+ return this._arr.map((e) => e.key);
293
+ }
294
+ has(e) {
295
+ return e in this._keyIndices;
296
+ }
297
+ priority(e) {
298
+ let n = this._keyIndices[e];
299
+ if (n !== void 0) return this._arr[n].priority;
300
+ }
301
+ min() {
302
+ if (this.size() === 0) throw new Error("Queue underflow");
303
+ return this._arr[0].key;
304
+ }
305
+ add(e, n) {
306
+ let t = this._keyIndices, r = String(e);
307
+ if (!(r in t)) {
308
+ let o = this._arr, i = o.length;
309
+ return t[r] = i, o.push({ key: r, priority: n }), this._decrease(i), true;
310
+ }
311
+ return false;
312
+ }
313
+ removeMin() {
314
+ this._swap(0, this._arr.length - 1);
315
+ let e = this._arr.pop();
316
+ return delete this._keyIndices[e.key], this._heapify(0), e.key;
317
+ }
318
+ decrease(e, n) {
319
+ let t = this._keyIndices[e];
320
+ if (t === void 0) throw new Error(`Key not found: ${e}`);
321
+ let r = this._arr[t].priority;
322
+ if (n > r) throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${n}`);
323
+ this._arr[t].priority = n, this._decrease(t);
324
+ }
325
+ _heapify(e) {
326
+ let n = this._arr, t = 2 * e, r = t + 1, o = e;
327
+ t < n.length && (o = n[t].priority < n[o].priority ? t : o, r < n.length && (o = n[r].priority < n[o].priority ? r : o), o !== e && (this._swap(e, o), this._heapify(o)));
328
+ }
329
+ _decrease(e) {
330
+ let n = this._arr, t = n[e].priority, r;
331
+ for (; e !== 0 && (r = e >> 1, !(n[r].priority < t)); ) this._swap(e, r), e = r;
332
+ }
333
+ _swap(e, n) {
334
+ let t = this._arr, r = this._keyIndices, o = t[e], i = t[n];
335
+ t[e] = i, t[n] = o, r[i.key] = e, r[o.key] = n;
336
+ }
337
+ };
338
+ var kn = () => 1;
339
+ function F(e, n, t, r) {
340
+ let o = function(i) {
341
+ return e.outEdges(i);
342
+ };
343
+ return vn(e, String(n), t || kn, r || o);
344
+ }
345
+ function vn(e, n, t, r) {
346
+ let o = {}, i = new Ne(), s, a, d = function(l) {
347
+ let u = l.v !== s ? l.v : l.w, c = o[u], h = t(l), f = a.distance + h;
348
+ if (h < 0) throw new Error("dijkstra does not allow negative edge weights. Bad edge: " + l + " Weight: " + h);
349
+ f < c.distance && (c.distance = f, c.predecessor = s, i.decrease(u, f));
350
+ };
351
+ for (e.nodes().forEach(function(l) {
352
+ let u = l === n ? 0 : Number.POSITIVE_INFINITY;
353
+ o[l] = { distance: u, predecessor: "" }, i.add(l, u);
354
+ }); i.size() > 0 && (s = i.removeMin(), a = o[s], a.distance !== Number.POSITIVE_INFINITY); ) r(s).forEach(d);
355
+ return o;
356
+ }
357
+ function _n(e, n, t) {
358
+ return e.nodes().reduce(function(r, o) {
359
+ return r[o] = F(e, o, n, t), r;
360
+ }, {});
361
+ }
362
+ function Ge(e) {
363
+ let n = 0, t = [], r = {}, o = [];
364
+ function i(s) {
365
+ let a = r[s] = { onStack: true, lowlink: n, index: n++ };
366
+ if (t.push(s), e.successors(s).forEach(function(d) {
367
+ d in r ? r[d].onStack && (a.lowlink = Math.min(a.lowlink, r[d].index)) : (i(d), a.lowlink = Math.min(a.lowlink, r[d].lowlink));
368
+ }), a.lowlink === a.index) {
369
+ let d = [], l;
370
+ do
371
+ l = t.pop(), r[l].onStack = false, d.push(l);
372
+ while (s !== l);
373
+ o.push(d);
374
+ }
375
+ }
376
+ return e.nodes().forEach(function(s) {
377
+ s in r || i(s);
378
+ }), o;
379
+ }
380
+ function xn(e) {
381
+ return Ge(e).filter(function(n) {
382
+ return n.length > 1 || n.length === 1 && e.hasEdge(n[0], n[0]);
383
+ });
384
+ }
385
+ var Tn = () => 1;
386
+ function On(e, n, t) {
387
+ return In(e, n || Tn, t || function(r) {
388
+ return e.outEdges(r);
389
+ });
390
+ }
391
+ function In(e, n, t) {
392
+ let r = {}, o = e.nodes();
393
+ return o.forEach(function(i) {
394
+ r[i] = {}, r[i][i] = { distance: 0, predecessor: "" }, o.forEach(function(s) {
395
+ i !== s && (r[i][s] = { distance: Number.POSITIVE_INFINITY, predecessor: "" });
396
+ }), t(i).forEach(function(s) {
397
+ let a = s.v === i ? s.w : s.v, d = n(s);
398
+ r[i][a] = { distance: d, predecessor: i };
399
+ });
400
+ }), o.forEach(function(i) {
401
+ let s = r[i];
402
+ o.forEach(function(a) {
403
+ let d = r[a];
404
+ o.forEach(function(l) {
405
+ let u = d[i], c = s[l], h = d[l], f = u.distance + c.distance;
406
+ f < h.distance && (h.distance = f, h.predecessor = c.predecessor);
407
+ });
408
+ });
409
+ }), r;
410
+ }
411
+ var D = class extends Error {
412
+ constructor(...e) {
413
+ super(...e);
414
+ }
415
+ };
416
+ function ke(e) {
417
+ let n = {}, t = {}, r = [];
418
+ function o(i) {
419
+ if (i in t) throw new D();
420
+ i in n || (t[i] = true, n[i] = true, e.predecessors(i).forEach(o), delete t[i], r.push(i));
421
+ }
422
+ if (e.sinks().forEach(o), Object.keys(n).length !== e.nodeCount()) throw new D();
423
+ return r;
424
+ }
425
+ function Cn(e) {
426
+ try {
427
+ ke(e);
428
+ } catch (n) {
429
+ if (n instanceof D) return false;
430
+ throw n;
431
+ }
432
+ return true;
433
+ }
434
+ function Rn(e, n, t, r, o) {
435
+ Array.isArray(n) || (n = [n]);
436
+ let i = ((a) => {
437
+ var d;
438
+ return (d = e.isDirected() ? e.successors(a) : e.neighbors(a)) != null ? d : [];
439
+ }), s = {};
440
+ return n.forEach(function(a) {
441
+ if (!e.hasNode(a)) throw new Error("Graph does not have node: " + a);
442
+ o = ve(e, a, t === "post", s, i, r, o);
443
+ }), o;
444
+ }
445
+ function ve(e, n, t, r, o, i, s) {
446
+ return n in r || (r[n] = true, t || (s = i(s, n)), o(n).forEach(function(a) {
447
+ s = ve(e, a, t, r, o, i, s);
448
+ }), t && (s = i(s, n))), s;
449
+ }
450
+ function _e(e, n, t) {
451
+ return Rn(e, n, t, function(r, o) {
452
+ return r.push(o), r;
453
+ }, []);
454
+ }
455
+ function Pn(e, n) {
456
+ return _e(e, n, "post");
457
+ }
458
+ function Mn(e, n) {
459
+ return _e(e, n, "pre");
460
+ }
461
+ function jn(e, n) {
462
+ let t = new p(), r = {}, o = new Ne(), i;
463
+ function s(d) {
464
+ let l = d.v === i ? d.w : d.v, u = o.priority(l);
465
+ if (u !== void 0) {
466
+ let c = n(d);
467
+ c < u && (r[l] = i, o.decrease(l, c));
468
+ }
469
+ }
470
+ if (e.nodeCount() === 0) return t;
471
+ e.nodes().forEach(function(d) {
472
+ o.add(d, Number.POSITIVE_INFINITY), t.setNode(d);
473
+ }), o.decrease(e.nodes()[0], 0);
474
+ let a = false;
475
+ for (; o.size() > 0; ) {
476
+ if (i = o.removeMin(), i in r) t.setEdge(i, r[i]);
477
+ else {
478
+ if (a) throw new Error("Input graph is not connected: " + e);
479
+ a = true;
480
+ }
481
+ e.nodeEdges(i).forEach(s);
482
+ }
483
+ return t;
484
+ }
485
+ function Sn(e, n, t, r) {
486
+ return Fn(e, n, t, r != null ? r : ((o) => {
487
+ let i = e.outEdges(o);
488
+ return i != null ? i : [];
489
+ }));
490
+ }
491
+ function Fn(e, n, t, r) {
492
+ if (t === void 0) return F(e, n, t, r);
493
+ let o = false, i = e.nodes();
494
+ for (let s = 0; s < i.length; s++) {
495
+ let a = r(i[s]);
496
+ for (let d = 0; d < a.length; d++) {
497
+ let l = a[d], u = l.v === i[s] ? l.v : l.w, c = u === l.v ? l.w : l.v;
498
+ t({ v: u, w: c }) < 0 && (o = true);
499
+ }
500
+ if (o) return we(e, n, t, r);
501
+ }
502
+ return F(e, n, t, r);
503
+ }
504
+ function w(e, n, t, r) {
505
+ let o = r;
506
+ for (; e.hasNode(o); ) o = j(r);
507
+ return t.dummy = n, e.setNode(o, t), o;
508
+ }
509
+ function xe(e) {
510
+ let n = new p().setGraph(e.graph());
511
+ return e.nodes().forEach((t) => n.setNode(t, e.node(t))), e.edges().forEach((t) => {
512
+ let r = n.edge(t.v, t.w) || { weight: 0, minlen: 1 }, o = e.edge(t);
513
+ n.setEdge(t.v, t.w, { weight: r.weight + o.weight, minlen: Math.max(r.minlen, o.minlen) });
514
+ }), n;
515
+ }
516
+ function A(e) {
517
+ let n = new p({ multigraph: e.isMultigraph() }).setGraph(e.graph());
518
+ return e.nodes().forEach((t) => {
519
+ e.children(t).length || n.setNode(t, e.node(t));
520
+ }), e.edges().forEach((t) => {
521
+ n.setEdge(t, e.edge(t));
522
+ }), n;
523
+ }
524
+ function H(e, n) {
525
+ let t = e.x, r = e.y, o = n.x - t, i = n.y - r, s = e.width / 2, a = e.height / 2;
526
+ if (!o && !i) throw new Error("Not possible to find intersection inside of the rectangle");
527
+ let d, l;
528
+ return Math.abs(i) * s > Math.abs(o) * a ? (i < 0 && (a = -a), d = a * o / i, l = a) : (o < 0 && (s = -s), d = s, l = s * i / o), { x: t + d, y: r + l };
529
+ }
530
+ function N(e) {
531
+ let n = k(X(e) + 1).map(() => []);
532
+ return e.nodes().forEach((t) => {
533
+ let r = e.node(t), o = r.rank;
534
+ o !== void 0 && (n[o] || (n[o] = []), n[o][r.order] = t);
535
+ }), n;
536
+ }
537
+ function Te(e) {
538
+ let n = e.nodes().map((r) => {
539
+ let o = e.node(r).rank;
540
+ return o === void 0 ? Number.MAX_VALUE : o;
541
+ }), t = L(Math.min, n);
542
+ e.nodes().forEach((r) => {
543
+ let o = e.node(r);
544
+ Object.hasOwn(o, "rank") && (o.rank -= t);
545
+ });
546
+ }
547
+ function Oe(e) {
548
+ let n = e.nodes().map((s) => e.node(s).rank).filter((s) => s !== void 0), t = L(Math.min, n), r = [];
549
+ e.nodes().forEach((s) => {
550
+ let a = e.node(s).rank - t;
551
+ r[a] || (r[a] = []), r[a].push(s);
552
+ });
553
+ let o = 0, i = e.graph().nodeRankFactor;
554
+ Array.from(r).forEach((s, a) => {
555
+ s === void 0 && a % i !== 0 ? --o : s !== void 0 && o && s.forEach((d) => e.node(d).rank += o);
556
+ });
557
+ }
558
+ function q(e, n, t, r) {
559
+ let o = { width: 0, height: 0 };
560
+ return arguments.length >= 4 && (o.rank = t, o.order = r), w(e, "border", o, n);
561
+ }
562
+ function Dn(e, n = Ie) {
563
+ let t = [];
564
+ for (let r = 0; r < e.length; r += n) {
565
+ let o = e.slice(r, r + n);
566
+ t.push(o);
567
+ }
568
+ return t;
569
+ }
570
+ var Ie = 65535;
571
+ function L(e, n) {
572
+ if (n.length > Ie) {
573
+ let t = Dn(n);
574
+ return e(...t.map((r) => e(...r)));
575
+ } else return e(...n);
576
+ }
577
+ function X(e) {
578
+ let t = e.nodes().map((r) => {
579
+ let o = e.node(r).rank;
580
+ return o === void 0 ? Number.MIN_VALUE : o;
581
+ });
582
+ return L(Math.max, t);
583
+ }
584
+ function Ce(e, n) {
585
+ let t = { lhs: [], rhs: [] };
586
+ return e.forEach((r) => {
587
+ n(r) ? t.lhs.push(r) : t.rhs.push(r);
588
+ }), t;
589
+ }
590
+ function P(e, n) {
591
+ let t = Date.now();
592
+ try {
593
+ return n();
594
+ } finally {
595
+ console.log(e + " time: " + (Date.now() - t) + "ms");
596
+ }
597
+ }
598
+ function M(e, n) {
599
+ return n();
600
+ }
601
+ var An = 0;
602
+ function j(e) {
603
+ let n = ++An;
604
+ return e + ("" + n);
605
+ }
606
+ function k(e, n, t = 1) {
607
+ n == null && (n = e, e = 0);
608
+ let r = (i) => i < n;
609
+ t < 0 && (r = (i) => n < i);
610
+ let o = [];
611
+ for (let i = e; r(i); i += t) o.push(i);
612
+ return o;
613
+ }
614
+ function T(e, n) {
615
+ let t = {};
616
+ for (let r of n) e[r] !== void 0 && (t[r] = e[r]);
617
+ return t;
618
+ }
619
+ function O(e, n) {
620
+ let t;
621
+ return typeof n == "string" ? t = (r) => r[n] : t = n, Object.entries(e).reduce((r, [o, i]) => (r[o] = t(i, o), r), {});
622
+ }
623
+ function Re(e, n) {
624
+ return e.reduce((t, r, o) => (t[r] = n[o], t), {});
625
+ }
626
+ var _ = "\0";
627
+ var U = "3.0.0";
628
+ var K = class {
629
+ constructor() {
630
+ pe(this, "_sentinel");
631
+ let n = {};
632
+ n._next = n._prev = n, this._sentinel = n;
633
+ }
634
+ dequeue() {
635
+ let n = this._sentinel, t = n._prev;
636
+ if (t !== n) return Pe(t), t;
637
+ }
638
+ enqueue(n) {
639
+ let t = this._sentinel;
640
+ n._prev && n._next && Pe(n), n._next = t._next, t._next._prev = n, t._next = n, n._prev = t;
641
+ }
642
+ toString() {
643
+ let n = [], t = this._sentinel, r = t._prev;
644
+ for (; r !== t; ) n.push(JSON.stringify(r, Vn)), r = r._prev;
645
+ return "[" + n.join(", ") + "]";
646
+ }
647
+ };
648
+ function Pe(e) {
649
+ e._prev._next = e._next, e._next._prev = e._prev, delete e._next, delete e._prev;
650
+ }
651
+ function Vn(e, n) {
652
+ if (e !== "_next" && e !== "_prev") return n;
653
+ }
654
+ var Me = K;
655
+ var Wn = () => 1;
656
+ function Q(e, n) {
657
+ if (e.nodeCount() <= 1) return [];
658
+ let t = Yn(e, n || Wn);
659
+ return Bn(t.graph, t.buckets, t.zeroIdx).flatMap((o) => e.outEdges(o.v, o.w) || []);
660
+ }
661
+ function Bn(e, n, t) {
662
+ var a;
663
+ let r = [], o = n[n.length - 1], i = n[0], s;
664
+ for (; e.nodeCount(); ) {
665
+ for (; s = i.dequeue(); ) $(e, n, t, s);
666
+ for (; s = o.dequeue(); ) $(e, n, t, s);
667
+ if (e.nodeCount()) {
668
+ for (let d = n.length - 2; d > 0; --d) if (s = (a = n[d]) == null ? void 0 : a.dequeue(), s) {
669
+ r = r.concat($(e, n, t, s, true) || []);
670
+ break;
671
+ }
672
+ }
673
+ }
674
+ return r;
675
+ }
676
+ function $(e, n, t, r, o) {
677
+ let i = [], s = o ? i : void 0;
678
+ return (e.inEdges(r.v) || []).forEach((a) => {
679
+ let d = e.edge(a), l = e.node(a.v);
680
+ o && i.push({ v: a.v, w: a.w }), l.out -= d, J(n, t, l);
681
+ }), (e.outEdges(r.v) || []).forEach((a) => {
682
+ let d = e.edge(a), l = a.w, u = e.node(l);
683
+ u.in -= d, J(n, t, u);
684
+ }), e.removeNode(r.v), s;
685
+ }
686
+ function Yn(e, n) {
687
+ let t = new p(), r = 0, o = 0;
688
+ e.nodes().forEach((a) => {
689
+ t.setNode(a, { v: a, in: 0, out: 0 });
690
+ }), e.edges().forEach((a) => {
691
+ let d = t.edge(a.v, a.w) || 0, l = n(a), u = d + l;
692
+ t.setEdge(a.v, a.w, u);
693
+ let c = t.node(a.v), h = t.node(a.w);
694
+ o = Math.max(o, c.out += l), r = Math.max(r, h.in += l);
695
+ });
696
+ let i = zn(o + r + 3).map(() => new Me()), s = r + 1;
697
+ return t.nodes().forEach((a) => {
698
+ J(i, s, t.node(a));
699
+ }), { graph: t, buckets: i, zeroIdx: s };
700
+ }
701
+ function J(e, n, t) {
702
+ var r, o, i;
703
+ t.out ? t.in ? (i = e[t.out - t.in + n]) == null || i.enqueue(t) : (o = e[e.length - 1]) == null || o.enqueue(t) : (r = e[0]) == null || r.enqueue(t);
704
+ }
705
+ function zn(e) {
706
+ let n = [];
707
+ for (let t = 0; t < e; t++) n.push(t);
708
+ return n;
709
+ }
710
+ function je(e) {
711
+ (e.graph().acyclicer === "greedy" ? Q(e, t(e)) : Hn(e)).forEach((r) => {
712
+ let o = e.edge(r);
713
+ e.removeEdge(r), o.forwardName = r.name, o.reversed = true, e.setEdge(r.w, r.v, o, j("rev"));
714
+ });
715
+ function t(r) {
716
+ return (o) => r.edge(o).weight;
717
+ }
718
+ }
719
+ function Hn(e) {
720
+ let n = [], t = {}, r = {};
721
+ function o(i) {
722
+ Object.hasOwn(r, i) || (r[i] = true, t[i] = true, e.outEdges(i).forEach((s) => {
723
+ Object.hasOwn(t, s.w) ? n.push(s) : o(s.w);
724
+ }), delete t[i]);
725
+ }
726
+ return e.nodes().forEach(o), n;
727
+ }
728
+ function Se(e) {
729
+ e.edges().forEach((n) => {
730
+ let t = e.edge(n);
731
+ if (t.reversed) {
732
+ e.removeEdge(n);
733
+ let r = t.forwardName;
734
+ delete t.reversed, delete t.forwardName, e.setEdge(n.w, n.v, t, r);
735
+ }
736
+ });
737
+ }
738
+ function Fe(e) {
739
+ e.graph().dummyChains = [], e.edges().forEach((n) => Xn(e, n));
740
+ }
741
+ function Xn(e, n) {
742
+ let t = n.v, r = e.node(t).rank, o = n.w, i = e.node(o).rank, s = n.name, a = e.edge(n), d = a.labelRank;
743
+ if (i === r + 1) return;
744
+ e.removeEdge(n);
745
+ let l, u, c;
746
+ for (c = 0, ++r; r < i; ++c, ++r) a.points = [], u = { width: 0, height: 0, edgeLabel: a, edgeObj: n, rank: r }, l = w(e, "edge", u, "_d"), r === d && (u.width = a.width, u.height = a.height, u.dummy = "edge-label", u.labelpos = a.labelpos), e.setEdge(t, l, { weight: a.weight }, s), c === 0 && e.graph().dummyChains.push(l), t = l;
747
+ e.setEdge(t, o, { weight: a.weight }, s);
748
+ }
749
+ function De(e) {
750
+ e.graph().dummyChains.forEach((n) => {
751
+ let t = e.node(n), r = t.edgeLabel, o;
752
+ for (e.setEdge(t.edgeObj, r); t.dummy; ) o = e.successors(n)[0], e.removeNode(n), r.points.push({ x: t.x, y: t.y }), t.dummy === "edge-label" && (r.x = t.x, r.y = t.y, r.width = t.width, r.height = t.height), n = o, t = e.node(n);
753
+ });
754
+ }
755
+ function S(e) {
756
+ let n = {};
757
+ function t(r) {
758
+ let o = e.node(r);
759
+ if (Object.hasOwn(n, r)) return o.rank;
760
+ n[r] = true;
761
+ let i = e.outEdges(r), s = i ? i.map((d) => d == null ? Number.POSITIVE_INFINITY : t(d.w) - e.edge(d).minlen) : [], a = L(Math.min, s);
762
+ return a === Number.POSITIVE_INFINITY && (a = 0), o.rank = a;
763
+ }
764
+ e.sources().forEach(t);
765
+ }
766
+ function v(e, n) {
767
+ return e.node(n.w).rank - e.node(n.v).rank - e.edge(n).minlen;
768
+ }
769
+ var V = Kn;
770
+ function Kn(e) {
771
+ let n = new p({ directed: false }), t = e.nodes();
772
+ if (t.length === 0) throw new Error("Graph must have at least one node");
773
+ let r = t[0], o = e.nodeCount();
774
+ n.setNode(r, {});
775
+ let i, s;
776
+ for (; $n(n, e) < o && (i = Jn(n, e), !!i); ) s = n.hasNode(i.v) ? v(e, i) : -v(e, i), Qn(n, e, s);
777
+ return n;
778
+ }
779
+ function $n(e, n) {
780
+ function t(r) {
781
+ let o = n.nodeEdges(r);
782
+ o && o.forEach((i) => {
783
+ let s = i.v, a = r === s ? i.w : s;
784
+ !e.hasNode(a) && !v(n, i) && (e.setNode(a, {}), e.setEdge(r, a, {}), t(a));
785
+ });
786
+ }
787
+ return e.nodes().forEach(t), e.nodeCount();
788
+ }
789
+ function Jn(e, n) {
790
+ return n.edges().reduce((r, o) => {
791
+ let i = Number.POSITIVE_INFINITY;
792
+ return e.hasNode(o.v) !== e.hasNode(o.w) && (i = v(n, o)), i < r[0] ? [i, o] : r;
793
+ }, [Number.POSITIVE_INFINITY, null])[1];
794
+ }
795
+ function Qn(e, n, t) {
796
+ e.nodes().forEach((r) => n.node(r).rank += t);
797
+ }
798
+ var { preorder: Zn, postorder: et } = R;
799
+ var Ve = x;
800
+ x.initLowLimValues = ee;
801
+ x.initCutValues = Z;
802
+ x.calcCutValue = We;
803
+ x.leaveEdge = Ye;
804
+ x.enterEdge = ze;
805
+ x.exchangeEdges = He;
806
+ function x(e) {
807
+ e = xe(e), S(e);
808
+ let n = V(e);
809
+ ee(n), Z(n, e);
810
+ let t, r;
811
+ for (; t = Ye(n); ) r = ze(n, e, t), He(n, e, t, r);
812
+ }
813
+ function Z(e, n) {
814
+ let t = et(e, e.nodes());
815
+ t = t.slice(0, t.length - 1), t.forEach((r) => nt(e, n, r));
816
+ }
817
+ function nt(e, n, t) {
818
+ let o = e.node(t).parent, i = e.edge(t, o);
819
+ i.cutvalue = We(e, n, t);
820
+ }
821
+ function We(e, n, t) {
822
+ let o = e.node(t).parent, i = true, s = n.edge(t, o), a = 0;
823
+ s || (i = false, s = n.edge(o, t)), a = s.weight;
824
+ let d = n.nodeEdges(t);
825
+ return d && d.forEach((l) => {
826
+ let u = l.v === t, c = u ? l.w : l.v;
827
+ if (c !== o) {
828
+ let h = u === i, f = n.edge(l).weight;
829
+ if (a += h ? f : -f, rt(e, t, c)) {
830
+ let b = e.edge(t, c).cutvalue;
831
+ a += h ? -b : b;
832
+ }
833
+ }
834
+ }), a;
835
+ }
836
+ function ee(e, n) {
837
+ arguments.length < 2 && (n = e.nodes()[0]), Be(e, {}, 1, n);
838
+ }
839
+ function Be(e, n, t, r, o) {
840
+ let i = t, s = e.node(r);
841
+ n[r] = true;
842
+ let a = e.neighbors(r);
843
+ return a && a.forEach((d) => {
844
+ Object.hasOwn(n, d) || (t = Be(e, n, t, d, r));
845
+ }), s.low = i, s.lim = t++, o ? s.parent = o : delete s.parent, t;
846
+ }
847
+ function Ye(e) {
848
+ return e.edges().find((n) => e.edge(n).cutvalue < 0);
849
+ }
850
+ function ze(e, n, t) {
851
+ let r = t.v, o = t.w;
852
+ n.hasEdge(r, o) || (r = t.w, o = t.v);
853
+ let i = e.node(r), s = e.node(o), a = i, d = false;
854
+ return i.lim > s.lim && (a = s, d = true), n.edges().filter((u) => d === Ae(e, e.node(u.v), a) && d !== Ae(e, e.node(u.w), a)).reduce((u, c) => v(n, c) < v(n, u) ? c : u);
855
+ }
856
+ function He(e, n, t, r) {
857
+ let o = t.v, i = t.w;
858
+ e.removeEdge(o, i), e.setEdge(r.v, r.w, {}), ee(e), Z(e, n), tt(e, n);
859
+ }
860
+ function tt(e, n) {
861
+ let t = e.nodes().find((o) => !e.node(o).parent);
862
+ if (!t) return;
863
+ let r = Zn(e, [t]);
864
+ r = r.slice(1), r.forEach((o) => {
865
+ let s = e.node(o).parent, a = n.edge(o, s), d = false;
866
+ a || (a = n.edge(s, o), d = true), n.node(o).rank = n.node(s).rank + (d ? a.minlen : -a.minlen);
867
+ });
868
+ }
869
+ function rt(e, n, t) {
870
+ return e.hasEdge(n, t);
871
+ }
872
+ function Ae(e, n, t) {
873
+ return t.low <= n.lim && n.lim <= t.lim;
874
+ }
875
+ var Xe = ot;
876
+ function ot(e) {
877
+ let n = e.graph().ranker;
878
+ if (typeof n == "function") return n(e);
879
+ switch (n) {
880
+ case "network-simplex":
881
+ qe(e);
882
+ break;
883
+ case "tight-tree":
884
+ st(e);
885
+ break;
886
+ case "longest-path":
887
+ it(e);
888
+ break;
889
+ case "none":
890
+ break;
891
+ default:
892
+ qe(e);
893
+ }
894
+ }
895
+ var it = S;
896
+ function st(e) {
897
+ S(e), V(e);
898
+ }
899
+ function qe(e) {
900
+ Ve(e);
901
+ }
902
+ var Ue = at;
903
+ function at(e) {
904
+ let n = lt(e);
905
+ e.graph().dummyChains.forEach((t) => {
906
+ let r = e.node(t), o = r.edgeObj, i = dt(e, n, o.v, o.w), s = i.path, a = i.lca, d = 0, l = s[d], u = true;
907
+ for (; t !== o.w; ) {
908
+ if (r = e.node(t), u) {
909
+ for (; (l = s[d]) !== a && e.node(l).maxRank < r.rank; ) d++;
910
+ l === a && (u = false);
911
+ }
912
+ if (!u) {
913
+ for (; d < s.length - 1 && e.node(s[d + 1]).minRank <= r.rank; ) d++;
914
+ l = s[d];
915
+ }
916
+ l !== void 0 && e.setParent(t, l), t = e.successors(t)[0];
917
+ }
918
+ });
919
+ }
920
+ function dt(e, n, t, r) {
921
+ let o = [], i = [], s = Math.min(n[t].low, n[r].low), a = Math.max(n[t].lim, n[r].lim), d;
922
+ d = t;
923
+ do
924
+ d = e.parent(d), o.push(d);
925
+ while (d && (n[d].low > s || a > n[d].lim));
926
+ let l = d, u = r;
927
+ for (; (u = e.parent(u)) !== l; ) i.push(u);
928
+ return { path: o.concat(i.reverse()), lca: l };
929
+ }
930
+ function lt(e) {
931
+ let n = {}, t = 0;
932
+ function r(o) {
933
+ let i = t;
934
+ e.children(o).forEach(r), n[o] = { low: i, lim: t++ };
935
+ }
936
+ return e.children(_).forEach(r), n;
937
+ }
938
+ function Ke(e) {
939
+ let n = w(e, "root", {}, "_root"), t = ut(e), r = Object.values(t), o = L(Math.max, r) - 1, i = 2 * o + 1;
940
+ e.graph().nestingRoot = n, e.edges().forEach((a) => e.edge(a).minlen *= i);
941
+ let s = ct(e) + 1;
942
+ e.children(_).forEach((a) => $e(e, n, i, s, o, t, a)), e.graph().nodeRankFactor = i;
943
+ }
944
+ function $e(e, n, t, r, o, i, s) {
945
+ var c;
946
+ let a = e.children(s);
947
+ if (!a.length) {
948
+ s !== n && e.setEdge(n, s, { weight: 0, minlen: t });
949
+ return;
950
+ }
951
+ let d = q(e, "_bt"), l = q(e, "_bb"), u = e.node(s);
952
+ e.setParent(d, s), u.borderTop = d, e.setParent(l, s), u.borderBottom = l, a.forEach((h) => {
953
+ var y;
954
+ $e(e, n, t, r, o, i, h);
955
+ let f = e.node(h), g = f.borderTop ? f.borderTop : h, b = f.borderBottom ? f.borderBottom : h, m = f.borderTop ? r : 2 * r, E = g !== b ? 1 : o - ((y = i[s]) != null ? y : 0) + 1;
956
+ e.setEdge(d, g, { weight: m, minlen: E, nestingEdge: true }), e.setEdge(b, l, { weight: m, minlen: E, nestingEdge: true });
957
+ }), e.parent(s) || e.setEdge(n, d, { weight: 0, minlen: o + ((c = i[s]) != null ? c : 0) });
958
+ }
959
+ function ut(e) {
960
+ let n = {};
961
+ function t(r, o) {
962
+ let i = e.children(r);
963
+ i && i.length && i.forEach((s) => t(s, o + 1)), n[r] = o;
964
+ }
965
+ return e.children(_).forEach((r) => t(r, 1)), n;
966
+ }
967
+ function ct(e) {
968
+ return e.edges().reduce((n, t) => n + e.edge(t).weight, 0);
969
+ }
970
+ function Je(e) {
971
+ let n = e.graph();
972
+ e.removeNode(n.nestingRoot), delete n.nestingRoot, e.edges().forEach((t) => {
973
+ e.edge(t).nestingEdge && e.removeEdge(t);
974
+ });
975
+ }
976
+ var Ze = ft;
977
+ function ft(e) {
978
+ function n(t) {
979
+ let r = e.children(t), o = e.node(t);
980
+ if (r.length && r.forEach(n), Object.hasOwn(o, "minRank")) {
981
+ o.borderLeft = [], o.borderRight = [];
982
+ for (let i = o.minRank, s = o.maxRank + 1; i < s; ++i) Qe(e, "borderLeft", "_bl", t, o, i), Qe(e, "borderRight", "_br", t, o, i);
983
+ }
984
+ }
985
+ e.children(_).forEach(n);
986
+ }
987
+ function Qe(e, n, t, r, o, i) {
988
+ let s = { width: 0, height: 0, rank: i, borderType: n }, a = o[n][i - 1], d = w(e, "border", s, t);
989
+ o[n][i] = d, e.setParent(d, r), a && e.setEdge(a, d, { weight: 1 });
990
+ }
991
+ function nn(e) {
992
+ var t;
993
+ let n = (t = e.graph().rankdir) == null ? void 0 : t.toLowerCase();
994
+ (n === "lr" || n === "rl") && rn(e);
995
+ }
996
+ function tn(e) {
997
+ var t;
998
+ let n = (t = e.graph().rankdir) == null ? void 0 : t.toLowerCase();
999
+ (n === "bt" || n === "rl") && bt(e), (n === "lr" || n === "rl") && (gt(e), rn(e));
1000
+ }
1001
+ function rn(e) {
1002
+ e.nodes().forEach((n) => en(e.node(n))), e.edges().forEach((n) => en(e.edge(n)));
1003
+ }
1004
+ function en(e) {
1005
+ let n = e.width;
1006
+ e.width = e.height, e.height = n;
1007
+ }
1008
+ function bt(e) {
1009
+ e.nodes().forEach((n) => ne(e.node(n))), e.edges().forEach((n) => {
1010
+ var r;
1011
+ let t = e.edge(n);
1012
+ (r = t.points) == null || r.forEach(ne), Object.hasOwn(t, "y") && ne(t);
1013
+ });
1014
+ }
1015
+ function ne(e) {
1016
+ e.y = -e.y;
1017
+ }
1018
+ function gt(e) {
1019
+ e.nodes().forEach((n) => te(e.node(n))), e.edges().forEach((n) => {
1020
+ var r;
1021
+ let t = e.edge(n);
1022
+ (r = t.points) == null || r.forEach(te), Object.hasOwn(t, "x") && te(t);
1023
+ });
1024
+ }
1025
+ function te(e) {
1026
+ let n = e.x;
1027
+ e.x = e.y, e.y = n;
1028
+ }
1029
+ function re(e) {
1030
+ let n = {}, t = e.nodes().filter((d) => !e.children(d).length), r = t.map((d) => e.node(d).rank), o = L(Math.max, r), i = k(o + 1).map(() => []);
1031
+ function s(d) {
1032
+ if (n[d]) return;
1033
+ n[d] = true;
1034
+ let l = e.node(d);
1035
+ i[l.rank].push(d);
1036
+ let u = e.successors(d);
1037
+ u && u.forEach(s);
1038
+ }
1039
+ return t.sort((d, l) => e.node(d).rank - e.node(l).rank).forEach(s), i;
1040
+ }
1041
+ function oe(e, n) {
1042
+ let t = 0;
1043
+ for (let r = 1; r < n.length; ++r) t += mt(e, n[r - 1], n[r]);
1044
+ return t;
1045
+ }
1046
+ function mt(e, n, t) {
1047
+ let r = Re(t, t.map((l, u) => u)), o = n.flatMap((l) => {
1048
+ let u = e.outEdges(l);
1049
+ return u ? u.map((c) => ({ pos: r[c.w], weight: e.edge(c).weight })).sort((c, h) => c.pos - h.pos) : [];
1050
+ }), i = 1;
1051
+ for (; i < t.length; ) i <<= 1;
1052
+ let s = 2 * i - 1;
1053
+ i -= 1;
1054
+ let a = new Array(s).fill(0), d = 0;
1055
+ return o.forEach((l) => {
1056
+ let u = l.pos + i;
1057
+ a[u] += l.weight;
1058
+ let c = 0;
1059
+ for (; u > 0; ) u % 2 && (c += a[u + 1]), u = u - 1 >> 1, a[u] += l.weight;
1060
+ d += l.weight * c;
1061
+ }), d;
1062
+ }
1063
+ function ie(e, n = []) {
1064
+ return n.map((t) => {
1065
+ let r = e.inEdges(t);
1066
+ if (!r || !r.length) return { v: t };
1067
+ {
1068
+ let o = r.reduce((i, s) => {
1069
+ let a = e.edge(s), d = e.node(s.v);
1070
+ return { sum: i.sum + a.weight * d.order, weight: i.weight + a.weight };
1071
+ }, { sum: 0, weight: 0 });
1072
+ return { v: t, barycenter: o.sum / o.weight, weight: o.weight };
1073
+ }
1074
+ });
1075
+ }
1076
+ function se(e, n) {
1077
+ let t = {};
1078
+ e.forEach((o, i) => {
1079
+ let s = { indegree: 0, in: [], out: [], vs: [o.v], i };
1080
+ o.barycenter !== void 0 && (s.barycenter = o.barycenter, s.weight = o.weight), t[o.v] = s;
1081
+ }), n.edges().forEach((o) => {
1082
+ let i = t[o.v], s = t[o.w];
1083
+ i !== void 0 && s !== void 0 && (s.indegree++, i.out.push(s));
1084
+ });
1085
+ let r = Object.values(t).filter((o) => !o.indegree);
1086
+ return Et(r);
1087
+ }
1088
+ function Et(e) {
1089
+ let n = [];
1090
+ function t(o) {
1091
+ return (i) => {
1092
+ i.merged || (i.barycenter === void 0 || o.barycenter === void 0 || i.barycenter >= o.barycenter) && Lt(o, i);
1093
+ };
1094
+ }
1095
+ function r(o) {
1096
+ return (i) => {
1097
+ i.in.push(o), --i.indegree === 0 && e.push(i);
1098
+ };
1099
+ }
1100
+ for (; e.length; ) {
1101
+ let o = e.pop();
1102
+ n.push(o), o.in.reverse().forEach(t(o)), o.out.forEach(r(o));
1103
+ }
1104
+ return n.filter((o) => !o.merged).map((o) => T(o, ["vs", "i", "barycenter", "weight"]));
1105
+ }
1106
+ function Lt(e, n) {
1107
+ let t = 0, r = 0;
1108
+ e.weight && (t += e.barycenter * e.weight, r += e.weight), n.weight && (t += n.barycenter * n.weight, r += n.weight), e.vs = n.vs.concat(e.vs), e.barycenter = t / r, e.weight = r, e.i = Math.min(n.i, e.i), n.merged = true;
1109
+ }
1110
+ function ae(e, n) {
1111
+ let t = Ce(e, (u) => Object.hasOwn(u, "barycenter")), r = t.lhs, o = t.rhs.sort((u, c) => c.i - u.i), i = [], s = 0, a = 0, d = 0;
1112
+ r.sort(yt(!!n)), d = on(i, o, d), r.forEach((u) => {
1113
+ d += u.vs.length, i.push(u.vs), s += u.barycenter * u.weight, a += u.weight, d = on(i, o, d);
1114
+ });
1115
+ let l = { vs: i.flat(1) };
1116
+ return a && (l.barycenter = s / a, l.weight = a), l;
1117
+ }
1118
+ function on(e, n, t) {
1119
+ let r;
1120
+ for (; n.length && (r = n[n.length - 1]).i <= t; ) n.pop(), e.push(r.vs), t++;
1121
+ return t;
1122
+ }
1123
+ function yt(e) {
1124
+ return (n, t) => n.barycenter < t.barycenter ? -1 : n.barycenter > t.barycenter ? 1 : e ? t.i - n.i : n.i - t.i;
1125
+ }
1126
+ function W(e, n, t, r) {
1127
+ let o = e.children(n), i = e.node(n), s = i ? i.borderLeft : void 0, a = i ? i.borderRight : void 0, d = {};
1128
+ s && (o = o.filter((h) => h !== s && h !== a));
1129
+ let l = ie(e, o);
1130
+ l.forEach((h) => {
1131
+ if (e.children(h.v).length) {
1132
+ let f = W(e, h.v, t, r);
1133
+ d[h.v] = f, Object.hasOwn(f, "barycenter") && Nt(h, f);
1134
+ }
1135
+ });
1136
+ let u = se(l, t);
1137
+ wt(u, d);
1138
+ let c = ae(u, r);
1139
+ if (s && a) {
1140
+ c.vs = [s, c.vs, a].flat(1);
1141
+ let h = e.predecessors(s);
1142
+ if (h && h.length) {
1143
+ let f = e.node(h[0]), g = e.predecessors(a), b = e.node(g[0]);
1144
+ Object.hasOwn(c, "barycenter") || (c.barycenter = 0, c.weight = 0), c.barycenter = (c.barycenter * c.weight + f.order + b.order) / (c.weight + 2), c.weight += 2;
1145
+ }
1146
+ }
1147
+ return c;
1148
+ }
1149
+ function wt(e, n) {
1150
+ e.forEach((t) => {
1151
+ t.vs = t.vs.flatMap((r) => n[r] ? n[r].vs : r);
1152
+ });
1153
+ }
1154
+ function Nt(e, n) {
1155
+ e.barycenter !== void 0 ? (e.barycenter = (e.barycenter * e.weight + n.barycenter * n.weight) / (e.weight + n.weight), e.weight += n.weight) : (e.barycenter = n.barycenter, e.weight = n.weight);
1156
+ }
1157
+ function de(e, n, t, r) {
1158
+ r || (r = e.nodes());
1159
+ let o = Gt(e), i = new p({ compound: true }).setGraph({ root: o }).setDefaultNodeLabel((s) => e.node(s));
1160
+ return r.forEach((s) => {
1161
+ let a = e.node(s), d = e.parent(s);
1162
+ if (a.rank === n || a.minRank <= n && n <= a.maxRank) {
1163
+ i.setNode(s), i.setParent(s, d || o);
1164
+ let l = e[t](s);
1165
+ l && l.forEach((u) => {
1166
+ let c = u.v === s ? u.w : u.v, h = i.edge(c, s), f = h !== void 0 ? h.weight : 0;
1167
+ i.setEdge(c, s, { weight: e.edge(u).weight + f });
1168
+ }), Object.hasOwn(a, "minRank") && i.setNode(s, { borderLeft: a.borderLeft[n], borderRight: a.borderRight[n] });
1169
+ }
1170
+ }), i;
1171
+ }
1172
+ function Gt(e) {
1173
+ let n;
1174
+ for (; e.hasNode(n = j("_root")); ) ;
1175
+ return n;
1176
+ }
1177
+ function le(e, n, t) {
1178
+ let r = {}, o;
1179
+ t.forEach((i) => {
1180
+ let s = e.parent(i), a, d;
1181
+ for (; s; ) {
1182
+ if (a = e.parent(s), a ? (d = r[a], r[a] = s) : (d = o, o = s), d && d !== s) {
1183
+ n.setEdge(d, s);
1184
+ return;
1185
+ }
1186
+ s = a;
1187
+ }
1188
+ });
1189
+ }
1190
+ function B(e, n = {}) {
1191
+ if (typeof n.customOrder == "function") {
1192
+ n.customOrder(e, B);
1193
+ return;
1194
+ }
1195
+ let t = X(e), r = sn(e, k(1, t + 1), "inEdges"), o = sn(e, k(t - 1, -1, -1), "outEdges"), i = re(e);
1196
+ if (an(e, i), n.disableOptimalOrderHeuristic) return;
1197
+ let s = Number.POSITIVE_INFINITY, a, d = n.constraints || [];
1198
+ for (let l = 0, u = 0; u < 4; ++l, ++u) {
1199
+ kt(l % 2 ? r : o, l % 4 >= 2, d), i = N(e);
1200
+ let c = oe(e, i);
1201
+ c < s ? (u = 0, a = Object.assign({}, i), s = c) : c === s && (a = structuredClone(i));
1202
+ }
1203
+ an(e, a);
1204
+ }
1205
+ function sn(e, n, t) {
1206
+ let r = /* @__PURE__ */ new Map(), o = (i, s) => {
1207
+ r.has(i) || r.set(i, []), r.get(i).push(s);
1208
+ };
1209
+ for (let i of e.nodes()) {
1210
+ let s = e.node(i);
1211
+ if (typeof s.rank == "number" && o(s.rank, i), typeof s.minRank == "number" && typeof s.maxRank == "number") for (let a = s.minRank; a <= s.maxRank; a++) a !== s.rank && o(a, i);
1212
+ }
1213
+ return n.map(function(i) {
1214
+ return de(e, i, t, r.get(i) || []);
1215
+ });
1216
+ }
1217
+ function kt(e, n, t) {
1218
+ let r = new p();
1219
+ e.forEach(function(o) {
1220
+ t.forEach((a) => r.setEdge(a.left, a.right));
1221
+ let i = o.graph().root, s = W(o, i, r, n);
1222
+ s.vs.forEach((a, d) => o.node(a).order = d), le(o, r, s.vs);
1223
+ });
1224
+ }
1225
+ function an(e, n) {
1226
+ Object.values(n).forEach((t) => t.forEach((r, o) => e.node(r).order = o));
1227
+ }
1228
+ function vt(e, n) {
1229
+ let t = {};
1230
+ function r(o, i) {
1231
+ let s = 0, a = 0, d = o.length, l = i[i.length - 1];
1232
+ return i.forEach((u, c) => {
1233
+ let h = xt(e, u), f = h ? e.node(h).order : d;
1234
+ (h || u === l) && (i.slice(a, c + 1).forEach((g) => {
1235
+ let b = e.predecessors(g);
1236
+ b && b.forEach((m) => {
1237
+ let E = e.node(m), y = E.order;
1238
+ (y < s || f < y) && !(E.dummy && e.node(g).dummy) && dn(t, m, g);
1239
+ });
1240
+ }), a = c + 1, s = f);
1241
+ }), i;
1242
+ }
1243
+ return n.length && n.reduce(r), t;
1244
+ }
1245
+ function _t(e, n) {
1246
+ let t = {};
1247
+ function r(i, s, a, d, l) {
1248
+ k(s, a).forEach((u) => {
1249
+ let c = i[u];
1250
+ if (c !== void 0 && e.node(c).dummy) {
1251
+ let h = e.predecessors(c);
1252
+ h && h.forEach((f) => {
1253
+ if (f === void 0) return;
1254
+ let g = e.node(f);
1255
+ g.dummy && (g.order < d || g.order > l) && dn(t, f, c);
1256
+ });
1257
+ }
1258
+ });
1259
+ }
1260
+ function o(i, s) {
1261
+ let a = -1, d = -1, l = 0;
1262
+ return s.forEach((u, c) => {
1263
+ if (e.node(u).dummy === "border") {
1264
+ let h = e.predecessors(u);
1265
+ if (h && h.length) {
1266
+ let f = h[0];
1267
+ if (f === void 0) return;
1268
+ d = e.node(f).order, r(s, l, c, a, d), l = c, a = d;
1269
+ }
1270
+ }
1271
+ r(s, l, s.length, d, i.length);
1272
+ }), s;
1273
+ }
1274
+ return n.length && n.reduce(o), t;
1275
+ }
1276
+ function xt(e, n) {
1277
+ if (e.node(n).dummy) {
1278
+ let t = e.predecessors(n);
1279
+ if (t) return t.find((r) => e.node(r).dummy);
1280
+ }
1281
+ }
1282
+ function dn(e, n, t) {
1283
+ if (n > t) {
1284
+ let o = n;
1285
+ n = t, t = o;
1286
+ }
1287
+ let r = e[n];
1288
+ r || (e[n] = r = {}), r[t] = true;
1289
+ }
1290
+ function Tt(e, n, t) {
1291
+ if (n > t) {
1292
+ let o = n;
1293
+ n = t, t = o;
1294
+ }
1295
+ let r = e[n];
1296
+ return r !== void 0 && Object.hasOwn(r, t);
1297
+ }
1298
+ function Ot(e, n, t, r) {
1299
+ let o = {}, i = {}, s = {};
1300
+ return n.forEach((a) => {
1301
+ a.forEach((d, l) => {
1302
+ o[d] = d, i[d] = d, s[d] = l;
1303
+ });
1304
+ }), n.forEach((a) => {
1305
+ let d = -1;
1306
+ a.forEach((l) => {
1307
+ let u = r(l);
1308
+ if (u && u.length) {
1309
+ let c = u.sort((f, g) => {
1310
+ let b = s[f], m = s[g];
1311
+ return (b !== void 0 ? b : 0) - (m !== void 0 ? m : 0);
1312
+ }), h = (c.length - 1) / 2;
1313
+ for (let f = Math.floor(h), g = Math.ceil(h); f <= g; ++f) {
1314
+ let b = c[f];
1315
+ if (b === void 0) continue;
1316
+ let m = s[b];
1317
+ if (m !== void 0 && i[l] === l && d < m && !Tt(t, l, b)) {
1318
+ let E = o[b];
1319
+ E !== void 0 && (i[b] = l, i[l] = o[l] = E, d = m);
1320
+ }
1321
+ }
1322
+ }
1323
+ });
1324
+ }), { root: o, align: i };
1325
+ }
1326
+ function It(e, n, t, r, o = false) {
1327
+ let i = {}, s = Ct(e, n, t, o), a = o ? "borderLeft" : "borderRight";
1328
+ function d(f, g) {
1329
+ let b = s.nodes().slice(), m = {}, E = b.pop();
1330
+ for (; E; ) {
1331
+ if (m[E]) f(E);
1332
+ else {
1333
+ m[E] = true, b.push(E);
1334
+ for (let y of g(E)) b.push(y);
1335
+ }
1336
+ E = b.pop();
1337
+ }
1338
+ }
1339
+ function l(f) {
1340
+ let g = s.inEdges(f);
1341
+ g ? i[f] = g.reduce((b, m) => {
1342
+ var I;
1343
+ let E = (I = i[m.v]) != null ? I : 0, y = s.edge(m);
1344
+ return Math.max(b, E + (y !== void 0 ? y : 0));
1345
+ }, 0) : i[f] = 0;
1346
+ }
1347
+ function u(f) {
1348
+ let g = s.outEdges(f), b = Number.POSITIVE_INFINITY;
1349
+ g && (b = g.reduce((E, y) => {
1350
+ let I = i[y.w], be = s.edge(y);
1351
+ return Math.min(E, (I !== void 0 ? I : 0) - (be !== void 0 ? be : 0));
1352
+ }, Number.POSITIVE_INFINITY));
1353
+ let m = e.node(f);
1354
+ b !== Number.POSITIVE_INFINITY && m.borderType !== a && (i[f] = Math.max(i[f] !== void 0 ? i[f] : 0, b));
1355
+ }
1356
+ function c(f) {
1357
+ return s.predecessors(f) || [];
1358
+ }
1359
+ function h(f) {
1360
+ return s.successors(f) || [];
1361
+ }
1362
+ return d(l, c), d(u, h), Object.keys(r).forEach((f) => {
1363
+ var b;
1364
+ let g = t[f];
1365
+ g !== void 0 && (i[f] = (b = i[g]) != null ? b : 0);
1366
+ }), i;
1367
+ }
1368
+ function Ct(e, n, t, r) {
1369
+ let o = new p(), i = e.graph(), s = jt(i.nodesep, i.edgesep, r);
1370
+ return n.forEach((a) => {
1371
+ let d;
1372
+ a.forEach((l) => {
1373
+ let u = t[l];
1374
+ if (u !== void 0) {
1375
+ if (o.setNode(u), d !== void 0) {
1376
+ let c = t[d];
1377
+ if (c !== void 0) {
1378
+ let h = o.edge(c, u);
1379
+ o.setEdge(c, u, Math.max(s(e, l, d), h || 0));
1380
+ }
1381
+ }
1382
+ d = l;
1383
+ }
1384
+ });
1385
+ }), o;
1386
+ }
1387
+ function Rt(e, n) {
1388
+ return Object.values(n).reduce((t, r) => {
1389
+ let o = Number.NEGATIVE_INFINITY, i = Number.POSITIVE_INFINITY;
1390
+ Object.entries(r).forEach(([a, d]) => {
1391
+ let l = St(e, a) / 2;
1392
+ o = Math.max(d + l, o), i = Math.min(d - l, i);
1393
+ });
1394
+ let s = o - i;
1395
+ return s < t[0] && (t = [s, r]), t;
1396
+ }, [Number.POSITIVE_INFINITY, null])[1];
1397
+ }
1398
+ function Pt(e, n) {
1399
+ let t = Object.values(n), r = L(Math.min, t), o = L(Math.max, t);
1400
+ ["u", "d"].forEach((i) => {
1401
+ ["l", "r"].forEach((s) => {
1402
+ let a = i + s, d = e[a];
1403
+ if (!d || d === n) return;
1404
+ let l = Object.values(d), u = r - L(Math.min, l);
1405
+ s !== "l" && (u = o - L(Math.max, l)), u && (e[a] = O(d, (c) => c + u));
1406
+ });
1407
+ });
1408
+ }
1409
+ function Mt(e, n = void 0) {
1410
+ let t = e.ul;
1411
+ return t ? O(t, (r, o) => {
1412
+ var s, a;
1413
+ if (n) {
1414
+ let d = n.toLowerCase(), l = e[d];
1415
+ if (l && l[o] !== void 0) return l[o];
1416
+ }
1417
+ let i = Object.values(e).map((d) => {
1418
+ let l = d[o];
1419
+ return l !== void 0 ? l : 0;
1420
+ }).sort((d, l) => d - l);
1421
+ return (((s = i[1]) != null ? s : 0) + ((a = i[2]) != null ? a : 0)) / 2;
1422
+ }) : {};
1423
+ }
1424
+ function ln(e) {
1425
+ let n = N(e), t = Object.assign(vt(e, n), _t(e, n)), r = {}, o;
1426
+ ["u", "d"].forEach((s) => {
1427
+ o = s === "u" ? n : Object.values(n).reverse(), ["l", "r"].forEach((a) => {
1428
+ a === "r" && (o = o.map((c) => Object.values(c).reverse()));
1429
+ let l = Ot(e, o, t, (c) => (s === "u" ? e.predecessors(c) : e.successors(c)) || []), u = It(e, o, l.root, l.align, a === "r");
1430
+ a === "r" && (u = O(u, (c) => -c)), r[s + a] = u;
1431
+ });
1432
+ });
1433
+ let i = Rt(e, r);
1434
+ return Pt(r, i), Mt(r, e.graph().align);
1435
+ }
1436
+ function jt(e, n, t) {
1437
+ return (r, o, i) => {
1438
+ let s = r.node(o), a = r.node(i), d = 0, l;
1439
+ if (d += s.width / 2, Object.hasOwn(s, "labelpos")) switch (s.labelpos.toLowerCase()) {
1440
+ case "l":
1441
+ l = -s.width / 2;
1442
+ break;
1443
+ case "r":
1444
+ l = s.width / 2;
1445
+ break;
1446
+ }
1447
+ if (l && (d += t ? l : -l), l = void 0, d += (s.dummy ? n : e) / 2, d += (a.dummy ? n : e) / 2, d += a.width / 2, Object.hasOwn(a, "labelpos")) switch (a.labelpos.toLowerCase()) {
1448
+ case "l":
1449
+ l = a.width / 2;
1450
+ break;
1451
+ case "r":
1452
+ l = -a.width / 2;
1453
+ break;
1454
+ }
1455
+ return l && (d += t ? l : -l), d;
1456
+ };
1457
+ }
1458
+ function St(e, n) {
1459
+ return e.node(n).width;
1460
+ }
1461
+ function un(e) {
1462
+ e = A(e), Ft(e), Object.entries(ln(e)).forEach(([n, t]) => e.node(n).x = t);
1463
+ }
1464
+ function Ft(e) {
1465
+ let n = N(e), t = e.graph(), r = t.ranksep, o = t.rankalign, i = 0;
1466
+ n.forEach((s) => {
1467
+ let a = s.reduce((d, l) => {
1468
+ var c;
1469
+ let u = (c = e.node(l).height) != null ? c : 0;
1470
+ return d > u ? d : u;
1471
+ }, 0);
1472
+ s.forEach((d) => {
1473
+ let l = e.node(d);
1474
+ o === "top" ? l.y = i + l.height / 2 : o === "bottom" ? l.y = i + a - l.height / 2 : l.y = i + a / 2;
1475
+ }), i += a + r;
1476
+ });
1477
+ }
1478
+ function he(e, n = {}) {
1479
+ let t = n.debugTiming ? P : M;
1480
+ return t("layout", () => {
1481
+ let r = t(" buildLayoutGraph", () => Xt(e));
1482
+ return t(" runLayout", () => Dt(r, t, n)), t(" updateInputGraph", () => At(e, r)), r;
1483
+ });
1484
+ }
1485
+ function Dt(e, n, t) {
1486
+ n(" makeSpaceForEdgeLabels", () => Ut(e)), n(" removeSelfEdges", () => rr(e)), n(" acyclic", () => je(e)), n(" nestingGraph.run", () => Ke(e)), n(" rank", () => Xe(A(e))), n(" injectEdgeLabelProxies", () => Kt(e)), n(" removeEmptyRanks", () => Oe(e)), n(" nestingGraph.cleanup", () => Je(e)), n(" normalizeRanks", () => Te(e)), n(" assignRankMinMax", () => $t(e)), n(" removeEdgeLabelProxies", () => Jt(e)), n(" normalize.run", () => Fe(e)), n(" parentDummyChains", () => Ue(e)), n(" addBorderSegments", () => Ze(e)), n(" order", () => B(e, t)), n(" insertSelfEdges", () => or(e)), n(" adjustCoordinateSystem", () => nn(e)), n(" position", () => un(e)), n(" positionSelfEdges", () => ir(e)), n(" removeBorderNodes", () => tr(e)), n(" normalize.undo", () => De(e)), n(" fixupEdgeLabelCoords", () => er(e)), n(" undoCoordinateSystem", () => tn(e)), n(" translateGraph", () => Qt(e)), n(" assignNodeIntersects", () => Zt(e)), n(" reversePoints", () => nr(e)), n(" acyclic.undo", () => Se(e));
1487
+ }
1488
+ function At(e, n) {
1489
+ e.nodes().forEach((t) => {
1490
+ let r = e.node(t), o = n.node(t);
1491
+ r && (r.x = o.x, r.y = o.y, r.order = o.order, r.rank = o.rank, n.children(t).length && (r.width = o.width, r.height = o.height));
1492
+ }), e.edges().forEach((t) => {
1493
+ let r = e.edge(t), o = n.edge(t);
1494
+ r.points = o.points, Object.hasOwn(o, "x") && (r.x = o.x, r.y = o.y);
1495
+ }), e.graph().width = n.graph().width, e.graph().height = n.graph().height;
1496
+ }
1497
+ var Vt = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"];
1498
+ var Wt = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "TB", rankalign: "center" };
1499
+ var Bt = ["acyclicer", "ranker", "rankdir", "align", "rankalign"];
1500
+ var Yt = ["width", "height", "rank"];
1501
+ var cn = { width: 0, height: 0 };
1502
+ var zt = ["minlen", "weight", "width", "height", "labeloffset"];
1503
+ var Ht = { minlen: 1, weight: 1, width: 0, height: 0, labeloffset: 10, labelpos: "r" };
1504
+ var qt = ["labelpos"];
1505
+ function Xt(e) {
1506
+ let n = new p({ multigraph: true, compound: true }), t = ce(e.graph());
1507
+ return n.setGraph(Object.assign({}, Wt, ue(t, Vt), T(t, Bt))), e.nodes().forEach((r) => {
1508
+ let o = ce(e.node(r)), i = ue(o, Yt);
1509
+ Object.keys(cn).forEach((a) => {
1510
+ i[a] === void 0 && (i[a] = cn[a]);
1511
+ }), n.setNode(r, i);
1512
+ let s = e.parent(r);
1513
+ s !== void 0 && n.setParent(r, s);
1514
+ }), e.edges().forEach((r) => {
1515
+ let o = ce(e.edge(r));
1516
+ n.setEdge(r, Object.assign({}, Ht, ue(o, zt), T(o, qt)));
1517
+ }), n;
1518
+ }
1519
+ function Ut(e) {
1520
+ let n = e.graph();
1521
+ n.ranksep /= 2, e.edges().forEach((t) => {
1522
+ let r = e.edge(t);
1523
+ r.minlen *= 2, r.labelpos.toLowerCase() !== "c" && (n.rankdir === "TB" || n.rankdir === "BT" ? r.width += r.labeloffset : r.height += r.labeloffset);
1524
+ });
1525
+ }
1526
+ function Kt(e) {
1527
+ e.edges().forEach((n) => {
1528
+ let t = e.edge(n);
1529
+ if (t.width && t.height) {
1530
+ let r = e.node(n.v), i = { rank: (e.node(n.w).rank - r.rank) / 2 + r.rank, e: n };
1531
+ w(e, "edge-proxy", i, "_ep");
1532
+ }
1533
+ });
1534
+ }
1535
+ function $t(e) {
1536
+ let n = 0;
1537
+ e.nodes().forEach((t) => {
1538
+ let r = e.node(t);
1539
+ r.borderTop && (r.minRank = e.node(r.borderTop).rank, r.maxRank = e.node(r.borderBottom).rank, n = Math.max(n, r.maxRank));
1540
+ }), e.graph().maxRank = n;
1541
+ }
1542
+ function Jt(e) {
1543
+ e.nodes().forEach((n) => {
1544
+ let t = e.node(n);
1545
+ if (t.dummy === "edge-proxy") {
1546
+ let r = t;
1547
+ e.edge(r.e).labelRank = t.rank, e.removeNode(n);
1548
+ }
1549
+ });
1550
+ }
1551
+ function Qt(e) {
1552
+ let n = Number.POSITIVE_INFINITY, t = 0, r = Number.POSITIVE_INFINITY, o = 0, i = e.graph(), s = i.marginx || 0, a = i.marginy || 0;
1553
+ function d(l) {
1554
+ let u = l.x, c = l.y, h = l.width, f = l.height;
1555
+ n = Math.min(n, u - h / 2), t = Math.max(t, u + h / 2), r = Math.min(r, c - f / 2), o = Math.max(o, c + f / 2);
1556
+ }
1557
+ e.nodes().forEach((l) => d(e.node(l))), e.edges().forEach((l) => {
1558
+ let u = e.edge(l);
1559
+ Object.hasOwn(u, "x") && d(u);
1560
+ }), n -= s, r -= a, e.nodes().forEach((l) => {
1561
+ let u = e.node(l);
1562
+ u.x -= n, u.y -= r;
1563
+ }), e.edges().forEach((l) => {
1564
+ let u = e.edge(l);
1565
+ u.points.forEach((c) => {
1566
+ c.x -= n, c.y -= r;
1567
+ }), Object.hasOwn(u, "x") && (u.x -= n), Object.hasOwn(u, "y") && (u.y -= r);
1568
+ }), i.width = t - n + s, i.height = o - r + a;
1569
+ }
1570
+ function Zt(e) {
1571
+ e.edges().forEach((n) => {
1572
+ let t = e.edge(n), r = e.node(n.v), o = e.node(n.w), i, s;
1573
+ t.points ? (i = t.points[0], s = t.points[t.points.length - 1]) : (t.points = [], i = o, s = r), t.points.unshift(H(r, i)), t.points.push(H(o, s));
1574
+ });
1575
+ }
1576
+ function er(e) {
1577
+ e.edges().forEach((n) => {
1578
+ let t = e.edge(n);
1579
+ if (Object.hasOwn(t, "x")) switch ((t.labelpos === "l" || t.labelpos === "r") && (t.width -= t.labeloffset), t.labelpos) {
1580
+ case "l":
1581
+ t.x -= t.width / 2 + t.labeloffset;
1582
+ break;
1583
+ case "r":
1584
+ t.x += t.width / 2 + t.labeloffset;
1585
+ break;
1586
+ }
1587
+ });
1588
+ }
1589
+ function nr(e) {
1590
+ e.edges().forEach((n) => {
1591
+ let t = e.edge(n);
1592
+ t.reversed && t.points.reverse();
1593
+ });
1594
+ }
1595
+ function tr(e) {
1596
+ e.nodes().forEach((n) => {
1597
+ if (e.children(n).length) {
1598
+ let t = e.node(n), r = e.node(t.borderTop), o = e.node(t.borderBottom), i = e.node(t.borderLeft[t.borderLeft.length - 1]), s = e.node(t.borderRight[t.borderRight.length - 1]);
1599
+ t.width = Math.abs(s.x - i.x), t.height = Math.abs(o.y - r.y), t.x = i.x + t.width / 2, t.y = r.y + t.height / 2;
1600
+ }
1601
+ }), e.nodes().forEach((n) => {
1602
+ e.node(n).dummy === "border" && e.removeNode(n);
1603
+ });
1604
+ }
1605
+ function rr(e) {
1606
+ e.edges().forEach((n) => {
1607
+ if (n.v === n.w) {
1608
+ let t = e.node(n.v);
1609
+ t.selfEdges || (t.selfEdges = []), t.selfEdges.push({ e: n, label: e.edge(n) }), e.removeEdge(n);
1610
+ }
1611
+ });
1612
+ }
1613
+ function or(e) {
1614
+ N(e).forEach((t) => {
1615
+ let r = 0;
1616
+ t.forEach((o, i) => {
1617
+ let s = e.node(o);
1618
+ s.order = i + r, (s.selfEdges || []).forEach((a) => {
1619
+ w(e, "selfedge", { width: a.label.width, height: a.label.height, rank: s.rank, order: i + ++r, e: a.e, label: a.label }, "_se");
1620
+ }), delete s.selfEdges;
1621
+ });
1622
+ });
1623
+ }
1624
+ function ir(e) {
1625
+ e.nodes().forEach((n) => {
1626
+ let t = e.node(n);
1627
+ if (t.dummy === "selfedge") {
1628
+ let r = t, o = e.node(r.e.v), i = o.x + o.width / 2, s = o.y, a = t.x - i, d = o.height / 2;
1629
+ e.setEdge(r.e, r.label), e.removeNode(n), r.label.points = [{ x: i + 2 * a / 3, y: s - d }, { x: i + 5 * a / 6, y: s - d }, { x: i + a, y: s }, { x: i + 5 * a / 6, y: s + d }, { x: i + 2 * a / 3, y: s + d }], r.label.x = t.x, r.label.y = t.y;
1630
+ }
1631
+ });
1632
+ }
1633
+ function ue(e, n) {
1634
+ return O(T(e, n), Number);
1635
+ }
1636
+ function ce(e) {
1637
+ let n = {};
1638
+ return e && Object.entries(e).forEach(([t, r]) => {
1639
+ typeof t == "string" && (t = t.toLowerCase()), n[t] = r;
1640
+ }), n;
1641
+ }
1642
+ function fe(e) {
1643
+ let n = N(e), t = new p({ compound: true, multigraph: true }).setGraph({});
1644
+ return e.nodes().forEach((r) => {
1645
+ t.setNode(r, { label: r }), t.setParent(r, "layer" + e.node(r).rank);
1646
+ }), e.edges().forEach((r) => t.setEdge(r.v, r.w, {}, r.name)), n.forEach((r, o) => {
1647
+ let i = "layer" + o;
1648
+ t.setNode(i, { rank: "same" }), r.reduce((s, a) => (t.setEdge(s, a, { style: "invis" }), a));
1649
+ }), t;
1650
+ }
1651
+ var sr = { graphlib: z, version: U, layout: he, debug: fe, util: { time: P, notime: M } };
1652
+ var To = sr;
1653
+
1654
+ // src/layout/index.ts
1655
+ function autoLayout(graph, options = {}) {
1656
+ const dir = options.direction ?? "LR";
1657
+ const nodesep = options.nodeSep ?? 48;
1658
+ const ranksep = options.rankSep ?? 96;
1659
+ const dw = options.defaultWidth ?? 180;
1660
+ const dh = options.defaultHeight ?? 64;
1661
+ const inScope = (n) => options.scope ? n.parentId === options.scope : !n.parentId;
1662
+ const targets = graph.nodes.filter(inScope);
1663
+ if (targets.length === 0) return graph.nodes;
1664
+ const ids = new Set(targets.map((n) => n.id));
1665
+ const g = new To.graphlib.Graph();
1666
+ g.setGraph({ rankdir: dir, nodesep, ranksep });
1667
+ g.setDefaultEdgeLabel(() => ({}));
1668
+ for (const n of targets) {
1669
+ g.setNode(n.id, { width: n.width ?? dw, height: n.height ?? dh });
1670
+ }
1671
+ for (const e of graph.edges) {
1672
+ if (ids.has(e.source) && ids.has(e.target)) g.setEdge(e.source, e.target);
1673
+ }
1674
+ To.layout(g);
1675
+ const pos = /* @__PURE__ */ new Map();
1676
+ for (const n of targets) {
1677
+ const d = g.node(n.id);
1678
+ if (d) pos.set(n.id, { x: d.x - d.width / 2, y: d.y - d.height / 2 });
1679
+ }
1680
+ return graph.nodes.map((n) => {
1681
+ const p2 = pos.get(n.id);
1682
+ return p2 ? { ...n, position: p2 } : n;
1683
+ });
1684
+ }
1685
+ /*! Bundled license information:
1686
+
1687
+ @dagrejs/dagre/dist/dagre.esm.js:
1688
+ (*! For license information please see dagre.esm.js.LEGAL.txt *)
1689
+ */
1690
+
1691
+ exports.autoLayout = autoLayout;
1692
+ //# sourceMappingURL=layout.cjs.map
1693
+ //# sourceMappingURL=layout.cjs.map