openhorse 0.2.21 → 0.2.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/cli.js +25 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/index.d.ts.map +1 -1
  4. package/dist/commands/index.js +189 -49
  5. package/dist/commands/index.js.map +1 -1
  6. package/dist/commands/parser.d.ts.map +1 -1
  7. package/dist/commands/parser.js +8 -3
  8. package/dist/commands/parser.js.map +1 -1
  9. package/dist/commands/types.d.ts +2 -0
  10. package/dist/commands/types.d.ts.map +1 -1
  11. package/dist/commands/types.js.map +1 -1
  12. package/dist/core/cost-tracker.d.ts +45 -5
  13. package/dist/core/cost-tracker.d.ts.map +1 -1
  14. package/dist/core/cost-tracker.js +78 -13
  15. package/dist/core/cost-tracker.js.map +1 -1
  16. package/dist/framework/index.d.ts +1 -1
  17. package/dist/framework/index.d.ts.map +1 -1
  18. package/dist/framework/index.js.map +1 -1
  19. package/dist/framework/query.d.ts +25 -0
  20. package/dist/framework/query.d.ts.map +1 -1
  21. package/dist/framework/query.js +196 -49
  22. package/dist/framework/query.js.map +1 -1
  23. package/dist/framework/store.d.ts +6 -1
  24. package/dist/framework/store.d.ts.map +1 -1
  25. package/dist/framework/store.js +10 -1
  26. package/dist/framework/store.js.map +1 -1
  27. package/dist/harness/ledger.d.ts.map +1 -1
  28. package/dist/harness/ledger.js +6 -2
  29. package/dist/harness/ledger.js.map +1 -1
  30. package/dist/index.d.ts +2 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
  33. package/dist/ink-ui/components/StatusLine.js +0 -2
  34. package/dist/ink-ui/components/StatusLine.js.map +1 -1
  35. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  36. package/dist/ink-ui/screens/ReplScreen.js +12 -5
  37. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  38. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  39. package/dist/runtime/agent-runtime-controller.js +11 -1
  40. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  41. package/dist/runtime/chat-controller.d.ts.map +1 -1
  42. package/dist/runtime/chat-controller.js +229 -86
  43. package/dist/runtime/chat-controller.js.map +1 -1
  44. package/dist/runtime/rich-text/ansi-parser.d.ts +1 -1
  45. package/dist/runtime/rich-text/ansi-parser.d.ts.map +1 -1
  46. package/dist/runtime/rich-text/ansi-parser.js +93 -55
  47. package/dist/runtime/rich-text/ansi-parser.js.map +1 -1
  48. package/dist/runtime/rich-text/layout.d.ts +2 -11
  49. package/dist/runtime/rich-text/layout.d.ts.map +1 -1
  50. package/dist/runtime/rich-text/layout.js +280 -245
  51. package/dist/runtime/rich-text/layout.js.map +1 -1
  52. package/dist/runtime/rich-text/markdown-parser.js +31 -24
  53. package/dist/runtime/rich-text/markdown-parser.js.map +1 -1
  54. package/dist/runtime/rich-text/types.d.ts +1 -1
  55. package/dist/runtime/rich-text/types.d.ts.map +1 -1
  56. package/dist/runtime/subagents/production.d.ts.map +1 -1
  57. package/dist/runtime/subagents/production.js +28 -3
  58. package/dist/runtime/subagents/production.js.map +1 -1
  59. package/dist/runtime/subagents/result-parser.d.ts.map +1 -1
  60. package/dist/runtime/subagents/result-parser.js +54 -40
  61. package/dist/runtime/subagents/result-parser.js.map +1 -1
  62. package/dist/runtime/subagents/types.d.ts +2 -0
  63. package/dist/runtime/subagents/types.d.ts.map +1 -1
  64. package/dist/runtime/subagents/types.js +5 -1
  65. package/dist/runtime/subagents/types.js.map +1 -1
  66. package/dist/runtime/ui-events.d.ts +13 -0
  67. package/dist/runtime/ui-events.d.ts.map +1 -1
  68. package/dist/runtime/ui-events.js.map +1 -1
  69. package/dist/runtime/ui-view-model.d.ts +9 -0
  70. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  71. package/dist/runtime/ui-view-model.js +59 -37
  72. package/dist/runtime/ui-view-model.js.map +1 -1
  73. package/dist/services/compact/auto-compact.d.ts +15 -2
  74. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  75. package/dist/services/compact/auto-compact.js +56 -24
  76. package/dist/services/compact/auto-compact.js.map +1 -1
  77. package/dist/services/compact/compact.d.ts +2 -0
  78. package/dist/services/compact/compact.d.ts.map +1 -1
  79. package/dist/services/compact/compact.js +22 -5
  80. package/dist/services/compact/compact.js.map +1 -1
  81. package/dist/services/compact/coordinator.d.ts +26 -0
  82. package/dist/services/compact/coordinator.d.ts.map +1 -0
  83. package/dist/services/compact/coordinator.js +44 -0
  84. package/dist/services/compact/coordinator.js.map +1 -0
  85. package/dist/services/compact/index.d.ts +1 -0
  86. package/dist/services/compact/index.d.ts.map +1 -1
  87. package/dist/services/compact/index.js +3 -1
  88. package/dist/services/compact/index.js.map +1 -1
  89. package/dist/services/compact/summary-generator.d.ts +6 -2
  90. package/dist/services/compact/summary-generator.d.ts.map +1 -1
  91. package/dist/services/compact/summary-generator.js +73 -31
  92. package/dist/services/compact/summary-generator.js.map +1 -1
  93. package/dist/services/config-dir.d.ts +11 -1
  94. package/dist/services/config-dir.d.ts.map +1 -1
  95. package/dist/services/config-dir.js +19 -2
  96. package/dist/services/config-dir.js.map +1 -1
  97. package/dist/services/config.d.ts +4 -2
  98. package/dist/services/config.d.ts.map +1 -1
  99. package/dist/services/config.js +40 -0
  100. package/dist/services/config.js.map +1 -1
  101. package/dist/services/doctor.d.ts +2 -0
  102. package/dist/services/doctor.d.ts.map +1 -1
  103. package/dist/services/doctor.js +8 -1
  104. package/dist/services/doctor.js.map +1 -1
  105. package/dist/services/global-config.d.ts +10 -0
  106. package/dist/services/global-config.d.ts.map +1 -1
  107. package/dist/services/global-config.js.map +1 -1
  108. package/dist/services/llm.d.ts +21 -4
  109. package/dist/services/llm.d.ts.map +1 -1
  110. package/dist/services/llm.js +66 -8
  111. package/dist/services/llm.js.map +1 -1
  112. package/dist/services/model-context.d.ts +36 -0
  113. package/dist/services/model-context.d.ts.map +1 -1
  114. package/dist/services/model-context.js +238 -32
  115. package/dist/services/model-context.js.map +1 -1
  116. package/dist/services/redaction.js +1 -1
  117. package/dist/services/redaction.js.map +1 -1
  118. package/dist/services/session-storage.d.ts +39 -1
  119. package/dist/services/session-storage.d.ts.map +1 -1
  120. package/dist/services/session-storage.js +121 -27
  121. package/dist/services/session-storage.js.map +1 -1
  122. package/dist/services/usage-state.d.ts +55 -5
  123. package/dist/services/usage-state.d.ts.map +1 -1
  124. package/dist/services/usage-state.js +185 -59
  125. package/dist/services/usage-state.js.map +1 -1
  126. package/dist/services/verification-profile.d.ts.map +1 -1
  127. package/dist/services/verification-profile.js +3 -2
  128. package/dist/services/verification-profile.js.map +1 -1
  129. package/dist/services/workspace-diff.d.ts.map +1 -1
  130. package/dist/services/workspace-diff.js +34 -3
  131. package/dist/services/workspace-diff.js.map +1 -1
  132. package/dist/services/yaml-config.js +1 -1
  133. package/dist/skills/runtime.d.ts +9 -5
  134. package/dist/skills/runtime.d.ts.map +1 -1
  135. package/dist/skills/runtime.js +157 -12
  136. package/dist/skills/runtime.js.map +1 -1
  137. package/dist/terminal-ui/launch.d.ts +2 -0
  138. package/dist/terminal-ui/launch.d.ts.map +1 -1
  139. package/dist/terminal-ui/launch.js +65 -21
  140. package/dist/terminal-ui/launch.js.map +1 -1
  141. package/dist/terminal-ui/raw-editor.d.ts +9 -0
  142. package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
  143. package/dist/terminal-ui/raw-editor.js +207 -30
  144. package/dist/terminal-ui/raw-editor.js.map +1 -1
  145. package/dist/tools/bash_security.d.ts.map +1 -1
  146. package/dist/tools/bash_security.js +14 -5
  147. package/dist/tools/bash_security.js.map +1 -1
  148. package/dist/tools/index.d.ts.map +1 -1
  149. package/dist/tools/index.js +48 -20
  150. package/dist/tools/index.js.map +1 -1
  151. package/dist/tools/plan.d.ts.map +1 -1
  152. package/dist/tools/plan.js +7 -0
  153. package/dist/tools/plan.js.map +1 -1
  154. package/dist/tools/web.d.ts +10 -0
  155. package/dist/tools/web.d.ts.map +1 -1
  156. package/dist/tools/web.js +81 -1
  157. package/dist/tools/web.js.map +1 -1
  158. package/dist/tui-core/input-parser.d.ts +1 -1
  159. package/dist/tui-core/input-parser.d.ts.map +1 -1
  160. package/dist/tui-core/input-parser.js +20 -1
  161. package/dist/tui-core/input-parser.js.map +1 -1
  162. package/dist/tui-core/style.d.ts +16 -0
  163. package/dist/tui-core/style.d.ts.map +1 -1
  164. package/dist/tui-core/style.js +22 -1
  165. package/dist/tui-core/style.js.map +1 -1
  166. package/dist/tui-ui/inline-surface.d.ts +62 -11
  167. package/dist/tui-ui/inline-surface.d.ts.map +1 -1
  168. package/dist/tui-ui/inline-surface.js +343 -92
  169. package/dist/tui-ui/inline-surface.js.map +1 -1
  170. package/dist/tui-ui/launch.d.ts +1 -0
  171. package/dist/tui-ui/launch.d.ts.map +1 -1
  172. package/dist/tui-ui/launch.js +185 -41
  173. package/dist/tui-ui/launch.js.map +1 -1
  174. package/dist/tui-ui/layout.d.ts +51 -2
  175. package/dist/tui-ui/layout.d.ts.map +1 -1
  176. package/dist/tui-ui/layout.js +226 -76
  177. package/dist/tui-ui/layout.js.map +1 -1
  178. package/dist/tui-ui/runner.d.ts +69 -8
  179. package/dist/tui-ui/runner.d.ts.map +1 -1
  180. package/dist/tui-ui/runner.js +304 -41
  181. package/dist/tui-ui/runner.js.map +1 -1
  182. package/dist/tui-ui/state.d.ts +5 -4
  183. package/dist/tui-ui/state.d.ts.map +1 -1
  184. package/dist/tui-ui/state.js +65 -19
  185. package/dist/tui-ui/state.js.map +1 -1
  186. package/dist/tui-ui/theme.d.ts +13 -0
  187. package/dist/tui-ui/theme.d.ts.map +1 -0
  188. package/dist/tui-ui/theme.js +20 -0
  189. package/dist/tui-ui/theme.js.map +1 -0
  190. package/dist/tui-ui/transcript-cache.d.ts +5 -3
  191. package/dist/tui-ui/transcript-cache.d.ts.map +1 -1
  192. package/dist/tui-ui/transcript-cache.js +16 -9
  193. package/dist/tui-ui/transcript-cache.js.map +1 -1
  194. package/dist/tui-ui/transcript-layout.d.ts +21 -0
  195. package/dist/tui-ui/transcript-layout.d.ts.map +1 -0
  196. package/dist/tui-ui/transcript-layout.js +398 -0
  197. package/dist/tui-ui/transcript-layout.js.map +1 -0
  198. package/dist/ui/status-bar.d.ts +1 -1
  199. package/dist/ui/status-bar.d.ts.map +1 -1
  200. package/dist/ui/status-bar.js +2 -15
  201. package/dist/ui/status-bar.js.map +1 -1
  202. package/dist/ui-v2/components/shell.d.ts.map +1 -1
  203. package/dist/ui-v2/components/shell.js +0 -8
  204. package/dist/ui-v2/components/shell.js.map +1 -1
  205. package/package.json +1 -1
