@pilates/core 1.0.0-rc.2 → 1.0.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.
@@ -6,18 +6,102 @@
6
6
  * 2. Recursively lay out children in floating-point coordinates.
7
7
  * 3. Round the whole tree to integer cells.
8
8
  * 4. Mark every node clean.
9
+ *
10
+ * When `PILATES_DIFFERENTIAL_LAYOUT=1` is set in the environment, the
11
+ * exported `calculateLayout` runs the algorithm twice — once normally
12
+ * (with caches active), then again with all caches cleared and every
13
+ * node forcibly re-dirtied — and asserts the two snapshots are byte
14
+ * identical. Used by the test suite (`pnpm test:differential`) to
15
+ * catch any cache-correctness regression as soon as it lands.
9
16
  */
17
+ import { LayoutCache, clearAllCaches, diffLayouts, markDirtyDeep, restoreFromCache, snapshotForCache, snapshotTreeLayouts, } from './cache.js';
10
18
  import { layoutChildren, resolveRootAxisSize } from './main-axis.js';
11
19
  import { roundLayout } from './round.js';
20
+ const DIFFERENTIAL = process.env.PILATES_DIFFERENTIAL_LAYOUT === '1';
12
21
  export function calculateLayout(root, availableWidth, availableHeight) {
22
+ if (!DIFFERENTIAL) {
23
+ calculateLayoutImpl(root, availableWidth, availableHeight);
24
+ return;
25
+ }
26
+ // First pass: cached path (normal).
27
+ calculateLayoutImpl(root, availableWidth, availableHeight);
28
+ const cachedSnapshot = snapshotTreeLayouts(root);
29
+ // Second pass: clear caches, re-dirty, recompute cold.
30
+ clearAllCaches(root);
31
+ markDirtyDeep(root);
32
+ calculateLayoutImpl(root, availableWidth, availableHeight);
33
+ const coldSnapshot = snapshotTreeLayouts(root);
34
+ const diff = diffLayouts(cachedSnapshot, coldSnapshot);
35
+ if (diff !== '') {
36
+ throw new Error(`[pilates differential layout] cache produced different result than fresh recompute:\n ${diff}`);
37
+ }
38
+ }
39
+ function calculateLayoutImpl(root, availableWidth, availableHeight) {
40
+ const widthMode = availableWidth === undefined ? 'undefined' : 'exactly';
41
+ const heightMode = availableHeight === undefined ? 'undefined' : 'exactly';
42
+ const aw = availableWidth ?? Number.POSITIVE_INFINITY;
43
+ const ah = availableHeight ?? Number.POSITIVE_INFINITY;
44
+ const key = {
45
+ availableWidth: aw,
46
+ widthMode,
47
+ availableHeight: ah,
48
+ heightMode,
49
+ };
50
+ // Cache hit at root: clean tree + matching inputs.
51
+ if (!root.isDirty() && root._layoutCache !== undefined) {
52
+ const hit = root._layoutCache.lookup(key);
53
+ if (hit !== undefined) {
54
+ root._layout.left = 0;
55
+ root._layout.top = 0;
56
+ root._floatLeft = 0;
57
+ root._floatTop = 0;
58
+ restoreFromCache(root, hit);
59
+ // Children may have their own caches; recurse to either hit those
60
+ // or fall back to recompute on miss. Pass useCache=true so inner nodes
61
+ // can also use their caches. This is safe because the root cache-hit
62
+ // path skips roundLayout — cached values were already rounded at their
63
+ // original absolute positions, which are unchanged when the root hits.
64
+ //
65
+ // Phase 3 optimisation: a child can be skipped entirely when BOTH
66
+ // (a) the child itself is not dirty, AND
67
+ // (b) no descendant of the child is dirty.
68
+ // Condition (b) is tracked by `_hasDirtyDescendant`. A boundary that
69
+ // stops dirty propagation still sets `_hasDirtyDescendant = true` on
70
+ // its ancestors (without marking them dirty), so a clean direct child
71
+ // of root with `_hasDirtyDescendant = true` is the signal that a
72
+ // boundary somewhere below needs to be re-laid out.
73
+ // When both flags are false, the subtree is fully clean: layout values
74
+ // are unchanged from the last pass and no recursion is needed.
75
+ for (let i = 0; i < root.getChildCount(); i++) {
76
+ const c = root.getChild(i);
77
+ if (c.style.display === 'none')
78
+ continue;
79
+ if (!c.isDirty() && !c._hasDirtyDescendant)
80
+ continue;
81
+ // c._layout.{width,height} were populated by restoreFromCache(root, ...)
82
+ // above. layoutChildren will use them as the EXACTLY-sized container
83
+ // and either hit c's own cache or recompute.
84
+ layoutChildren(c, true);
85
+ }
86
+ markClean(root);
87
+ return;
88
+ }
89
+ }
90
+ // Cold path
13
91
  root._layout.left = 0;
14
92
  root._layout.top = 0;
93
+ root._floatLeft = 0;
94
+ root._floatTop = 0;
15
95
  root._layout.width = resolveRootAxisSize(root, 'row', availableWidth);
16
96
  root._layout.height = resolveRootAxisSize(root, 'column', availableHeight);
17
97
  layoutChildren(root);
18
98
  roundLayout(root);
19
99
  computeScrollSizes(root);
20
100
  markClean(root);
101
+ // Store the root's result (computeScrollSizes already cached inner nodes).
102
+ if (root._layoutCache === undefined)
103
+ root._layoutCache = new LayoutCache();
104
+ root._layoutCache.store(key, snapshotForCache(root));
21
105
  }
