@relayfile/adapter-core 0.1.20 → 0.2.1

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 (31) hide show
  1. package/dist/src/atomic-index/index.d.ts +117 -0
  2. package/dist/src/atomic-index/index.d.ts.map +1 -0
  3. package/dist/src/atomic-index/index.js +168 -0
  4. package/dist/src/atomic-index/index.js.map +1 -0
  5. package/dist/src/index.d.ts +3 -0
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +3 -0
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/runtime/file-native-router.d.ts +98 -0
  10. package/dist/src/runtime/file-native-router.d.ts.map +1 -0
  11. package/dist/src/runtime/file-native-router.js +399 -0
  12. package/dist/src/runtime/file-native-router.js.map +1 -0
  13. package/dist/src/runtime/file-native-router.test.d.ts +2 -0
  14. package/dist/src/runtime/file-native-router.test.d.ts.map +1 -0
  15. package/dist/src/runtime/file-native-router.test.js +294 -0
  16. package/dist/src/runtime/file-native-router.test.js.map +1 -0
  17. package/dist/src/runtime/writeback-status.d.ts +26 -0
  18. package/dist/src/runtime/writeback-status.d.ts.map +1 -0
  19. package/dist/src/runtime/writeback-status.js +33 -0
  20. package/dist/src/runtime/writeback-status.js.map +1 -0
  21. package/dist/src/storage-bridge/discovery.d.ts +2 -14
  22. package/dist/src/storage-bridge/discovery.d.ts.map +1 -1
  23. package/dist/src/storage-bridge/discovery.js +3 -9
  24. package/dist/src/storage-bridge/discovery.js.map +1 -1
  25. package/dist/tests/atomic-index/atomic-index.test.d.ts +2 -0
  26. package/dist/tests/atomic-index/atomic-index.test.d.ts.map +1 -0
  27. package/dist/tests/atomic-index/atomic-index.test.js +182 -0
  28. package/dist/tests/atomic-index/atomic-index.test.js.map +1 -0
  29. package/dist/tests/storage-bridge/storage-bridge.test.js +1 -1
  30. package/dist/tests/storage-bridge/storage-bridge.test.js.map +1 -1
  31. package/package.json +2 -2