@@ -38,6 +38,8 @@ const SHOW_CURSOR = '\x1b[?25h';
38
38
  const HIDE_CURSOR = '\x1b[?25l';
39
39
  const DISABLE_AUTOWRAP = '\x1b[?7l';
40
40
  const ENABLE_AUTOWRAP = '\x1b[?7h';
41
+ /** Fraction of the terminal height occupied by the bottom live band. */
42
+ const LIVE_BAND_RATIO = 0.75;
41
43
  function cursorUp(n) {
42
44
  return n > 0 ? `\x1b[${n}A` : '';
43
45
  }
@@ -49,10 +51,17 @@ class InlineTerminalSurface {
49
51
  this.phase = 'idle';
50
52
  this.width = 0;
51
53
  this.height = 0;
54
+ /** Height of the bottom live band (status + prompt + live tail). */
55
+ this.liveBandRows = 0;
52
56
  this.liveRegionCapacity = 0;
53
57
  this.cursorRow = 0;
54
58
  this.cursorColumn = 0;
55
59
  this.previousFrame = null;
60
+ /** Suppress stale-width live paints between SIGWINCH and the resize repaint. */
61
+ this.resizePending = false;
62
+ this.pendingResizeWidth = null;
63
+ this.resizeGeneration = 0;
64
+ this.resizeWaiters = [];
56
65
  /** Serialized FIFO queue of pending operations. */
57
66
  this.queue = [];
58
67
  this.processing = false;
@@ -60,17 +69,50 @@ class InlineTerminalSurface {
60
69
  this.now = options.now ?? (() => Date.now());
61
70
  this.suppressColor = (0, style_1.shouldSuppressColor)();
62
71
  }
72
+ /** Compute the live band height (~75% of screen, min 8, max height-1). */
73
+ static computeBandRows(height) {
74
+ const h = Math.max(1, Math.floor(height));
75
+ const minBand = 8;
76
+ const maxBand = Math.max(minBand, h - 1); // leave >=1 history row when possible
77
+ const desired = Math.round(h * LIVE_BAND_RATIO);
78
+ return Math.max(minBand, Math.min(maxBand, desired));
79
+ }
80
+ /** Live band height for the runner to size its live frame. */
81
+ getLiveBandRows() {
82
+ return this.liveBandRows;
83
+ }
84
+ /** History area rows above the band (recently scrolled committed lines). */
85
+ get historyAreaRows() {
86
+ return Math.max(0, this.height - this.liveBandRows);
87
+ }
63
88
  getState() {
64
89
  return {
65
90
  phase: this.phase,
66
91
  width: this.width,
67
92
  height: this.height,
93
+ liveBandRows: this.liveBandRows,
68
94
  liveRegionCapacity: this.liveRegionCapacity,
69
95
  cursorRow: this.cursorRow,
70
96
  cursorColumn: this.cursorColumn,
71
97
  previousFrame: this.previousFrame,
72
98
  };
73
99
  }
100
+ /** Mark the terminal as resizing before the debounced layout pass runs. */
101
+ beginResize(width = this.width) {
102
+ this.resizeGeneration += 1;
103
+ this.resizePending = true;
104
+ this.pendingResizeWidth = Math.max(1, Math.floor(width));
105
+ return this.resizeGeneration;
106
+ }
107
+ /**
108
+ * Await completion of all queued operations.
109
+ * Because the queue is strictly FIFO, enqueueing a no-op and awaiting it
110
+ * guarantees every operation enqueued before this call has finished. Used by
111
+ * tests to deterministically observe the terminal after a burst of renders.
112
+ */
113
+ whenIdle() {
114
+ return this.enqueue(async () => { });
115
+ }
74
116
  /** Safe content width: never write the last column (avoid pending-wrap). */
75
117
  get safeContentWidth() {
76
118
  return Math.max(1, this.width - 1);
@@ -112,121 +154,228 @@ class InlineTerminalSurface {
112
154
  return;
113
155
  this.width = Math.max(1, Math.floor(width));
114
156
  this.height = Math.max(1, Math.floor(height));
157
+ this.liveBandRows = InlineTerminalSurface.computeBandRows(this.height);
115
158
  this.phase = 'mounted';
116
159
  this.liveRegionCapacity = 0;
117
160
  this.cursorRow = 0;
118
161
  this.cursorColumn = 0;
119
- this.writeRaw(`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}`);
162
+ await this.writeRaw(`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}`);
120
163
  });
121
164
  }
