@askrjs/askr 0.0.36 → 0.0.37

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 (96) hide show
  1. package/README.md +17 -9
  2. package/dist/bench/components/benchmark-table.js +1 -1
  3. package/dist/bench/components/benchmark-table.js.map +1 -1
  4. package/dist/benchmark.js +3 -3
  5. package/dist/boot/index.d.ts +1 -7
  6. package/dist/boot/index.d.ts.map +1 -1
  7. package/dist/boot/index.js +22 -13
  8. package/dist/boot/index.js.map +1 -1
  9. package/dist/components/index.d.ts +2 -0
  10. package/dist/components/index.js +2 -0
  11. package/dist/components/link.d.ts +4 -5
  12. package/dist/components/link.d.ts.map +1 -1
  13. package/dist/components/link.js +2 -1
  14. package/dist/components/link.js.map +1 -1
  15. package/dist/foundations/icon/icon.d.ts.map +1 -1
  16. package/dist/foundations/icon/icon.js.map +1 -1
  17. package/dist/foundations/icon/icon.types.d.ts +2 -1
  18. package/dist/foundations/icon/icon.types.d.ts.map +1 -1
  19. package/dist/foundations/icon/index.d.ts +3 -0
  20. package/dist/foundations/icon/index.js +2 -0
  21. package/dist/foundations/index.d.ts +1 -18
  22. package/dist/foundations/index.js +2 -18
  23. package/dist/foundations/interactions/index.d.ts +7 -0
  24. package/dist/foundations/interactions/index.js +7 -0
  25. package/dist/foundations/interactions/interaction-policy.js +2 -2
  26. package/dist/foundations/state/index.d.ts +2 -0
  27. package/dist/foundations/state/index.js +2 -0
  28. package/dist/foundations/structures/index.d.ts +8 -0
  29. package/dist/foundations/structures/index.js +7 -0
  30. package/dist/foundations/utilities/index.d.ts +7 -0
  31. package/dist/foundations/utilities/index.js +6 -0
  32. package/dist/index.d.ts +2 -16
  33. package/dist/index.js +1 -17
  34. package/dist/index.js.map +1 -1
  35. package/dist/jsx-dev-runtime.d.ts +1 -1
  36. package/dist/jsx-dev-runtime.js.map +1 -1
  37. package/dist/jsx-runtime.d.ts +1 -1
  38. package/dist/jsx-runtime.js.map +1 -1
  39. package/dist/renderer/dom.js +26 -366
  40. package/dist/renderer/dom.js.map +1 -1
  41. package/dist/renderer/evaluate.js.map +1 -1
  42. package/dist/renderer/fastpath.js +20 -18
  43. package/dist/renderer/fastpath.js.map +1 -1
  44. package/dist/renderer/for-commit.js +486 -0
  45. package/dist/renderer/for-commit.js.map +1 -0
  46. package/dist/renderer/index.js.map +1 -1
  47. package/dist/renderer/keyed.js +84 -23
  48. package/dist/renderer/keyed.js.map +1 -1
  49. package/dist/renderer/reconcile.js +11 -18
  50. package/dist/renderer/reconcile.js.map +1 -1
  51. package/dist/renderer/utils.js +5 -1
  52. package/dist/renderer/utils.js.map +1 -1
  53. package/dist/resources/index.d.ts +1 -2
  54. package/dist/resources/index.js +1 -2
  55. package/dist/router/route.js +1 -1
  56. package/dist/runtime/for.d.ts.map +1 -1
  57. package/dist/runtime/for.js +33 -21
  58. package/dist/runtime/for.js.map +1 -1
  59. package/dist/runtime/operations.js +1 -1
  60. package/dist/runtime/selector.d.ts.map +1 -1
  61. package/dist/runtime/selector.js +180 -103
  62. package/dist/runtime/selector.js.map +1 -1
  63. package/dist/ssg/index.d.ts +1 -6
  64. package/dist/ssg/index.js +1 -6
  65. package/dist/ssr/context.d.ts +2 -1
  66. package/dist/ssr/context.d.ts.map +1 -1
  67. package/dist/ssr/context.js +28 -11
  68. package/dist/ssr/context.js.map +1 -1
  69. package/dist/ssr/index.d.ts +2 -31
  70. package/dist/ssr/index.d.ts.map +1 -1
  71. package/dist/ssr/index.js +4 -46
  72. package/dist/ssr/index.js.map +1 -1
  73. package/dist/ssr/render-keys.js +1 -12
  74. package/dist/ssr/render-keys.js.map +1 -1
  75. package/dist/ssr/verify-hydration.js +25 -0
  76. package/dist/ssr/verify-hydration.js.map +1 -0
  77. package/package.json +39 -16
  78. package/dist/_virtual/_rolldown/runtime.js +0 -7
  79. package/dist/foundations/core.d.ts +0 -15
  80. package/dist/foundations/core.js +0 -13
  81. package/dist/foundations/structures.d.ts +0 -7
  82. package/dist/foundations/structures.js +0 -6
  83. package/dist/ssg/batch-render.d.ts +0 -16
  84. package/dist/ssg/batch-render.d.ts.map +0 -1
  85. package/dist/ssg/generate-metadata.d.ts +0 -24
  86. package/dist/ssg/generate-metadata.d.ts.map +0 -1
  87. package/dist/ssg/resolve-ssg-data.d.ts +0 -23
  88. package/dist/ssg/resolve-ssg-data.d.ts.map +0 -1
  89. package/dist/ssg/route-utils.d.ts +0 -16
  90. package/dist/ssg/route-utils.d.ts.map +0 -1
  91. package/dist/ssg/write-static-files.d.ts +0 -15
  92. package/dist/ssg/write-static-files.d.ts.map +0 -1
  93. package/dist/ssr/render-keys.d.ts +0 -37
  94. package/dist/ssr/render-keys.d.ts.map +0 -1
  95. package/dist/ssr/stream-render.js +0 -88
  96. package/dist/ssr/stream-render.js.map +0 -1