22
106
  function markClean(node) {
23
107
  node.clearDirty();
@@ -49,5 +133,18 @@ function computeScrollSizes(node) {
49
133
  }
50
134
  node._layout.scrollWidth = Math.max(node._layout.width, contentRight);
51
135
  node._layout.scrollHeight = Math.max(node._layout.height, contentBottom);
136
+ // Cache the node's layout for next pass. Skip root (cached separately
137
+ // by calculateLayoutImpl with the original root key).
138
+ if (node.getParent() !== null) {
139
+ const innerKey = {
140
+ availableWidth: node.layout.width,
141
+ widthMode: 'exactly',
142
+ availableHeight: node.layout.height,
143
+ heightMode: 'exactly',
144
+ };
145
+ if (node._layoutCache === undefined)
146
+ node._layoutCache = new LayoutCache();
147
+ node._layoutCache.store(innerKey, snapshotForCache(node));
148
+ }
52
149
  }
53
150
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,eAAe,CAC7B,IAAU,EACV,cAAkC,EAClC,eAAmC;IAEnC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE3E,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,WAAW,CAAC,IAAI,CAAC,CAAC;IAClB,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,IAAU;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CAAC,IAAU;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;QAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;IAErF,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;QACrB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1D,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG,CAAC;AAErE,MAAM,UAAU,eAAe,CAC7B,IAAU,EACV,cAAkC,EAClC,eAAmC;IAEnC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,oCAAoC;IACpC,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEjD,uDAAuD;IACvD,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,0FAA0F,IAAI,EAAE,CACjG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAU,EACV,cAAkC,EAClC,eAAmC;IAEnC,MAAM,SAAS,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAE,WAAqB,CAAC,CAAC,CAAE,SAAmB,CAAC;IAC/F,MAAM,UAAU,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAE,WAAqB,CAAC,CAAC,CAAE,SAAmB,CAAC;IACjG,MAAM,EAAE,GAAG,cAAc,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACtD,MAAM,EAAE,GAAG,eAAe,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACvD,MAAM,GAAG,GAAG;QACV,cAAc,EAAE,EAAE;QAClB,SAAS;QACT,eAAe,EAAE,EAAE;QACnB,UAAU;KACX,CAAC;IAEF,mDAAmD;IACnD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5B,kEAAkE;YAClE,uEAAuE;YACvE,qEAAqE;YACrE,uEAAuE;YACvE,uEAAuE;YACvE,EAAE;YACF,kEAAkE;YAClE,2CAA2C;YAC3C,6CAA6C;YAC7C,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,iEAAiE;YACjE,oDAAoD;YACpD,uEAAuE;YACvE,+DAA+D;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;gBAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;oBAAE,SAAS;gBACzC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB;oBAAE,SAAS;gBACrD,yEAAyE;gBACzE,qEAAqE;gBACrE,6CAA6C;gBAC7C,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;IACH,CAAC;IAED,YAAY;IACZ,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE3E,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,WAAW,CAAC,IAAI,CAAC,CAAC;IAClB,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhB,2EAA2E;IAC3E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;IAC3E,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,IAAU;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CAAC,IAAU;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;QAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;IAErF,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;QACrB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1D,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEzE,sEAAsE;IACtE,sDAAsD;IACtD,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG;YACf,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACjC,SAAS,EAAE,SAAkB;YAC7B,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YACnC,UAAU,EAAE,SAAkB;SAC/B,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;QAC3E,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -47,7 +47,7 @@ import { type Axis } from './axis.js';
47
47
  * non-hidden child so their own descendants are laid out within the box
48
48
  * we just assigned them.
49
49
  */
50
- export declare function layoutChildren(node: Node): void;
50
+ export declare function layoutChildren(node: Node, useCache?: boolean, parentAbsX?: number, parentAbsY?: number): void;
51
51
  /**
52
52
  * Resolve the root node's own size from style + caller-supplied availability.
53
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"main-axis.d.ts","sourceRoot":"","sources":["../../src/algorithm/main-axis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EACL,KAAK,IAAI,EAYV,MAAM,WAAW,CAAC;AAgCnB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAyB/C;AAitBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAgBjG"}
1
+ {"version":3,"file":"main-axis.d.ts","sourceRoot":"","sources":["../../src/algorithm/main-axis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EACL,KAAK,IAAI,EAYV,MAAM,WAAW,CAAC;AA8DnB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAQ,EAAE,UAAU,SAAI,EAAE,UAAU,SAAI,GAAG,IAAI,CAgGjG;AA4xBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAgBjG"}
@@ -32,6 +32,30 @@
32
32
  */
