sonamu 0.12.0 → 0.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +1 -2
- package/dist/ai/agents/agent.js +2 -3
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +1 -2
- package/dist/ai/providers/rtzr/error.js +2 -3
- package/dist/ai/providers/rtzr/model.js +1 -2
- package/dist/ai/providers/rtzr/options.js +1 -2
- package/dist/ai/providers/rtzr/provider.js +1 -2
- package/dist/ai/providers/rtzr/utils.js +1 -2
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.d.ts +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +9 -9
- package/dist/api/code-converters.js +6 -5
- package/dist/api/config.d.ts +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +2 -3
- package/dist/api/context.d.ts +2 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +2 -3
- package/dist/api/http-validator.js +2 -3
- package/dist/api/index.js +8 -3
- package/dist/api/secret.js +1 -2
- package/dist/api/sonamu.d.ts +3 -5
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +19 -18
- package/dist/api/validator.js +1 -2
- package/dist/api/websocket-helpers.js +2 -3
- package/dist/auth/audit-log/builders.js +1 -2
- package/dist/auth/audit-log/client-ip.js +2 -3
- package/dist/auth/audit-log/events.js +1 -2
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +2 -3
- package/dist/auth/audit-log-ingestor.js +2 -3
- package/dist/auth/auth-generator.js +2 -3
- package/dist/auth/better-auth-entities.js +1 -2
- package/dist/auth/better-auth-request.js +2 -3
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +2 -3
- package/dist/auth/plugins/entity-definitions/admin.js +1 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +1 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +1 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +1 -2
- package/dist/auth/plugins/entity-definitions/index.js +1 -2
- package/dist/auth/plugins/entity-definitions/jwt.js +1 -2
- package/dist/auth/plugins/entity-definitions/organization.js +1 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +1 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +1 -2
- package/dist/auth/plugins/entity-definitions/sso.js +1 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +1 -2
- package/dist/auth/plugins/entity-definitions/username.js +1 -2
- package/dist/auth/plugins/wrappers/admin.d.ts +33 -32
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- 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/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.d.ts +43 -1
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.d.ts +138 -187
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.js +1 -2
- package/dist/auth/plugins/wrappers/two-factor.d.ts +51 -10
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.d.ts +39 -5
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +5 -5
- package/dist/bin/compiler-policy.js +2 -3
- package/dist/bin/fixture.js +7 -5
- package/dist/bin/hmr-hook-register.js +1 -2
- package/dist/bin/migrate-targets.js +2 -3
- package/dist/bin/test-command.js +2 -3
- package/dist/bin/ts-loader-register.js +2 -3
- package/dist/bin/ts-loader-registration.js +2 -3
- package/dist/bin/typecheck-web.js +2 -3
- package/dist/cache/cache-manager.js +1 -2
- package/dist/cache/decorator.js +2 -3
- package/dist/cache/drivers.js +1 -2
- package/dist/cache/index.js +2 -3
- package/dist/cache-control/cache-control.js +1 -2
- package/dist/code-formatting/index.js +2 -3
- package/dist/code-formatting/oxfmt.js +2 -3
- package/dist/code-formatting/oxlint.js +2 -3
- package/dist/compress/compress.js +1 -2
- package/dist/compress/index.js +2 -2
- package/dist/compress/types.d.ts +1 -1
- package/dist/compress/types.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +2 -3
- package/dist/database/_batch_update.js +1 -2
- package/dist/database/base-model.js +4 -4
- package/dist/database/db.js +4 -4
- package/dist/database/knex.js +2 -3
- package/dist/database/puri-wrapper.js +2 -3
- package/dist/database/puri.js +23 -22
- package/dist/database/puri.types.js +1 -2
- package/dist/database/transaction-context.js +1 -2
- package/dist/database/upsert-builder.js +2 -3
- package/dist/dict/en.js +2 -3
- package/dist/dict/index.js +3 -3
- package/dist/dict/ko.js +2 -3
- package/dist/dict/rc-keys.js +1 -2
- package/dist/dict/sd.js +2 -3
- package/dist/dict/sonamu-dictionary.js +7 -6
- package/dist/dict/utils.js +2 -3
- package/dist/entity/entity-manager.d.ts +66 -66
- package/dist/entity/entity-manager.js +4 -4
- package/dist/entity/entity-template-cone.js +2 -3
- package/dist/entity/entity.js +21 -18
- package/dist/env.js +1 -2
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +2 -3
- package/dist/filter/index.js +3 -2
- package/dist/filter/types.js +1 -2
- package/dist/filter/utils.js +7 -6
- package/dist/index.js +39 -5
- package/dist/logger/category.js +2 -3
- package/dist/logger/configure.js +5 -5
- package/dist/migration/code-generation.js +23 -16
- package/dist/migration/index-where-predicate.js +2 -3
- package/dist/migration/migration-set.js +2 -3
- package/dist/migration/migrator.js +2 -3
- package/dist/migration/postgresql-schema-reader.js +6 -9
- package/dist/migration/slack-confirm.js +2 -3
- package/dist/naite/naite-reporter.js +2 -3
- package/dist/naite/naite.js +10 -8
- package/dist/runtime-type.js +2 -3
- package/dist/ssr/hmr-opt-out.js +1 -2
- package/dist/ssr/index.js +7 -4
- package/dist/ssr/registry.js +1 -2
- package/dist/ssr/renderer.js +2 -3
- package/dist/storage/base-file.js +1 -2
- package/dist/storage/buffered-file.js +2 -3
- package/dist/storage/drivers.js +1 -2
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +1 -2
- package/dist/storage/storage-manager.js +2 -3
- package/dist/storage/uploaded-file.js +2 -3
- package/dist/stream/__tests__/ws-test-helpers.js +2 -3
- package/dist/stream/index.js +11 -2
- package/dist/stream/sse.js +1 -2
- package/dist/stream/ws-audience-resolver.js +2 -3
- package/dist/stream/ws-audience.js +1 -2
- package/dist/stream/ws-cluster-bus.js +1 -2
- package/dist/stream/ws-delivery.js +2 -3
- package/dist/stream/ws-frame.js +1 -2
- package/dist/stream/ws-local-connection-store.js +2 -3
- package/dist/stream/ws-presence-index.js +1 -2
- package/dist/stream/ws-presence-store.js +2 -3
- package/dist/stream/ws-registry.js +2 -3
- package/dist/stream/ws-session-id.js +1 -2
- package/dist/stream/ws-telemetry-memory.js +3 -4
- package/dist/stream/ws-telemetry-trace.js +1 -2
- package/dist/stream/ws-telemetry.js +2 -3
- package/dist/stream/ws.js +2 -3
- package/dist/syncer/api-parser.js +2 -3
- package/dist/syncer/checksum.js +4 -4
- package/dist/syncer/code-generator.js +4 -4
- package/dist/syncer/entity-operations.js +2 -3
- package/dist/syncer/event-batcher.js +1 -2
- package/dist/syncer/file-copy.js +2 -3
- package/dist/syncer/file-patterns.js +2 -3
- package/dist/syncer/file-tracking.js +2 -3
- package/dist/syncer/filesystem-dependencies.js +1 -2
- package/dist/syncer/index.js +8 -2
- package/dist/syncer/module-loader.js +8 -6
- package/dist/syncer/syncer-actions.js +8 -7
- package/dist/syncer/syncer.js +13 -8
- package/dist/syncer/watcher.js +2 -3
- package/dist/tasks/decorator.js +1 -2
- package/dist/tasks/step-wrapper.js +2 -3
- package/dist/tasks/workflow-manager.js +2 -3
- package/dist/template/entity-converter.js +17 -16
- package/dist/template/helpers.js +2 -3
- package/dist/template/implementations/entity.template.js +2 -3
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +2 -3
- package/dist/template/implementations/generated_http.template.js +6 -6
- package/dist/template/implementations/generated_sso.template.js +2 -3
- package/dist/template/implementations/http_validators.template.js +2 -3
- package/dist/template/implementations/init_types.template.js +2 -3
- package/dist/template/implementations/model.template.js +4 -4
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +2 -3
- package/dist/template/implementations/sd.template.js +2 -3
- package/dist/template/implementations/services.template.js +2 -3
- package/dist/template/implementations/view_form.template.js +12 -9
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +19 -17
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +9 -3
- package/dist/template/template-manager.js +2 -3
- package/dist/template/template-types.js +1 -2
- package/dist/template/template.js +2 -3
- package/dist/template/zod-converter.js +54 -47
- package/dist/testing/_relation-graph.js +2 -3
- package/dist/testing/bootstrap.js +2 -3
- package/dist/testing/data-explorer.js +2 -3
- package/dist/testing/dev-test-routes.js +2 -3
- package/dist/testing/dev-vitest-manager.js +15 -12
- package/dist/testing/faker-mappings.js +1 -2
- package/dist/testing/filesystem.js +2 -3
- package/dist/testing/fixture-generator.js +2 -3
- package/dist/testing/fixture-loader.js +1 -2
- package/dist/testing/fixture-manager.js +12 -9
- package/dist/testing/global-setup.js +5 -5
- package/dist/testing/index.js +6 -3
- package/dist/testing/naite-vitest-reporter.js +1 -2
- package/dist/testing/parallel-db-manager.js +2 -3
- package/dist/testing/vitest-helpers.js +2 -3
- package/dist/tooling/__tests__/helpers/sonamu-test-root.js +2 -3
- package/dist/tooling/cdd-service.js +1 -2
- package/dist/tooling/cli-tooling.js +1 -2
- package/dist/tooling/fixture-service.js +1 -2
- package/dist/tooling/index.js +1 -2
- package/dist/tooling/test-run-client.js +2 -3
- package/dist/tsdown.api.config.js +1 -2
- package/dist/types/types.js +2 -3
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +4 -5
- package/dist/ui/ai-client.d.ts +2 -2
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +9 -8
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +11 -8
- package/dist/ui/async-route.js +1 -2
- package/dist/ui/cdd-service.js +22 -21
- package/dist/ui/migrations-api.js +6 -5
- package/dist/ui-web/assets/index-QDMyy31K.js +180 -0
- package/dist/ui-web/assets/index-dV7akMFB.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +1 -2
- package/dist/utils/class-name.js +1 -2
- package/dist/utils/console-util.js +1 -2
- package/dist/utils/controller.js +2 -3
- package/dist/utils/esm-utils.js +1 -2
- package/dist/utils/fs-utils.js +2 -3
- package/dist/utils/lodash-able.js +1 -2
- package/dist/utils/model.js +1 -2
- package/dist/utils/object-utils.js +2 -3
- package/dist/utils/path-utils.js +2 -3
- package/dist/utils/process-utils.js +2 -3
- package/dist/utils/runtime-value.js +1 -2
- package/dist/utils/sql-parser.js +2 -3
- package/dist/utils/type-utils.js +8 -8
- package/dist/utils/utils.js +2 -3
- package/dist/utils/zod-error.js +2 -3
- package/dist/vector/chunking.js +1 -2
- package/dist/vector/config.js +1 -2
- package/dist/vector/embedding.js +4 -4
- package/package.json +67 -67
- package/src/ai/agents/agent.ts +1 -1
- package/src/api/__tests__/sonamu.plugins.test.ts +11 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +6 -10
- package/src/api/config.ts +1 -1
- package/src/api/context.ts +2 -8
- package/src/api/sonamu.ts +26 -21
- package/src/auth/audit-log/plugin.ts +2 -0
- package/src/compress/types.ts +1 -1
- package/src/exceptions/error-handler.ts +3 -2
- package/src/template/implementations/model.template.ts +3 -3
- package/src/template/implementations/view_list.template.ts +12 -13
- package/src/ui/ai-api.ts +4 -2
- package/src/ui/ai-client.ts +2 -2
- package/src/ui/api.ts +58 -62
- package/dist/ui-web/assets/index-BMdIyKXS.css +0 -1
- package/dist/ui-web/assets/index-LpE8u19O.js +0 -178
|
@@ -5,7 +5,7 @@ import { Template, init_template } from "../template.js";
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import ts from "@typescript/typescript6";
|
|
7
7
|
import qs from "qs";
|
|
8
|
-
|
|
8
|
+
// src/template/implementations/generated_http.template.ts
|
|
9
9
|
init_code_converters();
|
|
10
10
|
init_sonamu();
|
|
11
11
|
init_types();
|
|
@@ -317,9 +317,10 @@ var Template__generated_http = class extends Template {
|
|
|
317
317
|
zodTypeToReqDefault(zodType, name) {
|
|
318
318
|
if (zodType instanceof z.ZodObject) return Object.fromEntries(Object.keys(zodType["shape"]).map((key) => [key, this.zodTypeToReqDefault(zodType["shape"][key], key)]));
|
|
319
319
|
else if (zodType instanceof z.ZodArray) return [this.zodTypeToReqDefault(zodType.element, name)];
|
|
320
|
-
else if (zodType instanceof z.core.$ZodString)
|
|
321
|
-
|
|
322
|
-
|
|
320
|
+
else if (zodType instanceof z.core.$ZodString) {
|
|
321
|
+
if (name.endsWith("_at") || name.endsWith("_date") || name === "range") return "2000-01-01";
|
|
322
|
+
else return name.toUpperCase();
|
|
323
|
+
} else if (zodType instanceof z.ZodNumber) {
|
|
323
324
|
if (name === "num") return 24;
|
|
324
325
|
const minValue = zodType.minValue ?? 0;
|
|
325
326
|
return minValue > Number.MIN_SAFE_INTEGER ? minValue : 0;
|
|
@@ -361,7 +362,6 @@ var Template__generated_http = class extends Template {
|
|
|
361
362
|
}
|
|
362
363
|
}
|
|
363
364
|
};
|
|
364
|
-
//#endregion
|
|
365
365
|
export { Template__generated_http };
|
|
366
366
|
|
|
367
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlbXBsYXRlL2ltcGxlbWVudGF0aW9ucy9nZW5lcmF0ZWRfaHR0cC50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSBcIkB0eXBlc2NyaXB0L3R5cGVzY3JpcHQ2XCI7XG5pbXBvcnQgcXMgZnJvbSBcInFzXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyBnZXRab2RPYmplY3RGcm9tQXBpIH0gZnJvbSBcIi4uLy4uL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbmltcG9ydCB7IHR5cGUgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBBcGlQYXJhbVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbnR5cGUgUmVxdWVzdERlZmF1bHRWYWx1ZSA9XG4gIHwgbnVsbFxuICB8IHVuZGVmaW5lZFxuICB8IGJpZ2ludFxuICB8IGJvb2xlYW5cbiAgfCBudW1iZXJcbiAgfCBzdHJpbmdcbiAgfCBSZXF1ZXN0RGVmYXVsdFZhbHVlW11cbiAgfCBSZXF1ZXN0RGVmYXVsdE9iamVjdDtcblxuaW50ZXJmYWNlIFJlcXVlc3REZWZhdWx0T2JqZWN0IHtcbiAgW2tleTogc3RyaW5nXTogUmVxdWVzdERlZmF1bHRWYWx1ZTtcbn1cblxudHlwZSBQcmltaXRpdmVEZWZhdWx0ID0gbnVsbCB8IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmc7XG5cbnR5cGUgTWV0YWRhdGFEZWZhdWx0VW5pb25Db2xsZWN0aW9uID1cbiAgfCB7IHVuc3VwcG9ydGVkOiBmYWxzZTsgc2NoZW1hczogei5ab2RUeXBlW10gfVxuICB8IHsgdW5zdXBwb3J0ZWQ6IHRydWUgfTtcblxuY29uc3QgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0ID0ge1xuICAvLyDsoITsl60g7Jik66WYIOuntSDrjIDsi6Ag67aA7J6R7JqpIOyXhuuKlCDsmKTrpZgg66mU7Iuc7KeA66W8IOyCrOyaqe2VnOuLpC5cbiAgZXJyb3I6ICgpID0+IFwiQVBJIOuplO2DgOuNsOydtO2EsCDquLDrs7jqsJLsnbQg7Iqk7YKk66eIIOygnOyVveydhCDstqnsobHtlZjsp4Ag7JWK7Iq164uI64ukLlwiLFxufTtcblxuY29uc3QgbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEgPSB6Lmluc3RhbmNlb2Yoei5ab2RUeXBlKTtcbmNvbnN0IG1ldGFkYXRhRW1wdHlDaGVja3NTY2hlbWEgPSB6LnR1cGxlKFtdKS5vcHRpb25hbCgpO1xuY29uc3QgbWV0YWRhdGFDaGVja0Z1bmN0aW9uU2NoZW1hID0gei5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcblxuY29uc3QgbWV0YWRhdGFFbWFpbERlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RyaW5nXCIpLFxuICBjaGVjazogei5saXRlcmFsKFwic3RyaW5nX2Zvcm1hdFwiKSxcbiAgZm9ybWF0OiB6LmxpdGVyYWwoXCJlbWFpbFwiKSxcbiAgYWJvcnQ6IHoubGl0ZXJhbChmYWxzZSksXG4gIHBhdHRlcm46IHouaW5zdGFuY2VvZihSZWdFeHApLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nTWluTGVuZ3RoRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICBjaGVjazogei5saXRlcmFsKFwibWluX2xlbmd0aFwiKSxcbiAgbWluaW11bTogei5udW1iZXIoKSxcbiAgd2hlbjogbWV0YWRhdGFDaGVja0Z1bmN0aW9uU2NoZW1hLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nTWF4TGVuZ3RoRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICBjaGVjazogei5saXRlcmFsKFwibWF4X2xlbmd0aFwiKSxcbiAgbWF4aW11bTogei5udW1iZXIoKSxcbiAgd2hlbjogbWV0YWRhdGFDaGVja0Z1bmN0aW9uU2NoZW1hLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nTGVuZ3RoRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICBjaGVjazogei5saXRlcmFsKFwibGVuZ3RoX2VxdWFsc1wiKSxcbiAgbGVuZ3RoOiB6Lm51bWJlcigpLFxuICB3aGVuOiBtZXRhZGF0YUNoZWNrRnVuY3Rpb25TY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFTdHJpbmdDaGVja1NjaGVtYSA9IHoudW5pb24oW1xuICB6Lmluc3RhbmNlb2Yoei5ab2RFbWFpbCksXG4gIHouaW5zdGFuY2VvZih6LmNvcmUuJFpvZENoZWNrTWluTGVuZ3RoKSxcbiAgei5pbnN0YW5jZW9mKHouY29yZS4kWm9kQ2hlY2tNYXhMZW5ndGgpLFxuICB6Lmluc3RhbmNlb2Yoei5jb3JlLiRab2RDaGVja0xlbmd0aEVxdWFscyksXG5dKTtcblxuY29uc3QgbWV0YWRhdGFDaGVja2VkU3RyaW5nRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdHJpbmdcIiksXG4gIGNvZXJjZTogei5saXRlcmFsKGZhbHNlKS5vcHRpb25hbCgpLFxuICBjaGVja3M6IHouYXJyYXkobWV0YWRhdGFTdHJpbmdDaGVja1NjaGVtYSksXG59KTtcblxuY29uc3QgbWV0YWRhdGFTYWZlSW50RGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJudW1iZXJcIiksXG4gIGNoZWNrOiB6LmxpdGVyYWwoXCJudW1iZXJfZm9ybWF0XCIpLFxuICBhYm9ydDogei5saXRlcmFsKGZhbHNlKSxcbiAgZm9ybWF0OiB6LmxpdGVyYWwoXCJzYWZlaW50XCIpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhR3JlYXRlclRoYW5EZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIGNoZWNrOiB6LmxpdGVyYWwoXCJncmVhdGVyX3RoYW5cIiksXG4gIHZhbHVlOiB6Lm51bWJlcigpLFxuICBpbmNsdXNpdmU6IHouYm9vbGVhbigpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhTGVzc1RoYW5EZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIGNoZWNrOiB6LmxpdGVyYWwoXCJsZXNzX3RoYW5cIiksXG4gIHZhbHVlOiB6Lm51bWJlcigpLFxuICBpbmNsdXNpdmU6IHouYm9vbGVhbigpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhTnVtYmVyQ2hlY2tTY2hlbWEgPSB6LnVuaW9uKFtcbiAgei5pbnN0YW5jZW9mKHouWm9kTnVtYmVyRm9ybWF0KSxcbiAgei5pbnN0YW5jZW9mKHouY29yZS4kWm9kQ2hlY2tHcmVhdGVyVGhhbiksXG4gIHouaW5zdGFuY2VvZih6LmNvcmUuJFpvZENoZWNrTGVzc1RoYW4pLFxuXSk7XG5cbmNvbnN0IG1ldGFkYXRhQ2hlY2tlZE51bWJlckRlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwibnVtYmVyXCIpLFxuICBjb2VyY2U6IHoubGl0ZXJhbChmYWxzZSkub3B0aW9uYWwoKSxcbiAgY2hlY2tzOiB6LmFycmF5KG1ldGFkYXRhTnVtYmVyQ2hlY2tTY2hlbWEpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdHJpbmdcIiksXG4gIGNvZXJjZTogei5saXRlcmFsKGZhbHNlKS5vcHRpb25hbCgpLFxuICBjaGVja3M6IG1ldGFkYXRhRW1wdHlDaGVja3NTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFOdW1iZXJEZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlclwiKSxcbiAgY29lcmNlOiB6LmxpdGVyYWwoZmFsc2UpLm9wdGlvbmFsKCksXG4gIGNoZWNrczogbWV0YWRhdGFFbXB0eUNoZWNrc1NjaGVtYSxcbn0pO1xuXG5jb25zdCBtZXRhZGF0YUJvb2xlYW5EZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImJvb2xlYW5cIiksXG4gIGNvZXJjZTogei5saXRlcmFsKGZhbHNlKS5vcHRpb25hbCgpLFxuICBjaGVja3M6IG1ldGFkYXRhRW1wdHlDaGVja3NTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFFbnVtRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJlbnVtXCIpLFxuICBlbnRyaWVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm51bWJlcigpXSkpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhTGl0ZXJhbERlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwibGl0ZXJhbFwiKSxcbiAgdmFsdWVzOiB6LmFycmF5KHoudW5pb24oW3ouc3RyaW5nKCksIHoubnVtYmVyKCksIHouYm9vbGVhbigpLCB6Lm51bGwoKV0pKS5taW4oMSksXG59KTtcblxuY29uc3QgbWV0YWRhdGFPcHRpb25hbERlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwib3B0aW9uYWxcIiksXG4gIGlubmVyVHlwZTogbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFOdWxsYWJsZURlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwibnVsbGFibGVcIiksXG4gIGlubmVyVHlwZTogbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFEZWZhdWx0SW5uZXJEZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImRlZmF1bHRcIiksXG4gIGlubmVyVHlwZTogbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEsXG59KTtcblxuZnVuY3Rpb24gY2xvbmVNZXRhZGF0YVJlZ0V4cChwYXR0ZXJuOiBSZWdFeHApOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICBjb25zdCBzb3VyY2VHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIFwic291cmNlXCIpPy5nZXQ7XG4gIGNvbnN0IGZsYWdzR2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBcImZsYWdzXCIpPy5nZXQ7XG4gIGlmIChzb3VyY2VHZXR0ZXIgPT09IHVuZGVmaW5lZCB8fCBmbGFnc0dldHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gU0FGRVRZOiDsm5Drs7jsnZgg7J6s7KCV7J2YIOqwgOuKpe2VnCDtlITroZztjbzti7DsmYAgdGVzdOulvCDtmLjstpztlZjsp4Ag7JWK64qU64ukLlxuICAgIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZUdldHRlci5jYWxsKHBhdHRlcm4pLCBmbGFnc0dldHRlci5jYWxsKHBhdHRlcm4pKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9uZU1ldGFkYXRhRW1haWxQYXR0ZXJuKGRlZmluaXRpb246IHouWm9kRW1haWxbXCJkZWZcIl0pOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YUVtYWlsRGVmU2NoZW1hLnNhZmVQYXJzZShkZWZpbml0aW9uLCBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBjbG9uZU1ldGFkYXRhUmVnRXhwKHJlc3VsdC5kYXRhLnBhdHRlcm4pO1xufVxuXG5mdW5jdGlvbiBjbG9uZU1ldGFkYXRhU3RyaW5nKHJlZmVyZW5jZTogei5ab2RTdHJpbmcpOiB6LlpvZFN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc3VsdCA9IG1ldGFkYXRhQ2hlY2tlZFN0cmluZ0RlZlNjaGVtYS5zYWZlUGFyc2UoXG4gICAgcmVmZXJlbmNlLmRlZixcbiAgICBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQsXG4gICk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IHNjaGVtYSA9IHouc3RyaW5nKCk7XG4gIGZvciAoY29uc3QgY2hlY2sgb2YgcmVzdWx0LmRhdGEuY2hlY2tzKSB7XG4gICAgLy8gU0FGRVRZOiDsm5Drs7gg6rKA7IKs64qUIOyLpO2Wie2VmOyngCDslYrqs6Ag7JeE6rKp7Z6IIOqygOymne2VnCDsm5Dsi5wg66mU7YOA642w7J207YSw66eMIOyCrOyaqe2VnOuLpC5cbiAgICBpZiAoY2hlY2sgaW5zdGFuY2VvZiB6LlpvZEVtYWlsKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gY2xvbmVNZXRhZGF0YUVtYWlsUGF0dGVybihjaGVjay5kZWYpO1xuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlZ2V4KHBhdHRlcm4pO1xuICAgIH0gZWxzZSBpZiAoY2hlY2sgaW5zdGFuY2VvZiB6LmNvcmUuJFpvZENoZWNrTWluTGVuZ3RoKSB7XG4gICAgICBjb25zdCBjaGVja1Jlc3VsdCA9IG1ldGFkYXRhU3RyaW5nTWluTGVuZ3RoRGVmU2NoZW1hLnNhZmVQYXJzZShcbiAgICAgICAgY2hlY2suX3pvZC5kZWYsXG4gICAgICAgIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCxcbiAgICAgICk7XG4gICAgICBpZiAoIWNoZWNrUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5taW4oY2hlY2tSZXN1bHQuZGF0YS5taW5pbXVtKTtcbiAgICB9IGVsc2UgaWYgKGNoZWNrIGluc3RhbmNlb2Ygei5jb3JlLiRab2RDaGVja01heExlbmd0aCkge1xuICAgICAgY29uc3QgY2hlY2tSZXN1bHQgPSBtZXRhZGF0YVN0cmluZ01heExlbmd0aERlZlNjaGVtYS5zYWZlUGFyc2UoXG4gICAgICAgIGNoZWNrLl96b2QuZGVmLFxuICAgICAgICBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQsXG4gICAgICApO1xuICAgICAgaWYgKCFjaGVja1Jlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF4KGNoZWNrUmVzdWx0LmRhdGEubWF4aW11bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gbWV0YWRhdGFTdHJpbmdMZW5ndGhEZWZTY2hlbWEuc2FmZVBhcnNlKFxuICAgICAgICBjaGVjay5fem9kLmRlZixcbiAgICAgICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICAgICAgKTtcbiAgICAgIGlmICghY2hlY2tSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc2NoZW1hID0gc2NoZW1hLmxlbmd0aChjaGVja1Jlc3VsdC5kYXRhLmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn1cblxuZnVuY3Rpb24gY2xvbmVNZXRhZGF0YU51bWJlcihyZWZlcmVuY2U6IHouWm9kTnVtYmVyKTogei5ab2ROdW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YUNoZWNrZWROdW1iZXJEZWZTY2hlbWEuc2FmZVBhcnNlKFxuICAgIHJlZmVyZW5jZS5kZWYsXG4gICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICApO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCBzY2hlbWEgPSB6Lm51bWJlcigpO1xuICBmb3IgKGNvbnN0IGNoZWNrIG9mIHJlc3VsdC5kYXRhLmNoZWNrcykge1xuICAgIC8vIFNBRkVUWTog7JuQ67O4IOqygOyCrOuKlCDsi6TtlontlZjsp4Ag7JWK6rOgIOyXhOqyqe2eiCDqsoDspp3tlZwg7JuQ7IucIOuplO2DgOuNsOydtO2EsOunjCDsgqzsmqntlZzri6QuXG4gICAgaWYgKGNoZWNrIGluc3RhbmNlb2Ygei5ab2ROdW1iZXJGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gbWV0YWRhdGFTYWZlSW50RGVmU2NoZW1hLnNhZmVQYXJzZShcbiAgICAgICAgY2hlY2suZGVmLFxuICAgICAgICBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQsXG4gICAgICApO1xuICAgICAgaWYgKCFjaGVja1Jlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzY2hlbWEgPSBzY2hlbWEuaW50KCk7XG4gICAgfSBlbHNlIGlmIChjaGVjayBpbnN0YW5jZW9mIHouY29yZS4kWm9kQ2hlY2tHcmVhdGVyVGhhbikge1xuICAgICAgY29uc3QgY2hlY2tSZXN1bHQgPSBtZXRhZGF0YUdyZWF0ZXJUaGFuRGVmU2NoZW1hLnNhZmVQYXJzZShcbiAgICAgICAgY2hlY2suX3pvZC5kZWYsXG4gICAgICAgIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCxcbiAgICAgICk7XG4gICAgICBpZiAoIWNoZWNrUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHNjaGVtYSA9IGNoZWNrUmVzdWx0LmRhdGEuaW5jbHVzaXZlXG4gICAgICAgID8gc2NoZW1hLm1pbihjaGVja1Jlc3VsdC5kYXRhLnZhbHVlKVxuICAgICAgICA6IHNjaGVtYS5ndChjaGVja1Jlc3VsdC5kYXRhLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGNoZWNrIGluc3RhbmNlb2Ygei5jb3JlLiRab2RDaGVja0xlc3NUaGFuKSB7XG4gICAgICBjb25zdCBjaGVja1Jlc3VsdCA9IG1ldGFkYXRhTGVzc1RoYW5EZWZTY2hlbWEuc2FmZVBhcnNlKFxuICAgICAgICBjaGVjay5fem9kLmRlZixcbiAgICAgICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICAgICAgKTtcbiAgICAgIGlmICghY2hlY2tSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc2NoZW1hID0gY2hlY2tSZXN1bHQuZGF0YS5pbmNsdXNpdmVcbiAgICAgICAgPyBzY2hlbWEubWF4KGNoZWNrUmVzdWx0LmRhdGEudmFsdWUpXG4gICAgICAgIDogc2NoZW1hLmx0KGNoZWNrUmVzdWx0LmRhdGEudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJpbWl0aXZlRGVmYXVsdChkZWZhdWx0RGVmOiBzdHJpbmcpOiBQcmltaXRpdmVEZWZhdWx0IHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc291cmNlRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgXCJhcGktZGVmYXVsdC50c1wiLFxuICAgIGBjb25zdCBhcGlEZWZhdWx0ID0gJHtkZWZhdWx0RGVmfTtgLFxuICAgIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QsXG4gICAgZmFsc2UsXG4gICAgdHMuU2NyaXB0S2luZC5UUyxcbiAgKTtcblxuICAvLyDrrLjrspUg7Jik66WY64KYIOusuOyepSDsgr3snoXsnbQg7J6I64qUIO2RnO2YhOyLneydgCDquLDrs7jqsJLsnLzroZwg7ZW07ISd7ZWY7KeAIOyViuuKlOuLpC5cbiAgY29uc3QgcGFyc2VEaWFnbm9zdGljcyA9XG4gICAgLyogU0FGRVRZOiBjcmVhdGVTb3VyY2VGaWxlIOqysOqzvOyXkOuKlCDtjIzshJzqsIAg7IiY7KeR7ZWcIOq1rOusuCDsp4Tri6jsnbQg7Y+s7ZWo65Cc64ukLiAqLyAoXG4gICAgICBzb3VyY2VGaWxlIGFzIHRzLlNvdXJjZUZpbGUgJiB7XG4gICAgICAgIHJlYWRvbmx5IHBhcnNlRGlhZ25vc3RpY3M6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXTtcbiAgICAgIH1cbiAgICApLnBhcnNlRGlhZ25vc3RpY3M7XG4gIGlmIChwYXJzZURpYWdub3N0aWNzLmxlbmd0aCA+IDAgfHwgc291cmNlRmlsZS5zdGF0ZW1lbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnQgPSBzb3VyY2VGaWxlLnN0YXRlbWVudHNbMF07XG4gIGlmICghdHMuaXNWYXJpYWJsZVN0YXRlbWVudChzdGF0ZW1lbnQpIHx8IHN0YXRlbWVudC5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLmxlbmd0aCAhPT0gMSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBpbml0aWFsaXplciA9IHN0YXRlbWVudC5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zWzBdPy5pbml0aWFsaXplcjtcbiAgaWYgKGluaXRpYWxpemVyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHRzLmlzU3RyaW5nTGl0ZXJhbChpbml0aWFsaXplcikgfHwgdHMuaXNOb1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbChpbml0aWFsaXplcikpIHtcbiAgICByZXR1cm4gaW5pdGlhbGl6ZXIudGV4dDtcbiAgfVxuICBpZiAodHMuaXNOdW1lcmljTGl0ZXJhbChpbml0aWFsaXplcikpIHtcbiAgICByZXR1cm4gTnVtYmVyKGluaXRpYWxpemVyLnRleHQpO1xuICB9XG4gIGlmICh0cy5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihpbml0aWFsaXplcikpIHtcbiAgICBpZiAoIXRzLmlzTnVtZXJpY0xpdGVyYWwoaW5pdGlhbGl6ZXIub3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBOdW1iZXIoaW5pdGlhbGl6ZXIub3BlcmFuZC50ZXh0KTtcbiAgICBpZiAoaW5pdGlhbGl6ZXIub3BlcmF0b3IgPT09IHRzLlN5bnRheEtpbmQuUGx1c1Rva2VuKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpbml0aWFsaXplci5vcGVyYXRvciA9PT0gdHMuU3ludGF4S2luZC5NaW51c1Rva2VuKSB7XG4gICAgICByZXR1cm4gLXZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBzd2l0Y2ggKGluaXRpYWxpemVyLmtpbmQpIHtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQ6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkOlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lUmVmZXJlbmNlZE1ldGFkYXRhRGVmYXVsdFNjaGVtYShcbiAgcmVmZXJlbmNlOiB6LlpvZFR5cGUsXG4gIHZpc2l0ZWQ6IFNldDx6LlpvZFR5cGU+ID0gbmV3IFNldCgpLFxuKTogei5ab2RUeXBlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZpc2l0ZWQuaGFzKHJlZmVyZW5jZSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHZpc2l0ZWQuYWRkKHJlZmVyZW5jZSk7XG5cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kT3B0aW9uYWwpIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YU9wdGlvbmFsRGVmU2NoZW1hLnNhZmVQYXJzZShyZWZlcmVuY2UuZGVmLCBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQpO1xuICAgIHJldHVybiByZXN1bHQuc3VjY2Vzc1xuICAgICAgPyBjbG9uZVJlZmVyZW5jZWRNZXRhZGF0YURlZmF1bHRTY2hlbWEocmVzdWx0LmRhdGEuaW5uZXJUeXBlLCB2aXNpdGVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kTnVsbGFibGUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YU51bGxhYmxlRGVmU2NoZW1hLnNhZmVQYXJzZShyZWZlcmVuY2UuZGVmLCBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQpO1xuICAgIHJldHVybiByZXN1bHQuc3VjY2Vzc1xuICAgICAgPyBjbG9uZVJlZmVyZW5jZWRNZXRhZGF0YURlZmF1bHRTY2hlbWEocmVzdWx0LmRhdGEuaW5uZXJUeXBlLCB2aXNpdGVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSByZWZlcmVuY2UuZGVmO1xuXG4gICAgLy8gZGVmYXVsdFZhbHVlIOygkeq3vOyekOuKlCDtjKnthqDrpqzrpbwg7Iuk7ZaJ7ZWY66+A66GcIO2CpOunjCDtmZXsnbjtlZjqs6Ag7JWI7KCE7ZWcIO2VhOuTnOunjCDrs7XsgqztlZzri6QuXG4gICAgY29uc3QgZGVmaW5pdGlvbktleXMgPSBSZWZsZWN0Lm93bktleXMoZGVmaW5pdGlvbik7XG4gICAgY29uc3QgYWxsb3dlZEtleXMgPSBbXCJ0eXBlXCIsIFwiaW5uZXJUeXBlXCIsIFwiZGVmYXVsdFZhbHVlXCJdO1xuICAgIGlmIChcbiAgICAgIGRlZmluaXRpb25LZXlzLmxlbmd0aCAhPT0gYWxsb3dlZEtleXMubGVuZ3RoIHx8XG4gICAgICAhYWxsb3dlZEtleXMuZXZlcnkoKGtleSkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlZmluaXRpb24sIGtleSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YURlZmF1bHRJbm5lckRlZlNjaGVtYS5zYWZlUGFyc2UoXG4gICAgICB7IHR5cGU6IGRlZmluaXRpb24udHlwZSwgaW5uZXJUeXBlOiBkZWZpbml0aW9uLmlubmVyVHlwZSB9LFxuICAgICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzXG4gICAgICA/IGNsb25lUmVmZXJlbmNlZE1ldGFkYXRhRGVmYXVsdFNjaGVtYShyZXN1bHQuZGF0YS5pbm5lclR5cGUsIHZpc2l0ZWQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiB6LlpvZEVtYWlsKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IGNsb25lTWV0YWRhdGFFbWFpbFBhdHRlcm4ocmVmZXJlbmNlLmRlZik7XG4gICAgcmV0dXJuIHBhdHRlcm4gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHouc3RyaW5nKCkucmVnZXgocGF0dGVybik7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kU3RyaW5nKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbWV0YWRhdGFTdHJpbmdEZWZTY2hlbWEuc2FmZVBhcnNlKHJlZmVyZW5jZS5kZWYsIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCk7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gei5zdHJpbmcoKSA6IGNsb25lTWV0YWRhdGFTdHJpbmcocmVmZXJlbmNlKTtcbiAgfVxuICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygei5ab2ROdW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YU51bWJlckRlZlNjaGVtYS5zYWZlUGFyc2UocmVmZXJlbmNlLmRlZiwgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0KTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyB6Lm51bWJlcigpIDogY2xvbmVNZXRhZGF0YU51bWJlcihyZWZlcmVuY2UpO1xuICB9XG4gIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiB6LlpvZEJvb2xlYW4pIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YUJvb2xlYW5EZWZTY2hlbWEuc2FmZVBhcnNlKHJlZmVyZW5jZS5kZWYsIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCk7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gei5ib29sZWFuKCkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IG1ldGFkYXRhRW51bURlZlNjaGVtYS5zYWZlUGFyc2UocmVmZXJlbmNlLmRlZiwgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0KTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyB6LmVudW0ocmVzdWx0LmRhdGEuZW50cmllcykgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kTGl0ZXJhbCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IG1ldGFkYXRhTGl0ZXJhbERlZlNjaGVtYS5zYWZlUGFyc2UocmVmZXJlbmNlLmRlZiwgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0KTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyB6LmxpdGVyYWwocmVzdWx0LmRhdGEudmFsdWVzKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RNZXRhZGF0YURlZmF1bHRVbmlvblNjaGVtYXMoXG4gIHBhcmFtVHlwZTogQXBpUGFyYW1UeXBlLlVuaW9uLFxuICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RUeXBlIH0sXG4pOiBNZXRhZGF0YURlZmF1bHRVbmlvbkNvbGxlY3Rpb24ge1xuICBpZiAocGFyYW1UeXBlLnR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IHVuc3VwcG9ydGVkOiB0cnVlIH07XG4gIH1cblxuICBjb25zdCBzY2hlbWFzOiB6LlpvZFR5cGVbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgcGFyYW1UeXBlLnR5cGVzKSB7XG4gICAgaWYgKHR5cGUgPT09IFwibnVsbFwiIHx8IHR5cGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChBcGlQYXJhbVR5cGUuaXNVbmlvbih0eXBlKSkge1xuICAgICAgLy8gbnVsbGlzaCDsoITsmqkg7KSR7LKpIOycoOuLiOyYqOqzvCDrr7jsp4Dsm5Ag66mk67KE66W8IOq1rOu2hO2VtCDrsJTquaUg7Jyg64uI7Jio7J2EIOyemOuquyDqsbDrtoDtlZjsp4Ag7JWK64qU64ukLlxuICAgICAgY29uc3QgbmVzdGVkID0gY29sbGVjdE1ldGFkYXRhRGVmYXVsdFVuaW9uU2NoZW1hcyh0eXBlLCByZWZlcmVuY2VzKTtcbiAgICAgIGlmIChuZXN0ZWQudW5zdXBwb3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIG5lc3RlZDtcbiAgICAgIH1cbiAgICAgIHNjaGVtYXMucHVzaCguLi5uZXN0ZWQuc2NoZW1hcyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSBnZXRNZXRhZGF0YURlZmF1bHRTY2hlbWEodHlwZSwgcmVmZXJlbmNlcyk7XG4gICAgaWYgKHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyB1bnN1cHBvcnRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBzY2hlbWFzLnB1c2goc2NoZW1hKTtcbiAgfVxuXG4gIHJldHVybiB7IHVuc3VwcG9ydGVkOiBmYWxzZSwgc2NoZW1hcyB9O1xufVxuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YURlZmF1bHRTY2hlbWEoXG4gIHBhcmFtVHlwZTogQXBpUGFyYW1UeXBlLFxuICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RUeXBlIH0sXG4pOiB6LlpvZFR5cGUgfCB1bmRlZmluZWQge1xuICBpZiAocGFyYW1UeXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHouc3RyaW5nKCk7XG4gIH1cbiAgaWYgKHBhcmFtVHlwZSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB6Lm51bWJlcigpO1xuICB9XG4gIGlmIChwYXJhbVR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIHouYm9vbGVhbigpO1xuICB9XG4gIC8vIOyngeygkSB0cnVlL2ZhbHNlL251bGwg66as7YSw65+07J2AIEdFVCDsv7zrpqwg7KCE7Iah6rO8IEZhc3RpZnkg7LqQ7Iqk7YSw6rCAIOq3uOuMgOuhnCDrs7TsobTtlZjsp4Ag66q77ZW0IOyggeyaqe2VmOyngCDslYrripTri6QuXG4gIGlmIChBcGlQYXJhbVR5cGUuaXNTdHJpbmdMaXRlcmFsKHBhcmFtVHlwZSkgfHwgQXBpUGFyYW1UeXBlLmlzTnVtZXJpY0xpdGVyYWwocGFyYW1UeXBlKSkge1xuICAgIHJldHVybiB6LmxpdGVyYWwocGFyYW1UeXBlLnZhbHVlKTtcbiAgfVxuICBpZiAoQXBpUGFyYW1UeXBlLmlzVW5pb24ocGFyYW1UeXBlKSkge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0TWV0YWRhdGFEZWZhdWx0VW5pb25TY2hlbWFzKHBhcmFtVHlwZSwgcmVmZXJlbmNlcyk7XG4gICAgaWYgKGNvbGxlY3Rpb24udW5zdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChjb2xsZWN0aW9uLnNjaGVtYXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbi5zY2hlbWFzWzBdO1xuICAgIH1cbiAgICBpZiAoY29sbGVjdGlvbi5zY2hlbWFzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB6LnVuaW9uKGNvbGxlY3Rpb24uc2NoZW1hcyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKEFwaVBhcmFtVHlwZS5pc1JlZihwYXJhbVR5cGUpKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1twYXJhbVR5cGUuaWRdO1xuICAgIHJldHVybiByZWZlcmVuY2UgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGNsb25lUmVmZXJlbmNlZE1ldGFkYXRhRGVmYXVsdFNjaGVtYShyZWZlcmVuY2UpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWRfaHR0cCBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJnZW5lcmF0ZWRfaHR0cFwiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgoKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYHNvbmFtdS5nZW5lcmF0ZWQuaHR0cGAsXG4gICAgfTtcbiAgfVxuXG4gIHN0cmluZ2lmeVF1ZXJ5UGFyYW1zKHBhcmFtczogUmVxdWVzdERlZmF1bHRPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBxc1xuICAgICAgLnN0cmluZ2lmeShwYXJhbXMsIHsgZW5jb2RlVmFsdWVzT25seTogdHJ1ZSwgZm9ybWF0OiBcIlJGQzM5ODZcIiB9KVxuICAgICAgLnNwbGl0KFwiJlwiKVxuICAgICAgLmpvaW4oXCJcXG5cXHQmXCIpO1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHN5bmNlcjogeyB0eXBlcywgYXBpcyB9LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGFwaToge1xuICAgICAgICAgIHJvdXRlOiB7IHByZWZpeCB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9ID0gU29uYW11O1xuXG4gICAgY29uc3QgbGluZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFwaXMubWFwKGFzeW5jIChhcGkpID0+IHtcbiAgICAgICAgY29uc3QgcmVxT2JqZWN0ID0gdGhpcy5yZXNvbHZlQXBpUGFyYW1zKGFwaSwgdHlwZXMpO1xuXG4gICAgICAgIGNvbnN0IGRhdGFMaW5lcyA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKChhcGkub3B0aW9ucy5odHRwTWV0aG9kID8/IFwiR0VUXCIpID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBxdWVyeXN0cmluZzogW3RoaXMuc3RyaW5naWZ5UXVlcnlQYXJhbXMocmVxT2JqZWN0KV0sXG4gICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcXVlcnlzdHJpbmc6IFtdLFxuICAgICAgICAgICAgICBib2R5OiBbXCJcIiwgSlNPTi5zdHJpbmdpZnkocmVxT2JqZWN0LCBudWxsLCAyKV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGAke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIn0ge3tiYXNlVXJsfX0ke3ByZWZpeH0ke2FwaS5wYXRofWAsXG4gICAgICAgICAgICAuLi5kYXRhTGluZXMucXVlcnlzdHJpbmcsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXFx0P1wiKSxcbiAgICAgICAgICBgQ29udGVudC1UeXBlOiAke2FwaS5vcHRpb25zLmNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWAsXG4gICAgICAgICAgLi4uZGF0YUxpbmVzLmJvZHksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXCIjIEBnZW5lcmF0ZWRcIiwgXCIjIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlwiXSxcbiAgICB9O1xuICB9XG5cbiAgem9kVHlwZVRvUmVxRGVmYXVsdCh6b2RUeXBlOiB6LlpvZFR5cGUsIG5hbWU6IHN0cmluZyk6IFJlcXVlc3REZWZhdWx0VmFsdWUge1xuICAgIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RPYmplY3QpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5rZXlzKHpvZFR5cGVbXCJzaGFwZVwiXSkubWFwKChrZXkpID0+IFtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KHpvZFR5cGVbXCJzaGFwZVwiXVtrZXldLCBrZXkpLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAgIC8qIFNBRkVUWTogWm9kQXJyYXkg67aE6riw7J2066+A66GcIGVsZW1lbnTqsIAg67Cw7Je0IOybkOyGjCDsiqTtgqTrp4jri6QuICovIChcbiAgICAgICAgICAgIHpvZFR5cGUgYXMgei5ab2RBcnJheTx6LlpvZFR5cGU+XG4gICAgICAgICAgKS5lbGVtZW50LFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouY29yZS4kWm9kU3RyaW5nKSB7XG4gICAgICAvLyBOT1RFOiB6LlpvZFN0cmluZ+ycvOuhnCDruYTqtZDtlZjrqbQgei51cmwoKSwgei5lbWFpbCgpIOuTseydmCDtg4DsnoXsl5DshJwg66y47KCc6rCAIOyDneq4sOuvgOuhnCB6LmNvcmUuJFpvZFN0cmluZ+ycvOuhnCDruYTqtZDtlahcbiAgICAgIGlmIChuYW1lLmVuZHNXaXRoKFwiX2F0XCIpIHx8IG5hbWUuZW5kc1dpdGgoXCJfZGF0ZVwiKSB8fCBuYW1lID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bWJlcikge1xuICAgICAgaWYgKG5hbWUgPT09IFwibnVtXCIpIHtcbiAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW5WYWx1ZSA9IHpvZFR5cGUubWluVmFsdWUgPz8gMDtcbiAgICAgIHJldHVybiBtaW5WYWx1ZSA+IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSID8gbWluVmFsdWUgOiAwO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQm9vbGVhbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUub3B0aW9uc1swXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAvKiBTQUZFVFk6IFpvZE9wdGlvbmFsIOu2hOq4sOydtOuvgOuhnCBpbm5lclR5cGXsnbQg7ISg7YOdIOyGjeyEseydmCDsiqTtgqTrp4jri6QuICovIChcbiAgICAgICAgICB6b2RUeXBlIGFzIHouWm9kT3B0aW9uYWw8ei5ab2RUeXBlPlxuICAgICAgICApLmRlZi5pbm5lclR5cGUsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTnVsbGFibGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVW5pb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoXG4gICAgICAgIC8qIFNBRkVUWTogWm9kVW5pb24g67aE6riw7J2066+A66GcIG9wdGlvbnPsnZgg7LKrIO2VreuqqeydtCDsnKDtmqjtlZwg64yA7JWIIOyKpO2CpOuniOuLpC4gKi8gKFxuICAgICAgICAgIHpvZFR5cGUgYXMgei5ab2RVbmlvbjx6LlpvZFR5cGVbXT5cbiAgICAgICAgKS5kZWYub3B0aW9uc1swXSxcbiAgICAgICAgbmFtZSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RVbmtub3duKSB7XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RUdXBsZSkge1xuICAgICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gWm9kVHVwbGUg7YOA7J6FIOyCrOyaqVxuICAgICAgcmV0dXJuIHpvZFR5cGUuZGVmLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoaXRlbSwgbmFtZSkpO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSkge1xuICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTGl0ZXJhbCkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUudmFsdWU7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RSZWNvcmQgfHwgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTWFwKSB7XG4gICAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSBab2RSZWNvcmQg7YOA7J6FIOyCrOyaqVxuICAgICAgY29uc3Qga3ZEZWYgPSAvKiBTQUZFVFk6IFpvZFJlY29yZC9ab2RNYXAg67aE6riw7J2066+A66GcIGRlZuqwgCDtgqQt6rCSIOyKpO2CpOuniCDsoJXsnZjri6QuICovIChcbiAgICAgICAgem9kVHlwZSBhcyB6LlpvZFJlY29yZDxhbnksIHouWm9kVHlwZT4gfCB6LlpvZE1hcDx6LlpvZFR5cGUsIHouWm9kVHlwZT5cbiAgICAgICkuZGVmO1xuICAgICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gWm9kSW50ZXJzZWN0aW9uIO2DgOyehSDsgqzsmqlcbiAgICAgIGNvbnN0IGtleSA9IFN0cmluZyh0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoa3ZEZWYua2V5VHlwZSwgbmFtZSkpO1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoa3ZEZWYudmFsdWVUeXBlLCBuYW1lKTtcbiAgICAgIHJldHVybiB7IFtrZXldOiB2YWx1ZSB9O1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kU2V0KSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoXG4gICAgICAgICAgLyogU0FGRVRZOiBab2RTZXQg67aE6riw7J2066+A66GcIHZhbHVlVHlwZeydtCDsp5Htlakg7JuQ7IaMIOyKpO2CpOuniOuLpC4gKi8gKFxuICAgICAgICAgICAgem9kVHlwZSBhcyB6LlpvZFNldDx6LlpvZFR5cGU+XG4gICAgICAgICAgKS5kZWYudmFsdWVUeXBlLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kSW50ZXJzZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAvKiBTQUZFVFk6IFpvZEludGVyc2VjdGlvbiDrtoTquLDsnbTrr4DroZwgcmlnaHTqsIAg6rWQ7LCoIO2DgOyeheydmCDsmrDsuKEg7Iqk7YKk66eI64ukLiAqLyAoXG4gICAgICAgICAgem9kVHlwZSBhcyB6LlpvZEludGVyc2VjdGlvbjx6LlpvZFR5cGUsIHouWm9kVHlwZT5cbiAgICAgICAgKS5kZWYucmlnaHQsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChcbiAgICAgICAgLyogU0FGRVRZOiBab2REZWZhdWx0IOu2hOq4sOydtOuvgOuhnCBpbm5lclR5cGXsnbQg6riw67O46rCSIOyggeyaqSDsoIQg7Iqk7YKk66eI64ukLiAqLyAoXG4gICAgICAgICAgem9kVHlwZSBhcyB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPlxuICAgICAgICApLmRlZi5pbm5lclR5cGUsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh6b2RUeXBlKTtcbiAgICAgIHJldHVybiBgdW5rbm93bi0ke3pvZFR5cGUudHlwZX1gO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVBcGlQYXJhbXMoXG4gICAgYXBpOiBFeHRlbmRlZEFwaSxcbiAgICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RUeXBlIH0sXG4gICk6IFJlcXVlc3REZWZhdWx0T2JqZWN0IHtcbiAgICBjb25zdCByZXFUeXBlID0gZ2V0Wm9kT2JqZWN0RnJvbUFwaShhcGksIHJlZmVyZW5jZXMpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFNBRkVUWTogZ2V0Wm9kT2JqZWN0RnJvbUFwaeuKlCDqsJ3ssrQg7Iqk7YKk66eI66W8IOuwmO2ZmO2VmOuvgOuhnCDquLDrs7jqsJLrj4Qg6rCd7LK07J2064ukLlxuICAgICAgY29uc3QgcmVxdWVzdERlZmF1bHRzID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICByZXFUeXBlLFxuICAgICAgICBcInVua25vd25OYW1lXCIsXG4gICAgICApIGFzIFJlcXVlc3REZWZhdWx0T2JqZWN0O1xuXG4gICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIGFwaS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihyZXF1ZXN0RGVmYXVsdHMsIHBhcmFtLm5hbWUpIHx8IHBhcmFtLmRlZmF1bHREZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFEZWZhdWx0U2NoZW1hID0gZ2V0TWV0YWRhdGFEZWZhdWx0U2NoZW1hKHBhcmFtLnR5cGUsIHJlZmVyZW5jZXMpO1xuICAgICAgICBpZiAobWV0YWRhdGFEZWZhdWx0U2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZERlZmF1bHQgPSBwYXJzZVByaW1pdGl2ZURlZmF1bHQocGFyYW0uZGVmYXVsdERlZik7XG4gICAgICAgIC8vIOuqheyLnOyggSBudWxsIOq4sOuzuOqwkuydgCBHRVQg7L+866asIOyghOyGoeqzvCBGYXN0aWZ5IOy6kOyKpO2EsOqwgCDqt7jrjIDroZwg67O07KG07ZWY7KeAIOuqu+2VtCDsoIHsmqntlZjsp4Ag7JWK64qU64ukLlxuICAgICAgICBpZiAocGFyc2VkRGVmYXVsdCA9PT0gdW5kZWZpbmVkIHx8IHBhcnNlZERlZmF1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXRhZGF0YURlZmF1bHRTY2hlbWEuc2FmZVBhcnNlKHBhcnNlZERlZmF1bHQsIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCkuc3VjY2Vzcykge1xuICAgICAgICAgIHJlcXVlc3REZWZhdWx0c1twYXJhbS5uYW1lXSA9IHBhcnNlZERlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcXVlc3REZWZhdWx0cztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgem9kIHR5cGUgZGV0ZWN0ZWQgb24gJHthcGkubW9kZWxOYW1lfToke2FwaS5tZXRob2ROYW1lfWAsIHtcbiAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O3FCQUkrRDtZQUV0QjtXQUNPO2NBQ1Y7QUFzQnRDLE1BQU0sOEJBQThCLEVBRWxDLGFBQWEsb0NBQ2Y7QUFFQSxNQUFNLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxPQUFPO0FBQ3RELE1BQU0sNEJBQTRCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFDdkQsTUFBTSw4QkFBOEIsRUFBRSxXQUFXLFFBQVE7QUFFekQsTUFBTSx5QkFBeUIsRUFBRSxhQUFhO0NBQzVDLE1B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
|
|
367
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlbXBsYXRlL2ltcGxlbWVudGF0aW9ucy9nZW5lcmF0ZWRfaHR0cC50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSBcIkB0eXBlc2NyaXB0L3R5cGVzY3JpcHQ2XCI7XG5pbXBvcnQgcXMgZnJvbSBcInFzXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyBnZXRab2RPYmplY3RGcm9tQXBpIH0gZnJvbSBcIi4uLy4uL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbmltcG9ydCB7IHR5cGUgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBBcGlQYXJhbVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbnR5cGUgUmVxdWVzdERlZmF1bHRWYWx1ZSA9XG4gIHwgbnVsbFxuICB8IHVuZGVmaW5lZFxuICB8IGJpZ2ludFxuICB8IGJvb2xlYW5cbiAgfCBudW1iZXJcbiAgfCBzdHJpbmdcbiAgfCBSZXF1ZXN0RGVmYXVsdFZhbHVlW11cbiAgfCBSZXF1ZXN0RGVmYXVsdE9iamVjdDtcblxuaW50ZXJmYWNlIFJlcXVlc3REZWZhdWx0T2JqZWN0IHtcbiAgW2tleTogc3RyaW5nXTogUmVxdWVzdERlZmF1bHRWYWx1ZTtcbn1cblxudHlwZSBQcmltaXRpdmVEZWZhdWx0ID0gbnVsbCB8IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmc7XG5cbnR5cGUgTWV0YWRhdGFEZWZhdWx0VW5pb25Db2xsZWN0aW9uID1cbiAgfCB7IHVuc3VwcG9ydGVkOiBmYWxzZTsgc2NoZW1hczogei5ab2RUeXBlW10gfVxuICB8IHsgdW5zdXBwb3J0ZWQ6IHRydWUgfTtcblxuY29uc3QgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0ID0ge1xuICAvLyDsoITsl60g7Jik66WYIOuntSDrjIDsi6Ag67aA7J6R7JqpIOyXhuuKlCDsmKTrpZgg66mU7Iuc7KeA66W8IOyCrOyaqe2VnOuLpC5cbiAgZXJyb3I6ICgpID0+IFwiQVBJIOuplO2DgOuNsOydtO2EsCDquLDrs7jqsJLsnbQg7Iqk7YKk66eIIOygnOyVveydhCDstqnsobHtlZjsp4Ag7JWK7Iq164uI64ukLlwiLFxufTtcblxuY29uc3QgbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEgPSB6Lmluc3RhbmNlb2Yoei5ab2RUeXBlKTtcbmNvbnN0IG1ldGFkYXRhRW1wdHlDaGVja3NTY2hlbWEgPSB6LnR1cGxlKFtdKS5vcHRpb25hbCgpO1xuY29uc3QgbWV0YWRhdGFDaGVja0Z1bmN0aW9uU2NoZW1hID0gei5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcblxuY29uc3QgbWV0YWRhdGFFbWFpbERlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RyaW5nXCIpLFxuICBjaGVjazogei5saXRlcmFsKFwic3RyaW5nX2Zvcm1hdFwiKSxcbiAgZm9ybWF0OiB6LmxpdGVyYWwoXCJlbWFpbFwiKSxcbiAgYWJvcnQ6IHoubGl0ZXJhbChmYWxzZSksXG4gIHBhdHRlcm46IHouaW5zdGFuY2VvZihSZWdFeHApLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nTWluTGVuZ3RoRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICBjaGVjazogei5saXRlcmFsKFwibWluX2xlbmd0aFwiKSxcbiAgbWluaW11bTogei5udW1iZXIoKSxcbiAgd2hlbjogbWV0YWRhdGFDaGVja0Z1bmN0aW9uU2NoZW1hLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nTWF4TGVuZ3RoRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICBjaGVjazogei5saXRlcmFsKFwibWF4X2xlbmd0aFwiKSxcbiAgbWF4aW11bTogei5udW1iZXIoKSxcbiAgd2hlbjogbWV0YWRhdGFDaGVja0Z1bmN0aW9uU2NoZW1hLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nTGVuZ3RoRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICBjaGVjazogei5saXRlcmFsKFwibGVuZ3RoX2VxdWFsc1wiKSxcbiAgbGVuZ3RoOiB6Lm51bWJlcigpLFxuICB3aGVuOiBtZXRhZGF0YUNoZWNrRnVuY3Rpb25TY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFTdHJpbmdDaGVja1NjaGVtYSA9IHoudW5pb24oW1xuICB6Lmluc3RhbmNlb2Yoei5ab2RFbWFpbCksXG4gIHouaW5zdGFuY2VvZih6LmNvcmUuJFpvZENoZWNrTWluTGVuZ3RoKSxcbiAgei5pbnN0YW5jZW9mKHouY29yZS4kWm9kQ2hlY2tNYXhMZW5ndGgpLFxuICB6Lmluc3RhbmNlb2Yoei5jb3JlLiRab2RDaGVja0xlbmd0aEVxdWFscyksXG5dKTtcblxuY29uc3QgbWV0YWRhdGFDaGVja2VkU3RyaW5nRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdHJpbmdcIiksXG4gIGNvZXJjZTogei5saXRlcmFsKGZhbHNlKS5vcHRpb25hbCgpLFxuICBjaGVja3M6IHouYXJyYXkobWV0YWRhdGFTdHJpbmdDaGVja1NjaGVtYSksXG59KTtcblxuY29uc3QgbWV0YWRhdGFTYWZlSW50RGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJudW1iZXJcIiksXG4gIGNoZWNrOiB6LmxpdGVyYWwoXCJudW1iZXJfZm9ybWF0XCIpLFxuICBhYm9ydDogei5saXRlcmFsKGZhbHNlKSxcbiAgZm9ybWF0OiB6LmxpdGVyYWwoXCJzYWZlaW50XCIpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhR3JlYXRlclRoYW5EZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIGNoZWNrOiB6LmxpdGVyYWwoXCJncmVhdGVyX3RoYW5cIiksXG4gIHZhbHVlOiB6Lm51bWJlcigpLFxuICBpbmNsdXNpdmU6IHouYm9vbGVhbigpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhTGVzc1RoYW5EZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIGNoZWNrOiB6LmxpdGVyYWwoXCJsZXNzX3RoYW5cIiksXG4gIHZhbHVlOiB6Lm51bWJlcigpLFxuICBpbmNsdXNpdmU6IHouYm9vbGVhbigpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhTnVtYmVyQ2hlY2tTY2hlbWEgPSB6LnVuaW9uKFtcbiAgei5pbnN0YW5jZW9mKHouWm9kTnVtYmVyRm9ybWF0KSxcbiAgei5pbnN0YW5jZW9mKHouY29yZS4kWm9kQ2hlY2tHcmVhdGVyVGhhbiksXG4gIHouaW5zdGFuY2VvZih6LmNvcmUuJFpvZENoZWNrTGVzc1RoYW4pLFxuXSk7XG5cbmNvbnN0IG1ldGFkYXRhQ2hlY2tlZE51bWJlckRlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwibnVtYmVyXCIpLFxuICBjb2VyY2U6IHoubGl0ZXJhbChmYWxzZSkub3B0aW9uYWwoKSxcbiAgY2hlY2tzOiB6LmFycmF5KG1ldGFkYXRhTnVtYmVyQ2hlY2tTY2hlbWEpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhU3RyaW5nRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdHJpbmdcIiksXG4gIGNvZXJjZTogei5saXRlcmFsKGZhbHNlKS5vcHRpb25hbCgpLFxuICBjaGVja3M6IG1ldGFkYXRhRW1wdHlDaGVja3NTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFOdW1iZXJEZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlclwiKSxcbiAgY29lcmNlOiB6LmxpdGVyYWwoZmFsc2UpLm9wdGlvbmFsKCksXG4gIGNoZWNrczogbWV0YWRhdGFFbXB0eUNoZWNrc1NjaGVtYSxcbn0pO1xuXG5jb25zdCBtZXRhZGF0YUJvb2xlYW5EZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImJvb2xlYW5cIiksXG4gIGNvZXJjZTogei5saXRlcmFsKGZhbHNlKS5vcHRpb25hbCgpLFxuICBjaGVja3M6IG1ldGFkYXRhRW1wdHlDaGVja3NTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFFbnVtRGVmU2NoZW1hID0gei5zdHJpY3RPYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJlbnVtXCIpLFxuICBlbnRyaWVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm51bWJlcigpXSkpLFxufSk7XG5cbmNvbnN0IG1ldGFkYXRhTGl0ZXJhbERlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwibGl0ZXJhbFwiKSxcbiAgdmFsdWVzOiB6LmFycmF5KHoudW5pb24oW3ouc3RyaW5nKCksIHoubnVtYmVyKCksIHouYm9vbGVhbigpLCB6Lm51bGwoKV0pKS5taW4oMSksXG59KTtcblxuY29uc3QgbWV0YWRhdGFPcHRpb25hbERlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwib3B0aW9uYWxcIiksXG4gIGlubmVyVHlwZTogbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFOdWxsYWJsZURlZlNjaGVtYSA9IHouc3RyaWN0T2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwibnVsbGFibGVcIiksXG4gIGlubmVyVHlwZTogbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEsXG59KTtcblxuY29uc3QgbWV0YWRhdGFEZWZhdWx0SW5uZXJEZWZTY2hlbWEgPSB6LnN0cmljdE9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImRlZmF1bHRcIiksXG4gIGlubmVyVHlwZTogbWV0YWRhdGFJbm5lclR5cGVTY2hlbWEsXG59KTtcblxuZnVuY3Rpb24gY2xvbmVNZXRhZGF0YVJlZ0V4cChwYXR0ZXJuOiBSZWdFeHApOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICBjb25zdCBzb3VyY2VHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIFwic291cmNlXCIpPy5nZXQ7XG4gIGNvbnN0IGZsYWdzR2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBcImZsYWdzXCIpPy5nZXQ7XG4gIGlmIChzb3VyY2VHZXR0ZXIgPT09IHVuZGVmaW5lZCB8fCBmbGFnc0dldHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gU0FGRVRZOiDsm5Drs7jsnZgg7J6s7KCV7J2YIOqwgOuKpe2VnCDtlITroZztjbzti7DsmYAgdGVzdOulvCDtmLjstpztlZjsp4Ag7JWK64qU64ukLlxuICAgIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZUdldHRlci5jYWxsKHBhdHRlcm4pLCBmbGFnc0dldHRlci5jYWxsKHBhdHRlcm4pKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9uZU1ldGFkYXRhRW1haWxQYXR0ZXJuKGRlZmluaXRpb246IHouWm9kRW1haWxbXCJkZWZcIl0pOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YUVtYWlsRGVmU2NoZW1hLnNhZmVQYXJzZShkZWZpbml0aW9uLCBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBjbG9uZU1ldGFkYXRhUmVnRXhwKHJlc3VsdC5kYXRhLnBhdHRlcm4pO1xufVxuXG5mdW5jdGlvbiBjbG9uZU1ldGFkYXRhU3RyaW5nKHJlZmVyZW5jZTogei5ab2RTdHJpbmcpOiB6LlpvZFN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc3VsdCA9IG1ldGFkYXRhQ2hlY2tlZFN0cmluZ0RlZlNjaGVtYS5zYWZlUGFyc2UoXG4gICAgcmVmZXJlbmNlLmRlZixcbiAgICBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQsXG4gICk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IHNjaGVtYSA9IHouc3RyaW5nKCk7XG4gIGZvciAoY29uc3QgY2hlY2sgb2YgcmVzdWx0LmRhdGEuY2hlY2tzKSB7XG4gICAgLy8gU0FGRVRZOiDsm5Drs7gg6rKA7IKs64qUIOyLpO2Wie2VmOyngCDslYrqs6Ag7JeE6rKp7Z6IIOqygOymne2VnCDsm5Dsi5wg66mU7YOA642w7J207YSw66eMIOyCrOyaqe2VnOuLpC5cbiAgICBpZiAoY2hlY2sgaW5zdGFuY2VvZiB6LlpvZEVtYWlsKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gY2xvbmVNZXRhZGF0YUVtYWlsUGF0dGVybihjaGVjay5kZWYpO1xuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlZ2V4KHBhdHRlcm4pO1xuICAgIH0gZWxzZSBpZiAoY2hlY2sgaW5zdGFuY2VvZiB6LmNvcmUuJFpvZENoZWNrTWluTGVuZ3RoKSB7XG4gICAgICBjb25zdCBjaGVja1Jlc3VsdCA9IG1ldGFkYXRhU3RyaW5nTWluTGVuZ3RoRGVmU2NoZW1hLnNhZmVQYXJzZShcbiAgICAgICAgY2hlY2suX3pvZC5kZWYsXG4gICAgICAgIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCxcbiAgICAgICk7XG4gICAgICBpZiAoIWNoZWNrUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5taW4oY2hlY2tSZXN1bHQuZGF0YS5taW5pbXVtKTtcbiAgICB9IGVsc2UgaWYgKGNoZWNrIGluc3RhbmNlb2Ygei5jb3JlLiRab2RDaGVja01heExlbmd0aCkge1xuICAgICAgY29uc3QgY2hlY2tSZXN1bHQgPSBtZXRhZGF0YVN0cmluZ01heExlbmd0aERlZlNjaGVtYS5zYWZlUGFyc2UoXG4gICAgICAgIGNoZWNrLl96b2QuZGVmLFxuICAgICAgICBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQsXG4gICAgICApO1xuICAgICAgaWYgKCFjaGVja1Jlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF4KGNoZWNrUmVzdWx0LmRhdGEubWF4aW11bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gbWV0YWRhdGFTdHJpbmdMZW5ndGhEZWZTY2hlbWEuc2FmZVBhcnNlKFxuICAgICAgICBjaGVjay5fem9kLmRlZixcbiAgICAgICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICAgICAgKTtcbiAgICAgIGlmICghY2hlY2tSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc2NoZW1hID0gc2NoZW1hLmxlbmd0aChjaGVja1Jlc3VsdC5kYXRhLmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn1cblxuZnVuY3Rpb24gY2xvbmVNZXRhZGF0YU51bWJlcihyZWZlcmVuY2U6IHouWm9kTnVtYmVyKTogei5ab2ROdW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YUNoZWNrZWROdW1iZXJEZWZTY2hlbWEuc2FmZVBhcnNlKFxuICAgIHJlZmVyZW5jZS5kZWYsXG4gICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICApO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCBzY2hlbWEgPSB6Lm51bWJlcigpO1xuICBmb3IgKGNvbnN0IGNoZWNrIG9mIHJlc3VsdC5kYXRhLmNoZWNrcykge1xuICAgIC8vIFNBRkVUWTog7JuQ67O4IOqygOyCrOuKlCDsi6TtlontlZjsp4Ag7JWK6rOgIOyXhOqyqe2eiCDqsoDspp3tlZwg7JuQ7IucIOuplO2DgOuNsOydtO2EsOunjCDsgqzsmqntlZzri6QuXG4gICAgaWYgKGNoZWNrIGluc3RhbmNlb2Ygei5ab2ROdW1iZXJGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gbWV0YWRhdGFTYWZlSW50RGVmU2NoZW1hLnNhZmVQYXJzZShcbiAgICAgICAgY2hlY2suZGVmLFxuICAgICAgICBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQsXG4gICAgICApO1xuICAgICAgaWYgKCFjaGVja1Jlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzY2hlbWEgPSBzY2hlbWEuaW50KCk7XG4gICAgfSBlbHNlIGlmIChjaGVjayBpbnN0YW5jZW9mIHouY29yZS4kWm9kQ2hlY2tHcmVhdGVyVGhhbikge1xuICAgICAgY29uc3QgY2hlY2tSZXN1bHQgPSBtZXRhZGF0YUdyZWF0ZXJUaGFuRGVmU2NoZW1hLnNhZmVQYXJzZShcbiAgICAgICAgY2hlY2suX3pvZC5kZWYsXG4gICAgICAgIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCxcbiAgICAgICk7XG4gICAgICBpZiAoIWNoZWNrUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHNjaGVtYSA9IGNoZWNrUmVzdWx0LmRhdGEuaW5jbHVzaXZlXG4gICAgICAgID8gc2NoZW1hLm1pbihjaGVja1Jlc3VsdC5kYXRhLnZhbHVlKVxuICAgICAgICA6IHNjaGVtYS5ndChjaGVja1Jlc3VsdC5kYXRhLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGNoZWNrIGluc3RhbmNlb2Ygei5jb3JlLiRab2RDaGVja0xlc3NUaGFuKSB7XG4gICAgICBjb25zdCBjaGVja1Jlc3VsdCA9IG1ldGFkYXRhTGVzc1RoYW5EZWZTY2hlbWEuc2FmZVBhcnNlKFxuICAgICAgICBjaGVjay5fem9kLmRlZixcbiAgICAgICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICAgICAgKTtcbiAgICAgIGlmICghY2hlY2tSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc2NoZW1hID0gY2hlY2tSZXN1bHQuZGF0YS5pbmNsdXNpdmVcbiAgICAgICAgPyBzY2hlbWEubWF4KGNoZWNrUmVzdWx0LmRhdGEudmFsdWUpXG4gICAgICAgIDogc2NoZW1hLmx0KGNoZWNrUmVzdWx0LmRhdGEudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJpbWl0aXZlRGVmYXVsdChkZWZhdWx0RGVmOiBzdHJpbmcpOiBQcmltaXRpdmVEZWZhdWx0IHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc291cmNlRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgXCJhcGktZGVmYXVsdC50c1wiLFxuICAgIGBjb25zdCBhcGlEZWZhdWx0ID0gJHtkZWZhdWx0RGVmfTtgLFxuICAgIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QsXG4gICAgZmFsc2UsXG4gICAgdHMuU2NyaXB0S2luZC5UUyxcbiAgKTtcblxuICAvLyDrrLjrspUg7Jik66WY64KYIOusuOyepSDsgr3snoXsnbQg7J6I64qUIO2RnO2YhOyLneydgCDquLDrs7jqsJLsnLzroZwg7ZW07ISd7ZWY7KeAIOyViuuKlOuLpC5cbiAgY29uc3QgcGFyc2VEaWFnbm9zdGljcyA9XG4gICAgLyogU0FGRVRZOiBjcmVhdGVTb3VyY2VGaWxlIOqysOqzvOyXkOuKlCDtjIzshJzqsIAg7IiY7KeR7ZWcIOq1rOusuCDsp4Tri6jsnbQg7Y+s7ZWo65Cc64ukLiAqLyAoXG4gICAgICBzb3VyY2VGaWxlIGFzIHRzLlNvdXJjZUZpbGUgJiB7XG4gICAgICAgIHJlYWRvbmx5IHBhcnNlRGlhZ25vc3RpY3M6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXTtcbiAgICAgIH1cbiAgICApLnBhcnNlRGlhZ25vc3RpY3M7XG4gIGlmIChwYXJzZURpYWdub3N0aWNzLmxlbmd0aCA+IDAgfHwgc291cmNlRmlsZS5zdGF0ZW1lbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnQgPSBzb3VyY2VGaWxlLnN0YXRlbWVudHNbMF07XG4gIGlmICghdHMuaXNWYXJpYWJsZVN0YXRlbWVudChzdGF0ZW1lbnQpIHx8IHN0YXRlbWVudC5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLmxlbmd0aCAhPT0gMSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBpbml0aWFsaXplciA9IHN0YXRlbWVudC5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zWzBdPy5pbml0aWFsaXplcjtcbiAgaWYgKGluaXRpYWxpemVyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHRzLmlzU3RyaW5nTGl0ZXJhbChpbml0aWFsaXplcikgfHwgdHMuaXNOb1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbChpbml0aWFsaXplcikpIHtcbiAgICByZXR1cm4gaW5pdGlhbGl6ZXIudGV4dDtcbiAgfVxuICBpZiAodHMuaXNOdW1lcmljTGl0ZXJhbChpbml0aWFsaXplcikpIHtcbiAgICByZXR1cm4gTnVtYmVyKGluaXRpYWxpemVyLnRleHQpO1xuICB9XG4gIGlmICh0cy5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihpbml0aWFsaXplcikpIHtcbiAgICBpZiAoIXRzLmlzTnVtZXJpY0xpdGVyYWwoaW5pdGlhbGl6ZXIub3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBOdW1iZXIoaW5pdGlhbGl6ZXIub3BlcmFuZC50ZXh0KTtcbiAgICBpZiAoaW5pdGlhbGl6ZXIub3BlcmF0b3IgPT09IHRzLlN5bnRheEtpbmQuUGx1c1Rva2VuKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpbml0aWFsaXplci5vcGVyYXRvciA9PT0gdHMuU3ludGF4S2luZC5NaW51c1Rva2VuKSB7XG4gICAgICByZXR1cm4gLXZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBzd2l0Y2ggKGluaXRpYWxpemVyLmtpbmQpIHtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQ6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkOlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lUmVmZXJlbmNlZE1ldGFkYXRhRGVmYXVsdFNjaGVtYShcbiAgcmVmZXJlbmNlOiB6LlpvZFR5cGUsXG4gIHZpc2l0ZWQ6IFNldDx6LlpvZFR5cGU+ID0gbmV3IFNldCgpLFxuKTogei5ab2RUeXBlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZpc2l0ZWQuaGFzKHJlZmVyZW5jZSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHZpc2l0ZWQuYWRkKHJlZmVyZW5jZSk7XG5cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kT3B0aW9uYWwpIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YU9wdGlvbmFsRGVmU2NoZW1hLnNhZmVQYXJzZShyZWZlcmVuY2UuZGVmLCBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQpO1xuICAgIHJldHVybiByZXN1bHQuc3VjY2Vzc1xuICAgICAgPyBjbG9uZVJlZmVyZW5jZWRNZXRhZGF0YURlZmF1bHRTY2hlbWEocmVzdWx0LmRhdGEuaW5uZXJUeXBlLCB2aXNpdGVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kTnVsbGFibGUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YU51bGxhYmxlRGVmU2NoZW1hLnNhZmVQYXJzZShyZWZlcmVuY2UuZGVmLCBtZXRhZGF0YURlZmF1bHRQYXJzZUNvbnRleHQpO1xuICAgIHJldHVybiByZXN1bHQuc3VjY2Vzc1xuICAgICAgPyBjbG9uZVJlZmVyZW5jZWRNZXRhZGF0YURlZmF1bHRTY2hlbWEocmVzdWx0LmRhdGEuaW5uZXJUeXBlLCB2aXNpdGVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSByZWZlcmVuY2UuZGVmO1xuXG4gICAgLy8gZGVmYXVsdFZhbHVlIOygkeq3vOyekOuKlCDtjKnthqDrpqzrpbwg7Iuk7ZaJ7ZWY66+A66GcIO2CpOunjCDtmZXsnbjtlZjqs6Ag7JWI7KCE7ZWcIO2VhOuTnOunjCDrs7XsgqztlZzri6QuXG4gICAgY29uc3QgZGVmaW5pdGlvbktleXMgPSBSZWZsZWN0Lm93bktleXMoZGVmaW5pdGlvbik7XG4gICAgY29uc3QgYWxsb3dlZEtleXMgPSBbXCJ0eXBlXCIsIFwiaW5uZXJUeXBlXCIsIFwiZGVmYXVsdFZhbHVlXCJdO1xuICAgIGlmIChcbiAgICAgIGRlZmluaXRpb25LZXlzLmxlbmd0aCAhPT0gYWxsb3dlZEtleXMubGVuZ3RoIHx8XG4gICAgICAhYWxsb3dlZEtleXMuZXZlcnkoKGtleSkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlZmluaXRpb24sIGtleSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YURlZmF1bHRJbm5lckRlZlNjaGVtYS5zYWZlUGFyc2UoXG4gICAgICB7IHR5cGU6IGRlZmluaXRpb24udHlwZSwgaW5uZXJUeXBlOiBkZWZpbml0aW9uLmlubmVyVHlwZSB9LFxuICAgICAgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0LFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzXG4gICAgICA/IGNsb25lUmVmZXJlbmNlZE1ldGFkYXRhRGVmYXVsdFNjaGVtYShyZXN1bHQuZGF0YS5pbm5lclR5cGUsIHZpc2l0ZWQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiB6LlpvZEVtYWlsKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IGNsb25lTWV0YWRhdGFFbWFpbFBhdHRlcm4ocmVmZXJlbmNlLmRlZik7XG4gICAgcmV0dXJuIHBhdHRlcm4gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHouc3RyaW5nKCkucmVnZXgocGF0dGVybik7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kU3RyaW5nKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbWV0YWRhdGFTdHJpbmdEZWZTY2hlbWEuc2FmZVBhcnNlKHJlZmVyZW5jZS5kZWYsIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCk7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gei5zdHJpbmcoKSA6IGNsb25lTWV0YWRhdGFTdHJpbmcocmVmZXJlbmNlKTtcbiAgfVxuICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygei5ab2ROdW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YU51bWJlckRlZlNjaGVtYS5zYWZlUGFyc2UocmVmZXJlbmNlLmRlZiwgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0KTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyB6Lm51bWJlcigpIDogY2xvbmVNZXRhZGF0YU51bWJlcihyZWZlcmVuY2UpO1xuICB9XG4gIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiB6LlpvZEJvb2xlYW4pIHtcbiAgICBjb25zdCByZXN1bHQgPSBtZXRhZGF0YUJvb2xlYW5EZWZTY2hlbWEuc2FmZVBhcnNlKHJlZmVyZW5jZS5kZWYsIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCk7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gei5ib29sZWFuKCkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IG1ldGFkYXRhRW51bURlZlNjaGVtYS5zYWZlUGFyc2UocmVmZXJlbmNlLmRlZiwgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0KTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyB6LmVudW0ocmVzdWx0LmRhdGEuZW50cmllcykgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIHouWm9kTGl0ZXJhbCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IG1ldGFkYXRhTGl0ZXJhbERlZlNjaGVtYS5zYWZlUGFyc2UocmVmZXJlbmNlLmRlZiwgbWV0YWRhdGFEZWZhdWx0UGFyc2VDb250ZXh0KTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyB6LmxpdGVyYWwocmVzdWx0LmRhdGEudmFsdWVzKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RNZXRhZGF0YURlZmF1bHRVbmlvblNjaGVtYXMoXG4gIHBhcmFtVHlwZTogQXBpUGFyYW1UeXBlLlVuaW9uLFxuICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RUeXBlIH0sXG4pOiBNZXRhZGF0YURlZmF1bHRVbmlvbkNvbGxlY3Rpb24ge1xuICBpZiAocGFyYW1UeXBlLnR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IHVuc3VwcG9ydGVkOiB0cnVlIH07XG4gIH1cblxuICBjb25zdCBzY2hlbWFzOiB6LlpvZFR5cGVbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgcGFyYW1UeXBlLnR5cGVzKSB7XG4gICAgaWYgKHR5cGUgPT09IFwibnVsbFwiIHx8IHR5cGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChBcGlQYXJhbVR5cGUuaXNVbmlvbih0eXBlKSkge1xuICAgICAgLy8gbnVsbGlzaCDsoITsmqkg7KSR7LKpIOycoOuLiOyYqOqzvCDrr7jsp4Dsm5Ag66mk67KE66W8IOq1rOu2hO2VtCDrsJTquaUg7Jyg64uI7Jio7J2EIOyemOuquyDqsbDrtoDtlZjsp4Ag7JWK64qU64ukLlxuICAgICAgY29uc3QgbmVzdGVkID0gY29sbGVjdE1ldGFkYXRhRGVmYXVsdFVuaW9uU2NoZW1hcyh0eXBlLCByZWZlcmVuY2VzKTtcbiAgICAgIGlmIChuZXN0ZWQudW5zdXBwb3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIG5lc3RlZDtcbiAgICAgIH1cbiAgICAgIHNjaGVtYXMucHVzaCguLi5uZXN0ZWQuc2NoZW1hcyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSBnZXRNZXRhZGF0YURlZmF1bHRTY2hlbWEodHlwZSwgcmVmZXJlbmNlcyk7XG4gICAgaWYgKHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyB1bnN1cHBvcnRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBzY2hlbWFzLnB1c2goc2NoZW1hKTtcbiAgfVxuXG4gIHJldHVybiB7IHVuc3VwcG9ydGVkOiBmYWxzZSwgc2NoZW1hcyB9O1xufVxuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YURlZmF1bHRTY2hlbWEoXG4gIHBhcmFtVHlwZTogQXBpUGFyYW1UeXBlLFxuICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RUeXBlIH0sXG4pOiB6LlpvZFR5cGUgfCB1bmRlZmluZWQge1xuICBpZiAocGFyYW1UeXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHouc3RyaW5nKCk7XG4gIH1cbiAgaWYgKHBhcmFtVHlwZSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB6Lm51bWJlcigpO1xuICB9XG4gIGlmIChwYXJhbVR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIHouYm9vbGVhbigpO1xuICB9XG4gIC8vIOyngeygkSB0cnVlL2ZhbHNlL251bGwg66as7YSw65+07J2AIEdFVCDsv7zrpqwg7KCE7Iah6rO8IEZhc3RpZnkg7LqQ7Iqk7YSw6rCAIOq3uOuMgOuhnCDrs7TsobTtlZjsp4Ag66q77ZW0IOyggeyaqe2VmOyngCDslYrripTri6QuXG4gIGlmIChBcGlQYXJhbVR5cGUuaXNTdHJpbmdMaXRlcmFsKHBhcmFtVHlwZSkgfHwgQXBpUGFyYW1UeXBlLmlzTnVtZXJpY0xpdGVyYWwocGFyYW1UeXBlKSkge1xuICAgIHJldHVybiB6LmxpdGVyYWwocGFyYW1UeXBlLnZhbHVlKTtcbiAgfVxuICBpZiAoQXBpUGFyYW1UeXBlLmlzVW5pb24ocGFyYW1UeXBlKSkge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0TWV0YWRhdGFEZWZhdWx0VW5pb25TY2hlbWFzKHBhcmFtVHlwZSwgcmVmZXJlbmNlcyk7XG4gICAgaWYgKGNvbGxlY3Rpb24udW5zdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChjb2xsZWN0aW9uLnNjaGVtYXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbi5zY2hlbWFzWzBdO1xuICAgIH1cbiAgICBpZiAoY29sbGVjdGlvbi5zY2hlbWFzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB6LnVuaW9uKGNvbGxlY3Rpb24uc2NoZW1hcyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKEFwaVBhcmFtVHlwZS5pc1JlZihwYXJhbVR5cGUpKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1twYXJhbVR5cGUuaWRdO1xuICAgIHJldHVybiByZWZlcmVuY2UgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGNsb25lUmVmZXJlbmNlZE1ldGFkYXRhRGVmYXVsdFNjaGVtYShyZWZlcmVuY2UpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWRfaHR0cCBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJnZW5lcmF0ZWRfaHR0cFwiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgoKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYHNvbmFtdS5nZW5lcmF0ZWQuaHR0cGAsXG4gICAgfTtcbiAgfVxuXG4gIHN0cmluZ2lmeVF1ZXJ5UGFyYW1zKHBhcmFtczogUmVxdWVzdERlZmF1bHRPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBxc1xuICAgICAgLnN0cmluZ2lmeShwYXJhbXMsIHsgZW5jb2RlVmFsdWVzT25seTogdHJ1ZSwgZm9ybWF0OiBcIlJGQzM5ODZcIiB9KVxuICAgICAgLnNwbGl0KFwiJlwiKVxuICAgICAgLmpvaW4oXCJcXG5cXHQmXCIpO1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHN5bmNlcjogeyB0eXBlcywgYXBpcyB9LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGFwaToge1xuICAgICAgICAgIHJvdXRlOiB7IHByZWZpeCB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9ID0gU29uYW11O1xuXG4gICAgY29uc3QgbGluZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFwaXMubWFwKGFzeW5jIChhcGkpID0+IHtcbiAgICAgICAgY29uc3QgcmVxT2JqZWN0ID0gdGhpcy5yZXNvbHZlQXBpUGFyYW1zKGFwaSwgdHlwZXMpO1xuXG4gICAgICAgIGNvbnN0IGRhdGFMaW5lcyA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKChhcGkub3B0aW9ucy5odHRwTWV0aG9kID8/IFwiR0VUXCIpID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBxdWVyeXN0cmluZzogW3RoaXMuc3RyaW5naWZ5UXVlcnlQYXJhbXMocmVxT2JqZWN0KV0sXG4gICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcXVlcnlzdHJpbmc6IFtdLFxuICAgICAgICAgICAgICBib2R5OiBbXCJcIiwgSlNPTi5zdHJpbmdpZnkocmVxT2JqZWN0LCBudWxsLCAyKV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGAke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIn0ge3tiYXNlVXJsfX0ke3ByZWZpeH0ke2FwaS5wYXRofWAsXG4gICAgICAgICAgICAuLi5kYXRhTGluZXMucXVlcnlzdHJpbmcsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXFx0P1wiKSxcbiAgICAgICAgICBgQ29udGVudC1UeXBlOiAke2FwaS5vcHRpb25zLmNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWAsXG4gICAgICAgICAgLi4uZGF0YUxpbmVzLmJvZHksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXCIjIEBnZW5lcmF0ZWRcIiwgXCIjIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlwiXSxcbiAgICB9O1xuICB9XG5cbiAgem9kVHlwZVRvUmVxRGVmYXVsdCh6b2RUeXBlOiB6LlpvZFR5cGUsIG5hbWU6IHN0cmluZyk6IFJlcXVlc3REZWZhdWx0VmFsdWUge1xuICAgIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RPYmplY3QpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5rZXlzKHpvZFR5cGVbXCJzaGFwZVwiXSkubWFwKChrZXkpID0+IFtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KHpvZFR5cGVbXCJzaGFwZVwiXVtrZXldLCBrZXkpLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAgIC8qIFNBRkVUWTogWm9kQXJyYXkg67aE6riw7J2066+A66GcIGVsZW1lbnTqsIAg67Cw7Je0IOybkOyGjCDsiqTtgqTrp4jri6QuICovIChcbiAgICAgICAgICAgIHpvZFR5cGUgYXMgei5ab2RBcnJheTx6LlpvZFR5cGU+XG4gICAgICAgICAgKS5lbGVtZW50LFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouY29yZS4kWm9kU3RyaW5nKSB7XG4gICAgICAvLyBOT1RFOiB6LlpvZFN0cmluZ+ycvOuhnCDruYTqtZDtlZjrqbQgei51cmwoKSwgei5lbWFpbCgpIOuTseydmCDtg4DsnoXsl5DshJwg66y47KCc6rCAIOyDneq4sOuvgOuhnCB6LmNvcmUuJFpvZFN0cmluZ+ycvOuhnCDruYTqtZDtlahcbiAgICAgIGlmIChuYW1lLmVuZHNXaXRoKFwiX2F0XCIpIHx8IG5hbWUuZW5kc1dpdGgoXCJfZGF0ZVwiKSB8fCBuYW1lID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bWJlcikge1xuICAgICAgaWYgKG5hbWUgPT09IFwibnVtXCIpIHtcbiAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW5WYWx1ZSA9IHpvZFR5cGUubWluVmFsdWUgPz8gMDtcbiAgICAgIHJldHVybiBtaW5WYWx1ZSA+IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSID8gbWluVmFsdWUgOiAwO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQm9vbGVhbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUub3B0aW9uc1swXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAvKiBTQUZFVFk6IFpvZE9wdGlvbmFsIOu2hOq4sOydtOuvgOuhnCBpbm5lclR5cGXsnbQg7ISg7YOdIOyGjeyEseydmCDsiqTtgqTrp4jri6QuICovIChcbiAgICAgICAgICB6b2RUeXBlIGFzIHouWm9kT3B0aW9uYWw8ei5ab2RUeXBlPlxuICAgICAgICApLmRlZi5pbm5lclR5cGUsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTnVsbGFibGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVW5pb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoXG4gICAgICAgIC8qIFNBRkVUWTogWm9kVW5pb24g67aE6riw7J2066+A66GcIG9wdGlvbnPsnZgg7LKrIO2VreuqqeydtCDsnKDtmqjtlZwg64yA7JWIIOyKpO2CpOuniOuLpC4gKi8gKFxuICAgICAgICAgIHpvZFR5cGUgYXMgei5ab2RVbmlvbjx6LlpvZFR5cGVbXT5cbiAgICAgICAgKS5kZWYub3B0aW9uc1swXSxcbiAgICAgICAgbmFtZSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RVbmtub3duKSB7XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RUdXBsZSkge1xuICAgICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gWm9kVHVwbGUg7YOA7J6FIOyCrOyaqVxuICAgICAgcmV0dXJuIHpvZFR5cGUuZGVmLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoaXRlbSwgbmFtZSkpO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSkge1xuICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTGl0ZXJhbCkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUudmFsdWU7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RSZWNvcmQgfHwgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTWFwKSB7XG4gICAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSBab2RSZWNvcmQg7YOA7J6FIOyCrOyaqVxuICAgICAgY29uc3Qga3ZEZWYgPSAvKiBTQUZFVFk6IFpvZFJlY29yZC9ab2RNYXAg67aE6riw7J2066+A66GcIGRlZuqwgCDtgqQt6rCSIOyKpO2CpOuniCDsoJXsnZjri6QuICovIChcbiAgICAgICAgem9kVHlwZSBhcyB6LlpvZFJlY29yZDxhbnksIHouWm9kVHlwZT4gfCB6LlpvZE1hcDx6LlpvZFR5cGUsIHouWm9kVHlwZT5cbiAgICAgICkuZGVmO1xuICAgICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gWm9kSW50ZXJzZWN0aW9uIO2DgOyehSDsgqzsmqlcbiAgICAgIGNvbnN0IGtleSA9IFN0cmluZyh0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoa3ZEZWYua2V5VHlwZSwgbmFtZSkpO1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoa3ZEZWYudmFsdWVUeXBlLCBuYW1lKTtcbiAgICAgIHJldHVybiB7IFtrZXldOiB2YWx1ZSB9O1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kU2V0KSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoXG4gICAgICAgICAgLyogU0FGRVRZOiBab2RTZXQg67aE6riw7J2066+A66GcIHZhbHVlVHlwZeydtCDsp5Htlakg7JuQ7IaMIOyKpO2CpOuniOuLpC4gKi8gKFxuICAgICAgICAgICAgem9kVHlwZSBhcyB6LlpvZFNldDx6LlpvZFR5cGU+XG4gICAgICAgICAgKS5kZWYudmFsdWVUeXBlLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kSW50ZXJzZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAvKiBTQUZFVFk6IFpvZEludGVyc2VjdGlvbiDrtoTquLDsnbTrr4DroZwgcmlnaHTqsIAg6rWQ7LCoIO2DgOyeheydmCDsmrDsuKEg7Iqk7YKk66eI64ukLiAqLyAoXG4gICAgICAgICAgem9kVHlwZSBhcyB6LlpvZEludGVyc2VjdGlvbjx6LlpvZFR5cGUsIHouWm9kVHlwZT5cbiAgICAgICAgKS5kZWYucmlnaHQsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChcbiAgICAgICAgLyogU0FGRVRZOiBab2REZWZhdWx0IOu2hOq4sOydtOuvgOuhnCBpbm5lclR5cGXsnbQg6riw67O46rCSIOyggeyaqSDsoIQg7Iqk7YKk66eI64ukLiAqLyAoXG4gICAgICAgICAgem9kVHlwZSBhcyB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPlxuICAgICAgICApLmRlZi5pbm5lclR5cGUsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh6b2RUeXBlKTtcbiAgICAgIHJldHVybiBgdW5rbm93bi0ke3pvZFR5cGUudHlwZX1gO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVBcGlQYXJhbXMoXG4gICAgYXBpOiBFeHRlbmRlZEFwaSxcbiAgICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RUeXBlIH0sXG4gICk6IFJlcXVlc3REZWZhdWx0T2JqZWN0IHtcbiAgICBjb25zdCByZXFUeXBlID0gZ2V0Wm9kT2JqZWN0RnJvbUFwaShhcGksIHJlZmVyZW5jZXMpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFNBRkVUWTogZ2V0Wm9kT2JqZWN0RnJvbUFwaeuKlCDqsJ3ssrQg7Iqk7YKk66eI66W8IOuwmO2ZmO2VmOuvgOuhnCDquLDrs7jqsJLrj4Qg6rCd7LK07J2064ukLlxuICAgICAgY29uc3QgcmVxdWVzdERlZmF1bHRzID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICByZXFUeXBlLFxuICAgICAgICBcInVua25vd25OYW1lXCIsXG4gICAgICApIGFzIFJlcXVlc3REZWZhdWx0T2JqZWN0O1xuXG4gICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIGFwaS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihyZXF1ZXN0RGVmYXVsdHMsIHBhcmFtLm5hbWUpIHx8IHBhcmFtLmRlZmF1bHREZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFEZWZhdWx0U2NoZW1hID0gZ2V0TWV0YWRhdGFEZWZhdWx0U2NoZW1hKHBhcmFtLnR5cGUsIHJlZmVyZW5jZXMpO1xuICAgICAgICBpZiAobWV0YWRhdGFEZWZhdWx0U2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZERlZmF1bHQgPSBwYXJzZVByaW1pdGl2ZURlZmF1bHQocGFyYW0uZGVmYXVsdERlZik7XG4gICAgICAgIC8vIOuqheyLnOyggSBudWxsIOq4sOuzuOqwkuydgCBHRVQg7L+866asIOyghOyGoeqzvCBGYXN0aWZ5IOy6kOyKpO2EsOqwgCDqt7jrjIDroZwg67O07KG07ZWY7KeAIOuqu+2VtCDsoIHsmqntlZjsp4Ag7JWK64qU64ukLlxuICAgICAgICBpZiAocGFyc2VkRGVmYXVsdCA9PT0gdW5kZWZpbmVkIHx8IHBhcnNlZERlZmF1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXRhZGF0YURlZmF1bHRTY2hlbWEuc2FmZVBhcnNlKHBhcnNlZERlZmF1bHQsIG1ldGFkYXRhRGVmYXVsdFBhcnNlQ29udGV4dCkuc3VjY2Vzcykge1xuICAgICAgICAgIHJlcXVlc3REZWZhdWx0c1twYXJhbS5uYW1lXSA9IHBhcnNlZERlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcXVlc3REZWZhdWx0cztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgem9kIHR5cGUgZGV0ZWN0ZWQgb24gJHthcGkubW9kZWxOYW1lfToke2FwaS5tZXRob2ROYW1lfWAsIHtcbiAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSStELHFCQUFBO0FBRXRCLFlBQUE7QUFDTyxXQUFBO0FBQ1YsY0FBQTtBQXNCdEMsTUFBTSw4QkFBOEIsRUFFbEMsYUFBYSxvQ0FDZjtBQUVBLE1BQU0sMEJBQTBCLEVBQUUsV0FBVyxFQUFFLE9BQU87QUFDdEQsTUFBTSw0QkFBNEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUN2RCxNQUFNLDhCQUE4QixFQUFFLFdBQVcsUUFBUTtBQUV6RCxNQUFNLHlCQUF5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
|
|
@@ -6,7 +6,7 @@ import { Template, init_template } from "../template.js";
|
|
|
6
6
|
import inflection from "inflection";
|
|
7
7
|
import { unique } from "radashi";
|
|
8
8
|
import assert from "assert";
|
|
9
|
-
|
|
9
|
+
// src/template/implementations/generated_sso.template.ts
|
|
10
10
|
init_api();
|
|
11
11
|
init_entity_manager();
|
|
12
12
|
init_types();
|
|
@@ -213,7 +213,6 @@ var Template__generated_sso = class extends Template {
|
|
|
213
213
|
return !!Sonamu.config.server?.auth;
|
|
214
214
|
}
|
|
215
215
|
};
|
|
216
|
-
//#endregion
|
|
217
216
|
export { Template__generated_sso };
|
|
218
217
|
|
|
219
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkX3Nzby50ZW1wbGF0ZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVtcGxhdGUvaW1wbGVtZW50YXRpb25zL2dlbmVyYXRlZF9zc28udGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5cbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHtcbiAgaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AsXG4gIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCxcbiAgaXNPbmVUb09uZVJlbGF0aW9uUHJvcCxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgdHlwZSBTb3VyY2VDb2RlIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLnRlbXBsYXRlXCI7XG5cbi8qKlxuICogYmV0dGVyLWF1dGggYWRkaXRpb25hbEZpZWxkc+ydmCB0eXBlIOqwkuydhCBUeXBlU2NyaXB0IO2DgOyehSDrrLjsnpDsl7TroZwg67OA7ZmY7ZWp64uI64ukLlxuICovXG5mdW5jdGlvbiBtYXBCZXR0ZXJBdXRoRmllbGRUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiBcIm51bWJlclwiO1xuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgY2FzZSBcImRhdGVcIjpcbiAgICAgIHJldHVybiBcIkRhdGVcIjtcbiAgICBjYXNlIFwic3RyaW5nW11cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1tdXCI7XG4gICAgY2FzZSBcIm51bWJlcltdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJbXVwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWRfc3NvIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImdlbmVyYXRlZF9zc29cIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLnNzby50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgIGNvbnN0IGVudGl0aWVzID0gZW50aXR5SWRzLm1hcCgoaWQpID0+IEVudGl0eU1hbmFnZXIuZ2V0KGlkKSk7XG5cbiAgICAvLyBTdWJzZXRRdWVyaWVzIOyDneyEsSDrjIDsg4E6IOu2gOuqqCDsl5Tti7Dti7DqsIAg7JeG6rOgIOyEnOu4jOyFi+ydtCDsobTsnqxcbiAgICBjb25zdCB0YXJnZXRFbnRpdGllcyA9IGVudGl0aWVzLmZpbHRlcihcbiAgICAgIChlbnRpdHkpID0+IGVudGl0eS5wYXJlbnRJZCA9PT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKS5sZW5ndGggPiAwLFxuICAgICk7XG5cbiAgICAvLyBTdWJzZXRRdWVyaWVzIOyDneyEsVxuICAgIGNvbnN0IHNvdXJjZUNvZGVzOiBTb3VyY2VDb2RlW10gPSB0YXJnZXRFbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+IHtcbiAgICAgIGNvbnN0IHN1YnNldEtleXMgPSBPYmplY3Qua2V5cyhlbnRpdHkuc3Vic2V0cyk7XG5cbiAgICAgIGNvbnN0IHN1YnNldEtleVR5cGVOYW1lID0gYCR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRLZXlgO1xuICAgICAgY29uc3QgZW50aXR5Q2FtZWxOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShlbnRpdHkuaWQsIHRydWUpO1xuXG4gICAgICAvLyBQdXJpIOq4sOuwmCBTdWJzZXRRdWVyeVxuICAgICAgY29uc3QgcHVyaVN1YnNldFF1ZXJ5OiBTb3VyY2VDb2RlID0ge1xuICAgICAgICBsYWJlbDogYFN1YnNldFF1ZXJ5OiAke2VudGl0eS5pZH1gLFxuICAgICAgICBsaW5lczogW1xuICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnRpdHlDYW1lbE5hbWV9U3Vic2V0UXVlcmllcyA9IHtgLFxuICAgICAgICAgIC4uLnN1YnNldEtleXMubWFwKFxuICAgICAgICAgICAgKHN1YnNldEtleSkgPT4gYCR7c3Vic2V0S2V5fTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgICAgICAgICAke2VudGl0eS5nZXRQdXJpU3Vic2V0UXVlcnkoc3Vic2V0S2V5KX07XG4gICAgICAgICAgfSxgLFxuICAgICAgICAgICksXG4gICAgICAgICAgYH07YCxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICBdLFxuICAgICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFB1cmkg6riw67CYIFN1YnNldExvYWRlcnNRdWVyeVxuICAgICAgY29uc3QgcHVyaUxvYWRlclF1ZXJ5OiBTb3VyY2VDb2RlID0ge1xuICAgICAgICBsYWJlbDogYExvYWRlclF1ZXJ5OiAke2VudGl0eS5pZH1gLFxuICAgICAgICBsaW5lczogW1xuICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnRpdHlDYW1lbE5hbWV9TG9hZGVyUXVlcmllcyA9IHtgLFxuICAgICAgICAgIC4uLnN1YnNldEtleXMubWFwKChzdWJzZXRLZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgJHtzdWJzZXRLZXl9OiAke2VudGl0eS5nZXRQdXJpTG9hZGVyUXVlcnkoc3Vic2V0S2V5KX0sYDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBgfSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8JHtzdWJzZXRLZXlUeXBlTmFtZX0+O2AsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgaW1wb3J0S2V5czogW3N1YnNldEtleVR5cGVOYW1lXSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBbcHVyaVN1YnNldFF1ZXJ5LCBwdXJpTG9hZGVyUXVlcnldO1xuICAgIH0pO1xuXG4gICAgLy8gRm9yZWlnbktleSDtg4DsnoUg7IOd7ISxXG4gICAgY29uc3QgZmtUeXBlU291cmNlQ29kZSA9IHRoaXMuZ2V0Rm9yZWlnbktleVR5cGVTb3VyY2VDb2RlKGVudGl0aWVzKTtcbiAgICBpZiAoZmtUeXBlU291cmNlQ29kZSkge1xuICAgICAgc291cmNlQ29kZXMucHVzaChma1R5cGVTb3VyY2VDb2RlKTtcbiAgICB9XG5cbiAgICAvLyBEYXRhYmFzZVNjaGVtYSDsg53shLFcbiAgICBjb25zdCBkYlNjaGVtYVNvdXJjZUNvZGUgPSB0aGlzLmdldERhdGFiYXNlU2NoZW1hU291cmNlQ29kZShlbnRpdGllcyk7XG4gICAgaWYgKGRiU2NoZW1hU291cmNlQ29kZSkge1xuICAgICAgc291cmNlQ29kZXMucHVzaChkYlNjaGVtYVNvdXJjZUNvZGUpO1xuICAgIH1cblxuICAgIC8vIEF1dGggVXNlciDtg4DsnoUg7IOd7ISxXG4gICAgY29uc3QgYXV0aFVzZXJUeXBlU291cmNlQ29kZSA9IHRoaXMuZ2V0QXV0aFVzZXJUeXBlU291cmNlQ29kZSgpO1xuICAgIGlmIChhdXRoVXNlclR5cGVTb3VyY2VDb2RlKSB7XG4gICAgICBzb3VyY2VDb2Rlcy5wdXNoKGF1dGhVc2VyVHlwZVNvdXJjZUNvZGUpO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBzb3VyY2VDb2Rlcy5yZWR1Y2UoXG4gICAgICAocmVzdWx0LCB0cykgPT4ge1xuICAgICAgICBpZiAodHMgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGFzc2VydChyZXN1bHQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmVzOiBbLi4ucmVzdWx0LmxpbmVzLCBgLy8gJHt0cy5sYWJlbH1gLCAuLi50cy5saW5lcywgXCJcIl0sXG4gICAgICAgICAgaW1wb3J0S2V5czogdW5pcXVlKFsuLi5yZXN1bHQuaW1wb3J0S2V5cywgLi4udHMuaW1wb3J0S2V5c10pLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIC8qIFNBRkVUWTogcmVkdWNlIOuIhOyCsOq4sOuKlCBsYWJlbOydhCDsoJzsmbjtlZwgU291cmNlQ29kZeydmCDrkZAg67Cw7Je066GcIOy0iOq4sO2ZlOuQnOuLpC4gKi8ge1xuICAgICAgICBsaW5lczogW10sXG4gICAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgfSBhcyBPbWl0PFNvdXJjZUNvZGUsIFwibGFiZWxcIj4sXG4gICAgKTtcblxuICAgIGNvbnN0IGJvZHkgPSBzb3VyY2VDb2RlLmxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgY29uc3QgaXNVc2luZ01hbnlUb01hbnlCYXNlU2NoZW1hID0gYm9keS5pbmNsdWRlcyhcIk1hbnlUb01hbnlCYXNlU2NoZW1hXCIpO1xuXG4gICAgY29uc3Qgc29uYW11SW1wb3J0cyA9IFtcbiAgICAgIFwiUHVyaVdyYXBwZXJcIixcbiAgICAgIFwiRGF0YWJhc2VTY2hlbWFFeHRlbmRcIixcbiAgICAgIFwiUHVyaUxvYWRlclF1ZXJpZXNcIixcbiAgICAgIGlzVXNpbmdNYW55VG9NYW55QmFzZVNjaGVtYSA/IFwiTWFueVRvTWFueUJhc2VTY2hlbWFcIiA6IFwiXCIsXG4gICAgXVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oXCIsIFwiKTtcblxuICAgIC8vIGN1c3RvbUhlYWRlcnMg6rWs7ISxXG4gICAgY29uc3QgY3VzdG9tSGVhZGVycyA9IFtcbiAgICAgIFwiLyoqXCIsXG4gICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgIFwiICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXCIsXG4gICAgICBcIiAqL1wiLFxuICAgICAgXCIvLyBTb25hbXUg7IOd7ISxIOy9lOuTnOydmCDtg4DsnoUg6rOE7JW97J2EIOycoOyngO2VmOq4sCDsnITtlbQgYW50aS1zbG9wIOqygOyCrOunjCDsoJzsmbjtlanri4jri6QuXCIsXG4gICAgICBcIi8qIG94bGludC1kaXNhYmxlIGFudGktc2xvcC9uby1jaGFpbmVkLXR5cGUtYXNzZXJ0aW9ucywgYW50aS1zbG9wL25vLWNvbmRpdGlvbmFsLWVtcHR5LW9iamVjdC1zcHJlYWQsIGFudGktc2xvcC9uby1rbm93bi12YWx1ZS13aWRlbmluZywgYW50aS1zbG9wL25vLW1vZHVsZS1tb2NraW5nLCBhbnRpLXNsb3Avbm8tb2JqZWN0LXBhcmFtZXRlcnMsIGFudGktc2xvcC9uby1yZWZsZWN0LWFwcGx5LCBhbnRpLXNsb3Avbm8tcmVmbGVjdC1nZXQsIGFudGktc2xvcC9uby1ydW50aW1lLXR5cGVvZiwgYW50aS1zbG9wL25vLXNoYXBlLWluLXN5bWJvbC1uYW1lcywgYW50aS1zbG9wL25vLXVua25vd24tcGFyYW1ldGVycywgYW50aS1zbG9wL25vLXVua25vd24tcmV0dXJucywgYW50aS1zbG9wL25vLXVua25vd24tdHlwZS1hbGlhc2VzLCBhbnRpLXNsb3Avbm8tdW5zYWZlLWRpY3Rpb25hcnktdHlwZSwgYW50aS1zbG9wL25vLXdpZGVuLXRoZW4tYXNzZXJ0LCBhbnRpLXNsb3AvcmVxdWlyZS1zYWZldHktY29tbWVudC1mb3ItdHlwZS1hc3NlcnRpb24gKi9cIixcbiAgICAgIFwiXCIsXG4gICAgICBgaW1wb3J0IHsgJHtzb25hbXVJbXBvcnRzfSB9IGZyb20gXCJzb25hbXVcIjtgLFxuICAgIF07XG4gICAgaWYgKHRoaXMuaGFzQXV0aENvbmZpZygpKSB7XG4gICAgICBjdXN0b21IZWFkZXJzLnB1c2goYGltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gXCJiZXR0ZXItYXV0aFwiO2ApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHk6IHNvdXJjZUNvZGUubGluZXMuam9pbihcIlxcblwiKSxcbiAgICAgIGltcG9ydEtleXM6IHNvdXJjZUNvZGUuaW1wb3J0S2V5cyxcbiAgICAgIGN1c3RvbUhlYWRlcnMsXG4gICAgfTtcbiAgfVxuXG4gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gcHJpdmF0ZSBIZWxwZXIgTWV0aG9kc1xuICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHByaXZhdGUgZ2V0RGF0YWJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0aWVzOiBFbnRpdHlbXSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoZW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBEYXRhYmFzZVNjaGVtYUV4dGVuZCAtIO2FjOydtOu4lCDsiqTtgqTrp4gg7YOA7J6FIOygleydmFxuICAgIGNvbnN0IGVudGl0eVNjaGVtYUxpbmVzID0gZW50aXRpZXMubWFwKChlbnRpdHkpID0+IGAke2VudGl0eS50YWJsZX06ICR7ZW50aXR5LmlkfUJhc2VTY2hlbWE7YCk7XG5cbiAgICBjb25zdCBqb2luVGFibGVzID0gdW5pcXVlKFxuICAgICAgZW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PlxuICAgICAgICBlbnRpdHkucHJvcHMuZmlsdGVyKGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCkubWFwKChwcm9wKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbVRhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZShlbnRpdHkudGFibGUpO1xuICAgICAgICAgIGNvbnN0IHRvRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKTtcbiAgICAgICAgICBjb25zdCB0b1RhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0b0VudGl0eS50YWJsZSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wLmpvaW5UYWJsZSxcbiAgICAgICAgICAgIGZyb21UYWJsZUtleSxcbiAgICAgICAgICAgIHRvVGFibGVLZXksXG4gICAgICAgICAgICBmcm9tRW50aXR5SWQ6IGVudGl0eS5pZCxcbiAgICAgICAgICAgIHRvRW50aXR5SWQ6IHRvRW50aXR5LmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIChqb2luVGFibGUpID0+IGpvaW5UYWJsZS50YWJsZSxcbiAgICApO1xuXG4gICAgLy8gRGF0YWJhc2VGb3JlaWduS2V5cyAtIEZLIOy7rOufvOydhCDqsIDsp4Qg7YWM7J2067iU66eMIOygleydmFxuICAgIGNvbnN0IGVudGl0aWVzV2l0aEZrID0gZW50aXRpZXMuZmlsdGVyKFxuICAgICAgKGVudGl0eSkgPT4gdGhpcy5nZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHkpLmxlbmd0aCA+IDAsXG4gICAgKTtcbiAgICBjb25zdCBma01ldGFkYXRhTGluZXMgPSBlbnRpdGllc1dpdGhGay5tYXAoXG4gICAgICAoZW50aXR5KSA9PiBgJHtlbnRpdHkudGFibGV9OiAke2VudGl0eS5pZH1Gb3JlaWduS2V5cztgLFxuICAgICk7XG5cbiAgICAvLyBDb250ZXh0RXh0ZW5kIC0gYXV0aCDshKTsoJXsnbQg7J6I7J2EIOuVjOunjCB1c2VyIO2DgOyehSDstpTqsIBcbiAgICBjb25zdCBjb250ZXh0RXh0ZW5kTGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuaGFzQXV0aENvbmZpZygpKSB7XG4gICAgICBjb250ZXh0RXh0ZW5kTGluZXMucHVzaChcbiAgICAgICAgYGAsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dEV4dGVuZCB7YCxcbiAgICAgICAgYCAgICB1c2VyOiBTb25hbXVVc2VyIHwgbnVsbDtgLFxuICAgICAgICBgICB9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgRGF0YWJhc2VTY2hlbWFgLFxuICAgICAgbGluZXM6IFtcbiAgICAgICAgYGRlY2xhcmUgbW9kdWxlIFwic29uYW11XCIge2AsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VTY2hlbWFFeHRlbmQge2AsXG4gICAgICAgIC4uLmVudGl0eVNjaGVtYUxpbmVzLFxuICAgICAgICAuLi5qb2luVGFibGVzLm1hcCgoam9pblRhYmxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbUVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGpvaW5UYWJsZS5mcm9tRW50aXR5SWQpO1xuICAgICAgICAgIGNvbnN0IHRvRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoam9pblRhYmxlLnRvRW50aXR5SWQpO1xuICAgICAgICAgIGNvbnN0IGZyb21Qa1R5cGUgPSBmcm9tRW50aXR5LmdldFBrVHlwZSgpID09PSBcImludGVnZXJcIiA/IFwibnVtYmVyXCIgOiBcInN0cmluZ1wiO1xuICAgICAgICAgIGNvbnN0IHRvUGtUeXBlID0gdG9FbnRpdHkuZ2V0UGtUeXBlKCkgPT09IFwiaW50ZWdlclwiID8gXCJudW1iZXJcIiA6IFwic3RyaW5nXCI7XG5cbiAgICAgICAgICByZXR1cm4gYCR7am9pblRhYmxlLnRhYmxlfTogTWFueVRvTWFueUJhc2VTY2hlbWE8XCIke2pvaW5UYWJsZS5mcm9tVGFibGVLZXl9XCIsIFwiJHtqb2luVGFibGUudG9UYWJsZUtleX1cIiwgJHtmcm9tUGtUeXBlfSwgJHt0b1BrVHlwZX0+O2A7XG4gICAgICAgIH0pLFxuICAgICAgICBgICB9YCxcbiAgICAgICAgYGAsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7YCxcbiAgICAgICAgLi4uZmtNZXRhZGF0YUxpbmVzLFxuICAgICAgICBgICB9YCxcbiAgICAgICAgLi4uY29udGV4dEV4dGVuZExpbmVzLFxuICAgICAgICBgfWAsXG4gICAgICBdLFxuICAgICAgaW1wb3J0S2V5czogZW50aXRpZXMubWFwKChlbnRpdHkpID0+IGAke2VudGl0eS5pZH1CYXNlU2NoZW1hYCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIEZLIOq0gOqzhOulvCDsu6zrn7zrqoXsnLzroZwg67OA7ZmYICjsmIg6IGNvbXBhbnkg4oaSIGNvbXBhbnlfaWQpXG4gIHByaXZhdGUgZ2V0Rm9yZWlnbktleUNvbHVtbnMoZW50aXR5OiBFbnRpdHkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4ge1xuICAgICAgICBpZiAoaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLm1hcCgocHJvcCkgPT4gYCR7cHJvcC5uYW1lfV9pZGApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGb3JlaWduS2V5VHlwZVNvdXJjZUNvZGUoZW50aXRpZXM6IEVudGl0eVtdKTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIGlmIChlbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEZL6rCAIOyeiOuKlCDsl5Tti7Dti7Drp4wg7YOA7J6FIOyDneyEsVxuICAgIGNvbnN0IGVudGl0aWVzV2l0aEZrID0gZW50aXRpZXMuZmlsdGVyKFxuICAgICAgKGVudGl0eSkgPT4gdGhpcy5nZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHkpLmxlbmd0aCA+IDAsXG4gICAgKTtcblxuICAgIGlmIChlbnRpdGllc1dpdGhGay5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZrVHlwZUxpbmVzID0gZW50aXRpZXNXaXRoRmsubWFwKChlbnRpdHkpID0+IHtcbiAgICAgIGNvbnN0IGZrQ29sdW1ucyA9IHRoaXMuZ2V0Rm9yZWlnbktleUNvbHVtbnMoZW50aXR5KTtcbiAgICAgIGNvbnN0IGZrVHlwZVZhbHVlID0gZmtDb2x1bW5zLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApLmpvaW4oXCIgfCBcIik7XG5cbiAgICAgIHJldHVybiBgZXhwb3J0IHR5cGUgJHtlbnRpdHkuaWR9Rm9yZWlnbktleXMgPSAke2ZrVHlwZVZhbHVlfTtgO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgRm9yZWlnbktleSBUeXBlc2AsXG4gICAgICBsaW5lczogZmtUeXBlTGluZXMsXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIHNvbmFtdS5jb25maWcudHPsnZggYXV0aC51c2VyLmFkZGl0aW9uYWxGaWVsZHPsl5DshJwgU29uYW11VXNlciDtg4DsnoXsnYQg7IOd7ISx7ZWp64uI64ukLlxuICAgKiBAcmV0dXJucyBTb3VyY2VDb2RlIHwgbnVsbCAtIGF1dGgg7ISk7KCV7J20IOyXhuycvOuptCBudWxsIOuwmO2ZmFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBdXRoVXNlclR5cGVTb3VyY2VDb2RlKCk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBjb25zdCBhdXRoQ29uZmlnID0gU29uYW11LmNvbmZpZy5zZXJ2ZXI/LmF1dGg7XG4gICAgaWYgKCFhdXRoQ29uZmlnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSBhZGRpdGlvbmFsRmllbGRzIO2DgOyeheydtCDrj5nsoIHsnoRcbiAgICBjb25zdCBhZGRpdGlvbmFsRmllbGRzID1cbiAgICAgIC8qIFNBRkVUWTogYmV0dGVyLWF1dGgg7ISk7KCV7J2YIHVzZXIuYWRkaXRpb25hbEZpZWxkc+uKlCDrj5nsoIEg7ZWE65OcIOunteydtOuLpC4gKi8gKGF1dGhDb25maWcgYXMgYW55KVxuICAgICAgICA/LnVzZXI/LmFkZGl0aW9uYWxGaWVsZHM7XG4gICAgaWYgKCFhZGRpdGlvbmFsRmllbGRzIHx8IE9iamVjdC5rZXlzKGFkZGl0aW9uYWxGaWVsZHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gYWRkaXRpb25hbEZpZWxkc+qwgCDsl4bsnLzrqbQg6riw67O4IFVzZXIg7YOA7J6F66eMIOyCrOyaqVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IFwiQXV0aCBVc2VyIFR5cGVcIixcbiAgICAgICAgbGluZXM6IFtcImV4cG9ydCB0eXBlIFNvbmFtdVVzZXIgPSBVc2VyO1wiXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGltcG9ydEtleXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBhZGRpdGlvbmFsRmllbGRz66W8IFR5cGVTY3JpcHQg7YOA7J6F7Jy866GcIOuzgO2ZmFxuICAgIGNvbnN0IGZpZWxkTGluZXMgPSBPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsRmllbGRzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gYmV0dGVyLWF1dGggYWRkaXRpb25hbEZpZWxkcyDqtazsobBcbiAgICAgIGNvbnN0IGZpZWxkQ29uZmlnID1cbiAgICAgICAgLyogU0FGRVRZOiBhZGRpdGlvbmFsRmllbGRz7J2YIOqwgSDqsJLsnYAgYmV0dGVyLWF1dGgg7ZWE65OcIOyEpOyglSDqsJ3ssrTsnbTri6QuICovIHZhbHVlIGFzIGFueTtcbiAgICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBmaWVsZENvbmZpZy5yZXF1aXJlZCAhPT0gZmFsc2U7XG5cbiAgICAgIGxldCBmaWVsZFR5cGU6IHN0cmluZztcblxuICAgICAgLy8gc29uYW11VHlwZeydtCDsnojsnLzrqbQgZGVzY3JpcHRpb27snYQg7YOA7J6F66qF7Jy866GcIOyCrOyaqVxuICAgICAgaWYgKGZpZWxkQ29uZmlnLnNvbmFtdVR5cGUpIHtcbiAgICAgICAgZmllbGRUeXBlID0gZmllbGRDb25maWcuc29uYW11VHlwZTtcbiAgICAgICAgaW1wb3J0S2V5cy5wdXNoKGZpZWxkVHlwZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZFR5cGUgPSBtYXBCZXR0ZXJBdXRoRmllbGRUeXBlKGZpZWxkQ29uZmlnLnR5cGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCAgJHtrZXl9JHtpc1JlcXVpcmVkID8gXCJcIiA6IFwiP1wifTogJHtmaWVsZFR5cGV9O2A7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IFwiQXV0aCBVc2VyIFR5cGVcIixcbiAgICAgIGxpbmVzOiBbXCJleHBvcnQgdHlwZSBTb25hbXVVc2VyID0gVXNlciAmIHtcIiwgLi4uZmllbGRMaW5lcywgXCJ9O1wiXSxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhdXRoIOyEpOygleydtCDsnojripTsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgKi9cbiAgcHJpdmF0ZSBoYXNBdXRoQ29uZmlnKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIVNvbmFtdS5jb25maWcuc2VydmVyPy5hdXRoO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztTQUtrQztvQkFFeUI7V0FLakM7Y0FDWTs7OztBQU10QyxTQUFTLHVCQUF1QixNQUFzQjtDQUNwRCxRQUFRLE1BQVI7RUFDRSxLQUFLLFVBQ0gsT0FBTztFQUNULEtBQUssVUFDSCxPQUFPO0VBQ1QsS0FBSyxXQUNILE9BQU87RUFDVCxLQUFLLFFBQ0gsT0FBTztFQUNULEtBQUssWUFDSCxPQUFPO0VBQ1QsS0FBSyxZQUNILE9BQU87RUFDVCxTQUNFLE9BQU87Q0FDWDtBQUNGO0FBRUEsSUFBYSwwQkFBYixjQUE2QyxTQUFTO0NBQ3BELGNBQWM7RUFDWixNQUFNLGVBQWU7Q0FDdkI7Q0FFQSxtQkFBbUI7RUFDakIsTUFBTSxFQUFFLFFBQVEsT0FBTyxPQUFPO0VBRTlCLE9BQU87R0FDTCxRQUFRLEdBQUcsSUFBSTtHQUNmLE1BQU07RUFDUjtDQUNGO0NBRUEsU0FBUztFQUVQLE1BQU0sV0FEWSxjQUFjLFVBQ2YsQ0FBQSxDQUFVLEtBQUssT0FBTyxjQUFjLElBQUksRUFBRSxDQUFDO0VBUTVELE1BQU0sY0FMaUIsU0FBUyxRQUM3QixXQUFXLE9BQU8sYUFBYSxVQUFhLE9BQU8sS0FBSyxPQUFPLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FJbEQsQ0FBQSxDQUFlLFNBQVMsV0FBVztHQUNuRSxNQUFNLGFBQWEsT0FBTyxLQUFLLE9BQU8sT0FBTztHQUU3QyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sTUFBTSxPQUFPO0dBQ2pELE1BQU0sa0JBQWtCLFdBQVcsU0FBUyxPQUFPLElB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
|
|
218
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkX3Nzby50ZW1wbGF0ZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVtcGxhdGUvaW1wbGVtZW50YXRpb25zL2dlbmVyYXRlZF9zc28udGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5cbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHtcbiAgaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AsXG4gIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCxcbiAgaXNPbmVUb09uZVJlbGF0aW9uUHJvcCxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgdHlwZSBTb3VyY2VDb2RlIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLnRlbXBsYXRlXCI7XG5cbi8qKlxuICogYmV0dGVyLWF1dGggYWRkaXRpb25hbEZpZWxkc+ydmCB0eXBlIOqwkuydhCBUeXBlU2NyaXB0IO2DgOyehSDrrLjsnpDsl7TroZwg67OA7ZmY7ZWp64uI64ukLlxuICovXG5mdW5jdGlvbiBtYXBCZXR0ZXJBdXRoRmllbGRUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiBcIm51bWJlclwiO1xuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgY2FzZSBcImRhdGVcIjpcbiAgICAgIHJldHVybiBcIkRhdGVcIjtcbiAgICBjYXNlIFwic3RyaW5nW11cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1tdXCI7XG4gICAgY2FzZSBcIm51bWJlcltdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJbXVwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWRfc3NvIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImdlbmVyYXRlZF9zc29cIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLnNzby50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgIGNvbnN0IGVudGl0aWVzID0gZW50aXR5SWRzLm1hcCgoaWQpID0+IEVudGl0eU1hbmFnZXIuZ2V0KGlkKSk7XG5cbiAgICAvLyBTdWJzZXRRdWVyaWVzIOyDneyEsSDrjIDsg4E6IOu2gOuqqCDsl5Tti7Dti7DqsIAg7JeG6rOgIOyEnOu4jOyFi+ydtCDsobTsnqxcbiAgICBjb25zdCB0YXJnZXRFbnRpdGllcyA9IGVudGl0aWVzLmZpbHRlcihcbiAgICAgIChlbnRpdHkpID0+IGVudGl0eS5wYXJlbnRJZCA9PT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKS5sZW5ndGggPiAwLFxuICAgICk7XG5cbiAgICAvLyBTdWJzZXRRdWVyaWVzIOyDneyEsVxuICAgIGNvbnN0IHNvdXJjZUNvZGVzOiBTb3VyY2VDb2RlW10gPSB0YXJnZXRFbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+IHtcbiAgICAgIGNvbnN0IHN1YnNldEtleXMgPSBPYmplY3Qua2V5cyhlbnRpdHkuc3Vic2V0cyk7XG5cbiAgICAgIGNvbnN0IHN1YnNldEtleVR5cGVOYW1lID0gYCR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRLZXlgO1xuICAgICAgY29uc3QgZW50aXR5Q2FtZWxOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShlbnRpdHkuaWQsIHRydWUpO1xuXG4gICAgICAvLyBQdXJpIOq4sOuwmCBTdWJzZXRRdWVyeVxuICAgICAgY29uc3QgcHVyaVN1YnNldFF1ZXJ5OiBTb3VyY2VDb2RlID0ge1xuICAgICAgICBsYWJlbDogYFN1YnNldFF1ZXJ5OiAke2VudGl0eS5pZH1gLFxuICAgICAgICBsaW5lczogW1xuICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnRpdHlDYW1lbE5hbWV9U3Vic2V0UXVlcmllcyA9IHtgLFxuICAgICAgICAgIC4uLnN1YnNldEtleXMubWFwKFxuICAgICAgICAgICAgKHN1YnNldEtleSkgPT4gYCR7c3Vic2V0S2V5fTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgICAgICAgICAke2VudGl0eS5nZXRQdXJpU3Vic2V0UXVlcnkoc3Vic2V0S2V5KX07XG4gICAgICAgICAgfSxgLFxuICAgICAgICAgICksXG4gICAgICAgICAgYH07YCxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICBdLFxuICAgICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFB1cmkg6riw67CYIFN1YnNldExvYWRlcnNRdWVyeVxuICAgICAgY29uc3QgcHVyaUxvYWRlclF1ZXJ5OiBTb3VyY2VDb2RlID0ge1xuICAgICAgICBsYWJlbDogYExvYWRlclF1ZXJ5OiAke2VudGl0eS5pZH1gLFxuICAgICAgICBsaW5lczogW1xuICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnRpdHlDYW1lbE5hbWV9TG9hZGVyUXVlcmllcyA9IHtgLFxuICAgICAgICAgIC4uLnN1YnNldEtleXMubWFwKChzdWJzZXRLZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgJHtzdWJzZXRLZXl9OiAke2VudGl0eS5nZXRQdXJpTG9hZGVyUXVlcnkoc3Vic2V0S2V5KX0sYDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBgfSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8JHtzdWJzZXRLZXlUeXBlTmFtZX0+O2AsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgaW1wb3J0S2V5czogW3N1YnNldEtleVR5cGVOYW1lXSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBbcHVyaVN1YnNldFF1ZXJ5LCBwdXJpTG9hZGVyUXVlcnldO1xuICAgIH0pO1xuXG4gICAgLy8gRm9yZWlnbktleSDtg4DsnoUg7IOd7ISxXG4gICAgY29uc3QgZmtUeXBlU291cmNlQ29kZSA9IHRoaXMuZ2V0Rm9yZWlnbktleVR5cGVTb3VyY2VDb2RlKGVudGl0aWVzKTtcbiAgICBpZiAoZmtUeXBlU291cmNlQ29kZSkge1xuICAgICAgc291cmNlQ29kZXMucHVzaChma1R5cGVTb3VyY2VDb2RlKTtcbiAgICB9XG5cbiAgICAvLyBEYXRhYmFzZVNjaGVtYSDsg53shLFcbiAgICBjb25zdCBkYlNjaGVtYVNvdXJjZUNvZGUgPSB0aGlzLmdldERhdGFiYXNlU2NoZW1hU291cmNlQ29kZShlbnRpdGllcyk7XG4gICAgaWYgKGRiU2NoZW1hU291cmNlQ29kZSkge1xuICAgICAgc291cmNlQ29kZXMucHVzaChkYlNjaGVtYVNvdXJjZUNvZGUpO1xuICAgIH1cblxuICAgIC8vIEF1dGggVXNlciDtg4DsnoUg7IOd7ISxXG4gICAgY29uc3QgYXV0aFVzZXJUeXBlU291cmNlQ29kZSA9IHRoaXMuZ2V0QXV0aFVzZXJUeXBlU291cmNlQ29kZSgpO1xuICAgIGlmIChhdXRoVXNlclR5cGVTb3VyY2VDb2RlKSB7XG4gICAgICBzb3VyY2VDb2Rlcy5wdXNoKGF1dGhVc2VyVHlwZVNvdXJjZUNvZGUpO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBzb3VyY2VDb2Rlcy5yZWR1Y2UoXG4gICAgICAocmVzdWx0LCB0cykgPT4ge1xuICAgICAgICBpZiAodHMgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGFzc2VydChyZXN1bHQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmVzOiBbLi4ucmVzdWx0LmxpbmVzLCBgLy8gJHt0cy5sYWJlbH1gLCAuLi50cy5saW5lcywgXCJcIl0sXG4gICAgICAgICAgaW1wb3J0S2V5czogdW5pcXVlKFsuLi5yZXN1bHQuaW1wb3J0S2V5cywgLi4udHMuaW1wb3J0S2V5c10pLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIC8qIFNBRkVUWTogcmVkdWNlIOuIhOyCsOq4sOuKlCBsYWJlbOydhCDsoJzsmbjtlZwgU291cmNlQ29kZeydmCDrkZAg67Cw7Je066GcIOy0iOq4sO2ZlOuQnOuLpC4gKi8ge1xuICAgICAgICBsaW5lczogW10sXG4gICAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgfSBhcyBPbWl0PFNvdXJjZUNvZGUsIFwibGFiZWxcIj4sXG4gICAgKTtcblxuICAgIGNvbnN0IGJvZHkgPSBzb3VyY2VDb2RlLmxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgY29uc3QgaXNVc2luZ01hbnlUb01hbnlCYXNlU2NoZW1hID0gYm9keS5pbmNsdWRlcyhcIk1hbnlUb01hbnlCYXNlU2NoZW1hXCIpO1xuXG4gICAgY29uc3Qgc29uYW11SW1wb3J0cyA9IFtcbiAgICAgIFwiUHVyaVdyYXBwZXJcIixcbiAgICAgIFwiRGF0YWJhc2VTY2hlbWFFeHRlbmRcIixcbiAgICAgIFwiUHVyaUxvYWRlclF1ZXJpZXNcIixcbiAgICAgIGlzVXNpbmdNYW55VG9NYW55QmFzZVNjaGVtYSA/IFwiTWFueVRvTWFueUJhc2VTY2hlbWFcIiA6IFwiXCIsXG4gICAgXVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oXCIsIFwiKTtcblxuICAgIC8vIGN1c3RvbUhlYWRlcnMg6rWs7ISxXG4gICAgY29uc3QgY3VzdG9tSGVhZGVycyA9IFtcbiAgICAgIFwiLyoqXCIsXG4gICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgIFwiICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXCIsXG4gICAgICBcIiAqL1wiLFxuICAgICAgXCIvLyBTb25hbXUg7IOd7ISxIOy9lOuTnOydmCDtg4DsnoUg6rOE7JW97J2EIOycoOyngO2VmOq4sCDsnITtlbQgYW50aS1zbG9wIOqygOyCrOunjCDsoJzsmbjtlanri4jri6QuXCIsXG4gICAgICBcIi8qIG94bGludC1kaXNhYmxlIGFudGktc2xvcC9uby1jaGFpbmVkLXR5cGUtYXNzZXJ0aW9ucywgYW50aS1zbG9wL25vLWNvbmRpdGlvbmFsLWVtcHR5LW9iamVjdC1zcHJlYWQsIGFudGktc2xvcC9uby1rbm93bi12YWx1ZS13aWRlbmluZywgYW50aS1zbG9wL25vLW1vZHVsZS1tb2NraW5nLCBhbnRpLXNsb3Avbm8tb2JqZWN0LXBhcmFtZXRlcnMsIGFudGktc2xvcC9uby1yZWZsZWN0LWFwcGx5LCBhbnRpLXNsb3Avbm8tcmVmbGVjdC1nZXQsIGFudGktc2xvcC9uby1ydW50aW1lLXR5cGVvZiwgYW50aS1zbG9wL25vLXNoYXBlLWluLXN5bWJvbC1uYW1lcywgYW50aS1zbG9wL25vLXVua25vd24tcGFyYW1ldGVycywgYW50aS1zbG9wL25vLXVua25vd24tcmV0dXJucywgYW50aS1zbG9wL25vLXVua25vd24tdHlwZS1hbGlhc2VzLCBhbnRpLXNsb3Avbm8tdW5zYWZlLWRpY3Rpb25hcnktdHlwZSwgYW50aS1zbG9wL25vLXdpZGVuLXRoZW4tYXNzZXJ0LCBhbnRpLXNsb3AvcmVxdWlyZS1zYWZldHktY29tbWVudC1mb3ItdHlwZS1hc3NlcnRpb24gKi9cIixcbiAgICAgIFwiXCIsXG4gICAgICBgaW1wb3J0IHsgJHtzb25hbXVJbXBvcnRzfSB9IGZyb20gXCJzb25hbXVcIjtgLFxuICAgIF07XG4gICAgaWYgKHRoaXMuaGFzQXV0aENvbmZpZygpKSB7XG4gICAgICBjdXN0b21IZWFkZXJzLnB1c2goYGltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gXCJiZXR0ZXItYXV0aFwiO2ApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHk6IHNvdXJjZUNvZGUubGluZXMuam9pbihcIlxcblwiKSxcbiAgICAgIGltcG9ydEtleXM6IHNvdXJjZUNvZGUuaW1wb3J0S2V5cyxcbiAgICAgIGN1c3RvbUhlYWRlcnMsXG4gICAgfTtcbiAgfVxuXG4gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gcHJpdmF0ZSBIZWxwZXIgTWV0aG9kc1xuICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHByaXZhdGUgZ2V0RGF0YWJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0aWVzOiBFbnRpdHlbXSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoZW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBEYXRhYmFzZVNjaGVtYUV4dGVuZCAtIO2FjOydtOu4lCDsiqTtgqTrp4gg7YOA7J6FIOygleydmFxuICAgIGNvbnN0IGVudGl0eVNjaGVtYUxpbmVzID0gZW50aXRpZXMubWFwKChlbnRpdHkpID0+IGAke2VudGl0eS50YWJsZX06ICR7ZW50aXR5LmlkfUJhc2VTY2hlbWE7YCk7XG5cbiAgICBjb25zdCBqb2luVGFibGVzID0gdW5pcXVlKFxuICAgICAgZW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PlxuICAgICAgICBlbnRpdHkucHJvcHMuZmlsdGVyKGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCkubWFwKChwcm9wKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbVRhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZShlbnRpdHkudGFibGUpO1xuICAgICAgICAgIGNvbnN0IHRvRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKTtcbiAgICAgICAgICBjb25zdCB0b1RhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0b0VudGl0eS50YWJsZSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wLmpvaW5UYWJsZSxcbiAgICAgICAgICAgIGZyb21UYWJsZUtleSxcbiAgICAgICAgICAgIHRvVGFibGVLZXksXG4gICAgICAgICAgICBmcm9tRW50aXR5SWQ6IGVudGl0eS5pZCxcbiAgICAgICAgICAgIHRvRW50aXR5SWQ6IHRvRW50aXR5LmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIChqb2luVGFibGUpID0+IGpvaW5UYWJsZS50YWJsZSxcbiAgICApO1xuXG4gICAgLy8gRGF0YWJhc2VGb3JlaWduS2V5cyAtIEZLIOy7rOufvOydhCDqsIDsp4Qg7YWM7J2067iU66eMIOygleydmFxuICAgIGNvbnN0IGVudGl0aWVzV2l0aEZrID0gZW50aXRpZXMuZmlsdGVyKFxuICAgICAgKGVudGl0eSkgPT4gdGhpcy5nZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHkpLmxlbmd0aCA+IDAsXG4gICAgKTtcbiAgICBjb25zdCBma01ldGFkYXRhTGluZXMgPSBlbnRpdGllc1dpdGhGay5tYXAoXG4gICAgICAoZW50aXR5KSA9PiBgJHtlbnRpdHkudGFibGV9OiAke2VudGl0eS5pZH1Gb3JlaWduS2V5cztgLFxuICAgICk7XG5cbiAgICAvLyBDb250ZXh0RXh0ZW5kIC0gYXV0aCDshKTsoJXsnbQg7J6I7J2EIOuVjOunjCB1c2VyIO2DgOyehSDstpTqsIBcbiAgICBjb25zdCBjb250ZXh0RXh0ZW5kTGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuaGFzQXV0aENvbmZpZygpKSB7XG4gICAgICBjb250ZXh0RXh0ZW5kTGluZXMucHVzaChcbiAgICAgICAgYGAsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dEV4dGVuZCB7YCxcbiAgICAgICAgYCAgICB1c2VyOiBTb25hbXVVc2VyIHwgbnVsbDtgLFxuICAgICAgICBgICB9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgRGF0YWJhc2VTY2hlbWFgLFxuICAgICAgbGluZXM6IFtcbiAgICAgICAgYGRlY2xhcmUgbW9kdWxlIFwic29uYW11XCIge2AsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VTY2hlbWFFeHRlbmQge2AsXG4gICAgICAgIC4uLmVudGl0eVNjaGVtYUxpbmVzLFxuICAgICAgICAuLi5qb2luVGFibGVzLm1hcCgoam9pblRhYmxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbUVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGpvaW5UYWJsZS5mcm9tRW50aXR5SWQpO1xuICAgICAgICAgIGNvbnN0IHRvRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoam9pblRhYmxlLnRvRW50aXR5SWQpO1xuICAgICAgICAgIGNvbnN0IGZyb21Qa1R5cGUgPSBmcm9tRW50aXR5LmdldFBrVHlwZSgpID09PSBcImludGVnZXJcIiA/IFwibnVtYmVyXCIgOiBcInN0cmluZ1wiO1xuICAgICAgICAgIGNvbnN0IHRvUGtUeXBlID0gdG9FbnRpdHkuZ2V0UGtUeXBlKCkgPT09IFwiaW50ZWdlclwiID8gXCJudW1iZXJcIiA6IFwic3RyaW5nXCI7XG5cbiAgICAgICAgICByZXR1cm4gYCR7am9pblRhYmxlLnRhYmxlfTogTWFueVRvTWFueUJhc2VTY2hlbWE8XCIke2pvaW5UYWJsZS5mcm9tVGFibGVLZXl9XCIsIFwiJHtqb2luVGFibGUudG9UYWJsZUtleX1cIiwgJHtmcm9tUGtUeXBlfSwgJHt0b1BrVHlwZX0+O2A7XG4gICAgICAgIH0pLFxuICAgICAgICBgICB9YCxcbiAgICAgICAgYGAsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7YCxcbiAgICAgICAgLi4uZmtNZXRhZGF0YUxpbmVzLFxuICAgICAgICBgICB9YCxcbiAgICAgICAgLi4uY29udGV4dEV4dGVuZExpbmVzLFxuICAgICAgICBgfWAsXG4gICAgICBdLFxuICAgICAgaW1wb3J0S2V5czogZW50aXRpZXMubWFwKChlbnRpdHkpID0+IGAke2VudGl0eS5pZH1CYXNlU2NoZW1hYCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIEZLIOq0gOqzhOulvCDsu6zrn7zrqoXsnLzroZwg67OA7ZmYICjsmIg6IGNvbXBhbnkg4oaSIGNvbXBhbnlfaWQpXG4gIHByaXZhdGUgZ2V0Rm9yZWlnbktleUNvbHVtbnMoZW50aXR5OiBFbnRpdHkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4ge1xuICAgICAgICBpZiAoaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLm1hcCgocHJvcCkgPT4gYCR7cHJvcC5uYW1lfV9pZGApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGb3JlaWduS2V5VHlwZVNvdXJjZUNvZGUoZW50aXRpZXM6IEVudGl0eVtdKTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIGlmIChlbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEZL6rCAIOyeiOuKlCDsl5Tti7Dti7Drp4wg7YOA7J6FIOyDneyEsVxuICAgIGNvbnN0IGVudGl0aWVzV2l0aEZrID0gZW50aXRpZXMuZmlsdGVyKFxuICAgICAgKGVudGl0eSkgPT4gdGhpcy5nZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHkpLmxlbmd0aCA+IDAsXG4gICAgKTtcblxuICAgIGlmIChlbnRpdGllc1dpdGhGay5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZrVHlwZUxpbmVzID0gZW50aXRpZXNXaXRoRmsubWFwKChlbnRpdHkpID0+IHtcbiAgICAgIGNvbnN0IGZrQ29sdW1ucyA9IHRoaXMuZ2V0Rm9yZWlnbktleUNvbHVtbnMoZW50aXR5KTtcbiAgICAgIGNvbnN0IGZrVHlwZVZhbHVlID0gZmtDb2x1bW5zLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApLmpvaW4oXCIgfCBcIik7XG5cbiAgICAgIHJldHVybiBgZXhwb3J0IHR5cGUgJHtlbnRpdHkuaWR9Rm9yZWlnbktleXMgPSAke2ZrVHlwZVZhbHVlfTtgO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgRm9yZWlnbktleSBUeXBlc2AsXG4gICAgICBsaW5lczogZmtUeXBlTGluZXMsXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIHNvbmFtdS5jb25maWcudHPsnZggYXV0aC51c2VyLmFkZGl0aW9uYWxGaWVsZHPsl5DshJwgU29uYW11VXNlciDtg4DsnoXsnYQg7IOd7ISx7ZWp64uI64ukLlxuICAgKiBAcmV0dXJucyBTb3VyY2VDb2RlIHwgbnVsbCAtIGF1dGgg7ISk7KCV7J20IOyXhuycvOuptCBudWxsIOuwmO2ZmFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBdXRoVXNlclR5cGVTb3VyY2VDb2RlKCk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBjb25zdCBhdXRoQ29uZmlnID0gU29uYW11LmNvbmZpZy5zZXJ2ZXI/LmF1dGg7XG4gICAgaWYgKCFhdXRoQ29uZmlnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSBhZGRpdGlvbmFsRmllbGRzIO2DgOyeheydtCDrj5nsoIHsnoRcbiAgICBjb25zdCBhZGRpdGlvbmFsRmllbGRzID1cbiAgICAgIC8qIFNBRkVUWTogYmV0dGVyLWF1dGgg7ISk7KCV7J2YIHVzZXIuYWRkaXRpb25hbEZpZWxkc+uKlCDrj5nsoIEg7ZWE65OcIOunteydtOuLpC4gKi8gKGF1dGhDb25maWcgYXMgYW55KVxuICAgICAgICA/LnVzZXI/LmFkZGl0aW9uYWxGaWVsZHM7XG4gICAgaWYgKCFhZGRpdGlvbmFsRmllbGRzIHx8IE9iamVjdC5rZXlzKGFkZGl0aW9uYWxGaWVsZHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gYWRkaXRpb25hbEZpZWxkc+qwgCDsl4bsnLzrqbQg6riw67O4IFVzZXIg7YOA7J6F66eMIOyCrOyaqVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IFwiQXV0aCBVc2VyIFR5cGVcIixcbiAgICAgICAgbGluZXM6IFtcImV4cG9ydCB0eXBlIFNvbmFtdVVzZXIgPSBVc2VyO1wiXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGltcG9ydEtleXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBhZGRpdGlvbmFsRmllbGRz66W8IFR5cGVTY3JpcHQg7YOA7J6F7Jy866GcIOuzgO2ZmFxuICAgIGNvbnN0IGZpZWxkTGluZXMgPSBPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsRmllbGRzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gYmV0dGVyLWF1dGggYWRkaXRpb25hbEZpZWxkcyDqtazsobBcbiAgICAgIGNvbnN0IGZpZWxkQ29uZmlnID1cbiAgICAgICAgLyogU0FGRVRZOiBhZGRpdGlvbmFsRmllbGRz7J2YIOqwgSDqsJLsnYAgYmV0dGVyLWF1dGgg7ZWE65OcIOyEpOyglSDqsJ3ssrTsnbTri6QuICovIHZhbHVlIGFzIGFueTtcbiAgICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBmaWVsZENvbmZpZy5yZXF1aXJlZCAhPT0gZmFsc2U7XG5cbiAgICAgIGxldCBmaWVsZFR5cGU6IHN0cmluZztcblxuICAgICAgLy8gc29uYW11VHlwZeydtCDsnojsnLzrqbQgZGVzY3JpcHRpb27snYQg7YOA7J6F66qF7Jy866GcIOyCrOyaqVxuICAgICAgaWYgKGZpZWxkQ29uZmlnLnNvbmFtdVR5cGUpIHtcbiAgICAgICAgZmllbGRUeXBlID0gZmllbGRDb25maWcuc29uYW11VHlwZTtcbiAgICAgICAgaW1wb3J0S2V5cy5wdXNoKGZpZWxkVHlwZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZFR5cGUgPSBtYXBCZXR0ZXJBdXRoRmllbGRUeXBlKGZpZWxkQ29uZmlnLnR5cGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCAgJHtrZXl9JHtpc1JlcXVpcmVkID8gXCJcIiA6IFwiP1wifTogJHtmaWVsZFR5cGV9O2A7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IFwiQXV0aCBVc2VyIFR5cGVcIixcbiAgICAgIGxpbmVzOiBbXCJleHBvcnQgdHlwZSBTb25hbXVVc2VyID0gVXNlciAmIHtcIiwgLi4uZmllbGRMaW5lcywgXCJ9O1wiXSxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhdXRoIOyEpOygleydtCDsnojripTsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgKi9cbiAgcHJpdmF0ZSBoYXNBdXRoQ29uZmlnKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIVNvbmFtdS5jb25maWcuc2VydmVyPy5hdXRoO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUtrQyxTQUFBO0FBRXlCLG9CQUFBO0FBS2pDLFdBQUE7QUFDWSxjQUFBOzs7O0FBTXRDLFNBQVMsdUJBQXVCLE1BQXNCO0NBQ3BELFFBQVEsTUFBUjtFQUNFLEtBQUssVUFDSCxPQUFPO0VBQ1QsS0FBSyxVQUNILE9BQU87RUFDVCxLQUFLLFdBQ0gsT0FBTztFQUNULEtBQUssUUFDSCxPQUFPO0VBQ1QsS0FBSyxZQUNILE9BQU87RUFDVCxLQUFLLFlBQ0gsT0FBTztFQUNULFNBQ0UsT0FBTztDQUNYO0FBQ0Y7QUFFQSxJQUFhLDBCQUFiLGNBQTZDLFNBQVM7Q0FDcEQsY0FBYztFQUNaLE1BQU0sZUFBZTtDQUN2QjtDQUVBLG1CQUFtQjtFQUNqQixNQUFNLEVBQUUsUUFBUSxPQUFPLE9BQU87RUFFOUIsT0FBTztHQUNMLFFBQVEsR0FBRyxJQUFJO0dBQ2YsTUFBTTtFQUNSO0NBQ0Y7Q0FFQSxTQUFTO0VBRVAsTUFBTSxXQURZLGNBQWMsVUFDZixDQUFBLENBQVUsS0FBSyxPQUFPLGNBQWMsSUFBSSxFQUFFLENBQUM7RUFRNUQsTUFBTSxjQUxpQixTQUFTLFFBQzdCLFdBQVcsT0FBTyxhQUFhLFVBQWEsT0FBTyxLQUFLLE9BQU8sT0FBTyxDQUFDLENBQUMsU0FBUyxDQUlsRCxDQUFBLENBQWUsU0FBUyxXQUFXO0dBQ25FLE1BQU0sYUFBYSxPQUFPLEtBQUssT0FBTyxPQUFPO0dBRTdDLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxNQUFNLE9BQU87R0FDakQsTUFBTSxrQkFB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
|
|
@@ -2,7 +2,7 @@ import { init_runtime_value, isObjectValue, isStringValue } from "../../utils/ru
|
|
|
2
2
|
import { getHttpValidatorFingerprint, getHttpValidatorRouteIdentifier, getHttpValidatorRouteKey, init_http_validator } from "../../api/http-validator.js";
|
|
3
3
|
import { Sonamu, init_sonamu } from "../../api/sonamu.js";
|
|
4
4
|
import { Template, init_template } from "../template.js";
|
|
5
|
-
|
|
5
|
+
// src/template/implementations/http_validators.template.ts
|
|
6
6
|
init_http_validator();
|
|
7
7
|
init_sonamu();
|
|
8
8
|
init_runtime_value();
|
|
@@ -121,7 +121,6 @@ var Template__http_validators = class extends Template {
|
|
|
121
121
|
].join("\n");
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
|
-
//#endregion
|
|
125
124
|
export { Template__http_validators };
|
|
126
125
|
|
|
127
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cF92YWxpZGF0b3JzLnRlbXBsYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvaHR0cF92YWxpZGF0b3JzLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIGdldEh0dHBWYWxpZGF0b3JGaW5nZXJwcmludCxcbiAgZ2V0SHR0cFZhbGlkYXRvclJvdXRlSWRlbnRpZmllcixcbiAgZ2V0SHR0cFZhbGlkYXRvclJvdXRlS2V5LFxufSBmcm9tIFwiLi4vLi4vYXBpL2h0dHAtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgdHlwZSBBcGlQYXJhbVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGlzT2JqZWN0VmFsdWUsIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuZnVuY3Rpb24gY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0eXBlOiBBcGlQYXJhbVR5cGUsIHJlc3VsdDogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgaWYgKGlzU3RyaW5nVmFsdWUodHlwZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc3dpdGNoICh0eXBlLnQpIHtcbiAgICBjYXNlIFwicmVmXCI6XG4gICAgICByZXN1bHQuYWRkKHR5cGUuaWQpO1xuICAgICAgZm9yIChjb25zdCBhcmd1bWVudCBvZiB0eXBlLmFyZ3MgPz8gW10pIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhhcmd1bWVudCwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZS5lbGVtZW50c1R5cGUsIHJlc3VsdCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHR5cGUucHJvcHMpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhwcm9wLnR5cGUsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBcInVuaW9uXCI6XG4gICAgY2FzZSBcImludGVyc2VjdGlvblwiOlxuICAgICAgZm9yIChjb25zdCBtZW1iZXIgb2YgdHlwZS50eXBlcykge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKG1lbWJlciwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwidHVwbGUtdHlwZVwiOlxuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHR5cGUuZWxlbWVudHMpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhlbGVtZW50LCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgXCJpbmRleGVkLWFjY2Vzc1wiOlxuICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0eXBlLm9iamVjdCwgcmVzdWx0KTtcbiAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZS5pbmRleCwgcmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwidHlwZS1wYXJhbVwiOlxuICAgICAgaWYgKHR5cGUuY29uc3RyYWludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZS5jb25zdHJhaW50LCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgdHlwZS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXMocGFyYW1ldGVyLnR5cGUsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHR5cGUucmV0dXJuVHlwZSwgcmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwic3RyaW5nLWxpdGVyYWxcIjpcbiAgICBjYXNlIFwibnVtZXJpYy1saXRlcmFsXCI6XG4gICAgICByZXR1cm47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19odHRwX3ZhbGlkYXRvcnMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiaHR0cF92YWxpZGF0b3JzXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtTb25hbXUuY29uZmlnLmFwaS5kaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBcInNvbmFtdS52YWxpZGF0b3JzLmdlbmVyYXRlZC50c1wiLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgYXBpcyA9IFsuLi5Tb25hbXUuc3luY2VyLmFwaXNdXG4gICAgICAuZmlsdGVyKChhcGkpID0+IGFwaS53ZWJzb2NrZXRPcHRpb25zID09PSB1bmRlZmluZWQpXG4gICAgICAudG9Tb3J0ZWQoKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgICBnZXRIdHRwVmFsaWRhdG9yUm91dGVLZXkobGVmdCkubG9jYWxlQ29tcGFyZShnZXRIdHRwVmFsaWRhdG9yUm91dGVLZXkocmlnaHQpKSxcbiAgICAgICk7XG4gICAgY29uc3Qgcm91dGVLZXlzID0gYXBpcy5tYXAoZ2V0SHR0cFZhbGlkYXRvclJvdXRlS2V5KTtcbiAgICBjb25zdCBkdXBsaWNhdGVLZXkgPSByb3V0ZUtleXMuZmluZCgoa2V5LCBpbmRleCkgPT4gcm91dGVLZXlzLmluZGV4T2Yoa2V5KSAhPT0gaW5kZXgpO1xuICAgIGlmIChkdXBsaWNhdGVLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDspJHrs7XrkJwgSFRUUCB2YWxpZGF0b3Igcm91dGUga2V5OiAke2R1cGxpY2F0ZUtleX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5nZXJwcmludCA9IGdldEh0dHBWYWxpZGF0b3JGaW5nZXJwcmludChhcGlzKTtcbiAgICBjb25zdCBwb2xpY3kgPSBTb25hbXUuY29uZmlnLnZhbGlkYXRpb24/LnpvZENvbXBpbGVyO1xuICAgIGNvbnN0IGlzQW90ID0gaXNPYmplY3RWYWx1ZShwb2xpY3kpICYmIHBvbGljeSAhPT0gbnVsbCAmJiBwb2xpY3kuYXBpID09PSBcImFvdFwiO1xuICAgIGNvbnN0IGhhc0FvdFZhbGlkYXRvcnMgPSBpc0FvdCAmJiBhcGlzLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgcmVmZXJlbmNlZFR5cGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBhcGkgb2YgYXBpcykge1xuICAgICAgZm9yIChjb25zdCB0eXBlUGFyYW1ldGVyIG9mIGFwaS50eXBlUGFyYW1ldGVycykge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHR5cGVQYXJhbWV0ZXIsIHJlZmVyZW5jZWRUeXBlcyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHBhcmFtZXRlciBvZiBhcGkucGFyYW1ldGVycykge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHBhcmFtZXRlci50eXBlLCByZWZlcmVuY2VkVHlwZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpbXBvcnRLZXlzID0gWy4uLnJlZmVyZW5jZWRUeXBlc11cbiAgICAgIC5maWx0ZXIoKHR5cGVOYW1lKSA9PiBTb25hbXUuc3luY2VyLnR5cGVzW3R5cGVOYW1lXSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLnRvU29ydGVkKCk7XG4gICAgY29uc3QgYm9keSA9IGlzQW90XG4gICAgICA/IHRoaXMucmVuZGVyQW90UmVnaXN0cnkoYXBpcywgZmluZ2VycHJpbnQsIGltcG9ydEtleXMpXG4gICAgICA6IHRoaXMucmVuZGVyUGxhaW5TdHViKGFwaXMsIGZpbmdlcnByaW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHksXG4gICAgICBpbXBvcnRLZXlzLFxuICAgICAgY3VzdG9tSGVhZGVyczogW1xuICAgICAgICBcIi8qKlwiLFxuICAgICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgICAgXCIgKiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIixcbiAgICAgICAgXCIgKi9cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIvKiBveGxpbnQtZGlzYWJsZSAqL1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICAuLi4oaGFzQW90VmFsaWRhdG9yc1xuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBgaW1wb3J0IHsgY29tcGlsZSB9IGZyb20gXCJ6b2QtY29tcGlsZXJcIjtgLFxuICAgICAgICAgICAgICBgaW1wb3J0IHsgZmFzdGlmeUNhc3RlciwgZ2V0Wm9kT2JqZWN0RnJvbUFwaSB9IGZyb20gXCJzb25hbXVcIjtgLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW10pLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBb3RSZWdpc3RyeShcbiAgICBhcGlzOiBFeHRlbmRlZEFwaVtdLFxuICAgIGZpbmdlcnByaW50OiBzdHJpbmcsXG4gICAgaW1wb3J0S2V5czogc3RyaW5nW10sXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gYXBpcy5tYXAoKGFwaSkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpZmllciA9IGB2YWxpZGF0b3JfJHtnZXRIdHRwVmFsaWRhdG9yUm91dGVJZGVudGlmaWVyKGFwaSl9YDtcbiAgICAgIGNvbnN0IHNjaGVtYUFwaSA9IHtcbiAgICAgICAgbW9kZWxOYW1lOiBhcGkubW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lOiBhcGkubWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogYXBpLnBhdGgsXG4gICAgICAgIG9wdGlvbnM6IHsgaHR0cE1ldGhvZDogYXBpLm9wdGlvbnMuaHR0cE1ldGhvZCA/PyBcIkdFVFwiIH0sXG4gICAgICAgIHR5cGVQYXJhbWV0ZXJzOiBhcGkudHlwZVBhcmFtZXRlcnMsXG4gICAgICAgIHBhcmFtZXRlcnM6IGFwaS5wYXJhbWV0ZXJzLFxuICAgICAgICByZXR1cm5UeXBlOiBcInVua25vd25cIixcbiAgICAgIH0gc2F0aXNmaWVzIEV4dGVuZGVkQXBpO1xuICAgICAgcmV0dXJuIGBleHBvcnQgY29uc3QgJHtpZGVudGlmaWVyfSA9IGNvbXBpbGUoZmFzdGlmeUNhc3RlcihnZXRab2RPYmplY3RGcm9tQXBpKCR7SlNPTi5zdHJpbmdpZnkoc2NoZW1hQXBpKX0sIHsgLi4udHlwZXMgfSkpKTtgO1xuICAgIH0pO1xuICAgIGNvbnN0IHJvdXRlSWRzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgYXBpcy5tYXAoKGFwaSkgPT4gW2dldEh0dHBWYWxpZGF0b3JSb3V0ZUtleShhcGkpLCBnZXRIdHRwVmFsaWRhdG9yUm91dGVJZGVudGlmaWVyKGFwaSldKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIGBleHBvcnQgY29uc3QgZmluZ2VycHJpbnQgPSAke0pTT04uc3RyaW5naWZ5KGZpbmdlcnByaW50KX07YCxcbiAgICAgIGBleHBvcnQgY29uc3Qgcm91dGVJZHMgPSAke0pTT04uc3RyaW5naWZ5KHJvdXRlSWRzKX07YCxcbiAgICAgIGBjb25zdCB0eXBlcyA9IHsgJHtpbXBvcnRLZXlzLmpvaW4oXCIsIFwiKX0gfTtgLFxuICAgICAgLi4uZGVjbGFyYXRpb25zLFxuICAgICAgYGV4cG9ydCBjb25zdCB2YWxpZGF0b3JzID0gbmV3IE1hcChbYCxcbiAgICAgIC4uLmFwaXMubWFwKChhcGkpID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVLZXkgPSBnZXRIdHRwVmFsaWRhdG9yUm91dGVLZXkoYXBpKTtcbiAgICAgICAgcmV0dXJuIGAgIFske0pTT04uc3RyaW5naWZ5KHJvdXRlS2V5KX0sIHZhbGlkYXRvcl8ke2dldEh0dHBWYWxpZGF0b3JSb3V0ZUlkZW50aWZpZXIoYXBpKX1dLGA7XG4gICAgICB9KSxcbiAgICAgIGBdKTtgLFxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUGxhaW5TdHViKGFwaXM6IEV4dGVuZGVkQXBpW10sIGZpbmdlcnByaW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlSWRzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgYXBpcy5tYXAoKGFwaSkgPT4gW2dldEh0dHBWYWxpZGF0b3JSb3V0ZUtleShhcGkpLCBnZXRIdHRwVmFsaWRhdG9yUm91dGVJZGVudGlmaWVyKGFwaSldKSxcbiAgICApO1xuICAgIHJldHVybiBbXG4gICAgICBgZXhwb3J0IGNvbnN0IGZpbmdlcnByaW50ID0gJHtKU09OLnN0cmluZ2lmeShmaW5nZXJwcmludCl9O2AsXG4gICAgICBgZXhwb3J0IGNvbnN0IHJvdXRlSWRzID0gJHtKU09OLnN0cmluZ2lmeShyb3V0ZUlkcyl9O2AsXG4gICAgICBgZXhwb3J0IGNvbnN0IHZhbGlkYXRvcnMgPSBuZXcgTWFwKCk7YCxcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7b0JBS2lDO1lBQ1E7bUJBRStCO2NBQ2xDO0FBRXRDLFNBQVMsdUJBQXVCLE1BQW9CLFFBQTJCO0NBQzdFLElBQUksY0FBYyxJQUFJLEdBQ3BCO0NBRUYsUUFBUSxLQUFLLEdBQWI7RUFDRSxLQUFLO0dBQ0gsT0FBTyxJQUFJLEtBQUssRUFBRTtHQUNsQixLQUFLLE1BQU0sWUFBWSxLQUFLLFFBQVEs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
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cF92YWxpZGF0b3JzLnRlbXBsYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvaHR0cF92YWxpZGF0b3JzLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIGdldEh0dHBWYWxpZGF0b3JGaW5nZXJwcmludCxcbiAgZ2V0SHR0cFZhbGlkYXRvclJvdXRlSWRlbnRpZmllcixcbiAgZ2V0SHR0cFZhbGlkYXRvclJvdXRlS2V5LFxufSBmcm9tIFwiLi4vLi4vYXBpL2h0dHAtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgdHlwZSBBcGlQYXJhbVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGlzT2JqZWN0VmFsdWUsIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuZnVuY3Rpb24gY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0eXBlOiBBcGlQYXJhbVR5cGUsIHJlc3VsdDogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgaWYgKGlzU3RyaW5nVmFsdWUodHlwZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc3dpdGNoICh0eXBlLnQpIHtcbiAgICBjYXNlIFwicmVmXCI6XG4gICAgICByZXN1bHQuYWRkKHR5cGUuaWQpO1xuICAgICAgZm9yIChjb25zdCBhcmd1bWVudCBvZiB0eXBlLmFyZ3MgPz8gW10pIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhhcmd1bWVudCwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZS5lbGVtZW50c1R5cGUsIHJlc3VsdCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHR5cGUucHJvcHMpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhwcm9wLnR5cGUsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBcInVuaW9uXCI6XG4gICAgY2FzZSBcImludGVyc2VjdGlvblwiOlxuICAgICAgZm9yIChjb25zdCBtZW1iZXIgb2YgdHlwZS50eXBlcykge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKG1lbWJlciwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwidHVwbGUtdHlwZVwiOlxuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHR5cGUuZWxlbWVudHMpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhlbGVtZW50LCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgXCJpbmRleGVkLWFjY2Vzc1wiOlxuICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0eXBlLm9iamVjdCwgcmVzdWx0KTtcbiAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZS5pbmRleCwgcmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwidHlwZS1wYXJhbVwiOlxuICAgICAgaWYgKHR5cGUuY29uc3RyYWludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZS5jb25zdHJhaW50LCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgdHlwZS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXMocGFyYW1ldGVyLnR5cGUsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHR5cGUucmV0dXJuVHlwZSwgcmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwic3RyaW5nLWxpdGVyYWxcIjpcbiAgICBjYXNlIFwibnVtZXJpYy1saXRlcmFsXCI6XG4gICAgICByZXR1cm47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19odHRwX3ZhbGlkYXRvcnMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiaHR0cF92YWxpZGF0b3JzXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtTb25hbXUuY29uZmlnLmFwaS5kaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBcInNvbmFtdS52YWxpZGF0b3JzLmdlbmVyYXRlZC50c1wiLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgYXBpcyA9IFsuLi5Tb25hbXUuc3luY2VyLmFwaXNdXG4gICAgICAuZmlsdGVyKChhcGkpID0+IGFwaS53ZWJzb2NrZXRPcHRpb25zID09PSB1bmRlZmluZWQpXG4gICAgICAudG9Tb3J0ZWQoKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgICBnZXRIdHRwVmFsaWRhdG9yUm91dGVLZXkobGVmdCkubG9jYWxlQ29tcGFyZShnZXRIdHRwVmFsaWRhdG9yUm91dGVLZXkocmlnaHQpKSxcbiAgICAgICk7XG4gICAgY29uc3Qgcm91dGVLZXlzID0gYXBpcy5tYXAoZ2V0SHR0cFZhbGlkYXRvclJvdXRlS2V5KTtcbiAgICBjb25zdCBkdXBsaWNhdGVLZXkgPSByb3V0ZUtleXMuZmluZCgoa2V5LCBpbmRleCkgPT4gcm91dGVLZXlzLmluZGV4T2Yoa2V5KSAhPT0gaW5kZXgpO1xuICAgIGlmIChkdXBsaWNhdGVLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDspJHrs7XrkJwgSFRUUCB2YWxpZGF0b3Igcm91dGUga2V5OiAke2R1cGxpY2F0ZUtleX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5nZXJwcmludCA9IGdldEh0dHBWYWxpZGF0b3JGaW5nZXJwcmludChhcGlzKTtcbiAgICBjb25zdCBwb2xpY3kgPSBTb25hbXUuY29uZmlnLnZhbGlkYXRpb24/LnpvZENvbXBpbGVyO1xuICAgIGNvbnN0IGlzQW90ID0gaXNPYmplY3RWYWx1ZShwb2xpY3kpICYmIHBvbGljeSAhPT0gbnVsbCAmJiBwb2xpY3kuYXBpID09PSBcImFvdFwiO1xuICAgIGNvbnN0IGhhc0FvdFZhbGlkYXRvcnMgPSBpc0FvdCAmJiBhcGlzLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgcmVmZXJlbmNlZFR5cGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBhcGkgb2YgYXBpcykge1xuICAgICAgZm9yIChjb25zdCB0eXBlUGFyYW1ldGVyIG9mIGFwaS50eXBlUGFyYW1ldGVycykge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHR5cGVQYXJhbWV0ZXIsIHJlZmVyZW5jZWRUeXBlcyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHBhcmFtZXRlciBvZiBhcGkucGFyYW1ldGVycykge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHBhcmFtZXRlci50eXBlLCByZWZlcmVuY2VkVHlwZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpbXBvcnRLZXlzID0gWy4uLnJlZmVyZW5jZWRUeXBlc11cbiAgICAgIC5maWx0ZXIoKHR5cGVOYW1lKSA9PiBTb25hbXUuc3luY2VyLnR5cGVzW3R5cGVOYW1lXSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLnRvU29ydGVkKCk7XG4gICAgY29uc3QgYm9keSA9IGlzQW90XG4gICAgICA/IHRoaXMucmVuZGVyQW90UmVnaXN0cnkoYXBpcywgZmluZ2VycHJpbnQsIGltcG9ydEtleXMpXG4gICAgICA6IHRoaXMucmVuZGVyUGxhaW5TdHViKGFwaXMsIGZpbmdlcnByaW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHksXG4gICAgICBpbXBvcnRLZXlzLFxuICAgICAgY3VzdG9tSGVhZGVyczogW1xuICAgICAgICBcIi8qKlwiLFxuICAgICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgICAgXCIgKiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIixcbiAgICAgICAgXCIgKi9cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIvKiBveGxpbnQtZGlzYWJsZSAqL1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICAuLi4oaGFzQW90VmFsaWRhdG9yc1xuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBgaW1wb3J0IHsgY29tcGlsZSB9IGZyb20gXCJ6b2QtY29tcGlsZXJcIjtgLFxuICAgICAgICAgICAgICBgaW1wb3J0IHsgZmFzdGlmeUNhc3RlciwgZ2V0Wm9kT2JqZWN0RnJvbUFwaSB9IGZyb20gXCJzb25hbXVcIjtgLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW10pLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBb3RSZWdpc3RyeShcbiAgICBhcGlzOiBFeHRlbmRlZEFwaVtdLFxuICAgIGZpbmdlcnByaW50OiBzdHJpbmcsXG4gICAgaW1wb3J0S2V5czogc3RyaW5nW10sXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gYXBpcy5tYXAoKGFwaSkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpZmllciA9IGB2YWxpZGF0b3JfJHtnZXRIdHRwVmFsaWRhdG9yUm91dGVJZGVudGlmaWVyKGFwaSl9YDtcbiAgICAgIGNvbnN0IHNjaGVtYUFwaSA9IHtcbiAgICAgICAgbW9kZWxOYW1lOiBhcGkubW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lOiBhcGkubWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogYXBpLnBhdGgsXG4gICAgICAgIG9wdGlvbnM6IHsgaHR0cE1ldGhvZDogYXBpLm9wdGlvbnMuaHR0cE1ldGhvZCA/PyBcIkdFVFwiIH0sXG4gICAgICAgIHR5cGVQYXJhbWV0ZXJzOiBhcGkudHlwZVBhcmFtZXRlcnMsXG4gICAgICAgIHBhcmFtZXRlcnM6IGFwaS5wYXJhbWV0ZXJzLFxuICAgICAgICByZXR1cm5UeXBlOiBcInVua25vd25cIixcbiAgICAgIH0gc2F0aXNmaWVzIEV4dGVuZGVkQXBpO1xuICAgICAgcmV0dXJuIGBleHBvcnQgY29uc3QgJHtpZGVudGlmaWVyfSA9IGNvbXBpbGUoZmFzdGlmeUNhc3RlcihnZXRab2RPYmplY3RGcm9tQXBpKCR7SlNPTi5zdHJpbmdpZnkoc2NoZW1hQXBpKX0sIHsgLi4udHlwZXMgfSkpKTtgO1xuICAgIH0pO1xuICAgIGNvbnN0IHJvdXRlSWRzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgYXBpcy5tYXAoKGFwaSkgPT4gW2dldEh0dHBWYWxpZGF0b3JSb3V0ZUtleShhcGkpLCBnZXRIdHRwVmFsaWRhdG9yUm91dGVJZGVudGlmaWVyKGFwaSldKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIGBleHBvcnQgY29uc3QgZmluZ2VycHJpbnQgPSAke0pTT04uc3RyaW5naWZ5KGZpbmdlcnByaW50KX07YCxcbiAgICAgIGBleHBvcnQgY29uc3Qgcm91dGVJZHMgPSAke0pTT04uc3RyaW5naWZ5KHJvdXRlSWRzKX07YCxcbiAgICAgIGBjb25zdCB0eXBlcyA9IHsgJHtpbXBvcnRLZXlzLmpvaW4oXCIsIFwiKX0gfTtgLFxuICAgICAgLi4uZGVjbGFyYXRpb25zLFxuICAgICAgYGV4cG9ydCBjb25zdCB2YWxpZGF0b3JzID0gbmV3IE1hcChbYCxcbiAgICAgIC4uLmFwaXMubWFwKChhcGkpID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVLZXkgPSBnZXRIdHRwVmFsaWRhdG9yUm91dGVLZXkoYXBpKTtcbiAgICAgICAgcmV0dXJuIGAgIFske0pTT04uc3RyaW5naWZ5KHJvdXRlS2V5KX0sIHZhbGlkYXRvcl8ke2dldEh0dHBWYWxpZGF0b3JSb3V0ZUlkZW50aWZpZXIoYXBpKX1dLGA7XG4gICAgICB9KSxcbiAgICAgIGBdKTtgLFxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUGxhaW5TdHViKGFwaXM6IEV4dGVuZGVkQXBpW10sIGZpbmdlcnByaW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlSWRzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgYXBpcy5tYXAoKGFwaSkgPT4gW2dldEh0dHBWYWxpZGF0b3JSb3V0ZUtleShhcGkpLCBnZXRIdHRwVmFsaWRhdG9yUm91dGVJZGVudGlmaWVyKGFwaSldKSxcbiAgICApO1xuICAgIHJldHVybiBbXG4gICAgICBgZXhwb3J0IGNvbnN0IGZpbmdlcnByaW50ID0gJHtKU09OLnN0cmluZ2lmeShmaW5nZXJwcmludCl9O2AsXG4gICAgICBgZXhwb3J0IGNvbnN0IHJvdXRlSWRzID0gJHtKU09OLnN0cmluZ2lmeShyb3V0ZUlkcyl9O2AsXG4gICAgICBgZXhwb3J0IGNvbnN0IHZhbGlkYXRvcnMgPSBuZXcgTWFwKCk7YCxcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLaUMsb0JBQUE7QUFDUSxZQUFBO0FBRStCLG1CQUFBO0FBQ2xDLGNBQUE7QUFFdEMsU0FBUyx1QkFBdUIsTUFBb0IsUUFBMkI7Q0FDN0UsSUFBSSxjQUFjLElBQUksR0FDcEI7Q0FFRixRQUFRLEtBQUssR0FBYjtFQUNFLEtBQUs7R0FDSCxPQUFPLElBQUksS0FBSyxFQUFFO0dBQ2xCLEtBQUss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
|
|
@@ -2,7 +2,7 @@ import { Sonamu } from "../../api/sonamu.js";
|
|
|
2
2
|
import { EntityManager, init_entity_manager } from "../../entity/entity-manager.js";
|
|
3
3
|
import { init_api } from "../../api/index.js";
|
|
4
4
|
import { Template, init_template } from "../template.js";
|
|
5
|
-
|
|
5
|
+
// src/template/implementations/init_types.template.ts
|
|
6
6
|
init_api();
|
|
7
7
|
init_entity_manager();
|
|
8
8
|
init_template();
|
|
@@ -43,7 +43,6 @@ export type ${entityId}SaveParams = z.infer<typeof ${entityId}SaveParams>;
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
//#endregion
|
|
47
46
|
export { Template__init_types };
|
|
48
47
|
|
|
49
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdF90eXBlcy50ZW1wbGF0ZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVtcGxhdGUvaW1wbGVtZW50YXRpb25zL2luaXRfdHlwZXMudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19pbml0X3R5cGVzIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImluaXRfdHlwZXNcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke25hbWVzLmZzfS50eXBlcy50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkIH06IFRlbXBsYXRlT3B0aW9uc1tcImluaXRfdHlwZXNcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcblxuICAgIGNvbnN0IHBhcnRpYWxDb2x1bW5zID0gW1wiaWRcIl07XG4gICAgaWYgKGVudGl0eS5wcm9wcy5zb21lKChwcm9wKSA9PiBwcm9wLm5hbWUgPT09IFwiY3JlYXRlZF9hdFwiKSkge1xuICAgICAgcGFydGlhbENvbHVtbnMucHVzaChcImNyZWF0ZWRfYXRcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgd3JpdGVJbmVsaWdpYmxlQ29sdW1ucyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHByb3ApID0+
|
|
48
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdF90eXBlcy50ZW1wbGF0ZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVtcGxhdGUvaW1wbGVtZW50YXRpb25zL2luaXRfdHlwZXMudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19pbml0X3R5cGVzIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImluaXRfdHlwZXNcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke25hbWVzLmZzfS50eXBlcy50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkIH06IFRlbXBsYXRlT3B0aW9uc1tcImluaXRfdHlwZXNcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcblxuICAgIGNvbnN0IHBhcnRpYWxDb2x1bW5zID0gW1wiaWRcIl07XG4gICAgaWYgKGVudGl0eS5wcm9wcy5zb21lKChwcm9wKSA9PiBwcm9wLm5hbWUgPT09IFwiY3JlYXRlZF9hdFwiKSkge1xuICAgICAgcGFydGlhbENvbHVtbnMucHVzaChcImNyZWF0ZWRfYXRcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgd3JpdGVJbmVsaWdpYmxlQ29sdW1ucyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHByb3ApID0+XG4gICAgICAgICAgcHJvcC50eXBlICE9PSBcInJlbGF0aW9uXCIgJiYgKHByb3AuZ2VuZXJhdGVkICE9PSB1bmRlZmluZWQgfHwgcHJvcC50eXBlID09PSBcInNlYXJjaFRleHRcIiksXG4gICAgICApXG4gICAgICAubWFwKChwcm9wKSA9PiBwcm9wLm5hbWUpO1xuXG4gICAgY29uc3Qgb21pdEdlbmVyYXRlZENvbHVtbnMgPVxuICAgICAgd3JpdGVJbmVsaWdpYmxlQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgID8gYC5vbWl0KHsgJHt3cml0ZUluZWxpZ2libGVDb2x1bW5zLm1hcCgoY29sdW1uKSA9PiBgJHtjb2x1bW59OiB0cnVlYCkuam9pbihcIiwgXCIpfSB9KWBcbiAgICAgICAgOiBcIlwiO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcyksXG4gICAgICBib2R5OiBgXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgJHtlbnRpdHlJZH1CYXNlU2NoZW1hLCAke2VudGl0eUlkfUJhc2VMaXN0UGFyYW1zIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcblxuLy8gJHtlbnRpdHlJZH0gLSBMaXN0UGFyYW1zXG5leHBvcnQgY29uc3QgJHtlbnRpdHlJZH1MaXN0UGFyYW1zID0gJHtlbnRpdHlJZH1CYXNlTGlzdFBhcmFtcztcbmV4cG9ydCB0eXBlICR7ZW50aXR5SWR9TGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mICR7ZW50aXR5SWR9TGlzdFBhcmFtcz47XG5cbi8vICR7ZW50aXR5SWR9IC0gU2F2ZVBhcmFtc1xuZXhwb3J0IGNvbnN0ICR7ZW50aXR5SWR9U2F2ZVBhcmFtcyA9ICR7ZW50aXR5SWR9QmFzZVNjaGVtYSR7b21pdEdlbmVyYXRlZENvbHVtbnN9LnBhcnRpYWwoeyAke3BhcnRpYWxDb2x1bW5zXG4gICAgICAgIC5tYXAoKGNvbHVtbikgPT4gYCR7Y29sdW1ufTogdHJ1ZWApXG4gICAgICAgIC5qb2luKFwiLCBcIil9IH0pO1xuZXhwb3J0IHR5cGUgJHtlbnRpdHlJZH1TYXZlUGFyYW1zID0gei5pbmZlcjx0eXBlb2YgJHtlbnRpdHlJZH1TYXZlUGFyYW1zPjtcblxuICAgICAgYC50cmltKCksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDLFNBQUE7QUFDeUIsb0JBQUE7QUFHckIsY0FBQTtBQUV0QyxJQUFhLHVCQUFiLGNBQTBDLFNBQVM7Q0FDakQsY0FBYztFQUNaLE1BQU0sWUFBWTtDQUNwQjtDQUVBLGlCQUFpQixPQUEwQjtFQUN6QyxNQUFNLEVBQUUsUUFBUSxPQUFPLE9BQU87RUFFOUIsT0FBTztHQUNMLFFBQVEsR0FBRyxJQUFJO0dBQ2YsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRztFQUNoQztDQUNGO0NBRUEsT0FBTyxFQUFFLFlBQTJDO0VBQ2xELE1BQU0sUUFBUSxjQUFjLGVBQWUsUUFBUTtFQUNuRCxNQUFNLFNBQVMsY0FBYyxJQUFJLFFBQVE7RUFFekMsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJO0VBQzVCLElBQUksT0FBTyxNQUFNLE1BQU0sU0FBUyxLQUFLLFNBQVMsWUFBWSxHQUN4RCxlQUFlLEtBQUssWUFBWTtFQUdsQyxNQUFNLHlCQUF5QixPQUFPLE1BQ25DLFFBQ0UsU0FDQyxLQUFLLFNBQVMsZUFBZSxLQUFLLGNBQWMsVUFBYSxLQUFLLFNBQVMsYUFDL0UsQ0FBQyxDQUNBLEtBQUssU0FBUyxLQUFLLElBQUk7RUFFMUIsTUFBTSx1QkFDSix1QkFBdUIsU0FBUyxJQUM1QixXQUFXLHVCQUF1QixLQUFLLFdBQVcsR0FBRyxPQUFPLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLE9BQ2hGO0VBRU4sT0FBTztHQUNMLEdBQUcsS0FBSyxpQkFBaUIsS0FBSztHQUM5QixNQUFNOztXQUVELFNBQVMsY0FBYyxTQUFTOztLQUV0QyxTQUFTO2VBQ0MsU0FBUyxlQUFlLFNBQVM7Y0FDbEMsU0FBUyw4QkFBOEIsU0FBUzs7S0FFekQsU0FBUztlQUNDLFNBQVMsZUFBZSxTQUFTLFlBQVkscUJBQXFCLGFBQWEsZUFDckYsS0FBSyxXQUFXLEdBQUcsT0FBTyxPQUFPLENBQUMsQ0FDbEMsS0FBSyxJQUFJLEVBQUU7Y0FDTixTQUFTLDhCQUE4QixTQUFTOztRQUV0RCxLQUFLO0dBQ1AsWUFBWSxDQUFDO0VBQ2Y7Q0FDRjtBQUNGIn0=
|
|
@@ -5,7 +5,7 @@ import { init_api } from "../../api/index.js";
|
|
|
5
5
|
import { Template, init_template } from "../template.js";
|
|
6
6
|
import { getZodTypeById, init_zod_converter, zodTypeToRenderingNode } from "../zod-converter.js";
|
|
7
7
|
import { Template__view_list } from "./view_list.template.js";
|
|
8
|
-
|
|
8
|
+
// src/template/implementations/model.template.ts
|
|
9
9
|
init_api();
|
|
10
10
|
init_entity_manager();
|
|
11
11
|
init_naite();
|
|
@@ -27,7 +27,8 @@ var Template__model = class extends Template {
|
|
|
27
27
|
}
|
|
28
28
|
async render({ entityId }) {
|
|
29
29
|
Naite.t("render", { entityId });
|
|
30
|
-
const
|
|
30
|
+
const listParamsZodType = await getZodTypeById(`${entityId}ListParams`);
|
|
31
|
+
const listParamsNode = zodTypeToRenderingNode(listParamsZodType);
|
|
31
32
|
const subsetKeys = (await getZodTypeById(`${entityId}SubsetKey`)).enum;
|
|
32
33
|
const names = EntityManager.getNamesFromId(entityId);
|
|
33
34
|
const entity = EntityManager.get(entityId);
|
|
@@ -193,7 +194,6 @@ export const ${entityId}Model = new ${entityId}ModelClass();
|
|
|
193
194
|
};
|
|
194
195
|
}
|
|
195
196
|
};
|
|
196
|
-
//#endregion
|
|
197
197
|
export { Template__model };
|
|
198
198
|
|
|
199
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudGVtcGxhdGUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlbXBsYXRlL2ltcGxlbWVudGF0aW9ucy9tb2RlbC50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB6IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi8uLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBnZXRab2RUeXBlQnlJZCwgem9kVHlwZVRvUmVuZGVyaW5nTm9kZSB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZV9fdmlld19saXN0IH0gZnJvbSBcIi4vdmlld19saXN0LnRlbXBsYXRlXCI7XG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX21vZGVsIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIm1vZGVsXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgJHtuYW1lcy5mc30vJHtuYW1lcy5mc30ubW9kZWwudHNgLFxuICAgIH07XG4gIH1cblxuICBvdmVycmlkZSBnZXRSZXF1aXJlZERpY3RLZXlzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgcmV0dXJuIFtcImVycm9yLmVudGl0eU5vdEZvdW5kXCIsIFwiZXJyb3IudW5rbm93blNlYXJjaEZpZWxkXCJdO1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyKHsgZW50aXR5SWQgfTogVGVtcGxhdGVPcHRpb25zW1wibW9kZWxcIl0pIHtcbiAgICBOYWl0ZS50KFwicmVuZGVyXCIsIHsgZW50aXR5SWQgfSk7XG5cbiAgICBjb25zdCBsaXN0UGFyYW1zWm9kVHlwZSA9IGF3YWl0IGdldFpvZFR5cGVCeUlkKGAke2VudGl0eUlkfUxpc3RQYXJhbXNgKTtcbiAgICBjb25zdCBsaXN0UGFyYW1zTm9kZSA9IHpvZFR5cGVUb1JlbmRlcmluZ05vZGUobGlzdFBhcmFtc1pvZFR5cGUpO1xuXG4gICAgY29uc3Qgc3Vic2V0S2V5Wm9kVHlwZSA9IGF3YWl0IGdldFpvZFR5cGVCeUlkKGAke2VudGl0eUlkfVN1YnNldEtleWApO1xuICAgIGNvbnN0IHN1YnNldEtleXMgPVxuICAgICAgLyogU0FGRVRZOiDsg53shLHrkJwgKlN1YnNldEtleSDtg4DsnoXsnYAgZW51bSDsiqTtgqTrp4jroZwg65Ox66Gd65Cc64ukLiAqLyAoc3Vic2V0S2V5Wm9kVHlwZSBhcyB6LlpvZEVudW0pXG4gICAgICAgIC5lbnVtO1xuXG4gICAgY29uc3QgbmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKTtcbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICBjb25zdCB2bFRwbCA9IG5ldyBUZW1wbGF0ZV9fdmlld19saXN0KCk7XG4gICAgaWYgKGxpc3RQYXJhbXNOb2RlPy5jaGlsZHJlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGxpc3RQYXJhbXNOb2Rl6rCAIOyXhuyKteuLiOuLpC4gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0gdmxUcGwuZ2V0RGVmYXVsdChsaXN0UGFyYW1zTm9kZS5jaGlsZHJlbik7XG5cbiAgICAvLyDsl5Drn6wg66mU7Iuc7KeAIOyDneyEsVxuICAgIGNvbnN0IG5vdEZvdW5kRXJyb3IgPSBgU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIiR7bmFtZXMuY2FwaXRhbH1cIiwgaWQpYDtcbiAgICBjb25zdCB1bmtub3duU2VhcmNoRmllbGRFcnJvciA9IGBTRChcImVycm9yLnVua25vd25TZWFyY2hGaWVsZFwiKShwYXJhbXMuc2VhcmNoKWA7XG5cbiAgICAvLyBQSyDtg4DsnoXsl5Ag65Sw66W4IFR5cGVTY3JpcHQg7YOA7J6FIOqysOyglVxuICAgIGNvbnN0IHBrVHlwZSA9IGVudGl0eS5nZXRQa1R5cGUoKTtcbiAgICBjb25zdCBpZFRzVHlwZSA9IHBrVHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBwa1R5cGUgPT09IFwidXVpZFwiID8gXCJzdHJpbmdcIiA6IFwibnVtYmVyXCI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCB7IEJhc2VNb2RlbENsYXNzLCB0eXBlIExpc3RSZXN1bHQsIGFzQXJyYXksIE5vdEZvdW5kRXhjZXB0aW9uLCBCYWRSZXF1ZXN0RXhjZXB0aW9uLCBhcGksIGV4aGF1c3RpdmUgfSBmcm9tICdzb25hbXUnO1xuaW1wb3J0IHtcbiAgJHtlbnRpdHlJZH1TdWJzZXRLZXksXG4gICR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZyxcbn0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gICR7bmFtZXMuY2FtZWx9U3Vic2V0UXVlcmllcyxcbiAgJHtuYW1lcy5jYW1lbH1Mb2FkZXJRdWVyaWVzLFxufSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7ICR7ZW50aXR5SWR9TGlzdFBhcmFtcywgJHtlbnRpdHlJZH1TYXZlUGFyYW1zIH0gZnJvbSBcIi4vJHtuYW1lcy5mc30udHlwZXNcIjtcbmltcG9ydCB7IFNEIH0gZnJvbSBcIi4uLy4uL2kxOG4vc2QuZ2VuZXJhdGVkXCI7XG5cbi8qXG4gICR7ZW50aXR5SWR9IE1vZGVsXG4qL1xuY2xhc3MgJHtlbnRpdHlJZH1Nb2RlbENsYXNzIGV4dGVuZHMgQmFzZU1vZGVsQ2xhc3M8XG4gICR7ZW50aXR5SWR9U3Vic2V0S2V5LFxuICAke2VudGl0eUlkfVN1YnNldE1hcHBpbmcsXG4gIHR5cGVvZiAke25hbWVzLmNhbWVsfVN1YnNldFF1ZXJpZXMsXG4gIHR5cGVvZiAke25hbWVzLmNhbWVsfUxvYWRlclF1ZXJpZXNcbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIiR7ZW50aXR5SWR9XCIsICR7bmFtZXMuY2FtZWx9U3Vic2V0UXVlcmllcywgJHtuYW1lcy5jYW1lbH1Mb2FkZXJRdWVyaWVzKTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdLCByZXNvdXJjZU5hbWU6IFwiJHtlbnRpdHlJZH1cIiB9KVxuICBhc3luYyBmaW5kQnlJZDxUIGV4dGVuZHMgJHtlbnRpdHlJZH1TdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBpZDogJHtpZFRzVHlwZX1cbiAgKTogUHJvbWlzZTwke2VudGl0eUlkfVN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oJHtub3RGb3VuZEVycm9yfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3NbMF07XG4gIH1cblxuICBhc3luYyBmaW5kT25lPFQgZXh0ZW5kcyAke2VudGl0eUlkfVN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGxpc3RQYXJhbXM6ICR7ZW50aXR5SWR9TGlzdFBhcmFtc1xuICApOiBQcm9taXNlPCR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZ1tUXSB8IG51bGw+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICAuLi5saXN0UGFyYW1zLFxuICAgICAgbnVtOiAxLFxuICAgICAgcGFnZTogMSxcbiAgICB9KTtcblxuICAgIHJldHVybiByb3dzWzBdID8/IG51bGw7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIiR7bmFtZXMuY2FwaXRhbFBsdXJhbH1cIiB9KVxuICBhc3luYyBmaW5kTWFueTxUIGV4dGVuZHMgJHtlbnRpdHlJZH1TdWJzZXRLZXksIExQIGV4dGVuZHMgJHtlbnRpdHlJZH1MaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgJHtlbnRpdHlJZH1TdWJzZXRNYXBwaW5nW1RdPj4ge1xuICAgIC8vIHBhcmFtcyB3aXRoIGRlZmF1bHRzXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiJHtkZWYuc2VhcmNofVwiIGFzIGNvbnN0LFxuICAgICAgb3JkZXJCeTogXCIke2RlZi5vcmRlckJ5fVwiIGFzIGNvbnN0LFxuICAgICAgLi4ucmF3UGFyYW1zLFxuICAgIH0gc2F0aXNmaWVzICR7ZW50aXR5SWR9TGlzdFBhcmFtcztcblxuICAgIC8vIGJ1aWxkIHF1ZXJpZXNcbiAgICBjb25zdCB7IHFiLCBvblN1YnNldDogXyB9ID0gdGhpcy5nZXRTdWJzZXRRdWVyaWVzKHN1YnNldCk7XG4gICAgXG4gICAgLy8gaWRcbiAgICBpZiAocGFyYW1zLmlkKSB7XG4gICAgICBxYi53aGVyZUluKFwiJHtlbnRpdHkudGFibGV9LmlkXCIsIGFzQXJyYXkocGFyYW1zLmlkKSk7XG4gICAgfVxuXG4gICAgLy8gc2VhcmNoLWtleXdvcmRcbiAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMua2V5d29yZCAmJiBwYXJhbXMua2V5d29yZC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJpZFwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwiJHtlbnRpdHkudGFibGV9LmlkXCIsICR7aWRUc1R5cGUgPT09IFwic3RyaW5nXCIgPyBcInBhcmFtcy5rZXl3b3JkXCIgOiBcIk51bWJlcihwYXJhbXMua2V5d29yZClcIn0pO1xuICAgICAgICAvLyB9IGVsc2UgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwiZmllbGRcIikge1xuICAgICAgICAvLyAgIHFiLndoZXJlKFwiJHtlbnRpdHkudGFibGV9LmZpZWxkXCIsIFwibGlrZVwiLCBcXGAlXFwke3BhcmFtcy5rZXl3b3JkfSVcXGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oJHt1bmtub3duU2VhcmNoRmllbGRFcnJvcn0pO1xuICAgICAgfVxuICAgIH1cbiAgICAgIFxuICAgIC8vIG9yZGVyQnlcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgIC8vIGRlZmF1bHQgb3JkZXJCeVxuICAgICAgaWYgKHBhcmFtcy5vcmRlckJ5ID09PSBcImlkLWRlc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwiJHtlbnRpdHkudGFibGV9LmlkXCIsIFwiZGVzY1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aGF1c3RpdmUocGFyYW1zLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHtcbiAgICAgICR7T2JqZWN0LmtleXMoc3Vic2V0S2V5cylcbiAgICAgICAgLm1hcChcbiAgICAgICAgICAoa2V5KSA9PiBgJHtrZXl9OiAocm93KSA9PiAoe1xuICAgICAgICAgIC4uLnJvdyxcbiAgICAgICAgICAvLyDshJzruIzshYvrs4TroZwgdmlydHVhbCDtlYTrk5wg6rOE7IKw66Gc7KeBIOy2lOqwgFxuICAgICAgICB9KSxgLFxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiXFxuXCIpfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHFiLFxuICAgICAgcGFyYW1zLFxuICAgICAgZW5oYW5jZXJzLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHNhdmUoXG4gICAgc3BhOiAke2VudGl0eUlkfVNhdmVQYXJhbXNbXVxuICApOiBQcm9taXNlPCR7aWRUc1R5cGV9W10+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gcmVnaXN0ZXJcbiAgICBzcGEuZm9yRWFjaCgoc3ApID0+IHtcbiAgICAgIHdkYi51YlJlZ2lzdGVyKFwiJHtlbnRpdHkudGFibGV9XCIsIHNwKTtcbiAgICB9KTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCB0cngudWJVcHNlcnQoXCIke2VudGl0eS50YWJsZX1cIik7XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0sIGd1YXJkczogWyBcImFkbWluXCIgXSB9KVxuICBhc3luYyBkZWwoaWRzOiAke2lkVHNUeXBlfVtdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gdHJhbnNhY3Rpb25cbiAgICBhd2FpdCB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgcmV0dXJuIHRyeC50YWJsZShcIiR7ZW50aXR5LnRhYmxlfVwiKS53aGVyZUluKFwiJHtlbnRpdHkudGFibGV9LmlkXCIsIGlkcykuZGVsZXRlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWRzLmxlbmd0aDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgJHtlbnRpdHlJZH1Nb2RlbCA9IG5ldyAke2VudGl0eUlkfU1vZGVsQ2xhc3MoKTtcbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztTQUVrQztvQkFDeUI7V0FFbEI7Y0FFSDttQkFDbUM7QUFFekUsSUFBYSxrQkFBYixjQUFxQyxTQUFTO0NBQzVDLGNBQWM7RUFDWixNQUFNLE9BQU87Q0FDZjtDQUVBLGlCQUFpQixPQUEwQjtFQUN6QyxNQUFNLEVBQUUsUUFBUSxPQUFPLE9BQU87RUFFOUIsT0FBTztHQUNMLFFBQVEsR0FBRyxJQUFJO0dBQ2YsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRztFQUNoQztDQUNGO0NBRUEsc0JBQWdEO0VBQzlDLE9BQU8sQ0FBQyx3QkFBd0IsMEJBQTBCO0NBQzVEO0NBRUEsTUFBTSxPQUFPLEVBQUUsWUFBc0M7RUFDbkQsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUM7RUFHOUIsTUFBTSxpQkFBaUIsdUJBQXVCLE1BRGQsZUFBZSxHQUFHLFNBQVMsV0FBVyxDQUNQO0VBRy9ELE1BQU0sY0FDOEMsTUFGckIsZUFBZSxHQUFHLFNBQVMsVUFBVSxFQUVoQixDQUMvQztFQUVMLE1BQU0sUUFBUSxjQUFjLGVBQWUsUUFBUTtFQUNuRCxNQUFNLFNBQVMsY0FBYyxJQUFJLFFBQVE7RUFFekMsTUFBTSxRQUFRLElBQUksb0JBQW9CO0VBQ3RDLElBQUksZ0JBQWdCLGFBQWEsUUFDL0IsTUFBTSxJQUFJLE1BQU0seUJBQXlCLFVBQVU7RUFFckQsTUFBTSxNQUFNLE1BQU0sV0FBVyxlQUFlLFFBQVE7RUFHcEQsTUFBTSxnQkFBZ0IsK0JBQStCLE1BQU0sUUFBUTtFQUNuRSxNQUFNLDBCQUEwQjtFQUdoQyxNQUFNLFNBQVMsT0FBTyxVQUFVO0VBQ2hDLE1BQU0sV0FBVyxXQUFXLFlBQVksV0FBVyxTQUFTLFdBQVc7RUFFdkUsT0FBTztHQUNMLEdBQUcsS0FBSyxpQkFBaUIsS0FBSztHQUM5QixNQUFNOzs7SUFHUixTQUFTO0lBQ1QsU0FBUzs7O0lBR1QsTUFBTSxNQUFNO0lBQ1osTUFBTSxNQUFNOztXQUVMLFNBQVMsY0FBYyxTQUFTLHVCQUF1QixNQUFNLEdBQUc7Ozs7SUFJdkUsU0FBUzs7UUFFTCxTQUFTO0lBQ2IsU0FBUztJQUNULFNBQVM7V0FDRixNQUFNLE1BQU07V0FDWixNQUFNLE1BQU07OzthQUdWLFNBQVMsS0FBSyxNQUFNLE1BQU0saUJBQWlCLE1BQU0sTUFBTTs7O21GQUdlLFNBQVM7NkJBQy9ELFNBQVM7O1VBRTVCLFNBQVM7ZUFDSixTQUFTOzs7Ozs7O29DQU9ZLGNBQWM7Ozs7Ozs0QkFNdEIsU0FBUzs7a0JBRW5CLFNBQVM7ZUFDWixTQUFTOzs7Ozs7Ozs7O21GQVUyRCxNQUFNLGNBQWM7NkJBQzFFLFNBQVMsd0JBQXdCLFNBQVM7Ozs4QkFHekMsU0FBUzs7Ozs7aUJBS3RCLElBQUksT0FBTztrQkFDVixJQUFJLFFBQVE7O2tCQUVaLFNBQVM7Ozs7Ozs7b0JBT1AsT0FBTyxNQUFNOzs7Ozs7b0JBTWIsT0FBTyxNQUFNLFFBQVEsYUFBYSxXQUFXLG1CQUFtQix5QkFBeUI7O3lCQUVwRixPQUFPLE1BQU07O3dDQUVFLHdCQUF3Qjs7Ozs7Ozs7c0JBUTFDLE9BQU8sTUFBTTs7Ozs7OztRQU8zQixPQUFPLEtBQUssVUFBVSxDQUFDLENBQ3RCLEtBQ0UsUUFBUSxHQUFHLElBQUk7OztZQUlsQixDQUFDLENBQ0EsS0FBSyxJQUFJLEVBQUU7Ozs7Ozs7Ozs7Ozs7O1dBY1QsU0FBUztlQUNMLFNBQVM7Ozs7O3dCQUtBLE9BQU8sTUFBTTs7Ozs7d0NBS0csT0FBTyxNQUFNOzs7Ozs7O21CQU9sQyxTQUFTOzs7OzswQkFLRixPQUFPLE1BQU0sY0FBYyxPQUFPLE1BQU07Ozs7Ozs7ZUFPbkQsU0FBUyxjQUFjLFNBQVM7UUFDdkMsS0FBSztHQUNQLFlBQVksQ0FBQztFQUNmO0NBQ0Y7QUFDRiJ9
|
|
199
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudGVtcGxhdGUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlbXBsYXRlL2ltcGxlbWVudGF0aW9ucy9tb2RlbC50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB6IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi8uLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBnZXRab2RUeXBlQnlJZCwgem9kVHlwZVRvUmVuZGVyaW5nTm9kZSB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZV9fdmlld19saXN0IH0gZnJvbSBcIi4vdmlld19saXN0LnRlbXBsYXRlXCI7XG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX21vZGVsIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIm1vZGVsXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgJHtuYW1lcy5mc30vJHtuYW1lcy5mc30ubW9kZWwudHNgLFxuICAgIH07XG4gIH1cblxuICBvdmVycmlkZSBnZXRSZXF1aXJlZERpY3RLZXlzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgcmV0dXJuIFtcImVycm9yLmVudGl0eU5vdEZvdW5kXCIsIFwiZXJyb3IudW5rbm93blNlYXJjaEZpZWxkXCJdO1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyKHsgZW50aXR5SWQgfTogVGVtcGxhdGVPcHRpb25zW1wibW9kZWxcIl0pIHtcbiAgICBOYWl0ZS50KFwicmVuZGVyXCIsIHsgZW50aXR5SWQgfSk7XG5cbiAgICBjb25zdCBsaXN0UGFyYW1zWm9kVHlwZSA9IGF3YWl0IGdldFpvZFR5cGVCeUlkKGAke2VudGl0eUlkfUxpc3RQYXJhbXNgKTtcbiAgICBjb25zdCBsaXN0UGFyYW1zTm9kZSA9IHpvZFR5cGVUb1JlbmRlcmluZ05vZGUobGlzdFBhcmFtc1pvZFR5cGUpO1xuXG4gICAgY29uc3Qgc3Vic2V0S2V5Wm9kVHlwZSA9IGF3YWl0IGdldFpvZFR5cGVCeUlkKGAke2VudGl0eUlkfVN1YnNldEtleWApO1xuICAgIGNvbnN0IHN1YnNldEtleXMgPSAvKiBTQUZFVFk6IOyDneyEseuQnCAqU3Vic2V0S2V5IO2DgOyeheydgCBlbnVtIOyKpO2CpOuniOuhnCDrk7HroZ3rkJzri6QuICovIChcbiAgICAgIHN1YnNldEtleVpvZFR5cGUgYXMgei5ab2RFbnVtXG4gICAgKS5lbnVtO1xuXG4gICAgY29uc3QgbmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKTtcbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICBjb25zdCB2bFRwbCA9IG5ldyBUZW1wbGF0ZV9fdmlld19saXN0KCk7XG4gICAgaWYgKGxpc3RQYXJhbXNOb2RlPy5jaGlsZHJlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGxpc3RQYXJhbXNOb2Rl6rCAIOyXhuyKteuLiOuLpC4gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0gdmxUcGwuZ2V0RGVmYXVsdChsaXN0UGFyYW1zTm9kZS5jaGlsZHJlbik7XG5cbiAgICAvLyDsl5Drn6wg66mU7Iuc7KeAIOyDneyEsVxuICAgIGNvbnN0IG5vdEZvdW5kRXJyb3IgPSBgU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIiR7bmFtZXMuY2FwaXRhbH1cIiwgaWQpYDtcbiAgICBjb25zdCB1bmtub3duU2VhcmNoRmllbGRFcnJvciA9IGBTRChcImVycm9yLnVua25vd25TZWFyY2hGaWVsZFwiKShwYXJhbXMuc2VhcmNoKWA7XG5cbiAgICAvLyBQSyDtg4DsnoXsl5Ag65Sw66W4IFR5cGVTY3JpcHQg7YOA7J6FIOqysOyglVxuICAgIGNvbnN0IHBrVHlwZSA9IGVudGl0eS5nZXRQa1R5cGUoKTtcbiAgICBjb25zdCBpZFRzVHlwZSA9IHBrVHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBwa1R5cGUgPT09IFwidXVpZFwiID8gXCJzdHJpbmdcIiA6IFwibnVtYmVyXCI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCB7IEJhc2VNb2RlbENsYXNzLCB0eXBlIExpc3RSZXN1bHQsIGFzQXJyYXksIE5vdEZvdW5kRXhjZXB0aW9uLCBCYWRSZXF1ZXN0RXhjZXB0aW9uLCBhcGksIGV4aGF1c3RpdmUgfSBmcm9tICdzb25hbXUnO1xuaW1wb3J0IHtcbiAgJHtlbnRpdHlJZH1TdWJzZXRLZXksXG4gICR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZyxcbn0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gICR7bmFtZXMuY2FtZWx9U3Vic2V0UXVlcmllcyxcbiAgJHtuYW1lcy5jYW1lbH1Mb2FkZXJRdWVyaWVzLFxufSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7ICR7ZW50aXR5SWR9TGlzdFBhcmFtcywgJHtlbnRpdHlJZH1TYXZlUGFyYW1zIH0gZnJvbSBcIi4vJHtuYW1lcy5mc30udHlwZXNcIjtcbmltcG9ydCB7IFNEIH0gZnJvbSBcIi4uLy4uL2kxOG4vc2QuZ2VuZXJhdGVkXCI7XG5cbi8qXG4gICR7ZW50aXR5SWR9IE1vZGVsXG4qL1xuY2xhc3MgJHtlbnRpdHlJZH1Nb2RlbENsYXNzIGV4dGVuZHMgQmFzZU1vZGVsQ2xhc3M8XG4gICR7ZW50aXR5SWR9U3Vic2V0S2V5LFxuICAke2VudGl0eUlkfVN1YnNldE1hcHBpbmcsXG4gIHR5cGVvZiAke25hbWVzLmNhbWVsfVN1YnNldFF1ZXJpZXMsXG4gIHR5cGVvZiAke25hbWVzLmNhbWVsfUxvYWRlclF1ZXJpZXNcbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIiR7ZW50aXR5SWR9XCIsICR7bmFtZXMuY2FtZWx9U3Vic2V0UXVlcmllcywgJHtuYW1lcy5jYW1lbH1Mb2FkZXJRdWVyaWVzKTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdLCByZXNvdXJjZU5hbWU6IFwiJHtlbnRpdHlJZH1cIiB9KVxuICBhc3luYyBmaW5kQnlJZDxUIGV4dGVuZHMgJHtlbnRpdHlJZH1TdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBpZDogJHtpZFRzVHlwZX1cbiAgKTogUHJvbWlzZTwke2VudGl0eUlkfVN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oJHtub3RGb3VuZEVycm9yfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3NbMF07XG4gIH1cblxuICBhc3luYyBmaW5kT25lPFQgZXh0ZW5kcyAke2VudGl0eUlkfVN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGxpc3RQYXJhbXM6ICR7ZW50aXR5SWR9TGlzdFBhcmFtc1xuICApOiBQcm9taXNlPCR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZ1tUXSB8IG51bGw+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICAuLi5saXN0UGFyYW1zLFxuICAgICAgbnVtOiAxLFxuICAgICAgcGFnZTogMSxcbiAgICB9KTtcblxuICAgIHJldHVybiByb3dzWzBdID8/IG51bGw7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIiR7bmFtZXMuY2FwaXRhbFBsdXJhbH1cIiB9KVxuICBhc3luYyBmaW5kTWFueTxUIGV4dGVuZHMgJHtlbnRpdHlJZH1TdWJzZXRLZXksIExQIGV4dGVuZHMgJHtlbnRpdHlJZH1MaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgJHtlbnRpdHlJZH1TdWJzZXRNYXBwaW5nW1RdPj4ge1xuICAgIC8vIHBhcmFtcyB3aXRoIGRlZmF1bHRzXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiJHtkZWYuc2VhcmNofVwiIGFzIGNvbnN0LFxuICAgICAgb3JkZXJCeTogXCIke2RlZi5vcmRlckJ5fVwiIGFzIGNvbnN0LFxuICAgICAgLi4ucmF3UGFyYW1zLFxuICAgIH0gc2F0aXNmaWVzICR7ZW50aXR5SWR9TGlzdFBhcmFtcztcblxuICAgIC8vIGJ1aWxkIHF1ZXJpZXNcbiAgICBjb25zdCB7IHFiLCBvblN1YnNldDogXyB9ID0gdGhpcy5nZXRTdWJzZXRRdWVyaWVzKHN1YnNldCk7XG4gICAgXG4gICAgLy8gaWRcbiAgICBpZiAocGFyYW1zLmlkKSB7XG4gICAgICBxYi53aGVyZUluKFwiJHtlbnRpdHkudGFibGV9LmlkXCIsIGFzQXJyYXkocGFyYW1zLmlkKSk7XG4gICAgfVxuXG4gICAgLy8gc2VhcmNoLWtleXdvcmRcbiAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMua2V5d29yZCAmJiBwYXJhbXMua2V5d29yZC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJpZFwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwiJHtlbnRpdHkudGFibGV9LmlkXCIsICR7aWRUc1R5cGUgPT09IFwic3RyaW5nXCIgPyBcInBhcmFtcy5rZXl3b3JkXCIgOiBcIk51bWJlcihwYXJhbXMua2V5d29yZClcIn0pO1xuICAgICAgICAvLyB9IGVsc2UgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwiZmllbGRcIikge1xuICAgICAgICAvLyAgIHFiLndoZXJlKFwiJHtlbnRpdHkudGFibGV9LmZpZWxkXCIsIFwibGlrZVwiLCBcXGAlXFwke3BhcmFtcy5rZXl3b3JkfSVcXGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oJHt1bmtub3duU2VhcmNoRmllbGRFcnJvcn0pO1xuICAgICAgfVxuICAgIH1cbiAgICAgIFxuICAgIC8vIG9yZGVyQnlcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgIC8vIGRlZmF1bHQgb3JkZXJCeVxuICAgICAgaWYgKHBhcmFtcy5vcmRlckJ5ID09PSBcImlkLWRlc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwiJHtlbnRpdHkudGFibGV9LmlkXCIsIFwiZGVzY1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aGF1c3RpdmUocGFyYW1zLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHtcbiAgICAgICR7T2JqZWN0LmtleXMoc3Vic2V0S2V5cylcbiAgICAgICAgLm1hcChcbiAgICAgICAgICAoa2V5KSA9PiBgJHtrZXl9OiAocm93KSA9PiAoe1xuICAgICAgICAgIC4uLnJvdyxcbiAgICAgICAgICAvLyDshJzruIzshYvrs4TroZwgdmlydHVhbCDtlYTrk5wg6rOE7IKw66Gc7KeBIOy2lOqwgFxuICAgICAgICB9KSxgLFxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiXFxuXCIpfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHFiLFxuICAgICAgcGFyYW1zLFxuICAgICAgZW5oYW5jZXJzLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHNhdmUoXG4gICAgc3BhOiAke2VudGl0eUlkfVNhdmVQYXJhbXNbXVxuICApOiBQcm9taXNlPCR7aWRUc1R5cGV9W10+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gcmVnaXN0ZXJcbiAgICBzcGEuZm9yRWFjaCgoc3ApID0+IHtcbiAgICAgIHdkYi51YlJlZ2lzdGVyKFwiJHtlbnRpdHkudGFibGV9XCIsIHNwKTtcbiAgICB9KTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCB0cngudWJVcHNlcnQoXCIke2VudGl0eS50YWJsZX1cIik7XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0sIGd1YXJkczogWyBcImFkbWluXCIgXSB9KVxuICBhc3luYyBkZWwoaWRzOiAke2lkVHNUeXBlfVtdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gdHJhbnNhY3Rpb25cbiAgICBhd2FpdCB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgcmV0dXJuIHRyeC50YWJsZShcIiR7ZW50aXR5LnRhYmxlfVwiKS53aGVyZUluKFwiJHtlbnRpdHkudGFibGV9LmlkXCIsIGlkcykuZGVsZXRlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWRzLmxlbmd0aDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgJHtlbnRpdHlJZH1Nb2RlbCA9IG5ldyAke2VudGl0eUlkfU1vZGVsQ2xhc3MoKTtcbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVrQyxTQUFBO0FBQ3lCLG9CQUFBO0FBRWxCLFdBQUE7QUFFSCxjQUFBO0FBQ21DLG1CQUFBO0FBRXpFLElBQWEsa0JBQWIsY0FBcUMsU0FBUztDQUM1QyxjQUFjO0VBQ1osTUFBTSxPQUFPO0NBQ2Y7Q0FFQSxpQkFBaUIsT0FBMEI7RUFDekMsTUFBTSxFQUFFLFFBQVEsT0FBTyxPQUFPO0VBRTlCLE9BQU87R0FDTCxRQUFRLEdBQUcsSUFBSTtHQUNmLE1BQU0sR0FBRyxNQUFNLEdBQUcsR0FBRyxNQUFNLEdBQUc7RUFDaEM7Q0FDRjtDQUVBLHNCQUFnRDtFQUM5QyxPQUFPLENBQUMsd0JBQXdCLDBCQUEwQjtDQUM1RDtDQUVBLE1BQU0sT0FBTyxFQUFFLFlBQXNDO0VBQ25ELE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDO0VBRTlCLE1BQU0sb0JBQW9CLE1BQU0sZUFBZSxHQUFHLFNBQVMsV0FBVztFQUN0RSxNQUFNLGlCQUFpQix1QkFBdUIsaUJBQWlCO0VBRy9ELE1BQU0sY0FDSixNQUY2QixlQUFlLEdBQUcsU0FBUyxVQUFVLEVBRWxFLENBQ0E7RUFFRixNQUFNLFFBQVEsY0FBYyxlQUFlLFFBQVE7RUFDbkQsTUFBTSxTQUFTLGNBQWMsSUFBSSxRQUFRO0VBRXpDLE1BQU0sUUFBUSxJQUFJLG9CQUFvQjtFQUN0QyxJQUFJLGdCQUFnQixhQUFhLFFBQy9CLE1BQU0sSUFBSSxNQUFNLHlCQUF5QixVQUFVO0VBRXJELE1BQU0sTUFBTSxNQUFNLFdBQVcsZUFBZSxRQUFRO0VBR3BELE1BQU0sZ0JBQWdCLCtCQUErQixNQUFNLFFBQVE7RUFDbkUsTUFBTSwwQkFBMEI7RUFHaEMsTUFBTSxTQUFTLE9BQU8sVUFBVTtFQUNoQyxNQUFNLFdBQVcsV0FBVyxZQUFZLFdBQVcsU0FBUyxXQUFXO0VBRXZFLE9BQU87R0FDTCxHQUFHLEtBQUssaUJBQWlCLEtBQUs7R0FDOUIsTUFBTTs7O0lBR1IsU0FBUztJQUNULFNBQVM7OztJQUdULE1BQU0sTUFBTTtJQUNaLE1BQU0sTUFBTTs7V0FFTCxTQUFTLGNBQWMsU0FBUyx1QkFBdUIsTUFBTSxHQUFHOzs7O0lBSXZFLFNBQVM7O1FBRUwsU0FBUztJQUNiLFNBQVM7SUFDVCxTQUFTO1dBQ0YsTUFBTSxNQUFNO1dBQ1osTUFBTSxNQUFNOzs7YUFHVixTQUFTLEtBQUssTUFBTSxNQUFNLGlCQUFpQixNQUFNLE1BQU07OzttRkFHZSxTQUFTOzZCQUMvRCxTQUFTOztVQUU1QixTQUFTO2VBQ0osU0FBUzs7Ozs7OztvQ0FPWSxjQUFjOzs7Ozs7NEJBTXRCLFNBQVM7O2tCQUVuQixTQUFTO2VBQ1osU0FBUzs7Ozs7Ozs7OzttRkFVMkQsTUFBTSxjQUFjOzZCQUMxRSxTQUFTLHdCQUF3QixTQUFTOzs7OEJBR3pDLFNBQVM7Ozs7O2lCQUt0QixJQUFJLE9BQU87a0JBQ1YsSUFBSSxRQUFROztrQkFFWixTQUFTOzs7Ozs7O29CQU9QLE9BQU8sTUFBTTs7Ozs7O29CQU1iLE9BQU8sTUFBTSxRQUFRLGFBQWEsV0FBVyxtQkFBbUIseUJBQXlCOzt5QkFFcEYsT0FBTyxNQUFNOzt3Q0FFRSx3QkFBd0I7Ozs7Ozs7O3NCQVExQyxPQUFPLE1BQU07Ozs7Ozs7UUFPM0IsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUN0QixLQUNFLFFBQVEsR0FBRyxJQUFJOzs7WUFJbEIsQ0FBQyxDQUNBLEtBQUssSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7OztXQWNULFNBQVM7ZUFDTCxTQUFTOzs7Ozt3QkFLQSxPQUFPLE1BQU07Ozs7O3dDQUtHLE9BQU8sTUFBTTs7Ozs7OzttQkFPbEMsU0FBUzs7Ozs7MEJBS0YsT0FBTyxNQUFNLGNBQWMsT0FBTyxNQUFNOzs7Ozs7O2VBT25ELFNBQVMsY0FBYyxTQUFTO1FBQ3ZDLEtBQUs7R0FDUCxZQUFZLENBQUM7RUFDZjtDQUNGO0FBQ0YifQ==
|
|
@@ -2,7 +2,7 @@ import { Sonamu } from "../../api/sonamu.js";
|
|
|
2
2
|
import { EntityManager, init_entity_manager } from "../../entity/entity-manager.js";
|
|
3
3
|
import { init_api } from "../../api/index.js";
|
|
4
4
|
import { Template, init_template } from "../template.js";
|
|
5
|
-
|
|
5
|
+
// src/template/implementations/model_test.template.ts
|
|
6
6
|
init_api();
|
|
7
7
|
init_entity_manager();
|
|
8
8
|
init_template();
|
|
@@ -36,7 +36,6 @@ describe.skip("${entityId}ModelTest", () => {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
|
-
//#endregion
|
|
40
39
|
export { Template__model_test };
|
|
41
40
|
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxfdGVzdC50ZW1wbGF0ZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVtcGxhdGUvaW1wbGVtZW50YXRpb25zL21vZGVsX3Rlc3QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19tb2RlbF90ZXN0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIm1vZGVsX3Rlc3RcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke25hbWVzLmZzfS5tb2RlbC50ZXN0LnRzYCxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKHsgZW50aXR5SWQgfTogVGVtcGxhdGVPcHRpb25zW1wibW9kZWxfdGVzdFwiXSkge1xuICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCB7IGJvb3RzdHJhcCwgdGVzdCB9IGZyb20gXCJzb25hbXUvdGVzdFwiO1xuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgdmkgfSBmcm9tIFwidml0ZXN0XCI7XG5cbmJvb3RzdHJhcCh2aSk7XG5kZXNjcmliZS5za2lwKFwiJHtlbnRpdHlJZH1Nb2RlbFRlc3RcIiwgKCkgPT4ge1xuICB0ZXN0KFwiUXVlcnlcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdCh0cnVlKS50b0JlKHRydWUpO1xuICB9KTtcbn0pO1xuICAgICAgYC50cmltKCksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDLFNBQUE7QUFDeUIsb0JBQUE7QUFHckIsY0FBQTtBQUV0QyxJQUFhLHVCQUFiLGNBQTBDLFNBQVM7Q0FDakQsY0FBYztFQUNaLE1BQU0sWUFBWTtDQUNwQjtDQUVBLGlCQUFpQixPQUEwQjtFQUN6QyxNQUFNLEVBQUUsUUFBUSxPQUFPLE9BQU87RUFFOUIsT0FBTztHQUNMLFFBQVEsR0FBRyxJQUFJO0dBQ2YsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRztFQUNoQztDQUNGO0NBRUEsT0FBTyxFQUFFLFlBQTJDO0VBQ2xELE1BQU0sUUFBUSxjQUFjLGVBQWUsUUFBUTtFQUVuRCxPQUFPO0dBQ0wsR0FBRyxLQUFLLGlCQUFpQixLQUFLO0dBQzlCLE1BQU07Ozs7O2lCQUtLLFNBQVM7Ozs7O1FBS2xCLEtBQUs7R0FDUCxZQUFZLENBQUM7RUFDZjtDQUNGO0FBQ0YifQ==
|