@@ -1,24 +0,0 @@
1
- import { RouteRenderResult, SSGMetadata, SSGMode, SSGResult } from "./types.js";
2
-
3
- //#region src/ssg/generate-metadata.d.ts
4
- interface GenerateResultOptions {
5
- mode?: SSGMode;
6
- cacheHits?: number;
7
- invalidatedKeys?: string[];
8
- invalidatedRoutes?: string[];
9
- }
10
- /**
11
- * Generate SSGResult from render results
12
- */
13
- declare function generateSSGResult(results: RouteRenderResult[], options?: GenerateResultOptions): SSGResult;
14
- /**
15
- * Convert SSGResult to metadata for JSON serialization
16
- */
17
- declare function resultToMetadata(result: SSGResult): SSGMetadata;
18
- /**
19
- * Write metadata.json to output directory
20
- */
21
- declare function writeMetadata(metadata: Record<string, unknown>, outputDir: string): Promise<void>;
22
- //#endregion
23
- export { generateSSGResult, resultToMetadata, writeMetadata };
24
- //# sourceMappingURL=generate-metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-metadata.d.ts","names":[],"sources":["../../src/ssg/generate-metadata.ts"],"mappings":";;;UAgBU,qBAAA;EACR,IAAA,GAAO,OAAA;EACP,SAAA;EACA,eAAA;EACA,iBAAA;AAAA;;AAMF;;iBAAgB,iBAAA,CACd,OAAA,EAAS,iBAAA,IACT,OAAA,GAAS,qBAAA,GACR,SAAA;;;;iBA6Ca,gBAAA,CAAiB,MAAA,EAAQ,SAAA,GAAY,WAAA;;;;iBAsC/B,aAAA,CACpB,QAAA,EAAU,MAAA,mBACV,SAAA,WACC,OAAA"}
@@ -1,23 +0,0 @@
1
- import { RouteConfig } from "./types.js";
2
- import { SSRData } from "../common/ssr.js";
3
-
4
- //#region src/ssg/resolve-ssg-data.d.ts
5
- interface DataResolutionOptions {
6
- /** User-supplied data overrides per route path */
7
- dataOverrides?: Record<string, unknown>;
8
- }
9
- /**
10
- * Resolve and validate data for SSG routes
11
- * Returns a map of route path -> SSRData
12
- *
13
- * In phase 1: accepts user-supplied dataOverrides
14
- * In phase 2: can be extended to auto-discover resources
15
- */
16
- declare function resolveSsgData(routes: RouteConfig[], options?: DataResolutionOptions): Record<string, SSRData>;
17
- /**
18
- * Validate routes are properly configured
19
- */
20
- declare function validateRoutes(routes: RouteConfig[]): void;
21
- //#endregion
22
- export { resolveSsgData, validateRoutes };
23
- //# sourceMappingURL=resolve-ssg-data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-ssg-data.d.ts","names":[],"sources":["../../src/ssg/resolve-ssg-data.ts"],"mappings":";;;;UAUU,qBAAA;EAYM;EAVd,aAAA,GAAgB,MAAA;AAAA;;;;;;;;iBAUF,cAAA,CACd,MAAA,EAAQ,WAAA,IACR,OAAA,GAAS,qBAAA,GACR,MAAA,SAAe,OAAA;;;;iBAyBF,cAAA,CAAe,MAAA,EAAQ,WAAA"}
@@ -1,16 +0,0 @@
1
- import { RouteConfig } from "./types.js";
2
-
3
- //#region src/ssg/route-utils.d.ts
4
- interface ResolvedRouteDescriptor {
5
- route: RouteConfig;
6
- path: string;
7
- filePath: string;
8
- routeId: string;
9
- invalidationKeys: string[];
10
- }
11
- declare function getOutputFilePath(pathStr: string): string;
12
- declare function interpolateRoutePath(routePath: string, params?: Record<string, string>): string;
13
- declare function resolveRouteDescriptor(route: RouteConfig): ResolvedRouteDescriptor;
14
- //#endregion
15
- export { getOutputFilePath };
16
- //# sourceMappingURL=route-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route-utils.d.ts","names":[],"sources":["../../src/ssg/route-utils.ts"],"mappings":";;;UAEiB,uBAAA;EACf,KAAA,EAAO,WAAA;EACP,IAAA;EACA,QAAA;EACA,OAAA;EACA,gBAAA;AAAA;AAAA,iBAGc,iBAAA,CAAkB,OAAA;AAAA,iBAQlB,oBAAA,CACd,SAAA,UACA,MAAA,GAAS,MAAA;AAAA,iBASK,sBAAA,CACd,KAAA,EAAO,WAAA,GACN,uBAAA"}
@@ -1,15 +0,0 @@
1
- import { RouteRenderResult } from "./types.js";
2
- import { getOutputFilePath } from "./route-utils.js";
3
-
4
- //#region src/ssg/write-static-files.d.ts
5
- interface WriteStaticFilesOptions {
6
- concurrency?: number;
7
- }
8
- /**
9
- * Write rendered routes to disk
10
- * Creates outputDir/{route-path}/index.html structure
11
- */
12
- declare function writeStaticFiles(results: RouteRenderResult[], outputDir: string, options?: WriteStaticFilesOptions): Promise<void>;
13
- //#endregion
14
- export { writeStaticFiles };
15
- //# sourceMappingURL=write-static-files.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-static-files.d.ts","names":[],"sources":["../../src/ssg/write-static-files.ts"],"mappings":";;;;UAYU,uBAAA;EACR,WAAA;AAAA;;;;;iBAOoB,gBAAA,CACpB,OAAA,EAAS,iBAAA,IACT,SAAA,UACA,OAAA,GAAS,uBAAA,GACR,OAAA"}
@@ -1,37 +0,0 @@
1
- import { SSRRoute } from "./index.js";
2
-
3
- //#region src/ssr/render-keys.d.ts
4
- type ResourceDescriptor = {
5
- key: string;
6
- fn: (opts: {
7
- signal?: AbortSignal;
8
- }) => Promise<unknown> | unknown;
9
- deps: unknown[];
10
- index: number;
11
- };
12
- type ResourcePlan = {
13
- resources: ResourceDescriptor[];
14
- };
15
- declare function getCurrentRenderData(): Record<string, unknown> | null;
16
- declare function resetKeyCounter(): void;
17
- declare function getNextKey(): string;
18
- declare function startRenderPhase(data: Record<string, unknown> | null): void;
19
- declare function stopRenderPhase(): void;
20
- /** @deprecated SSR prepass has been removed */
21
- declare function startCollection(): never;
22
- /** @deprecated SSR prepass has been removed */
23
- declare function stopCollection(): ResourcePlan;
24
- /** @deprecated SSR prepass has been removed */
25
- declare function registerResourceIntent(_fn: ResourceDescriptor['fn'], _deps: unknown[]): string;
26
- /** @deprecated SSR prepass has been removed */
27
- declare function resolvePlan(_plan: ResourcePlan): Promise<Record<string, unknown>>;
28
- /** @deprecated SSR prepass has been removed */
29
- declare function collectResources(_opts: {
30
- url: string;
31
- routes: SSRRoute[];
32
- }): ResourcePlan;
33
- /** @deprecated Alias for resolvePlan */
34
- declare const resolveResources: typeof resolvePlan;
35
- //#endregion
36
- export { ResourcePlan, collectResources, resolvePlan, resolveResources };
37
- //# sourceMappingURL=render-keys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-keys.d.ts","names":[],"sources":["../../src/ssr/render-keys.ts"],"mappings":";;;KAUY,kBAAA;EACV,GAAA;EACA,EAAA,GAAK,IAAA;IAAQ,MAAA,GAAS,WAAA;EAAA,MAAkB,OAAA;EACxC,IAAA;EACA,KAAA;AAAA;AAAA,KAGU,YAAA;EACV,SAAA,EAAW,kBAAA;AAAA;AAAA,iBAGG,oBAAA,CAAA,GAAwB,MAAA;AAAA,iBAKxB,eAAA,CAAA;AAAA,iBAKA,UAAA,CAAA;AAAA,iBAMA,gBAAA,CAAiB,IAAA,EAAM,MAAA;AAAA,iBAQvB,eAAA,CAAA;;iBAcA,eAAA,CAAA;;iBAKA,cAAA,CAAA,GAAkB,YAAA;AAtClC;AAAA,iBA2CgB,sBAAA,CACd,GAAA,EAAK,kBAAA,QACL,KAAA;;iBAQoB,WAAA,CACpB,KAAA,EAAO,YAAA,GACN,OAAA,CAAQ,MAAA;;iBAOK,gBAAA,CAAiB,KAAA;EAC/B,GAAA;EACA,MAAA,EAAQ,QAAA;AAAA,IACN,YAAA;;cAKS,gBAAA,SAAgB,WAAA"}
@@ -1,88 +0,0 @@
1
- import { Fragment } from "../common/jsx.js";
2
- import { VOID_ELEMENTS, escapeText } from "./escape.js";
3
- import { throwSSRDataMissing } from "./context.js";
4
- import "../jsx/index.js";
5
- import { renderAttrsDirect } from "./attrs.js";
6
- //#region src/ssr/stream-render.ts
7
- function isPromiseLike(x) {
8
- if (!x || typeof x !== "object") return false;
9
- return typeof x.then === "function";
10
- }
11
- function executeComponent(type, props, ctx) {
12
- const res = type(props ?? {}, { signal: ctx.signal });
13
- if (isPromiseLike(res)) throwSSRDataMissing();
14
- return res;
15
- }
16
- function inheritRenderableKey(source, result) {
17
- const inheritedKey = source.key;
18
- if (inheritedKey === void 0 || inheritedKey === null) return result;
19
- if (!result || typeof result !== "object" || !("type" in result)) return result;
20
- const resultVNode = result;
21
- if (resultVNode.key === void 0 || resultVNode.key === null) resultVNode.key = inheritedKey;
22
- if (typeof resultVNode.type === "string") {
23
- if (!resultVNode.props) resultVNode.props = {};
24
- if (resultVNode.props["data-key"] === void 0) resultVNode.props["data-key"] = String(inheritedKey);
25
- }
26
- return result;
27
- }
28
- function renderChildrenDirect(node, sink, ctx) {
29
- let raw = node.children;
30
- if (raw === void 0) raw = node.props?.children;
31
- if (raw === null || raw === void 0 || raw === false) return;
32
- if (Array.isArray(raw)) {
33
- for (let i = 0; i < raw.length; i++) renderNodeToSink(raw[i], sink, ctx);
34
- return;
35
- }
36
- renderNodeToSink(raw, sink, ctx);
37
- }
38
- function renderNodeToSink(node, sink, ctx) {
39
- if (node === null || node === void 0) return;
40
- if (typeof node === "string") {
41
- sink.write(escapeText(node));
42
- return;
43
- }
44
- if (typeof node === "number") {
45
- sink.write(String(node));
46
- return;
47
- }
48
- if (typeof node === "boolean") return;
49
- if (typeof node !== "object") return;
50
- const vnode = node;
51
- const type = vnode.type;
52
- if (type === Fragment) {
53
- renderChildrenDirect(vnode, sink, ctx);
54
- return;
55
- }
56
- if (typeof type === "symbol") {
57
- renderChildrenDirect(vnode, sink, ctx);
58
- return;
59
- }
60
- if (typeof type === "function") {
61
- renderNodeToSink(inheritRenderableKey(vnode, executeComponent(type, vnode.props, ctx)), sink, ctx);
62
- return;
63
- }
64
- const tag = type;
65
- const props = vnode.props;
66
- const dangerous = props?.dangerouslySetInnerHTML;
67
- const dangerousHtml = dangerous && typeof dangerous === "object" && "__html" in dangerous ? String(dangerous.__html) : void 0;
68
- if (VOID_ELEMENTS.has(tag)) {
69
- sink.write("<");
70
- sink.write(tag);
71
- renderAttrsDirect(props, sink);
72
- sink.write(" />");
73
- return;
74
- }
75
- sink.write("<");
76
- sink.write(tag);
77
- renderAttrsDirect(props, sink);
78
- sink.write(">");
79
- if (dangerousHtml !== void 0) sink.write(dangerousHtml);
80
- else renderChildrenDirect(vnode, sink, ctx);
81
- sink.write("</");
82
- sink.write(tag);
83
- sink.write(">");
84
- }
85
- //#endregion
86
- export { renderNodeToSink };
87
-
88
- //# sourceMappingURL=stream-render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-render.js","names":[],"sources":["../../src/ssr/stream-render.ts"],"sourcesContent":["import type { Props } from '../common/props';\nimport type { RenderSink } from './sink';\nimport type { VNode, SSRComponent } from './types';\nimport type { DOMElement } from '../common/vnode';\nimport { Fragment } from '../jsx';\nimport { type RenderContext, throwSSRDataMissing } from './context';\nimport { VOID_ELEMENTS, escapeText } from './escape';\nimport { renderAttrsDirect } from './attrs';\n\n// Re-export for backwards compatibility\nexport type Component = SSRComponent;\n\n// Legacy alias for context type\nexport type SSRContext = RenderContext;\n\nfunction isPromiseLike(x: unknown): x is PromiseLike<unknown> {\n if (!x || typeof x !== 'object') return false;\n return typeof (x as { then?: unknown }).then === 'function';\n}\n\nfunction executeComponent(\n type: Component,\n props: Props | undefined,\n ctx: RenderContext\n): unknown {\n const res = type(props ?? {}, { signal: ctx.signal });\n if (isPromiseLike(res)) {\n throwSSRDataMissing();\n }\n return res;\n}\n\nfunction inheritRenderableKey(source: VNode, result: unknown): unknown {\n const inheritedKey = source.key;\n if (inheritedKey === undefined || inheritedKey === null) {\n return result;\n }\n\n if (!result || typeof result !== 'object' || !('type' in result)) {\n return result;\n }\n\n const resultVNode = result as DOMElement;\n if (resultVNode.key === undefined || resultVNode.key === null) {\n resultVNode.key = inheritedKey;\n }\n\n if (typeof resultVNode.type === 'string') {\n if (!resultVNode.props) {\n resultVNode.props = {};\n }\n\n if (resultVNode.props['data-key'] === undefined) {\n resultVNode.props['data-key'] = String(inheritedKey);\n }\n }\n\n return result;\n}\n\n// Render children directly without allocating wrapper array when possible\nfunction renderChildrenDirect(\n node: Record<string, unknown>,\n sink: RenderSink,\n ctx: RenderContext\n): void {\n // Prefer explicit children; fallback to props.children\n let raw: unknown = node.children;\n if (raw === undefined) {\n raw = (node.props as Record<string, unknown> | undefined)?.children;\n }\n\n if (raw === null || raw === undefined || raw === false) return;\n\n if (Array.isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n renderNodeToSink(raw[i], sink, ctx);\n }\n return;\n }\n\n // Single child - no array allocation\n renderNodeToSink(raw, sink, ctx);\n}\n\nexport function renderNodeToSink(\n node: unknown,\n sink: RenderSink,\n ctx: RenderContext\n): void {\n if (node === null || node === undefined) return;\n\n // Fast path: primitive strings\n if (typeof node === 'string') {\n sink.write(escapeText(node));\n return;\n }\n\n // Fast path: numbers\n if (typeof node === 'number') {\n sink.write(String(node));\n return;\n }\n\n // Skip booleans (false is common from conditional rendering)\n if (typeof node === 'boolean') return;\n\n // Must be object at this point\n if (typeof node !== 'object') return;\n\n const vnode = node as VNode;\n const type = vnode.type;\n\n // Fragment: render children directly (canonical check via === is fastest)\n if (type === Fragment) {\n renderChildrenDirect(\n vnode as unknown as Record<string, unknown>,\n sink,\n ctx\n );\n return;\n }\n\n // Symbol type that isn't our Fragment\n if (typeof type === 'symbol') {\n // Unknown symbol - render children as fragment fallback\n renderChildrenDirect(\n vnode as unknown as Record<string, unknown>,\n sink,\n ctx\n );\n return;\n }\n\n // Function component\n if (typeof type === 'function') {\n const out = executeComponent(type as Component, vnode.props, ctx);\n renderNodeToSink(inheritRenderableKey(vnode, out), sink, ctx);\n return;\n }\n\n // Element node (type is string)\n const tag = type as string;\n const props = vnode.props;\n\n // Check for dangerouslySetInnerHTML\n const dangerous = props?.dangerouslySetInnerHTML as\n | { __html: unknown }\n | undefined;\n const dangerousHtml =\n dangerous && typeof dangerous === 'object' && '__html' in dangerous\n ? String(dangerous.__html)\n : undefined;\n\n // Void element - self-closing\n if (VOID_ELEMENTS.has(tag)) {\n sink.write('<');\n sink.write(tag);\n renderAttrsDirect(props, sink);\n sink.write(' />');\n return;\n }\n\n // Regular element\n sink.write('<');\n sink.write(tag);\n renderAttrsDirect(props, sink);\n sink.write('>');\n\n if (dangerousHtml !== undefined) {\n sink.write(dangerousHtml);\n } else {\n renderChildrenDirect(\n vnode as unknown as Record<string, unknown>,\n sink,\n ctx\n );\n }\n\n sink.write('</');\n sink.write(tag);\n sink.write('>');\n}\n"],"mappings":";;;;;;AAeA,SAAS,cAAc,GAAuC;CAC5D,IAAI,CAAC,KAAK,OAAO,MAAM,UAAU,OAAO;CACxC,OAAO,OAAQ,EAAyB,SAAS;;AAGnD,SAAS,iBACP,MACA,OACA,KACS;CACT,MAAM,MAAM,KAAK,SAAS,EAAE,EAAE,EAAE,QAAQ,IAAI,QAAQ,CAAC;CACrD,IAAI,cAAc,IAAI,EACpB,qBAAqB;CAEvB,OAAO;;AAGT,SAAS,qBAAqB,QAAe,QAA0B;CACrE,MAAM,eAAe,OAAO;CAC5B,IAAI,iBAAiB,UAAa,iBAAiB,MACjD,OAAO;CAGT,IAAI,CAAC,UAAU,OAAO,WAAW,YAAY,EAAE,UAAU,SACvD,OAAO;CAGT,MAAM,cAAc;CACpB,IAAI,YAAY,QAAQ,UAAa,YAAY,QAAQ,MACvD,YAAY,MAAM;CAGpB,IAAI,OAAO,YAAY,SAAS,UAAU;EACxC,IAAI,CAAC,YAAY,OACf,YAAY,QAAQ,EAAE;EAGxB,IAAI,YAAY,MAAM,gBAAgB,QACpC,YAAY,MAAM,cAAc,OAAO,aAAa;;CAIxD,OAAO;;AAIT,SAAS,qBACP,MACA,MACA,KACM;CAEN,IAAI,MAAe,KAAK;CACxB,IAAI,QAAQ,QACV,MAAO,KAAK,OAA+C;CAG7D,IAAI,QAAQ,QAAQ,QAAQ,UAAa,QAAQ,OAAO;CAExD,IAAI,MAAM,QAAQ,IAAI,EAAE;EACtB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAC9B,iBAAiB,IAAI,IAAI,MAAM,IAAI;EAErC;;CAIF,iBAAiB,KAAK,MAAM,IAAI;;AAGlC,SAAgB,iBACd,MACA,MACA,KACM;CACN,IAAI,SAAS,QAAQ,SAAS,QAAW;CAGzC,IAAI,OAAO,SAAS,UAAU;EAC5B,KAAK,MAAM,WAAW,KAAK,CAAC;EAC5B;;CAIF,IAAI,OAAO,SAAS,UAAU;EAC5B,KAAK,MAAM,OAAO,KAAK,CAAC;EACxB;;CAIF,IAAI,OAAO,SAAS,WAAW;CAG/B,IAAI,OAAO,SAAS,UAAU;CAE9B,MAAM,QAAQ;CACd,MAAM,OAAO,MAAM;CAGnB,IAAI,SAAS,UAAU;EACrB,qBACE,OACA,MACA,IACD;EACD;;CAIF,IAAI,OAAO,SAAS,UAAU;EAE5B,qBACE,OACA,MACA,IACD;EACD;;CAIF,IAAI,OAAO,SAAS,YAAY;EAE9B,iBAAiB,qBAAqB,OAD1B,iBAAiB,MAAmB,MAAM,OAAO,IAChB,CAAI,EAAE,MAAM,IAAI;EAC7D;;CAIF,MAAM,MAAM;CACZ,MAAM,QAAQ,MAAM;CAGpB,MAAM,YAAY,OAAO;CAGzB,MAAM,gBACJ,aAAa,OAAO,cAAc,YAAY,YAAY,YACtD,OAAO,UAAU,OAAO,GACxB;CAGN,IAAI,cAAc,IAAI,IAAI,EAAE;EAC1B,KAAK,MAAM,IAAI;EACf,KAAK,MAAM,IAAI;EACf,kBAAkB,OAAO,KAAK;EAC9B,KAAK,MAAM,MAAM;EACjB;;CAIF,KAAK,MAAM,IAAI;CACf,KAAK,MAAM,IAAI;CACf,kBAAkB,OAAO,KAAK;CAC9B,KAAK,MAAM,IAAI;CAEf,IAAI,kBAAkB,QACpB,KAAK,MAAM,cAAc;MAEzB,qBACE,OACA,MACA,IACD;CAGH,KAAK,MAAM,KAAK;CAChB,KAAK,MAAM,IAAI;CACf,KAAK,MAAM,IAAI"}