@bluelibs/runner-dev 5.1.0 → 6.0.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/AI.md +80 -6
- package/README.md +216 -22
- package/dist/cli/generators/scaffold/templates/package.json.d.ts +2 -2
- package/dist/cli/generators/scaffold/templates/package.json.js +2 -2
- package/dist/cli/generators/scaffold.js +1 -135
- package/dist/cli/generators/scaffold.js.map +1 -1
- package/dist/cli/generators/templates.js +2 -1
- package/dist/cli/generators/templates.js.map +1 -1
- package/dist/generated/resolvers-types.d.ts +545 -112
- package/dist/index.d.ts +39 -39
- package/dist/resources/cli.config.resource.d.ts +1 -1
- package/dist/resources/cli.config.resource.js +2 -2
- package/dist/resources/cli.config.resource.js.map +1 -1
- package/dist/resources/coverage.resource.d.ts +2 -2
- package/dist/resources/coverage.resource.js +3 -3
- package/dist/resources/coverage.resource.js.map +1 -1
- package/dist/resources/dev.resource.d.ts +1 -1
- package/dist/resources/dev.resource.js +2 -2
- package/dist/resources/dev.resource.js.map +1 -1
- package/dist/resources/docs.generator.resource.d.ts +4 -3
- package/dist/resources/docs.generator.resource.js +2 -2
- package/dist/resources/docs.generator.resource.js.map +1 -1
- package/dist/resources/graphql-accumulator.resource.d.ts +2 -2
- package/dist/resources/graphql-accumulator.resource.js +7 -3
- package/dist/resources/graphql-accumulator.resource.js.map +1 -1
- package/dist/resources/graphql.cli.resource.d.ts +1 -1
- package/dist/resources/graphql.cli.resource.js +2 -2
- package/dist/resources/graphql.cli.resource.js.map +1 -1
- package/dist/resources/graphql.query.cli.task.d.ts +14 -16
- package/dist/resources/graphql.query.cli.task.js +3 -3
- package/dist/resources/graphql.query.cli.task.js.map +1 -1
- package/dist/resources/graphql.query.task.d.ts +18 -18
- package/dist/resources/graphql.query.task.js +4 -4
- package/dist/resources/graphql.query.task.js.map +1 -1
- package/dist/resources/http.tag.d.ts +1 -1
- package/dist/resources/http.tag.js +2 -2
- package/dist/resources/http.tag.js.map +1 -1
- package/dist/resources/introspector.cli.resource.d.ts +2 -2
- package/dist/resources/introspector.cli.resource.js +37 -3
- package/dist/resources/introspector.cli.resource.js.map +1 -1
- package/dist/resources/introspector.resource.d.ts +3 -2
- package/dist/resources/introspector.resource.js +6 -6
- package/dist/resources/introspector.resource.js.map +1 -1
- package/dist/resources/live.resource.d.ts +7 -6
- package/dist/resources/live.resource.js +64 -25
- package/dist/resources/live.resource.js.map +1 -1
- package/dist/resources/models/Introspector.d.ts +59 -15
- package/dist/resources/models/Introspector.js +467 -137
- package/dist/resources/models/Introspector.js.map +1 -1
- package/dist/resources/models/durable.runtime.d.ts +1 -1
- package/dist/resources/models/durable.runtime.js +53 -2
- package/dist/resources/models/durable.runtime.js.map +1 -1
- package/dist/resources/models/durable.tools.d.ts +1 -1
- package/dist/resources/models/durable.tools.js +6 -3
- package/dist/resources/models/durable.tools.js.map +1 -1
- package/dist/resources/models/initializeFromStore.js +126 -19
- package/dist/resources/models/initializeFromStore.js.map +1 -1
- package/dist/resources/models/initializeFromStore.utils.d.ts +12 -7
- package/dist/resources/models/initializeFromStore.utils.js +319 -23
- package/dist/resources/models/initializeFromStore.utils.js.map +1 -1
- package/dist/resources/models/introspector.tools.js +18 -6
- package/dist/resources/models/introspector.tools.js.map +1 -1
- package/dist/resources/routeHandlers/createLiveStreamHandler.d.ts +16 -0
- package/dist/resources/routeHandlers/createLiveStreamHandler.js +127 -0
- package/dist/resources/routeHandlers/createLiveStreamHandler.js.map +1 -0
- package/dist/resources/routeHandlers/getDocsData.d.ts +4 -0
- package/dist/resources/routeHandlers/getDocsData.js +28 -0
- package/dist/resources/routeHandlers/getDocsData.js.map +1 -1
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.d.ts +26 -23
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.js +10 -9
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.js.map +1 -1
- package/dist/resources/routeHandlers/requestCorrelation.d.ts +11 -0
- package/dist/resources/routeHandlers/requestCorrelation.js +29 -0
- package/dist/resources/routeHandlers/requestCorrelation.js.map +1 -0
- package/dist/resources/server.resource.d.ts +20 -20
- package/dist/resources/server.resource.js +17 -5
- package/dist/resources/server.resource.js.map +1 -1
- package/dist/resources/swap.cli.resource.d.ts +4 -4
- package/dist/resources/swap.cli.resource.js +2 -2
- package/dist/resources/swap.cli.resource.js.map +1 -1
- package/dist/resources/swap.resource.d.ts +7 -6
- package/dist/resources/swap.resource.js +188 -38
- package/dist/resources/swap.resource.js.map +1 -1
- package/dist/resources/swap.tools.d.ts +3 -2
- package/dist/resources/swap.tools.js +27 -27
- package/dist/resources/swap.tools.js.map +1 -1
- package/dist/resources/telemetry.resource.d.ts +1 -1
- package/dist/resources/telemetry.resource.js +46 -43
- package/dist/resources/telemetry.resource.js.map +1 -1
- package/dist/runner-compat.d.ts +85 -0
- package/dist/runner-compat.js +178 -0
- package/dist/runner-compat.js.map +1 -0
- package/dist/runner-node-compat.d.ts +2 -0
- package/dist/runner-node-compat.js +28 -0
- package/dist/runner-node-compat.js.map +1 -0
- package/dist/schema/index.js +8 -8
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/model.d.ts +100 -20
- package/dist/schema/model.js.map +1 -1
- package/dist/schema/query.js +25 -1
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/types/AllType.js +13 -2
- package/dist/schema/types/AllType.js.map +1 -1
- package/dist/schema/types/BaseElementCommon.js +10 -0
- package/dist/schema/types/BaseElementCommon.js.map +1 -1
- package/dist/schema/types/ErrorType.js +1 -1
- package/dist/schema/types/ErrorType.js.map +1 -1
- package/dist/schema/types/EventType.js +19 -2
- package/dist/schema/types/EventType.js.map +1 -1
- package/dist/schema/types/InterceptorOwnersType.d.ts +2 -0
- package/dist/schema/types/InterceptorOwnersType.js +63 -0
- package/dist/schema/types/InterceptorOwnersType.js.map +1 -0
- package/dist/schema/types/LaneSummaryTypes.d.ts +3 -0
- package/dist/schema/types/LaneSummaryTypes.js +19 -0
- package/dist/schema/types/LaneSummaryTypes.js.map +1 -0
- package/dist/schema/types/LiveType.js +81 -76
- package/dist/schema/types/LiveType.js.map +1 -1
- package/dist/schema/types/ResourceType.js +101 -15
- package/dist/schema/types/ResourceType.js.map +1 -1
- package/dist/schema/types/RunOptionsType.d.ts +2 -0
- package/dist/schema/types/RunOptionsType.js +107 -0
- package/dist/schema/types/RunOptionsType.js.map +1 -0
- package/dist/schema/types/TagType.js +35 -4
- package/dist/schema/types/TagType.js.map +1 -1
- package/dist/schema/types/TaskType.js +20 -0
- package/dist/schema/types/TaskType.js.map +1 -1
- package/dist/schema/types/index.d.ts +4 -2
- package/dist/schema/types/index.js +10 -7
- package/dist/schema/types/index.js.map +1 -1
- package/dist/schema/types/middleware/common.d.ts +3 -2
- package/dist/schema/types/middleware/common.js +19 -13
- package/dist/schema/types/middleware/common.js.map +1 -1
- package/dist/ui/.vite/manifest.json +2 -2
- package/dist/ui/assets/docs-Btkv97Ls.js +302 -0
- package/dist/ui/assets/docs-Btkv97Ls.js.map +1 -0
- package/dist/ui/assets/docs-CipvKUxZ.css +1 -0
- package/dist/utils/healthCollectors.d.ts +37 -0
- package/dist/utils/healthCollectors.js +147 -0
- package/dist/utils/healthCollectors.js.map +1 -0
- package/dist/utils/lane-resources.d.ts +55 -0
- package/dist/utils/lane-resources.js +143 -0
- package/dist/utils/lane-resources.js.map +1 -0
- package/dist/utils/zod.js +36 -3
- package/dist/utils/zod.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -6
- package/readmes/runner-AI.md +740 -0
- package/readmes/runner-durable-workflows.md +2247 -0
- package/readmes/runner-full-guide.md +5869 -0
- package/readmes/runner-remote-lanes.md +909 -0
- package/dist/ui/assets/docs-B_-zFz4-.css +0 -1
- package/dist/ui/assets/docs-Be-GHfZi.js +0 -353
- package/dist/ui/assets/docs-Be-GHfZi.js.map +0 -1
|
@@ -32,141 +32,7 @@ const initUtils_1 = require("./initUtils");
|
|
|
32
32
|
const templates = __importStar(require("./scaffold/templates"));
|
|
33
33
|
async function scaffold(opts) {
|
|
34
34
|
const { targetDir, projectName } = opts;
|
|
35
|
-
//
|
|
36
|
-
const _pkg = {
|
|
37
|
-
name: projectName,
|
|
38
|
-
version: "0.1.0",
|
|
39
|
-
private: true,
|
|
40
|
-
type: "module",
|
|
41
|
-
scripts: {
|
|
42
|
-
dev: "tsx watch src/main.ts",
|
|
43
|
-
start: "node --enable-source-maps dist/main.js",
|
|
44
|
-
build: "tsc -p tsconfig.json",
|
|
45
|
-
test: "jest",
|
|
46
|
-
"test:watch": "jest --watch",
|
|
47
|
-
"schema:sdl": "runner-dev schema sdl",
|
|
48
|
-
},
|
|
49
|
-
dependencies: {
|
|
50
|
-
"@bluelibs/runner": "^5.2.0",
|
|
51
|
-
},
|
|
52
|
-
devDependencies: {
|
|
53
|
-
"@bluelibs/runner-dev": "^5.0.0",
|
|
54
|
-
typescript: "^5.6.3",
|
|
55
|
-
tsx: "^4.19.2",
|
|
56
|
-
jest: "^29.7.0",
|
|
57
|
-
"ts-jest": "^29.1.1",
|
|
58
|
-
"@types/jest": "^29.5.12",
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
const _tsconfig = {
|
|
62
|
-
compilerOptions: {
|
|
63
|
-
target: "ESNext",
|
|
64
|
-
module: "Node16",
|
|
65
|
-
moduleResolution: "node16",
|
|
66
|
-
strict: true,
|
|
67
|
-
esModuleInterop: true,
|
|
68
|
-
forceConsistentCasingInFileNames: true,
|
|
69
|
-
declaration: true,
|
|
70
|
-
outDir: "dist",
|
|
71
|
-
rootDir: "src",
|
|
72
|
-
skipLibCheck: true,
|
|
73
|
-
resolveJsonModule: true,
|
|
74
|
-
lib: ["ESNext"],
|
|
75
|
-
},
|
|
76
|
-
include: ["src"],
|
|
77
|
-
};
|
|
78
|
-
const _jestConfig = `/** @type {import('jest').Config} */
|
|
79
|
-
module.exports = {
|
|
80
|
-
preset: 'ts-jest/presets/default-esm',
|
|
81
|
-
testEnvironment: 'node',
|
|
82
|
-
roots: ['<rootDir>/src'],
|
|
83
|
-
moduleFileExtensions: ['ts', 'tsx', 'js'],
|
|
84
|
-
extensionsToTreatAsEsm: ['.ts', '.tsx'],
|
|
85
|
-
transform: {
|
|
86
|
-
'^.+\\.(ts|tsx)$': [
|
|
87
|
-
'ts-jest',
|
|
88
|
-
{
|
|
89
|
-
useESM: true,
|
|
90
|
-
tsconfig: 'tsconfig.jest.json',
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
`;
|
|
96
|
-
const _tsconfigJest = {
|
|
97
|
-
extends: "./tsconfig.json",
|
|
98
|
-
compilerOptions: {
|
|
99
|
-
module: "CommonJS",
|
|
100
|
-
moduleResolution: "node",
|
|
101
|
-
target: "ES2019",
|
|
102
|
-
esModuleInterop: true,
|
|
103
|
-
isolatedModules: false,
|
|
104
|
-
},
|
|
105
|
-
include: ["src/**/*.ts", "src/**/*.tsx"],
|
|
106
|
-
};
|
|
107
|
-
const _mainTs = `
|
|
108
|
-
import { run, resource } from '@bluelibs/runner';
|
|
109
|
-
import { dev } from '@bluelibs/runner-dev';
|
|
110
|
-
|
|
111
|
-
// Minimal Runner app using runner-dev's dev resource
|
|
112
|
-
const app = resource({
|
|
113
|
-
id: 'app.${projectName}',
|
|
114
|
-
register: [
|
|
115
|
-
dev.with({ port: 1337 }),
|
|
116
|
-
],
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
run(app)
|
|
120
|
-
.then(() => {
|
|
121
|
-
// eslint-disable-next-line no-console
|
|
122
|
-
console.log('Runner app started on http://localhost:1337');
|
|
123
|
-
})
|
|
124
|
-
.catch((err) => {
|
|
125
|
-
// eslint-disable-next-line no-console
|
|
126
|
-
console.error(err);
|
|
127
|
-
process.exit(1);
|
|
128
|
-
});
|
|
129
|
-
`;
|
|
130
|
-
const _exampleTest = `describe('smoke', () => {
|
|
131
|
-
it('works', () => {
|
|
132
|
-
expect(1 + 1).toBe(2);
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
`;
|
|
136
|
-
const _readme = `# ${projectName}
|
|
137
|
-
|
|
138
|
-
Generated by \`runner-dev new\`.
|
|
139
|
-
|
|
140
|
-
## Quick start
|
|
141
|
-
|
|
142
|
-
1. Install dependencies:
|
|
143
|
-
- npm install
|
|
144
|
-
2. Start the dev server:
|
|
145
|
-
- npm run dev
|
|
146
|
-
|
|
147
|
-
The server starts on http://localhost:1337
|
|
148
|
-
|
|
149
|
-
- GraphQL endpoint: http://localhost:1337/graphql (how to query your guts and live telemetry)
|
|
150
|
-
- Voyager UI: http://localhost:1337/voyager (how the guts of your app look like)
|
|
151
|
-
- Project docs: http://localhost:1337/docs (beautiful docs with live telemetry and easy task and event dispatching)
|
|
152
|
-
|
|
153
|
-
## Scripts
|
|
154
|
-
|
|
155
|
-
- dev: Run with tsx watch (TypeScript ESM)
|
|
156
|
-
- build: Type-check and emit to dist
|
|
157
|
-
- start: Run built app
|
|
158
|
-
- test: Run Jest
|
|
159
|
-
|
|
160
|
-
## Useful CLI commands
|
|
161
|
-
|
|
162
|
-
These commands are available from \`@bluelibs/runner-dev\`:
|
|
163
|
-
|
|
164
|
-
- Query your API:
|
|
165
|
-
- ENDPOINT=http://localhost:1337/graphql npx runner-dev query 'query { tasks { id } }' --format pretty
|
|
166
|
-
- Print the GraphQL schema SDL:
|
|
167
|
-
- npx runner-dev schema sdl --endpoint http://localhost:1337/graphql
|
|
168
|
-
|
|
169
|
-
`;
|
|
35
|
+
// Generation is fully delegated to templates.*
|
|
170
36
|
// Use template renderers
|
|
171
37
|
await (0, initUtils_1.writeJson)(path_1.default.join(targetDir, "package.json"), templates.packageJson(projectName));
|
|
172
38
|
await (0, initUtils_1.writeJson)(path_1.default.join(targetDir, "tsconfig.json"), templates.tsconfig());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/cli/generators/scaffold.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/cli/generators/scaffold.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,4BAkCC;AA3CD,gDAAwB;AACxB,2CAA8E;AAC9E,gEAAkD;AAO3C,KAAK,UAAU,QAAQ,CAAC,IAAqB;IAClD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAExC,+CAA+C;IAE/C,yBAAyB;IACzB,MAAM,IAAA,qBAAS,EACb,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EACpC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CACnC,CAAC;IACF,MAAM,IAAA,qBAAS,EAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,MAAM,IAAA,qBAAS,EACb,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EACvC,SAAS,CAAC,UAAU,EAAE,CACvB,CAAC;IACF,MAAM,IAAA,qBAAS,EACb,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAC1C,SAAS,CAAC,YAAY,EAAE,CACzB,CAAC;IAEF,MAAM,IAAA,qBAAS,EAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAA,qBAAS,EACb,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,EACtC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9B,CAAC;IACF,MAAM,IAAA,qBAAS,EACb,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,EAC3C,SAAS,CAAC,QAAQ,EAAE,CACrB,CAAC;IACF,MAAM,IAAA,qBAAS,EACb,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EACjC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9B,CAAC;IACF,MAAM,IAAA,0BAAc,EAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -150,7 +150,8 @@ export const ${camel} = taskMiddleware<${pascal}Config, ${pascal}Input, ${pascal
|
|
|
150
150
|
title: '${pascal} Task Middleware',
|
|
151
151
|
description: 'TODO: Add description for ${pascal} task middleware',
|
|
152
152
|
},
|
|
153
|
-
//
|
|
153
|
+
// Auto-apply globally via resource.subtree({ tasks: { middleware: [${camel}] } })
|
|
154
|
+
// or intercept executions with globals.resources.taskRunner.intercept(...).
|
|
154
155
|
run: async ({ task, next }, deps, config) => {
|
|
155
156
|
// pre-process task.input
|
|
156
157
|
const result = await next(task.input as ${pascal}Input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/cli/generators/templates.ts"],"names":[],"mappings":";;AAOA,4CAgCC;AAED,oCAgCC;AAED,sCAsBC;AAED,oCA0BC;AAED,kCA6BC;AAED,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/cli/generators/templates.ts"],"names":[],"mappings":";;AAOA,4CAgCC;AAED,oCAgCC;AAED,sCAsBC;AAED,oCA0BC;AAED,kCA6BC;AAED,wDAqCC;AAED,gEA0BC;AAxND,SAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,EAAE,EACF,KAAK,EACL,MAAM,GACS;IACf,OAAO,GAAG,MAAM;;;mBAGC,MAAM;;;;mBAIN,MAAM;;;;eAIV,KAAK;SACX,EAAE;;cAEG,MAAM;8CAC0B,MAAM;;;;yBAI3B,MAAM,0BAA0B,MAAM;;mBAE5C,MAAM;;;;CAIxB,CAAC;AACF,CAAC;AAED,SAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,EAAE,EACF,KAAK,EACL,MAAM,GACS;IACf,OAAO,GAAG,MAAM;;;mBAGC,MAAM;;;;mBAIN,MAAM;;;;eAIV,KAAK;SACX,EAAE;;cAEG,MAAM;8CAC0B,MAAM;;;;wBAI5B,MAAM,yBAAyB,MAAM;mBAC1C,MAAM;;;;;CAKxB,CAAC;AACF,CAAC;AAED,SAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,EAAE,EACF,KAAK,EACL,MAAM,GACS;IACf,OAAO,GAAG,MAAM;;;mBAGC,MAAM;;;;eAIV,KAAK,YAAY,MAAM;SAC7B,EAAE;;cAEG,MAAM;8CAC0B,MAAM;;;;CAInD,CAAC;AACF,CAAC;AAED,SAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,EAAE,EACF,KAAK,EACL,MAAM,GACS;IACf,OAAO,GAAG,MAAM;;;mBAGC,MAAM;;;;eAIV,KAAK;SACX,EAAE;;cAEG,MAAM;8CAC0B,MAAM;;;;;;;;CAQnD,CAAC;AACF,CAAC;AAED,SAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,EAAE,EACF,KAAK,EACL,MAAM,GACS;IACf,OAAO,GAAG,MAAM;;;mBAGC,MAAM;;;;mBAIN,MAAM;;;;mBAIN,MAAM;;;;eAIV,KAAK,UAAU,MAAM,WAAW,MAAM,kBAAkB,MAAM;SACpE,EAAE;;cAEG,MAAM;8CAC0B,MAAM;;;CAGnD,CAAC;AACF,CAAC;AAED,SAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,EAAE,EACF,KAAK,EACL,MAAM,GACS;IACf,OAAO,GAAG,MAAM;;;mBAGC,MAAM;;;;mBAIN,MAAM;;;;mBAIN,MAAM;;;;eAIV,KAAK,qBAAqB,MAAM,WAAW,MAAM,UAAU,MAAM;SACvE,EAAE;;cAEG,MAAM;8CAC0B,MAAM;;wEAEoB,KAAK;;;;8CAI/B,MAAM;;uBAE7B,MAAM;;;CAG5B,CAAC;AACF,CAAC;AAED,SAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,EAAE,EACF,KAAK,EACL,MAAM,GACS;IACf,OAAO,GAAG,MAAM;;;mBAGC,MAAM;;;;eAIV,KAAK,yBAAyB,MAAM;SAC1C,EAAE;;cAEG,MAAM;8CAC0B,MAAM;;;;;;;;CAQnD,CAAC;AACF,CAAC"}
|