sonamu 0.8.13 → 0.8.14
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/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +2 -3
- package/dist/auth/auth-generator.d.ts +8 -0
- package/dist/auth/auth-generator.d.ts.map +1 -1
- package/dist/auth/auth-generator.js +33 -1
- package/dist/auth/better-auth-entities.d.ts.map +1 -1
- package/dist/auth/better-auth-entities.js +12 -2
- package/dist/bin/cli.js +18 -3
- package/dist/cone/cone-generator.js +10 -4
- package/dist/database/knex.d.ts.map +1 -1
- package/dist/database/knex.js +64 -2
- package/dist/database/puri.d.ts +9 -1
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +42 -1
- package/dist/database/puri.types.d.ts +2 -0
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +6 -2
- package/dist/entity/entity-manager.d.ts +149 -1
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +68 -4
- package/dist/migration/__tests__/code-generation.search-text.test.js +435 -0
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +696 -32
- package/dist/migration/migration-set.js +3 -1
- package/dist/migration/postgresql-schema-reader.d.ts +16 -2
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/postgresql-schema-reader.js +281 -7
- package/dist/stream/sse.js +5 -3
- package/dist/template/__tests__/generated.template.search-text.test.js +99 -0
- package/dist/template/generated.template.test-d.js +24 -0
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +2 -2
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.js +11 -3
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +6 -2
- package/dist/testing/dev-test-routes.d.ts.map +1 -1
- package/dist/testing/dev-test-routes.js +5 -3
- package/dist/testing/fixture-generator.d.ts +13 -0
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +105 -8
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +19 -2
- package/dist/types/__tests__/entity-json-schema-search-text.test.js +256 -0
- package/dist/types/types.d.ts +494 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +117 -13
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +14 -2
- package/dist/ui/cdd-service.d.ts +16 -14
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +145 -37
- package/dist/ui/cdd-types.d.ts +60 -0
- package/dist/ui/cdd-types.d.ts.map +1 -0
- package/dist/ui/cdd-types.js +3 -0
- package/dist/ui-web/assets/index-D4XFBV-f.css +1 -0
- package/dist/ui-web/assets/{index-CQ_S40bD.js → index-D_19-Pi4.js} +87 -87
- package/dist/ui-web/index.html +2 -2
- package/package.json +7 -3
- package/src/api/sonamu.ts +1 -2
- package/src/auth/auth-generator.ts +38 -0
- package/src/auth/better-auth-entities.ts +18 -1
- package/src/bin/cli.ts +15 -1
- package/src/cone/cone-generator.ts +9 -3
- package/src/database/knex.ts +62 -4
- package/src/database/puri.ts +71 -0
- package/src/database/puri.types.ts +2 -0
- package/src/entity/entity-manager.ts +95 -3
- package/src/migration/__tests__/code-generation.search-text.test.ts +390 -0
- package/src/migration/code-generation.ts +848 -34
- package/src/migration/migration-set.ts +2 -0
- package/src/migration/postgresql-schema-reader.ts +366 -9
- package/src/skills/sonamu/auth-migration.md +80 -0
- package/src/skills/sonamu/cdd.md +148 -28
- package/src/skills/sonamu/cone.md +16 -0
- package/src/skills/sonamu/entity-relations.md +1 -1
- package/src/skills/sonamu/fixture-cli.md +4 -0
- package/src/skills/sonamu/frontend.md +65 -0
- package/src/skills/sonamu/migration.md +3 -1
- package/src/skills/sonamu/model.md +28 -0
- package/src/skills/sonamu/workflow.md +12 -5
- package/src/stream/sse.ts +4 -2
- package/src/template/__tests__/generated.template.search-text.test.ts +89 -0
- package/src/template/generated.template.test-d.ts +46 -0
- package/src/template/implementations/generated.template.ts +4 -1
- package/src/template/implementations/init_types.template.ts +20 -5
- package/src/template/zod-converter.ts +5 -0
- package/src/testing/dev-test-routes.ts +4 -2
- package/src/testing/fixture-generator.ts +157 -9
- package/src/testing/fixture-manager.ts +15 -1
- package/src/types/__tests__/entity-json-schema-search-text.test.ts +179 -0
- package/src/types/types.ts +168 -12
- package/src/ui/api.ts +24 -1
- package/src/ui/cdd-service.ts +195 -55
- package/src/ui/cdd-types.ts +73 -0
- package/dist/ui-web/assets/index-egkMxKos.css +0 -1
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
/** biome-ignore-all lint/suspicious/noExplicitAny: Puri.types.ts는 다양한 타입을 사용하고 있습니다. */ export
|
|
1
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: Puri.types.ts는 다양한 타입을 사용하고 있습니다. */ export const FUZZY_OPERATORS = [
|
|
2
|
+
"<%",
|
|
3
|
+
"%",
|
|
4
|
+
"<<%"
|
|
5
|
+
];
|
|
2
6
|
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBQdXJpLnR5cGVzLnRz64qUIOuLpOyWke2VnCDtg4DsnoXsnYQg7IKs7Jqp7ZWY6rOgIOyeiOyKteuLiOuLpC4gKi9cblxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCB9IGZyb20gXCJwZ1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUZvcmVpZ25LZXlzLCBEYXRhYmFzZVNjaGVtYUV4dGVuZCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHR5cGUgeyBQdXJpU3Vic2V0Rm4gfSBmcm9tIFwiLi9wdXJpLXN1YnNldC50eXBlc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8g64K067aAIO2DgOyehSDtgqQgKOuplO2DgOuNsOydtO2EsClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG50eXBlIEZ1bGx0ZXh0S2V5ID0gXCJfX2Z1bGx0ZXh0X19cIjtcbnR5cGUgVmlydHVhbEtleSA9IFwiX192aXJ0dWFsX19cIjtcbnR5cGUgTGVmdEpvaW5lZEtleSA9IFwiX19sZWZ0Sm9pbmVkX19cIjtcbnR5cGUgSGFzRGVmYXVsdCA9IFwiX19oYXNEZWZhdWx0X19cIjtcbnR5cGUgR2VuZXJhdGVkS2V5ID0gXCJfX2dlbmVyYXRlZF9fXCI7XG50eXBlIFZlY3RvcktleSA9IFwiX192ZWN0b3JfX1wiO1xudHlwZSBWaXJ0dWFsUXVlcnlLZXkgPSBcIl9fdmlydHVhbF9xdWVyeV9fXCI7XG5cbnR5cGUgSW50ZXJuYWxUeXBlS2V5cyA9XG4gIHwgRnVsbHRleHRLZXlcbiAgfCBWaXJ0dWFsS2V5XG4gIHwgTGVmdEpvaW5lZEtleVxuICB8IEhhc0RlZmF1bHRcbiAgfCBHZW5lcmF0ZWRLZXlcbiAgfCBWZWN0b3JLZXlcbiAgfCBWaXJ0dWFsUXVlcnlLZXk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyDtg4DsnoUg7Jyg7Yu466as7YuwXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBfX3ZlY3Rvcl9fIOuplO2DgOuNsOydtO2EsOyXkOyEnCDrsqHthLAg7Lus65+8IOy2lOy2nFxudHlwZSBWZWN0b3JDb2x1bW5LZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmVjdG9yS2V5XTogcmVhZG9ubHkgKGluZmVyIFYpW10gfVxuICA/IFYgJiBzdHJpbmdcbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgVmVjdG9yQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPVxuICB8IHtcbiAgICAgIFtUQWxpYXMgaW4ga2V5b2YgVFRhYmxlc106IGAke1RBbGlhcyAmIHN0cmluZ30uJHtWZWN0b3JDb2x1bW5LZXlzPFRUYWJsZXNbVEFsaWFzXT59YDtcbiAgICB9W2tleW9mIFRUYWJsZXNdXG4gIHwgKElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZSA/IFZlY3RvckNvbHVtbktleXM8VFRhYmxlc1trZXlvZiBUVGFibGVzXT4gOiBuZXZlcik7XG5cbi8vIO2FjOydtOu4lOuqhSDtg4DsnoVcbmV4cG9ydCB0eXBlIFRhYmxlTmFtZTxUU2NoZW1hPiA9IGtleW9mIFRTY2hlbWEgJiBzdHJpbmc7XG5cbi8vIO2FjOydtOu4lOydmCBpZChQSykg7YOA7J6F7J2EIOy2lOy2nFxuZXhwb3J0IHR5cGUgSWRUeXBlPFRTY2hlbWEsIFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+ID0gVFNjaGVtYVtUVGFibGVdIGV4dGVuZHMgeyBpZDogaW5mZXIgSSB9XG4gID8gSVxuICA6IG51bWJlcjtcblxuLy8gdmlydHVhbCDsu6zrn7wg7YOA7J6FIOy2lOy2nFxudHlwZSBWaXJ0dWFsS2V5czxUPiA9IFQgZXh0ZW5kcyB7IFtLIGluIFZpcnR1YWxLZXldOiByZWFkb25seSAoaW5mZXIgVilbXSB9ID8gViAmIHN0cmluZyA6IG5ldmVyO1xuXG4vLyB2aXJ0dWFsIOy7rOufvCDsoJzqsbBcbnR5cGUgU3RyaXBWaXJ0dWFsPFQ+ID0gT21pdDxULCBWaXJ0dWFsS2V5czxUPj47XG5cbi8vIExFRlQgSk9JTiDrp4jsu6QgLSBudWxsYWJsZSBGS+uhnCDsobDsnbjrkJwg7YWM7J2067iUXG4vLyDsnbQg66eI7Luk64qUIG51bGxhYmxlIEZLICsgbGVmdEpvaW4g7KGw7ZWp7JeQ7ISc66eMIOu2meyKteuLiOuLpC5cbi8vIGpvaW4gKyBGSyBudWxsYWJsZSAtPiDslYgg67aZ7J2MXG4vLyBqb2luICsgRksgbm9uLW51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGxlZnRKb2luICsgRksgbm9uLW51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGxlZnRKb2luICsgRksgbnVsbGFibGUgLT4g67aZ7J2MIVxuZXhwb3J0IHR5cGUgTGVmdEpvaW5lZE1hcmtlciA9IHsgW0sgaW4gTGVmdEpvaW5lZEtleV06IHRydWUgfTtcblxuLy8g66mU7YOA642w7J207YSwIO2VhOuTnCDsoJzsmbjtlZwg7Iuk7KCcIOyXlO2LsO2LsCDsu6zrn7xcbmV4cG9ydCB0eXBlIENvbHVtbktleXM8VD4gPSBFeGNsdWRlPGtleW9mIFN0cmlwVmlydHVhbDxUPiwgSW50ZXJuYWxUeXBlS2V5cz4gJiBzdHJpbmc7XG5cbi8vIHZpcnR1YWwg7Lus65+8IOygnOqxsCDtm4QgX19mdWxsdGV4dF9fIOycoOyngFxuZXhwb3J0IHR5cGUgUHVyaVRhYmxlPFQ+ID0gT21pdDxTdHJpcFZpcnR1YWw8VD4sIFZpcnR1YWxLZXk+O1xuXG4vLyDrgrTrtoAg7YOA7J6FIO2CpCDsoJzsmbggKOyLpOygnCDsu6zrn7zrp4wg64Ko6rmAKVxuZXhwb3J0IHR5cGUgT21pdEludGVybmFsVHlwZUtleXM8VD4gPSBPbWl0PFQsIEludGVybmFsVHlwZUtleXM+O1xuXG4vLyBUVGFibGVz7J2YIOuqqOuToCDthYzsnbTruJTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCDsu6zrn7wg6rK966GcXG5leHBvcnQgdHlwZSBBdmFpbGFibGVDb2x1bW5zPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IENvbHVtbktleXM8VFRhYmxlc1trZXlvZiBUVGFibGVzXT4gLy8g64uo7J28IO2FjOydtOu4lOydtOuptCDsu6zrn7zrqoXrp4zrj4Qg7ZeI7JqpXG4gICAgICA6IG5ldmVyKTtcblxuLy8g7Iir7J6QIO2DgOyehSDsu6zrn7zrp4wg7LaU7Lac7ZWY64qUIOycoO2LuOumrO2LsCDtg4DsnoVcbnR5cGUgTnVtZXJpY0NvbHVtbktleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50IHwgbnVsbCB8IHVuZGVmaW5lZCA/IEsgOiBuZXZlcjtcbn1ba2V5b2YgVF0gJlxuICBzdHJpbmc7XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsiKvsnpAg7YOA7J6FIOy7rOufvOunjCDstpTstpxcbmV4cG9ydCB0eXBlIE51bWVyaWNDb2x1bW5zPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke051bWVyaWNDb2x1bW5LZXlzPFRUYWJsZXNbVEFsaWFzXT59YDtcbiAgICB9W2tleW9mIFRUYWJsZXNdXG4gIHwgKElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBOdW1lcmljQ29sdW1uS2V5czxUVGFibGVzW2tleW9mIFRUYWJsZXNdPiAvLyDri6jsnbwg7YWM7J2067iU7J2066m0IOy7rOufvOuqheunjOuPhCDtl4jsmqlcbiAgICAgIDogbmV2ZXIpO1xuXG4vLyBHcm91cCBCeSwgT3JkZXIgQnksIEhhdmluZyDrk7Hsl5DshJwg7ISg7YOdIOqwgOuKpe2VnCDsu6zrn7xcbmV4cG9ydCB0eXBlIFJlc3VsdEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sIFRSZXN1bHQgPSBhbnk+ID1cbiAgfCBBdmFpbGFibGVDb2x1bW5zPFRUYWJsZXM+XG4gIHwgYCR7a2V5b2YgVFJlc3VsdCAmIHN0cmluZ31gO1xuXG4vLyBTZWxlY3Qg6rCSIO2DgOyehSDtmZXsnqUgKOuLqOydvCDsu6zrn7wg65iQ64qUIFNRTCDtkZztmITsi50pXG5leHBvcnQgdHlwZSBTZWxlY3RWYWx1ZTxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPVxuICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5cbiAgfCBTcWxFeHByZXNzaW9uPFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIj47XG5cbi8vIOykkeyyqSBTZWxlY3Qg6rCd7LK0IO2DgOyehSAo7J6s6reA7KCBKVxuLy8g7JiIOiB7IHBhcmVudDogeyBpZDogXCJwYXJlbnQuaWRcIiwgbmFtZTogXCJwYXJlbnQubmFtZVwiIH0gfVxuZXhwb3J0IHR5cGUgTmVzdGVkU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IHtcbiAgW2tleTogc3RyaW5nXTogU2VsZWN0VmFsdWU8VFRhYmxlcz4gfCBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz47XG59O1xuXG4vLyBTZWxlY3Qg6rCd7LK0IO2DgOyehSAoZmxhdCDrmJDripQg7KSR7LKpIO2XiOyaqSlcbmV4cG9ydCB0eXBlIFNlbGVjdE9iamVjdDxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz47XG5cbi8vIOqwkuydtCDspJHssqkg6rCd7LK07J247KeAIO2MkOuzhO2VmOuKlCDtl6ztjbwg7YOA7J6FXG50eXBlIElzTmVzdGVkT2JqZWN0PFQ+ID0gVCBleHRlbmRzIHN0cmluZ1xuICA/IGZhbHNlXG4gIDogVCBleHRlbmRzIFNxbEV4cHJlc3Npb248YW55PlxuICAgID8gZmFsc2VcbiAgICA6IFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG5cbi8vIOy7rOufvOydtCBudWxsYWJsZeyduOyngCDtmZXsnbggKOyKpO2CpOuniOyXkOyEnCDsp4HsoJEg7LaU7LacKVxuLy8g7JiIOiBJc051bGxhYmxlQ29sdW1uPFRUYWJsZXMsIFwiZW1wbG95ZWVzLmRlcGFydG1lbnRfaWRcIj4g4oaSIGRlcGFydG1lbnRfaWTqsIAgbnVtYmVyIHwgbnVsbOydtOuptCB0cnVlXG5leHBvcnQgdHlwZSBJc051bGxhYmxlQ29sdW1uPFxuICBUVGFibGVzLFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nLFxuPiA9IFBhdGggZXh0ZW5kcyBgJHtpbmZlciBUQWxpYXN9LiR7aW5mZXIgVENvbHVtbn1gXG4gID8gVEFsaWFzIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8gVENvbHVtbiBleHRlbmRzIGtleW9mIFRUYWJsZXNbVEFsaWFzXVxuICAgICAgPyBudWxsIGV4dGVuZHMgVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlXG4gICAgICA6IGZhbHNlXG4gICAgOiBmYWxzZVxuICA6IGZhbHNlO1xuXG4vLyBGSyBudWxsYWJsZSDsl6zrtoDsl5Ag65Sw66W4IOuniOy7pCDtg4DsnoUg6rKw7KCVXG4vLyBudWxsYWJsZSBGS+uhnCBsZWZ0Sm9pbiDihpIgTGVmdEpvaW5lZE1hcmtlciAo6rCd7LK0IOyekOyytOqwgCBudWxs7J28IOyImCDsnojsnYwpXG4vLyBub24tbnVsbCBGS+uhnCBsZWZ0Sm9pbiDihpIg66eI7LukIOyXhuydjCAo67aA66qo6rCAIOyeiOycvOuptCDsnpDsi53rj4Qg67CY65Oc7IucIOyeiOydjClcbmV4cG9ydCB0eXBlIExlZnRKb2luTWFya2VyRm9yPFRUYWJsZXMsIFBhdGggZXh0ZW5kcyBzdHJpbmc+ID0gSXNOdWxsYWJsZUNvbHVtbjxcbiAgVFRhYmxlcyxcbiAgUGF0aFxuPiBleHRlbmRzIHRydWVcbiAgPyBMZWZ0Sm9pbmVkTWFya2VyXG4gIDoge307XG5cbi8vIOyjvOyWtOynhCDthYzsnbTruJTsnbQgRksgbnVsbGFibGXroZwgbGVmdEpvaW4g65CcIO2FjOydtOu4lOyduOyngCDtmZXsnbjtlanri4jri6QuXG4vLyDsgqzsi6QgTGVmdEpvaW5NYXJrZXLqsIAg67aZ7JeI64qU7KeAIO2ZleyduO2VmOuKlOqyjCDri6TsnoXri4jri6QuXG4vLyDsnbQg66eI7Luk64qUIEZLIG51bGxhYmxlICsgbGVmdEpvaW4g7KGw7ZWp7JeQ7ISc66eMIOu2meyKteuLiOuLpC5cbnR5cGUgSXNOdWxsYWJsZUpvaW5lZFRhYmxlPFRUYWJsZXMsIFRhYmxlS2V5PiA9IFRhYmxlS2V5IGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICA/IFRUYWJsZXNbVGFibGVLZXldIGV4dGVuZHMgTGVmdEpvaW5lZE1hcmtlclxuICAgID8gdHJ1ZSAvLyBMZWZ0Sm9pbmVkTWFya2Vy6rCAIOyeiOycvOuptCBudWxsYWJsZVxuICAgIDogZmFsc2VcbiAgOiBmYWxzZTtcblxuLy8g6rK966GcIOyhsO2VqSDtl6ztjbwgKHByZWZpeOqwgCDsl4bsnLzrqbQga2V566eMLCDsnojsnLzrqbQgcHJlZml4X19rZXkpXG50eXBlIEpvaW5QYXRoPFByZWZpeCBleHRlbmRzIHN0cmluZywgS2V5IGV4dGVuZHMgc3RyaW5nPiA9IFByZWZpeCBleHRlbmRzIFwiXCJcbiAgPyBLZXlcbiAgOiBgJHtQcmVmaXh9X18ke0tleX1gO1xuXG4vLyBTZWxlY3Qg6rKw6rO8IO2DgOyeheydhCDstpTroaDtlbTso7zripQg7Lmc6rWs7J6F64uI64ukLlxuLy8g7J20IO2DgOyeheydgCBQdXJp7J2YIHNlbGVjdCwgYXBwZW5kU2VsZWN07JeQ7IScIFRSZXN1bHTroZwg7IKs7Jqp65Cp64uI64ukLlxuLy9cbi8vIFNjaGVtYeulvCDsnb3slrTshJwgRkvsnZggbnVsbGFiaWxpdHnsl5Ag65Sw6528IGpvaW7rkJwg6rCd7LK07J2YIO2DgOyeheydhCDstpTroaDtlbTso7zripQg6riw64ql7J20IOyeiOyKteuLiOuLpC5cbi8vIOydtOqyjCDrrLTsiqgg7IaM66as64OQPyBGS+qwgCBudWxsYWJsZeyduOuNsCBsZWZ0Sm9pbuuQmOyXiOuLpOuptCwg7ZW064u5IOqwneyytOuKlCBudWxsYWJsZSDtlbTslbwg7ZWo7J2EIO2DgOyehSDstpTroaDsnLzroZwg67CY7JiB7ZW07KSA64uk64qUIOqyg+yeheuLiOuLpC5cbi8vIOuwmOuptCBGS+qwgCBub24tbnVsbGFibGXsnbTqsbDrgpgg6re464OlIGpvaW7snLzroZwg7J207Ja07KGM64uk66m0IO2VtOuLuSDqsJ3ssrTripQgbm9uLW51bGxhYmxl7ZWgIOqygeuLiOuLpC5cbi8vIOusvOuhoCDqsJ3ssrQg64K067aA7J2YIG51bGxhYmlsaXR564qUIOuYkCDrs4TqsJzroZwg7LaU66Gg65Cp64uI64ukLlxuLy9cbi8vIOyVhOuemOyXkOuPhCBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRo66W8IOu5hOuhr+2VtCBFeHRyYWN0Q29sdW1uVHlwZSwgRXh0cmFjdENvbHVtblR5cGVSYXcg65Ox7J2YIO2DgOyeheydtCDsnojsirXri4jri6QuXG4vLyDsnbTrk6TsnZgg7Jet7ZWg7J2AIOuLpOydjOqzvCDqsJnsirXri4jri6Q6XG4vLyAtIFBhcnNlKjog6rCd7LK0IOugiOuyqOyXkOyEnCDspJHssqkg6rWs7KGw66W8IOyInO2ajO2VmOupsCDqsJ3ssrTsl5AgfCBudWxs7J2EIOu2meydvOyngCDqsrDsoJXtlanri4jri6QuXG4vLyAtIEV4dHJhY3QqOiDtlYTrk5wg66CI67Ko7JeQ7IScIFwidGFibGUuY29sdW1uXCIg6rK966Gc66Gc67aA7YSwIOyLpOygnCDtg4DsnoXsnYQg7LaU7Lac7ZWp64uI64ukLlxuLy9cbi8vIOyYiOyLnDpcbi8vIC5zZWxlY3Qoe1xuLy8gICBpZDogXCJ1c2Vycy5pZFwiLCAgICAgICAgICAgLy8g4oaQIEV4dHJhY3RDb2x1bW5UeXBl7J2YIOqysOqzvOuKlCBudW1iZXLsnoXri4jri6QuXG4vLyAgIGRlcGFydG1lbnQ6IHsgICAgICAgICAgICAgLy8g4oaQIFBhcnNlU2VsZWN0T2JqZWN0SW5uZXLsl5Ag7J2Y7ZW0IG51bGxhYmxlIOqwneyytOuhnCDstpTroaDrkKnri4jri6QuXG4vLyAgICAgaWQ6IFwiZGVwYXJ0bWVudC5pZFwiLCAgICAvLyDihpAgRXh0cmFjdENvbHVtblR5cGVSYXfsnZgg6rKw6rO864qUIG51bWJlcuyeheuLiOuLpC5cbi8vICAgICBuYW1lOiBcImRlcGFydG1lbnQubmFtZVwiIC8vIOKGkCBFeHRyYWN0Q29sdW1uVHlwZVJhd+ydmCDqsrDqs7zripQgc3RyaW5n7J6F64uI64ukLlxuLy8gICB9XG4vLyB9KVxuZXhwb3J0IHR5cGUgUGFyc2VTZWxlY3RPYmplY3Q8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuPiA9IFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGg8VFRhYmxlcywgVFNlbGVjdCwgXCJcIj47XG5cbi8vIOqyveuhnOulvCDstpTsoIHtlZjrqbTshJwgU2VsZWN0IOqysOqzvCDtg4DsnoXsnYQg7LaU66Gg7ZWp64uI64ukLlxudHlwZSBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRoPFxuICBUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbiAgUHJlZml4IGV4dGVuZHMgc3RyaW5nLFxuPiA9IEV4cGFuZDx7XG4gIFtLIGluIGtleW9mIFRTZWxlY3RdOiBUU2VsZWN0W0tdIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxpbmZlciBSPlxuICAgID8gUiBleHRlbmRzIFwic3RyaW5nXCJcbiAgICAgID8gc3RyaW5nXG4gICAgICA6IFIgZXh0ZW5kcyBcIm51bWJlclwiXG4gICAgICAgID8gbnVtYmVyXG4gICAgICAgIDogUiBleHRlbmRzIFwiYm9vbGVhblwiXG4gICAgICAgICAgPyBib29sZWFuXG4gICAgICAgICAgOiBSIGV4dGVuZHMgXCJkYXRlXCJcbiAgICAgICAgICAgID8gRGF0ZVxuICAgICAgICAgICAgOiBSIGV4dGVuZHMgXCJzdHJpbmdbXVwiXG4gICAgICAgICAgICAgID8gc3RyaW5nW11cbiAgICAgICAgICAgICAgOiBuZXZlclxuICAgIDogSXNOZXN0ZWRPYmplY3Q8VFNlbGVjdFtLXT4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFRTZWxlY3RbS10gZXh0ZW5kcyBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz5cbiAgICAgICAgPyBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4gZXh0ZW5kcyB0cnVlIC8vIOyjvOyWtOynhCDthYzsnbTruJTsnbQgRksgbnVsbGFibGXsl5AgbGVmdEpvaW7rkJjsl4jripTsp4Ag7Jes67aA7JeQIOuUsOudvCBzZWxlY3Qg6rKw6rO8IOqwneyytOydmCDtg4DsnoXsnbQg64us65287KeR64uI64ukLlxuICAgICAgICAgID8gRXhwYW5kPFBhcnNlU2VsZWN0T2JqZWN0SW5uZXI8VFRhYmxlcywgVFNlbGVjdFtLXSwgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4+IHwgbnVsbCAvLyDrp4zslb0g7ZW064u57ZWc64uk66m0IO2VtOuLuSDqsJ3ssrQg7J6Q7LK064qUIG51bGxhYmxlIO2VmOupsCxcbiAgICAgICAgICA6IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PiAvLyDqt7jroIfsp4Ag7JWK64uk66m0IG5vbi1udWxsYWJsZSDtlanri4jri6QuXG4gICAgICAgIDogbmV2ZXJcbiAgICAgIDogRXh0cmFjdENvbHVtblR5cGU8VFRhYmxlcywgVFNlbGVjdFtLXSAmIHN0cmluZz47XG59PjtcblxuLy8g7KSR7LKpIOqwneyytCDrgrTrtoDsmqkgLSBsZWZ0Sm9pbiBudWxsYWJsZeydhCDqsJ3ssrQg66CI67Ko7JeQ7IScIOydtOuvuCDsspjrpqztlojsnLzrr4DroZwg7ZWE65Oc64qUIOybkOuzuCDtg4DsnoXsnYQg7IKs7Jqp7ZWp64uI64ukLlxuLy8gUGFyc2VTZWxlY3RPYmplY3RXaXRoUGF0aOyZgCDqsbDsnZgg64+Z7J287ZWY64KYLCDrp4jsp4Drp4nsl5AgRXh0cmFjdENvbHVtblR5cGUg64yA7IugIEV4dHJhY3RDb2x1bW5UeXBlUmF366W8IOyCrOyaqe2VmOyXrFxuLy8g7ZWE65OcIOugiOuyqOyXkOyEnCDspJHrs7XsnLzroZwgfCBudWxs7J20IOy2lOqwgOuQmOuKlCDqsoPsnYQg67Cp7KeA7ZWp64uI64ukLlxudHlwZSBQYXJzZVNlbGVjdE9iamVjdElubmVyPFxuICBUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbiAgUHJlZml4IGV4dGVuZHMgc3RyaW5nLFxuPiA9IEV4cGFuZDx7XG4gIFtLIGluIGtleW9mIFRTZWxlY3RdOiBUU2VsZWN0W0tdIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxpbmZlciBSPlxuICAgID8gUiBleHRlbmRzIFwic3RyaW5nXCJcbiAgICAgID8gc3RyaW5nXG4gICAgICA6IFIgZXh0ZW5kcyBcIm51bWJlclwiXG4gICAgICAgID8gbnVtYmVyXG4gICAgICAgIDogUiBleHRlbmRzIFwiYm9vbGVhblwiXG4gICAgICAgICAgPyBib29sZWFuXG4gICAgICAgICAgOiBSIGV4dGVuZHMgXCJkYXRlXCJcbiAgICAgICAgICAgID8gRGF0ZVxuICAgICAgICAgICAgOiBSIGV4dGVuZHMgXCJzdHJpbmdbXVwiXG4gICAgICAgICAgICAgID8gc3RyaW5nW11cbiAgICAgICAgICAgICAgOiBuZXZlclxuICAgIDogSXNOZXN0ZWRPYmplY3Q8VFNlbGVjdFtLXT4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFRTZWxlY3RbS10gZXh0ZW5kcyBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz5cbiAgICAgICAgPyBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4gZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgPyBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj4gfCBudWxsXG4gICAgICAgICAgOiBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj5cbiAgICAgICAgOiBuZXZlclxuICAgICAgOiBFeHRyYWN0Q29sdW1uVHlwZVJhdzxUVGFibGVzLCBUU2VsZWN0W0tdICYgc3RyaW5nPjsgLy8gbGVmdEpvaW4gbnVsbGFibGUg66y07IucXG59PjtcblxuLy8g7Lus65+8IOqyveuhnOyXkOyEnCDtg4DsnoXsnYQg7LaU7Lac7ZWp64uI64ukLiBMZWZ0Sm9pbmVkTWFya2Vy6rCAIOyeiOycvOuptCB8IG51bGzsnYQg7LaU6rCA7ZWp64uI64ukLlxuLy8g7LWc7IOB7JyEIHNlbGVjdCDtlYTrk5zsl5DshJwg7IKs7Jqp65Cp64uI64ukLlxuZXhwb3J0IHR5cGUgRXh0cmFjdENvbHVtblR5cGU8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nLFxuPiA9IFBhdGggZXh0ZW5kcyBgJHtpbmZlciBUQWxpYXN9LiR7aW5mZXIgVENvbHVtbn1gXG4gID8gVEFsaWFzIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8gVENvbHVtbiBleHRlbmRzIGtleW9mIFRUYWJsZXNbVEFsaWFzXVxuICAgICAgPyBUVGFibGVzW1RBbGlhc10gZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgICAgID8gVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dIHwgbnVsbCAvLyBMRUZUIEpPSU4gKG51bGxhYmxlIEZLKSDihpIgbnVsbGFibGVcbiAgICAgICAgOiBUVGFibGVzW1RBbGlhc11bVENvbHVtbl0gLy8gSU5ORVIgSk9JTiDrmJDripQgbm9uLW51bGwgRksgbGVmdEpvaW4g4oaSIG5vbi1udWxsYWJsZVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXJcbiAgOiBJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICA/IFBhdGggZXh0ZW5kcyBrZXlvZiBUVGFibGVzW2tleW9mIFRUYWJsZXNdXG4gICAgICA/IFRUYWJsZXNba2V5b2YgVFRhYmxlc11bUGF0aF1cbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vLyDsu6zrn7wg6rK966Gc7JeQ7IScIO2DgOyeheydhCDstpTstpztlanri4jri6QuIGxlZnRKb2luIOyXrOu2gOyZgCDqtIDqs4Tsl4bsnbQg7JuQ67O4IO2DgOyeheydhCDrsJjtmZjtlanri4jri6QuXG4vLyDspJHssqkg6rCd7LK0IOuCtOu2gCDtlYTrk5zsl5DshJwg7IKs7Jqp65Cp64uI64ukLiAo6rCd7LK0IOugiOuyqOyXkOyEnCDsnbTrr7ggfCBudWxsIOyymOumrOqwgCDsmYTro4zrkJjsl4jsnLzrr4DroZwpXG50eXBlIEV4dHJhY3RDb2x1bW5UeXBlUmF3PFxuICBUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgUGF0aCBleHRlbmRzIHN0cmluZyxcbj4gPSBQYXRoIGV4dGVuZHMgYCR7aW5mZXIgVEFsaWFzfS4ke2luZmVyIFRDb2x1bW59YFxuICA/IFRBbGlhcyBleHRlbmRzIGtleW9mIFRUYWJsZXNcbiAgICA/IFRDb2x1bW4gZXh0ZW5kcyBrZXlvZiBUVGFibGVzW1RBbGlhc11cbiAgICAgID8gVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dIC8vIGxlZnRKb2luIOyXrOu2gOyZgCDqtIDqs4Tsl4bsnbQg7JuQ67O4IO2DgOyehVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXJcbiAgOiBJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICA/IFBhdGggZXh0ZW5kcyBrZXlvZiBUVGFibGVzW2tleW9mIFRUYWJsZXNdXG4gICAgICA/IFRUYWJsZXNba2V5b2YgVFRhYmxlc11bUGF0aF1cbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vLyBXaGVyZSDsobDqsbQg6rCd7LK0IO2DgOyehVxuLy8g7JiIOiB7IFwidS5pZFwiOiAxLCBcInUuc3RhdHVzXCI6IFwiYWN0aXZlXCIgfVxuZXhwb3J0IHR5cGUgV2hlcmVDb25kaXRpb248VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBba2V5IGluIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5dPzogRXh0cmFjdENvbHVtblR5cGU8VFRhYmxlcywga2V5ICYgc3RyaW5nPjtcbn07XG5cbi8vIEZ1bGx0ZXh0IGluZGV4IOy7rOufvCDstpTstpwg7YOA7J6FXG5leHBvcnQgdHlwZSBGdWxsdGV4dENvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBUVGFibGVzW1RBbGlhc10gZXh0ZW5kcyB7XG4gICAgW0sgaW4gRnVsbHRleHRLZXldOiByZWFkb25seSAoaW5mZXIgQ29sKVtdO1xuICB9XG4gICAgPyBDb2wgZXh0ZW5kcyBzdHJpbmdcbiAgICAgID8gYCR7VEFsaWFzICYgc3RyaW5nfS4ke0NvbH1gXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlcjtcbn1ba2V5b2YgVFRhYmxlc107XG5cbi8vIOu5hOq1kCDsl7DsgrDsnpBcbmV4cG9ydCB0eXBlIENvbXBhcmlzb25PcGVyYXRvciA9IFwiPVwiIHwgXCI+XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPD1cIiB8IFwiPD5cIiB8IFwiIT1cIjtcbi8vIOyhsOqxtCDsl7DsgrDsnpA6IOu5hOq1kCDsl7DsgrDsnpAgKyDtjKjthLQg66ek7LmtIOyXsOyCsOyekFxuZXhwb3J0IHR5cGUgV2hlcmVPcGVyYXRvciA9IENvbXBhcmlzb25PcGVyYXRvciB8IFwibGlrZVwiIHwgXCJub3QgbGlrZVwiIHwgXCJpbGlrZVwiIHwgXCJub3QgaWxpa2VcIjtcblxuLy8gU1FMIEV4cHJlc3Npb24g7YOA7J6FIOygleydmFxuZXhwb3J0IHR5cGUgU3FsRXhwcmVzc2lvbjxUIGV4dGVuZHMgXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwiZGF0ZVwiIHwgXCJzdHJpbmdbXVwiPiA9IHtcbiAgX3R5cGU6IFwic3FsX2V4cHJlc3Npb25cIjsgLy8g65iQ64qUIFwiY29tcHV0ZWRfdmFsdWVcIlxuICBfcmV0dXJuOiBUO1xuICBfc3FsOiBzdHJpbmc7XG59O1xuXG4vLyDqsrDqs7wg7YOA7J6FIOqwgOuPheyEseydhCDsnITtlZwg7YOA7J6FIO2ZleyepVxuZXhwb3J0IHR5cGUgRXhwYW5kPFQ+ID0gVCBleHRlbmRzIGFueVtdXG4gID8geyBbSyBpbiBrZXlvZiBUWzBdXTogVFswXVtLXSB9W10gLy8g67Cw7Je07J2066m0IOyyqyDrsojsp7gg7JqU7IaM66W8IEV4cGFuZO2VmOqzoCDrsLDsl7TroZwg6rCQ7IyIXG4gIDogVCBleHRlbmRzIG9iamVjdFxuICAgID8geyBbSyBpbiBrZXlvZiBUXTogVFtLXSB9XG4gICAgOiBUO1xuXG50eXBlIElzU2luZ2xlS2V5PFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IGtleW9mIFRUYWJsZXMgZXh0ZW5kcyBpbmZlciBLXG4gID8gSyBleHRlbmRzIGtleW9mIFRUYWJsZXNcbiAgICA/IGtleW9mIFRUYWJsZXMgZXh0ZW5kcyBLIC8vIOyXreuwqe2WpSDssrTtgazroZwg64uo7J28IO2CpCDtmZXsnbhcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZVxuICAgIDogZmFsc2VcbiAgOiBmYWxzZTtcblxuZXhwb3J0IHR5cGUgU2luZ2xlVGFibGVWYWx1ZTxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPVxuICBJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWUgPyBUVGFibGVzW2tleW9mIFRUYWJsZXNdIDogbmV2ZXI7XG5cbi8vIF9faGFzRGVmYXVsdF9f7JeQIO2PrO2VqOuQnCDtgqTrk6TsnYQgUHVyaVRhYmxlPFQ+7J2YIO2CpOuhnCDsoJztlZxcbnR5cGUgSGFzRGVmYXVsdEtleXM8VD4gPSBUIGV4dGVuZHMgeyBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgKGluZmVyIEspW10gfVxuICA/IEV4dHJhY3Q8Sywga2V5b2YgUHVyaVRhYmxlPFQ+PlxuICA6IG5ldmVyO1xuXG4vLyBfX2dlbmVyYXRlZF9f7JeQIO2PrO2VqOuQnCDtgqTrk6QgKElOU0VSVCDsi5wg7KCc7Jm47ZW07JW8IO2VqClcbnR5cGUgR2VuZXJhdGVkS2V5czxUPiA9IFQgZXh0ZW5kcyB7IF9fZ2VuZXJhdGVkX186IHJlYWRvbmx5IChpbmZlciBLKVtdIH1cbiAgPyBFeHRyYWN0PEssIGtleW9mIFB1cmlUYWJsZTxUPj5cbiAgOiBuZXZlcjtcblxuLy8gSW5zZXJ0IO2DgOyehTog66mU7YOA642w7J207YSwIOygnOqxsCDtm4QsIF9faGFzRGVmYXVsdF9fIOy7rOufvOuTpOunjCBvcHRpb25hbOuhnCDsspjrpqwsIF9fZ2VuZXJhdGVkX18g7Lus65+87J2AIOyZhOyghO2eiCDsoJzsmbhcbmV4cG9ydCB0eXBlIEluc2VydERhdGE8VD4gPSBPbWl0PFxuICBQdXJpVGFibGU8VD4sXG4gIEludGVybmFsVHlwZUtleXMgfCBIYXNEZWZhdWx0S2V5czxUPiB8IEdlbmVyYXRlZEtleXM8VD5cbj4gJiB7XG4gIFtLIGluIEhhc0RlZmF1bHRLZXlzPFQ+XT86IFB1cmlUYWJsZTxUPltLXTtcbn07XG5cbi8vIEluc2VydCBSZXN1bHQg7YOA7J6FXG5leHBvcnQgdHlwZSBJbnNlcnRSZXN1bHQgPSBQaWNrPFF1ZXJ5UmVzdWx0PGFueT4sIFwiY29tbWFuZFwiIHwgXCJyb3dDb3VudFwiIHwgXCJyb3dzXCIgfCBcIm9pZFwiPjtcblxuLy8gU3Vic2V0UXVlcnnrpbwg7JyE7ZWcIO2DgOyehSDsnKDti7jrpqzti7BcbmV4cG9ydCB0eXBlIEV4dHJhY3RUVGFibGVzPFQgZXh0ZW5kcyBQdXJpPGFueSwgYW55LCBhbnk+PiA9XG4gIFQgZXh0ZW5kcyBQdXJpPGFueSwgaW5mZXIgVFRhYmxlcywgYW55PiA/IFRUYWJsZXMgOiBuZXZlcjtcbmV4cG9ydCB0eXBlIFVuaW9uRXh0cmFjdGVkVFRhYmxlczxcbiAgU3Vic2V0S2V5IGV4dGVuZHMgc3RyaW5nLFxuICBTdWJzZXRRdWVyaWVzIGV4dGVuZHMgUmVjb3JkPFN1YnNldEtleSwgUHVyaVN1YnNldEZuPixcbj4gPSB7XG4gIFtLIGluIFN1YnNldEtleV06IEV4dHJhY3RUVGFibGVzPFJldHVyblR5cGU8U3Vic2V0UXVlcmllc1tLXT4+O1xufVtTdWJzZXRLZXldO1xuXG4vLyBPTiBDT05GTElDVCDrjIDsg4Eg7YOA7J6FXG4vLyAtIOuLqOydvCDsu6zrn7w6IFwiZW1haWxcIlxuLy8gLSDrs7XsiJgg7Lus65+8OiBbXCJ1c2VyX2lkXCIsIFwicHJvZHVjdF9pZFwiXVxuZXhwb3J0IHR5cGUgT25Db25mbGljdFRhcmdldCA9IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4vLyBPTiBDT05GTElDVCDslaHshZgg7YOA7J6FXG4vLyAtIFwibm90aGluZ1wiOiBETyBOT1RISU5HXG4vLyAtIHsgdXBkYXRlOiBbLi4uXSB9OiBETyBVUERBVEVcbmV4cG9ydCB0eXBlIE9uQ29uZmxpY3RBY3Rpb248VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9XG4gIHwgXCJub3RoaW5nXCJcbiAgfCB7XG4gICAgICB1cGRhdGU6XG4gICAgICAgIHwgQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPltdIC8vIOuwsOyXtCDtmJXtg5wgLSBbXCJuYW1lXCIsIFwiZW1haWxcIl1cbiAgICAgICAgfCBXaGVyZUNvbmRpdGlvbjxUVGFibGVzPjsgLy8g6rCd7LK0IO2Yle2DnCAtIHsgbmFtZTogXCJKb2huXCIsIGNvdW50OiBQdXJpLnJhd051bWJlciguLi4pIH1cbiAgICB9O1xuXG4vLyBGSyDsu6zrn7zrqoUg7LaU7LacIOycoO2LuOumrO2LsCDtg4DsnoUgLSBEYXRhYmFzZUZvcmVpZ25LZXlzIO2ZnOyaqVxuZXhwb3J0IHR5cGUgRm9yZWlnbktleUNvbHVtbnM8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPERhdGFiYXNlU2NoZW1hRXh0ZW5kPj4gPVxuICBUVGFibGUgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZUZvcmVpZ25LZXlzID8gRGF0YWJhc2VGb3JlaWduS2V5c1tUVGFibGVdIDogbmV2ZXI7XG5cbi8vIFVuaW9u7J2EIEludGVyc2VjdGlvbuycvOuhnCDrs4DtmZjtlZjripQg7Jyg7Yu466as7YuwXG50eXBlIFVuaW9uVG9JbnRlcnNlY3Rpb248VT4gPSAoVSBleHRlbmRzIGFueSA/IChrOiBVKSA9PiB2b2lkIDogbmV2ZXIpIGV4dGVuZHMgKGs6IGluZmVyIEkpID0+IHZvaWRcbiAgPyBJXG4gIDogbmV2ZXI7XG5cbi8vIFNlbGVjdEFsbCDsi5wg66qo65OgIOyhsOyduOuQnCDthYzsnbTruJTsnZgg7Lus65+8IO2PrO2VqFxuZXhwb3J0IHR5cGUgU2VsZWN0QWxsUmVzdWx0PFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IFVuaW9uVG9JbnRlcnNlY3Rpb248XG4gIHtcbiAgICBbSyBpbiBrZXlvZiBUVGFibGVzXTogVFRhYmxlc1tLXSBleHRlbmRzIGluZmVyIFRcbiAgICAgID8gVCBleHRlbmRzIExlZnRKb2luZWRNYXJrZXJcbiAgICAgICAgPyBQYXJ0aWFsPE9taXRJbnRlcm5hbFR5cGVLZXlzPFQ+PiAvLyBMRUZUIEpPSU7snYAgbnVsbGFibGUsIOuplO2DgOuNsOydtO2EsCDsoJzqsbBcbiAgICAgICAgOiBPbWl0SW50ZXJuYWxUeXBlS2V5czxUPiAvLyBJTk5FUiBKT0lO7J2AIG5vbi1udWxsYWJsZSwg66mU7YOA642w7J207YSwIOygnOqxsFxuICAgICAgOiBuZXZlcjtcbiAgfVtrZXlvZiBUVGFibGVzXVxuPjtcblxuLy8gRlRTIO2DgOyehVxudHlwZSBUc1F1ZXJ5UGFyc2VyID0gXCJ0b190c3F1ZXJ5XCIgfCBcInBsYWludG9fdHNxdWVyeVwiIHwgXCJwaHJhc2V0b190c3F1ZXJ5XCIgfCBcIndlYnNlYXJjaF90b190c3F1ZXJ5XCI7XG5leHBvcnQgdHlwZSBUc1F1ZXJ5Q29uZmlnID0gXCJzaW1wbGVcIiB8IFwiZW5nbGlzaFwiO1xuZXhwb3J0IHR5cGUgVHNRdWVyeU9wdGlvbnMgPSB7XG4gIHBhcnNlcj86IFRzUXVlcnlQYXJzZXI7XG4gIGNvbmZpZz86IFRzUXVlcnlDb25maWc7XG59O1xuXG5leHBvcnQgdHlwZSBUc0hpZ2hsaWdodE9wdGlvbnMgPSB7XG4gIC8qKiDsv7zrpqwg67OA7ZmYIO2VqOyImCAo6riw67O46rCSOiBcIndlYnNlYXJjaF90b190c3F1ZXJ5XCIpICovXG4gIHBhcnNlcj86IFRzUXVlcnlQYXJzZXI7XG4gIC8qKiDthY3siqTtirgg6rKA7IOJIOyEpOyglSAo6riw67O46rCSOiBcInNpbXBsZVwiKSAqL1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xuICAvKiog7LWc64yAIOuLqOyWtCDsiJggKOq4sOuzuOqwkjogMzUpICovXG4gIG1heFdvcmRzPzogbnVtYmVyO1xuICAvKiog7LWc7IaMIOuLqOyWtCDsiJggKOq4sOuzuOqwkjogMTUpICovXG4gIG1pbldvcmRzPzogbnVtYmVyO1xuICAvKiog7Zek65Oc65287J24IOyLnOyekS/rgZ3sl5DshJwg7KCc6rGw7ZWgIOynp+ydgCDri6jslrQg6ri47J20ICjquLDrs7jqsJI6IDMpICovXG4gIHNob3J0V29yZD86IG51bWJlcjtcbiAgLyoqIHRydWXrqbQg7KCE7LK0IOusuOyEnOulvCDtl6Trk5zrnbzsnbjsnLzroZwg7IKs7JqpICjquLDrs7jqsJI6IGZhbHNlKSAqL1xuICBoaWdobGlnaHRBbGw/OiBib29sZWFuO1xuICAvKiog7ZGc7Iuc7ZWgIOy1nOuMgCDthY3siqTtirgg7KGw6rCBIOyImCAo6riw67O46rCSOiAwLCDsobDqsIEg66+47IKs7JqpKSAqL1xuICBtYXhGcmFnbWVudHM/OiBudW1iZXI7XG4gIC8qKiDsv7zrpqwg64uo7Ja0IOyLnOyekSDqtazrtoTsnpAgKOq4sOuzuOqwkjogXCI8Yj5cIikgKi9cbiAgc3RhcnRTZWw/OiBzdHJpbmc7XG4gIC8qKiDsv7zrpqwg64uo7Ja0IOuBnSDqtazrtoTsnpAgKOq4sOuzuOqwkjogXCI8L2I+XCIpICovXG4gIHN0b3BTZWw/OiBzdHJpbmc7XG4gIC8qKiDsobDqsIEg6rWs67aE7J6QICjquLDrs7jqsJI6IFwiIC4uLiBcIikgKi9cbiAgZnJhZ21lbnREZWxpbWl0ZXI/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBUc1JhbmtPcHRpb25zID0ge1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xuICAvKiog6rCA7KSR7LmYIOuwsOyXtCBbRCwgQywgQiwgQV0gKOq4sOuzuOqwkjogWzAuMSwgMC4yLCAwLjQsIDEuMF0pICovXG4gIHdlaWdodHM/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgLyoqXG4gICAqIOygleq3nO2ZlCDsmLXshZhcbiAgICogMDog66y47IScIOq4uOydtCDrrLTsi5wgKOq4sOuzuOqwkilcbiAgICogMTogMSArIGxvZyjrrLjshJwg6ri47J20KeuhnCDrgpjriJRcbiAgICogMjog66y47IScIOq4uOydtOuhnCDrgpjriJRcbiAgICogNDog7Y+J6regIOyhsO2ZlCDqsbDrpqzroZwg64KY64iUICh0c19yYW5rX2Nk66eMKVxuICAgKiA4OiDqs6DsnKAg64uo7Ja0IOyImOuhnCDrgpjriJRcbiAgICogMTY6IDEgKyBsb2co6rOg7JygIOuLqOyWtCDsiJgp66GcIOuCmOuIlFxuICAgKiAzMjogcmFuay8ocmFuaysxKSAtPiAwfjEg7IKs7J207J2YIOqwkuycvOuhnCDsiqTsvIDsnbzrp4FcbiAgICpcbiAgICog67mE7Yq466eI7Iqk7YGs66W8IOyCrOyaqe2VmOyXrCDsmLXshZjsnYQg7KGw7ZWp7ZWgIOyImCDsnojsnYxcbiAgICog7JiIOiA4IHwgMzIgLT4g6rOg7JygIOuLqOyWtCDsiJjroZwg64KY64iE6rOgIDB+MSDsiqTsvIDsnbzrp4FcbiAgICovXG4gIG5vcm1hbGl6YXRpb24/OiBudW1iZXI7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNGQUFzRixHQTJhdEYsV0FtQkUifQ==
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBQdXJpLnR5cGVzLnRz64qUIOuLpOyWke2VnCDtg4DsnoXsnYQg7IKs7Jqp7ZWY6rOgIOyeiOyKteuLiOuLpC4gKi9cblxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCB9IGZyb20gXCJwZ1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUZvcmVpZ25LZXlzLCBEYXRhYmFzZVNjaGVtYUV4dGVuZCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHR5cGUgeyBQdXJpU3Vic2V0Rm4gfSBmcm9tIFwiLi9wdXJpLXN1YnNldC50eXBlc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8g64K067aAIO2DgOyehSDtgqQgKOuplO2DgOuNsOydtO2EsClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG50eXBlIEZ1bGx0ZXh0S2V5ID0gXCJfX2Z1bGx0ZXh0X19cIjtcbnR5cGUgVmlydHVhbEtleSA9IFwiX192aXJ0dWFsX19cIjtcbnR5cGUgTGVmdEpvaW5lZEtleSA9IFwiX19sZWZ0Sm9pbmVkX19cIjtcbnR5cGUgSGFzRGVmYXVsdCA9IFwiX19oYXNEZWZhdWx0X19cIjtcbnR5cGUgR2VuZXJhdGVkS2V5ID0gXCJfX2dlbmVyYXRlZF9fXCI7XG50eXBlIFZlY3RvcktleSA9IFwiX192ZWN0b3JfX1wiO1xudHlwZSBWaXJ0dWFsUXVlcnlLZXkgPSBcIl9fdmlydHVhbF9xdWVyeV9fXCI7XG5cbnR5cGUgSW50ZXJuYWxUeXBlS2V5cyA9XG4gIHwgRnVsbHRleHRLZXlcbiAgfCBWaXJ0dWFsS2V5XG4gIHwgTGVmdEpvaW5lZEtleVxuICB8IEhhc0RlZmF1bHRcbiAgfCBHZW5lcmF0ZWRLZXlcbiAgfCBWZWN0b3JLZXlcbiAgfCBWaXJ0dWFsUXVlcnlLZXk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyDtg4DsnoUg7Jyg7Yu466as7YuwXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBfX3ZlY3Rvcl9fIOuplO2DgOuNsOydtO2EsOyXkOyEnCDrsqHthLAg7Lus65+8IOy2lOy2nFxudHlwZSBWZWN0b3JDb2x1bW5LZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmVjdG9yS2V5XTogcmVhZG9ubHkgKGluZmVyIFYpW10gfVxuICA/IFYgJiBzdHJpbmdcbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgVmVjdG9yQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPVxuICB8IHtcbiAgICAgIFtUQWxpYXMgaW4ga2V5b2YgVFRhYmxlc106IGAke1RBbGlhcyAmIHN0cmluZ30uJHtWZWN0b3JDb2x1bW5LZXlzPFRUYWJsZXNbVEFsaWFzXT59YDtcbiAgICB9W2tleW9mIFRUYWJsZXNdXG4gIHwgKElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZSA/IFZlY3RvckNvbHVtbktleXM8VFRhYmxlc1trZXlvZiBUVGFibGVzXT4gOiBuZXZlcik7XG5cbi8vIO2FjOydtOu4lOuqhSDtg4DsnoVcbmV4cG9ydCB0eXBlIFRhYmxlTmFtZTxUU2NoZW1hPiA9IGtleW9mIFRTY2hlbWEgJiBzdHJpbmc7XG5cbi8vIO2FjOydtOu4lOydmCBpZChQSykg7YOA7J6F7J2EIOy2lOy2nFxuZXhwb3J0IHR5cGUgSWRUeXBlPFRTY2hlbWEsIFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+ID0gVFNjaGVtYVtUVGFibGVdIGV4dGVuZHMgeyBpZDogaW5mZXIgSSB9XG4gID8gSVxuICA6IG51bWJlcjtcblxuLy8gdmlydHVhbCDsu6zrn7wg7YOA7J6FIOy2lOy2nFxudHlwZSBWaXJ0dWFsS2V5czxUPiA9IFQgZXh0ZW5kcyB7IFtLIGluIFZpcnR1YWxLZXldOiByZWFkb25seSAoaW5mZXIgVilbXSB9ID8gViAmIHN0cmluZyA6IG5ldmVyO1xuXG4vLyB2aXJ0dWFsIOy7rOufvCDsoJzqsbBcbnR5cGUgU3RyaXBWaXJ0dWFsPFQ+ID0gT21pdDxULCBWaXJ0dWFsS2V5czxUPj47XG5cbi8vIExFRlQgSk9JTiDrp4jsu6QgLSBudWxsYWJsZSBGS+uhnCDsobDsnbjrkJwg7YWM7J2067iUXG4vLyDsnbQg66eI7Luk64qUIG51bGxhYmxlIEZLICsgbGVmdEpvaW4g7KGw7ZWp7JeQ7ISc66eMIOu2meyKteuLiOuLpC5cbi8vIGpvaW4gKyBGSyBudWxsYWJsZSAtPiDslYgg67aZ7J2MXG4vLyBqb2luICsgRksgbm9uLW51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGxlZnRKb2luICsgRksgbm9uLW51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGxlZnRKb2luICsgRksgbnVsbGFibGUgLT4g67aZ7J2MIVxuZXhwb3J0IHR5cGUgTGVmdEpvaW5lZE1hcmtlciA9IHsgW0sgaW4gTGVmdEpvaW5lZEtleV06IHRydWUgfTtcblxuLy8g66mU7YOA642w7J207YSwIO2VhOuTnCDsoJzsmbjtlZwg7Iuk7KCcIOyXlO2LsO2LsCDsu6zrn7xcbmV4cG9ydCB0eXBlIENvbHVtbktleXM8VD4gPSBFeGNsdWRlPGtleW9mIFN0cmlwVmlydHVhbDxUPiwgSW50ZXJuYWxUeXBlS2V5cz4gJiBzdHJpbmc7XG5cbi8vIHZpcnR1YWwg7Lus65+8IOygnOqxsCDtm4QgX19mdWxsdGV4dF9fIOycoOyngFxuZXhwb3J0IHR5cGUgUHVyaVRhYmxlPFQ+ID0gT21pdDxTdHJpcFZpcnR1YWw8VD4sIFZpcnR1YWxLZXk+O1xuXG4vLyDrgrTrtoAg7YOA7J6FIO2CpCDsoJzsmbggKOyLpOygnCDsu6zrn7zrp4wg64Ko6rmAKVxuZXhwb3J0IHR5cGUgT21pdEludGVybmFsVHlwZUtleXM8VD4gPSBPbWl0PFQsIEludGVybmFsVHlwZUtleXM+O1xuXG4vLyBUVGFibGVz7J2YIOuqqOuToCDthYzsnbTruJTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCDsu6zrn7wg6rK966GcXG5leHBvcnQgdHlwZSBBdmFpbGFibGVDb2x1bW5zPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IENvbHVtbktleXM8VFRhYmxlc1trZXlvZiBUVGFibGVzXT4gLy8g64uo7J28IO2FjOydtOu4lOydtOuptCDsu6zrn7zrqoXrp4zrj4Qg7ZeI7JqpXG4gICAgICA6IG5ldmVyKTtcblxuLy8g7Iir7J6QIO2DgOyehSDsu6zrn7zrp4wg7LaU7Lac7ZWY64qUIOycoO2LuOumrO2LsCDtg4DsnoVcbnR5cGUgTnVtZXJpY0NvbHVtbktleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50IHwgbnVsbCB8IHVuZGVmaW5lZCA/IEsgOiBuZXZlcjtcbn1ba2V5b2YgVF0gJlxuICBzdHJpbmc7XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsiKvsnpAg7YOA7J6FIOy7rOufvOunjCDstpTstpxcbmV4cG9ydCB0eXBlIE51bWVyaWNDb2x1bW5zPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke051bWVyaWNDb2x1bW5LZXlzPFRUYWJsZXNbVEFsaWFzXT59YDtcbiAgICB9W2tleW9mIFRUYWJsZXNdXG4gIHwgKElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBOdW1lcmljQ29sdW1uS2V5czxUVGFibGVzW2tleW9mIFRUYWJsZXNdPiAvLyDri6jsnbwg7YWM7J2067iU7J2066m0IOy7rOufvOuqheunjOuPhCDtl4jsmqlcbiAgICAgIDogbmV2ZXIpO1xuXG4vLyBHcm91cCBCeSwgT3JkZXIgQnksIEhhdmluZyDrk7Hsl5DshJwg7ISg7YOdIOqwgOuKpe2VnCDsu6zrn7xcbmV4cG9ydCB0eXBlIFJlc3VsdEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sIFRSZXN1bHQgPSBhbnk+ID1cbiAgfCBBdmFpbGFibGVDb2x1bW5zPFRUYWJsZXM+XG4gIHwgYCR7a2V5b2YgVFJlc3VsdCAmIHN0cmluZ31gO1xuXG4vLyBTZWxlY3Qg6rCSIO2DgOyehSDtmZXsnqUgKOuLqOydvCDsu6zrn7wg65iQ64qUIFNRTCDtkZztmITsi50pXG5leHBvcnQgdHlwZSBTZWxlY3RWYWx1ZTxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPVxuICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5cbiAgfCBTcWxFeHByZXNzaW9uPFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIj47XG5cbi8vIOykkeyyqSBTZWxlY3Qg6rCd7LK0IO2DgOyehSAo7J6s6reA7KCBKVxuLy8g7JiIOiB7IHBhcmVudDogeyBpZDogXCJwYXJlbnQuaWRcIiwgbmFtZTogXCJwYXJlbnQubmFtZVwiIH0gfVxuZXhwb3J0IHR5cGUgTmVzdGVkU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IHtcbiAgW2tleTogc3RyaW5nXTogU2VsZWN0VmFsdWU8VFRhYmxlcz4gfCBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz47XG59O1xuXG4vLyBTZWxlY3Qg6rCd7LK0IO2DgOyehSAoZmxhdCDrmJDripQg7KSR7LKpIO2XiOyaqSlcbmV4cG9ydCB0eXBlIFNlbGVjdE9iamVjdDxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz47XG5cbi8vIOqwkuydtCDspJHssqkg6rCd7LK07J247KeAIO2MkOuzhO2VmOuKlCDtl6ztjbwg7YOA7J6FXG50eXBlIElzTmVzdGVkT2JqZWN0PFQ+ID0gVCBleHRlbmRzIHN0cmluZ1xuICA/IGZhbHNlXG4gIDogVCBleHRlbmRzIFNxbEV4cHJlc3Npb248YW55PlxuICAgID8gZmFsc2VcbiAgICA6IFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG5cbi8vIOy7rOufvOydtCBudWxsYWJsZeyduOyngCDtmZXsnbggKOyKpO2CpOuniOyXkOyEnCDsp4HsoJEg7LaU7LacKVxuLy8g7JiIOiBJc051bGxhYmxlQ29sdW1uPFRUYWJsZXMsIFwiZW1wbG95ZWVzLmRlcGFydG1lbnRfaWRcIj4g4oaSIGRlcGFydG1lbnRfaWTqsIAgbnVtYmVyIHwgbnVsbOydtOuptCB0cnVlXG5leHBvcnQgdHlwZSBJc051bGxhYmxlQ29sdW1uPFxuICBUVGFibGVzLFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nLFxuPiA9IFBhdGggZXh0ZW5kcyBgJHtpbmZlciBUQWxpYXN9LiR7aW5mZXIgVENvbHVtbn1gXG4gID8gVEFsaWFzIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8gVENvbHVtbiBleHRlbmRzIGtleW9mIFRUYWJsZXNbVEFsaWFzXVxuICAgICAgPyBudWxsIGV4dGVuZHMgVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlXG4gICAgICA6IGZhbHNlXG4gICAgOiBmYWxzZVxuICA6IGZhbHNlO1xuXG4vLyBGSyBudWxsYWJsZSDsl6zrtoDsl5Ag65Sw66W4IOuniOy7pCDtg4DsnoUg6rKw7KCVXG4vLyBudWxsYWJsZSBGS+uhnCBsZWZ0Sm9pbiDihpIgTGVmdEpvaW5lZE1hcmtlciAo6rCd7LK0IOyekOyytOqwgCBudWxs7J28IOyImCDsnojsnYwpXG4vLyBub24tbnVsbCBGS+uhnCBsZWZ0Sm9pbiDihpIg66eI7LukIOyXhuydjCAo67aA66qo6rCAIOyeiOycvOuptCDsnpDsi53rj4Qg67CY65Oc7IucIOyeiOydjClcbmV4cG9ydCB0eXBlIExlZnRKb2luTWFya2VyRm9yPFRUYWJsZXMsIFBhdGggZXh0ZW5kcyBzdHJpbmc+ID0gSXNOdWxsYWJsZUNvbHVtbjxcbiAgVFRhYmxlcyxcbiAgUGF0aFxuPiBleHRlbmRzIHRydWVcbiAgPyBMZWZ0Sm9pbmVkTWFya2VyXG4gIDoge307XG5cbi8vIOyjvOyWtOynhCDthYzsnbTruJTsnbQgRksgbnVsbGFibGXroZwgbGVmdEpvaW4g65CcIO2FjOydtOu4lOyduOyngCDtmZXsnbjtlanri4jri6QuXG4vLyDsgqzsi6QgTGVmdEpvaW5NYXJrZXLqsIAg67aZ7JeI64qU7KeAIO2ZleyduO2VmOuKlOqyjCDri6TsnoXri4jri6QuXG4vLyDsnbQg66eI7Luk64qUIEZLIG51bGxhYmxlICsgbGVmdEpvaW4g7KGw7ZWp7JeQ7ISc66eMIOu2meyKteuLiOuLpC5cbnR5cGUgSXNOdWxsYWJsZUpvaW5lZFRhYmxlPFRUYWJsZXMsIFRhYmxlS2V5PiA9IFRhYmxlS2V5IGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICA/IFRUYWJsZXNbVGFibGVLZXldIGV4dGVuZHMgTGVmdEpvaW5lZE1hcmtlclxuICAgID8gdHJ1ZSAvLyBMZWZ0Sm9pbmVkTWFya2Vy6rCAIOyeiOycvOuptCBudWxsYWJsZVxuICAgIDogZmFsc2VcbiAgOiBmYWxzZTtcblxuLy8g6rK966GcIOyhsO2VqSDtl6ztjbwgKHByZWZpeOqwgCDsl4bsnLzrqbQga2V566eMLCDsnojsnLzrqbQgcHJlZml4X19rZXkpXG50eXBlIEpvaW5QYXRoPFByZWZpeCBleHRlbmRzIHN0cmluZywgS2V5IGV4dGVuZHMgc3RyaW5nPiA9IFByZWZpeCBleHRlbmRzIFwiXCJcbiAgPyBLZXlcbiAgOiBgJHtQcmVmaXh9X18ke0tleX1gO1xuXG4vLyBTZWxlY3Qg6rKw6rO8IO2DgOyeheydhCDstpTroaDtlbTso7zripQg7Lmc6rWs7J6F64uI64ukLlxuLy8g7J20IO2DgOyeheydgCBQdXJp7J2YIHNlbGVjdCwgYXBwZW5kU2VsZWN07JeQ7IScIFRSZXN1bHTroZwg7IKs7Jqp65Cp64uI64ukLlxuLy9cbi8vIFNjaGVtYeulvCDsnb3slrTshJwgRkvsnZggbnVsbGFiaWxpdHnsl5Ag65Sw6528IGpvaW7rkJwg6rCd7LK07J2YIO2DgOyeheydhCDstpTroaDtlbTso7zripQg6riw64ql7J20IOyeiOyKteuLiOuLpC5cbi8vIOydtOqyjCDrrLTsiqgg7IaM66as64OQPyBGS+qwgCBudWxsYWJsZeyduOuNsCBsZWZ0Sm9pbuuQmOyXiOuLpOuptCwg7ZW064u5IOqwneyytOuKlCBudWxsYWJsZSDtlbTslbwg7ZWo7J2EIO2DgOyehSDstpTroaDsnLzroZwg67CY7JiB7ZW07KSA64uk64qUIOqyg+yeheuLiOuLpC5cbi8vIOuwmOuptCBGS+qwgCBub24tbnVsbGFibGXsnbTqsbDrgpgg6re464OlIGpvaW7snLzroZwg7J207Ja07KGM64uk66m0IO2VtOuLuSDqsJ3ssrTripQgbm9uLW51bGxhYmxl7ZWgIOqygeuLiOuLpC5cbi8vIOusvOuhoCDqsJ3ssrQg64K067aA7J2YIG51bGxhYmlsaXR564qUIOuYkCDrs4TqsJzroZwg7LaU66Gg65Cp64uI64ukLlxuLy9cbi8vIOyVhOuemOyXkOuPhCBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRo66W8IOu5hOuhr+2VtCBFeHRyYWN0Q29sdW1uVHlwZSwgRXh0cmFjdENvbHVtblR5cGVSYXcg65Ox7J2YIO2DgOyeheydtCDsnojsirXri4jri6QuXG4vLyDsnbTrk6TsnZgg7Jet7ZWg7J2AIOuLpOydjOqzvCDqsJnsirXri4jri6Q6XG4vLyAtIFBhcnNlKjog6rCd7LK0IOugiOuyqOyXkOyEnCDspJHssqkg6rWs7KGw66W8IOyInO2ajO2VmOupsCDqsJ3ssrTsl5AgfCBudWxs7J2EIOu2meydvOyngCDqsrDsoJXtlanri4jri6QuXG4vLyAtIEV4dHJhY3QqOiDtlYTrk5wg66CI67Ko7JeQ7IScIFwidGFibGUuY29sdW1uXCIg6rK966Gc66Gc67aA7YSwIOyLpOygnCDtg4DsnoXsnYQg7LaU7Lac7ZWp64uI64ukLlxuLy9cbi8vIOyYiOyLnDpcbi8vIC5zZWxlY3Qoe1xuLy8gICBpZDogXCJ1c2Vycy5pZFwiLCAgICAgICAgICAgLy8g4oaQIEV4dHJhY3RDb2x1bW5UeXBl7J2YIOqysOqzvOuKlCBudW1iZXLsnoXri4jri6QuXG4vLyAgIGRlcGFydG1lbnQ6IHsgICAgICAgICAgICAgLy8g4oaQIFBhcnNlU2VsZWN0T2JqZWN0SW5uZXLsl5Ag7J2Y7ZW0IG51bGxhYmxlIOqwneyytOuhnCDstpTroaDrkKnri4jri6QuXG4vLyAgICAgaWQ6IFwiZGVwYXJ0bWVudC5pZFwiLCAgICAvLyDihpAgRXh0cmFjdENvbHVtblR5cGVSYXfsnZgg6rKw6rO864qUIG51bWJlcuyeheuLiOuLpC5cbi8vICAgICBuYW1lOiBcImRlcGFydG1lbnQubmFtZVwiIC8vIOKGkCBFeHRyYWN0Q29sdW1uVHlwZVJhd+ydmCDqsrDqs7zripQgc3RyaW5n7J6F64uI64ukLlxuLy8gICB9XG4vLyB9KVxuZXhwb3J0IHR5cGUgUGFyc2VTZWxlY3RPYmplY3Q8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuPiA9IFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGg8VFRhYmxlcywgVFNlbGVjdCwgXCJcIj47XG5cbi8vIOqyveuhnOulvCDstpTsoIHtlZjrqbTshJwgU2VsZWN0IOqysOqzvCDtg4DsnoXsnYQg7LaU66Gg7ZWp64uI64ukLlxudHlwZSBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRoPFxuICBUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbiAgUHJlZml4IGV4dGVuZHMgc3RyaW5nLFxuPiA9IEV4cGFuZDx7XG4gIFtLIGluIGtleW9mIFRTZWxlY3RdOiBUU2VsZWN0W0tdIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxpbmZlciBSPlxuICAgID8gUiBleHRlbmRzIFwic3RyaW5nXCJcbiAgICAgID8gc3RyaW5nXG4gICAgICA6IFIgZXh0ZW5kcyBcIm51bWJlclwiXG4gICAgICAgID8gbnVtYmVyXG4gICAgICAgIDogUiBleHRlbmRzIFwiYm9vbGVhblwiXG4gICAgICAgICAgPyBib29sZWFuXG4gICAgICAgICAgOiBSIGV4dGVuZHMgXCJkYXRlXCJcbiAgICAgICAgICAgID8gRGF0ZVxuICAgICAgICAgICAgOiBSIGV4dGVuZHMgXCJzdHJpbmdbXVwiXG4gICAgICAgICAgICAgID8gc3RyaW5nW11cbiAgICAgICAgICAgICAgOiBuZXZlclxuICAgIDogSXNOZXN0ZWRPYmplY3Q8VFNlbGVjdFtLXT4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFRTZWxlY3RbS10gZXh0ZW5kcyBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz5cbiAgICAgICAgPyBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4gZXh0ZW5kcyB0cnVlIC8vIOyjvOyWtOynhCDthYzsnbTruJTsnbQgRksgbnVsbGFibGXsl5AgbGVmdEpvaW7rkJjsl4jripTsp4Ag7Jes67aA7JeQIOuUsOudvCBzZWxlY3Qg6rKw6rO8IOqwneyytOydmCDtg4DsnoXsnbQg64us65287KeR64uI64ukLlxuICAgICAgICAgID8gRXhwYW5kPFBhcnNlU2VsZWN0T2JqZWN0SW5uZXI8VFRhYmxlcywgVFNlbGVjdFtLXSwgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4+IHwgbnVsbCAvLyDrp4zslb0g7ZW064u57ZWc64uk66m0IO2VtOuLuSDqsJ3ssrQg7J6Q7LK064qUIG51bGxhYmxlIO2VmOupsCxcbiAgICAgICAgICA6IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PiAvLyDqt7jroIfsp4Ag7JWK64uk66m0IG5vbi1udWxsYWJsZSDtlanri4jri6QuXG4gICAgICAgIDogbmV2ZXJcbiAgICAgIDogRXh0cmFjdENvbHVtblR5cGU8VFRhYmxlcywgVFNlbGVjdFtLXSAmIHN0cmluZz47XG59PjtcblxuLy8g7KSR7LKpIOqwneyytCDrgrTrtoDsmqkgLSBsZWZ0Sm9pbiBudWxsYWJsZeydhCDqsJ3ssrQg66CI67Ko7JeQ7IScIOydtOuvuCDsspjrpqztlojsnLzrr4DroZwg7ZWE65Oc64qUIOybkOuzuCDtg4DsnoXsnYQg7IKs7Jqp7ZWp64uI64ukLlxuLy8gUGFyc2VTZWxlY3RPYmplY3RXaXRoUGF0aOyZgCDqsbDsnZgg64+Z7J287ZWY64KYLCDrp4jsp4Drp4nsl5AgRXh0cmFjdENvbHVtblR5cGUg64yA7IugIEV4dHJhY3RDb2x1bW5UeXBlUmF366W8IOyCrOyaqe2VmOyXrFxuLy8g7ZWE65OcIOugiOuyqOyXkOyEnCDspJHrs7XsnLzroZwgfCBudWxs7J20IOy2lOqwgOuQmOuKlCDqsoPsnYQg67Cp7KeA7ZWp64uI64ukLlxudHlwZSBQYXJzZVNlbGVjdE9iamVjdElubmVyPFxuICBUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbiAgUHJlZml4IGV4dGVuZHMgc3RyaW5nLFxuPiA9IEV4cGFuZDx7XG4gIFtLIGluIGtleW9mIFRTZWxlY3RdOiBUU2VsZWN0W0tdIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxpbmZlciBSPlxuICAgID8gUiBleHRlbmRzIFwic3RyaW5nXCJcbiAgICAgID8gc3RyaW5nXG4gICAgICA6IFIgZXh0ZW5kcyBcIm51bWJlclwiXG4gICAgICAgID8gbnVtYmVyXG4gICAgICAgIDogUiBleHRlbmRzIFwiYm9vbGVhblwiXG4gICAgICAgICAgPyBib29sZWFuXG4gICAgICAgICAgOiBSIGV4dGVuZHMgXCJkYXRlXCJcbiAgICAgICAgICAgID8gRGF0ZVxuICAgICAgICAgICAgOiBSIGV4dGVuZHMgXCJzdHJpbmdbXVwiXG4gICAgICAgICAgICAgID8gc3RyaW5nW11cbiAgICAgICAgICAgICAgOiBuZXZlclxuICAgIDogSXNOZXN0ZWRPYmplY3Q8VFNlbGVjdFtLXT4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFRTZWxlY3RbS10gZXh0ZW5kcyBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz5cbiAgICAgICAgPyBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4gZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgPyBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj4gfCBudWxsXG4gICAgICAgICAgOiBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj5cbiAgICAgICAgOiBuZXZlclxuICAgICAgOiBFeHRyYWN0Q29sdW1uVHlwZVJhdzxUVGFibGVzLCBUU2VsZWN0W0tdICYgc3RyaW5nPjsgLy8gbGVmdEpvaW4gbnVsbGFibGUg66y07IucXG59PjtcblxuLy8g7Lus65+8IOqyveuhnOyXkOyEnCDtg4DsnoXsnYQg7LaU7Lac7ZWp64uI64ukLiBMZWZ0Sm9pbmVkTWFya2Vy6rCAIOyeiOycvOuptCB8IG51bGzsnYQg7LaU6rCA7ZWp64uI64ukLlxuLy8g7LWc7IOB7JyEIHNlbGVjdCDtlYTrk5zsl5DshJwg7IKs7Jqp65Cp64uI64ukLlxuZXhwb3J0IHR5cGUgRXh0cmFjdENvbHVtblR5cGU8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nLFxuPiA9IFBhdGggZXh0ZW5kcyBgJHtpbmZlciBUQWxpYXN9LiR7aW5mZXIgVENvbHVtbn1gXG4gID8gVEFsaWFzIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8gVENvbHVtbiBleHRlbmRzIGtleW9mIFRUYWJsZXNbVEFsaWFzXVxuICAgICAgPyBUVGFibGVzW1RBbGlhc10gZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgICAgID8gVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dIHwgbnVsbCAvLyBMRUZUIEpPSU4gKG51bGxhYmxlIEZLKSDihpIgbnVsbGFibGVcbiAgICAgICAgOiBUVGFibGVzW1RBbGlhc11bVENvbHVtbl0gLy8gSU5ORVIgSk9JTiDrmJDripQgbm9uLW51bGwgRksgbGVmdEpvaW4g4oaSIG5vbi1udWxsYWJsZVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXJcbiAgOiBJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICA/IFBhdGggZXh0ZW5kcyBrZXlvZiBUVGFibGVzW2tleW9mIFRUYWJsZXNdXG4gICAgICA/IFRUYWJsZXNba2V5b2YgVFRhYmxlc11bUGF0aF1cbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vLyDsu6zrn7wg6rK966Gc7JeQ7IScIO2DgOyeheydhCDstpTstpztlanri4jri6QuIGxlZnRKb2luIOyXrOu2gOyZgCDqtIDqs4Tsl4bsnbQg7JuQ67O4IO2DgOyeheydhCDrsJjtmZjtlanri4jri6QuXG4vLyDspJHssqkg6rCd7LK0IOuCtOu2gCDtlYTrk5zsl5DshJwg7IKs7Jqp65Cp64uI64ukLiAo6rCd7LK0IOugiOuyqOyXkOyEnCDsnbTrr7ggfCBudWxsIOyymOumrOqwgCDsmYTro4zrkJjsl4jsnLzrr4DroZwpXG50eXBlIEV4dHJhY3RDb2x1bW5UeXBlUmF3PFxuICBUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgUGF0aCBleHRlbmRzIHN0cmluZyxcbj4gPSBQYXRoIGV4dGVuZHMgYCR7aW5mZXIgVEFsaWFzfS4ke2luZmVyIFRDb2x1bW59YFxuICA/IFRBbGlhcyBleHRlbmRzIGtleW9mIFRUYWJsZXNcbiAgICA/IFRDb2x1bW4gZXh0ZW5kcyBrZXlvZiBUVGFibGVzW1RBbGlhc11cbiAgICAgID8gVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dIC8vIGxlZnRKb2luIOyXrOu2gOyZgCDqtIDqs4Tsl4bsnbQg7JuQ67O4IO2DgOyehVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXJcbiAgOiBJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICA/IFBhdGggZXh0ZW5kcyBrZXlvZiBUVGFibGVzW2tleW9mIFRUYWJsZXNdXG4gICAgICA/IFRUYWJsZXNba2V5b2YgVFRhYmxlc11bUGF0aF1cbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vLyBXaGVyZSDsobDqsbQg6rCd7LK0IO2DgOyehVxuLy8g7JiIOiB7IFwidS5pZFwiOiAxLCBcInUuc3RhdHVzXCI6IFwiYWN0aXZlXCIgfVxuZXhwb3J0IHR5cGUgV2hlcmVDb25kaXRpb248VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBba2V5IGluIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5dPzogRXh0cmFjdENvbHVtblR5cGU8VFRhYmxlcywga2V5ICYgc3RyaW5nPjtcbn07XG5cbi8vIEZ1bGx0ZXh0IGluZGV4IOy7rOufvCDstpTstpwg7YOA7J6FXG5leHBvcnQgdHlwZSBGdWxsdGV4dENvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBUVGFibGVzW1RBbGlhc10gZXh0ZW5kcyB7XG4gICAgW0sgaW4gRnVsbHRleHRLZXldOiByZWFkb25seSAoaW5mZXIgQ29sKVtdO1xuICB9XG4gICAgPyBDb2wgZXh0ZW5kcyBzdHJpbmdcbiAgICAgID8gYCR7VEFsaWFzICYgc3RyaW5nfS4ke0NvbH1gXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlcjtcbn1ba2V5b2YgVFRhYmxlc107XG5cbi8vIOu5hOq1kCDsl7DsgrDsnpBcbmV4cG9ydCB0eXBlIENvbXBhcmlzb25PcGVyYXRvciA9IFwiPVwiIHwgXCI+XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPD1cIiB8IFwiPD5cIiB8IFwiIT1cIjtcbi8vIOyhsOqxtCDsl7DsgrDsnpA6IOu5hOq1kCDsl7DsgrDsnpAgKyDtjKjthLQg66ek7LmtIOyXsOyCsOyekFxuZXhwb3J0IHR5cGUgV2hlcmVPcGVyYXRvciA9IENvbXBhcmlzb25PcGVyYXRvciB8IFwibGlrZVwiIHwgXCJub3QgbGlrZVwiIHwgXCJpbGlrZVwiIHwgXCJub3QgaWxpa2VcIjtcbmV4cG9ydCBjb25zdCBGVVpaWV9PUEVSQVRPUlMgPSBbXCI8JVwiLCBcIiVcIiwgXCI8PCVcIl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBGdXp6eU9wZXJhdG9yID0gKHR5cGVvZiBGVVpaWV9PUEVSQVRPUlMpW251bWJlcl07XG5cbi8vIFNRTCBFeHByZXNzaW9uIO2DgOyehSDsoJXsnZhcbmV4cG9ydCB0eXBlIFNxbEV4cHJlc3Npb248VCBleHRlbmRzIFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIj4gPSB7XG4gIF90eXBlOiBcInNxbF9leHByZXNzaW9uXCI7IC8vIOuYkOuKlCBcImNvbXB1dGVkX3ZhbHVlXCJcbiAgX3JldHVybjogVDtcbiAgX3NxbDogc3RyaW5nO1xufTtcblxuLy8g6rKw6rO8IO2DgOyehSDqsIDrj4XshLHsnYQg7JyE7ZWcIO2DgOyehSDtmZXsnqVcbmV4cG9ydCB0eXBlIEV4cGFuZDxUPiA9IFQgZXh0ZW5kcyBhbnlbXVxuICA/IHsgW0sgaW4ga2V5b2YgVFswXV06IFRbMF1bS10gfVtdIC8vIOuwsOyXtOydtOuptCDssqsg67KI7Ke4IOyalOyGjOulvCBFeHBhbmTtlZjqs6Ag67Cw7Je066GcIOqwkOyMiFxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICA/IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gfVxuICAgIDogVDtcblxudHlwZSBJc1NpbmdsZUtleTxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBrZXlvZiBUVGFibGVzIGV4dGVuZHMgaW5mZXIgS1xuICA/IEsgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBrZXlvZiBUVGFibGVzIGV4dGVuZHMgSyAvLyDsl63rsKntlqUg7LK07YGs66GcIOuLqOydvCDtgqQg7ZmV7J24XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlXG4gIDogZmFsc2U7XG5cbmV4cG9ydCB0eXBlIFNpbmdsZVRhYmxlVmFsdWU8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXSA6IG5ldmVyO1xuXG4vLyBfX2hhc0RlZmF1bHRfX+yXkCDtj6ztlajrkJwg7YKk65Ok7J2EIFB1cmlUYWJsZTxUPuydmCDtgqTroZwg7KCc7ZWcXG50eXBlIEhhc0RlZmF1bHRLZXlzPFQ+ID0gVCBleHRlbmRzIHsgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IChpbmZlciBLKVtdIH1cbiAgPyBFeHRyYWN0PEssIGtleW9mIFB1cmlUYWJsZTxUPj5cbiAgOiBuZXZlcjtcblxuLy8gX19nZW5lcmF0ZWRfX+yXkCDtj6ztlajrkJwg7YKk65OkIChJTlNFUlQg7IucIOygnOyZuO2VtOyVvCDtlagpXG50eXBlIEdlbmVyYXRlZEtleXM8VD4gPSBUIGV4dGVuZHMgeyBfX2dlbmVyYXRlZF9fOiByZWFkb25seSAoaW5mZXIgSylbXSB9XG4gID8gRXh0cmFjdDxLLCBrZXlvZiBQdXJpVGFibGU8VD4+XG4gIDogbmV2ZXI7XG5cbi8vIEluc2VydCDtg4DsnoU6IOuplO2DgOuNsOydtO2EsCDsoJzqsbAg7ZuELCBfX2hhc0RlZmF1bHRfXyDsu6zrn7zrk6Trp4wgb3B0aW9uYWzroZwg7LKY66asLCBfX2dlbmVyYXRlZF9fIOy7rOufvOydgCDsmYTsoITtnogg7KCc7Jm4XG5leHBvcnQgdHlwZSBJbnNlcnREYXRhPFQ+ID0gT21pdDxcbiAgUHVyaVRhYmxlPFQ+LFxuICBJbnRlcm5hbFR5cGVLZXlzIHwgSGFzRGVmYXVsdEtleXM8VD4gfCBHZW5lcmF0ZWRLZXlzPFQ+XG4+ICYge1xuICBbSyBpbiBIYXNEZWZhdWx0S2V5czxUPl0/OiBQdXJpVGFibGU8VD5bS107XG59O1xuXG4vLyBJbnNlcnQgUmVzdWx0IO2DgOyehVxuZXhwb3J0IHR5cGUgSW5zZXJ0UmVzdWx0ID0gUGljazxRdWVyeVJlc3VsdDxhbnk+LCBcImNvbW1hbmRcIiB8IFwicm93Q291bnRcIiB8IFwicm93c1wiIHwgXCJvaWRcIj47XG5cbi8vIFN1YnNldFF1ZXJ566W8IOychO2VnCDtg4DsnoUg7Jyg7Yu466as7YuwXG5leHBvcnQgdHlwZSBFeHRyYWN0VFRhYmxlczxUIGV4dGVuZHMgUHVyaTxhbnksIGFueSwgYW55Pj4gPVxuICBUIGV4dGVuZHMgUHVyaTxhbnksIGluZmVyIFRUYWJsZXMsIGFueT4gPyBUVGFibGVzIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBVbmlvbkV4dHJhY3RlZFRUYWJsZXM8XG4gIFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxTdWJzZXRLZXksIFB1cmlTdWJzZXRGbj4sXG4+ID0ge1xuICBbSyBpbiBTdWJzZXRLZXldOiBFeHRyYWN0VFRhYmxlczxSZXR1cm5UeXBlPFN1YnNldFF1ZXJpZXNbS10+Pjtcbn1bU3Vic2V0S2V5XTtcblxuLy8gT04gQ09ORkxJQ1Qg64yA7IOBIO2DgOyehVxuLy8gLSDri6jsnbwg7Lus65+8OiBcImVtYWlsXCJcbi8vIC0g67O17IiYIOy7rOufvDogW1widXNlcl9pZFwiLCBcInByb2R1Y3RfaWRcIl1cbmV4cG9ydCB0eXBlIE9uQ29uZmxpY3RUYXJnZXQgPSBzdHJpbmcgfCBzdHJpbmdbXTtcblxuLy8gT04gQ09ORkxJQ1Qg7JWh7IWYIO2DgOyehVxuLy8gLSBcIm5vdGhpbmdcIjogRE8gTk9USElOR1xuLy8gLSB7IHVwZGF0ZTogWy4uLl0gfTogRE8gVVBEQVRFXG5leHBvcnQgdHlwZSBPbkNvbmZsaWN0QWN0aW9uPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPVxuICB8IFwibm90aGluZ1wiXG4gIHwge1xuICAgICAgdXBkYXRlOlxuICAgICAgICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5bXSAvLyDrsLDsl7Qg7ZiV7YOcIC0gW1wibmFtZVwiLCBcImVtYWlsXCJdXG4gICAgICAgIHwgV2hlcmVDb25kaXRpb248VFRhYmxlcz47IC8vIOqwneyytCDtmJXtg5wgLSB7IG5hbWU6IFwiSm9oblwiLCBjb3VudDogUHVyaS5yYXdOdW1iZXIoLi4uKSB9XG4gICAgfTtcblxuLy8gRksg7Lus65+866qFIOy2lOy2nCDsnKDti7jrpqzti7Ag7YOA7J6FIC0gRGF0YWJhc2VGb3JlaWduS2V5cyDtmZzsmqlcbmV4cG9ydCB0eXBlIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxEYXRhYmFzZVNjaGVtYUV4dGVuZD4+ID1cbiAgVFRhYmxlIGV4dGVuZHMga2V5b2YgRGF0YWJhc2VGb3JlaWduS2V5cyA/IERhdGFiYXNlRm9yZWlnbktleXNbVFRhYmxlXSA6IG5ldmVyO1xuXG4vLyBVbmlvbuydhCBJbnRlcnNlY3Rpb27snLzroZwg67OA7ZmY7ZWY64qUIOycoO2LuOumrO2LsFxudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFU+ID0gKFUgZXh0ZW5kcyBhbnkgPyAoazogVSkgPT4gdm9pZCA6IG5ldmVyKSBleHRlbmRzIChrOiBpbmZlciBJKSA9PiB2b2lkXG4gID8gSVxuICA6IG5ldmVyO1xuXG4vLyBTZWxlY3RBbGwg7IucIOuqqOuToCDsobDsnbjrkJwg7YWM7J2067iU7J2YIOy7rOufvCDtj6ztlahcbmV4cG9ydCB0eXBlIFNlbGVjdEFsbFJlc3VsdDxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFxuICB7XG4gICAgW0sgaW4ga2V5b2YgVFRhYmxlc106IFRUYWJsZXNbS10gZXh0ZW5kcyBpbmZlciBUXG4gICAgICA/IFQgZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgICAgID8gUGFydGlhbDxPbWl0SW50ZXJuYWxUeXBlS2V5czxUPj4gLy8gTEVGVCBKT0lO7J2AIG51bGxhYmxlLCDrqZTtg4DrjbDsnbTthLAg7KCc6rGwXG4gICAgICAgIDogT21pdEludGVybmFsVHlwZUtleXM8VD4gLy8gSU5ORVIgSk9JTuydgCBub24tbnVsbGFibGUsIOuplO2DgOuNsOydtO2EsCDsoJzqsbBcbiAgICAgIDogbmV2ZXI7XG4gIH1ba2V5b2YgVFRhYmxlc11cbj47XG5cbi8vIEZUUyDtg4DsnoVcbnR5cGUgVHNRdWVyeVBhcnNlciA9IFwidG9fdHNxdWVyeVwiIHwgXCJwbGFpbnRvX3RzcXVlcnlcIiB8IFwicGhyYXNldG9fdHNxdWVyeVwiIHwgXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiO1xuZXhwb3J0IHR5cGUgVHNRdWVyeUNvbmZpZyA9IFwic2ltcGxlXCIgfCBcImVuZ2xpc2hcIjtcbmV4cG9ydCB0eXBlIFRzUXVlcnlPcHRpb25zID0ge1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xufTtcblxuZXhwb3J0IHR5cGUgVHNIaWdobGlnaHRPcHRpb25zID0ge1xuICAvKiog7L+866asIOuzgO2ZmCDtlajsiJggKOq4sOuzuOqwkjogXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiKSAqL1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICAvKiog7YWN7Iqk7Yq4IOqygOyDiSDshKTsoJUgKOq4sOuzuOqwkjogXCJzaW1wbGVcIikgKi9cbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOy1nOuMgCDri6jslrQg7IiYICjquLDrs7jqsJI6IDM1KSAqL1xuICBtYXhXb3Jkcz86IG51bWJlcjtcbiAgLyoqIOy1nOyGjCDri6jslrQg7IiYICjquLDrs7jqsJI6IDE1KSAqL1xuICBtaW5Xb3Jkcz86IG51bWJlcjtcbiAgLyoqIO2XpOuTnOudvOyduCDsi5zsnpEv64Gd7JeQ7IScIOygnOqxsO2VoCDsp6fsnYAg64uo7Ja0IOq4uOydtCAo6riw67O46rCSOiAzKSAqL1xuICBzaG9ydFdvcmQ/OiBudW1iZXI7XG4gIC8qKiB0cnVl66m0IOyghOyytCDrrLjshJzrpbwg7Zek65Oc65287J247Jy866GcIOyCrOyaqSAo6riw67O46rCSOiBmYWxzZSkgKi9cbiAgaGlnaGxpZ2h0QWxsPzogYm9vbGVhbjtcbiAgLyoqIO2RnOyLnO2VoCDstZzrjIAg7YWN7Iqk7Yq4IOyhsOqwgSDsiJggKOq4sOuzuOqwkjogMCwg7KGw6rCBIOuvuOyCrOyaqSkgKi9cbiAgbWF4RnJhZ21lbnRzPzogbnVtYmVyO1xuICAvKiog7L+866asIOuLqOyWtCDsi5zsnpEg6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPGI+XCIpICovXG4gIHN0YXJ0U2VsPzogc3RyaW5nO1xuICAvKiog7L+866asIOuLqOyWtCDrgZ0g6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPC9iPlwiKSAqL1xuICBzdG9wU2VsPzogc3RyaW5nO1xuICAvKiog7KGw6rCBIOq1rOu2hOyekCAo6riw67O46rCSOiBcIiAuLi4gXCIpICovXG4gIGZyYWdtZW50RGVsaW1pdGVyPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVHNSYW5rT3B0aW9ucyA9IHtcbiAgcGFyc2VyPzogVHNRdWVyeVBhcnNlcjtcbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOqwgOykkey5mCDrsLDsl7QgW0QsIEMsIEIsIEFdICjquLDrs7jqsJI6IFswLjEsIDAuMiwgMC40LCAxLjBdKSAqL1xuICB3ZWlnaHRzPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiDsoJXqt5ztmZQg7Ji17IWYXG4gICAqIDA6IOusuOyEnCDquLjsnbQg66y07IucICjquLDrs7jqsJIpXG4gICAqIDE6IDEgKyBsb2co66y47IScIOq4uOydtCnroZwg64KY64iUXG4gICAqIDI6IOusuOyEnCDquLjsnbTroZwg64KY64iUXG4gICAqIDQ6IO2Pieq3oCDsobDtmZQg6rGw66as66GcIOuCmOuIlCAodHNfcmFua19jZOunjClcbiAgICogODog6rOg7JygIOuLqOyWtCDsiJjroZwg64KY64iUXG4gICAqIDE2OiAxICsgbG9nKOqzoOycoCDri6jslrQg7IiYKeuhnCDrgpjriJRcbiAgICogMzI6IHJhbmsvKHJhbmsrMSkgLT4gMH4xIOyCrOydtOydmCDqsJLsnLzroZwg7Iqk7LyA7J2866eBXG4gICAqXG4gICAqIOu5hO2KuOuniOyKpO2BrOulvCDsgqzsmqntlZjsl6wg7Ji17IWY7J2EIOyhsO2Vqe2VoCDsiJgg7J6I7J2MXG4gICAqIOyYiDogOCB8IDMyIC0+IOqzoOycoCDri6jslrQg7IiY66GcIOuCmOuIhOqzoCAwfjEg7Iqk7LyA7J2866eBXG4gICAqL1xuICBub3JtYWxpemF0aW9uPzogbnVtYmVyO1xufTtcbiJdLCJuYW1lcyI6WyJGVVpaWV9PUEVSQVRPUlMiXSwibWFwcGluZ3MiOiJBQUFBLHNGQUFzRixHQStTdEYsT0FBTyxNQUFNQSxrQkFBa0I7SUFBQztJQUFNO0lBQUs7Q0FBTSxDQUFVIn0=
|
|
@@ -36,6 +36,11 @@ declare class EntityManagerClass {
|
|
|
36
36
|
fixtureGenerator?: string | undefined;
|
|
37
37
|
fixtureDefault?: unknown;
|
|
38
38
|
fixtureStrategy?: "sequence" | undefined;
|
|
39
|
+
fixtureCompanions?: {
|
|
40
|
+
entity: string;
|
|
41
|
+
overrides?: Record<string, unknown> | undefined;
|
|
42
|
+
count?: number | undefined;
|
|
43
|
+
}[] | undefined;
|
|
39
44
|
dataSource?: {
|
|
40
45
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
41
46
|
config?: unknown;
|
|
@@ -61,6 +66,11 @@ declare class EntityManagerClass {
|
|
|
61
66
|
fixtureGenerator?: string | undefined;
|
|
62
67
|
fixtureDefault?: unknown;
|
|
63
68
|
fixtureStrategy?: "sequence" | undefined;
|
|
69
|
+
fixtureCompanions?: {
|
|
70
|
+
entity: string;
|
|
71
|
+
overrides?: Record<string, unknown> | undefined;
|
|
72
|
+
count?: number | undefined;
|
|
73
|
+
}[] | undefined;
|
|
64
74
|
dataSource?: {
|
|
65
75
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
66
76
|
config?: unknown;
|
|
@@ -86,6 +96,11 @@ declare class EntityManagerClass {
|
|
|
86
96
|
fixtureGenerator?: string | undefined;
|
|
87
97
|
fixtureDefault?: unknown;
|
|
88
98
|
fixtureStrategy?: "sequence" | undefined;
|
|
99
|
+
fixtureCompanions?: {
|
|
100
|
+
entity: string;
|
|
101
|
+
overrides?: Record<string, unknown> | undefined;
|
|
102
|
+
count?: number | undefined;
|
|
103
|
+
}[] | undefined;
|
|
89
104
|
dataSource?: {
|
|
90
105
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
91
106
|
config?: unknown;
|
|
@@ -111,6 +126,11 @@ declare class EntityManagerClass {
|
|
|
111
126
|
fixtureGenerator?: string | undefined;
|
|
112
127
|
fixtureDefault?: unknown;
|
|
113
128
|
fixtureStrategy?: "sequence" | undefined;
|
|
129
|
+
fixtureCompanions?: {
|
|
130
|
+
entity: string;
|
|
131
|
+
overrides?: Record<string, unknown> | undefined;
|
|
132
|
+
count?: number | undefined;
|
|
133
|
+
}[] | undefined;
|
|
114
134
|
dataSource?: {
|
|
115
135
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
116
136
|
config?: unknown;
|
|
@@ -135,6 +155,11 @@ declare class EntityManagerClass {
|
|
|
135
155
|
fixtureGenerator?: string | undefined;
|
|
136
156
|
fixtureDefault?: unknown;
|
|
137
157
|
fixtureStrategy?: "sequence" | undefined;
|
|
158
|
+
fixtureCompanions?: {
|
|
159
|
+
entity: string;
|
|
160
|
+
overrides?: Record<string, unknown> | undefined;
|
|
161
|
+
count?: number | undefined;
|
|
162
|
+
}[] | undefined;
|
|
138
163
|
dataSource?: {
|
|
139
164
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
140
165
|
config?: unknown;
|
|
@@ -161,6 +186,11 @@ declare class EntityManagerClass {
|
|
|
161
186
|
fixtureGenerator?: string | undefined;
|
|
162
187
|
fixtureDefault?: unknown;
|
|
163
188
|
fixtureStrategy?: "sequence" | undefined;
|
|
189
|
+
fixtureCompanions?: {
|
|
190
|
+
entity: string;
|
|
191
|
+
overrides?: Record<string, unknown> | undefined;
|
|
192
|
+
count?: number | undefined;
|
|
193
|
+
}[] | undefined;
|
|
164
194
|
dataSource?: {
|
|
165
195
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
166
196
|
config?: unknown;
|
|
@@ -187,6 +217,11 @@ declare class EntityManagerClass {
|
|
|
187
217
|
fixtureGenerator?: string | undefined;
|
|
188
218
|
fixtureDefault?: unknown;
|
|
189
219
|
fixtureStrategy?: "sequence" | undefined;
|
|
220
|
+
fixtureCompanions?: {
|
|
221
|
+
entity: string;
|
|
222
|
+
overrides?: Record<string, unknown> | undefined;
|
|
223
|
+
count?: number | undefined;
|
|
224
|
+
}[] | undefined;
|
|
190
225
|
dataSource?: {
|
|
191
226
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
192
227
|
config?: unknown;
|
|
@@ -211,6 +246,11 @@ declare class EntityManagerClass {
|
|
|
211
246
|
fixtureGenerator?: string | undefined;
|
|
212
247
|
fixtureDefault?: unknown;
|
|
213
248
|
fixtureStrategy?: "sequence" | undefined;
|
|
249
|
+
fixtureCompanions?: {
|
|
250
|
+
entity: string;
|
|
251
|
+
overrides?: Record<string, unknown> | undefined;
|
|
252
|
+
count?: number | undefined;
|
|
253
|
+
}[] | undefined;
|
|
214
254
|
dataSource?: {
|
|
215
255
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
216
256
|
config?: unknown;
|
|
@@ -235,6 +275,11 @@ declare class EntityManagerClass {
|
|
|
235
275
|
fixtureGenerator?: string | undefined;
|
|
236
276
|
fixtureDefault?: unknown;
|
|
237
277
|
fixtureStrategy?: "sequence" | undefined;
|
|
278
|
+
fixtureCompanions?: {
|
|
279
|
+
entity: string;
|
|
280
|
+
overrides?: Record<string, unknown> | undefined;
|
|
281
|
+
count?: number | undefined;
|
|
282
|
+
}[] | undefined;
|
|
238
283
|
dataSource?: {
|
|
239
284
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
240
285
|
config?: unknown;
|
|
@@ -260,6 +305,11 @@ declare class EntityManagerClass {
|
|
|
260
305
|
fixtureGenerator?: string | undefined;
|
|
261
306
|
fixtureDefault?: unknown;
|
|
262
307
|
fixtureStrategy?: "sequence" | undefined;
|
|
308
|
+
fixtureCompanions?: {
|
|
309
|
+
entity: string;
|
|
310
|
+
overrides?: Record<string, unknown> | undefined;
|
|
311
|
+
count?: number | undefined;
|
|
312
|
+
}[] | undefined;
|
|
263
313
|
dataSource?: {
|
|
264
314
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
265
315
|
config?: unknown;
|
|
@@ -285,6 +335,11 @@ declare class EntityManagerClass {
|
|
|
285
335
|
fixtureGenerator?: string | undefined;
|
|
286
336
|
fixtureDefault?: unknown;
|
|
287
337
|
fixtureStrategy?: "sequence" | undefined;
|
|
338
|
+
fixtureCompanions?: {
|
|
339
|
+
entity: string;
|
|
340
|
+
overrides?: Record<string, unknown> | undefined;
|
|
341
|
+
count?: number | undefined;
|
|
342
|
+
}[] | undefined;
|
|
288
343
|
dataSource?: {
|
|
289
344
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
290
345
|
config?: unknown;
|
|
@@ -309,6 +364,43 @@ declare class EntityManagerClass {
|
|
|
309
364
|
fixtureGenerator?: string | undefined;
|
|
310
365
|
fixtureDefault?: unknown;
|
|
311
366
|
fixtureStrategy?: "sequence" | undefined;
|
|
367
|
+
fixtureCompanions?: {
|
|
368
|
+
entity: string;
|
|
369
|
+
overrides?: Record<string, unknown> | undefined;
|
|
370
|
+
count?: number | undefined;
|
|
371
|
+
}[] | undefined;
|
|
372
|
+
dataSource?: {
|
|
373
|
+
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
374
|
+
config?: unknown;
|
|
375
|
+
} | undefined;
|
|
376
|
+
} | undefined;
|
|
377
|
+
} | {
|
|
378
|
+
type: "searchText";
|
|
379
|
+
sourceColumns: {
|
|
380
|
+
name: string;
|
|
381
|
+
caseInsensitive?: boolean | undefined;
|
|
382
|
+
}[];
|
|
383
|
+
name: string;
|
|
384
|
+
desc?: string | undefined;
|
|
385
|
+
nullable?: boolean | undefined;
|
|
386
|
+
toFilter?: boolean | undefined;
|
|
387
|
+
dbDefault?: string | number | boolean | undefined;
|
|
388
|
+
generated?: {
|
|
389
|
+
type: "STORED" | "VIRTUAL";
|
|
390
|
+
expression: string;
|
|
391
|
+
} | undefined;
|
|
392
|
+
cone?: {
|
|
393
|
+
[x: string]: unknown;
|
|
394
|
+
note?: string | undefined;
|
|
395
|
+
tags?: string[] | undefined;
|
|
396
|
+
fixtureGenerator?: string | undefined;
|
|
397
|
+
fixtureDefault?: unknown;
|
|
398
|
+
fixtureStrategy?: "sequence" | undefined;
|
|
399
|
+
fixtureCompanions?: {
|
|
400
|
+
entity: string;
|
|
401
|
+
overrides?: Record<string, unknown> | undefined;
|
|
402
|
+
count?: number | undefined;
|
|
403
|
+
}[] | undefined;
|
|
312
404
|
dataSource?: {
|
|
313
405
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
314
406
|
config?: unknown;
|
|
@@ -334,6 +426,11 @@ declare class EntityManagerClass {
|
|
|
334
426
|
fixtureGenerator?: string | undefined;
|
|
335
427
|
fixtureDefault?: unknown;
|
|
336
428
|
fixtureStrategy?: "sequence" | undefined;
|
|
429
|
+
fixtureCompanions?: {
|
|
430
|
+
entity: string;
|
|
431
|
+
overrides?: Record<string, unknown> | undefined;
|
|
432
|
+
count?: number | undefined;
|
|
433
|
+
}[] | undefined;
|
|
337
434
|
dataSource?: {
|
|
338
435
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
339
436
|
config?: unknown;
|
|
@@ -358,6 +455,11 @@ declare class EntityManagerClass {
|
|
|
358
455
|
fixtureGenerator?: string | undefined;
|
|
359
456
|
fixtureDefault?: unknown;
|
|
360
457
|
fixtureStrategy?: "sequence" | undefined;
|
|
458
|
+
fixtureCompanions?: {
|
|
459
|
+
entity: string;
|
|
460
|
+
overrides?: Record<string, unknown> | undefined;
|
|
461
|
+
count?: number | undefined;
|
|
462
|
+
}[] | undefined;
|
|
361
463
|
dataSource?: {
|
|
362
464
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
363
465
|
config?: unknown;
|
|
@@ -382,6 +484,11 @@ declare class EntityManagerClass {
|
|
|
382
484
|
fixtureGenerator?: string | undefined;
|
|
383
485
|
fixtureDefault?: unknown;
|
|
384
486
|
fixtureStrategy?: "sequence" | undefined;
|
|
487
|
+
fixtureCompanions?: {
|
|
488
|
+
entity: string;
|
|
489
|
+
overrides?: Record<string, unknown> | undefined;
|
|
490
|
+
count?: number | undefined;
|
|
491
|
+
}[] | undefined;
|
|
385
492
|
dataSource?: {
|
|
386
493
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
387
494
|
config?: unknown;
|
|
@@ -411,6 +518,11 @@ declare class EntityManagerClass {
|
|
|
411
518
|
fixtureGenerator?: string | undefined;
|
|
412
519
|
fixtureDefault?: unknown;
|
|
413
520
|
fixtureStrategy?: "sequence" | undefined;
|
|
521
|
+
fixtureCompanions?: {
|
|
522
|
+
entity: string;
|
|
523
|
+
overrides?: Record<string, unknown> | undefined;
|
|
524
|
+
count?: number | undefined;
|
|
525
|
+
}[] | undefined;
|
|
414
526
|
dataSource?: {
|
|
415
527
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
416
528
|
config?: unknown;
|
|
@@ -438,6 +550,11 @@ declare class EntityManagerClass {
|
|
|
438
550
|
fixtureGenerator?: string | undefined;
|
|
439
551
|
fixtureDefault?: unknown;
|
|
440
552
|
fixtureStrategy?: "sequence" | undefined;
|
|
553
|
+
fixtureCompanions?: {
|
|
554
|
+
entity: string;
|
|
555
|
+
overrides?: Record<string, unknown> | undefined;
|
|
556
|
+
count?: number | undefined;
|
|
557
|
+
}[] | undefined;
|
|
441
558
|
dataSource?: {
|
|
442
559
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
443
560
|
config?: unknown;
|
|
@@ -466,6 +583,11 @@ declare class EntityManagerClass {
|
|
|
466
583
|
fixtureGenerator?: string | undefined;
|
|
467
584
|
fixtureDefault?: unknown;
|
|
468
585
|
fixtureStrategy?: "sequence" | undefined;
|
|
586
|
+
fixtureCompanions?: {
|
|
587
|
+
entity: string;
|
|
588
|
+
overrides?: Record<string, unknown> | undefined;
|
|
589
|
+
count?: number | undefined;
|
|
590
|
+
}[] | undefined;
|
|
469
591
|
dataSource?: {
|
|
470
592
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
471
593
|
config?: unknown;
|
|
@@ -496,6 +618,11 @@ declare class EntityManagerClass {
|
|
|
496
618
|
fixtureGenerator?: string | undefined;
|
|
497
619
|
fixtureDefault?: unknown;
|
|
498
620
|
fixtureStrategy?: "sequence" | undefined;
|
|
621
|
+
fixtureCompanions?: {
|
|
622
|
+
entity: string;
|
|
623
|
+
overrides?: Record<string, unknown> | undefined;
|
|
624
|
+
count?: number | undefined;
|
|
625
|
+
}[] | undefined;
|
|
499
626
|
dataSource?: {
|
|
500
627
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
501
628
|
config?: unknown;
|
|
@@ -509,6 +636,7 @@ declare class EntityManagerClass {
|
|
|
509
636
|
nullsFirst?: boolean | undefined;
|
|
510
637
|
sortOrder?: "ASC" | "DESC" | undefined;
|
|
511
638
|
vectorOps?: "vector_cosine_ops" | "vector_ip_ops" | "vector_l2_ops" | undefined;
|
|
639
|
+
opclass?: string | undefined;
|
|
512
640
|
}[];
|
|
513
641
|
name: string;
|
|
514
642
|
using?: "btree" | "hash" | "gin" | "gist" | "pgroonga" | undefined;
|
|
@@ -532,6 +660,11 @@ declare class EntityManagerClass {
|
|
|
532
660
|
fixtureGenerator?: string | undefined;
|
|
533
661
|
fixtureDefault?: unknown;
|
|
534
662
|
fixtureStrategy?: "sequence" | undefined;
|
|
663
|
+
fixtureCompanions?: {
|
|
664
|
+
entity: string;
|
|
665
|
+
overrides?: Record<string, unknown> | undefined;
|
|
666
|
+
count?: number | undefined;
|
|
667
|
+
}[] | undefined;
|
|
535
668
|
dataSource?: {
|
|
536
669
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
537
670
|
config?: unknown;
|
|
@@ -547,6 +680,11 @@ declare class EntityManagerClass {
|
|
|
547
680
|
fixtureGenerator?: string | undefined;
|
|
548
681
|
fixtureDefault?: unknown;
|
|
549
682
|
fixtureStrategy?: "sequence" | undefined;
|
|
683
|
+
fixtureCompanions?: {
|
|
684
|
+
entity: string;
|
|
685
|
+
overrides?: Record<string, unknown> | undefined;
|
|
686
|
+
count?: number | undefined;
|
|
687
|
+
}[] | undefined;
|
|
550
688
|
dataSource?: {
|
|
551
689
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
552
690
|
config?: unknown;
|
|
@@ -561,6 +699,11 @@ declare class EntityManagerClass {
|
|
|
561
699
|
fixtureGenerator?: string | undefined;
|
|
562
700
|
fixtureDefault?: unknown;
|
|
563
701
|
fixtureStrategy?: "sequence" | undefined;
|
|
702
|
+
fixtureCompanions?: {
|
|
703
|
+
entity: string;
|
|
704
|
+
overrides?: Record<string, unknown> | undefined;
|
|
705
|
+
count?: number | undefined;
|
|
706
|
+
}[] | undefined;
|
|
564
707
|
dataSource?: {
|
|
565
708
|
strategy: "file" | "sample" | "ids" | "query" | "recent" | "random";
|
|
566
709
|
config?: unknown;
|
|
@@ -568,7 +711,12 @@ declare class EntityManagerClass {
|
|
|
568
711
|
} | undefined;
|
|
569
712
|
}> | null;
|
|
570
713
|
reload(doSilent?: boolean): Promise<void>;
|
|
571
|
-
register(json: EntityJson
|
|
714
|
+
register(json: EntityJson, options?: {
|
|
715
|
+
deferSearchTextJsonSourceValidation?: boolean;
|
|
716
|
+
}): Promise<void>;
|
|
717
|
+
validateAllRegisteredSearchTextJsonSources(): Promise<void>;
|
|
718
|
+
private validateSearchTextJsonSources;
|
|
719
|
+
private resolveSearchTextJsonSourceType;
|
|
572
720
|
get(entityId: string): Entity;
|
|
573
721
|
getByTable(table: string): Entity;
|
|
574
722
|
exists(entityId: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,CAAC,EAAE,MAAM,KAAK,CAAC;AAEvC,OAAO,
|
|
1
|
+
{"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import inflection from "inflection";
|
|
|
5
5
|
import path from "path";
|
|
6
6
|
import { prettifyError, z } from "zod";
|
|
7
7
|
import { Sonamu } from "../api/sonamu.js";
|
|
8
|
-
import { EntityJsonSchema } from "../types/types.js";
|
|
8
|
+
import { EntityJsonSchema, isSearchTextJsonSourceZodType, isSearchTextProp, SonamuFileArraySchema, SonamuFileSchema } from "../types/types.js";
|
|
9
9
|
import { globAsync } from "../utils/async-utils.js";
|
|
10
10
|
import { importMembers } from "../utils/esm-utils.js";
|
|
11
11
|
import { runtimePath } from "../utils/path-utils.js";
|
|
@@ -30,9 +30,12 @@ class EntityManagerClass {
|
|
|
30
30
|
const errorMessage = prettifyError(error);
|
|
31
31
|
console.error(chalk.red(`Invalid entity.json schema: ${relativePath}\n${chalk.yellow(errorMessage)}`));
|
|
32
32
|
}
|
|
33
|
-
await this.register(json
|
|
33
|
+
await this.register(json, {
|
|
34
|
+
deferSearchTextJsonSourceValidation: true
|
|
35
|
+
});
|
|
34
36
|
}
|
|
35
37
|
await this.registerNonEntityTypeModulePaths();
|
|
38
|
+
await this.validateAllRegisteredSearchTextJsonSources();
|
|
36
39
|
this.isAutoloaded = true;
|
|
37
40
|
}
|
|
38
41
|
schemaValidate(json) {
|
|
@@ -46,12 +49,73 @@ class EntityManagerClass {
|
|
|
46
49
|
this.isAutoloaded = false;
|
|
47
50
|
return await this.autoload(doSilent);
|
|
48
51
|
}
|
|
49
|
-
async register(json) {
|
|
52
|
+
async register(json, options = {}) {
|
|
50
53
|
const entity = new Entity(json);
|
|
51
54
|
await entity.registerModulePaths();
|
|
55
|
+
if (!options.deferSearchTextJsonSourceValidation) {
|
|
56
|
+
await this.validateSearchTextJsonSources(entity);
|
|
57
|
+
}
|
|
52
58
|
entity.registerTableSpecs();
|
|
53
59
|
this.entities.set(json.id, entity);
|
|
54
60
|
}
|
|
61
|
+
async validateAllRegisteredSearchTextJsonSources() {
|
|
62
|
+
for (const entity of this.entities.values()){
|
|
63
|
+
await this.validateSearchTextJsonSources(entity);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async validateSearchTextJsonSources(entity) {
|
|
67
|
+
const propsByName = new Map(entity.props.map((prop)=>[
|
|
68
|
+
prop.name,
|
|
69
|
+
prop
|
|
70
|
+
]));
|
|
71
|
+
for (const prop of entity.props){
|
|
72
|
+
if (!isSearchTextProp(prop)) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
for (const source of prop.sourceColumns){
|
|
76
|
+
const sourceProp = propsByName.get(source.name);
|
|
77
|
+
if (!sourceProp || sourceProp.type !== "json") {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const zodType = await this.resolveSearchTextJsonSourceType(entity, sourceProp.id);
|
|
81
|
+
if (!zodType) {
|
|
82
|
+
throw new Error(`searchText source "${source.name}"의 json 타입 "${sourceProp.id}"을(를) 로드할 수 없습니다.`);
|
|
83
|
+
}
|
|
84
|
+
if (!isSearchTextJsonSourceZodType(zodType)) {
|
|
85
|
+
throw new Error(`searchText source "${source.name}"의 json 타입 "${sourceProp.id}"은(는) unwrap 후 z.array(z.string()) 이어야 합니다.`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async resolveSearchTextJsonSourceType(entity, typeId) {
|
|
91
|
+
const localType = entity.types[typeId];
|
|
92
|
+
if (localType instanceof z.ZodType) {
|
|
93
|
+
return localType;
|
|
94
|
+
}
|
|
95
|
+
for (const registeredEntity of this.entities.values()){
|
|
96
|
+
const registeredType = registeredEntity.types[typeId];
|
|
97
|
+
if (registeredType instanceof z.ZodType) {
|
|
98
|
+
return registeredType;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (typeId === "SonamuFile") {
|
|
102
|
+
return SonamuFileSchema;
|
|
103
|
+
}
|
|
104
|
+
if (typeId === "SonamuFile[]") {
|
|
105
|
+
return SonamuFileArraySchema;
|
|
106
|
+
}
|
|
107
|
+
const modulePath = this.modulePaths.get(typeId);
|
|
108
|
+
if (!modulePath) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const moduleFilePath = path.join(Sonamu.apiRootPath, runtimePath(`dist/application/${modulePath}.js`));
|
|
112
|
+
const importedMembers = await importMembers(moduleFilePath);
|
|
113
|
+
const matched = importedMembers.find(({ name })=>name === typeId);
|
|
114
|
+
if (!matched || !(matched.value instanceof z.ZodType)) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
return matched.value;
|
|
118
|
+
}
|
|
55
119
|
get(entityId) {
|
|
56
120
|
const entity = this.entities.get(entityId);
|
|
57
121
|
if (entity === undefined) {
|
|
@@ -159,4 +223,4 @@ class EntityManagerClass {
|
|
|
159
223
|
}
|
|
160
224
|
export const EntityManager = new EntityManagerClass();
|
|
161
225
|
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRpdHkvZW50aXR5LW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBnbG9iLCByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwcmV0dGlmeUVycm9yLCB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5SW5kZXgsIHR5cGUgRW50aXR5SnNvbiwgRW50aXR5SnNvblNjaGVtYSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uL3V0aWxzL2FzeW5jLXV0aWxzXCI7XG5pbXBvcnQgeyBpbXBvcnRNZW1iZXJzIH0gZnJvbSBcIi4uL3V0aWxzL2VzbS11dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgcnVudGltZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5XCI7XG5cbmV4cG9ydCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkID0gUmVjb3JkPFxuICBcImZzXCIgfCBcImZzUGx1cmFsXCIgfCBcImNhbWVsXCIgfCBcImNhbWVsUGx1cmFsXCIgfCBcImNhcGl0YWxcIiB8IFwiY2FwaXRhbFBsdXJhbFwiIHwgXCJ1cHBlclwiIHwgXCJjb25zdGFudFwiLFxuICBzdHJpbmdcbj47XG5leHBvcnQgdHlwZSBUYWJsZVNwZWMgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdW5pcXVlSW5kZXhlczogRW50aXR5SW5kZXhbXTtcbiAganNvbkNvbHVtbnM6IHN0cmluZ1tdO1xufTtcbmNsYXNzIEVudGl0eU1hbmFnZXJDbGFzcyB7XG4gIHByaXZhdGUgZW50aXRpZXM6IE1hcDxzdHJpbmcsIEVudGl0eT4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBtb2R1bGVQYXRoczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB0YWJsZVNwZWNzOiBNYXA8c3RyaW5nLCBUYWJsZVNwZWM+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgaXNBdXRvbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8g6rK966GcIOyghOuLrOuwm+yVhCDrqqjrk6AgZW50aXR5Lmpzb24g7YyM7J28IOuhnOuTnFxuICBhc3luYyBhdXRvbG9hZChfOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5pc0F1dG9sb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGF0aFBhdHRlcm4gPSBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBcIi9zcmMvYXBwbGljYXRpb24vKiovKi5lbnRpdHkuanNvblwiKTtcblxuICAgIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBnbG9iKHBhdGgucmVzb2x2ZShwYXRoUGF0dGVybikpKSB7XG4gICAgICBjb25zdCBqc29uID0gSlNPTi5wYXJzZSgoYXdhaXQgcmVhZEZpbGUoZmlsZSkpLnRvU3RyaW5nKCkpO1xuXG4gICAgICAvLyBlbnRpdHkuanNvbiDsiqTtgqTrp4gg6rKA7KadXG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuc2NoZW1hVmFsaWRhdGUoanNvbik7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShTb25hbXUuYXBpUm9vdFBhdGgsIGZpbGUpO1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBwcmV0dGlmeUVycm9yKGVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBjaGFsay5yZWQoYEludmFsaWQgZW50aXR5Lmpzb24gc2NoZW1hOiAke3JlbGF0aXZlUGF0aH1cXG4ke2NoYWxrLnllbGxvdyhlcnJvck1lc3NhZ2UpfWApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyKGpzb24pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTtcblxuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNjaGVtYVZhbGlkYXRlKGpzb246IHVua25vd24pIHtcbiAgICBjb25zdCByZXN1bHQgPSBFbnRpdHlKc29uU2NoZW1hLnNhZmVQYXJzZShqc29uKTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyBudWxsIDogcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkKGRvU2lsZW50OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLmVudGl0aWVzLmNsZWFyKCk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5jbGVhcigpO1xuICAgIHRoaXMudGFibGVTcGVjcy5jbGVhcigpO1xuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hdXRvbG9hZChkb1NpbGVudCk7XG4gIH1cblxuICBhc3luYyByZWdpc3Rlcihqc29uOiBFbnRpdHlKc29uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocygpO1xuICAgIGVudGl0eS5yZWdpc3RlclRhYmxlU3BlY3MoKTtcbiAgICB0aGlzLmVudGl0aWVzLnNldChqc29uLmlkLCBlbnRpdHkpO1xuICB9XG5cbiAgZ2V0KGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHkge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICBpZiAoZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCBFbnRpdHkg7JqU7LKtICR7ZW50aXR5SWR9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGdldEJ5VGFibGUodGFibGU6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gQXJyYXkuZnJvbSh0aGlzLmVudGl0aWVzLnZhbHVlcygpKS5maW5kKChlbnRpdHkpID0+IGVudGl0eS50YWJsZSA9PT0gdGFibGUpO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHt0YWJsZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZXhpc3RzKGVudGl0eUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0aWVzLmdldChlbnRpdHlJZCk7XG4gICAgcmV0dXJuIGVudGl0eSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0QWxsSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShFbnRpdHlNYW5hZ2VyLmVudGl0aWVzLmtleXMoKSkuc29ydCgpO1xuICB9XG5cbiAgZ2V0QWxsRW50aXRpZXMoKTogRW50aXR5W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50SWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxJZHMoKS5maWx0ZXIoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldChlbnRpdHlJZCk7XG4gICAgICByZXR1cm4gZW50aXR5LnBhcmVudElkID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDaGlsZHJlbklkcyhwYXJlbnRJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHBhcmVudElkO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0TW9kdWxlUGF0aChrZXk6IHN0cmluZywgbW9kdWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhjaGFsay5jeWFuKGBzZXRNb2R1bGVQYXRoIDo6ICR7a2V5fSA6OiAke21vZHVsZVBhdGh9YCkpO1xuICAgIHRoaXMubW9kdWxlUGF0aHMuc2V0KGtleSwgbW9kdWxlUGF0aCk7XG4gIH1cblxuICBnZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQoa2V5KTtcbiAgICBpZiAobW9kdWxlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg66qo65OIIO2MqOyKpCDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZVBhdGg7XG4gIH1cblxuICBzZXRUYWJsZVNwZWModGFibGVTcGVjOiBUYWJsZVNwZWMpIHtcbiAgICB0aGlzLnRhYmxlU3BlY3Muc2V0KHRhYmxlU3BlYy5uYW1lLCB0YWJsZVNwZWMpO1xuICB9XG5cbiAgZ2V0VGFibGVTcGVjKGtleTogc3RyaW5nKTogVGFibGVTcGVjIHtcbiAgICBjb25zdCB0YWJsZVNwZWMgPSB0aGlzLnRhYmxlU3BlY3MuZ2V0KGtleSk7XG4gICAgaWYgKHRhYmxlU3BlYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg7YWM7J2067iUIOyKpO2OmSDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlU3BlYztcbiAgfVxuXG4gIGdldE5hbWVzRnJvbUlkKGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHlOYW1lc1JlY29yZCB7XG4gICAgLy8gZW50aXR5SWTqsIAg64uo67O17IiYIOuPme2YlSDri6jslrTsnbgg6rK97JqwIExpc3Qg67aZ7Jes7IScIOyDneyEsVxuICAgIGNvbnN0IHBsdXJhbGl6ZWQgPVxuICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpID09PSBlbnRpdHlJZFxuICAgICAgICA/IGAke2VudGl0eUlkfUxpc3RgXG4gICAgICAgIDogaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZzOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZnNQbHVyYWw6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShwbHVyYWxpemVkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGNhbWVsOiBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eUlkLCB0cnVlKSxcbiAgICAgIGNhbWVsUGx1cmFsOiBpbmZsZWN0aW9uLmNhbWVsaXplKHBsdXJhbGl6ZWQsIHRydWUpLFxuICAgICAgY2FwaXRhbDogZW50aXR5SWQsXG4gICAgICBjYXBpdGFsUGx1cmFsOiBwbHVyYWxpemVkLFxuICAgICAgdXBwZXI6IGVudGl0eUlkLnRvVXBwZXJDYXNlKCksXG4gICAgICBjb25zdGFudDogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKS50b1VwcGVyQ2FzZSgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW50aXR5SWTripQgTW9kZWzsnYQg7KCc7Jm47ZWcIFBhc2NhbENhc2Ug7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlclwiKVxuICAgKiBAcGFyYW0gZmlsZVBhdGhcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldEVudGl0eUlkRnJvbVBhdGgoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbGVQYXRoLm1hdGNoKC9hcHBsaWNhdGlvblxcLyguKylcXC8vKTtcbiAgICBhc3NlcnQobWF0Y2hlZD8uWzFdKTtcbiAgICByZXR1cm4gaW5mbGVjdGlvbi5jYW1lbGl6ZShtYXRjaGVkWzFdLnJlcGxhY2UoLy0vZywgXCJfXCIpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHlwZVBhdGhzUGF0dGVybnMgPSBbXG4gICAgICBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBydW50aW1lUGF0aChcInNyYy9hcHBsaWNhdGlvbi8qKi8qLnR5cGVzLnRzXCIpKSxcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIHJ1bnRpbWVQYXRoKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLnRzXCIpKSxcbiAgICBdO1xuICAgIGNvbnN0IHR5cGVQYXRocyA9IChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHR5cGVQYXRoc1BhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gZ2xvYkFzeW5jKHBhdHRlcm4pKSlcbiAgICApLmZsYXQoKTtcblxuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgdHlwZVBhdGhzKSB7XG4gICAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5nZXRNb2R1bGVQYXRoRnJvbVR5cGVGaWxlUGF0aChmaWxlUGF0aCk7XG4gICAgICBjb25zdCBpbXBvcnRlZE1lbWJlcnMgPSBhd2FpdCBpbXBvcnRNZW1iZXJzPHVua25vd24+KGZpbGVQYXRoKTtcbiAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIGltcG9ydGVkTWVtYmVycykge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgICB0aGlzLnNldE1vZHVsZVBhdGgobmFtZSwgbW9kdWxlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gZmlsZVBhdGgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuICAgIGNvbnN0IG1hdGNoZWQgPSBub3JtYWxpemVkUGF0aC5tYXRjaCgvXFwvKD86c3JjfGRpc3QpXFwvYXBwbGljYXRpb25cXC8oLispXFwuKD86dHN8anMpJC8pO1xuXG4gICAgaWYgKCFtYXRjaGVkPy5bMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7YOA7J6FIO2MjOydvOydmCDrqqjrk4gg6rK966Gc66W8IOqzhOyCsO2VoCDsiJgg7JeG7Iq164uI64ukOiAke2ZpbGVQYXRofWApO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVkWzFdO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBFbnRpdHlNYW5hZ2VyID0gbmV3IEVudGl0eU1hbmFnZXJDbGFzcygpO1xuIl0sIm5hbWVzIjpbImFzc2VydCIsImNoYWxrIiwiZ2xvYiIsInJlYWRGaWxlIiwiaW5mbGVjdGlvbiIsInBhdGgiLCJwcmV0dGlmeUVycm9yIiwieiIsIlNvbmFtdSIsIkVudGl0eUpzb25TY2hlbWEiLCJnbG9iQXN5bmMiLCJpbXBvcnRNZW1iZXJzIiwicnVudGltZVBhdGgiLCJFbnRpdHkiLCJFbnRpdHlNYW5hZ2VyQ2xhc3MiLCJlbnRpdGllcyIsIk1hcCIsIm1vZHVsZVBhdGhzIiwidGFibGVTcGVjcyIsImlzQXV0b2xvYWRlZCIsImF1dG9sb2FkIiwiXyIsInBhdGhQYXR0ZXJuIiwiam9pbiIsImFwaVJvb3RQYXRoIiwiZmlsZSIsInJlc29sdmUiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwidG9TdHJpbmciLCJlcnJvciIsInNjaGVtYVZhbGlkYXRlIiwicmVsYXRpdmVQYXRoIiwicmVsYXRpdmUiLCJlcnJvck1lc3NhZ2UiLCJjb25zb2xlIiwicmVkIiwieWVsbG93IiwicmVnaXN0ZXIiLCJyZWdpc3Rlck5vbkVudGl0eVR5cGVNb2R1bGVQYXRocyIsInJlc3VsdCIsInNhZmVQYXJzZSIsInN1Y2Nlc3MiLCJyZWxvYWQiLCJkb1NpbGVudCIsImNsZWFyIiwiZW50aXR5IiwicmVnaXN0ZXJNb2R1bGVQYXRocyIsInJlZ2lzdGVyVGFibGVTcGVjcyIsInNldCIsImlkIiwiZ2V0IiwiZW50aXR5SWQiLCJ1bmRlZmluZWQiLCJFcnJvciIsImdldEJ5VGFibGUiLCJ0YWJsZSIsIkFycmF5IiwiZnJvbSIsInZhbHVlcyIsImZpbmQiLCJleGlzdHMiLCJnZXRBbGxJZHMiLCJFbnRpdHlNYW5hZ2VyIiwia2V5cyIsInNvcnQiLCJnZXRBbGxFbnRpdGllcyIsImdldEFsbFBhcmVudElkcyIsImZpbHRlciIsInBhcmVudElkIiwiZ2V0Q2hpbGRyZW5JZHMiLCJzZXRNb2R1bGVQYXRoIiwia2V5IiwibW9kdWxlUGF0aCIsImdldE1vZHVsZVBhdGgiLCJzZXRUYWJsZVNwZWMiLCJ0YWJsZVNwZWMiLCJuYW1lIiwiZ2V0VGFibGVTcGVjIiwiZ2V0TmFtZXNGcm9tSWQiLCJwbHVyYWxpemVkIiwicGx1cmFsaXplIiwiZnMiLCJkYXNoZXJpemUiLCJ1bmRlcnNjb3JlIiwidG9Mb3dlckNhc2UiLCJmc1BsdXJhbCIsImNhbWVsIiwiY2FtZWxpemUiLCJjYW1lbFBsdXJhbCIsImNhcGl0YWwiLCJjYXBpdGFsUGx1cmFsIiwidXBwZXIiLCJ0b1VwcGVyQ2FzZSIsImNvbnN0YW50IiwiZ2V0RW50aXR5SWRGcm9tUGF0aCIsImZpbGVQYXRoIiwibWF0Y2hlZCIsIm1hdGNoIiwicmVwbGFjZSIsInR5cGVQYXRoc1BhdHRlcm5zIiwidHlwZVBhdGhzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInBhdHRlcm4iLCJmbGF0IiwiZ2V0TW9kdWxlUGF0aEZyb21UeXBlRmlsZVBhdGgiLCJpbXBvcnRlZE1lbWJlcnMiLCJ2YWx1ZSIsIlpvZFR5cGUiLCJub3JtYWxpemVkUGF0aCIsInJlcGxhY2VBbGwiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixPQUFPQyxXQUFXLFFBQVE7QUFDMUIsU0FBU0MsSUFBSSxFQUFFQyxRQUFRLFFBQVEsbUJBQWM7QUFDN0MsT0FBT0MsZ0JBQWdCLGFBQWE7QUFDcEMsT0FBT0MsVUFBVSxPQUFPO0FBQ3hCLFNBQVNDLGFBQWEsRUFBRUMsQ0FBQyxRQUFRLE1BQU07QUFDdkMsU0FBU0MsTUFBTSxRQUFRLG1CQUFnQjtBQUN2QyxTQUE0Q0MsZ0JBQWdCLFFBQVEsb0JBQWlCO0FBQ3JGLFNBQVNDLFNBQVMsUUFBUSwwQkFBdUI7QUFDakQsU0FBU0MsYUFBYSxRQUFRLHdCQUFxQjtBQUVuRCxTQUFTQyxXQUFXLFFBQVEseUJBQXNCO0FBQ2xELFNBQVNDLE1BQU0sUUFBUSxjQUFXO0FBV2xDLE1BQU1DO0lBQ0lDLFdBQWdDLElBQUlDLE1BQU07SUFDM0NDLGNBQW1DLElBQUlELE1BQU07SUFDNUNFLGFBQXFDLElBQUlGLE1BQU07SUFDaERHLGVBQXdCLE1BQU07SUFFckMsK0JBQStCO0lBQy9CLE1BQU1DLFNBQVNDLElBQWEsS0FBSyxFQUFFO1FBQ2pDLElBQUksSUFBSSxDQUFDRixZQUFZLEVBQUU7WUFDckI7UUFDRjtRQUNBLE1BQU1HLGNBQWNqQixLQUFLa0IsSUFBSSxDQUFDZixPQUFPZ0IsV0FBVyxFQUFFO1FBRWxELFdBQVcsTUFBTUMsUUFBUXZCLEtBQUtHLEtBQUtxQixPQUFPLENBQUNKLGNBQWU7WUFDeEQsTUFBTUss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
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRpdHkvZW50aXR5LW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBnbG9iLCByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwcmV0dGlmeUVycm9yLCB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW50aXR5SW5kZXgsXG4gIHR5cGUgRW50aXR5SnNvbixcbiAgRW50aXR5SnNvblNjaGVtYSxcbiAgaXNTZWFyY2hUZXh0SnNvblNvdXJjZVpvZFR5cGUsXG4gIGlzU2VhcmNoVGV4dFByb3AsXG4gIFNvbmFtdUZpbGVBcnJheVNjaGVtYSxcbiAgU29uYW11RmlsZVNjaGVtYSxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGltcG9ydE1lbWJlcnMgfSBmcm9tIFwiLi4vdXRpbHMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW50aW1lUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tIFwiLi9lbnRpdHlcIjtcblxuZXhwb3J0IHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgPSBSZWNvcmQ8XG4gIFwiZnNcIiB8IFwiZnNQbHVyYWxcIiB8IFwiY2FtZWxcIiB8IFwiY2FtZWxQbHVyYWxcIiB8IFwiY2FwaXRhbFwiIHwgXCJjYXBpdGFsUGx1cmFsXCIgfCBcInVwcGVyXCIgfCBcImNvbnN0YW50XCIsXG4gIHN0cmluZ1xuPjtcbmV4cG9ydCB0eXBlIFRhYmxlU3BlYyA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB1bmlxdWVJbmRleGVzOiBFbnRpdHlJbmRleFtdO1xuICBqc29uQ29sdW1uczogc3RyaW5nW107XG59O1xuY2xhc3MgRW50aXR5TWFuYWdlckNsYXNzIHtcbiAgcHJpdmF0ZSBlbnRpdGllczogTWFwPHN0cmluZywgRW50aXR5PiA9IG5ldyBNYXAoKTtcbiAgcHVibGljIG1vZHVsZVBhdGhzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHRhYmxlU3BlY3M6IE1hcDxzdHJpbmcsIFRhYmxlU3BlYz4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBpc0F1dG9sb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyDqsr3roZwg7KCE64us67Cb7JWEIOuqqOuToCBlbnRpdHkuanNvbiDtjIzsnbwg66Gc65OcXG4gIGFzeW5jIGF1dG9sb2FkKF86IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmlzQXV0b2xvYWRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYXRoUGF0dGVybiA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwiL3NyYy9hcHBsaWNhdGlvbi8qKi8qLmVudGl0eS5qc29uXCIpO1xuXG4gICAgZm9yIGF3YWl0IChjb25zdCBmaWxlIG9mIGdsb2IocGF0aC5yZXNvbHZlKHBhdGhQYXR0ZXJuKSkpIHtcbiAgICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKChhd2FpdCByZWFkRmlsZShmaWxlKSkudG9TdHJpbmcoKSk7XG5cbiAgICAgIC8vIGVudGl0eS5qc29uIOyKpO2CpOuniCDqsoDspp1cbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5zY2hlbWFWYWxpZGF0ZShqc29uKTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKFNvbmFtdS5hcGlSb290UGF0aCwgZmlsZSk7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHByZXR0aWZ5RXJyb3IoZXJyb3IpO1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGNoYWxrLnJlZChgSW52YWxpZCBlbnRpdHkuanNvbiBzY2hlbWE6ICR7cmVsYXRpdmVQYXRofVxcbiR7Y2hhbGsueWVsbG93KGVycm9yTWVzc2FnZSl9YCksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXIoanNvbiwgeyBkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbjogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyTm9uRW50aXR5VHlwZU1vZHVsZVBhdGhzKCk7XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZUFsbFJlZ2lzdGVyZWRTZWFyY2hUZXh0SnNvblNvdXJjZXMoKTtcblxuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNjaGVtYVZhbGlkYXRlKGpzb246IHVua25vd24pIHtcbiAgICBjb25zdCByZXN1bHQgPSBFbnRpdHlKc29uU2NoZW1hLnNhZmVQYXJzZShqc29uKTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyBudWxsIDogcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkKGRvU2lsZW50OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLmVudGl0aWVzLmNsZWFyKCk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5jbGVhcigpO1xuICAgIHRoaXMudGFibGVTcGVjcy5jbGVhcigpO1xuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hdXRvbG9hZChkb1NpbGVudCk7XG4gIH1cblxuICBhc3luYyByZWdpc3RlcihcbiAgICBqc29uOiBFbnRpdHlKc29uLFxuICAgIG9wdGlvbnM6IHsgZGVmZXJTZWFyY2hUZXh0SnNvblNvdXJjZVZhbGlkYXRpb24/OiBib29sZWFuIH0gPSB7fSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocygpO1xuICAgIGlmICghb3B0aW9ucy5kZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHkpO1xuICAgIH1cbiAgICBlbnRpdHkucmVnaXN0ZXJUYWJsZVNwZWNzKCk7XG4gICAgdGhpcy5lbnRpdGllcy5zZXQoanNvbi5pZCwgZW50aXR5KTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByb3BzQnlOYW1lID0gbmV3IE1hcChlbnRpdHkucHJvcHMubWFwKChwcm9wKSA9PiBbcHJvcC5uYW1lLCBwcm9wXSkpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGVudGl0eS5wcm9wcykge1xuICAgICAgaWYgKCFpc1NlYXJjaFRleHRQcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBwcm9wLnNvdXJjZUNvbHVtbnMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlUHJvcCA9IHByb3BzQnlOYW1lLmdldChzb3VyY2UubmFtZSk7XG4gICAgICAgIGlmICghc291cmNlUHJvcCB8fCBzb3VyY2VQcm9wLnR5cGUgIT09IFwianNvblwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6b2RUeXBlID0gYXdhaXQgdGhpcy5yZXNvbHZlU2VhcmNoVGV4dEpzb25Tb3VyY2VUeXBlKGVudGl0eSwgc291cmNlUHJvcC5pZCk7XG4gICAgICAgIGlmICghem9kVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzZWFyY2hUZXh0IHNvdXJjZSBcIiR7c291cmNlLm5hbWV9XCLsnZgganNvbiDtg4DsnoUgXCIke3NvdXJjZVByb3AuaWR9XCLsnYQo66W8KSDroZzrk5ztlaAg7IiYIOyXhuyKteuLiOuLpC5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlKHpvZFR5cGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNlYXJjaFRleHQgc291cmNlIFwiJHtzb3VyY2UubmFtZX1cIuydmCBqc29uIO2DgOyehSBcIiR7c291cmNlUHJvcC5pZH1cIuydgCjripQpIHVud3JhcCDtm4Qgei5hcnJheSh6LnN0cmluZygpKSDsnbTslrTslbwg7ZWp64uI64ukLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0eXBlSWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx6LlpvZFR5cGVBbnkgfCBudWxsPiB7XG4gICAgY29uc3QgbG9jYWxUeXBlID0gZW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgaWYgKGxvY2FsVHlwZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgcmV0dXJuIGxvY2FsVHlwZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlZ2lzdGVyZWRFbnRpdHkgb2YgdGhpcy5lbnRpdGllcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgcmVnaXN0ZXJlZFR5cGUgPSByZWdpc3RlcmVkRW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgICBpZiAocmVnaXN0ZXJlZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyZWRUeXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlSWQgPT09IFwiU29uYW11RmlsZVwiKSB7XG4gICAgICByZXR1cm4gU29uYW11RmlsZVNjaGVtYTtcbiAgICB9XG4gICAgaWYgKHR5cGVJZCA9PT0gXCJTb25hbXVGaWxlW11cIikge1xuICAgICAgcmV0dXJuIFNvbmFtdUZpbGVBcnJheVNjaGVtYTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQodHlwZUlkKTtcbiAgICBpZiAoIW1vZHVsZVBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgU29uYW11LmFwaVJvb3RQYXRoLFxuICAgICAgcnVudGltZVBhdGgoYGRpc3QvYXBwbGljYXRpb24vJHttb2R1bGVQYXRofS5qc2ApLFxuICAgICk7XG4gICAgY29uc3QgaW1wb3J0ZWRNZW1iZXJzID0gYXdhaXQgaW1wb3J0TWVtYmVyczx1bmtub3duPihtb2R1bGVGaWxlUGF0aCk7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGltcG9ydGVkTWVtYmVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdHlwZUlkKTtcbiAgICBpZiAoIW1hdGNoZWQgfHwgIShtYXRjaGVkLnZhbHVlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWQudmFsdWU7XG4gIH1cblxuICBnZXQoZW50aXR5SWQ6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdGllcy5nZXQoZW50aXR5SWQpO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZ2V0QnlUYWJsZSh0YWJsZTogc3RyaW5nKTogRW50aXR5IHtcbiAgICBjb25zdCBlbnRpdHkgPSBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpLmZpbmQoKGVudGl0eSkgPT4gZW50aXR5LnRhYmxlID09PSB0YWJsZSk7XG4gICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgRW50aXR5IOyalOyyrSAke3RhYmxlfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBleGlzdHMoZW50aXR5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICByZXR1cm4gZW50aXR5ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBbGxJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKEVudGl0eU1hbmFnZXIuZW50aXRpZXMua2V5cygpKS5zb3J0KCk7XG4gIH1cblxuICBnZXRBbGxFbnRpdGllcygpOiBFbnRpdHlbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRpdGllcy52YWx1ZXMoKSk7XG4gIH1cblxuICBnZXRBbGxQYXJlbnRJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENoaWxkcmVuSWRzKHBhcmVudElkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsSWRzKCkuZmlsdGVyKChlbnRpdHlJZCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5nZXQoZW50aXR5SWQpO1xuICAgICAgcmV0dXJuIGVudGl0eS5wYXJlbnRJZCA9PT0gcGFyZW50SWQ7XG4gICAgfSk7XG4gIH1cblxuICBzZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nLCBtb2R1bGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmRlYnVnKGNoYWxrLmN5YW4oYHNldE1vZHVsZVBhdGggOjogJHtrZXl9IDo6ICR7bW9kdWxlUGF0aH1gKSk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5zZXQoa2V5LCBtb2R1bGVQYXRoKTtcbiAgfVxuXG4gIGdldE1vZHVsZVBhdGgoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLm1vZHVsZVBhdGhzLmdldChrZXkpO1xuICAgIGlmIChtb2R1bGVQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDrqqjrk4gg7Yyo7IqkIOyalOyyrSAke2tleX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kdWxlUGF0aDtcbiAgfVxuXG4gIHNldFRhYmxlU3BlYyh0YWJsZVNwZWM6IFRhYmxlU3BlYykge1xuICAgIHRoaXMudGFibGVTcGVjcy5zZXQodGFibGVTcGVjLm5hbWUsIHRhYmxlU3BlYyk7XG4gIH1cblxuICBnZXRUYWJsZVNwZWMoa2V5OiBzdHJpbmcpOiBUYWJsZVNwZWMge1xuICAgIGNvbnN0IHRhYmxlU3BlYyA9IHRoaXMudGFibGVTcGVjcy5nZXQoa2V5KTtcbiAgICBpZiAodGFibGVTcGVjID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDthYzsnbTruJQg7Iqk7Y6ZIOyalOyyrSAke2tleX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVTcGVjO1xuICB9XG5cbiAgZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQ6IHN0cmluZyk6IEVudGl0eU5hbWVzUmVjb3JkIHtcbiAgICAvLyBlbnRpdHlJZOqwgCDri6jrs7XsiJgg64+Z7ZiVIOuLqOyWtOyduCDqsr3smrAgTGlzdCDrtpnsl6zshJwg7IOd7ISxXG4gICAgY29uc3QgcGx1cmFsaXplZCA9XG4gICAgICBpbmZsZWN0aW9uLnBsdXJhbGl6ZShlbnRpdHlJZCkgPT09IGVudGl0eUlkXG4gICAgICAgID8gYCR7ZW50aXR5SWR9TGlzdGBcbiAgICAgICAgOiBpbmZsZWN0aW9uLnBsdXJhbGl6ZShlbnRpdHlJZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZnM6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShlbnRpdHlJZCkpLnRvTG93ZXJDYXNlKCksXG4gICAgICBmc1BsdXJhbDogaW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBsdXJhbGl6ZWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgY2FtZWw6IGluZmxlY3Rpb24uY2FtZWxpemUoZW50aXR5SWQsIHRydWUpLFxuICAgICAgY2FtZWxQbHVyYWw6IGluZmxlY3Rpb24uY2FtZWxpemUocGx1cmFsaXplZCwgdHJ1ZSksXG4gICAgICBjYXBpdGFsOiBlbnRpdHlJZCxcbiAgICAgIGNhcGl0YWxQbHVyYWw6IHBsdXJhbGl6ZWQsXG4gICAgICB1cHBlcjogZW50aXR5SWQudG9VcHBlckNhc2UoKSxcbiAgICAgIGNvbnN0YW50OiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpLnRvVXBwZXJDYXNlKCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnRpdHlJZOuKlCBNb2RlbOydhCDsoJzsmbjtlZwgUGFzY2FsQ2FzZSDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyXCIpXG4gICAqIEBwYXJhbSBmaWxlUGF0aFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0RW50aXR5SWRGcm9tUGF0aChmaWxlUGF0aDogQWJzb2x1dGVQYXRoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXRjaGVkID0gZmlsZVBhdGgubWF0Y2goL2FwcGxpY2F0aW9uXFwvKC4rKVxcLy8pO1xuICAgIGFzc2VydChtYXRjaGVkPy5bMV0pO1xuICAgIHJldHVybiBpbmZsZWN0aW9uLmNhbWVsaXplKG1hdGNoZWRbMV0ucmVwbGFjZSgvLS9nLCBcIl9cIikpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3Rlck5vbkVudGl0eVR5cGVNb2R1bGVQYXRocygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0eXBlUGF0aHNQYXR0ZXJucyA9IFtcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIHJ1bnRpbWVQYXRoKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIikpLFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi5nZW5lcmF0ZWQudHNcIikpLFxuICAgIF07XG4gICAgY29uc3QgdHlwZVBhdGhzID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodHlwZVBhdGhzUGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBnbG9iQXN5bmMocGF0dGVybikpKVxuICAgICkuZmxhdCgpO1xuXG4gICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB0eXBlUGF0aHMpIHtcbiAgICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLmdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IGltcG9ydGVkTWVtYmVycyA9IGF3YWl0IGltcG9ydE1lbWJlcnM8dW5rbm93bj4oZmlsZVBhdGgpO1xuICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgaW1wb3J0ZWRNZW1iZXJzKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgICAgIHRoaXMuc2V0TW9kdWxlUGF0aChuYW1lLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kdWxlUGF0aEZyb21UeXBlRmlsZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBmaWxlUGF0aC5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIik7XG4gICAgY29uc3QgbWF0Y2hlZCA9IG5vcm1hbGl6ZWRQYXRoLm1hdGNoKC9cXC8oPzpzcmN8ZGlzdClcXC9hcHBsaWNhdGlvblxcLyguKylcXC4oPzp0c3xqcykkLyk7XG5cbiAgICBpZiAoIW1hdGNoZWQ/LlsxXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDtg4DsnoUg7YyM7J287J2YIOuqqOuTiCDqsr3roZzrpbwg6rOE7IKw7ZWgIOyImCDsl4bsirXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWRbMV07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVudGl0eU1hbmFnZXIgPSBuZXcgRW50aXR5TWFuYWdlckNsYXNzKCk7XG4iXSwibmFtZXMiOlsiYXNzZXJ0IiwiY2hhbGsiLCJnbG9iIiwicmVhZEZpbGUiLCJpbmZsZWN0aW9uIiwicGF0aCIsInByZXR0aWZ5RXJyb3IiLCJ6IiwiU29uYW11IiwiRW50aXR5SnNvblNjaGVtYSIsImlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlIiwiaXNTZWFyY2hUZXh0UHJvcCIsIlNvbmFtdUZpbGVBcnJheVNjaGVtYSIsIlNvbmFtdUZpbGVTY2hlbWEiLCJnbG9iQXN5bmMiLCJpbXBvcnRNZW1iZXJzIiwicnVudGltZVBhdGgiLCJFbnRpdHkiLCJFbnRpdHlNYW5hZ2VyQ2xhc3MiLCJlbnRpdGllcyIsIk1hcCIsIm1vZHVsZVBhdGhzIiwidGFibGVTcGVjcyIsImlzQXV0b2xvYWRlZCIsImF1dG9sb2FkIiwiXyIsInBhdGhQYXR0ZXJuIiwiam9pbiIsImFwaVJvb3RQYXRoIiwiZmlsZSIsInJlc29sdmUiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwidG9TdHJpbmciLCJlcnJvciIsInNjaGVtYVZhbGlkYXRlIiwicmVsYXRpdmVQYXRoIiwicmVsYXRpdmUiLCJlcnJvck1lc3NhZ2UiLCJjb25zb2xlIiwicmVkIiwieWVsbG93IiwicmVnaXN0ZXIiLCJkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbiIsInJlZ2lzdGVyTm9uRW50aXR5VHlwZU1vZHVsZVBhdGhzIiwidmFsaWRhdGVBbGxSZWdpc3RlcmVkU2VhcmNoVGV4dEpzb25Tb3VyY2VzIiwicmVzdWx0Iiwic2FmZVBhcnNlIiwic3VjY2VzcyIsInJlbG9hZCIsImRvU2lsZW50IiwiY2xlYXIiLCJvcHRpb25zIiwiZW50aXR5IiwicmVnaXN0ZXJNb2R1bGVQYXRocyIsInZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzIiwicmVnaXN0ZXJUYWJsZVNwZWNzIiwic2V0IiwiaWQiLCJ2YWx1ZXMiLCJwcm9wc0J5TmFtZSIsInByb3BzIiwibWFwIiwicHJvcCIsIm5hbWUiLCJzb3VyY2UiLCJzb3VyY2VDb2x1bW5zIiwic291cmNlUHJvcCIsImdldCIsInR5cGUiLCJ6b2RUeXBlIiwicmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZSIsIkVycm9yIiwidHlwZUlkIiwibG9jYWxUeXBlIiwidHlwZXMiLCJab2RUeXBlIiwicmVnaXN0ZXJlZEVudGl0eSIsInJlZ2lzdGVyZWRUeXBlIiwibW9kdWxlUGF0aCIsIm1vZHVsZUZpbGVQYXRoIiwiaW1wb3J0ZWRNZW1iZXJzIiwibWF0Y2hlZCIsImZpbmQiLCJ2YWx1ZSIsImVudGl0eUlkIiwidW5kZWZpbmVkIiwiZ2V0QnlUYWJsZSIsInRhYmxlIiwiQXJyYXkiLCJmcm9tIiwiZXhpc3RzIiwiZ2V0QWxsSWRzIiwiRW50aXR5TWFuYWdlciIsImtleXMiLCJzb3J0IiwiZ2V0QWxsRW50aXRpZXMiLCJnZXRBbGxQYXJlbnRJZHMiLCJmaWx0ZXIiLCJwYXJlbnRJZCIsImdldENoaWxkcmVuSWRzIiwic2V0TW9kdWxlUGF0aCIsImtleSIsImdldE1vZHVsZVBhdGgiLCJzZXRUYWJsZVNwZWMiLCJ0YWJsZVNwZWMiLCJnZXRUYWJsZVNwZWMiLCJnZXROYW1lc0Zyb21JZCIsInBsdXJhbGl6ZWQiLCJwbHVyYWxpemUiLCJmcyIsImRhc2hlcml6ZSIsInVuZGVyc2NvcmUiLCJ0b0xvd2VyQ2FzZSIsImZzUGx1cmFsIiwiY2FtZWwiLCJjYW1lbGl6ZSIsImNhbWVsUGx1cmFsIiwiY2FwaXRhbCIsImNhcGl0YWxQbHVyYWwiLCJ1cHBlciIsInRvVXBwZXJDYXNlIiwiY29uc3RhbnQiLCJnZXRFbnRpdHlJZEZyb21QYXRoIiwiZmlsZVBhdGgiLCJtYXRjaCIsInJlcGxhY2UiLCJ0eXBlUGF0aHNQYXR0ZXJucyIsInR5cGVQYXRocyIsIlByb21pc2UiLCJhbGwiLCJwYXR0ZXJuIiwiZmxhdCIsImdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoIiwibm9ybWFsaXplZFBhdGgiLCJyZXBsYWNlQWxsIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxZQUFZLFNBQVM7QUFDNUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVNDLElBQUksRUFBRUMsUUFBUSxRQUFRLG1CQUFjO0FBQzdDLE9BQU9DLGdCQUFnQixhQUFhO0FBQ3BD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
|