33
33
  import { MeasureMode } from '../measure-func.js';
34
34
  import { clampSize, crossAxis, effectivePreferredSize, gapAlong, isReverse, mainAxis, maxSize, minSize, preferredSize, readEnd, readStart, } from './axis.js';
35
+ import { LayoutCache, restoreFromCache, snapshotForCache } from './cache.js';
36
+ import { roundLayoutSubtree } from './round.js';
37
+ /**
38
+ * Single chokepoint for measure-func invocation. Consults the leaf's
39
+ * `_measureCache`; on miss, calls the measurer and stores the result.
40
+ * Every measure-func call site in this file routes through here.
41
+ *
42
+ * @internal
43
+ */
44
+ function callMeasureFunc(node, availableWidth, widthMode, availableHeight, heightMode) {
45
+ const fn = node.getMeasureFunc();
46
+ if (fn === null) {
47
+ throw new Error('callMeasureFunc requires a node with a measure function');
48
+ }
49
+ const key = { availableWidth, widthMode, availableHeight, heightMode };
50
+ const cached = node._measureCache?.lookup(key);
51
+ if (cached !== undefined)
52
+ return cached;
53
+ const result = fn(availableWidth, widthMode, availableHeight, heightMode);
54
+ // _measureCache was lazy-created by setMeasureFunc — guaranteed present
55
+ // here since fn !== null.
56
+ node._measureCache?.store(key, result);
57
+ return result;
58
+ }
35
59
  /**
36
60
  * Lay out a node's children. The container's own `layout.width` and
37
61
  * `layout.height` must already be set when this is called.
@@ -47,7 +71,53 @@ import { clampSize, crossAxis, effectivePreferredSize, gapAlong, isReverse, main
47
71
  * non-hidden child so their own descendants are laid out within the box
48
72
  * we just assigned them.
49
73
  */
