@angular/build 22.1.0-next.3 → 22.1.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/package.json +10 -9
  2. package/src/builders/application/chunk-optimizer.js +2 -2
  3. package/src/builders/application/chunk-optimizer.js.map +1 -1
  4. package/src/builders/application/execute-build.js +1 -3
  5. package/src/builders/application/execute-build.js.map +1 -1
  6. package/src/builders/application/execute-post-bundle.js +8 -0
  7. package/src/builders/application/execute-post-bundle.js.map +1 -1
  8. package/src/builders/application/inject-debug-ids.d.ts +20 -0
  9. package/src/builders/application/inject-debug-ids.js +45 -0
  10. package/src/builders/application/inject-debug-ids.js.map +1 -0
  11. package/src/builders/application/options.js +2 -7
  12. package/src/builders/application/options.js.map +1 -1
  13. package/src/builders/application/schema.d.ts +2 -8
  14. package/src/builders/application/schema.js.map +1 -1
  15. package/src/builders/dev-server/vite/hmr.js +7 -2
  16. package/src/builders/dev-server/vite/hmr.js.map +1 -1
  17. package/src/builders/unit-test/builder.js +0 -3
  18. package/src/builders/unit-test/builder.js.map +1 -1
  19. package/src/builders/unit-test/options.d.ts +2 -2
  20. package/src/builders/unit-test/options.js +15 -5
  21. package/src/builders/unit-test/options.js.map +1 -1
  22. package/src/builders/unit-test/runners/vitest/executor.js +28 -4
  23. package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
  24. package/src/builders/unit-test/runners/vitest/plugins.js +3 -1
  25. package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -1
  26. package/src/builders/unit-test/schema.d.ts +7 -7
  27. package/src/tools/angular/compilation/aot-compilation.js +11 -1
  28. package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
  29. package/src/tools/babel/plugins/oxc-transform.d.ts +28 -0
  30. package/src/tools/babel/plugins/oxc-transform.js +655 -0
  31. package/src/tools/babel/plugins/oxc-transform.js.map +1 -0
  32. package/src/tools/esbuild/bundler-context.d.ts +10 -0
  33. package/src/tools/esbuild/bundler-context.js +72 -0
  34. package/src/tools/esbuild/bundler-context.js.map +1 -1
  35. package/src/tools/esbuild/global-scripts.js +2 -35
  36. package/src/tools/esbuild/global-scripts.js.map +1 -1
  37. package/src/tools/esbuild/i18n-inliner-worker.js +66 -70
  38. package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
  39. package/src/tools/esbuild/javascript-transformer-worker.js +39 -28
  40. package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
  41. package/src/tools/esbuild/javascript-transformer.js +2 -1
  42. package/src/tools/esbuild/javascript-transformer.js.map +1 -1
  43. package/src/tools/sass/rebasing-importer.js +2 -5
  44. package/src/tools/sass/rebasing-importer.js.map +1 -1
  45. package/src/tools/vite/plugins/angular-memory-plugin.js +2 -1
  46. package/src/tools/vite/plugins/angular-memory-plugin.js.map +1 -1
  47. package/src/utils/debug-id.d.ts +39 -0
  48. package/src/utils/debug-id.js +96 -0
  49. package/src/utils/debug-id.js.map +1 -0
  50. package/src/utils/index-file/augment-index-html.js +8 -1
  51. package/src/utils/index-file/augment-index-html.js.map +1 -1
  52. package/src/utils/index.d.ts +1 -0
  53. package/src/utils/index.js +1 -0
  54. package/src/utils/index.js.map +1 -1
  55. package/src/utils/normalize-cache.js +1 -1
  56. package/src/utils/path.d.ts +9 -0
  57. package/src/utils/path.js +17 -0
  58. package/src/utils/path.js.map +1 -1
  59. package/src/utils/source-map.d.ts +24 -0
  60. package/src/utils/source-map.js +272 -0
  61. package/src/utils/source-map.js.map +1 -0
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.dev/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.removeSourceMappingURL = removeSourceMappingURL;
11
+ exports.loadInputSourceMap = loadInputSourceMap;
12
+ const node_fs_1 = require("node:fs");
13
+ const node_path_1 = require("node:path");
14
+ const node_url_1 = require("node:url");
15
+ /**
16
+ * Removes `//# sourceMappingURL=` comments safely from the given JavaScript code,
17
+ * ignoring any occurrences that are inside string literals, template literals, or block comments.
18
+ *
19
+ * It uses a lightweight state-machine parser to accurately handle nested template literals.
20
+ *
21
+ * @param code The JavaScript source code.
22
+ * @returns The code with top-level sourcemap comments removed.
23
+ */
24
+ function removeSourceMappingURL(code) {
25
+ const result = [];
26
+ let i = 0;
27
+ const len = code.length;
28
+ // Stack to track template literal state and curly brace depth for nested interpolations.
29
+ const stack = [];
30
+ let currentState = 'normal';
31
+ let isStrippingComment = false;
32
+ while (i < len) {
33
+ const char = code[i];
34
+ const nextChar = code[i + 1];
35
+ if (currentState === 'normal') {
36
+ if (char === '/' && nextChar === '*') {
37
+ currentState = 'comment_block';
38
+ result.push('/*');
39
+ i += 2;
40
+ continue;
41
+ }
42
+ if (char === '/' && nextChar === '/') {
43
+ // Detect if the comment is escaped (e.g. inside a regex literal like `/\/\/#/`).
44
+ let isEscaped = false;
45
+ let prevIdx = result.length - 1;
46
+ while (prevIdx >= 0 && /\s/.test(result[prevIdx])) {
47
+ prevIdx--;
48
+ }
49
+ if (prevIdx >= 0 && result[prevIdx] === '\\') {
50
+ let bsCount = 0;
51
+ while (prevIdx >= 0 && result[prevIdx] === '\\') {
52
+ bsCount++;
53
+ prevIdx--;
54
+ }
55
+ if (bsCount % 2 === 1) {
56
+ isEscaped = true;
57
+ }
58
+ }
59
+ if (!isEscaped && code.startsWith('//# sourceMappingURL=', i)) {
60
+ currentState = 'comment_line';
61
+ isStrippingComment = true;
62
+ i += 21; // Skip the '//# sourceMappingURL=' prefix
63
+ continue;
64
+ }
65
+ else {
66
+ currentState = 'comment_line';
67
+ isStrippingComment = false;
68
+ result.push('//');
69
+ i += 2;
70
+ continue;
71
+ }
72
+ }
73
+ if (char === '"') {
74
+ currentState = 'string_double';
75
+ result.push('"');
76
+ i++;
77
+ continue;
78
+ }
79
+ if (char === "'") {
80
+ currentState = 'string_single';
81
+ result.push("'");
82
+ i++;
83
+ continue;
84
+ }
85
+ if (char === '`') {
86
+ currentState = 'template';
87
+ stack.push({ type: 'template', braceDepth: 0 });
88
+ result.push('`');
89
+ i++;
90
+ continue;
91
+ }
92
+ if (char === '{') {
93
+ const top = stack[stack.length - 1];
94
+ if (top) {
95
+ top.braceDepth++;
96
+ }
97
+ result.push('{');
98
+ i++;
99
+ continue;
100
+ }
101
+ if (char === '}') {
102
+ const top = stack[stack.length - 1];
103
+ if (top) {
104
+ top.braceDepth--;
105
+ if (top.braceDepth < 0) {
106
+ // Exiting a template literal interpolation ${ ... }
107
+ stack.pop();
108
+ currentState = 'template';
109
+ result.push('}');
110
+ i++;
111
+ continue;
112
+ }
113
+ }
114
+ result.push('}');
115
+ i++;
116
+ continue;
117
+ }
118
+ result.push(char);
119
+ i++;
120
+ }
121
+ else if (currentState === 'string_double') {
122
+ if (char === '\\') {
123
+ result.push(char, nextChar || '');
124
+ i += 2;
125
+ continue;
126
+ }
127
+ if (char === '"') {
128
+ currentState = 'normal';
129
+ }
130
+ result.push(char);
131
+ i++;
132
+ }
133
+ else if (currentState === 'string_single') {
134
+ if (char === '\\') {
135
+ result.push(char, nextChar || '');
136
+ i += 2;
137
+ continue;
138
+ }
139
+ if (char === "'") {
140
+ currentState = 'normal';
141
+ }
142
+ result.push(char);
143
+ i++;
144
+ }
145
+ else if (currentState === 'template') {
146
+ if (char === '\\') {
147
+ result.push(char, nextChar || '');
148
+ i += 2;
149
+ continue;
150
+ }
151
+ if (char === '$' && nextChar === '{') {
152
+ // Entering template literal interpolation context
153
+ currentState = 'normal';
154
+ stack.push({ type: 'template', braceDepth: 0 });
155
+ result.push('${');
156
+ i += 2;
157
+ continue;
158
+ }
159
+ if (char === '`') {
160
+ stack.pop();
161
+ currentState = 'normal';
162
+ }
163
+ result.push(char);
164
+ i++;
165
+ }
166
+ else if (currentState === 'comment_block') {
167
+ if (char === '*' && nextChar === '/') {
168
+ currentState = 'normal';
169
+ result.push('*/');
170
+ i += 2;
171
+ continue;
172
+ }
173
+ result.push(char);
174
+ i++;
175
+ }
176
+ else if (currentState === 'comment_line') {
177
+ if (char === '\n' || char === '\r') {
178
+ currentState = 'normal';
179
+ isStrippingComment = false;
180
+ result.push(char);
181
+ i++;
182
+ continue;
183
+ }
184
+ if (!isStrippingComment) {
185
+ result.push(char);
186
+ }
187
+ i++;
188
+ }
189
+ }
190
+ return result.join('');
191
+ }
192
+ /**
193
+ * Finds, resolves, and loads the input sourcemap referenced in the code's trailing
194
+ * sourceMappingURL comment, if present. Supports inline base64 data URIs, local absolute
195
+ * file URLs, and relative/absolute filesystem paths.
196
+ */
197
+ function loadInputSourceMap(filename, code) {
198
+ // Locate the last sourceMappingURL comment using lastIndexOf to avoid scanning
199
+ // the entire file with a regular expression (significant for large files).
200
+ const lastSourceMapIndex = code.lastIndexOf('//# sourceMappingURL=');
201
+ if (lastSourceMapIndex === -1) {
202
+ return undefined;
203
+ }
204
+ const urlLine = code.slice(lastSourceMapIndex + 21);
205
+ // Inline base64-encoded sourcemaps can be extremely large (up to megabytes).
206
+ // Parse them without regular expressions to avoid heavy backtracking and allocations.
207
+ if (urlLine.startsWith('data:application/json;')) {
208
+ const base64StartIndex = urlLine.indexOf('base64,');
209
+ if (base64StartIndex === -1) {
210
+ return undefined;
211
+ }
212
+ const payloadStart = base64StartIndex + 7;
213
+ let payloadEnd = urlLine.length;
214
+ // Find the first trailing whitespace character that marks the end of the base64 payload.
215
+ for (let i = payloadStart; i < urlLine.length; i++) {
216
+ const char = urlLine[i];
217
+ if (char === ' ' || char === '\r' || char === '\n' || char === '\t') {
218
+ payloadEnd = i;
219
+ break;
220
+ }
221
+ }
222
+ // Verify that everything after the base64 payload is trailing whitespace
223
+ // to ensure this is a valid trailing sourceMappingURL comment at the end of the file.
224
+ for (let i = payloadEnd; i < urlLine.length; i++) {
225
+ const char = urlLine[i];
226
+ if (char !== ' ' && char !== '\r' && char !== '\n' && char !== '\t') {
227
+ return undefined;
228
+ }
229
+ }
230
+ try {
231
+ // Extract the base64 payload and decode it directly into binary memory.
232
+ const base64Content = urlLine.slice(payloadStart, payloadEnd);
233
+ return JSON.parse(Buffer.from(base64Content, 'base64').toString('utf-8'));
234
+ }
235
+ catch {
236
+ return undefined;
237
+ }
238
+ }
239
+ // Non-inline sourcemap comments (always small, typically < 200 characters).
240
+ const urlMatch = /^([^\r\n\s]+)/.exec(urlLine);
241
+ if (!urlMatch) {
242
+ return undefined;
243
+ }
244
+ const url = urlMatch[1];
245
+ const remaining = urlLine.slice(url.length);
246
+ // Verify there is only whitespace after the URL to the end of the file.
247
+ if (!/^\s*$/.test(remaining)) {
248
+ return undefined;
249
+ }
250
+ if (url.startsWith('file://')) {
251
+ // Local absolute file URL scheme.
252
+ try {
253
+ const mapPath = (0, node_url_1.fileURLToPath)(url);
254
+ if ((0, node_fs_1.existsSync)(mapPath)) {
255
+ return JSON.parse((0, node_fs_1.readFileSync)(mapPath, 'utf8'));
256
+ }
257
+ }
258
+ catch { }
259
+ }
260
+ else if (!/^[a-z]+:\/\//i.test(url)) {
261
+ // Local relative or absolute filesystem path (percent-decoded as it originates from a URI).
262
+ try {
263
+ const mapPath = (0, node_path_1.resolve)((0, node_path_1.dirname)(filename), decodeURIComponent(url));
264
+ if ((0, node_fs_1.existsSync)(mapPath)) {
265
+ return JSON.parse((0, node_fs_1.readFileSync)(mapPath, 'utf8'));
266
+ }
267
+ }
268
+ catch { }
269
+ }
270
+ return undefined;
271
+ }
272
+ //# sourceMappingURL=source-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-map.js","sourceRoot":"","sources":["source-map.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAgBH,wDAyKC;AAOD,gDAgFC;AA7QD,qCAAmD;AACnD,yCAA6C;AAC7C,uCAAyC;AAEzC;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IAExB,yFAAyF;IACzF,MAAM,KAAK,GAA+C,EAAE,CAAC;IAC7D,IAAI,YAAY,GAEd,QAAQ,CAAC;IACX,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7B,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,YAAY,GAAG,eAAe,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,iFAAiF;gBACjF,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChC,OAAO,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;oBAClD,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC7C,IAAI,OAAO,GAAG,CAAC,CAAC;oBAChB,OAAO,OAAO,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;wBAChD,OAAO,EAAE,CAAC;wBACV,OAAO,EAAE,CAAC;oBACZ,CAAC;oBACD,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACtB,SAAS,GAAG,IAAI,CAAC;oBACnB,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC9D,YAAY,GAAG,cAAc,CAAC;oBAC9B,kBAAkB,GAAG,IAAI,CAAC;oBAC1B,CAAC,IAAI,EAAE,CAAC,CAAC,0CAA0C;oBACnD,SAAS;gBACX,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,cAAc,CAAC;oBAC9B,kBAAkB,GAAG,KAAK,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,YAAY,GAAG,eAAe,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,YAAY,GAAG,eAAe,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,YAAY,GAAG,UAAU,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpC,IAAI,GAAG,EAAE,CAAC;oBACR,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpC,IAAI,GAAG,EAAE,CAAC;oBACR,GAAG,CAAC,UAAU,EAAE,CAAC;oBACjB,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;wBACvB,oDAAoD;wBACpD,KAAK,CAAC,GAAG,EAAE,CAAC;wBACZ,YAAY,GAAG,UAAU,CAAC;wBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACjB,CAAC,EAAE,CAAC;wBACJ,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,YAAY,KAAK,eAAe,EAAE,CAAC;YAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;gBAClC,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,YAAY,GAAG,QAAQ,CAAC;YAC1B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,YAAY,KAAK,eAAe,EAAE,CAAC;YAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;gBAClC,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,YAAY,GAAG,QAAQ,CAAC;YAC1B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YACvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;gBAClC,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,kDAAkD;gBAClD,YAAY,GAAG,QAAQ,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,YAAY,GAAG,QAAQ,CAAC;YAC1B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,YAAY,KAAK,eAAe,EAAE,CAAC;YAC5C,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,YAAY,GAAG,QAAQ,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YAC3C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC;gBACxB,kBAAkB,GAAG,KAAK,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,IAAY;IAC/D,+EAA+E;IAC/E,2EAA2E;IAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IACrE,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;IAEpD,6EAA6E;IAC7E,sFAAsF;IACtF,IAAI,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,GAAG,CAAC,CAAC;QAC1C,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAChC,yFAAyF;QACzF,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACpE,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;QAED,yEAAyE;QACzE,sFAAsF;QACtF,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACpE,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,wEAAwE;YACxE,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE9D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB,CAAC;QAChG,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,wEAAwE;IACxE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC;YACnC,IAAI,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAqB,CAAC;YACvE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;SAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,4FAA4F;QAC5F,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,IAAI,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAqB,CAAC;YACvE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}