@@ -0,0 +1,399 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { recordWritebackStatus, } from "./writeback-status.js";
4
+ export class ReadOnlyFieldError extends Error {
5
+ field;
6
+ constructor(field) {
7
+ super(`Field "${field}" is read-only and cannot be written`);
8
+ this.name = "ReadOnlyFieldError";
9
+ this.field = field;
10
+ }
11
+ }
12
+ export class WritebackValidationError extends Error {
13
+ field;
14
+ reason;
15
+ constructor(input) {
16
+ super(input.message ?? defaultValidationMessage(input.reason, input.field));
17
+ this.name = "WritebackValidationError";
18
+ this.field = input.field;
19
+ this.reason = input.reason;
20
+ }
21
+ }
22
+ export function classifyWrite(path, resources, opts = {}) {
23
+ const event = opts.fsEvent ?? "write";
24
+ const normalizedPath = normalizeWritebackPath(path);
25
+ const resource = findMatchingResource(normalizedPath, resources);
26
+ if (!resource) {
27
+ return null;
28
+ }
29
+ const id = readWritebackId(normalizedPath);
30
+ if (!id || isReservedWritebackFilename(id)) {
31
+ return null;
32
+ }
33
+ const canonical = testResourceId(resource.idPattern, id);
34
+ if (event === "delete") {
35
+ return canonical
36
+ ? {
37
+ kind: "delete",
38
+ resource,
39
+ id,
40
+ canonical,
41
+ }
42
+ : null;
43
+ }
44
+ return {
45
+ kind: canonical ? "patch" : "create",
46
+ resource,
47
+ id,
48
+ canonical,
49
+ };
50
+ }
51
+ export function validatePayload(payload, schema, op) {
52
+ const errors = [];
53
+ if (!isRecord(payload)) {
54
+ errors.push(new WritebackValidationError({
55
+ reason: "type",
56
+ message: "Writeback payload must be a JSON object",
57
+ }));
58
+ return { ok: false, errors };
59
+ }
60
+ const properties = schema.properties ?? {};
61
+ if (op === "create") {
62
+ for (const field of schema.required ?? []) {
63
+ if (!(field in payload) || payload[field] === undefined) {
64
+ errors.push(new WritebackValidationError({
65
+ field,
66
+ reason: "required",
67
+ message: `Missing required field "${field}"`,
68
+ }));
69
+ }
70
+ }
71
+ }
72
+ for (const [field, value] of Object.entries(payload)) {
73
+ const propertySchema = properties[field];
74
+ if (!propertySchema) {
75
+ if (schema.additionalProperties === false) {
76
+ errors.push(new WritebackValidationError({
77
+ field,
78
+ reason: "additionalProperties",
79
+ message: `Field "${field}" is not allowed by the resource schema`,
80
+ }));
81
+ }
82
+ continue;
83
+ }
84
+ if (propertySchema.readOnly === true) {
85
+ errors.push(new WritebackValidationError({
86
+ field,
87
+ reason: "readOnly",
88
+ message: `Field "${field}" is read-only and cannot be written`,
89
+ }));
90
+ continue;
91
+ }
92
+ validateFieldValue(field, value, propertySchema, errors);
93
+ }
94
+ return errors.length === 0 ? { ok: true } : { ok: false, errors };
95
+ }
96
+ export async function executeFileNativeWriteback(options) {
97
+ const route = classifyWrite(options.path, options.resources, {
98
+ fsEvent: options.fsEvent,
99
+ });
100
+ if (!route) {
101
+ return { ok: false };
102
+ }
103
+ const timestamp = (options.now ?? (() => new Date()))().toISOString();
104
+ try {
105
+ let request;
106
+ if (route.kind === "delete") {
107
+ if (!options.resolveDeleteRequest) {
108
+ throw new Error("Missing delete writeback resolver");
109
+ }
110
+ request = await options.resolveDeleteRequest(options.path);
111
+ }
112
+ else {
113
+ const content = options.content ?? "";
114
+ const payload = parseWritebackJsonObject(content);
115
+ const schema = await loadWritebackSchema(route.resource, options);
116
+ const validation = validatePayload(payload, schema, route.kind);
117
+ if (!validation.ok) {
118
+ const status = buildValidationStatus(options.path, route.kind, validation.errors, timestamp);
119
+ maybeRecordStatus(status, options);
120
+ return { ok: false, route, errors: validation.errors, status };
121
+ }
122
+ if (!options.resolveWritebackRequest) {
123
+ throw new Error("Missing writeback resolver");
124
+ }
125
+ request = await options.resolveWritebackRequest(options.path, content);
126
+ }
127
+ const adapterResult = options.applyWriteback
128
+ ? await options.applyWriteback(request, route)
129
+ : undefined;
130
+ const createReceipt = route.kind === "create"
131
+ ? createPointerReceipt(options.path, route, request, adapterResult, timestamp, options)
132
+ : undefined;
133
+ const status = buildStatus(options.path, route.kind, "ok", timestamp);
134
+ maybeRecordStatus(status, options);
135
+ return { ok: true, route, request, adapterResult, createReceipt, status };
136
+ }
137
+ catch (error) {
138
+ const status = statusFromError(options.path, route.kind, error, timestamp);
139
+ maybeRecordStatus(status, options);
140
+ return { ok: false, route, status };
141
+ }
142
+ }
143
+ function validateFieldValue(field, value, schema, errors) {
144
+ if (schema.enum && !schema.enum.some((item) => Object.is(item, value))) {
145
+ errors.push(new WritebackValidationError({
146
+ field,
147
+ reason: "enum",
148
+ message: `Field "${field}" must be one of the schema enum values`,
149
+ }));
150
+ return;
151
+ }
152
+ if (schema.type && !matchesJsonSchemaType(value, schema.type)) {
153
+ errors.push(new WritebackValidationError({
154
+ field,
155
+ reason: "type",
156
+ message: `Field "${field}" does not match schema type ${formatSchemaType(schema.type)}`,
157
+ }));
158
+ return;
159
+ }
160
+ if (isRecord(value) && schema.properties) {
161
+ const nested = validatePayload(value, schema, "patch");
162
+ if (!nested.ok) {
163
+ for (const error of nested.errors) {
164
+ errors.push(new WritebackValidationError({
165
+ field: error.field ? `${field}.${error.field}` : field,
166
+ reason: error.reason,
167
+ message: error.message.replace(/^Field "([^"]+)"/, `Field "${field}.$1"`),
168
+ }));
169
+ }
170
+ }
171
+ }
172
+ if (Array.isArray(value) && schema.items) {
173
+ value.forEach((item, index) => {
174
+ if (schema.items?.type && !matchesJsonSchemaType(item, schema.items.type)) {
175
+ errors.push(new WritebackValidationError({
176
+ field: `${field}[${index}]`,
177
+ reason: "type",
178
+ message: `Field "${field}[${index}]" does not match schema type ${formatSchemaType(schema.items.type)}`,
179
+ }));
180
+ return;
181
+ }
182
+ if (isRecord(item) && schema.items?.properties) {
183
+ const nested = validatePayload(item, schema.items, "patch");
184
+ if (!nested.ok) {
185
+ for (const error of nested.errors) {
186
+ errors.push(new WritebackValidationError({
187
+ field: error.field
188
+ ? `${field}[${index}].${error.field}`
189
+ : `${field}[${index}]`,
190
+ reason: error.reason,
191
+ message: error.message.replace(/^Field "([^"]+)"/, `Field "${field}[${index}].$1"`),
192
+ }));
193
+ }
194
+ }
195
+ }
196
+ });
197
+ }
198
+ }
199
+ function parseWritebackJsonObject(content) {
200
+ let parsed;
201
+ try {
202
+ parsed = JSON.parse(content);
203
+ }
204
+ catch (error) {
205
+ throw new WritebackValidationError({
206
+ reason: "type",
207
+ message: `Writeback payload must be valid JSON: ${errorMessage(error)}`,
208
+ });
209
+ }
210
+ if (!isRecord(parsed)) {
211
+ throw new WritebackValidationError({
212
+ reason: "type",
213
+ message: "Writeback payload must be a JSON object",
214
+ });
215
+ }
216
+ return parsed;
217
+ }
218
+ async function loadWritebackSchema(resource, options) {
219
+ if (options.loadSchema) {
220
+ return options.loadSchema(resource);
221
+ }
222
+ const schemaPath = options.schemaRoot
223
+ ? resolve(options.schemaRoot, resource.schema)
224
+ : resolve(resource.schema);
225
+ return JSON.parse(await readFile(schemaPath, "utf8"));
226
+ }
227
+ function buildValidationStatus(path, op, errors, timestamp) {
228
+ const first = errors[0];
229
+ return buildStatus(path, op, errors.some((error) => error.reason === "readOnly")
230
+ ? "readonly_rejected"
231
+ : "validation_failed", timestamp, first?.message, first?.field);
232
+ }
233
+ function statusFromError(path, op, error, timestamp) {
234
+ if (error instanceof WritebackValidationError) {
235
+ return buildStatus(path, op, error.reason === "readOnly" ? "readonly_rejected" : "validation_failed", timestamp, error.message, error.field);
236
+ }
237
+ if (isReadOnlyFieldError(error)) {
238
+ return buildStatus(path, op, "readonly_rejected", timestamp, errorMessage(error), error.field);
239
+ }
240
+ return buildStatus(path, op, "adapter_error", timestamp, errorMessage(error));
241
+ }
242
+ function buildStatus(path, op, outcome, timestamp, error, field) {
243
+ return {
244
+ path,
245
+ op,
246
+ status: outcome === "ok" ? "accepted" : "rejected",
247
+ code: statusCodeForOutcome(outcome),
248
+ outcome,
249
+ ...(error ? { error } : {}),
250
+ ...(field ? { field } : {}),
251
+ timestamp,
252
+ };
253
+ }
254
+ function statusCodeForOutcome(outcome) {
255
+ switch (outcome) {
256
+ case "adapter_error":
257
+ return "ADAPTER_ERROR";
258
+ case "ok":
259
+ return "OK";
260
+ case "readonly_rejected":
261
+ return "READ_ONLY_FIELD";
262
+ case "validation_failed":
263
+ return "VALIDATION_FAILED";
264
+ }
265
+ }
266
+ function maybeRecordStatus(status, options) {
267
+ if (options.recordStatus !== false) {
268
+ recordWritebackStatus(status);
269
+ }
270
+ }
271
+ function createPointerReceipt(draftPath, route, request, adapterResult, timestamp, options) {
272
+ const id = options.extractCreatedId?.(adapterResult, request, route) ??
273
+ extractCreatedId(adapterResult);
274
+ const canonicalPath = id
275
+ ? options.makeCanonicalPath?.(id, route) ?? replaceWritebackBasename(draftPath, id)
276
+ : undefined;
277
+ return {
278
+ draftPath,
279
+ ...(canonicalPath ? { canonicalPath } : {}),
280
+ ...(id ? { id } : {}),
281
+ resource: route.resource.name,
282
+ createdAt: timestamp,
283
+ };
284
+ }
285
+ function extractCreatedId(value) {
286
+ const seen = new Set();
287
+ return extractCreatedIdFromRecord(value, seen);
288
+ }
289
+ function extractCreatedIdFromRecord(value, seen) {
290
+ if (!isRecord(value) || seen.has(value)) {
291
+ return undefined;
292
+ }
293
+ seen.add(value);
294
+ for (const key of ["externalId", "id", "objectId"]) {
295
+ const id = value[key];
296
+ if (typeof id === "string" || typeof id === "number") {
297
+ return String(id);
298
+ }
299
+ }
300
+ for (const child of Object.values(value)) {
301
+ const id = extractCreatedIdFromRecord(child, seen);
302
+ if (id) {
303
+ return id;
304
+ }
305
+ }
306
+ return undefined;
307
+ }
308
+ function replaceWritebackBasename(path, id) {
309
+ const encoded = encodeURIComponent(id);
310
+ return path.replace(/[^/]+\.json$/u, `${encoded}.json`);
311
+ }
312
+ function isReadOnlyFieldError(error) {
313
+ return (error instanceof Error &&
314
+ error.name === "ReadOnlyFieldError" &&
315
+ typeof error.field === "string");
316
+ }
317
+ function errorMessage(error) {
318
+ return error instanceof Error ? error.message : String(error);
319
+ }
320
+ function findMatchingResource(path, resources) {
321
+ return [...resources]
322
+ .sort((left, right) => right.path.length - left.path.length)
323
+ .find((resource) => {
324
+ resource.pathPattern.lastIndex = 0;
325
+ const matched = resource.pathPattern.test(path);
326
+ resource.pathPattern.lastIndex = 0;
327
+ return matched;
328
+ });
329
+ }
330
+ function normalizeWritebackPath(path) {
331
+ const trimmed = path.trim();
332
+ return trimmed.endsWith("/") ? trimmed.slice(0, -1) : trimmed;
333
+ }
334
+ function readWritebackId(path) {
335
+ const segment = path.split("/").filter(Boolean).at(-1);
336
+ if (!segment || !segment.endsWith(".json")) {
337
+ return undefined;
338
+ }
339
+ const stem = segment.slice(0, -5);
340
+ if (!stem) {
341
+ return undefined;
342
+ }
343
+ return decodeURIComponent(stem);
344
+ }
345
+ function isReservedWritebackFilename(stem) {
346
+ return stem === ".schema" || stem === ".create.example" || stem === ".adapter";
347
+ }
348
+ function testResourceId(pattern, id) {
349
+ pattern.lastIndex = 0;
350
+ const matched = pattern.test(id);
351
+ pattern.lastIndex = 0;
352
+ return matched;
353
+ }
354
+ function matchesJsonSchemaType(value, type) {
355
+ const types = Array.isArray(type) ? type : [type];
356
+ return types.some((item) => matchesSingleJsonSchemaType(value, item));
357
+ }
358
+ function matchesSingleJsonSchemaType(value, type) {
359
+ switch (type) {
360
+ case "array":
361
+ return Array.isArray(value);
362
+ case "boolean":
363
+ return typeof value === "boolean";
364
+ case "integer":
365
+ return typeof value === "number" && Number.isInteger(value);
366
+ case "null":
367
+ return value === null;
368
+ case "number":
369
+ return typeof value === "number" && Number.isFinite(value);
370
+ case "object":
371
+ return isRecord(value);
372
+ case "string":
373
+ return typeof value === "string";
374
+ default:
375
+ return true;
376
+ }
377
+ }
378
+ function formatSchemaType(type) {
379
+ return typeof type === "string" ? type : type.join(" | ");
380
+ }
381
+ function defaultValidationMessage(reason, field) {
382
+ const label = field ? `Field "${field}"` : "Payload";
383
+ switch (reason) {
384
+ case "additionalProperties":
385
+ return `${label} is not allowed by the resource schema`;
386
+ case "enum":
387
+ return `${label} must be one of the schema enum values`;
388
+ case "readOnly":
389
+ return `${label} is read-only and cannot be written`;
390
+ case "required":
391
+ return `${label} is required`;
392
+ case "type":
393
+ return `${label} does not match the schema type`;
394
+ }
395
+ }
396
+ function isRecord(value) {
397
+ return typeof value === "object" && value !== null && !Array.isArray(value);
398
+ }
399
+ //# sourceMappingURL=file-native-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-native-router.js","sourceRoot":"","sources":["../../../src/runtime/file-native-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;AAkH/B,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,KAAK,CAAS;IAEvB,YAAY,KAAa;QACvB,KAAK,CAAC,UAAU,KAAK,sCAAsC,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,KAAK,CAAU;IACf,MAAM,CAA4B;IAE3C,YAAY,KAIX;QACC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,wBAAwB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,SAA2C,EAC3C,OAA6B,EAAE;IAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;IACtC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,IAAI,2BAA2B,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,SAAS;YACd,CAAC,CAAC;gBACE,IAAI,EAAE,QAAQ;gBACd,QAAQ;gBACR,EAAE;gBACF,SAAS;aACV;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QACpC,QAAQ;QACR,EAAE;QACF,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAgB,EAChB,MAAkB,EAClB,EAAsB;IAEtB,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,yCAAyC;SACnD,CAAC,CACH,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBACxD,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;oBAC3B,KAAK;oBACL,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE,2BAA2B,KAAK,GAAG;iBAC7C,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;oBAC3B,KAAK;oBACL,MAAM,EAAE,sBAAsB;oBAC9B,OAAO,EAAE,UAAU,KAAK,yCAAyC;iBAClE,CAAC,CACH,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,cAAc,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;gBAC3B,KAAK;gBACL,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU,KAAK,sCAAsC;aAC/D,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA0C;IAE1C,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE;QAC3D,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IACtE,IAAI,CAAC;QACH,IAAI,OAA+C,CAAC;QACpD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,qBAAqB,CAClC,OAAO,CAAC,IAAI,EACZ,KAAK,CAAC,IAAI,EACV,UAAU,CAAC,MAAM,EACjB,SAAS,CACV,CAAC;gBACF,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACjE,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc;YAC1C,CAAC,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,aAAa,GACjB,KAAK,CAAC,IAAI,KAAK,QAAQ;YACrB,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;YACvF,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACtE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3E,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAa,EACb,KAAc,EACd,MAAkB,EAClB,MAAkC;IAElC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;YAC3B,KAAK;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,UAAU,KAAK,yCAAyC;SAClE,CAAC,CACH,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;YAC3B,KAAK;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,UAAU,KAAK,gCAAgC,gBAAgB,CACtE,MAAM,CAAC,IAAI,CACZ,EAAE;SACJ,CAAC,CACH,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;oBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK;oBACtD,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAC5B,kBAAkB,EAClB,UAAU,KAAK,MAAM,CACtB;iBACF,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1E,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;oBAC3B,KAAK,EAAE,GAAG,KAAK,IAAI,KAAK,GAAG;oBAC3B,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,UAAU,KAAK,IAAI,KAAK,iCAAiC,gBAAgB,CAChF,MAAM,CAAC,KAAK,CAAC,IAAI,CAClB,EAAE;iBACJ,CAAC,CACH,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;4BAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;gCAChB,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;gCACrC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG;4BACxB,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAC5B,kBAAkB,EAClB,UAAU,KAAK,IAAI,KAAK,OAAO,CAChC;yBACF,CAAC,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC/C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,wBAAwB,CAAC;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,yCAAyC,YAAY,CAAC,KAAK,CAAC,EAAE;SACxE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,wBAAwB,CAAC;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,yCAAyC;SACnD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,QAA+B,EAC/B,OAA0C;IAE1C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;QACnC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAe,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,EAA2B,EAC3B,MAA2C,EAC3C,SAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,WAAW,CAChB,IAAI,EACJ,EAAE,EACF,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;QACjD,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,mBAAmB,EACvB,SAAS,EACT,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,KAAK,CACb,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,EAA2B,EAC3B,KAAc,EACd,SAAiB;IAEjB,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;QAC9C,OAAO,WAAW,CAChB,IAAI,EACJ,EAAE,EACF,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EACvE,SAAS,EACT,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,WAAW,CAChB,IAAI,EACJ,EAAE,EACF,mBAAmB,EACnB,SAAS,EACT,YAAY,CAAC,KAAK,CAAC,EACnB,KAAK,CAAC,KAAK,CACZ,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAClB,IAAY,EACZ,EAA2B,EAC3B,OAAwC,EACxC,SAAiB,EACjB,KAAc,EACd,KAAc;IAEd,OAAO;QACL,IAAI;QACJ,EAAE;QACF,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;QAClD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC;QACnC,OAAO;QACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAwC;IAExC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,eAAe;YAClB,OAAO,eAAe,CAAC;QACzB,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,mBAAmB;YACtB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,mBAAmB;YACtB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,MAA4B,EAC5B,OAA0C;IAE1C,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;QACnC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAiB,EACjB,KAA+B,EAC/B,OAAmC,EACnC,aAAsB,EACtB,SAAiB,EACjB,OAA0C;IAE1C,MAAM,EAAE,GACN,OAAO,CAAC,gBAAgB,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC;QACzD,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG,EAAE;QACtB,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC;QACnF,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,SAAS;QACT,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;QAC7B,SAAS,EAAE,SAAS;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,OAAO,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAc,EACd,IAAkB;IAElB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,EAAU;IACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc;IAEd,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,KAAK,CAAC,IAAI,KAAK,oBAAoB;QACnC,OAAQ,KAA6B,CAAC,KAAK,KAAK,QAAQ,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAY,EACZ,SAA2C;IAE3C,OAAO,CAAC,GAAG,SAAS,CAAC;SAClB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3D,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,QAAQ,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,QAAQ,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAChE,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY;IAC/C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,UAAU,CAAC;AACjF,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,EAAU;IACjD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,IAAgC;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc,EAAE,IAAY;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;QACpC,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9D,KAAK,MAAM;YACT,OAAO,KAAK,KAAK,IAAI,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7D,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;QACnC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgC;IACxD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAAiC,EACjC,KAAyB;IAEzB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,sBAAsB;YACzB,OAAO,GAAG,KAAK,wCAAwC,CAAC;QAC1D,KAAK,MAAM;YACT,OAAO,GAAG,KAAK,wCAAwC,CAAC;QAC1D,KAAK,UAAU;YACb,OAAO,GAAG,KAAK,qCAAqC,CAAC;QACvD,KAAK,UAAU;YACb,OAAO,GAAG,KAAK,cAAc,CAAC;QAChC,KAAK,MAAM;YACT,OAAO,GAAG,KAAK,iCAAiC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file-native-router.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-native-router.test.d.ts","sourceRoot":"","sources":["../../../src/runtime/file-native-router.test.ts"],"names":[],"mappings":""}