@manifesto-ai/compiler 1.6.2 → 1.7.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.
- package/README.md +64 -16
- package/dist/chunk-DJY6BFGK.js +74 -0
- package/dist/chunk-DJY6BFGK.js.map +1 -0
- package/dist/chunk-QP2LGMBA.js +4522 -0
- package/dist/chunk-QP2LGMBA.js.map +1 -0
- package/dist/chunk-QXLPDCLA.js +33 -0
- package/dist/chunk-QXLPDCLA.js.map +1 -0
- package/dist/esbuild.d.ts +8 -0
- package/dist/esbuild.js +14 -0
- package/dist/esbuild.js.map +1 -0
- package/dist/index.d.ts +2710 -11
- package/dist/index.js +2189 -43
- package/dist/index.js.map +1 -1
- package/dist/node-loader.d.ts +18 -0
- package/dist/node-loader.js +47 -0
- package/dist/node-loader.js.map +1 -0
- package/dist/rollup.d.ts +8 -0
- package/dist/rollup.js +14 -0
- package/dist/rollup.js.map +1 -0
- package/dist/rspack.d.ts +7 -0
- package/dist/rspack.js +14 -0
- package/dist/rspack.js.map +1 -0
- package/dist/unplugin-6wnvFiEo.d.ts +17 -0
- package/dist/vite.d.ts +8 -17
- package/dist/vite.js +13 -33
- package/dist/vite.js.map +1 -1
- package/dist/webpack.d.ts +8 -0
- package/dist/webpack.js +14 -0
- package/dist/webpack.js.map +1 -0
- package/package.json +39 -21
- package/dist/analyzer/index.d.ts +0 -6
- package/dist/analyzer/index.d.ts.map +0 -1
- package/dist/analyzer/index.js +0 -6
- package/dist/analyzer/index.js.map +0 -1
- package/dist/analyzer/scope.d.ts +0 -77
- package/dist/analyzer/scope.d.ts.map +0 -1
- package/dist/analyzer/scope.js +0 -296
- package/dist/analyzer/scope.js.map +0 -1
- package/dist/analyzer/validator.d.ts +0 -60
- package/dist/analyzer/validator.d.ts.map +0 -1
- package/dist/analyzer/validator.js +0 -439
- package/dist/analyzer/validator.js.map +0 -1
- package/dist/api/compile-mel-patch-collector.d.ts +0 -32
- package/dist/api/compile-mel-patch-collector.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-collector.js +0 -425
- package/dist/api/compile-mel-patch-collector.js.map +0 -1
- package/dist/api/compile-mel-patch-expr.d.ts +0 -9
- package/dist/api/compile-mel-patch-expr.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-expr.js +0 -179
- package/dist/api/compile-mel-patch-expr.js.map +0 -1
- package/dist/api/compile-mel-patch-location.d.ts +0 -10
- package/dist/api/compile-mel-patch-location.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-location.js +0 -48
- package/dist/api/compile-mel-patch-location.js.map +0 -1
- package/dist/api/compile-mel-patch.d.ts +0 -6
- package/dist/api/compile-mel-patch.d.ts.map +0 -1
- package/dist/api/compile-mel-patch.js +0 -244
- package/dist/api/compile-mel-patch.js.map +0 -1
- package/dist/api/compile-mel.d.ts +0 -126
- package/dist/api/compile-mel.d.ts.map +0 -1
- package/dist/api/compile-mel.js +0 -114
- package/dist/api/compile-mel.js.map +0 -1
- package/dist/api/index.d.ts +0 -10
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -9
- package/dist/api/index.js.map +0 -1
- package/dist/diagnostics/codes.d.ts +0 -25
- package/dist/diagnostics/codes.d.ts.map +0 -1
- package/dist/diagnostics/codes.js +0 -154
- package/dist/diagnostics/codes.js.map +0 -1
- package/dist/diagnostics/index.d.ts +0 -6
- package/dist/diagnostics/index.d.ts.map +0 -1
- package/dist/diagnostics/index.js +0 -6
- package/dist/diagnostics/index.js.map +0 -1
- package/dist/diagnostics/types.d.ts +0 -67
- package/dist/diagnostics/types.d.ts.map +0 -1
- package/dist/diagnostics/types.js +0 -58
- package/dist/diagnostics/types.js.map +0 -1
- package/dist/evaluation/context.d.ts +0 -91
- package/dist/evaluation/context.d.ts.map +0 -1
- package/dist/evaluation/context.js +0 -53
- package/dist/evaluation/context.js.map +0 -1
- package/dist/evaluation/evaluate-expr.d.ts +0 -24
- package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
- package/dist/evaluation/evaluate-expr.js +0 -577
- package/dist/evaluation/evaluate-expr.js.map +0 -1
- package/dist/evaluation/evaluate-patch.d.ts +0 -123
- package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-patch.js +0 -202
- package/dist/evaluation/evaluate-patch.js.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
- package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.js +0 -185
- package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
- package/dist/evaluation/index.d.ts +0 -15
- package/dist/evaluation/index.d.ts.map +0 -1
- package/dist/evaluation/index.js +0 -13
- package/dist/evaluation/index.js.map +0 -1
- package/dist/generator/index.d.ts +0 -7
- package/dist/generator/index.d.ts.map +0 -1
- package/dist/generator/index.js +0 -7
- package/dist/generator/index.js.map +0 -1
- package/dist/generator/ir.d.ts +0 -348
- package/dist/generator/ir.d.ts.map +0 -1
- package/dist/generator/ir.js +0 -715
- package/dist/generator/ir.js.map +0 -1
- package/dist/generator/lowering.d.ts +0 -11
- package/dist/generator/lowering.d.ts.map +0 -1
- package/dist/generator/lowering.js +0 -369
- package/dist/generator/lowering.js.map +0 -1
- package/dist/generator/normalizer.d.ts +0 -16
- package/dist/generator/normalizer.d.ts.map +0 -1
- package/dist/generator/normalizer.js +0 -181
- package/dist/generator/normalizer.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lexer/index.d.ts +0 -7
- package/dist/lexer/index.d.ts.map +0 -1
- package/dist/lexer/index.js +0 -7
- package/dist/lexer/index.js.map +0 -1
- package/dist/lexer/lexer.d.ts +0 -59
- package/dist/lexer/lexer.d.ts.map +0 -1
- package/dist/lexer/lexer.js +0 -433
- package/dist/lexer/lexer.js.map +0 -1
- package/dist/lexer/source-location.d.ts +0 -41
- package/dist/lexer/source-location.d.ts.map +0 -1
- package/dist/lexer/source-location.js +0 -33
- package/dist/lexer/source-location.js.map +0 -1
- package/dist/lexer/tokens.d.ts +0 -47
- package/dist/lexer/tokens.d.ts.map +0 -1
- package/dist/lexer/tokens.js +0 -73
- package/dist/lexer/tokens.js.map +0 -1
- package/dist/loader.d.ts +0 -23
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -62
- package/dist/loader.js.map +0 -1
- package/dist/lowering/context.d.ts +0 -96
- package/dist/lowering/context.d.ts.map +0 -1
- package/dist/lowering/context.js +0 -42
- package/dist/lowering/context.js.map +0 -1
- package/dist/lowering/errors.d.ts +0 -84
- package/dist/lowering/errors.d.ts.map +0 -1
- package/dist/lowering/errors.js +0 -81
- package/dist/lowering/errors.js.map +0 -1
- package/dist/lowering/index.d.ts +0 -20
- package/dist/lowering/index.d.ts.map +0 -1
- package/dist/lowering/index.js +0 -13
- package/dist/lowering/index.js.map +0 -1
- package/dist/lowering/lower-expr.d.ts +0 -76
- package/dist/lowering/lower-expr.d.ts.map +0 -1
- package/dist/lowering/lower-expr.js +0 -366
- package/dist/lowering/lower-expr.js.map +0 -1
- package/dist/lowering/lower-patch.d.ts +0 -231
- package/dist/lowering/lower-patch.d.ts.map +0 -1
- package/dist/lowering/lower-patch.js +0 -146
- package/dist/lowering/lower-patch.js.map +0 -1
- package/dist/lowering/lower-runtime-patch.d.ts +0 -100
- package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
- package/dist/lowering/lower-runtime-patch.js +0 -49
- package/dist/lowering/lower-runtime-patch.js.map +0 -1
- package/dist/mel-module.d.ts +0 -13
- package/dist/mel-module.d.ts.map +0 -1
- package/dist/mel-module.js +0 -33
- package/dist/mel-module.js.map +0 -1
- package/dist/parser/ast.d.ts +0 -344
- package/dist/parser/ast.d.ts.map +0 -1
- package/dist/parser/ast.js +0 -24
- package/dist/parser/ast.js.map +0 -1
- package/dist/parser/index.d.ts +0 -7
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -7
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -92
- package/dist/parser/parser.d.ts.map +0 -1
- package/dist/parser/parser.js +0 -892
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/precedence.d.ts +0 -44
- package/dist/parser/precedence.d.ts.map +0 -1
- package/dist/parser/precedence.js +0 -69
- package/dist/parser/precedence.js.map +0 -1
- package/dist/renderer/expr-node.d.ts +0 -172
- package/dist/renderer/expr-node.d.ts.map +0 -1
- package/dist/renderer/expr-node.js +0 -218
- package/dist/renderer/expr-node.js.map +0 -1
- package/dist/renderer/fragment.d.ts +0 -84
- package/dist/renderer/fragment.d.ts.map +0 -1
- package/dist/renderer/fragment.js +0 -172
- package/dist/renderer/fragment.js.map +0 -1
- package/dist/renderer/index.d.ts +0 -23
- package/dist/renderer/index.d.ts.map +0 -1
- package/dist/renderer/index.js +0 -27
- package/dist/renderer/index.js.map +0 -1
- package/dist/renderer/patch-op.d.ts +0 -82
- package/dist/renderer/patch-op.d.ts.map +0 -1
- package/dist/renderer/patch-op.js +0 -204
- package/dist/renderer/patch-op.js.map +0 -1
- package/dist/renderer/type-expr.d.ts +0 -61
- package/dist/renderer/type-expr.d.ts.map +0 -1
- package/dist/renderer/type-expr.js +0 -131
- package/dist/renderer/type-expr.js.map +0 -1
- package/dist/vite.d.ts.map +0 -1
- package/loader.cjs +0 -22
package/README.md
CHANGED
|
@@ -46,13 +46,14 @@ pnpm add -D @manifesto-ai/compiler
|
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
49
|
-
## Bundler
|
|
49
|
+
## Bundler Integration (unplugin)
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
The compiler uses [unplugin](https://github.com/unjs/unplugin) to provide a unified MEL plugin for all major bundlers. One implementation, every bundler.
|
|
52
52
|
|
|
53
53
|
### Vite
|
|
54
54
|
|
|
55
55
|
```typescript
|
|
56
|
+
// vite.config.ts
|
|
56
57
|
import { defineConfig } from "vite";
|
|
57
58
|
import { melPlugin } from "@manifesto-ai/compiler/vite";
|
|
58
59
|
|
|
@@ -61,28 +62,75 @@ export default defineConfig({
|
|
|
61
62
|
});
|
|
62
63
|
```
|
|
63
64
|
|
|
64
|
-
###
|
|
65
|
+
### Next.js / Webpack
|
|
65
66
|
|
|
66
|
-
```
|
|
67
|
-
|
|
67
|
+
```javascript
|
|
68
|
+
// next.config.js
|
|
69
|
+
const mel = require("@manifesto-ai/compiler/webpack");
|
|
70
|
+
|
|
71
|
+
module.exports = {
|
|
72
|
+
webpack: (config) => {
|
|
73
|
+
config.plugins.push(mel());
|
|
74
|
+
return config;
|
|
75
|
+
},
|
|
76
|
+
};
|
|
68
77
|
```
|
|
69
78
|
|
|
70
|
-
###
|
|
79
|
+
### Rollup
|
|
71
80
|
|
|
72
81
|
```javascript
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
// rollup.config.js
|
|
83
|
+
import { melPlugin } from "@manifesto-ai/compiler/rollup";
|
|
84
|
+
|
|
85
|
+
export default { plugins: [melPlugin()] };
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### esbuild
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
import { melPlugin } from "@manifesto-ai/compiler/esbuild";
|
|
92
|
+
|
|
93
|
+
await esbuild.build({ plugins: [melPlugin()] });
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Rspack
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
const mel = require("@manifesto-ai/compiler/rspack");
|
|
100
|
+
|
|
101
|
+
module.exports = { plugins: [mel()] };
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Node / tsx (ESM Loader)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npx tsx --loader @manifesto-ai/compiler/node-loader main.ts
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Plugin Options
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
melPlugin({
|
|
114
|
+
include: /\.mel$/, // File filter (default: /\.mel$/)
|
|
115
|
+
codegen: { // Optional: auto-generate types
|
|
116
|
+
outDir: "src/generated", // Output directory
|
|
117
|
+
plugins: [/* custom */], // Defaults to TS + Zod plugins
|
|
81
118
|
},
|
|
82
|
-
};
|
|
119
|
+
});
|
|
83
120
|
```
|
|
84
121
|
|
|
85
|
-
`
|
|
122
|
+
The `codegen` option requires `@manifesto-ai/codegen` as a peer dependency. When enabled, TypeScript types and Zod schemas are generated automatically at build time.
|
|
123
|
+
|
|
124
|
+
### Subpath Exports
|
|
125
|
+
|
|
126
|
+
| Export | Bundler |
|
|
127
|
+
| --- | --- |
|
|
128
|
+
| `@manifesto-ai/compiler/vite` | Vite |
|
|
129
|
+
| `@manifesto-ai/compiler/webpack` | Webpack / Next.js |
|
|
130
|
+
| `@manifesto-ai/compiler/rollup` | Rollup |
|
|
131
|
+
| `@manifesto-ai/compiler/esbuild` | esbuild |
|
|
132
|
+
| `@manifesto-ai/compiler/rspack` | Rspack |
|
|
133
|
+
| `@manifesto-ai/compiler/node-loader` | Node ESM loader hooks |
|
|
86
134
|
|
|
87
135
|
---
|
|
88
136
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatDiagnostic
|
|
3
|
+
} from "./chunk-QXLPDCLA.js";
|
|
4
|
+
import {
|
|
5
|
+
compileMelDomain
|
|
6
|
+
} from "./chunk-QP2LGMBA.js";
|
|
7
|
+
|
|
8
|
+
// src/unplugin.ts
|
|
9
|
+
import { createUnplugin } from "unplugin";
|
|
10
|
+
function normalizeId(id) {
|
|
11
|
+
return id.split("?", 1)[0];
|
|
12
|
+
}
|
|
13
|
+
function testRegex(regex, value) {
|
|
14
|
+
regex.lastIndex = 0;
|
|
15
|
+
return regex.test(value);
|
|
16
|
+
}
|
|
17
|
+
var unpluginMel = createUnplugin((options = {}) => {
|
|
18
|
+
const include = options.include ?? /\.mel$/;
|
|
19
|
+
const compiledSchemas = /* @__PURE__ */ new Map();
|
|
20
|
+
return {
|
|
21
|
+
name: "manifesto:mel",
|
|
22
|
+
enforce: "pre",
|
|
23
|
+
transformInclude(id) {
|
|
24
|
+
return testRegex(include, normalizeId(id));
|
|
25
|
+
},
|
|
26
|
+
transform(source, id) {
|
|
27
|
+
const sourceId = normalizeId(id);
|
|
28
|
+
const result = compileMelDomain(source, { mode: "domain" });
|
|
29
|
+
if (result.errors.length > 0) {
|
|
30
|
+
const details = result.errors.map(formatDiagnostic).join("\n");
|
|
31
|
+
throw new Error(`MEL compilation failed for ${sourceId}
|
|
32
|
+
${details}`);
|
|
33
|
+
}
|
|
34
|
+
if (!result.schema) {
|
|
35
|
+
throw new Error(`MEL compilation produced no schema for ${sourceId}`);
|
|
36
|
+
}
|
|
37
|
+
if (options.codegen) {
|
|
38
|
+
compiledSchemas.set(sourceId, result.schema);
|
|
39
|
+
}
|
|
40
|
+
const serializedSchema = JSON.stringify(result.schema, null, 2);
|
|
41
|
+
return `export default ${serializedSchema};
|
|
42
|
+
`;
|
|
43
|
+
},
|
|
44
|
+
async buildEnd() {
|
|
45
|
+
if (!options.codegen || compiledSchemas.size === 0) return;
|
|
46
|
+
let codegen;
|
|
47
|
+
try {
|
|
48
|
+
codegen = await import("@manifesto-ai/codegen");
|
|
49
|
+
} catch {
|
|
50
|
+
console.warn(
|
|
51
|
+
"[manifesto:mel] codegen option is enabled but @manifesto-ai/codegen is not installed. Skipping."
|
|
52
|
+
);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const plugins = options.codegen.plugins ?? [
|
|
56
|
+
codegen.createTsPlugin(),
|
|
57
|
+
codegen.createZodPlugin()
|
|
58
|
+
];
|
|
59
|
+
for (const [sourceId, schema] of compiledSchemas) {
|
|
60
|
+
await codegen.generate({
|
|
61
|
+
schema,
|
|
62
|
+
outDir: options.codegen.outDir,
|
|
63
|
+
plugins,
|
|
64
|
+
sourceId
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
unpluginMel
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=chunk-DJY6BFGK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/unplugin.ts"],"sourcesContent":["/**\n * Unified MEL plugin via unplugin.\n *\n * Single implementation that targets Vite, Webpack, Rollup, esbuild, and Rspack.\n */\n\nimport { createUnplugin } from \"unplugin\";\nimport type { DomainSchema } from \"@manifesto-ai/core\";\nimport { compileMelDomain } from \"./api/index.js\";\nimport { formatDiagnostic } from \"./mel-module.js\";\n\nexport type MelCodegenOptions = {\n readonly outDir: string;\n readonly plugins?: readonly import(\"@manifesto-ai/codegen\").CodegenPlugin[];\n};\n\nexport type MelPluginOptions = {\n readonly include?: RegExp;\n readonly codegen?: MelCodegenOptions | false;\n};\n\nfunction normalizeId(id: string): string {\n return id.split(\"?\", 1)[0];\n}\n\nfunction testRegex(regex: RegExp, value: string): boolean {\n regex.lastIndex = 0;\n return regex.test(value);\n}\n\nexport const unpluginMel = createUnplugin((options: MelPluginOptions = {}) => {\n const include = options.include ?? /\\.mel$/;\n const compiledSchemas = new Map<string, DomainSchema>();\n\n return {\n name: \"manifesto:mel\",\n enforce: \"pre\" as const,\n\n transformInclude(id: string) {\n return testRegex(include, normalizeId(id));\n },\n\n transform(source: string, id: string) {\n const sourceId = normalizeId(id);\n const result = compileMelDomain(source, { mode: \"domain\" });\n\n if (result.errors.length > 0) {\n const details = result.errors.map(formatDiagnostic).join(\"\\n\");\n throw new Error(`MEL compilation failed for ${sourceId}\\n${details}`);\n }\n\n if (!result.schema) {\n throw new Error(`MEL compilation produced no schema for ${sourceId}`);\n }\n\n if (options.codegen) {\n compiledSchemas.set(sourceId, result.schema);\n }\n\n const serializedSchema = JSON.stringify(result.schema, null, 2);\n return `export default ${serializedSchema};\\n`;\n },\n\n async buildEnd() {\n if (!options.codegen || compiledSchemas.size === 0) return;\n\n let codegen: typeof import(\"@manifesto-ai/codegen\");\n try {\n codegen = await import(\"@manifesto-ai/codegen\");\n } catch {\n console.warn(\n \"[manifesto:mel] codegen option is enabled but @manifesto-ai/codegen is not installed. Skipping.\"\n );\n return;\n }\n\n const plugins = options.codegen.plugins ?? [\n codegen.createTsPlugin(),\n codegen.createZodPlugin(),\n ];\n\n for (const [sourceId, schema] of compiledSchemas) {\n await codegen.generate({\n schema,\n outDir: options.codegen.outDir,\n plugins,\n sourceId,\n });\n }\n },\n };\n});\n"],"mappings":";;;;;;;;AAMA,SAAS,sBAAsB;AAe/B,SAAS,YAAY,IAAoB;AACvC,SAAO,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC;AAC3B;AAEA,SAAS,UAAU,OAAe,OAAwB;AACxD,QAAM,YAAY;AAClB,SAAO,MAAM,KAAK,KAAK;AACzB;AAEO,IAAM,cAAc,eAAe,CAAC,UAA4B,CAAC,MAAM;AAC5E,QAAM,UAAU,QAAQ,WAAW;AACnC,QAAM,kBAAkB,oBAAI,IAA0B;AAEtD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,iBAAiB,IAAY;AAC3B,aAAO,UAAU,SAAS,YAAY,EAAE,CAAC;AAAA,IAC3C;AAAA,IAEA,UAAU,QAAgB,IAAY;AACpC,YAAM,WAAW,YAAY,EAAE;AAC/B,YAAM,SAAS,iBAAiB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1D,UAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,cAAM,UAAU,OAAO,OAAO,IAAI,gBAAgB,EAAE,KAAK,IAAI;AAC7D,cAAM,IAAI,MAAM,8BAA8B,QAAQ;AAAA,EAAK,OAAO,EAAE;AAAA,MACtE;AAEA,UAAI,CAAC,OAAO,QAAQ;AAClB,cAAM,IAAI,MAAM,0CAA0C,QAAQ,EAAE;AAAA,MACtE;AAEA,UAAI,QAAQ,SAAS;AACnB,wBAAgB,IAAI,UAAU,OAAO,MAAM;AAAA,MAC7C;AAEA,YAAM,mBAAmB,KAAK,UAAU,OAAO,QAAQ,MAAM,CAAC;AAC9D,aAAO,kBAAkB,gBAAgB;AAAA;AAAA,IAC3C;AAAA,IAEA,MAAM,WAAW;AACf,UAAI,CAAC,QAAQ,WAAW,gBAAgB,SAAS,EAAG;AAEpD,UAAI;AACJ,UAAI;AACF,kBAAU,MAAM,OAAO,uBAAuB;AAAA,MAChD,QAAQ;AACN,gBAAQ;AAAA,UACN;AAAA,QACF;AACA;AAAA,MACF;AAEA,YAAM,UAAU,QAAQ,QAAQ,WAAW;AAAA,QACzC,QAAQ,eAAe;AAAA,QACvB,QAAQ,gBAAgB;AAAA,MAC1B;AAEA,iBAAW,CAAC,UAAU,MAAM,KAAK,iBAAiB;AAChD,cAAM,QAAQ,SAAS;AAAA,UACrB;AAAA,UACA,QAAQ,QAAQ,QAAQ;AAAA,UACxB;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|