sonamu 0.9.20 → 0.10.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/dist/_virtual/_rolldown/runtime.js +36 -0
- package/dist/ai/agents/agent.js +5 -7
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/agents/types.js +1 -1
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +2 -3
- package/dist/ai/providers/rtzr/error.js +14 -29
- package/dist/ai/providers/rtzr/index.js +1 -2
- package/dist/ai/providers/rtzr/model.js +13 -20
- package/dist/ai/providers/rtzr/options.js +2 -3
- package/dist/ai/providers/rtzr/provider.js +2 -3
- package/dist/ai/providers/rtzr/utils.js +12 -21
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.js +21 -38
- package/dist/api/code-converters.js +41 -98
- package/dist/api/config.d.ts +1 -10
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +9 -8
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +80 -116
- package/dist/api/index.js +2 -3
- package/dist/api/secret.js +6 -10
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +200 -387
- package/dist/api/validator.js +5 -8
- package/dist/api/websocket-helpers.js +21 -32
- package/dist/auth/audit-log/builders.js +2 -3
- package/dist/auth/audit-log/events.js +2 -2
- package/dist/auth/audit-log/plugin.js +30 -61
- package/dist/auth/audit-log-ingestor.js +19 -41
- package/dist/auth/auth-generator.js +16 -41
- package/dist/auth/better-auth-entities.js +3 -4
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +18 -45
- package/dist/auth/plugins/entity-definitions/admin.js +2 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +2 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +2 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +2 -2
- package/dist/auth/plugins/entity-definitions/index.js +2 -3
- package/dist/auth/plugins/entity-definitions/jwt.js +2 -2
- package/dist/auth/plugins/entity-definitions/organization.js +2 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +2 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +2 -2
- package/dist/auth/plugins/entity-definitions/sso.js +2 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +2 -2
- package/dist/auth/plugins/entity-definitions/types.js +1 -1
- package/dist/auth/plugins/entity-definitions/username.js +2 -2
- package/dist/auth/plugins/index.js +1 -2
- package/dist/auth/plugins/wrappers/admin.js +2 -3
- package/dist/auth/plugins/wrappers/anonymous.js +2 -3
- package/dist/auth/plugins/wrappers/api-key.js +2 -3
- package/dist/auth/plugins/wrappers/index.js +1 -2
- package/dist/auth/plugins/wrappers/jwt.js +2 -3
- package/dist/auth/plugins/wrappers/organization.js +2 -3
- package/dist/auth/plugins/wrappers/passkey.js +2 -3
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.js +2 -3
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +2 -2
- package/dist/bin/cli.js +151 -258
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +55 -97
- package/dist/bin/hmr-hook-register.js +3 -3
- package/dist/bin/migrate-targets.d.ts +3 -0
- package/dist/bin/migrate-targets.d.ts.map +1 -0
- package/dist/bin/migrate-targets.js +11 -0
- package/dist/bin/test-command.js +25 -55
- package/dist/bin/ts-loader-register.js +5 -6
- package/dist/bin/ts-loader-registration.js +6 -13
- package/dist/cache/cache-manager.js +3 -4
- package/dist/cache/decorator.js +11 -21
- package/dist/cache/drivers.js +2 -3
- package/dist/cache/index.js +2 -3
- package/dist/cache/types.js +1 -1
- package/dist/cache-control/cache-control.js +21 -34
- package/dist/cache-control/types.js +1 -1
- package/dist/compress/compress.js +10 -10
- package/dist/compress/index.js +1 -2
- package/dist/compress/types.js +1 -1
- package/dist/cone/cone-generator.js +25 -63
- package/dist/database/_batch_update.js +26 -46
- package/dist/database/base-model.js +44 -97
- package/dist/database/base-model.types.js +1 -1
- package/dist/database/db.d.ts +8 -14
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +127 -72
- package/dist/database/knex.js +5 -8
- package/dist/database/puri-subset.types.js +1 -1
- package/dist/database/puri-wrapper.js +11 -15
- package/dist/database/puri.js +117 -234
- package/dist/database/puri.types.js +3 -4
- package/dist/database/transaction-context.js +4 -5
- package/dist/database/upsert-builder.js +109 -176
- package/dist/dict/en.d.ts +1 -0
- package/dist/dict/en.d.ts.map +1 -1
- package/dist/dict/en.js +4 -4
- package/dist/dict/index.js +2 -3
- package/dist/dict/ko.d.ts +1 -0
- package/dist/dict/ko.d.ts.map +1 -1
- package/dist/dict/ko.js +4 -4
- package/dist/dict/rc-keys.js +3 -4
- package/dist/dict/sd.js +8 -19
- package/dist/dict/sonamu-dictionary.js +141 -284
- package/dist/dict/types.js +1 -1
- package/dist/dict/utils.js +4 -5
- package/dist/entity/entity-manager.d.ts +2 -2
- package/dist/entity/entity-manager.js +34 -82
- package/dist/entity/entity-template-cone.js +33 -66
- package/dist/entity/entity.js +156 -310
- package/dist/env.d.ts +14 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +75 -0
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +7 -5
- package/dist/filter/index.js +1 -2
- package/dist/filter/types.js +3 -4
- package/dist/filter/utils.js +21 -54
- package/dist/index.js +8 -7
- package/dist/logger/category.js +6 -12
- package/dist/logger/configure.js +23 -34
- package/dist/migration/code-generation.js +146 -314
- package/dist/migration/index-where-predicate.js +52 -144
- package/dist/migration/migration-set.js +19 -33
- package/dist/migration/migrator.d.ts +2 -0
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +69 -53
- package/dist/migration/postgresql-schema-reader.js +126 -225
- package/dist/migration/slack-confirm.d.ts +1 -0
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +28 -38
- package/dist/migration/types.js +1 -1
- package/dist/naite/messaging-types.js +1 -1
- package/dist/naite/naite-reporter.js +15 -32
- package/dist/naite/naite.js +43 -76
- package/dist/ssr/index.js +6 -9
- package/dist/ssr/registry.js +10 -18
- package/dist/ssr/renderer.js +10 -21
- package/dist/ssr/types.js +1 -1
- package/dist/storage/base-file.js +5 -10
- package/dist/storage/buffered-file.js +3 -4
- package/dist/storage/drivers.js +2 -3
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +5 -9
- package/dist/storage/storage-manager.js +5 -5
- package/dist/storage/types.js +1 -1
- package/dist/storage/uploaded-file.js +4 -6
- package/dist/stream/index.js +1 -2
- package/dist/stream/sse.js +8 -13
- package/dist/stream/ws-audience-resolver.js +5 -5
- package/dist/stream/ws-audience.js +3 -4
- package/dist/stream/ws-cluster-bus.js +3 -4
- package/dist/stream/ws-core.js +1 -1
- package/dist/stream/ws-delivery.js +11 -25
- package/dist/stream/ws-local-connection-store.js +9 -18
- package/dist/stream/ws-presence-store.js +43 -97
- package/dist/stream/ws-registry.js +17 -22
- package/dist/stream/ws-telemetry-memory.js +38 -45
- package/dist/stream/ws-telemetry-trace.js +4 -6
- package/dist/stream/ws-telemetry.js +82 -135
- package/dist/stream/ws.js +47 -91
- package/dist/syncer/api-parser.js +81 -147
- package/dist/syncer/checksum.js +9 -20
- package/dist/syncer/code-generator.js +29 -47
- package/dist/syncer/entity-operations.js +17 -27
- package/dist/syncer/event-batcher.js +8 -15
- package/dist/syncer/file-patterns.js +3 -4
- package/dist/syncer/file-tracking.js +6 -10
- package/dist/syncer/index.js +1 -2
- package/dist/syncer/module-loader.js +10 -26
- package/dist/syncer/syncer-actions.js +19 -37
- package/dist/syncer/syncer.js +46 -98
- package/dist/syncer/watcher.js +12 -26
- package/dist/tasks/decorator.js +7 -11
- package/dist/tasks/step-wrapper.js +7 -8
- package/dist/tasks/workflow-manager.js +18 -25
- package/dist/template/entity-converter.js +40 -64
- package/dist/template/helpers.js +32 -63
- package/dist/template/implementations/entity.template.js +7 -11
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +25 -51
- package/dist/template/implementations/generated_http.template.js +31 -58
- package/dist/template/implementations/generated_sso.template.js +45 -85
- package/dist/template/implementations/init_types.template.js +4 -7
- package/dist/template/implementations/model.template.js +5 -10
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +4 -7
- package/dist/template/implementations/sd.template.js +17 -35
- package/dist/template/implementations/services.template.js +18 -30
- package/dist/template/implementations/view_form.template.js +72 -125
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.js +86 -143
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +5 -8
- package/dist/template/template-manager.js +13 -26
- package/dist/template/template-types.js +2 -3
- package/dist/template/template.js +7 -11
- package/dist/template/zod-converter.js +173 -348
- package/dist/testing/_relation-graph.js +18 -37
- package/dist/testing/bootstrap.js +5 -8
- package/dist/testing/data-explorer.js +34 -78
- package/dist/testing/dev-test-routes.js +54 -60
- package/dist/testing/dev-vitest-manager.js +33 -84
- package/dist/testing/faker-mappings.js +3 -4
- package/dist/testing/fixture-generator.d.ts +2 -1
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +159 -321
- package/dist/testing/fixture-loader.js +2 -2
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +124 -227
- package/dist/testing/global-setup.d.ts.map +1 -1
- package/dist/testing/global-setup.js +29 -17
- package/dist/testing/index.js +1 -2
- package/dist/testing/naite-vitest-reporter.js +2 -3
- package/dist/testing/parallel-db-manager.js +5 -3
- package/dist/testing/vitest-helpers.d.ts.map +1 -1
- package/dist/testing/vitest-helpers.js +15 -12
- package/dist/types/types.d.ts +14 -14
- package/dist/types/types.js +27 -50
- package/dist/ui/ai-api.js +6 -11
- package/dist/ui/ai-client.js +86 -134
- package/dist/ui/api.js +99 -195
- package/dist/ui/cdd-service.js +78 -130
- package/dist/ui/cdd-types.js +1 -1
- package/dist/ui-web/assets/{index-Df8q-fhb.js → index-DFStGyd0.js} +49 -49
- package/dist/ui-web/assets/index-Dx4ap5i4.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +13 -25
- package/dist/utils/class-name.js +3 -4
- package/dist/utils/console-util.js +11 -26
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +14 -12
- package/dist/utils/esm-utils.js +5 -8
- package/dist/utils/formatter.js +10 -22
- package/dist/utils/fs-utils.js +14 -25
- package/dist/utils/lodash-able.js +3 -4
- package/dist/utils/model.js +7 -14
- package/dist/utils/object-utils.js +41 -73
- package/dist/utils/path-utils.js +5 -9
- package/dist/utils/process-utils.js +4 -7
- package/dist/utils/sql-parser.js +6 -13
- package/dist/utils/type-utils.js +16 -26
- package/dist/utils/utils.js +18 -40
- package/dist/utils/zod-error.js +9 -16
- package/dist/vector/chunking.js +24 -37
- package/dist/vector/config.js +2 -2
- package/dist/vector/embedding.js +8 -19
- package/dist/vector/index.js +1 -2
- package/dist/vector/types.js +1 -1
- package/package.json +6 -6
- package/src/__tests__/env.test.ts +127 -0
- package/src/api/__tests__/config.test.ts +10 -1
- package/src/api/config.ts +4 -12
- package/src/api/sonamu.ts +14 -4
- package/src/bin/__tests__/migrate-targets.test.ts +28 -0
- package/src/bin/__tests__/test-command.test.ts +82 -1
- package/src/bin/cli.ts +9 -18
- package/src/bin/fixture.ts +5 -4
- package/src/bin/migrate-targets.ts +7 -0
- package/src/bin/test-command.ts +2 -2
- package/src/database/__tests__/db.test.ts +175 -0
- package/src/database/db.ts +193 -71
- package/src/dict/en.ts +2 -0
- package/src/dict/ko.ts +2 -0
- package/src/env.ts +123 -0
- package/src/migration/__tests__/migrator.test.ts +149 -0
- package/src/migration/migrator.ts +74 -17
- package/src/migration/slack-confirm.ts +21 -0
- package/src/skills/sonamu/database.md +1 -1
- package/src/skills/sonamu/testing-devrunner.md +1 -1
- package/src/stream/ws-telemetry-memory.ts +2 -2
- package/src/testing/fixture-generator.ts +2 -1
- package/src/testing/fixture-manager.ts +3 -4
- package/src/testing/global-setup.ts +42 -18
- package/src/testing/vitest-helpers.ts +14 -0
- package/src/utils/controller.ts +14 -7
- package/tsdown.api.config.ts +6 -0
- package/dist/_virtual/rolldown_runtime.js +0 -39
- package/dist/ui-web/assets/index-D4rYm-Xz.css +0 -1
package/dist/tasks/decorator.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import inflection from "inflection";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
|
-
|
|
4
3
|
//#region src/tasks/decorator.ts
|
|
5
4
|
function workflow(options, fn) {
|
|
6
|
-
const decorated = (fn
|
|
5
|
+
const decorated = (fn) => {
|
|
7
6
|
const id = randomUUID();
|
|
8
|
-
const workflowName = options.name ?? inflection.underscore(fn
|
|
9
|
-
|
|
7
|
+
const workflowName = options.name ?? inflection.underscore(fn.name);
|
|
8
|
+
return {
|
|
10
9
|
type: "workflow",
|
|
11
10
|
id,
|
|
12
11
|
name: workflowName,
|
|
@@ -19,17 +18,14 @@ function workflow(options, fn) {
|
|
|
19
18
|
input: schedule.input
|
|
20
19
|
};
|
|
21
20
|
}),
|
|
22
|
-
fn
|
|
21
|
+
fn,
|
|
23
22
|
retryPolicy: options.retryPolicy
|
|
24
23
|
};
|
|
25
|
-
return metadata;
|
|
26
24
|
};
|
|
27
|
-
if (!fn)
|
|
28
|
-
return decorated;
|
|
29
|
-
}
|
|
25
|
+
if (!fn) return decorated;
|
|
30
26
|
return decorated(fn);
|
|
31
27
|
}
|
|
32
|
-
|
|
33
28
|
//#endregion
|
|
34
29
|
export { workflow };
|
|
35
|
-
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy9kZWNvcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuXG5pbXBvcnQge1xuICB0eXBlIFJldHJ5UG9saWN5LFxuICB0eXBlIFNjaGVtYUlucHV0LFxuICB0eXBlIFNjaGVtYU91dHB1dCxcbiAgdHlwZSBTdGFuZGFyZFNjaGVtYVYxLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuXG5pbXBvcnQgeyB0eXBlIEV4ZWN1dGFibGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgV29ya2Zsb3dGdW5jdGlvbiB9IGZyb20gXCIuL3dvcmtmbG93LW1hbmFnZXJcIjtcblxuLy8g7JuM7YGs7ZSM66Gc7Jqw7J2YIOuplO2DgOuNsOydtO2EsCDqsJ3ssrRcbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dNZXRhZGF0YSB7XG4gIHR5cGU6IFwid29ya2Zsb3dcIjtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBzY2hlbWE6IFN0YW5kYXJkU2NoZW1hVjE8dW5rbm93biwgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIHNjaGVkdWxlczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBleHByZXNzaW9uOiBzdHJpbmc7XG4gICAgaW5wdXQ6IEV4ZWN1dGFibGU8U2NoZW1hSW5wdXQ8dW5rbm93biwgdW5rbm93bj4gfCB1bmRlZmluZWQ+O1xuICB9W107XG4gIGZuOiBXb3JrZmxvd0Z1bmN0aW9uPHVua25vd24sIHVua25vd24+O1xuICByZXRyeVBvbGljeT86IFJldHJ5UG9saWN5O1xufVxuXG4vLyDsm4ztgaztlIzroZzsmrAg7KCV7J2YIOqzvOygleyXkOyEnOydmCDsmLXshZhcbmV4cG9ydCB0eXBlIERlZmluZVdvcmtmbG93T3B0aW9uczxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4+ID0gT21pdDxcbiAgV29ya2Zsb3dTcGVjPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dCwgU2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+PixcbiAgXCJuYW1lXCJcbj4gJiB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNjaGVkdWxlcz86IHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGV4cHJlc3Npb246IHN0cmluZztcbiAgICBpbnB1dD86IEV4ZWN1dGFibGU8U2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+IHwgdW5kZWZpbmVkPjtcbiAgfVtdO1xuICByZXRyeVBvbGljeT86IFJldHJ5UG9saWN5O1xufTtcblxuLy8g7JuM7YGs7ZSM66Gc7JqwIOygleydmOulvCDsnITtlZwg642w7L2U66CI7J207YSwLFxuLy8g7J206rKD65Ok7J2AIHN5bmNlcuyXkOyEnCDtlZzrsojsl5AgbG9hZO2VnCDri6TsnYwsIFdvcmtmbG93TWFuYWdlcuyXkOyEnCBzeW5jaHJvbml6ZeulvCDthrXtlbQg65Ox66Gd65CoLlxuZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93PElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgb3B0aW9uczogRGVmaW5lV29ya2Zsb3dPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuKTogKGZuOiBXb3JrZmxvd0Z1bmN0aW9uPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dD4pID0+IFdvcmtmbG93TWV0YWRhdGE7XG5leHBvcnQgZnVuY3Rpb24gd29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICBvcHRpb25zOiBEZWZpbmVXb3JrZmxvd09wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sXG4gIGZuOiBXb3JrZmxvd0Z1bmN0aW9uPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dD4sXG4pOiBXb3JrZmxvd01ldGFkYXRhO1xuZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93PElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgb3B0aW9uczogRGVmaW5lV29ya2Zsb3dPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuICBmbj86IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pixcbik6XG4gIHwgV29ya2Zsb3dNZXRhZGF0YVxuICB8ICgoZm46IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0PikgPT4gV29ya2Zsb3dNZXRhZGF0YSkge1xuICBjb25zdCBkZWNvcmF0ZWQgPSAoZm46IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0PikgPT4ge1xuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IG9wdGlvbnMubmFtZSA/PyBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZm4ubmFtZSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YTogV29ya2Zsb3dNZXRhZGF0YSA9IHtcbiAgICAgIHR5cGU6IFwid29ya2Zsb3dcIiBhcyBjb25zdCxcbiAgICAgIGlkLFxuICAgICAgbmFtZTogd29ya2Zsb3dOYW1lLFxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyBudWxsLFxuICAgICAgc2NoZWR1bGVzOiAob3B0aW9ucy5zY2hlZHVsZXMgPz8gW10pLm1hcCgoc2NoZWR1bGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBzY2hlZHVsZS5uYW1lID8/IGAke3dvcmtmbG93TmFtZX1bJHtzY2hlZHVsZS5leHByZXNzaW9ufV1gLFxuICAgICAgICAgIGV4cHJlc3Npb246IHNjaGVkdWxlLmV4cHJlc3Npb24sXG4gICAgICAgICAgaW5wdXQ6IHNjaGVkdWxlLmlucHV0LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICBmbjogZm4gYXMgV29ya2Zsb3dGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPixcbiAgICAgIHJldHJ5UG9saWN5OiBvcHRpb25zLnJldHJ5UG9saWN5LFxuICAgIH07XG5cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG5cbiAgaWYgKCFmbikge1xuICAgIHJldHVybiBkZWNvcmF0ZWQ7XG4gIH1cblxuICByZXR1cm4gZGVjb3JhdGVkKGZuKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBeURBLFNBQWdCLFNBQ2QsU0FDQSxJQUdxRjtDQUNyRixNQUFNLGFBQWEsT0FBK0Q7RUFDaEYsTUFBTSxLQUFLLFdBQVc7RUFDdEIsTUFBTSxlQUFlLFFBQVEsUUFBUSxXQUFXLFdBQVcsR0FBRyxJQUFJO0VBbUJsRSxPQUFPO0dBaEJMLE1BQU07R0FDTjtHQUNBLE1BQU07R0FDTixRQUFRLFFBQVE7R0FDaEIsU0FBUyxRQUFRLFdBQVc7R0FDNUIsWUFBWSxRQUFRLGFBQWEsQ0FBQyxFQUFBLENBQUcsS0FBSyxhQUFhO0lBQ3JELE9BQU87S0FDTCxNQUFNLFNBQVMsUUFBUSxHQUFHLGFBQWEsR0FBRyxTQUFTLFdBQVc7S0FDOUQsWUFBWSxTQUFTO0tBQ3JCLE9BQU8sU0FBUztJQUNsQjtHQUNGLENBQUM7R0FDRztHQUNKLGFBQWEsUUFBUTtFQUdoQjtDQUNUO0NBRUEsSUFBSSxDQUFDLElBQ0gsT0FBTztDQUdULE9BQU8sVUFBVSxFQUFFO0FBQ3JCIn0=
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import inflection from "inflection";
|
|
3
|
-
|
|
4
3
|
//#region src/tasks/step-wrapper.ts
|
|
5
4
|
var StepWrapper;
|
|
6
5
|
var init_step_wrapper = __esmMin((() => {
|
|
@@ -16,15 +15,15 @@ var init_step_wrapper = __esmMin((() => {
|
|
|
16
15
|
const [rawObject, methodName] = args;
|
|
17
16
|
const method = rawObject[methodName];
|
|
18
17
|
config = { name: inflection.underscore(methodName.toString()) };
|
|
19
|
-
fn = (...args
|
|
18
|
+
fn = (...args) => method.bind(rawObject)(...args);
|
|
20
19
|
} else {
|
|
21
20
|
const [rawConfig, rawObject, name] = args;
|
|
22
21
|
const method = rawObject[name];
|
|
23
22
|
config = { name: rawConfig.name ?? inflection.underscore(name.toString()) };
|
|
24
|
-
fn = (...args
|
|
23
|
+
fn = (...args) => method.bind(rawObject)(...args);
|
|
25
24
|
}
|
|
26
|
-
return { run: ((stepApi, ...args
|
|
27
|
-
return stepApi.run(config, () => fn(...args
|
|
25
|
+
return { run: ((stepApi, ...args) => {
|
|
26
|
+
return stepApi.run(config, () => fn(...args));
|
|
28
27
|
}).bind(null, this.#stepApi) };
|
|
29
28
|
}
|
|
30
29
|
define(config, fn) {
|
|
@@ -37,8 +36,8 @@ var init_step_wrapper = __esmMin((() => {
|
|
|
37
36
|
}
|
|
38
37
|
};
|
|
39
38
|
}));
|
|
40
|
-
|
|
41
39
|
//#endregion
|
|
42
40
|
init_step_wrapper();
|
|
43
41
|
export { StepWrapper, init_step_wrapper };
|
|
44
|
-
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC13cmFwcGVyLmpzIiwibmFtZXMiOlsiI3N0ZXBBcGkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3Mvc3RlcC13cmFwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRHVyYXRpb25TdHJpbmcsIHR5cGUgU3RlcEFwaSB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrcy9pbnRlcm5hbFwiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuZXhwb3J0IHR5cGUgU3RlcEZ1bmN0aW9uPFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmVzdWx0PiA9ICguLi5hcmdzOiBUQXJncykgPT4gVFJlc3VsdDtcbmV4cG9ydCB0eXBlIFJ1bm5hYmxlU3RlcDxUQXJncyBleHRlbmRzIHVua25vd25bXSwgVFJlc3VsdD4gPSB7XG4gIHJ1bjogU3RlcEZ1bmN0aW9uPFRBcmdzLCBQcm9taXNlPFRSZXN1bHQ+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIE1ldGhvZE5hbWVzPFQsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbVEtleV0gZXh0ZW5kcyAoXG4gIC4uLmFyZ3M6IGluZmVyIF9UQXJnc1xuKSA9PiBpbmZlciBfVFJlc3VsdFxuICA/IFRLZXlcbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgTWV0aG9kQXJndW1lbnRzPFQsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbVEtleV0gZXh0ZW5kcyAoXG4gIC4uLmFyZ3M6IGluZmVyIFRBcmdzXG4pID0+IHVua25vd25cbiAgPyBUQXJnc1xuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBNZXRob2RSZXR1cm5UeXBlPFQsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbVEtleV0gZXh0ZW5kcyAoXG4gIHRoaXM6IFQsXG4gIC4uLmFyZ3M6IGluZmVyIF9UQXJnc1xuKSA9PiBpbmZlciBUUmVzdWx0XG4gID8gVFJlc3VsdFxuICA6IG5ldmVyO1xuXG5leHBvcnQgY2xhc3MgU3RlcFdyYXBwZXIge1xuICByZWFkb25seSAjc3RlcEFwaTogU3RlcEFwaTtcblxuICBjb25zdHJ1Y3RvcihzdGVwQXBpOiBTdGVwQXBpKSB7XG4gICAgdGhpcy4jc3RlcEFwaSA9IHN0ZXBBcGk7XG4gIH1cblxuICBnZXQ8XG4gICAgVCxcbiAgICBUS2V5IGV4dGVuZHMga2V5b2YgVCxcbiAgICBUQXJncyBleHRlbmRzIE1ldGhvZEFyZ3VtZW50czxULCBUS2V5PixcbiAgICBUUmVzdWx0IGV4dGVuZHMgTWV0aG9kUmV0dXJuVHlwZTxULCBUS2V5PixcbiAgPihjb25maWc6IHsgbmFtZTogc3RyaW5nIH0sIG9iamVjdDogVCwgbmFtZTogTWV0aG9kTmFtZXM8VCwgVEtleT4pOiBSdW5uYWJsZVN0ZXA8VEFyZ3MsIFRSZXN1bHQ+O1xuICBnZXQ8XG4gICAgVCxcbiAgICBUS2V5IGV4dGVuZHMga2V5b2YgVCxcbiAgICBUQXJncyBleHRlbmRzIE1ldGhvZEFyZ3VtZW50czxULCBUS2V5PixcbiAgICBUUmVzdWx0IGV4dGVuZHMgTWV0aG9kUmV0dXJuVHlwZTxULCBUS2V5PixcbiAgPihvYmplY3Q6IFQsIG5hbWU6IE1ldGhvZE5hbWVzPFQsIFRLZXk+KTogUnVubmFibGVTdGVwPFRBcmdzLCBUUmVzdWx0PjtcbiAgZ2V0PFxuICAgIFQsXG4gICAgVEtleSBleHRlbmRzIGtleW9mIFQsXG4gICAgVEFyZ3MgZXh0ZW5kcyBNZXRob2RBcmd1bWVudHM8VCwgVEtleT4sXG4gICAgVFJlc3VsdCBleHRlbmRzIE1ldGhvZFJldHVyblR5cGU8VCwgVEtleT4sXG4gID4oXG4gICAgLi4uYXJnczogW3sgbmFtZTogc3RyaW5nIH0sIFQsIE1ldGhvZE5hbWVzPFQsIFRLZXk+XSB8IFtULCBNZXRob2ROYW1lczxULCBUS2V5Pl1cbiAgKTogUnVubmFibGVTdGVwPFRBcmdzLCBUUmVzdWx0PiB7XG4gICAgbGV0IGNvbmZpZzogeyBuYW1lOiBzdHJpbmcgfTtcbiAgICBsZXQgZm46IFN0ZXBGdW5jdGlvbjxUQXJncywgRXhjbHVkZTxUUmVzdWx0LCBuZXZlcj4+O1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICBjb25zdCBbcmF3T2JqZWN0LCBtZXRob2ROYW1lXSA9IGFyZ3M7XG4gICAgICBjb25zdCBtZXRob2QgPSByYXdPYmplY3RbbWV0aG9kTmFtZV0gYXMgQ2FsbGFibGVGdW5jdGlvbjtcbiAgICAgIGNvbmZpZyA9IHsgbmFtZTogaW5mbGVjdGlvbi51bmRlcnNjb3JlKG1ldGhvZE5hbWUudG9TdHJpbmcoKSkgfTtcblxuICAgICAgZm4gPSAoLi4uYXJnczogVEFyZ3MpID0+IG1ldGhvZC5iaW5kKHJhd09iamVjdCkoLi4uYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtyYXdDb25maWcsIHJhd09iamVjdCwgbmFtZV0gPSBhcmdzO1xuICAgICAgY29uc3QgbWV0aG9kID0gcmF3T2JqZWN0W25hbWVdIGFzIENhbGxhYmxlRnVuY3Rpb247XG5cbiAgICAgIGNvbmZpZyA9IHsgbmFtZTogcmF3Q29uZmlnLm5hbWUgPz8gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG5hbWUudG9TdHJpbmcoKSkgfTtcbiAgICAgIGZuID0gKC4uLmFyZ3M6IFRBcmdzKSA9PiBtZXRob2QuYmluZChyYXdPYmplY3QpKC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBydW46ICgoc3RlcEFwaTogU3RlcEFwaSwgLi4uYXJnczogVEFyZ3MpID0+IHtcbiAgICAgICAgcmV0dXJuIHN0ZXBBcGkucnVuKGNvbmZpZywgKCkgPT4gZm4oLi4uYXJncykpO1xuICAgICAgfSkuYmluZChudWxsLCB0aGlzLiNzdGVwQXBpKSxcbiAgICB9O1xuICB9XG5cbiAgZGVmaW5lPFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmVzdWx0PihcbiAgICBjb25maWc6IHsgbmFtZTogc3RyaW5nIH0sXG4gICAgZm46IFN0ZXBGdW5jdGlvbjxUQXJncywgVFJlc3VsdD4sXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBydW46ICgoc3RlcEFwaTogU3RlcEFwaSwgLi4uYXJnczogVEFyZ3MpID0+IHtcbiAgICAgICAgcmV0dXJuIHN0ZXBBcGkucnVuKGNvbmZpZywgKCkgPT4gZm4oLi4uYXJncykpO1xuICAgICAgfSkuYmluZChudWxsLCB0aGlzLiNzdGVwQXBpKSxcbiAgICB9O1xuICB9XG5cbiAgc2xlZXAobmFtZTogc3RyaW5nLCBkdXJhdGlvbjogRHVyYXRpb25TdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4jc3RlcEFwaS5zbGVlcChuYW1lLCBkdXJhdGlvbik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Q0EyQmEsY0FBYixNQUF5QjtFQUN2QjtFQUVBLFlBQVksU0FBa0I7R0FDNUIsS0FBS0EsV0FBVztFQUNsQjtFQWNBLElBTUUsR0FBRyxNQUMyQjtHQUM5QixJQUFJO0dBQ0osSUFBSTtHQUVKLElBQUksS0FBSyxXQUFXLEdBQUc7SUFDckIsTUFBTSxDQUFDLFdBQVcsY0FBYztJQUNoQyxNQUFNLFNBQVMsVUFBVTtJQUN6QixTQUFTLEVBQUUsTUFBTSxXQUFXLFdBQVcsV0FBVyxTQUFTLENBQUMsRUFBRTtJQUU5RCxNQUFNLEdBQUcsU0FBZ0IsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtHQUN6RCxPQUFPO0lBQ0wsTUFBTSxDQUFDLFdBQVcsV0FBVyxRQUFRO0lBQ3JDLE1BQU0sU0FBUyxVQUFVO0lBRXpCLFNBQVMsRUFBRSxNQUFNLFVBQVUsUUFBUSxXQUFXLFdBQVcsS0FBSyxTQUFTLENBQUMsRUFBRTtJQUMxRSxNQUFNLEdBQUcsU0FBZ0IsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtHQUN6RDtHQUVBLE9BQU8sRUFDTCxPQUFPLFNBQWtCLEdBQUcsU0FBZ0I7SUFDMUMsT0FBTyxRQUFRLElBQUksY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDO0dBQzlDLEVBQUEsQ0FBRyxLQUFLLE1BQU0sS0FBS0EsUUFBUSxFQUM3QjtFQUNGO0VBRUEsT0FDRSxRQUNBLElBQ0E7R0FDQSxPQUFPLEVBQ0wsT0FBTyxTQUFrQixHQUFHLFNBQWdCO0lBQzFDLE9BQU8sUUFBUSxJQUFJLGNBQWMsR0FBRyxHQUFHLElBQUksQ0FBQztHQUM5QyxFQUFBLENBQUcsS0FBSyxNQUFNLEtBQUtBLFFBQVEsRUFDN0I7RUFDRjtFQUVBLE1BQU0sTUFBYyxVQUEwQjtHQUM1QyxPQUFPLEtBQUtBLFNBQVMsTUFBTSxNQUFNLFFBQVE7RUFDM0M7Q0FDRiJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { convertDomainToCategory, init_category } from "../logger/category.js";
|
|
3
3
|
import { createMockSSEFactory, init_sse } from "../stream/sse.js";
|
|
4
4
|
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
@@ -9,10 +9,10 @@ import assert from "assert";
|
|
|
9
9
|
import { BackendPostgres, OpenWorkflow } from "@sonamu-kit/tasks";
|
|
10
10
|
import { serializeRetryPolicy } from "@sonamu-kit/tasks/internal";
|
|
11
11
|
import { schedule } from "node-cron";
|
|
12
|
-
|
|
13
12
|
//#region src/tasks/workflow-manager.ts
|
|
14
13
|
var WorkflowManager;
|
|
15
|
-
|
|
14
|
+
//#endregion
|
|
15
|
+
__esmMin((() => {
|
|
16
16
|
init_sonamu();
|
|
17
17
|
init_category();
|
|
18
18
|
init_naite();
|
|
@@ -29,8 +29,8 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
29
29
|
this.#backend = backend;
|
|
30
30
|
this.#ow = new OpenWorkflow({ backend });
|
|
31
31
|
this.#worker = null;
|
|
32
|
-
this.#workflowsMap = new Map();
|
|
33
|
-
this.#scheduledTasks = new Map();
|
|
32
|
+
this.#workflowsMap = /* @__PURE__ */ new Map();
|
|
33
|
+
this.#scheduledTasks = /* @__PURE__ */ new Map();
|
|
34
34
|
}
|
|
35
35
|
get backend() {
|
|
36
36
|
return this.#backend;
|
|
@@ -44,7 +44,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
44
44
|
name: s.name,
|
|
45
45
|
expression: s.expression
|
|
46
46
|
})),
|
|
47
|
-
retryPolicy: wf.retryPolicy ? serializeRetryPolicy(wf.retryPolicy) :
|
|
47
|
+
retryPolicy: wf.retryPolicy ? serializeRetryPolicy(wf.retryPolicy) : void 0
|
|
48
48
|
}));
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -52,7 +52,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
52
52
|
*/
|
|
53
53
|
async synchronize(workflowMap) {
|
|
54
54
|
await Promise.allSettled(Array.from(this.#workflowsMap.entries()).filter(([key]) => !workflowMap.has(key)).flatMap(([_, workflows]) => workflows.map((workflow) => {
|
|
55
|
-
return Promise.allSettled([...workflow.schedules.map((schedule
|
|
55
|
+
return Promise.allSettled([...workflow.schedules.map((schedule) => this.unscheduleTask(schedule.name)), this.unregisterWorkflow(workflow)]);
|
|
56
56
|
})));
|
|
57
57
|
await Promise.allSettled(Array.from(workflowMap.entries()).filter(([key]) => !this.#workflowsMap.has(key)).flatMap(([_, workflows]) => workflows.map((workflow) => {
|
|
58
58
|
this.registerWorkflow({
|
|
@@ -63,7 +63,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
63
63
|
function: workflow.fn,
|
|
64
64
|
retryPolicy: workflow.retryPolicy
|
|
65
65
|
});
|
|
66
|
-
return Promise.allSettled(workflow.schedules.map((schedule
|
|
66
|
+
return Promise.allSettled(workflow.schedules.map((schedule) => this.scheduleTask(workflow, schedule)));
|
|
67
67
|
})));
|
|
68
68
|
await Promise.allSettled(Array.from(workflowMap.entries()).filter(([key]) => this.#workflowsMap.has(key)).map(([key, newWorkflows]) => {
|
|
69
69
|
const previousWorkflows = this.#workflowsMap.get(key);
|
|
@@ -71,7 +71,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
71
71
|
return [key, [previousWorkflows, newWorkflows]];
|
|
72
72
|
}).map(async ([_, [previousWorkflows, newWorkflows]]) => {
|
|
73
73
|
await Promise.allSettled(previousWorkflows.filter((prevItem) => !newWorkflows.some((newItem) => newItem.id === prevItem.id)).map((prevItem) => {
|
|
74
|
-
return Promise.allSettled([...prevItem.schedules.map((schedule
|
|
74
|
+
return Promise.allSettled([...prevItem.schedules.map((schedule) => this.unscheduleTask(schedule.name)), this.unregisterWorkflow(prevItem)]);
|
|
75
75
|
}));
|
|
76
76
|
await Promise.allSettled(newWorkflows.filter((newItem) => !previousWorkflows.some((prevItem) => prevItem.id === newItem.id)).map(async (newItem) => {
|
|
77
77
|
this.registerWorkflow({
|
|
@@ -82,7 +82,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
82
82
|
function: newItem.fn,
|
|
83
83
|
retryPolicy: newItem.retryPolicy
|
|
84
84
|
});
|
|
85
|
-
return Promise.allSettled(newItem.schedules.map((schedule
|
|
85
|
+
return Promise.allSettled(newItem.schedules.map((schedule) => this.scheduleTask(newItem, schedule)));
|
|
86
86
|
}));
|
|
87
87
|
}));
|
|
88
88
|
this.#workflowsMap = workflowMap;
|
|
@@ -90,13 +90,11 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
90
90
|
run(options, input) {
|
|
91
91
|
return this.#ow.runWorkflow({
|
|
92
92
|
name: options.name,
|
|
93
|
-
version: options.version ??
|
|
93
|
+
version: options.version ?? void 0
|
|
94
94
|
}, input);
|
|
95
95
|
}
|
|
96
96
|
async scheduleTask(workflow, schedule$1) {
|
|
97
|
-
if (!this.#worker)
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
97
|
+
if (!this.#worker) return;
|
|
100
98
|
const task = schedule(schedule$1.expression, (async ({ name, version }, { input }) => {
|
|
101
99
|
const inputData = await (typeof input === "function" ? Promise.resolve(input()) : Promise.resolve(input));
|
|
102
100
|
return this.run({
|
|
@@ -116,9 +114,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
116
114
|
await task.start();
|
|
117
115
|
}
|
|
118
116
|
async unscheduleTask(name) {
|
|
119
|
-
if (!this.#worker)
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
117
|
+
if (!this.#worker) return;
|
|
122
118
|
const taskItem = this.#scheduledTasks.get(name);
|
|
123
119
|
if (!taskItem) {
|
|
124
120
|
console.error("scheduled task not found", name);
|
|
@@ -151,13 +147,12 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
151
147
|
logger: getLogger(convertDomainToCategory(options.name, "workflow"))
|
|
152
148
|
}));
|
|
153
149
|
};
|
|
154
|
-
|
|
150
|
+
return this.#ow.defineWorkflow({
|
|
155
151
|
name: options.name,
|
|
156
|
-
version: options.version ??
|
|
152
|
+
version: options.version ?? void 0,
|
|
157
153
|
schema: options.schema,
|
|
158
154
|
retryPolicy: options.retryPolicy
|
|
159
155
|
}, fn);
|
|
160
|
-
return workflow;
|
|
161
156
|
}
|
|
162
157
|
async unregisterWorkflow(workflow) {
|
|
163
158
|
this.#ow.unregisterWorkflow(workflow.name, workflow.version ?? null);
|
|
@@ -189,9 +184,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
189
184
|
return this.destroy();
|
|
190
185
|
}
|
|
191
186
|
};
|
|
192
|
-
}));
|
|
193
|
-
|
|
194
|
-
//#endregion
|
|
195
|
-
init_workflow_manager();
|
|
187
|
+
}))();
|
|
196
188
|
export { WorkflowManager };
|
|
197
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5qcyIsIm5hbWVzIjpbIiNiYWNrZW5kIiwiI293IiwiI3dvcmtlciIsIiN3b3JrZmxvd3NNYXAiLCIjc2NoZWR1bGVkVGFza3MiLCJzY2hlZHVsZSIsImNyb25TY2hlZHVsZSIsImNvbnRleHQ6IENvbnRleHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3Mvd29ya2Zsb3ctbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHR5cGUgTG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IEJhY2tlbmRQb3N0Z3JlcywgT3BlbldvcmtmbG93IH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgeyB0eXBlIFdvcmtlciB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplUmV0cnlQb2xpY3kgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCB7XG4gIHR5cGUgUnVubmFibGVXb3JrZmxvdyxcbiAgdHlwZSBTY2hlbWFJbnB1dCxcbiAgdHlwZSBTY2hlbWFPdXRwdXQsXG4gIHR5cGUgU3RhbmRhcmRTY2hlbWFWMSxcbiAgdHlwZSBTdGVwQXBpLFxuICB0eXBlIFdvcmtmbG93UnVuSGFuZGxlLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgc2NoZWR1bGUgYXMgY3JvblNjaGVkdWxlIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBTY2hlZHVsZWRUYXNrIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBab2RPYmplY3QgfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tTU0VGYWN0b3J5IH0gZnJvbSBcIi4uL3N0cmVhbS9zc2VcIjtcbmltcG9ydCB7IHR5cGUgRXhlY3V0YWJsZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4vZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBTdGVwV3JhcHBlciB9IGZyb20gXCIuL3N0ZXAtd3JhcHBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIC8vIHdvcmtlcuyXkOyEnCDrj5nsi5wg7Iuk7ZaJ7ZWgIO2DnOyKpO2BrCDsiJgsIOq4sOuzuOydgCAxXG4gIGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8vIHdvcmtlcuyXkOyEnCDsgqzsmqntlaAgcHViL3N1YiDsl6zrtoAsIOq4sOuzuOydgCB0cnVlXG4gIHVzZVB1YlN1Yj86IGJvb2xlYW47XG5cbiAgLy8gcHViL3N1YuycvOuhnCDtg5zsiqTtgazrpbwg7IiY7Iug7ZaI7J2EIOuVjCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJ6rmM7KeAIOyngOyXsCDsi5zqsIQsIOq4sOuzuOydgCA1MDBtc1xuICBsaXN0ZW5EZWxheT86IG51bWJlcjtcbn1cblxuLy8gV29ya2Zsb3cg7ZWo7IiY7J2YIO2DgOyehSwgQHNvbmFtdS1raXQvdGFza3PsmYAg64uk66W4IOygkOydgCBzdGVw7J2EIO2VnOuyiCDqsJDsi7wg7ZiV7YOcLlxuZXhwb3J0IHR5cGUgV29ya2Zsb3dGdW5jdGlvbjxJbnB1dCwgT3V0cHV0PiA9IChcbiAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgbG9nZ2VyOiBMb2dnZXI7XG4gICAgaW5wdXQ6IElucHV0O1xuICAgIHN0ZXA6IFN0ZXBXcmFwcGVyO1xuICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIH0+LFxuKSA9PiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG5cbi8vIFdvcmtmbG9366W8IOuTseuhne2VoCDrlYzrpbwg7JyE7ZWcIO2DgOyehVxuZXhwb3J0IHR5cGUgV29ya2Zsb3dDcmVhdGVPcHRpb25zPFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbj4gPSBPbWl0PFxuICBXb3JrZmxvd1NwZWM8U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0LCBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4+LFxuICBcInZlcnNpb25cIlxuPiAmIHtcbiAgaWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb246IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pjtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd01hbmFnZXIge1xuICAvLyBiYWNrZW5kIOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjYmFja2VuZDogQmFja2VuZFBvc3RncmVzO1xuXG4gIC8vIE9wZW5Xb3JrZmxvdyDsnbjsiqTthLTsiqRcbiAgcmVhZG9ubHkgI293OiBPcGVuV29ya2Zsb3c7XG5cbiAgLy8gV29ya2VyIOyduOyKpO2EtOyKpCAo7JeG7J2EIOyImCDsnojsnLzrqbAsIOydtCDrlYzripQg67aE7IKw65CcIOyEnOuyhCDtmZjqsr3sl5DshJwgRELsl5AgcHVibGlzaOunjCDtlZzri6Tqs6Ag6rCA7KCV7ZWoKVxuICAjd29ya2VyOiBXb3JrZXIgfCBudWxsO1xuXG4gIC8vIO2MjOydvCDqsr3roZwgLT4g7YyM7J287JeQIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg66mU7YOA642w7J207YSwIOuqqeuhnVxuICAjd29ya2Zsb3dzTWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+O1xuXG4gIC8vIFRhc2sg7J2066aEIC0+IFRhc2sg7KCV67O0IOuwjyBJbnB1dCDqsJIsIFdvcmtmbG93IElEXG4gICNzY2hlZHVsZWRUYXNrczogTWFwPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICB0YXNrOiBTY2hlZHVsZWRUYXNrO1xuICAgICAgaW5wdXRGbjogRXhlY3V0YWJsZTxTY2hlbWFJbnB1dDx1bmtub3duLCB1bmtub3duPj47XG4gICAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gICAgfVxuICA+O1xuXG4gIC8vIEJhY2tlbmRQb3N0Z3Jlc+yXkOyEnCDsspjrpqztlZjripQg6rKD65Ok7J20IOyeiOyWtOyEnCBLbmV4IOy7pOuEpeyFmOydtCDslYTri4jrnbwg7ISk7KCV6rCS7J2EIOuEo+yWtOykmOyVvO2VqC5cbiAgY29uc3RydWN0b3IoZGJDb25mOiBLbmV4LkNvbmZpZywgcnVuTWlncmF0aW9uczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBiYWNrZW5kID0gbmV3IEJhY2tlbmRQb3N0Z3JlcyhkYkNvbmYsIHsgcnVuTWlncmF0aW9ucyB9KTtcblxuICAgIHRoaXMuI2JhY2tlbmQgPSBiYWNrZW5kO1xuICAgIHRoaXMuI293ID0gbmV3IE9wZW5Xb3JrZmxvdyh7IGJhY2tlbmQgfSk7XG4gICAgdGhpcy4jd29ya2VyID0gbnVsbDtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIC8vIFNvbmFtdSBVSSBBUEnsl5DshJwg7JuM7YGs7ZSM66Gc7JqwIOyLpO2WiSDrqqnroZ0g7KGw7ZqMLCDst6jshowg65Ox7JeQIOyCrOyaqe2VqeuLiOuLpC5cbiAgZ2V0IGJhY2tlbmQoKTogQmFja2VuZFBvc3RncmVzIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZDtcbiAgfVxuXG4gIGdldCB3b3JrZmxvd0RlZmluaXRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuI3dvcmtmbG93c01hcC52YWx1ZXMoKSlcbiAgICAgIC5mbGF0KClcbiAgICAgIC5tYXAoKHdmKSA9PiAoe1xuICAgICAgICBpZDogd2YuaWQsXG4gICAgICAgIG5hbWU6IHdmLm5hbWUsXG4gICAgICAgIHZlcnNpb246IHdmLnZlcnNpb24sXG4gICAgICAgIHNjaGVkdWxlczogd2Yuc2NoZWR1bGVzLm1hcCgocykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICAgICAgZXhwcmVzc2lvbjogcy5leHByZXNzaW9uLFxuICAgICAgICB9KSksXG4gICAgICAgIHJldHJ5UG9saWN5OiB3Zi5yZXRyeVBvbGljeSA/IHNlcmlhbGl6ZVJldHJ5UG9saWN5KHdmLnJldHJ5UG9saWN5KSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoJXsnZjrkJwg7JuM7YGs7ZSM66Gc7JqwIOuwjyDsm4ztgaztlIzroZzsmrDsl5Ag64yA7ZWcIHNjaGVkdWxlZCB0YXNrc+ulvCDrj5nquLDtmZTtlanri4jri6QuXG4gICAqL1xuICBhc3luYyBzeW5jaHJvbml6ZSh3b3JrZmxvd01hcDogTWFwPHN0cmluZywgV29ya2Zsb3dNZXRhZGF0YVtdPikge1xuICAgIC8vIDEuIOyCreygnOuQnCDtjIzsnbzsnYAg7J286rSEIOyCreygnFxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLmVudHJpZXMoKSlcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICF3b3JrZmxvd01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgLi4ud29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMudW5zY2hlZHVsZVRhc2soc2NoZWR1bGUubmFtZSkpLFxuICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdyksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMi4g7IOI66GcIOy2lOqwgOuQnCDtjIzsnbzsnYAg7J286rSEIOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuI3dvcmtmbG93c01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyV29ya2Zsb3coe1xuICAgICAgICAgICAgICBpZDogd29ya2Zsb3cuaWQsXG4gICAgICAgICAgICAgIG5hbWU6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb246IHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2NoZW1hOiB3b3JrZmxvdy5zY2hlbWEsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uOiB3b3JrZmxvdy5mbixcbiAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IHdvcmtmbG93LnJldHJ5UG9saWN5LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IG5ld0l0ZW0ucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICAgICAgICAgICAgbmV3SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy5zY2hlZHVsZVRhc2sobmV3SXRlbSwgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gd29ya2Zsb3dNYXA7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg7Iuk7ZaJXG4gIHJ1bjxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogT21pdDxXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sIFwiZnVuY3Rpb25cIiB8IFwic2NoZW1hXCIgfCBcImlkXCI+LFxuICAgIGlucHV0OiBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4sXG4gICk6IFByb21pc2U8V29ya2Zsb3dSdW5IYW5kbGU8T3V0cHV0Pj4ge1xuICAgIHJldHVybiB0aGlzLiNvdy5ydW5Xb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGlucHV0LFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrpbwg65Ox66GdXG4gIGFzeW5jIHNjaGVkdWxlVGFzayhcbiAgICB3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICBzY2hlZHVsZTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICApIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2sgPSBjcm9uU2NoZWR1bGUoXG4gICAgICBzY2hlZHVsZS5leHByZXNzaW9uLFxuICAgICAgKGFzeW5jIChcbiAgICAgICAgeyBuYW1lLCB2ZXJzaW9uIH06IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgICAgIHsgaW5wdXQgfTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IGF3YWl0ICh0eXBlb2YgaW5wdXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGlucHV0KCkpXG4gICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoaW5wdXQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ydW4oeyBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uID8/IG51bGwgfSwgaW5wdXREYXRhKTtcbiAgICAgIH0pLmJpbmQodGhpcywgd29ya2Zsb3csIHNjaGVkdWxlKSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogc2NoZWR1bGUubmFtZSxcbiAgICAgICAgdGltZXpvbmU6IFNvbmFtdS5jb25maWcuYXBpLnRpbWV6b25lLFxuICAgICAgICBub092ZXJsYXA6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3Muc2V0KHNjaGVkdWxlLm5hbWUsIHtcbiAgICAgIHRhc2ssXG4gICAgICBpbnB1dEZuOiBzY2hlZHVsZS5pbnB1dCxcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93LmlkLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhc2suc3RhcnQoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDspJHsp4BcbiAgYXN5bmMgdW5zY2hlZHVsZVRhc2sobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gV29ya2Vy6rCAIO2ZnOyEse2ZlOuQnCDrhbjrk5zsl5DshJzrp4wg7LKY66asXG4gICAgaWYgKCF0aGlzLiN3b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrSXRlbSA9IHRoaXMuI3NjaGVkdWxlZFRhc2tzLmdldChuYW1lKTtcbiAgICBpZiAoIXRhc2tJdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwic2NoZWR1bGVkIHRhc2sgbm90IGZvdW5kXCIsIG5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmRlbGV0ZShuYW1lKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLnN0b3AoKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0sIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIOuTseuhne2VtOyVvCDtlaguXG4gIHJlZ2lzdGVyV29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPixcbiAgKTogUnVubmFibGVXb3JrZmxvdzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4ge1xuICAgIGNvbnN0IGZuID0gYXN5bmMgKFxuICAgICAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgICAgIGlucHV0OiBTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+O1xuICAgICAgICBzdGVwOiBTdGVwQXBpO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfT4sXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29udGV4dCA9IHtcbiAgICAgICAgdHJhbnNwb3J0OiBcImh0dHBcIiBhcyBjb25zdCxcbiAgICAgICAgcmVxdWVzdDogbnVsbCxcbiAgICAgICAgcmVwbHk6IG51bGwsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBjcmVhdGVTU0U6IChzY2hlbWE6IFpvZE9iamVjdCkgPT4gY3JlYXRlTW9ja1NTRUZhY3Rvcnkoc2NoZW1hKSxcbiAgICAgICAgbmFpdGVTdG9yZTogTmFpdGUuY3JlYXRlU3RvcmUoKSxcbiAgICAgICAgbG9jYWxlOiBcIlwiLFxuICAgICAgICB1c2VyOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBudWxsLFxuICAgICAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG5cbiAgICAgIGNvbnN0IGNvbnRleHRQcm92aWRlciA9IFNvbmFtdS5jb25maWcudGFza3M/LmNvbnRleHRQcm92aWRlcjtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSBjb250ZXh0UHJvdmlkZXJcbiAgICAgICAgPyBhd2FpdCBQcm9taXNlLnJlc29sdmUoY29udGV4dFByb3ZpZGVyKGJhc2VDb250ZXh0KSlcbiAgICAgICAgOiBiYXNlQ29udGV4dDtcblxuICAgICAgY29uc3Qgc3RlcCA9IG5ldyBTdGVwV3JhcHBlcihwYXJhbXMuc3RlcCk7XG4gICAgICByZXR1cm4gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1bih7IGNvbnRleHQgfSwgKCkgPT5cbiAgICAgICAgb3B0aW9ucy5mdW5jdGlvbih7XG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy5pbnB1dCxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIHZlcnNpb246IHBhcmFtcy52ZXJzaW9uLFxuICAgICAgICAgIGxvZ2dlcjogZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KG9wdGlvbnMubmFtZSwgXCJ3b3JrZmxvd1wiKSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLiNvdy5kZWZpbmVXb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IG9wdGlvbnMuc2NoZW1hLFxuICAgICAgICByZXRyeVBvbGljeTogb3B0aW9ucy5yZXRyeVBvbGljeSxcbiAgICAgIH0sXG4gICAgICBmbixcbiAgICApO1xuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0g7ZW07KCcLCDqtIDroKjrkJwg7Iqk7LyA7KSE7J2AIOuzhOuPhOuhnCDtlbTsoJztlbTslbwg7ZWoLlxuICBhc3luYyB1bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIiB8IFwiaWRcIj4pIHtcbiAgICB0aGlzLiNvdy51bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3cubmFtZSwgd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDshKTsoJUg7ZuEIOyLnOyekVxuICBzZXR1cFdvcmtlcihvcHRpb25zOiBXb3JrZmxvd09wdGlvbnMpIHtcbiAgICB0aGlzLiN3b3JrZXIgPSB0aGlzLiNvdy5uZXdXb3JrZXIob3B0aW9ucyk7XG4gIH1cblxuICAvLyBXb3JrZXLqsIAg7J6I7Jy866m0IFdvcmtlcuq5jOyngCDstIjquLDtmZQsIOyVhOuLiOuptCDrsLHsl5Trk5zrp4wg7LSI6riw7ZmUXG4gIGFzeW5jIHN0YXJ0V29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuaW5pdGlhbGl6ZSgpO1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RhcnQoKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDspJHsp4BcbiAgYXN5bmMgc3RvcFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0b3AoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KSR7KeAXG4gIGFzeW5jIHN0b3BTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suc3RvcCgpKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KCV66asXG4gIGFzeW5jIGRlc3Ryb3lTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suZGVzdHJveSgpKSksXG4gICAgKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5jbGVhcigpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0b3BXb3JrZXIoKTtcbiAgICBhd2FpdCB0aGlzLmRlc3Ryb3lTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLnN0b3AoKTtcbiAgfVxuXG4gIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O2NBc0J1QztnQkFDc0I7YUFDdEI7V0FDYztvQkFHUjtDQXFD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
|
|
189
|
+
|
|
190
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5qcyIsIm5hbWVzIjpbIiNiYWNrZW5kIiwiI293IiwiI3dvcmtlciIsIiN3b3JrZmxvd3NNYXAiLCIjc2NoZWR1bGVkVGFza3MiLCJjcm9uU2NoZWR1bGUiLCJzY2hlZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy93b3JrZmxvdy1tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgQmFja2VuZFBvc3RncmVzLCBPcGVuV29ya2Zsb3cgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3NcIjtcbmltcG9ydCB7IHR5cGUgV29ya2VyIH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVSZXRyeVBvbGljeSB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrcy9pbnRlcm5hbFwiO1xuaW1wb3J0IHtcbiAgdHlwZSBSdW5uYWJsZVdvcmtmbG93LFxuICB0eXBlIFNjaGVtYUlucHV0LFxuICB0eXBlIFNjaGVtYU91dHB1dCxcbiAgdHlwZSBTdGFuZGFyZFNjaGVtYVYxLFxuICB0eXBlIFN0ZXBBcGksXG4gIHR5cGUgV29ya2Zsb3dSdW5IYW5kbGUsXG4gIHR5cGUgV29ya2Zsb3dTcGVjLFxufSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgeyBzY2hlZHVsZSBhcyBjcm9uU2NoZWR1bGUgfSBmcm9tIFwibm9kZS1jcm9uXCI7XG5pbXBvcnQgeyB0eXBlIFNjaGVkdWxlZFRhc2sgfSBmcm9tIFwibm9kZS1jcm9uXCI7XG5pbXBvcnQgeyB0eXBlIFpvZE9iamVjdCB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDb250ZXh0IH0gZnJvbSBcIi4uL2FwaS9jb250ZXh0XCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgY3JlYXRlTW9ja1NTRUZhY3RvcnkgfSBmcm9tIFwiLi4vc3RyZWFtL3NzZVwiO1xuaW1wb3J0IHsgdHlwZSBFeGVjdXRhYmxlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIFdvcmtmbG93TWV0YWRhdGEgfSBmcm9tIFwiLi9kZWNvcmF0b3JcIjtcbmltcG9ydCB7IFN0ZXBXcmFwcGVyIH0gZnJvbSBcIi4vc3RlcC13cmFwcGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dPcHRpb25zIHtcbiAgLy8gd29ya2Vy7JeQ7IScIOuPmeyLnCDsi6TtlontlaAg7YOc7Iqk7YGsIOyImCwg6riw67O47J2AIDFcbiAgY29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLy8gd29ya2Vy7JeQ7IScIOyCrOyaqe2VoCBwdWIvc3ViIOyXrOu2gCwg6riw67O47J2AIHRydWVcbiAgdXNlUHViU3ViPzogYm9vbGVhbjtcblxuICAvLyBwdWIvc3Vi7Jy866GcIO2DnOyKpO2BrOulvCDsiJjsi6DtlojsnYQg65WMIOybjO2BrO2UjOuhnOyasCDsi6TtlonquYzsp4Ag7KeA7JewIOyLnOqwhCwg6riw67O47J2AIDUwMG1zXG4gIGxpc3RlbkRlbGF5PzogbnVtYmVyO1xufVxuXG4vLyBXb3JrZmxvdyDtlajsiJjsnZgg7YOA7J6FLCBAc29uYW11LWtpdC90YXNrc+yZgCDri6Trpbgg7KCQ7J2AIHN0ZXDsnYQg7ZWc67KIIOqwkOyLvCDtmJXtg5wuXG5leHBvcnQgdHlwZSBXb3JrZmxvd0Z1bmN0aW9uPElucHV0LCBPdXRwdXQ+ID0gKFxuICBwYXJhbXM6IFJlYWRvbmx5PHtcbiAgICBsb2dnZXI6IExvZ2dlcjtcbiAgICBpbnB1dDogSW5wdXQ7XG4gICAgc3RlcDogU3RlcFdyYXBwZXI7XG4gICAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgfT4sXG4pID0+IFByb21pc2U8T3V0cHV0PiB8IE91dHB1dDtcblxuLy8gV29ya2Zsb3frpbwg65Ox66Gd7ZWgIOuVjOulvCDsnITtlZwg7YOA7J6FXG5leHBvcnQgdHlwZSBXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8XG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPiA9IE9taXQ8XG4gIFdvcmtmbG93U3BlYzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4sXG4gIFwidmVyc2lvblwiXG4+ICYge1xuICBpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbjogV29ya2Zsb3dGdW5jdGlvbjxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQ+O1xufTtcblxuZXhwb3J0IGNsYXNzIFdvcmtmbG93TWFuYWdlciB7XG4gIC8vIGJhY2tlbmQg7J247Iqk7YS07IqkXG4gIHJlYWRvbmx5ICNiYWNrZW5kOiBCYWNrZW5kUG9zdGdyZXM7XG5cbiAgLy8gT3BlbldvcmtmbG93IOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjb3c6IE9wZW5Xb3JrZmxvdztcblxuICAvLyBXb3JrZXIg7J247Iqk7YS07IqkICjsl4bsnYQg7IiYIOyeiOycvOupsCwg7J20IOuVjOuKlCDrtoTsgrDrkJwg7ISc67KEIO2ZmOqyveyXkOyEnCBEQuyXkCBwdWJsaXNo66eMIO2VnOuLpOqzoCDqsIDsoJXtlagpXG4gICN3b3JrZXI6IFdvcmtlciB8IG51bGw7XG5cbiAgLy8g7YyM7J28IOqyveuhnCAtPiDtjIzsnbzsl5Ag7KCV7J2Y65CcIOybjO2BrO2UjOuhnOyasCDrqZTtg4DrjbDsnbTthLAg66qp66GdXG4gICN3b3JrZmxvd3NNYXA6IE1hcDxzdHJpbmcsIFdvcmtmbG93TWV0YWRhdGFbXT47XG5cbiAgLy8gVGFzayDsnbTrpoQgLT4gVGFzayDsoJXrs7Qg67CPIElucHV0IOqwkiwgV29ya2Zsb3cgSURcbiAgI3NjaGVkdWxlZFRhc2tzOiBNYXA8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIHRhc2s6IFNjaGVkdWxlZFRhc2s7XG4gICAgICBpbnB1dEZuOiBFeGVjdXRhYmxlPFNjaGVtYUlucHV0PHVua25vd24sIHVua25vd24+PjtcbiAgICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgICB9XG4gID47XG5cbiAgLy8gQmFja2VuZFBvc3RncmVz7JeQ7IScIOyymOumrO2VmOuKlCDqsoPrk6TsnbQg7J6I7Ja07IScIEtuZXgg7Luk64Sl7IWY7J20IOyVhOuLiOudvCDshKTsoJXqsJLsnYQg64Sj7Ja07KSY7JW87ZWoLlxuICBjb25zdHJ1Y3RvcihkYkNvbmY6IEtuZXguQ29uZmlnLCBydW5NaWdyYXRpb25zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGJhY2tlbmQgPSBuZXcgQmFja2VuZFBvc3RncmVzKGRiQ29uZiwgeyBydW5NaWdyYXRpb25zIH0pO1xuXG4gICAgdGhpcy4jYmFja2VuZCA9IGJhY2tlbmQ7XG4gICAgdGhpcy4jb3cgPSBuZXcgT3BlbldvcmtmbG93KHsgYmFja2VuZCB9KTtcbiAgICB0aGlzLiN3b3JrZXIgPSBudWxsO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgLy8gU29uYW11IFVJIEFQSeyXkOyEnCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJIOuqqeuhnSDsobDtmowsIOy3qOyGjCDrk7Hsl5Ag7IKs7Jqp7ZWp64uI64ukLlxuICBnZXQgYmFja2VuZCgpOiBCYWNrZW5kUG9zdGdyZXMge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kO1xuICB9XG5cbiAgZ2V0IHdvcmtmbG93RGVmaW5pdGlvbnMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLnZhbHVlcygpKVxuICAgICAgLmZsYXQoKVxuICAgICAgLm1hcCgod2YpID0+ICh7XG4gICAgICAgIGlkOiB3Zi5pZCxcbiAgICAgICAgbmFtZTogd2YubmFtZSxcbiAgICAgICAgdmVyc2lvbjogd2YudmVyc2lvbixcbiAgICAgICAgc2NoZWR1bGVzOiB3Zi5zY2hlZHVsZXMubWFwKChzKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IHMubmFtZSxcbiAgICAgICAgICBleHByZXNzaW9uOiBzLmV4cHJlc3Npb24sXG4gICAgICAgIH0pKSxcbiAgICAgICAgcmV0cnlQb2xpY3k6IHdmLnJldHJ5UG9saWN5ID8gc2VyaWFsaXplUmV0cnlQb2xpY3kod2YucmV0cnlQb2xpY3kpIDogdW5kZWZpbmVkLFxuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg67CPIOybjO2BrO2UjOuhnOyasOyXkCDrjIDtlZwgc2NoZWR1bGVkIHRhc2tz66W8IOuPmeq4sO2ZlO2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIHN5bmNocm9uaXplKHdvcmtmbG93TWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+KSB7XG4gICAgLy8gMS4g7IKt7KCc65CcIO2MjOydvOydgCDsnbzqtIQg7IKt7KCcXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiN3b3JrZmxvd3NNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXdvcmtmbG93TWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgICAgICAgICAuLi53b3JrZmxvdy5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgIHRoaXMudW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93KSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICAvLyAyLiDsg4jroZwg7LaU6rCA65CcIO2MjOydvOydgCDsnbzqtIQg65Ox66GdXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh3b3JrZmxvd01hcC5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgIGlkOiB3b3JrZmxvdy5pZCxcbiAgICAgICAgICAgICAgbmFtZTogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICBzY2hlbWE6IHdvcmtmbG93LnNjaGVtYSxcbiAgICAgICAgICAgICAgZnVuY3Rpb246IHdvcmtmbG93LmZuLFxuICAgICAgICAgICAgICByZXRyeVBvbGljeTogd29ya2Zsb3cucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgICAgd29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMuc2NoZWR1bGVUYXNrKHdvcmtmbG93LCBzY2hlZHVsZSkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMy4g6riw7KG06rO8IOuLpOuluCDqsoPsnYQgZGlmZuy5nCDri6TsnYwsIOyCreygnCDtm4Qg7J6s65Ox66GdXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh3b3JrZmxvd01hcC5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiB0aGlzLiN3b3JrZmxvd3NNYXAuaGFzKGtleSkpXG4gICAgICAgIC5tYXA8W3N0cmluZywgW1dvcmtmbG93TWV0YWRhdGFbXSwgV29ya2Zsb3dNZXRhZGF0YVtdXV0+KChba2V5LCBuZXdXb3JrZmxvd3NdKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNXb3JrZmxvd3MgPSB0aGlzLiN3b3JrZmxvd3NNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgYXNzZXJ0KHByZXZpb3VzV29ya2Zsb3dzLCBcInByZXZpb3VzIHdvcmtmbG93cyBub3QgZm91bmRcIik7XG4gICAgICAgICAgcmV0dXJuIFtrZXksIFtwcmV2aW91c1dvcmtmbG93cywgbmV3V29ya2Zsb3dzXV07XG4gICAgICAgIH0pXG4gICAgICAgIC5tYXAoYXN5bmMgKFtfLCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dKSA9PiB7XG4gICAgICAgICAgLy8g6riw7KG0IOqyg+uTpOydhCDsgq3soJzrtoDthLAg7ZW07JW87ZWoLlxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgIHByZXZpb3VzV29ya2Zsb3dzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHByZXZJdGVtKSA9PiAhbmV3V29ya2Zsb3dzLnNvbWUoKG5ld0l0ZW0pID0+IG5ld0l0ZW0uaWQgPT09IHByZXZJdGVtLmlkKSlcbiAgICAgICAgICAgICAgLm1hcCgocHJldkl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgICAgIC4uLnByZXZJdGVtLnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnVuc2NoZWR1bGVUYXNrKHNjaGVkdWxlLm5hbWUpKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMudW5yZWdpc3RlcldvcmtmbG93KHByZXZJdGVtKSxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIOyDiOuhnCDstpTqsIDrkJwg6rKD65Ok7J2EIOuTseuhnVxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgIG5ld1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChuZXdJdGVtKSA9PiAhcHJldmlvdXNXb3JrZmxvd3Muc29tZSgocHJldkl0ZW0pID0+IHByZXZJdGVtLmlkID09PSBuZXdJdGVtLmlkKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAubWFwKGFzeW5jIChuZXdJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlcldvcmtmbG93KHtcbiAgICAgICAgICAgICAgICAgIGlkOiBuZXdJdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgbmFtZTogbmV3SXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgdmVyc2lvbjogbmV3SXRlbS52ZXJzaW9uID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICBzY2hlbWE6IG5ld0l0ZW0uc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgZnVuY3Rpb246IG5ld0l0ZW0uZm4sXG4gICAgICAgICAgICAgICAgICByZXRyeVBvbGljeTogbmV3SXRlbS5yZXRyeVBvbGljeSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgICAgICBuZXdJdGVtLnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayhuZXdJdGVtLCBzY2hlZHVsZSkpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLiN3b3JrZmxvd3NNYXAgPSB3b3JrZmxvd01hcDtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDsi6TtlolcbiAgcnVuPElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgICBvcHRpb25zOiBPbWl0PFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPiwgXCJmdW5jdGlvblwiIHwgXCJzY2hlbWFcIiB8IFwiaWRcIj4sXG4gICAgaW5wdXQ6IFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0PixcbiAgKTogUHJvbWlzZTxXb3JrZmxvd1J1bkhhbmRsZTxPdXRwdXQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuI293LnJ1bldvcmtmbG93KFxuICAgICAge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgaW5wdXQsXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDrk7HroZ1cbiAgYXN5bmMgc2NoZWR1bGVUYXNrKFxuICAgIHdvcmtmbG93OiBQaWNrPFdvcmtmbG93TWV0YWRhdGEsIFwiaWRcIiB8IFwibmFtZVwiIHwgXCJ2ZXJzaW9uXCI+LFxuICAgIHNjaGVkdWxlOiBXb3JrZmxvd01ldGFkYXRhW1wic2NoZWR1bGVzXCJdW251bWJlcl0sXG4gICkge1xuICAgIC8vIFdvcmtlcuqwgCDtmZzshLHtmZTrkJwg64W465Oc7JeQ7ISc66eMIOyymOumrFxuICAgIGlmICghdGhpcy4jd29ya2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFzayA9IGNyb25TY2hlZHVsZShcbiAgICAgIHNjaGVkdWxlLmV4cHJlc3Npb24sXG4gICAgICAoYXN5bmMgKFxuICAgICAgICB7IG5hbWUsIHZlcnNpb24gfTogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICAgICAgeyBpbnB1dCB9OiBXb3JrZmxvd01ldGFkYXRhW1wic2NoZWR1bGVzXCJdW251bWJlcl0sXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXREYXRhID0gYXdhaXQgKHR5cGVvZiBpbnB1dCA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoaW5wdXQoKSlcbiAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZShpbnB1dCkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJ1bih7IG5hbWUsIHZlcnNpb246IHZlcnNpb24gPz8gbnVsbCB9LCBpbnB1dERhdGEpO1xuICAgICAgfSkuYmluZCh0aGlzLCB3b3JrZmxvdywgc2NoZWR1bGUpLFxuICAgICAge1xuICAgICAgICBuYW1lOiBzY2hlZHVsZS5uYW1lLFxuICAgICAgICB0aW1lem9uZTogU29uYW11LmNvbmZpZy5hcGkudGltZXpvbmUsXG4gICAgICAgIG5vT3ZlcmxhcDogZmFsc2UsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5zZXQoc2NoZWR1bGUubmFtZSwge1xuICAgICAgdGFzayxcbiAgICAgIGlucHV0Rm46IHNjaGVkdWxlLmlucHV0LFxuICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cuaWQsXG4gICAgfSk7XG4gICAgYXdhaXQgdGFzay5zdGFydCgpO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr66W8IOykkeyngFxuICBhc3luYyB1bnNjaGVkdWxlVGFzayhuYW1lOiBzdHJpbmcpIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2tJdGVtID0gdGhpcy4jc2NoZWR1bGVkVGFza3MuZ2V0KG5hbWUpO1xuICAgIGlmICghdGFza0l0ZW0pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJzY2hlZHVsZWQgdGFzayBub3QgZm91bmRcIiwgbmFtZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3MuZGVsZXRlKG5hbWUpO1xuICAgIGF3YWl0IHRhc2tJdGVtLnRhc2suc3RvcCgpO1xuICAgIGF3YWl0IHRhc2tJdGVtLnRhc2suZGVzdHJveSgpO1xuICB9XG5cbiAgLy8g7JuM7YGs7ZSM66Gc7Jqw66W8IOuTseuhnSwg6rSA66Co65CcIOyKpOy8gOykhOydgCDrs4Trj4TroZwg65Ox66Gd7ZW07JW8IO2VqC5cbiAgcmVnaXN0ZXJXb3JrZmxvdzxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogV29ya2Zsb3dDcmVhdGVPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuICApOiBSdW5uYWJsZVdvcmtmbG93PFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dCwgU2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+PiB7XG4gICAgY29uc3QgZm4gPSBhc3luYyAoXG4gICAgICBwYXJhbXM6IFJlYWRvbmx5PHtcbiAgICAgICAgaW5wdXQ6IFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD47XG4gICAgICAgIHN0ZXA6IFN0ZXBBcGk7XG4gICAgICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gICAgICB9PixcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGJhc2VDb250ZXh0ID0ge1xuICAgICAgICB0cmFuc3BvcnQ6IFwiaHR0cFwiIGFzIGNvbnN0LFxuICAgICAgICByZXF1ZXN0OiBudWxsLFxuICAgICAgICByZXBseTogbnVsbCxcbiAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgIGNyZWF0ZVNTRTogKHNjaGVtYTogWm9kT2JqZWN0KSA9PiBjcmVhdGVNb2NrU1NFRmFjdG9yeShzY2hlbWEpLFxuICAgICAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICAgICAgICBsb2NhbGU6IFwiXCIsXG4gICAgICAgIHVzZXI6IG51bGwsXG4gICAgICAgIHNlc3Npb246IG51bGwsXG4gICAgICB9IGFzIHVua25vd24gYXMgQ29udGV4dDtcblxuICAgICAgY29uc3QgY29udGV4dFByb3ZpZGVyID0gU29uYW11LmNvbmZpZy50YXNrcz8uY29udGV4dFByb3ZpZGVyO1xuICAgICAgY29uc3QgY29udGV4dDogQ29udGV4dCA9IGNvbnRleHRQcm92aWRlclxuICAgICAgICA/IGF3YWl0IFByb21pc2UucmVzb2x2ZShjb250ZXh0UHJvdmlkZXIoYmFzZUNvbnRleHQpKVxuICAgICAgICA6IGJhc2VDb250ZXh0O1xuXG4gICAgICBjb25zdCBzdGVwID0gbmV3IFN0ZXBXcmFwcGVyKHBhcmFtcy5zdGVwKTtcbiAgICAgIHJldHVybiBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVuKHsgY29udGV4dCB9LCAoKSA9PlxuICAgICAgICBvcHRpb25zLmZ1bmN0aW9uKHtcbiAgICAgICAgICBpbnB1dDogcGFyYW1zLmlucHV0LFxuICAgICAgICAgIHN0ZXAsXG4gICAgICAgICAgdmVyc2lvbjogcGFyYW1zLnZlcnNpb24sXG4gICAgICAgICAgbG9nZ2VyOiBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkob3B0aW9ucy5uYW1lLCBcIndvcmtmbG93XCIpKSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuI293LmRlZmluZVdvcmtmbG93KFxuICAgICAge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogb3B0aW9ucy5zY2hlbWEsXG4gICAgICAgIHJldHJ5UG9saWN5OiBvcHRpb25zLnJldHJ5UG9saWN5LFxuICAgICAgfSxcbiAgICAgIGZuLFxuICAgICk7XG4gICAgcmV0dXJuIHdvcmtmbG93O1xuICB9XG5cbiAgLy8g7JuM7YGs7ZSM66Gc7Jqw66W8IOuTseuhnSDtlbTsoJwsIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIO2VtOygnO2VtOyVvCDtlaguXG4gIGFzeW5jIHVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcIm5hbWVcIiB8IFwidmVyc2lvblwiIHwgXCJpZFwiPikge1xuICAgIHRoaXMuI293LnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdy5uYW1lLCB3b3JrZmxvdy52ZXJzaW9uID8/IG51bGwpO1xuICB9XG5cbiAgLy8gV29ya2Vy66W8IOyEpOyglSDtm4Qg7Iuc7J6RXG4gIHNldHVwV29ya2VyKG9wdGlvbnM6IFdvcmtmbG93T3B0aW9ucykge1xuICAgIHRoaXMuI3dvcmtlciA9IHRoaXMuI293Lm5ld1dvcmtlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuqwgCDsnojsnLzrqbQgV29ya2Vy6rmM7KeAIOy0iOq4sO2ZlCwg7JWE64uI66m0IOuwseyXlOuTnOunjCDstIjquLDtmZRcbiAgYXN5bmMgc3RhcnRXb3JrZXIoKSB7XG4gICAgYXdhaXQgdGhpcy4jYmFja2VuZC5pbml0aWFsaXplKCk7XG4gICAgYXdhaXQgdGhpcy4jd29ya2VyPy5zdGFydCgpO1xuICB9XG5cbiAgLy8gV29ya2Vy66W8IOykkeyngFxuICBhc3luYyBzdG9wV29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RvcCgpO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr65Ok7J2EIOuqqOuRkCDspJHsp4BcbiAgYXN5bmMgc3RvcFNjaGVkdWxlcygpIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuI3NjaGVkdWxlZFRhc2tzLnZhbHVlcygpKS5tYXAoKHsgdGFzayB9KSA9PiBQcm9taXNlLnJlc29sdmUodGFzay5zdG9wKCkpKSxcbiAgICApO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr65Ok7J2EIOuqqOuRkCDsoJXrpqxcbiAgYXN5bmMgZGVzdHJveVNjaGVkdWxlcygpIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuI3NjaGVkdWxlZFRhc2tzLnZhbHVlcygpKS5tYXAoKHsgdGFzayB9KSA9PiBQcm9taXNlLnJlc29sdmUodGFzay5kZXN0cm95KCkpKSxcbiAgICApO1xuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmNsZWFyKCk7XG4gIH1cblxuICBhc3luYyBkZXN0cm95KCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcFNjaGVkdWxlcygpO1xuICAgIGF3YWl0IHRoaXMuc3RvcFdvcmtlcigpO1xuICAgIGF3YWl0IHRoaXMuZGVzdHJveVNjaGVkdWxlcygpO1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuc3RvcCgpO1xuICB9XG5cbiAgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuICAgIHJldHVybiB0aGlzLmRlc3Ryb3koKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7YUFzQnNDO2VBQ3NCO1lBQ3RCO1VBQ2M7bUJBR1I7Q0FxQy9CLGtCQUFiLE1BQTZCO0VBRTNC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
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { SD, init_sd } from "../dict/sd.js";
|
|
3
3
|
import { ServiceUnavailableException, init_so_exceptions } from "../exceptions/so-exceptions.js";
|
|
4
4
|
import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
|
|
5
5
|
import { init_zod_converter, propToZodType, zodTypeToRenderingNode } from "./zod-converter.js";
|
|
6
6
|
import z from "zod";
|
|
7
7
|
import assert from "assert";
|
|
8
|
-
|
|
9
8
|
//#region src/template/entity-converter.ts
|
|
10
9
|
/**
|
|
11
10
|
* 엔티티의 특정 subset을 RenderingNode로 변환합니다.
|
|
@@ -15,44 +14,33 @@ import assert from "assert";
|
|
|
15
14
|
async function getColumnsNode(entityId, subsetKey) {
|
|
16
15
|
const entity = EntityManager.get(entityId);
|
|
17
16
|
const subsetDef = entity.subsets[subsetKey];
|
|
18
|
-
if (subsetDef ===
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
const propNodes = entity.fieldExprsToPropNodes(subsetDef);
|
|
22
|
-
const rootPropNode = {
|
|
17
|
+
if (subsetDef === void 0) throw new ServiceUnavailableException(SD("sonamu.error.subsetNotFound")(subsetKey));
|
|
18
|
+
const columnsNode = zodTypeToRenderingNode(await propNodeToZodType({
|
|
23
19
|
nodeType: "object",
|
|
24
|
-
children:
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const columnsNode = zodTypeToRenderingNode(columnsZodType);
|
|
28
|
-
assert(columnsNode.children !== undefined, "columnsNode.children is undefined");
|
|
20
|
+
children: entity.fieldExprsToPropNodes(subsetDef)
|
|
21
|
+
}));
|
|
22
|
+
assert(columnsNode.children !== void 0, "columnsNode.children is undefined");
|
|
29
23
|
columnsNode.children = columnsNode.children.map((child) => {
|
|
30
24
|
if (child.renderType === "object") {
|
|
31
|
-
assert(child.children !==
|
|
25
|
+
assert(child.children !== void 0, "child.children is undefined");
|
|
32
26
|
const pickedCol = child.children.find((cc) => ["title", "name"].includes(cc.name));
|
|
33
|
-
if (pickedCol) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
} else {
|
|
40
|
-
return child;
|
|
41
|
-
}
|
|
27
|
+
if (pickedCol) return {
|
|
28
|
+
...child,
|
|
29
|
+
renderType: "object-pick",
|
|
30
|
+
config: { picked: pickedCol.name }
|
|
31
|
+
};
|
|
32
|
+
else return child;
|
|
42
33
|
} else if (child.renderType === "array" && child.element && child.element.renderType === "object") {
|
|
43
34
|
const pickedCol = child.element?.children?.find((cc) => ["title", "name"].includes(cc.name));
|
|
44
|
-
if (pickedCol) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
element
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
} else {
|
|
54
|
-
return child;
|
|
55
|
-
}
|
|
35
|
+
if (pickedCol) return {
|
|
36
|
+
...child,
|
|
37
|
+
element: {
|
|
38
|
+
...child.element,
|
|
39
|
+
renderType: "object-pick",
|
|
40
|
+
config: { picked: pickedCol.name }
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
else return child;
|
|
56
44
|
}
|
|
57
45
|
return child;
|
|
58
46
|
});
|
|
@@ -63,38 +51,26 @@ async function getColumnsNode(entityId, subsetKey) {
|
|
|
63
51
|
* plain, array, object 세 가지 nodeType을 재귀적으로 처리합니다.
|
|
64
52
|
*/
|
|
65
53
|
async function propNodeToZodType(propNode) {
|
|
66
|
-
if (propNode.nodeType === "plain")
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (propNode.prop.nullable === true) {
|
|
79
|
-
return z.array(innerType).nullable();
|
|
80
|
-
} else {
|
|
81
|
-
return z.array(innerType);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
} else if (propNode.nodeType === "object") {
|
|
54
|
+
if (propNode.nodeType === "plain") return propToZodType(propNode.prop);
|
|
55
|
+
else if (propNode.nodeType === "array") if (propNode.prop === void 0) throw new Error();
|
|
56
|
+
else if (propNode.children.length > 0) return (await propNodeToZodType({
|
|
57
|
+
...propNode,
|
|
58
|
+
nodeType: "object"
|
|
59
|
+
})).array();
|
|
60
|
+
else {
|
|
61
|
+
const innerType = await propToZodType(propNode.prop);
|
|
62
|
+
if (propNode.prop.nullable === true) return z.array(innerType).nullable();
|
|
63
|
+
else return z.array(innerType);
|
|
64
|
+
}
|
|
65
|
+
else if (propNode.nodeType === "object") {
|
|
85
66
|
const entries = await Promise.all(propNode.children.map(async (childPropNode) => {
|
|
86
|
-
assert(childPropNode.prop?.name !==
|
|
67
|
+
assert(childPropNode.prop?.name !== void 0, "childPropNode.prop.name is undefined");
|
|
87
68
|
return [childPropNode.prop.name, await propNodeToZodType(childPropNode)];
|
|
88
69
|
}));
|
|
89
70
|
const obj = Object.fromEntries(entries);
|
|
90
|
-
if (propNode.prop?.nullable === true)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return z.object(obj);
|
|
94
|
-
}
|
|
95
|
-
} else {
|
|
96
|
-
throw Error;
|
|
97
|
-
}
|
|
71
|
+
if (propNode.prop?.nullable === true) return z.object(obj).nullable();
|
|
72
|
+
else return z.object(obj);
|
|
73
|
+
} else throw Error;
|
|
98
74
|
}
|
|
99
75
|
var init_entity_converter = __esmMin((() => {
|
|
100
76
|
init_sd();
|
|
@@ -102,8 +78,8 @@ var init_entity_converter = __esmMin((() => {
|
|
|
102
78
|
init_so_exceptions();
|
|
103
79
|
init_zod_converter();
|
|
104
80
|
}));
|
|
105
|
-
|
|
106
81
|
//#endregion
|
|
107
82
|
init_entity_converter();
|
|
108
83
|
export { getColumnsNode, init_entity_converter, propNodeToZodType };
|
|
109
|
-
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNvbnZlcnRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvZW50aXR5LWNvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi9kaWN0L3NkXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcIi4uL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlQcm9wTm9kZSwgdHlwZSBSZW5kZXJpbmdOb2RlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBwcm9wVG9ab2RUeXBlLCB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlIH0gZnJvbSBcIi4vem9kLWNvbnZlcnRlclwiO1xuXG4vKipcbiAqIOyXlO2LsO2LsOydmCDtirnsoJUgc3Vic2V07J2EIFJlbmRlcmluZ05vZGXroZwg67OA7ZmY7ZWp64uI64ukLlxuICogc3Vic2V07J2YIO2VhOuTnOuTpOydhCBab2Qg7YOA7J6F7Jy866GcIOuzgO2ZmO2VnCDtm4QgVUkg66CM642U66eB7JqpIOuFuOuTnOuhnCDrp4zrk63ri4jri6QuXG4gKiBvYmplY3TsmYAgYXJyYXnsnZgg6rK97JqwIOyggeygiO2VnCBwaWNrIO2VhOuTnOulvCDsnpDrj5nsnLzroZwg7ISg7YOd7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29sdW1uc05vZGUoZW50aXR5SWQ6IHN0cmluZywgc3Vic2V0S2V5OiBzdHJpbmcpOiBQcm9taXNlPFJlbmRlcmluZ05vZGU+IHtcbiAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICBjb25zdCBzdWJzZXREZWYgPSBlbnRpdHkuc3Vic2V0c1tzdWJzZXRLZXldO1xuICBpZiAoc3Vic2V0RGVmID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uKFNEKFwic29uYW11LmVycm9yLnN1YnNldE5vdEZvdW5kXCIpKHN1YnNldEtleSkpO1xuICB9XG4gIGNvbnN0IHByb3BOb2RlcyA9IGVudGl0eS5maWVsZEV4cHJzVG9Qcm9wTm9kZXMoc3Vic2V0RGVmKTtcbiAgY29uc3Qgcm9vdFByb3BOb2RlOiBFbnRpdHlQcm9wTm9kZSA9IHtcbiAgICBub2RlVHlwZTogXCJvYmplY3RcIixcbiAgICBjaGlsZHJlbjogcHJvcE5vZGVzLFxuICB9O1xuXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIHpvZCDsiqTtgqTrp4jrpbwg66Gc65Oc7ZWgIOuVjCDsgqzsmqntlZjripQg7YOA7J6FXG4gIGNvbnN0IGNvbHVtbnNab2RUeXBlID0gKGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKHJvb3RQcm9wTm9kZSkpIGFzIHouWm9kT2JqZWN0PGFueT47XG5cbiAgY29uc3QgY29sdW1uc05vZGUgPSB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlKGNvbHVtbnNab2RUeXBlKTtcbiAgYXNzZXJ0KGNvbHVtbnNOb2RlLmNoaWxkcmVuICE9PSB1bmRlZmluZWQsIFwiY29sdW1uc05vZGUuY2hpbGRyZW4gaXMgdW5kZWZpbmVkXCIpO1xuICBjb2x1bW5zTm9kZS5jaGlsZHJlbiA9IGNvbHVtbnNOb2RlLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICBpZiAoY2hpbGQucmVuZGVyVHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgYXNzZXJ0KGNoaWxkLmNoaWxkcmVuICE9PSB1bmRlZmluZWQsIFwiY2hpbGQuY2hpbGRyZW4gaXMgdW5kZWZpbmVkXCIpO1xuICAgICAgY29uc3QgcGlja2VkQ29sID0gY2hpbGQuY2hpbGRyZW4uZmluZCgoY2MpID0+IFtcInRpdGxlXCIsIFwibmFtZVwiXS5pbmNsdWRlcyhjYy5uYW1lKSk7XG4gICAgICBpZiAocGlja2VkQ29sKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgcmVuZGVyVHlwZTogXCJvYmplY3QtcGlja1wiLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgcGlja2VkOiBwaWNrZWRDb2wubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjaGlsZC5yZW5kZXJUeXBlID09PSBcImFycmF5XCIgJiZcbiAgICAgIGNoaWxkLmVsZW1lbnQgJiZcbiAgICAgIGNoaWxkLmVsZW1lbnQucmVuZGVyVHlwZSA9PT0gXCJvYmplY3RcIlxuICAgICkge1xuICAgICAgY29uc3QgcGlja2VkQ29sID0gY2hpbGQuZWxlbWVudD8uY2hpbGRyZW4/LmZpbmQoKGNjKSA9PiBbXCJ0aXRsZVwiLCBcIm5hbWVcIl0uaW5jbHVkZXMoY2MubmFtZSkpO1xuICAgICAgaWYgKHBpY2tlZENvbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIC4uLmNoaWxkLmVsZW1lbnQsXG4gICAgICAgICAgICByZW5kZXJUeXBlOiBcIm9iamVjdC1waWNrXCIsXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgcGlja2VkOiBwaWNrZWRDb2wubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcblxuICByZXR1cm4gY29sdW1uc05vZGU7XG59XG5cbi8qKlxuICogRW50aXR5UHJvcE5vZGXrpbwgWm9kIO2DgOyeheycvOuhnCDrs4DtmZjtlanri4jri6QuXG4gKiBwbGFpbiwgYXJyYXksIG9iamVjdCDshLgg6rCA7KeAIG5vZGVUeXBl7J2EIOyerOq3gOyggeycvOuhnCDsspjrpqztlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9wTm9kZVRvWm9kVHlwZShwcm9wTm9kZTogRW50aXR5UHJvcE5vZGUpOiBQcm9taXNlPHouWm9kVHlwZUFueT4ge1xuICBpZiAocHJvcE5vZGUubm9kZVR5cGUgPT09IFwicGxhaW5cIikge1xuICAgIHJldHVybiBwcm9wVG9ab2RUeXBlKHByb3BOb2RlLnByb3ApO1xuICB9IGVsc2UgaWYgKHByb3BOb2RlLm5vZGVUeXBlID09PSBcImFycmF5XCIpIHtcbiAgICBpZiAocHJvcE5vZGUucHJvcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9IGVsc2UgaWYgKHByb3BOb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKHtcbiAgICAgICAgICAuLi5wcm9wTm9kZSxcbiAgICAgICAgICBub2RlVHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgfSlcbiAgICAgICkuYXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5uZXJUeXBlID0gYXdhaXQgcHJvcFRvWm9kVHlwZShwcm9wTm9kZS5wcm9wKTtcbiAgICAgIGlmIChwcm9wTm9kZS5wcm9wLm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB6LmFycmF5KGlubmVyVHlwZSkubnVsbGFibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB6LmFycmF5KGlubmVyVHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3BOb2RlLm5vZGVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgZW50cmllcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvcE5vZGUuY2hpbGRyZW4ubWFwKGFzeW5jIChjaGlsZFByb3BOb2RlKSA9PiB7XG4gICAgICAgIGFzc2VydChjaGlsZFByb3BOb2RlLnByb3A/Lm5hbWUgIT09IHVuZGVmaW5lZCwgXCJjaGlsZFByb3BOb2RlLnByb3AubmFtZSBpcyB1bmRlZmluZWRcIik7XG4gICAgICAgIHJldHVybiBbY2hpbGRQcm9wTm9kZS5wcm9wLm5hbWUsIGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKGNoaWxkUHJvcE5vZGUpXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpO1xuXG4gICAgaWYgKHByb3BOb2RlLnByb3A/Lm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gei5vYmplY3Qob2JqKS5udWxsYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gei5vYmplY3Qob2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3I7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWVBLGVBQXNCLGVBQWUsVUFBa0IsV0FBMkM7Q0FDaEcsTUFBTSxTQUFTLGNBQWMsSUFBSSxRQUFRO0NBQ3pDLE1BQU0sWUFBWSxPQUFPLFFBQVE7Q0FDakMsSUFBSSxjQUFjLFFBQ2hCLE1BQU0sSUFBSSw0QkFBNEIsR0FBRyw2QkFBNkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztDQVdwRixNQUFNLGNBQWMsdUJBQXVCLE1BRmIsa0JBQWtCO0VBTDlDLFVBQVU7RUFDVixVQUhnQixPQUFPLHNCQUFzQixTQUduQztDQUlvQyxDQUFZLENBRUg7Q0FDekQsT0FBTyxZQUFZLGFBQWEsUUFBVyxtQ0FBbUM7Q0FDOUUsWUFBWSxXQUFXLFlBQVksU0FBUyxLQUFLLFVBQVU7RUFDekQsSUFBSSxNQUFNLGVBQWUsVUFBVTtHQUNqQyxPQUFPLE1BQU0sYUFBYSxRQUFXLDZCQUE2QjtHQUNsRSxNQUFNLFlBQVksTUFBTSxTQUFTLE1BQU0sT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztHQUNqRixJQUFJLFdBQ0YsT0FBTztJQUNMLEdBQUc7SUFDSCxZQUFZO0lBQ1osUUFBUSxFQUNOLFFBQVEsVUFBVSxLQUNwQjtHQUNGO1FBRUEsT0FBTztFQUVYLE9BQU8sSUFDTCxNQUFNLGVBQWUsV0FDckIsTUFBTSxXQUNOLE1BQU0sUUFBUSxlQUFlLFVBQzdCO0dBQ0EsTUFBTSxZQUFZLE1BQU0sU0FBUyxVQUFVLE1BQU0sT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztHQUMzRixJQUFJLFdBQ0YsT0FBTztJQUNMLEdBQUc7SUFDSCxTQUFTO0tBQ1AsR0FBRyxNQUFNO0tBQ1QsWUFBWTtLQUNaLFFBQVEsRUFDTixRQUFRLFVBQVUsS0FDcEI7SUFDRjtHQUNGO1FBRUEsT0FBTztFQUVYO0VBQ0EsT0FBTztDQUNULENBQUM7Q0FFRCxPQUFPO0FBQ1Q7Ozs7O0FBTUEsZUFBc0Isa0JBQWtCLFVBQWlEO0NBQ3ZGLElBQUksU0FBUyxhQUFhLFNBQ3hCLE9BQU8sY0FBYyxTQUFTLElBQUk7TUFDN0IsSUFBSSxTQUFTLGFBQWEsU0FDL0IsSUFBSSxTQUFTLFNBQVMsUUFDcEIsTUFBTSxJQUFJLE1BQU07TUFDWCxJQUFJLFNBQVMsU0FBUyxTQUFTLEdBQ3BDLFFBQ0UsTUFBTSxrQkFBa0I7RUFDdEIsR0FBRztFQUNILFVBQVU7Q0FDWixDQUFDLEVBQUEsQ0FDRCxNQUFNO01BQ0g7RUFDTCxNQUFNLFlBQVksTUFBTSxjQUFjLFNBQVMsSUFBSTtFQUNuRCxJQUFJLFNBQVMsS0FBSyxhQUFhLE1BQzdCLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLFNBQVM7T0FFbkMsT0FBTyxFQUFFLE1BQU0sU0FBUztDQUU1QjtNQUNLLElBQUksU0FBUyxhQUFhLFVBQVU7RUFDekMsTUFBTSxVQUFVLE1BQU0sUUFBUSxJQUM1QixTQUFTLFNBQVMsSUFBSSxPQUFPLGtCQUFrQjtHQUM3QyxPQUFPLGNBQWMsTUFBTSxTQUFTLFFBQVcsc0NBQXNDO0dBQ3JGLE9BQU8sQ0FBQyxjQUFjLEtBQUssTUFBTSxNQUFNLGtCQUFrQixhQUFhLENBQUM7RUFDekUsQ0FBQyxDQUNIO0VBQ0EsTUFBTSxNQUFNLE9BQU8sWUFBWSxPQUFPO0VBRXRDLElBQUksU0FBUyxNQUFNLGFBQWEsTUFDOUIsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUztPQUU5QixPQUFPLEVBQUUsT0FBTyxHQUFHO0NBRXZCLE9BQ0UsTUFBTTtBQUVWOztTQWhIK0I7cUJBQ3lCO29CQUNpQjtvQkFFRiJ9
|