122
165
  /**
123
- * Commit finalized transcript entries to scrollback (append-only).
124
- * Protocol: clear live region -> commit rows -> rebuild live frame.
166
+ * Commit finalized transcript entries to native scrollback.
167
+ *
168
+ * Protocol:
169
+ * 1. Erase only the live rows owned by this surface and return to their top.
170
+ * 2. Release that block and write finalized rows as ordinary line-oriented
171
+ * shell output. The terminal decides when those lines enter scrollback.
172
+ * 3. Allocate a fresh live block from the resulting cursor and repaint the
173
+ * latest live frame below the committed output.
125
174
  */
126
175
  async commit(batch, getLatestLiveFrame) {
127
176
  let output = '';
128
- await this.enqueue(async () => {
129
- const chunks = [];
130
- // 1. Move to live top and clear live region.
131
- chunks.push(this.clearLiveRegion());
132
- // 2. Commit each entry's rows with SGR0 after each row.
133
- for (const entry of batch.entries) {
134
- for (const row of entry.rows) {
135
- for (const span of row) {
136
- if (span.style) {
137
- const sgr = (0, style_1.encodeStyleToSgr)(span.style, this.suppressColor);
138
- if (sgr)
139
- chunks.push(sgr);
177
+ for (;;) {
178
+ let retryAfterResize = false;
179
+ await this.enqueue(async () => {
180
+ if (this.resizePending) {
181
+ retryAfterResize = true;
182
+ return;
183
+ }
184
+ // Committed output behaves like ordinary shell output. Keeping
185
+ // autowrap enabled preserves an already-queued old-width batch if the
186
+ // terminal changes size immediately before this operation executes.
187
+ const chunks = [this.clearOwnedLiveRegion(), ENABLE_AUTOWRAP];
188
+ this.releaseLiveRegion();
189
+ for (const entry of batch.entries) {
190
+ for (const row of entry.rows) {
191
+ chunks.push(CR);
192
+ for (const [index, span] of row.entries()) {
193
+ if (index > 0)
194
+ chunks.push(style_1.SGR_RESET);
195
+ if (span.style) {
196
+ const sgr = (0, style_1.encodeStyleToSgr)(span.style, this.suppressColor);
197
+ if (sgr)
198
+ chunks.push(sgr);
199
+ }
200
+ chunks.push(span.text);
140
201
  }
141
- chunks.push(span.text);
202
+ chunks.push(style_1.SGR_RESET);
203
+ chunks.push('\n');
142
204
  }
143
- chunks.push(style_1.SGR_RESET);
144
- chunks.push('\n'); // hard line boundary, never rely on pending wrap
145
205
  }
146
- }
147
- // 3. Reset live region capacity and rebuild live frame.
148
- this.liveRegionCapacity = 0;
149
- this.previousFrame = null;
150
- const liveFrame = getLatestLiveFrame();
151
- if (liveFrame) {
152
- chunks.push(this.renderLiveInternal(liveFrame));
153
- }
154
- output = chunks.join('');
155
- this.writeRaw(output);
156
- });
206
+ const liveFrame = getLatestLiveFrame();
207
+ if (liveFrame) {
208
+ chunks.push(this.renderLiveInternal(liveFrame));
209
+ }
210
+ output = chunks.join('');
211
+ await this.writeRaw(output);
212
+ });
213
+ if (!retryAfterResize)
214
+ break;
215
+ await this.waitForResizeCompletion();
216
+ }
157
217
  return { output, committedEntries: batch.entries.length };
158
218
  }
159
219
  /** Render the live region frame (relative addressing, changed-row diff). */
160
220
  async renderLive(frame) {
161
221
  let output = '';
222
+ const requestedDuringResize = this.resizePending;
162
223
  await this.enqueue(async () => {
224
+ if (requestedDuringResize || this.resizePending)
225
+ return;
163
226
  output = this.renderLiveInternal(frame);
164
- this.writeRaw(output);
227
+ await this.writeRaw(output);
165
228
  });
166
229
  return output;
167
230
  }
168
231
  renderLiveInternal(frame) {
169
232
  const chunks = [];
170
- const requiredRows = Math.min(frame.height, Math.max(1, this.height - 1));
171
- // Ensure capacity for the live region.
233
+ const requiredRows = Math.min(frame.height, Math.max(1, this.liveBandRows));
234
+ // Allocate or resize the cursor-owned live block from the current cursor.
172
235
  chunks.push(this.ensureCapacity(requiredRows));
173
- // Move to live top.
174
- chunks.push(cursorUp(this.cursorRow));
175
- this.cursorRow = 0;
176
- // Clear all capacity rows, then write frame rows.
177
- for (let i = 0; i < this.liveRegionCapacity; i++) {
178
- chunks.push(CR, EL2);
179
- if (i < this.liveRegionCapacity - 1)
180
- chunks.push(cursorDown(1));
181
- }
182
- // Back to top.
183
- chunks.push(cursorUp(this.liveRegionCapacity - 1));
184
- // Write frame rows.
185
- for (let r = 0; r < Math.min(frame.height, this.liveRegionCapacity); r++) {
186
- const spans = (0, frame_1.renderStyledFrameRow)(frame.rows[r] ?? []);
187
- let emittedSgr = false;
188
- for (const span of spans) {
189
- const sgr = (0, style_1.encodeStyleToSgr)(span.style, this.suppressColor);
190
- if (sgr) {
191
- chunks.push(sgr);
192
- emittedSgr = true;
236
+ // Disable autowrap while painting band rows: a row that fills the last
237
+ // column (e.g. the full-width prompt border ┌─...─┐) would otherwise leave
238
+ // the terminal in a pending-wrap state that corrupts the next row's
239
+ // repaint. Re-enabled at the end of the batch.
240
+ chunks.push(DISABLE_AUTOWRAP);
241
+ const capacity = this.liveRegionCapacity;
242
+ const prev = this.previousFrame;
243
+ let row = this.cursorRow;
244
+ // Only diff when the previous frame shares the same geometry (height and
245
+ // capacity). Any geometry change (resize, first frame) triggers a full
246
+ // repaint so we never leave stale rows behind.
247
+ const canDiff = prev !== null && prev.height === capacity && frame.height === capacity;
248
+ if (!canDiff) {
249
+ // Full repaint: move to band top, clear every band row, then write every
250
+ // frame row. Track the real cursor row in `row` so the final positioning
251
+ // block below is exact.
252
+ chunks.push(cursorUp(row));
253
+ for (let i = 0; i < capacity; i++) {
254
+ chunks.push(CR, EL2);
255
+ if (i < capacity - 1) {
256
+ chunks.push(cursorDown(1));
257
+ row += 1;
193
258
  }
194
- chunks.push(span.text);
195
259
  }
196
- if (emittedSgr)
197
- chunks.push(style_1.SGR_RESET);
198
- if (r < Math.min(frame.height, this.liveRegionCapacity) - 1) {
199
- chunks.push(CR, cursorDown(1));
260
+ chunks.push(cursorUp(capacity - 1));
261
+ row = 0;
262
+ const frameRows = Math.min(frame.height, capacity);
263
+ for (let r = 0; r < frameRows; r++) {
264
+ chunks.push(...this.renderRowChunks(frame.rows[r] ?? []));
265
+ if (r < frameRows - 1) {
266
+ chunks.push(CR, cursorDown(1));
267
+ row += 1;
268
+ }
269
+ }
270
+ }
271
+ else {
272
+ // Changed-row diff: only repaint rows whose styled content differs from
273
+ // the previous frame. Navigation moves the real cursor to the changed
274
+ // row, clears it, and redraws — avoiding a full-band flicker on every
275
+ // tick (e.g. while a tool is running and only the status line changes).
276
+ for (let r = 0; r < capacity; r++) {
277
+ const newRow = r < frame.height ? frame.rows[r] : [];
278
+ const oldRow = r < prev.height ? prev.rows[r] : [];
279
+ if (this.renderRowString(newRow) === this.renderRowString(oldRow))
280
+ continue;
281
+ if (r < row) {
282
+ chunks.push(cursorUp(row - r));
283
+ row = r;
284
+ }
285
+ else if (r > row) {
286
+ chunks.push(cursorDown(r - row));
287
+ row = r;
288
+ }
289
+ chunks.push(CR, EL2);
290
+ chunks.push(...this.renderRowChunks(newRow));
200
291
  }
201
292
  }
202
- // Position cursor at frame cursor.
293
+ // Position cursor at frame cursor using the precisely-tracked `row`.
203
294
  const targetRow = Math.min(frame.cursor.row, this.liveRegionCapacity - 1);
204
295
  const targetCol = Math.min(frame.cursor.column, Math.max(0, this.width - 1));
205
- chunks.push(cursorUp(this.cursorRow));
206
- chunks.push(cursorDown(targetRow));
296
+ if (targetRow < row) {
297
+ chunks.push(cursorUp(row - targetRow));
298
+ row = targetRow;
299
+ }
300
+ else if (targetRow > row) {
301
+ chunks.push(cursorDown(targetRow - row));
302
+ row = targetRow;
303
+ }
207
304
  chunks.push(CR);
208
305
  if (targetCol > 0)
209
306
  chunks.push(`\x1b[${targetCol}C`);
210
- this.cursorRow = targetRow;
307
+ this.cursorRow = row;
211
308
  this.cursorColumn = targetCol;
212
309
  chunks.push(frame.cursor.visible ? SHOW_CURSOR : HIDE_CURSOR);
213
310
  chunks.push(ENABLE_AUTOWRAP);
214
311
  this.previousFrame = frame;
215
312
  return chunks.join('');
216
313
  }
217
- /** Ensure the live region has at least requiredRows capacity (grows only). */
314
+ /** Render a single styled frame row to ANSI chunks (text + SGR + reset). */
315
+ renderRowChunks(row) {
316
+ const chunks = [];
317
+ const spans = (0, frame_1.renderStyledFrameRow)(this.trimDefaultTrailingCells(row));
318
+ let emittedSgr = false;
319
+ for (const [index, span] of spans.entries()) {
320
+ if (index > 0)
321
+ chunks.push(style_1.SGR_RESET);
322
+ const sgr = (0, style_1.encodeStyleToSgr)(span.style, this.suppressColor);
323
+ if (sgr) {
324
+ chunks.push(sgr);
325
+ emittedSgr = true;
326
+ }
327
+ chunks.push(span.text);
328
+ }
329
+ if (emittedSgr || spans.length > 1)
330
+ chunks.push(style_1.SGR_RESET);
331
+ return chunks;
332
+ }
333
+ /** Stable string form of a styled row, used for changed-row comparison. */
334
+ renderRowString(row) {
335
+ return this.renderRowChunks(row).join('');
336
+ }
337
+ trimDefaultTrailingCells(row) {
338
+ let end = row.length;
339
+ while (end > 0) {
340
+ const cell = row[end - 1];
341
+ if (cell.char !== ' ' || (0, style_1.styleKey)(cell.style) !== '')
342
+ break;
343
+ end -= 1;
344
+ }
345
+ return row.slice(0, end);
346
+ }
347
+ renderedRowWidth(row) {
348
+ return this.trimDefaultTrailingCells(row)
349
+ .reduce((total, cell) => total + cell.width, 0);
350
+ }
351
+ /**
352
+ * Ensure the surface owns exactly `requiredRows` rows starting at the current
353
+ * cursor. Allocation uses ordinary newlines, so existing shell output is
354
+ * preserved and may naturally move into terminal scrollback.
355
+ */
218
356
  ensureCapacity(requiredRows) {
219
- const target = Math.min(requiredRows, Math.max(1, this.height - 1));
357
+ const target = Math.min(requiredRows, Math.max(1, this.liveBandRows));
220
358
  const chunks = [];
221
- while (this.liveRegionCapacity < target) {
222
- chunks.push('\n'); // hard line boundary
223
- this.liveRegionCapacity += 1;
224
- this.cursorRow = this.liveRegionCapacity;
359
+ if (this.liveRegionCapacity !== target) {
360
+ if (this.liveRegionCapacity > 0) {
361
+ chunks.push(this.clearLiveRegion());
362
+ this.releaseLiveRegion();
363
+ }
364
+ chunks.push(CR);
365
+ for (let i = 1; i < target; i++)
366
+ chunks.push('\n');
367
+ chunks.push(cursorUp(target - 1), CR);
368
+ this.liveRegionCapacity = target;
369
+ this.cursorRow = 0;
370
+ this.cursorColumn = 0;
371
+ this.previousFrame = null;
225
372
  }
226
373
  return chunks.join('');
227
374
  }
228
- /** Clear the live region rows (relative, no absolute addressing). */
375
+ /** Clear the live band rows (relative, no absolute addressing). */
229
376
  clearLiveRegion() {
377
+ if (this.liveRegionCapacity === 0)
378
+ return '';
230
379
  const chunks = [];
231
380
  chunks.push(cursorUp(this.cursorRow));
232
381
  for (let i = 0; i < this.liveRegionCapacity; i++) {
@@ -236,21 +385,83 @@ class InlineTerminalSurface {
236
385
  }
237
386
  chunks.push(cursorUp(this.liveRegionCapacity - 1));
238
387
  this.cursorRow = 0;
388
+ this.cursorColumn = 0;
389
+ return chunks.join('');
390
+ }
391
+ /**
392
+ * Clear the old live block after the terminal has already adopted a new
393
+ * width. A previously full row can occupy multiple physical rows after
394
+ * reflow, so tracked logical rows are not sufficient during resize.
395
+ */
396
+ clearReflowedLiveRegion(nextWidth) {
397
+ if (this.liveRegionCapacity === 0)
398
+ return '';
399
+ if (!this.previousFrame)
400
+ return this.clearLiveRegion();
401
+ const physicalWidth = Math.max(1, Math.floor(nextWidth));
402
+ const frame = this.previousFrame;
403
+ const rowPhysicalHeights = Array.from({ length: this.liveRegionCapacity }, (_, row) => {
404
+ const cells = frame.rows[row] ?? [];
405
+ const writtenWidth = this.renderedRowWidth(cells);
406
+ return Math.max(1, Math.ceil(Math.max(1, writtenWidth) / physicalWidth));
407
+ });
408
+ const logicalCursorRow = Math.min(this.cursorRow, rowPhysicalHeights.length - 1);
409
+ const cursorPhysicalRow = rowPhysicalHeights
410
+ .slice(0, logicalCursorRow)
411
+ .reduce((total, rows) => total + rows, 0)
412
+ + Math.floor(Math.max(0, this.cursorColumn) / physicalWidth);
413
+ const physicalRows = rowPhysicalHeights.reduce((total, rows) => total + rows, 0);
414
+ const chunks = [cursorUp(cursorPhysicalRow)];
415
+ for (let row = 0; row < physicalRows; row += 1) {
416
+ chunks.push(CR, EL2);
417
+ if (row < physicalRows - 1)
418
+ chunks.push(cursorDown(1));
419
+ }
420
+ chunks.push(cursorUp(physicalRows - 1));
421
+ this.cursorRow = 0;
422
+ this.cursorColumn = 0;
239
423
  return chunks.join('');
240
424
  }
241
- /** Resize: only handle live region; committed history goes to terminal reflow. */
242
- async resize(width, height, getLatestLiveFrame) {
425
+ clearOwnedLiveRegion() {
426
+ return this.resizePending && this.pendingResizeWidth !== null
427
+ ? this.clearReflowedLiveRegion(this.pendingResizeWidth)
428
+ : this.clearLiveRegion();
429
+ }
430
+ waitForResizeCompletion() {
431
+ if (!this.resizePending)
432
+ return Promise.resolve();
433
+ return new Promise(resolve => this.resizeWaiters.push(resolve));
434
+ }
435
+ completeResize() {
436
+ this.resizePending = false;
437
+ this.pendingResizeWidth = null;
438
+ const waiters = this.resizeWaiters.splice(0);
439
+ for (const resolve of waiters)
440
+ resolve();
441
+ }
442
+ releaseLiveRegion() {
443
+ this.liveRegionCapacity = 0;
444
+ this.cursorRow = 0;
445
+ this.cursorColumn = 0;
446
+ this.previousFrame = null;
447
+ }
448
+ /** Resize: erase only the owned block, then rebuild from the current cursor. */
449
+ async resize(width, height, getLatestLiveFrame, generation = this.resizePending ? this.resizeGeneration : this.beginResize(width)) {
243
450
  await this.enqueue(async () => {
451
+ if (generation !== this.resizeGeneration)
452
+ return;
453
+ const chunks = [this.clearReflowedLiveRegion(width)];
454
+ this.releaseLiveRegion();
244
455
  this.width = Math.max(1, Math.floor(width));
245
456
  this.height = Math.max(1, Math.floor(height));
246
- // Reset capacity and rebuild live frame.
247
- this.liveRegionCapacity = 0;
248
- this.cursorRow = 0;
249
- this.previousFrame = null;
457
+ this.liveBandRows = InlineTerminalSurface.computeBandRows(this.height);
250
458
  const liveFrame = getLatestLiveFrame();
251
459
  if (liveFrame) {
252
- this.writeRaw(this.renderLiveInternal(liveFrame));
460
+ chunks.push(this.renderLiveInternal(liveFrame));
253
461
  }
462
+ await this.writeRaw(chunks.join(''));
463
+ if (generation === this.resizeGeneration)
464
+ this.completeResize();
254
465
  });
255
466
  }
256
467
  /** Suspend for child process: clear live region, disable bracketed paste, show cursor. */
@@ -258,11 +469,10 @@ class InlineTerminalSurface {
258
469
  await this.enqueue(async () => {
259
470
  if (this.phase !== 'mounted')
260
471
  return;
261
- this.writeRaw(this.clearLiveRegion());
262
- this.writeRaw(`${style_1.SGR_RESET}${SHOW_CURSOR}${DISABLE_BRACKETED_PASTE}${ENABLE_AUTOWRAP}`);
472
+ await this.writeRaw(`${this.clearOwnedLiveRegion()}${style_1.SGR_RESET}${SHOW_CURSOR}${DISABLE_BRACKETED_PASTE}${ENABLE_AUTOWRAP}`);
263
473
  this.phase = 'suspended';
264
- this.liveRegionCapacity = 0;
265
- this.previousFrame = null;
474
+ this.releaseLiveRegion();
475
+ this.completeResize();
266
476
  });
267
477
  }
268
478
  /** Restore after child process: re-enable bracketed paste, rebuild live frame. */
@@ -271,11 +481,12 @@ class InlineTerminalSurface {
271
481
  if (this.phase !== 'suspended')
272
482
  return;
273
483
  this.phase = 'mounted';
274
- this.writeRaw(`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}${DISABLE_AUTOWRAP}`);
484
+ const chunks = [`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}`];
275
485
  const liveFrame = getLatestLiveFrame();
276
486
  if (liveFrame) {
277
- this.writeRaw(this.renderLiveInternal(liveFrame));
487
+ chunks.push(this.renderLiveInternal(liveFrame));
278
488
  }
489
+ await this.writeRaw(chunks.join(''));
279
490
  });
280
491
  }
281
492
  /** Unmount: clear live region, restore terminal state. Does NOT erase scrollback. */
@@ -283,13 +494,10 @@ class InlineTerminalSurface {
283
494
  await this.enqueue(async () => {
284
495
  if (this.phase === 'unmounted')
285
496
  return;
286
- this.writeRaw(this.clearLiveRegion());
287
- this.writeRaw(`${style_1.SGR_RESET}${SHOW_CURSOR}${DISABLE_BRACKETED_PASTE}${ENABLE_AUTOWRAP}`);
288
- // Final newline so shell prompt starts on a clean line.
289
- this.writeRaw('\n');
497
+ await this.writeRaw(`${this.clearOwnedLiveRegion()}${style_1.SGR_RESET}${SHOW_CURSOR}${DISABLE_BRACKETED_PASTE}${ENABLE_AUTOWRAP}\n`);
290
498
  this.phase = 'unmounted';
291
- this.liveRegionCapacity = 0;
292
- this.previousFrame = null;
499
+ this.releaseLiveRegion();
500
+ this.completeResize();
293
501
  });
294
502
  }
295
503
  /** Flush: wait for queue to drain. Yields to I/O between checks. */
@@ -298,23 +506,66 @@ class InlineTerminalSurface {
298
506
  await new Promise(resolve => setTimeout(resolve, 0));
299
507
  }
300
508
  }
301
- writeRaw(chunk) {
302
- if (this.phase === 'failed' || this.phase === 'unmounted')
509
+ async writeRaw(chunk) {
510
+ if (!chunk)
303
511
  return;
512
+ if (this.output.writable === false) {
513
+ throw new Error('terminal output is not writable');
514
+ }
515
+ let accepted;
304
516
  try {
305
- this.output.write(chunk);
517
+ accepted = this.output.write(chunk);
306
518
  }
307
- catch {
308
- this.phase = 'failed';
519
+ catch (error) {
520
+ throw error instanceof Error ? error : new Error(String(error));
309
521
  }
522
+ // Node streams return a boolean. A few compatible/test streams return
523
+ // void; only an explicit false means backpressure.
524
+ if (accepted !== false)
525
+ return;
526
+ await new Promise((resolve, reject) => {
527
+ let settled = false;
528
+ const cleanup = () => {
529
+ this.output.off('drain', onDrain);
530
+ this.output.off('error', onError);
531
+ this.output.off('close', onClose);
532
+ };
533
+ const settle = (error) => {
534
+ if (settled)
535
+ return;
536
+ settled = true;
537
+ cleanup();
538
+ if (error)
539
+ reject(error);
540
+ else
541
+ resolve();
542
+ };
543
+ const onDrain = () => {
544
+ if (this.output.writable === false) {
545
+ settle(new Error('terminal output closed before drain'));
546
+ return;
547
+ }
548
+ settle();
549
+ };
550
+ const onError = (error) => {
551
+ settle(error instanceof Error ? error : new Error(String(error ?? 'terminal output error')));
552
+ };
553
+ const onClose = () => settle(new Error('terminal output closed before drain'));
554
+ this.output.on('drain', onDrain);
555
+ this.output.on('error', onError);
556
+ this.output.on('close', onClose);
557
+ });
310
558
  }
311
559
  /** Reset for tests. */
312
560
  reset() {
313
561
  this.phase = 'idle';
562
+ this.liveBandRows = 0;
314
563
  this.liveRegionCapacity = 0;
315
564
  this.cursorRow = 0;
316
565
  this.cursorColumn = 0;
317
566
  this.previousFrame = null;
567
+ this.completeResize();
568
+ this.resizeGeneration = 0;
318
569
  this.queue = [];
319
570
  this.processing = false;
320
571
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inline-surface.js","sourceRoot":"","sources":["../../src/tui-ui/inline-surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inline-surface.js","sourceRoot":"","sources":["../../src/tui-ui/inline-surface.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAEH,6CAAwE;AACxE,6CAA+F;AAwD/F,MAAM,EAAE,GAAG,IAAI,CAAC;AAChB,MAAM,GAAG,GAAG,SAAS,CAAC;AACtB,MAAM,sBAAsB,GAAG,aAAa,CAAC;AAC7C,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAC9C,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AACpC,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC,wEAAwE;AACxE,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,CAAC;AACD,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,CAAC;AAED,MAAa,qBAAqB;IAsBhC,YAAY,OAA6B;QArBjC,UAAK,GAAiB,MAAM,CAAC;QAC7B,UAAK,GAAG,CAAC,CAAC;QACV,WAAM,GAAG,CAAC,CAAC;QACnB,oEAAoE;QAC5D,iBAAY,GAAG,CAAC,CAAC;QACjB,uBAAkB,GAAG,CAAC,CAAC;QACvB,cAAS,GAAG,CAAC,CAAC;QACd,iBAAY,GAAG,CAAC,CAAC;QACjB,kBAAa,GAAoB,IAAI,CAAC;QAC9C,gFAAgF;QACxE,kBAAa,GAAG,KAAK,CAAC;QACtB,uBAAkB,GAAkB,IAAI,CAAC;QACzC,qBAAgB,GAAG,CAAC,CAAC;QACrB,kBAAa,GAAsB,EAAE,CAAC;QAI9C,mDAAmD;QAC3C,UAAK,GAA+B,EAAE,CAAC;QACvC,eAAU,GAAG,KAAK,CAAC;QAGzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAA,2BAAmB,GAAE,CAAC;IAC7C,CAAC;IAED,0EAA0E;IAClE,MAAM,CAAC,eAAe,CAAC,MAAc;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAsC;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,8DAA8D;IAC9D,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,4EAA4E;IAC5E,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,QAAQ;QACN,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC5B,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,6DAA6D;IACrD,OAAO,CAAC,EAAuB;QACrC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBACH,MAAM,EAAE,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;YAC/B,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,yEAAyE;QACzE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,MAAc;QACvC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;gBAAE,OAAO;YAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,sBAAsB,GAAG,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,KAA4B,EAAE,kBAAqC;QAC9E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,SAAS,CAAC;YACR,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC5B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,gBAAgB,GAAG,IAAI,CAAC;oBACxB,OAAO;gBACT,CAAC;gBAED,+DAA+D;gBAC/D,sEAAsE;gBACtE,oEAAoE;gBACpE,MAAM,MAAM,GAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,eAAe,CAAC,CAAC;gBACxE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAEzB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAChB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;4BAC1C,IAAI,KAAK,GAAG,CAAC;gCAAE,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,CAAC;4BACtC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gCACf,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gCAC7D,IAAI,GAAG;oCAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC5B,CAAC;4BACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzB,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,CAAC;wBACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;gBACvC,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAClD,CAAC;gBACD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB;gBAAE,MAAM;YAC7B,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;QACjD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,qBAAqB,IAAI,IAAI,CAAC,aAAa;gBAAE,OAAO;YACxD,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,KAAe;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAE5E,0EAA0E;QAC1E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAE/C,uEAAuE;QACvE,2EAA2E;QAC3E,oEAAoE;QACpE,+CAA+C;QAC/C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAEzB,yEAAyE;QACzE,uEAAuE;QACvE,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC;QAEvF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,yEAAyE;YACzE,yEAAyE;YACzE,wBAAwB;YACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3B,GAAG,IAAI,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;YACpC,GAAG,GAAG,CAAC,CAAC;YACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/B,GAAG,IAAI,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAC5E,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC/B,GAAG,GAAG,CAAC,CAAC;gBACV,CAAC;qBAAM,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oBACjC,GAAG,GAAG,CAAC,CAAC;gBACV,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;YACvC,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;aAAM,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC;YACzC,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,SAAS,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,4EAA4E;IACpE,eAAe,CAAC,GAA6B;QACnD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,KAAK,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7D,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2EAA2E;IACnE,eAAe,CAAC,GAA6B;QACnD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEO,wBAAwB,CAC9B,GAA6B;QAE7B,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACrB,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAAE,MAAM;YAC5D,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEO,gBAAgB,CAAC,GAA6B;QACpD,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;aACtC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,YAAoB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACtE,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,mEAAmE;IAC3D,eAAe;QACrB,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACK,uBAAuB,CAAC,SAAiB;QAC/C,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CACnC,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,EACnC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QAC3E,CAAC,CACF,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,iBAAiB,GAAG,kBAAkB;aACzC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC;aAC1B,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC;cACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAEjF,MAAM,MAAM,GAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACrB,IAAI,GAAG,GAAG,YAAY,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI;YAC3D,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACvD,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IAC7B,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAClD,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,MAAM,OAAO,IAAI,OAAO;YAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,MAAM,CACV,KAAa,EACb,MAAc,EACd,kBAAqC,EACrC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAEjF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;gBAAE,OAAO;YACjD,MAAM,MAAM,GAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;gBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO;YACrC,MAAM,IAAI,CAAC,QAAQ,CACjB,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,iBAAS,GAAG,WAAW,GAAG,uBAAuB,GAAG,eAAe,EAAE,CACvG,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,OAAO,CAAC,kBAAqC;QACjD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;gBAAE,OAAO;YACvC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,MAAM,MAAM,GAAG,CAAC,GAAG,sBAAsB,GAAG,WAAW,EAAE,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;gBAAE,OAAO;YACvC,MAAM,IAAI,CAAC,QAAQ,CACjB,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,iBAAS,GAAG,WAAW,GAAG,uBAAuB,GAAG,eAAe,IAAI,CACzG,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,KAAa;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,QAAiB,CAAC;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,sEAAsE;QACtE,mDAAmD;QACnD,IAAI,QAAQ,KAAK,KAAK;YAAE,OAAO;QAE/B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAQ,EAAE;gBACrC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,IAAI,KAAK;oBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;oBACpB,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;oBACzD,OAAO;gBACT,CAAC;gBACD,MAAM,EAAE,CAAC;YACX,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,CAAC,KAAe,EAAQ,EAAE;gBACxC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC;YAC/F,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF;AAziBD,sDAyiBC;AAED,+EAA+E;AAC/E,8CAA8C;AAC9C,+EAA+E;AAE/E,MAAa,YAAY;IAAzB;QACE,WAAM,GAAa,EAAE,CAAC;QACtB,aAAQ,GAAG,IAAI,CAAC;QACR,mBAAc,GAAqC,EAAE,CAAC;IA+BhE,CAAC;IA7BC,KAAK,CAAC,KAA0B;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,KAAyB,EAAE,QAAmC;QAC/D,IAAI,KAAK,KAAK,OAAO;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAyB,EAAE,QAAmC;QAChE,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,wDAAwD;IACxD,iBAAiB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5F,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3F,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACrF,CAAC;CACF;AAlCD,oCAkCC"}