50
- export function layoutChildren(node) {
74
+ export function layoutChildren(node, useCache = false, parentAbsX = 0, parentAbsY = 0) {
75
+ // Cache hit fast-path: only when useCache=true (i.e. we are in a path
76
+ // that has already committed to skipping roundLayout — either the root
77
+ // cache-hit fast-path or a recursive call from another cache-hit node).
78
+ // We MUST NOT use this fast-path when the root is on the cold path and
79
+ // roundLayout will run afterwards: the cache stores post-rounded values
80
+ // that were computed with different ancestor absolute coordinates, so
81
+ // re-rounding after restore would give wrong results for deep descendants.
82
+ //
83
+ // Implication for performance: inner-node caches only get READS on root
84
+ // cache hits (which require root clean — `markDirty()` propagates up,
85
+ // so any descendant mutation dirties root). Phase 3 relayout boundaries
86
+ // break this assumption: a boundary node may be dirty while its ancestor
87
+ // root is clean. The cold-path fallback below handles this: when a dirty
88
+ // node is encountered under useCache=true, it re-lays out the subtree,
89
+ // rounds child positions (using the tracked absolute coordinate), and
90
+ // updates scroll sizes + cache (see `roundLayoutSubtree` and
91
+ // `computeAndCacheScrollSizes`).
92
+ if (useCache && !node.isDirty() && node._layoutCache !== undefined) {
93
+ const key = {
94
+ availableWidth: node.layout.width,
95
+ widthMode: 'exactly',
96
+ availableHeight: node.layout.height,
97
+ heightMode: 'exactly',
98
+ };
99
+ const hit = node._layoutCache.lookup(key);
100
+ if (hit !== undefined) {
101
+ restoreFromCache(node, hit);
102
+ // Recurse to children — each one either hits its own cache or
103
+ // falls through to a full layoutChildren recompute. Pass along the
104
+ // float absolute position of `node` as the new parentAbsX/Y so dirty
105
+ // sub-boundaries can round their subtrees using correct coordinates.
106
+ // Use `_floatLeft/Top` (pre-rounding values restored from cache) rather
107
+ // than `_layout.left/top` (rounded integers restored from cache) so that
108
+ // grandchildren's absolute float coordinates are computed correctly.
109
+ const nodeAbsX = parentAbsX + node._floatLeft;
110
+ const nodeAbsY = parentAbsY + node._floatTop;
111
+ for (let i = 0; i < node.getChildCount(); i++) {
112
+ const c = node.getChild(i);
113
+ if (c.style.display === 'none')
114
+ continue;
115
+ layoutChildren(c, true, nodeAbsX, nodeAbsY);
116
+ }
117
+ return;
118
+ }
119
+ }
120
+ // Cold path:
51
121
  const flowChildren = visibleChildrenOf(node);
52
122
  const absoluteList = absoluteChildrenOf(node);
53
123
  if (flowChildren.length === 0 && absoluteList.length === 0) {
@@ -63,13 +133,80 @@ export function layoutChildren(node) {
63
133
  // Recurse into every non-hidden child so descendants are laid out within
64
134
  // the box we just assigned them. (Absolute children may have their own
65
135
  // flex subtrees.)
136
+ // When inside a root cache-hit pass (useCache=true, i.e. we are on a dirty
137
+ // node's cold-recompute path), pass useCache=false to the children. The
138
+ // children's sub-layouts will be fully recomputed; `roundLayoutSubtree`
139
+ // below will then round their positions, and `computeAndCacheScrollSizes`
140
+ // will set their parent-visible scroll metrics. Passing useCache=false here
141
+ // prevents children from reading stale cache entries whose keys were keyed
142
+ // on pre-mutation sizes (the parent just assigned them new widths/heights
143
+ // via the cold flex path, so their sizes may have changed).
66
144
  for (let i = 0; i < node.getChildCount(); i++) {
67
145
  const c = node.getChild(i);
68
146
  if (c.style.display === 'none')
69
147
  continue;
70
- layoutChildren(c);
148
+ layoutChildren(c, false);
149
+ }
150
+ // When we are inside a root cache-hit pass (useCache=true) and this node
151
+ // ran the cold path (it was dirty or its cache missed), we must:
152
+ // 1. Round this node's children using absolute coordinates (mirrors what
153
+ // roundLayout does in the full cold path). `parentAbsX/Y` is the
154
+ // absolute position of node's parent, so node's absolute corner is
155
+ // `(parentAbsX + node.left, parentAbsY + node.top)`.
156
+ // 2. Recompute scroll sizes from the now-rounded child positions.
157
+ // 3. Refresh this node's own layout cache so subsequent clean passes hit.
158
+ // This is safe for relayout boundaries because their `left`/`top` were
159
+ // restored from the parent's rounded cache (already integers), so
160
+ // node.absX = parentAbsX + node.left is already integer — rounding is a
161
+ // no-op at the node level and correct for all child positions.
162
+ if (useCache) {
163
+ roundLayoutSubtree(node, parentAbsX, parentAbsY);
164
+ computeAndCacheScrollSizes(node);
71
165
  }
72
166
  }
167
+ /**
168
+ * Recursively recompute `scrollWidth`/`scrollHeight` for `node` and all
169
+ * its descendants (post-order), then refresh each non-root node's
170
+ * `_layoutCache`. This mirrors what `computeScrollSizes` in `index.ts`
171
+ * does on the full cold path, but is called inline from `layoutChildren`
172
+ * when a dirty boundary node runs the cold path inside a root cache-hit
173
+ * pass. In that context `computeScrollSizes` + `roundLayout` will NOT
174
+ * run for this subtree, so we update scroll metrics here instead.
175
+ *
176
+ * Called after `roundLayoutSubtree` so all positions and sizes are already
177
+ * integer-rounded before we compute content extents.
178
+ */
179
+ function computeAndCacheScrollSizes(node) {
180
+ // Post-order: recurse into children first so their scrollWidths are
181
+ // set before we compute this node's content extent from them.
182
+ for (let i = 0; i < node.getChildCount(); i++) {
183
+ computeAndCacheScrollSizes(node.getChild(i));
184
+ }
185
+ let contentRight = 0;
186
+ let contentBottom = 0;
187
+ for (let i = 0; i < node.getChildCount(); i++) {
188
+ const c = node.getChild(i);
189
+ const cl = c._layout;
190
+ if (cl.left + cl.width > contentRight)
191
+ contentRight = cl.left + cl.width;
192
+ if (cl.top + cl.height > contentBottom)
193
+ contentBottom = cl.top + cl.height;
194
+ }
195
+ node._layout.scrollWidth = Math.max(node._layout.width, contentRight);
196
+ node._layout.scrollHeight = Math.max(node._layout.height, contentBottom);
197
+ // Refresh this node's own layout cache so subsequent clean passes see
198
+ // the updated scroll sizes. Mirror the key scheme used by `computeScrollSizes`
199
+ // in `index.ts` (width/height as exactly-sized container).
200
+ const innerKey = {
201
+ availableWidth: node.layout.width,
202
+ widthMode: 'exactly',
203
+ availableHeight: node.layout.height,
204
+ heightMode: 'exactly',
205
+ };
206
+ if (node._layoutCache === undefined)
207
+ node._layoutCache = new LayoutCache();
208
+ node._layoutCache.store(innerKey, snapshotForCache(node));
209
+ }
73
210
  /** The 8-step flex pipeline for in-flow children. */
74
211
  function layoutFlexFlow(node, visible) {
75
212
  const main = mainAxis(node.style.flexDirection);
@@ -173,7 +310,7 @@ function layoutAbsoluteChild(child, parentOuterW, parentOuterH) {
173
310
  width = clampSize(child.style, 'row', Math.max(0, candidate));
174
311
  }
175
312
  else if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
176
- const result = child.getMeasureFunc()(parentOuterW, MeasureMode.AtMost, parentOuterH, MeasureMode.AtMost);
313
+ const result = callMeasureFunc(child, parentOuterW, MeasureMode.AtMost, parentOuterH, MeasureMode.AtMost);
177
314
  width = clampSize(child.style, 'row', result.width);
178
315
  }
179
316
  else {
@@ -190,7 +327,7 @@ function layoutAbsoluteChild(child, parentOuterW, parentOuterH) {
190
327
  height = clampSize(child.style, 'column', Math.max(0, candidate));
191
328
  }
192
329
  else if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
193
- const result = child.getMeasureFunc()(width, MeasureMode.Exactly, parentOuterH, MeasureMode.AtMost);
330
+ const result = callMeasureFunc(child, width, MeasureMode.Exactly, parentOuterH, MeasureMode.AtMost);
194
331
  height = clampSize(child.style, 'column', result.height);
195
332
  }
196
333
  else {
@@ -222,6 +359,8 @@ function layoutAbsoluteChild(child, parentOuterW, parentOuterH) {
222
359
  child._layout.top = top;
223
360
  child._layout.width = width;
224
361
  child._layout.height = height;
362
+ child._floatLeft = left;
363
+ child._floatTop = top;
225
364
  }
226
365
  // A frozen empty tuple lets the no-children case avoid allocating a
227
366
  // fresh array per layoutChildren call. Most subtrees in a real UI have
@@ -599,22 +738,39 @@ function visibleChildrenOf(node) {
599
738
  }
600
739
  return out ?? NO_CHILDREN;
601
740
  }
741
+ /**
742
+ * Measure-func warm-up call inside `layoutChildren` for leaves (the
743
+ * leaf's own `_layout.width`/`height` were already resolved by the
744
+ * parent during flex distribution via `resolveHypotheticalMainSize` /
745
+ * `naturalCrossSize`, so the result of this call is intentionally
746
+ * discarded). Two reasons we still make the call:
747
+ *
748
+ * 1. Side-effect contract — some measure funcs maintain their own
749
+ * internal state (e.g. text-shaping caches) that would otherwise
750
+ * go stale; the call gives them a chance to update.
751
+ * 2. Cache priming — populates `_measureCache` with the final
752
+ * `(layout-width, AtMost)` key so a subsequent re-layout pass on
753
+ * a clean leaf hits the cache without re-invoking the measurer.
754
+ */
602
755
  function measureLeafIfNeeded(node) {
603
- const fn = node.getMeasureFunc();
604
- if (fn === null)
756
+ if (node.getMeasureFunc() === null)
605
757
  return;
606
758
  const padW = (node.style.padding[1] ?? 0) + (node.style.padding[3] ?? 0);
607
759
  const padH = (node.style.padding[0] ?? 0) + (node.style.padding[2] ?? 0);
608
- fn(Math.max(0, node.layout.width - padW), MeasureMode.AtMost, Math.max(0, node.layout.height - padH), MeasureMode.AtMost);
760
+ callMeasureFunc(node, Math.max(0, node.layout.width - padW), MeasureMode.AtMost, Math.max(0, node.layout.height - padH), MeasureMode.AtMost);
609
761
  }
610
762
  function sizeOnAxis(node, axis) {
611
763
  return axis === 'row' ? node.layout.width : node.layout.height;
612
764
  }
613
765
  function writeMainPos(node, main, value) {
614
- if (main === 'row')
766
+ if (main === 'row') {
615
767
  node._layout.left = value;
616
- else
768
+ node._floatLeft = value;
769
+ }
770
+ else {
617
771
  node._layout.top = value;
772
+ node._floatTop = value;
773
+ }
618
774
  }
619
775
  function writeMainSize(node, main, value) {
620
776
  if (main === 'row')
@@ -623,10 +779,14 @@ function writeMainSize(node, main, value) {
623
779
  node._layout.height = value;
624
780
  }
625
781
  function writeCrossPos(node, cross, value) {
626
- if (cross === 'row')
782
+ if (cross === 'row') {
627
783
  node._layout.left = value;
628
- else
784
+ node._floatLeft = value;
785
+ }
786
+ else {
629
787
  node._layout.top = value;
788
+ node._floatTop = value;
789
+ }
630
790
  }
631
791
  function writeCrossSize(node, cross, value) {
632
792
  if (cross === 'row')
@@ -642,8 +802,7 @@ function resolveHypotheticalMainSize(child, main, _innerMain, innerCross) {
642
802
  const styleMain = effectivePreferredSize(child.style, main);
643
803
  if (typeof styleMain === 'number')
644
804
  return styleMain;
645
- const measure = child.getMeasureFunc();
646
- if (measure !== null && child.getChildCount() === 0) {
805
+ if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
647
806
  // Ask the leaf for its natural main-axis size: cross axis is
648
807
  // constrained (AtMost the available cross), main axis is free
649
808
  // (Undefined). The measure function reports `{ width, height }` as
@@ -670,7 +829,7 @@ function resolveHypotheticalMainSize(child, main, _innerMain, innerCross) {
670
829
  heightArg = 0;
671
830
  heightMode = MeasureMode.Undefined;
672
831
  }
673
- const result = measure(widthArg, widthMode, heightArg, heightMode);
832
+ const result = callMeasureFunc(child, widthArg, widthMode, heightArg, heightMode);
674
833
  return main === 'row' ? result.width : result.height;
675
834
  }
676
835
  return 0;
@@ -680,12 +839,11 @@ function naturalCrossSize(child, cross, innerCross) {
680
839
  const explicit = effectivePreferredSize(child.style, cross);
681
840
  if (typeof explicit === 'number')
682
841
  return explicit;
683
- const measure = child.getMeasureFunc();
684
- if (measure !== null && child.getChildCount() === 0) {
842
+ if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
685
843
  const main = cross === 'row' ? 'column' : 'row';
686
844
  const ms = preferredSize(child.style, main);
687
845
  const mainHint = typeof ms === 'number' ? ms : innerCross;
688
- const result = measure(cross === 'row' ? innerCross : mainHint, cross === 'row' ? MeasureMode.AtMost : MeasureMode.Undefined, cross === 'column' ? innerCross : mainHint, cross === 'column' ? MeasureMode.AtMost : MeasureMode.Undefined);
846
+ const result = callMeasureFunc(child, cross === 'row' ? innerCross : mainHint, cross === 'row' ? MeasureMode.AtMost : MeasureMode.Undefined, cross === 'column' ? innerCross : mainHint, cross === 'column' ? MeasureMode.AtMost : MeasureMode.Undefined);
689
847
  return cross === 'row' ? result.width : result.height;
690
848
  }
691
849
  return 0;
@@ -702,10 +860,14 @@ function flipMainAxis(children, main, padMainStart, innerMain) {
702
860
  const childPos = main === 'row' ? child.layout.left : child.layout.top;
703
861
  const innerPos = childPos - padMainStart;
704
862
  const newPos = padMainStart + innerMain - innerPos - childMain;
705
- if (main === 'row')
863
+ if (main === 'row') {
706
864
  child._layout.left = newPos;
707
- else
865
+ child._floatLeft = newPos;
866
+ }
867
+ else {
708
868
  child._layout.top = newPos;
869
+ child._floatTop = newPos;
870
+ }
709
871
  }
710
872
  }
711
873
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"main-axis.js","sourceRoot":"","sources":["../../src/algorithm/main-axis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAEL,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,SAAS,GACV,MAAM,WAAW,CAAC;AAgCnB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,IAAU;IACvC,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,sBAAsB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,yEAAyE;IACzE,uEAAuE;IACvE,kBAAkB;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS;QACzC,cAAc,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,SAAS,cAAc,CAAC,IAAU,EAAE,OAAwB;IAC1D,MAAM,IAAI,GAAS,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,KAAK,GAAS,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAE7C,4CAA4C;IAC5C,MAAM,KAAK,GAAe,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CACrD,CAAC;IAEF,2BAA2B;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE5E,6CAA6C;IAC7C,qEAAqE;IACrE,yEAAyE;IACzE,oEAAoE;IACpE,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,YAAY,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAClF,MAAM,iBAAiB,GAAG,YAAY,KAAK,SAAS,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,kCAAkC;IAClC,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAE7D,4DAA4D;IAC5D,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QAC3C,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzE,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,uEAAuE;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5C,MAAM,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/D,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACvC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1C,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,sBAAsB,CAAC,MAAY,EAAE,SAA0B;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB,SAAS,mBAAmB,CAAC,KAAW,EAAE,YAAoB,EAAE,YAAoB;IAClF,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IAElC,iBAAiB;IACjB,IAAI,KAAa,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,SAAS,GACb,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACvF,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAG,CACpC,YAAY,EACZ,WAAW,CAAC,MAAM,EAClB,YAAY,EACZ,WAAW,CAAC,MAAM,CACnB,CAAC;QACF,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAc,CAAC;IACnB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,SAAS,GACb,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACvF,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAG,CACpC,KAAK,EACL,WAAW,CAAC,OAAO,EACnB,YAAY,EACZ,WAAW,CAAC,MAAM,CACnB,CAAC;QACF,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAY,CAAC;IACjB,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,GAAG,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe;IACf,IAAI,GAAW,CAAC;IAChB,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACzC,GAAG,GAAG,YAAY,GAAG,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACxB,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,oEAAoE;AACpE,uEAAuE;AACvE,6DAA6D;AAC7D,MAAM,WAAW,GAAoB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEvD,SAAS,kBAAkB,CAAC,IAAU;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACpC,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS;QACzC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YACxC,IAAI,GAAG,KAAK,IAAI;gBAAE,GAAG,GAAG,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,WAAW,CAAC;AAC5B,CAAC;AAED,2EAA2E;AAE3E,SAAS,SAAS,CAChB,IAAU,EACV,IAAU,EACV,KAAW,EACX,SAAiB,EACjB,UAAkB;IAElB,MAAM,YAAY,GAAG,SAAS,CAC5B,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAC/D,CAAC;IACF,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/D,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,SAAS,EAAE,YAAY;QACvB,YAAY;QACZ,UAAU,EAAE,YAAY;QACxB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QACnD,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QAC/C,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;QACrD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,2EAA2E;AAE3E,SAAS,aAAa,CACpB,KAAiB,EACjB,SAAiB,EACjB,OAAe,EACf,IAAuB;IAEvB,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAe,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/E,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAC7E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACjB,WAAW,GAAG,QAAQ,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,WAAW,IAAI,OAAO,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,WAAW,IAAI,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,OAAe;IACpD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,gBAAgB,IAAI,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,aAAa,CAAC;QAC5E,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,gBAAgB,IAAI,OAAO,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAiB,EAAE,gBAAwB;IAC3D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,2EAA2E;AAE3E,SAAS,oBAAoB,CAC3B,IAAc,EACd,SAAiB,EACjB,IAAU,EACV,iBAAiB,GAAG,KAAK;IAEzB,iEAAiE;IACjE,mEAAmE;IACnE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACpD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAiB,EAAE,KAAa,EAAE,IAAU;IAClE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,MAAM,GAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,CAAC;IAED,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,kBAAkB,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC;;gBAC7E,SAAS,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO;QAC3B,MAAM,SAAS,GAAG,KAAK,GAAG,kBAAkB,CAAC;QAC7C,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO;QAE3B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;YAClE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,OAAO;IACxB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB,EAAE,QAAgB,EAAE,IAAU;IACvE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,MAAM,GAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7D,CAAC;IAED,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,kBAAkB,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;;gBAC7E,WAAW,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC;QAC/E,CAAC;QACD,IAAI,WAAW,IAAI,CAAC;YAAE,OAAO;QAC7B,MAAM,SAAS,GAAG,QAAQ,GAAG,kBAAkB,CAAC;QAChD,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO;QAE3B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9D,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,OAAO;IACxB,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,qBAAqB,CAC5B,KAAiB,EACjB,UAAkB,EAClB,cAAuB;IAEvB,IAAI,cAAc,EAAE,CAAC;QACnB,sEAAsE;QACtE,oBAAoB;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,UAAU,CAAC;QACvD,OAAO;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,cAAc,CAAC;YAC5E,IAAI,SAAS,GAAG,GAAG;gBAAE,GAAG,GAAG,SAAS,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,oBAAoB,CAC3B,KAAiB,EACjB,YAAmB,EACnB,UAAkB,EAClB,QAAgB;IAEhB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;IACjD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IAEnC,uEAAuE;IACvE,kCAAkC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,UAAU;YACb,MAAM,GAAG,QAAQ,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,eAAe;YAClB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/E,MAAM;QACR,KAAK,cAAc;YACjB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;gBACrC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,MAAM;QACR,KAAK,SAAS,CAAC;QACf,KAAK,MAAM;YACT,IAAI,QAAQ,GAAG,CAAC;gBAAE,aAAa,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1D,MAAM;QACR;YACE,oCAAoC;YACpC,MAAM;IACV,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,aAAa,GAAG,CAAC;YAAE,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB,EAAE,UAAkB;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,mBAAmB,CAC1B,IAAc,EACd,OAAgB,EAChB,SAAiB,EACjB,OAAe;IAEf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO;IAEpB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,QAAQ,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,aAAa,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,QAAQ,IAAI,OAAO,CAAC;IACrC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;IAEnD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU;YACb,MAAM,GAAG,QAAQ,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,eAAe;YAClB,IAAI,CAAC,GAAG,CAAC;gBAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM;QACR,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;YAClB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,MAAM,GAAG,IAAI,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM;QACR,CAAC;QACD;YACE,qCAAqC;YACrC,MAAM;IACV,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,IAAI,EAAE,CAAC,eAAe,CAAC;QAC7B,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC;QACpB,MAAM,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,qBAAqB,CAAC,IAAc,EAAE,UAAiB;IAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/E,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,qEAAqE;YACrE,sEAAsE;YACtE,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACtC,SAAS;QACX,CAAC;QAED,oDAAoD;QACpD,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;QAEjC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,UAAU;gBACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;gBACtE,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtF,MAAM;YACR;gBACE,iEAAiE;gBACjE,8CAA8C;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACtC,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAW,EAAE,KAAY;IAC/C,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,IAAc,EAAE,KAAe;IAChE,sEAAsE;IACtE,yEAAyE;IACzE,iBAAiB;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,2EAA2E;AAE3E,SAAS,iBAAiB,CAAC,IAAU;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACpC,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS;QACzC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,UAAU;YAAE,SAAS,CAAC,sBAAsB;QACzE,IAAI,GAAG,KAAK,IAAI;YAAE,GAAG,GAAG,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,OAAO,GAAG,IAAI,WAAW,CAAC;AAC5B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAU;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACjC,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO;IACxB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,EAAE,CACA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EACrC,WAAW,CAAC,MAAM,EAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,WAAW,CAAC,MAAM,CACnB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAU,EAAE,IAAU;IACxC,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,IAAU,EAAE,KAAa;IACzD,IAAI,IAAI,KAAK,KAAK;QAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC;AAChC,CAAC;AACD,SAAS,aAAa,CAAC,IAAU,EAAE,IAAU,EAAE,KAAa;IAC1D,IAAI,IAAI,KAAK,KAAK;QAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;;QAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AACnC,CAAC;AACD,SAAS,aAAa,CAAC,IAAU,EAAE,KAAW,EAAE,KAAa;IAC3D,IAAI,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC;AAChC,CAAC;AACD,SAAS,cAAc,CAAC,IAAU,EAAE,KAAW,EAAE,KAAa;IAC5D,IAAI,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;;QAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AACnC,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAW,EACX,IAAU,EACV,UAAkB,EAClB,UAAkB;IAElB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,sEAAsE;IACtE,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QACpD,6DAA6D;QAC7D,8DAA8D;QAC9D,mEAAmE;QACnE,sEAAsE;QACtE,WAAW;QACX,MAAM,KAAK,GAAS,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACtD,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,eAAe,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAEjE,IAAI,QAAgB,CAAC;QACrB,IAAI,SAAiB,CAAC;QACtB,IAAI,SAAsB,CAAC;QAC3B,IAAI,UAAuB,CAAC;QAC5B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,oDAAoD;YACpD,QAAQ,GAAG,CAAC,CAAC;YACb,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;YAClC,SAAS,GAAG,eAAe,CAAC;YAC5B,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,QAAQ,GAAG,eAAe,CAAC;YAC3B,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;YAC/B,SAAS,GAAG,CAAC,CAAC;YACd,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACnE,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAW,EAAE,KAAW,EAAE,UAAkB;IACpE,sEAAsE;IACtE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CACpB,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACvC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAC5D,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAC1C,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAChE,CAAC;QACF,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,qEAAqE;AACrE,6EAA6E;AAC7E,uEAAuE;AACvE,4EAA4E;AAC5E,0EAA0E;AAC1E,kCAAkC;AAClC,SAAS,YAAY,CACnB,QAAyB,EACzB,IAAU,EACV,YAAoB,EACpB,SAAiB;IAEjB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACvE,MAAM,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;QACzC,MAAM,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC/D,IAAI,IAAI,KAAK,KAAK;YAAE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;;YAC3C,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAU,EAAE,IAAU,EAAE,SAA6B;IACvF,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,SAAS,CAAC;QAClB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE;YAAE,CAAC,GAAG,EAAE,CAAC;QACnB,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE;YAAE,CAAC,GAAG,EAAE,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"main-axis.js","sourceRoot":"","sources":["../../src/algorithm/main-axis.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,21 @@
17
17
  */
18
18
  import type { Node } from '../node.js';
19
19
  export declare function roundLayout(root: Node): void;
20
+ /**
21
+ * Round the layout of a subtree that sits at a known absolute position.
22
+ *
23
+ * Used by the Phase 3 relayout-boundary path: when a boundary node is
24
+ * re-laid out under a cache-hit root, its children's positions are in
25
+ * floating-point space. We round them in isolation using the boundary
26
+ * node's already-rounded absolute position as the origin.
27
+ *
28
+ * The boundary node's own `width`/`height` are explicit integers (that is
29
+ * the boundary invariant) and its `left`/`top` were restored from the
30
+ * parent's rounded cache, so they are already integers. We therefore do
31
+ * NOT re-round the boundary node itself — only its children. The parent
32
+ * absolute corner is `(parentAbsX + node.left, parentAbsY + node.top)`.
33
+ *
34
+ * @internal
35
+ */
36
+ export declare function roundLayoutSubtree(node: Node, parentAbsX: number, parentAbsY: number): void;
20
37
  //# sourceMappingURL=round.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../src/algorithm/round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI5C"}
1
+ {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../src/algorithm/round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI5C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAqB3F"}