sonamu 0.10.7 → 0.10.9
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/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +5 -12
- package/dist/bin/cli.js +10 -253
- package/dist/database/base-model.d.ts +1 -0
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +14 -8
- package/dist/database/db.d.ts +2 -1
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +13 -3
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +4 -11
- package/dist/database/transaction-context.d.ts +8 -3
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/transaction-context.js +12 -7
- package/dist/migration/code-generation.js +2 -2
- package/dist/naite/naite-reporter.d.ts +8 -3
- package/dist/naite/naite-reporter.d.ts.map +1 -1
- package/dist/naite/naite-reporter.js +9 -4
- package/dist/ui-web/assets/{index-D0MHYbxl.js → index-CJf8uJYf.js} +47 -41
- package/dist/ui-web/assets/index-GMMIVGja.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/package.json +3 -3
- package/src/api/decorators.ts +11 -22
- package/src/bin/cli.ts +12 -375
- package/src/database/__tests__/transaction-scope.test.ts +227 -0
- package/src/database/base-model.ts +31 -6
- package/src/database/db.ts +17 -2
- package/src/database/puri-wrapper.ts +5 -22
- package/src/database/transaction-context.ts +14 -6
- package/src/migration/code-generation.ts +1 -1
- package/src/naite/naite-reporter.ts +8 -3
- package/dist/ui-web/assets/index-Dx_JX4aQ.css +0 -1
- package/src/skills/AGENTS.md +0 -108
- package/src/skills/sonamu/SKILL.md +0 -75
- package/src/skills/sonamu-ai-agents/SKILL.md +0 -205
- package/src/skills/sonamu-api/SKILL.md +0 -480
- package/src/skills/sonamu-auth/SKILL.md +0 -327
- package/src/skills/sonamu-auth/references/plugins.md +0 -310
- package/src/skills/sonamu-auth/references/user-id-migration-followups.md +0 -192
- package/src/skills/sonamu-auth/references/user-id-migration.md +0 -455
- package/src/skills/sonamu-config/SKILL.md +0 -203
- package/src/skills/sonamu-config/references/database.md +0 -452
- package/src/skills/sonamu-config/references/environments.md +0 -178
- package/src/skills/sonamu-config/references/server-options.md +0 -400
- package/src/skills/sonamu-entity/SKILL.md +0 -180
- package/src/skills/sonamu-entity/references/creation-workflow.md +0 -581
- package/src/skills/sonamu-entity/references/design-guides.md +0 -243
- package/src/skills/sonamu-entity/references/field-types.md +0 -170
- package/src/skills/sonamu-entity/references/relations-detail.md +0 -245
- package/src/skills/sonamu-entity/references/relations.md +0 -463
- package/src/skills/sonamu-entity/references/subset.md +0 -156
- package/src/skills/sonamu-fixture/SKILL.md +0 -180
- package/src/skills/sonamu-fixture/references/cli-usage.md +0 -439
- package/src/skills/sonamu-fixture/references/cone.md +0 -298
- package/src/skills/sonamu-frontend/SKILL.md +0 -142
- package/src/skills/sonamu-frontend/references/components.md +0 -323
- package/src/skills/sonamu-frontend/references/examples.md +0 -64
- package/src/skills/sonamu-frontend/references/hooks.md +0 -273
- package/src/skills/sonamu-frontend/references/runtime.md +0 -165
- package/src/skills/sonamu-frontend/references/scaffolding.md +0 -439
- package/src/skills/sonamu-i18n/SKILL.md +0 -287
- package/src/skills/sonamu-migration/SKILL.md +0 -316
- package/src/skills/sonamu-naite/SKILL.md +0 -266
- package/src/skills/sonamu-query/SKILL.md +0 -48
- package/src/skills/sonamu-query/references/model-patterns.md +0 -390
- package/src/skills/sonamu-query/references/model.md +0 -366
- package/src/skills/sonamu-query/references/puri.md +0 -413
- package/src/skills/sonamu-query/references/search.md +0 -238
- package/src/skills/sonamu-query/references/upsert.md +0 -324
- package/src/skills/sonamu-tasks/SKILL.md +0 -236
- package/src/skills/sonamu-testing/SKILL.md +0 -251
- package/src/skills/sonamu-testing/references/devrunner.md +0 -405
- package/src/skills/sonamu-testing/references/helpers.md +0 -185
- package/src/skills/sonamu-testing/references/patterns.md +0 -263
- package/src/skills/sonamu-testing/references/pitfalls.md +0 -588
- package/src/skills/sonamu-testing/references/quick-start.md +0 -285
- package/src/skills/sonamu-testing/references/type-safety.md +0 -172
- package/src/skills/sonamu-testing/references/writing-plan.md +0 -375
- package/src/skills/sonamu-vector/SKILL.md +0 -222
|
@@ -26,6 +26,7 @@ export declare class BaseModelClass<TSubsetKey extends string = never, TSubsetMa
|
|
|
26
26
|
constructor(modelName?: string, subsetQueries?: TSubsetQueries | undefined, loaderQueries?: TLoaderQueries | undefined);
|
|
27
27
|
getDB(which: DBPreset): Knex;
|
|
28
28
|
getPuri(which: DBPreset): PuriWrapper;
|
|
29
|
+
private getSubsetQueryPuri;
|
|
29
30
|
destroy(): Promise<void>;
|
|
30
31
|
getInsertedIds(wdb: Knex, rows: UnknownDBRecord[], tableName: string, unqKeyFields: string[], chunkSize?: number): Promise<number[]>;
|
|
31
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-model.d.ts","sourceRoot":"","sources":["../../src/database/base-model.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C;;;;;;;GAOG;AACH,qBAAa,cAAc,CACzB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,EAClD,cAAc,SAAS,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,KAAK,EAC/D,cAAc,SAAS,iBAAiB,CAAC,UAAU,CAAC,GAAG,KAAK;aAK1C,SAAS,EAAE,MAAM;IACjC,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc;IACxC,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc;IAL1C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGhB,SAAS,GAAE,MAA8B,EAC/C,aAAa,CAAC,EAAE,cAAc,YAAA,EAC9B,aAAa,CAAC,EAAE,cAAc,YAAA;IAK1C,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI5B,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"base-model.d.ts","sourceRoot":"","sources":["../../src/database/base-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,11 @@ var init_base_model = __esmMin((() => {
|
|
|
42
42
|
if (trx) return trx;
|
|
43
43
|
return new PuriWrapper(this.getDB(which), new UpsertBuilder());
|
|
44
44
|
}
|
|
45
|
+
getSubsetQueryPuri() {
|
|
46
|
+
const activeTransaction = DB.getTransactionContext().getActiveTransaction();
|
|
47
|
+
if (activeTransaction) return activeTransaction;
|
|
48
|
+
return new PuriWrapper(this.getDB("r"), new UpsertBuilder());
|
|
49
|
+
}
|
|
45
50
|
async destroy() {
|
|
46
51
|
return DB.destroy();
|
|
47
52
|
}
|
|
@@ -74,7 +79,7 @@ var init_base_model = __esmMin((() => {
|
|
|
74
79
|
*/
|
|
75
80
|
getSubsetQueries(subset) {
|
|
76
81
|
if (!this.subsetQueries) throw new Error("subsetQueries is not defined");
|
|
77
|
-
const puriWrapper =
|
|
82
|
+
const puriWrapper = this.getSubsetQueryPuri();
|
|
78
83
|
const qb = this.subsetQueries[subset]?.(puriWrapper);
|
|
79
84
|
return {
|
|
80
85
|
qb,
|
|
@@ -105,9 +110,10 @@ var init_base_model = __esmMin((() => {
|
|
|
105
110
|
this.applySonamuFilters(qb, normalizedFilter);
|
|
106
111
|
}
|
|
107
112
|
const { num, page } = queryParams;
|
|
113
|
+
const puriWrapper = new PuriWrapper(qb.knex, new UpsertBuilder());
|
|
108
114
|
const total = await this.executeCountQuery(qb, queryParams, debug, optimizeCountQuery);
|
|
109
115
|
if (queryParams?.queryMode === "count") return { total };
|
|
110
|
-
const computedRows = await this.executeListQuery(subset, qb, queryParams, num, page, debug);
|
|
116
|
+
const computedRows = await this.executeListQuery(subset, qb, queryParams, num, page, debug, puriWrapper);
|
|
111
117
|
const enhancer = params.enhancers?.[subset];
|
|
112
118
|
const enhancedRows = await Promise.all(computedRows.map((row) => enhancer?.(row) ?? row));
|
|
113
119
|
const internalFields = EntityManager.get(this.modelName).subsetsInternal[subset] ?? [];
|
|
@@ -247,7 +253,7 @@ var init_base_model = __esmMin((() => {
|
|
|
247
253
|
/**
|
|
248
254
|
* LIST 쿼리 실행 (내부 메서드)
|
|
249
255
|
*/
|
|
250
|
-
async executeListQuery(subset, qb, params, num, page, debug) {
|
|
256
|
+
async executeListQuery(subset, qb, params, num, page, debug, puriWrapper) {
|
|
251
257
|
if (params.queryMode === "count") return [];
|
|
252
258
|
let unloadedRows = await (() => {
|
|
253
259
|
if (num === 0) return qb;
|
|
@@ -255,19 +261,19 @@ var init_base_model = __esmMin((() => {
|
|
|
255
261
|
})();
|
|
256
262
|
if (debug) qb.debug();
|
|
257
263
|
const loaders = this.loaderQueries[subset];
|
|
258
|
-
if (loaders && Array.isArray(loaders)) unloadedRows = await this.processLoaders(unloadedRows, loaders, debug);
|
|
264
|
+
if (loaders && Array.isArray(loaders)) unloadedRows = await this.processLoaders(unloadedRows, loaders, debug, puriWrapper);
|
|
259
265
|
return this.hydrate(unloadedRows);
|
|
260
266
|
}
|
|
261
267
|
/**
|
|
262
268
|
* 재귀적 로더 처리
|
|
263
269
|
*/
|
|
264
|
-
async processLoaders(rows, loaders, debug) {
|
|
270
|
+
async processLoaders(rows, loaders, debug, puriWrapper) {
|
|
265
271
|
for (const resolveLoader of loaders) {
|
|
266
272
|
const { as, refId, qb: resolveLoaderQbFn, loaders: nestedLoaders } = resolveLoader;
|
|
267
|
-
const resolveLoaderQb = resolveLoaderQbFn(
|
|
273
|
+
const resolveLoaderQb = resolveLoaderQbFn(puriWrapper, rows.map((row) => row[refId]));
|
|
268
274
|
if (debug) resolveLoaderQb.debug();
|
|
269
275
|
let loadedRows = await resolveLoaderQb;
|
|
270
|
-
if (nestedLoaders && nestedLoaders.length > 0) loadedRows = await this.processLoaders(loadedRows, nestedLoaders, debug);
|
|
276
|
+
if (nestedLoaders && nestedLoaders.length > 0) loadedRows = await this.processLoaders(loadedRows, nestedLoaders, debug, puriWrapper);
|
|
271
277
|
const subRowGroups = group(loadedRows, (row) => row.refId);
|
|
272
278
|
rows = rows.map((row) => {
|
|
273
279
|
row[as] = (subRowGroups[row[refId]] ?? []).map((r) => omit(r, ["refId"]));
|
|
@@ -316,4 +322,4 @@ var init_base_model = __esmMin((() => {
|
|
|
316
322
|
init_base_model();
|
|
317
323
|
export { BaseModel, BaseModelClass, init_base_model };
|
|
318
324
|
|
|
319
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2RlbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvYmFzZS1tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogYmlvbWUtaWdub3JlLWFsbCBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogUHVyaeydmCDtg4DsnoXsnYAg6rCc67OEIOuqqOuNuOyXkOyEnCDtmZXsoJXrkJjrr4DroZwgQmFzZU1vZGVs7JeQ7ISc64qUIGFueeulvCDtl4jsmqntlaggKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjbHVzdGVyLCBncm91cCwgaXNPYmplY3QsIG9taXQsIHNldCB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBGaWx0ZXJPcGVyYXRvciwgdHlwZSBGaWx0ZXJRdWVyeSB9IGZyb20gXCIuLi9maWx0ZXIvdHlwZXNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUZpbHRlclF1ZXJ5LCB2YWxpZGF0ZVNvbmFtdUZpbHRlcnMgfSBmcm9tIFwiLi4vZmlsdGVyL3V0aWxzXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IHR5cGUgRGF0YWJhc2VTY2hlbWFFeHRlbmQsIHR5cGUgU29uYW11UXVlcnlNb2RlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIExpc3RSZXN1bHQgfSBmcm9tIFwiLi4vdXRpbHMvbW9kZWxcIjtcbmltcG9ydCB7IGdldEpvaW5UYWJsZXMsIGdldFRhYmxlTmFtZXNGcm9tV2hlcmUgfSBmcm9tIFwiLi4vdXRpbHMvc3FsLXBhcnNlclwiO1xuaW1wb3J0IHsgdHlwZSBFbmhhbmNlck1hcCwgdHlwZSBSZXNvbHZlU3Vic2V0SW50ZXJzZWN0aW9uIH0gZnJvbSBcIi4vYmFzZS1tb2RlbC50eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBEQlByZXNldCB9IGZyb20gXCIuL2RiXCI7XG5pbXBvcnQgeyBEQiB9IGZyb20gXCIuL2RiXCI7XG5pbXBvcnQgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBJbmZlckFsbFN1YnNldHMsXG4gIHR5cGUgUHVyaUxvYWRlclF1ZXJpZXMsXG4gIHR5cGUgUHVyaVN1YnNldEZuLFxufSBmcm9tIFwiLi9wdXJpLXN1YnNldC50eXBlc1wiO1xuaW1wb3J0IHsgUHVyaVdyYXBwZXIgfSBmcm9tIFwiLi9wdXJpLXdyYXBwZXJcIjtcbmltcG9ydCB7IHR5cGUgVW5pb25FeHRyYWN0ZWRUVGFibGVzIH0gZnJvbSBcIi4vcHVyaS50eXBlc1wiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuL3Vwc2VydC1idWlsZGVyXCI7XG5cbnR5cGUgVW5rbm93bkRCUmVjb3JkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICog66qo65OgIE1vZGVsIO2BtOuemOyKpOydmCDquLDrs7gg7YG0656Y7IqkXG4gKlxuICogQHRlbXBsYXRlIFRTdWJzZXRLZXkgLSDshJzruIzshYsg7YKkIOycoOuLiOyYqCAo7JiIOiBcIkFcIiB8IFwiUFwiIHwgXCJTU1wiKVxuICogQHRlbXBsYXRlIFRTdWJzZXRNYXBwaW5nIC0g7ISc67iM7IWL67OEIOy1nOyihSDqsrDqs7wg7YOA7J6FIOunpO2VkVxuICogQHRlbXBsYXRlIFRTdWJzZXRRdWVyaWVzIC0g7ISc67iM7IWLIOy/vOumrCDtlajsiJgg6rCd7LK0XG4gKiBAdGVtcGxhdGUgVExvYWRlclF1ZXJpZXMgLSDshJzruIzshYvrs4Qg66Gc642UIOy/vOumrCDrsLDsl7Qg6rCd7LK0XG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlTW9kZWxDbGFzczxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICBUU3Vic2V0TWFwcGluZyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBuZXZlcixcbiAgVFN1YnNldFF1ZXJpZXMgZXh0ZW5kcyBSZWNvcmQ8VFN1YnNldEtleSwgUHVyaVN1YnNldEZuPiA9IG5ldmVyLFxuICBUTG9hZGVyUXVlcmllcyBleHRlbmRzIFB1cmlMb2FkZXJRdWVyaWVzPFRTdWJzZXRLZXk+ID0gbmV2ZXIsXG4+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBtb2RlbE5hbWU6IHN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IubmFtZSxcbiAgICBwcm90ZWN0ZWQgc3Vic2V0UXVlcmllcz86IFRTdWJzZXRRdWVyaWVzLFxuICAgIHByb3RlY3RlZCBsb2FkZXJRdWVyaWVzPzogVExvYWRlclF1ZXJpZXMsXG4gICkge1xuICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKTtcbiAgfVxuXG4gIGdldERCKHdoaWNoOiBEQlByZXNldCk6IEtuZXgge1xuICAgIHJldHVybiBEQi5nZXREQih3aGljaCk7XG4gIH1cblxuICBnZXRQdXJpKHdoaWNoOiBEQlByZXNldCk6IFB1cmlXcmFwcGVyIHtcbiAgICAvLyDtirjrnpzsnq3shZgg7Luo7YWN7Iqk7Yq47JeQ7IScIO2KuOuenOyereyFmCDtmo3rk51cbiAgICBjb25zdCB0cnggPSBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5nZXRUcmFuc2FjdGlvbih3aGljaCk7XG4gICAgaWYgKHRyeCkge1xuICAgICAgcmV0dXJuIHRyeDtcbiAgICB9XG5cbiAgICAvLyDtirjrnpzsnq3shZjsnbQg7JeG7Jy866m0IOyDiOuhnOyatCBQdXJpV3JhcHBlciDrsJjtmZhcbiAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIod2hpY2gpO1xuICAgIHJldHVybiBuZXcgUHVyaVdyYXBwZXIoZGIsIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICByZXR1cm4gREIuZGVzdHJveSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0SW5zZXJ0ZWRJZHMoXG4gICAgd2RiOiBLbmV4LFxuICAgIHJvd3M6IFVua25vd25EQlJlY29yZFtdLFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIHVucUtleUZpZWxkczogc3RyaW5nW10sXG4gICAgY2h1bmtTaXplOiBudW1iZXIgPSA1MDAsXG4gICkge1xuICAgIGlmICghd2RiKSB7XG4gICAgICB3ZGIgPSB0aGlzLmdldERCKFwid1wiKTtcbiAgICB9XG5cbiAgICBsZXQgdW5xS2V5czogc3RyaW5nW107XG4gICAgbGV0IHdoZXJlSW5GaWVsZDogc3RyaW5nIHwgS25leC5SYXc7XG4gICAgbGV0IHNlbGVjdEZpZWxkOiBzdHJpbmc7XG5cbiAgICBpZiAodW5xS2V5RmllbGRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHdoZXJlSW5GaWVsZCA9IHdkYi5yYXcoYENPTkNBVF9XUygnXycsICcke3VucUtleUZpZWxkcy5qb2luKFwiLFwiKX0nKWApO1xuICAgICAgc2VsZWN0RmllbGQgPSBgJHt3aGVyZUluRmllbGR9IGFzIHRtcFVpZGA7XG4gICAgICB1bnFLZXlzID0gcm93cy5tYXAoKHJvdykgPT4gdW5xS2V5RmllbGRzLm1hcCgoZmllbGQpID0+IHJvd1tmaWVsZF0pLmpvaW4oXCJfXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2hlcmVJbkZpZWxkID0gdW5xS2V5RmllbGRzWzBdO1xuICAgICAgc2VsZWN0RmllbGQgPSB1bnFLZXlGaWVsZHNbMF07XG4gICAgICB1bnFLZXlzID0gcm93cy5tYXAoKHJvdykgPT4gcm93W3VucUtleUZpZWxkc1swXV0gYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0SWRzOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbXMgb2YgY2x1c3Rlcih1bnFLZXlzLCBjaHVua1NpemUpKSB7XG4gICAgICBjb25zdCBkYlJvd3MgPSBhd2FpdCB3ZGIodGFibGVOYW1lKVxuICAgICAgICAuc2VsZWN0KFwiaWRcIiwgd2RiLnJhdyhzZWxlY3RGaWVsZCkpXG4gICAgICAgIC53aGVyZUluKHdoZXJlSW5GaWVsZCBhcyBzdHJpbmcsIGl0ZW1zKTtcbiAgICAgIHJlc3VsdElkcyA9IHJlc3VsdElkcy5jb25jYXQoXG4gICAgICAgIGRiUm93cy5tYXAoKGRiUm93OiBVbmtub3duREJSZWNvcmQpID0+IHBhcnNlSW50KFN0cmluZyhkYlJvdy5pZCkpKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdElkcztcbiAgfVxuXG4gIC8qKlxuICAgKiDtirnsoJUg7ISc67iM7IWL7JeQIOuMgO2VnCDsv7zrpqwg67mM642UIO2ajeuTnVxuICAgKlxuICAgKiBAcmV0dXJucyBxYiAtIOy/vOumrCDruYzrjZQgKOyhsOqxtCDstpTqsIDsmqkpXG4gICAqIEByZXR1cm5zIG9uU3Vic2V0IC0g7Yq57KCVIOyEnOu4jOyFiyDsoITsmqkg7YOA7J6F7J20IO2VhOyalO2VoCDrlYwg7IKs7JqpXG4gICAqL1xuICBnZXRTdWJzZXRRdWVyaWVzPFQgZXh0ZW5kcyBUU3Vic2V0S2V5PihzdWJzZXQ6IFQpIHtcbiAgICBpZiAoIXRoaXMuc3Vic2V0UXVlcmllcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3Vic2V0UXVlcmllcyBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBwdXJpV3JhcHBlciA9IG5ldyBQdXJpV3JhcHBlcih0aGlzLmdldERCKFwiclwiKSwgbmV3IFVwc2VydEJ1aWxkZXIoKSk7XG4gICAgY29uc3QgcWIgPSB0aGlzLnN1YnNldFF1ZXJpZXNbc3Vic2V0XT8uKHB1cmlXcmFwcGVyKTtcblxuICAgIC8vIE5vbkFsbG93ZWRBc1NpbmdsZVRhYmxlOiDri6jsnbwg7YWM7J2067iUIOy7rOufvCDsoJHqt7wg67Cp7KeA7JqpIOuniOy7pFxuICAgIHR5cGUgUUJUYWJsZXMgPSBVbmlvbkV4dHJhY3RlZFRUYWJsZXM8VFN1YnNldEtleSwgVFN1YnNldFF1ZXJpZXM+ICYge1xuICAgICAgTm9uQWxsb3dlZEFzU2luZ2xlVGFibGU6IHsgX19mdWxsdGV4dF9fOiB0cnVlIH07XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBxYjogcWIgYXMgdW5rbm93biBhcyBQdXJpPERhdGFiYXNlU2NoZW1hRXh0ZW5kLCBRQlRhYmxlcywge30+LFxuICAgICAgb25TdWJzZXQ6ICgoX3N1YnNldDogVFN1YnNldEtleSB8IHJlYWRvbmx5IFRTdWJzZXRLZXlbXSkgPT4gcWIpIGFzIHtcbiAgICAgICAgLy8g64uo7J28IO2CpFxuICAgICAgICA8UyBleHRlbmRzIFRTdWJzZXRLZXk+KHN1YnNldDogUyk6IFJldHVyblR5cGU8VFN1YnNldFF1ZXJpZXNbU10+O1xuICAgICAgICAvLyDtgqQg67Cw7Je0IC0+IOq1kOynke2VqSDrsJjtmZhcbiAgICAgICAgPEFyciBleHRlbmRzIHJlYWRvbmx5IFRTdWJzZXRLZXlbXT4oXG4gICAgICAgICAgc3Vic2V0czogWy4uLkFycl0sXG4gICAgICAgICk6IFJlc29sdmVTdWJzZXRJbnRlcnNlY3Rpb248QXJyLCBUU3Vic2V0UXVlcmllcz47XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW5oYW5jZXIg6rCd7LK0IOyDneyEsSDtl6ztjbxcbiAgICog7YOA7J6FIOqygOymnSDrsI8g7LaU66Gg7J2EIOuPhOyZgOykjFxuICAgKi9cbiAgY3JlYXRlRW5oYW5jZXJzPFQgZXh0ZW5kcyBUU3Vic2V0S2V5PihcbiAgICBlbmhhbmNlcnM6IEVuaGFuY2VyTWFwPFxuICAgICAgVCxcbiAgICAgIEluZmVyQWxsU3Vic2V0czxUU3Vic2V0UXVlcmllcywgVExvYWRlclF1ZXJpZXM+LFxuICAgICAgVFN1YnNldE1hcHBpbmcsXG4gICAgICBUU3Vic2V0UXVlcmllc1xuICAgID4sXG4gICkge1xuICAgIHJldHVybiBlbmhhbmNlcnM7XG4gIH1cblxuICAvKipcbiAgICog7ISc67iM7IWLIOy/vOumrCDsi6TtlolcbiAgICpcbiAgICogMS4gU29uYW11IO2VhO2EsCDsoIHsmqkgKO2DgOyehSDrs4DtmZgg7Y+s7ZWoKVxuICAgKiAyLiDsv7zrpqwg7Iuk7ZaJIChwYWdpbmF0aW9uIOyggeyaqSlcbiAgICogMy4g66Gc642UIOyLpO2WiSAoMTpOLCBOOk0g6rSA6rOEIOuNsOydtO2EsCDroZzrlKkpXG4gICAqIDQuIEh5ZHJhdGUgKGZsYXQg4oaSIOykkeyyqSDqsJ3ssrQpXG4gICAqIDUuIEVuaGFuY2VyIOyggeyaqSAodmlydHVhbCDtlYTrk5wg6rOE7IKwKVxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZVN1YnNldFF1ZXJ5PFxuICAgIFQgZXh0ZW5kcyBUU3Vic2V0S2V5LFxuICAgIFRDb21wdXRlZFJlc3VsdHMgZXh0ZW5kcyBJbmZlckFsbFN1YnNldHM8VFN1YnNldFF1ZXJpZXMsIFRMb2FkZXJRdWVyaWVzPixcbiAgICBMUCBleHRlbmRzIHtcbiAgICAgIG51bT86IG51bWJlcjtcbiAgICAgIHBhZ2U/OiBudW1iZXI7XG4gICAgICBxdWVyeU1vZGU/OiBTb25hbXVRdWVyeU1vZGU7XG4gICAgICBzb25hbXVGaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICB9LFxuICA+KFxuICAgIHBhcmFtczoge1xuICAgICAgc3Vic2V0OiBUO1xuICAgICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT47XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgbnVtOiBudW1iZXI7XG4gICAgICAgIHBhZ2U6IG51bWJlcjtcbiAgICAgICAgcXVlcnlNb2RlPzogU29uYW11UXVlcnlNb2RlO1xuICAgICAgICBzb25hbXVGaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgIH07XG4gICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgICBvcHRpbWl6ZUNvdW50UXVlcnk/OiBib29sZWFuO1xuICAgIH0gJiBFbmhhbmNlclBhcmFtPFRTdWJzZXRLZXksIFRDb21wdXRlZFJlc3VsdHMsIFRTdWJzZXRNYXBwaW5nLCBUU3Vic2V0UXVlcmllcz4sXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgVFN1YnNldE1hcHBpbmdbVF0+PiB7XG4gICAgY29uc3QgeyBzdWJzZXQsIHFiLCBwYXJhbXM6IHF1ZXJ5UGFyYW1zLCBkZWJ1ZyA9IGZhbHNlLCBvcHRpbWl6ZUNvdW50UXVlcnkgPSBmYWxzZSB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCF0aGlzLmxvYWRlclF1ZXJpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImxvYWRlclF1ZXJpZXMgaXMgbm90IGRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgLy8gU29uYW11IEZpbHRlciDsoIHsmqlcbiAgICBpZiAocXVlcnlQYXJhbXMuc29uYW11RmlsdGVyKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkRmlsdGVyID0gbm9ybWFsaXplRmlsdGVyUXVlcnkocXVlcnlQYXJhbXMuc29uYW11RmlsdGVyKTtcbiAgICAgIHRoaXMuYXBwbHlTb25hbXVGaWx0ZXJzKHFiLCBub3JtYWxpemVkRmlsdGVyKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG51bSwgcGFnZSB9ID0gcXVlcnlQYXJhbXM7XG5cbiAgICAvLyBDT1VOVCDsv7zrpqwg7Iuk7ZaJIChxdWVyeU1vZGU6IGxpc3Tsnbwg65WM64qUIDAg66as7YS0KVxuICAgIGNvbnN0IHRvdGFsID0gYXdhaXQgdGhpcy5leGVjdXRlQ291bnRRdWVyeShxYiwgcXVlcnlQYXJhbXMsIGRlYnVnLCBvcHRpbWl6ZUNvdW50UXVlcnkpO1xuXG4gICAgaWYgKHF1ZXJ5UGFyYW1zPy5xdWVyeU1vZGUgPT09IFwiY291bnRcIikge1xuICAgICAgcmV0dXJuIHsgdG90YWwgfSBhcyBMaXN0UmVzdWx0PExQLCBUU3Vic2V0TWFwcGluZ1tUXT47XG4gICAgfVxuXG4gICAgLy8gTElTVCDsv7zrpqwg7Iuk7ZaJXG4gICAgY29uc3QgY29tcHV0ZWRSb3dzID0gYXdhaXQgdGhpcy5leGVjdXRlTGlzdFF1ZXJ5KHN1YnNldCwgcWIsIHF1ZXJ5UGFyYW1zLCBudW0sIHBhZ2UsIGRlYnVnKTtcblxuICAgIC8vIEVuaGFuY2VyIOyggeyaqVxuICAgIGNvbnN0IGVuaGFuY2VyID0gKHBhcmFtcyBhcyBhbnkpLmVuaGFuY2Vycz8uW3N1YnNldF07XG4gICAgY29uc3QgZW5oYW5jZWRSb3dzID0gKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29tcHV0ZWRSb3dzLm1hcCgocm93KSA9PiBlbmhhbmNlcj8uKHJvdykgPz8gcm93KSxcbiAgICApKSBhcyBUU3Vic2V0TWFwcGluZ1tUXVtdO1xuXG4gICAgLy8gSW50ZXJuYWwg7ZWE65OcIOygnOqxsFxuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KHRoaXMubW9kZWxOYW1lKTtcbiAgICBjb25zdCBpbnRlcm5hbEZpZWxkcyA9IGVudGl0eS5zdWJzZXRzSW50ZXJuYWxbc3Vic2V0XSA/PyBbXTtcbiAgICBjb25zdCByb3dzID1cbiAgICAgIGludGVybmFsRmllbGRzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBlbmhhbmNlZFJvd3MubWFwKChyb3cpID0+IHRoaXMub21pdEludGVybmFsRmllbGRzKHJvdywgaW50ZXJuYWxGaWVsZHMpKVxuICAgICAgICA6IGVuaGFuY2VkUm93cztcblxuICAgIGlmIChxdWVyeVBhcmFtcy5xdWVyeU1vZGUgPT09IFwibGlzdFwiKSB7XG4gICAgICAvLyDrpqzsiqTtirjrp4wg66as7YS0XG4gICAgICByZXR1cm4geyByb3dzIH0gYXMgTGlzdFJlc3VsdDxMUCwgVFN1YnNldE1hcHBpbmdbVF0+O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDrkZjri6Qg66as7YS0XG4gICAgICByZXR1cm4geyByb3dzLCB0b3RhbCB9IGFzIExpc3RSZXN1bHQ8TFAsIFRTdWJzZXRNYXBwaW5nW1RdPjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6rCd7LK07JeQ7IScIGludGVybmFsIO2VhOuTnCDsoJzqsbBcbiAgICog7KSR7LKpIO2VhOuTnCjsmIg6IFwidXNlci5lbWFpbFwiKSDrsI8g67Cw7Je0KOyYiDogXCJlbXBsb3llZXMuc2FsYXJ5XCIp64+EIOyymOumrFxuICAgKi9cbiAgb21pdEludGVybmFsRmllbGRzPFQgZXh0ZW5kcyBvYmplY3Q+KHJvdzogVCwgZmllbGRzOiBzdHJpbmdbXSk6IFQge1xuICAgIGNvbnN0IHJlc3VsdCA9IGNsb25lRGVlcChyb3cpO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICB0aGlzLmRlbGV0ZUZpZWxkKHJlc3VsdCwgZmllbGQuc3BsaXQoXCIuXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJRdWVyeeulvCBQdXJpIFF1ZXJ5QnVpbGRlcuyXkCDsoIHsmqlcbiAgICpcbiAgICogQHBhcmFtIHFiIFB1cmkgUXVlcnlCdWlsZGVyIOyduOyKpO2EtOyKpFxuICAgKiBAcGFyYW0gZmlsdGVycyBGaWx0ZXJRdWVyeSDqsJ3ssrRcbiAgICovXG4gIHByb3RlY3RlZCBhcHBseVNvbmFtdUZpbHRlcnM8VEVudGl0eSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBxYjogUHVyaTxhbnksIGFueSwgYW55PixcbiAgICBmaWx0ZXJzPzogRmlsdGVyUXVlcnk8VEVudGl0eT4sXG4gICk6IHZvaWQge1xuICAgIGlmICghZmlsdGVycykgcmV0dXJuO1xuXG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQodGhpcy5tb2RlbE5hbWUpO1xuXG4gICAgLy8gMS4g7ZWE7YSwIOqygOymnSAoRW50aXR5IOq4sOuwmClcbiAgICB2YWxpZGF0ZVNvbmFtdUZpbHRlcnMoZmlsdGVycywgZW50aXR5KTtcblxuICAgIC8vIDIuIOqygOymneuQnCDtlYTthLAg7KCB7JqpXG4gICAgY29uc3QgcHVyaSA9IHFiIGFzIGFueTtcblxuICAgIGZvciAoY29uc3QgW2ZpZWxkLCBjb25kaXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpKSB7XG4gICAgICBpZiAoY29uZGl0aW9uID09PSB1bmRlZmluZWQgfHwgY29uZGl0aW9uID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgLy8g7YWM7J2067iU66qFLu2VhOuTnOuqhSDtmJXsi53snLzroZwg67OA7ZmYXG4gICAgICBjb25zdCBmdWxsRmllbGQgPSBlbnRpdHkuZ2V0RnVsbEZpZWxkTmFtZShmaWVsZCk7XG5cbiAgICAgIC8vIOyngeygkSDqsJIgKGVx7JmAIOuPmeydvClcbiAgICAgIGlmICh0eXBlb2YgY29uZGl0aW9uICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICBwdXJpLndoZXJlKGZ1bGxGaWVsZCwgY29uZGl0aW9uKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIOyXsOyCsOyekCDqsJ3ssrRcbiAgICAgIGZvciAoY29uc3QgW29wZXJhdG9yLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZGl0aW9uKSkge1xuICAgICAgICB0aGlzLmFwcGx5T3BlcmF0b3IocWIsIGZ1bGxGaWVsZCwgb3BlcmF0b3IgYXMgRmlsdGVyT3BlcmF0b3IsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog64uo7J28IOyXsOyCsOyekOulvCBRdWVyeUJ1aWxkZXLsl5Ag7KCB7JqpXG4gICAqL1xuICBwcml2YXRlIGFwcGx5T3BlcmF0b3IoXG4gICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT4sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG4gICAgdmFsdWU6IHVua25vd24sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHB1cmkgPSBxYiBhcyBhbnk7XG5cbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIm5lXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiIT1cIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPlwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZ3RlXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPj1cIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImx0XCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPFwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPD1cIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgIHB1cmkud2hlcmVJbihmaWVsZCwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIm5vdEluXCI6XG4gICAgICAgIHB1cmkud2hlcmVOb3RJbihmaWVsZCwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImNvbnRhaW5zXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwibGlrZVwiLCBgJSR7dmFsdWV9JWApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInN0YXJ0c1dpdGhcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCJsaWtlXCIsIGAke3ZhbHVlfSVgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJlbmRzV2l0aFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcImxpa2VcIiwgYCUke3ZhbHVlfWApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImlzTnVsbFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBudWxsKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJpc05vdE51bGxcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCIhPVwiLCBudWxsKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJiZWZvcmVcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI8XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJhZnRlclwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIj5cIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImJldHdlZW5cIjoge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IHZhbHVlO1xuICAgICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPj1cIiwgbWluKS53aGVyZShmaWVsZCwgXCI8PVwiLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIG9wZXJhdG9yOiAke29wZXJhdG9yfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDspJHssqkg7ZWE65OcIOyCreygnCAo67Cw7Je0IOuCtCDqsJ3ssrTrj4Qg7LKY66asKVxuICAgKi9cbiAgZGVsZXRlRmllbGQob2JqOiBhbnksIHBhcnRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iai5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtW3BhcnRzWzBdXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIG9ialtwYXJ0c1swXV07XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IHBhcnRzO1xuICAgIGNvbnN0IG5leHQgPSBvYmpbZmlyc3RdO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkpIHtcbiAgICAgIG5leHQubWFwKChpdGVtKSA9PiB0aGlzLmRlbGV0ZUZpZWxkKGl0ZW0sIHJlc3QpKTtcbiAgICB9IGVsc2UgaWYgKG5leHQgJiYgdHlwZW9mIG5leHQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRoaXMuZGVsZXRlRmllbGQobmV4dCwgcmVzdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENPVU5UIOy/vOumrCDsi6TtlokgKOuCtOu2gCDrqZTshJzrk5wpXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVDb3VudFF1ZXJ5KFxuICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+LFxuICAgIHBhcmFtczogeyBxdWVyeU1vZGU/OiBcImxpc3RcIiB8IFwiY291bnRcIiB8IFwiYm90aFwiIH0sXG4gICAgZGVidWc6IGJvb2xlYW4sXG4gICAgb3B0aW1pemVDb3VudFF1ZXJ5OiBib29sZWFuLFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGlmIChwYXJhbXMucXVlcnlNb2RlID09PSBcImxpc3RcIikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnRQdXJpID0gcWIuY2xvbmUoKS5jbGVhcihcIm9yZGVyXCIpLmNsZWFyKFwibGltaXRcIikuY2xlYXIoXCJvZmZzZXRcIik7XG5cbiAgICBpZiAob3B0aW1pemVDb3VudFF1ZXJ5KSB7XG4gICAgICBjb25zdCB7IGRlZmF1bHQ6IFNxbFBhcnNlciB9ID0gYXdhaXQgaW1wb3J0KFwibm9kZS1zcWwtcGFyc2VyXCIpO1xuICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFNxbFBhcnNlci5QYXJzZXIoKTtcbiAgICAgIGNvbnN0IHBhcnNlZFF1ZXJ5ID0gcGFyc2VyLmFzdGlmeShjb3VudFB1cmkudG9RdWVyeSgpLCB7XG4gICAgICAgIGRhdGFiYXNlOiBTb25hbXUuY29uZmlnLmRhdGFiYXNlLmRhdGFiYXNlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxlZnRKb2luVGFibGVzID0gZ2V0Sm9pblRhYmxlcyhwYXJzZWRRdWVyeSwgW1wiTEVGVCBKT0lOXCJdKTtcbiAgICAgIGNvbnN0IHdoZXJlVGFibGVzID0gZ2V0VGFibGVOYW1lc0Zyb21XaGVyZShwYXJzZWRRdWVyeSk7XG5cbiAgICAgIGNvbnN0IHRhYmxlc1RvUmVtb3ZlID0gbGVmdEpvaW5UYWJsZXMuZmlsdGVyKChqKSA9PiAhd2hlcmVUYWJsZXMuaW5jbHVkZXMoaikpO1xuICAgICAgdGFibGVzVG9SZW1vdmUuZm9yRWFjaCgodGFibGUpID0+IHtcbiAgICAgICAgY291bnRQdXJpLmNsZWFySm9pbih0YWJsZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDT1VOVCgqKeuhnCDsoITssrQg66CI7L2U65OcIOyImOulvCDqs4TsgrBcbiAgICAvLyBUT0RPOiBxYuydmCBESVNUSU5DVOqwgCDsnojripQg6rK97JqwIOyymOumrO2VtOyVvCDtlahcbiAgICBjb25zdCBjb3VudFJlc3VsdDogeyB0b3RhbD86IG51bWJlciB9ID0gYXdhaXQgY291bnRQdXJpXG4gICAgICAuY2xlYXIoXCJzZWxlY3RcIilcbiAgICAgIC5zZWxlY3QoeyB0b3RhbDogUHVyaS5yYXdOdW1iZXIoYENPVU5UKCopOjppbnRlZ2VyYCkgfSlcbiAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb3VudFB1cmkuZGVidWcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRSZXN1bHQ/LnRvdGFsID8/IDA7XG4gIH1cblxuICAvKipcbiAgICogTElTVCDsv7zrpqwg7Iuk7ZaJICjrgrTrtoAg66mU7ISc65OcKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlTGlzdFF1ZXJ5PFQgZXh0ZW5kcyBUU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT4sXG4gICAgcGFyYW1zOiB7IHF1ZXJ5TW9kZT86IFwibGlzdFwiIHwgXCJjb3VudFwiIHwgXCJib3RoXCIgfSxcbiAgICBudW06IG51bWJlcixcbiAgICBwYWdlOiBudW1iZXIsXG4gICAgZGVidWc6IGJvb2xlYW4sXG4gICk6IFByb21pc2U8YW55W10+IHtcbiAgICBpZiAocGFyYW1zLnF1ZXJ5TW9kZSA9PT0gXCJjb3VudFwiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbGltaXRlZFFiID0gKCgpID0+IHtcbiAgICAgIGlmIChudW0gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHFiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHFiLmxpbWl0KG51bSkub2Zmc2V0KG51bSAqIChwYWdlIC0gMSkpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgbGV0IHVubG9hZGVkUm93cyA9IGF3YWl0IGxpbWl0ZWRRYjtcblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgcWIuZGVidWcoKTtcbiAgICB9XG5cbiAgICAvLyDroZzrjZQg7LKY66asXG4gICAgY29uc3QgbG9hZGVycyA9ICh0aGlzLmxvYWRlclF1ZXJpZXMgYXMgYW55KVtzdWJzZXRdO1xuICAgIGlmIChsb2FkZXJzICYmIEFycmF5LmlzQXJyYXkobG9hZGVycykpIHtcbiAgICAgIHVubG9hZGVkUm93cyA9IGF3YWl0IHRoaXMucHJvY2Vzc0xvYWRlcnModW5sb2FkZWRSb3dzLCBsb2FkZXJzLCBkZWJ1Zyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHlkcmF0ZSh1bmxvYWRlZFJvd3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIOyerOq3gOyggSDroZzrjZQg7LKY66asXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NMb2FkZXJzKHJvd3M6IGFueVtdLCBsb2FkZXJzOiBhbnlbXSwgZGVidWc6IGJvb2xlYW4pOiBQcm9taXNlPGFueVtdPiB7XG4gICAgZm9yIChjb25zdCByZXNvbHZlTG9hZGVyIG9mIGxvYWRlcnMpIHtcbiAgICAgIGNvbnN0IHsgYXMsIHJlZklkLCBxYjogcmVzb2x2ZUxvYWRlclFiRm4sIGxvYWRlcnM6IG5lc3RlZExvYWRlcnMgfSA9IHJlc29sdmVMb2FkZXI7XG5cbiAgICAgIGNvbnN0IHJlc29sdmVMb2FkZXJRYiA9IHJlc29sdmVMb2FkZXJRYkZuKFxuICAgICAgICBuZXcgUHVyaVdyYXBwZXIodGhpcy5nZXREQihcInJcIiksIG5ldyBVcHNlcnRCdWlsZGVyKCkpLFxuICAgICAgICByb3dzLm1hcCgocm93KSA9PiByb3dbcmVmSWRdKSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICByZXNvbHZlTG9hZGVyUWIuZGVidWcoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGxvYWRlZFJvd3MgPSAoYXdhaXQgcmVzb2x2ZUxvYWRlclFiKSBhcyBhbnlbXTtcblxuICAgICAgLy8g7KSR7LKpIGxvYWRlcnPqsIAg7J6I7Jy866m0IOyerOq3gCDsspjrpqxcbiAgICAgIGlmIChuZXN0ZWRMb2FkZXJzICYmIG5lc3RlZExvYWRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBsb2FkZWRSb3dzID0gYXdhaXQgdGhpcy5wcm9jZXNzTG9hZGVycyhsb2FkZWRSb3dzLCBuZXN0ZWRMb2FkZXJzLCBkZWJ1Zyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YlJvd0dyb3VwcyA9IGdyb3VwKGxvYWRlZFJvd3MsIChyb3cpID0+IHJvdy5yZWZJZCk7XG5cbiAgICAgIHJvd3MgPSByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIHJvd1thc10gPSAoc3ViUm93R3JvdXBzW3Jvd1tyZWZJZF1dID8/IFtdKS5tYXAoKHIpID0+IG9taXQociwgW1wicmVmSWRcIl0pKTtcbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXQg66CI7L2U65Oc66W8IOykkeyyqSDqsJ3ssrTroZwg67OA7ZmYXG4gICAqXG4gICAqIC0gYHVzZXJfX25hbWVgIOKGkiBgeyB1c2VyOiB7IG5hbWUgfSB9YFxuICAgKiAtIG51bGxhYmxlIHJlbGF0aW9u7J2YIOqyveyasCBpZCDtlYTrk5zqsIAgbnVsbOydtOuptCDqsJ3ssrQg7J6Q7LK066W8IG51bGzroZxcbiAgICovXG4gIGh5ZHJhdGU8VCBleHRlbmRzIFVua25vd25EQlJlY29yZD4ocm93czogVFtdKTogVFtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAoKHJvdzogVCkgPT4ge1xuICAgICAgLy8gbnVsbGFibGUgcmVsYXRpb24g7LKY66asOiDqt7jro7nsnZggaWQg7ZWE65Oc6rCAIG51bGzsnbTrqbQg6rCd7LK0IOyghOyytOulvCBudWxs66GcXG4gICAgICBjb25zdCBuZXN0ZWRLZXlzID0gT2JqZWN0LmtleXMocm93KS5maWx0ZXIoKGtleSkgPT4ga2V5LmluY2x1ZGVzKFwiX19cIikpO1xuICAgICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0Lmdyb3VwQnkobmVzdGVkS2V5cywgKGtleSkgPT4ga2V5LnNwbGl0KFwiX19cIilbMF0pO1xuXG4gICAgICAvLyBpZCDtlYTrk5zqsIAgbnVsbOyduCDqt7jro7kg7LC+6riwICjsmIg6IHBhcmVudF9faWTqsIAgbnVsbOydtOuptCBwYXJlbnQg6re466O5IOyghOyytOqwgCBudWxsKVxuICAgICAgY29uc3QgbnVsbEtleXMgPSBPYmplY3QuZW50cmllcyhncm91cHMpXG4gICAgICAgIC5maWx0ZXIoKFtncm91cEtleSwgZmllbGRzXSkgPT4ge1xuICAgICAgICAgIGlmICghZmllbGRzIHx8IGZpZWxkcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgIC8vIOq3uOujueydmCBpZCDtlYTrk5wg7LC+6riwICjsmIg6IFwicGFyZW50X19pZFwiKVxuICAgICAgICAgIGNvbnN0IGlkRmllbGQgPSBgJHtncm91cEtleX1fX2lkYDtcbiAgICAgICAgICBpZiAoaWRGaWVsZCBpbiByb3cpIHtcbiAgICAgICAgICAgIC8vIGlkIO2VhOuTnOqwgCBudWxs7J2066m0IOqwneyytCDsoITssrTqsIAgbnVsbFxuICAgICAgICAgICAgcmV0dXJuIHJvd1tpZEZpZWxkXSA9PT0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBpZCDtlYTrk5zqsIAg7JeG7Jy866m0IOq4sOyhtCDroZzsp4E6IOuqqOuToCDtlYTrk5zqsIAgbnVsbOyduOyngCDtmZXsnbhcbiAgICAgICAgICByZXR1cm4gZmllbGRzLmV2ZXJ5KFxuICAgICAgICAgICAgKGZpZWxkKSA9PlxuICAgICAgICAgICAgICByb3dbZmllbGRdID09PSBudWxsIHx8IChBcnJheS5pc0FycmF5KHJvd1tmaWVsZF0pICYmIHJvd1tmaWVsZF0ubGVuZ3RoID09PSAwKSxcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKChba2V5XSkgPT4ga2V5KTtcblxuICAgICAgY29uc3QgaHlkcmF0ZWQgPSBPYmplY3Qua2V5cyhyb3cpLnJlZHVjZSgociwgZmllbGQpID0+IHtcbiAgICAgICAgaWYgKCFmaWVsZC5pbmNsdWRlcyhcIl9fXCIpKSB7XG4gICAgICAgICAgLy8g7J2867CYIO2VhOuTnDog67Cw7Je0IOuCtCDqsJ3ssrTrqbQg7J6s6reAIGh5ZHJhdGVcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dbZmllbGRdKSAmJiBpc09iamVjdChyb3dbZmllbGRdWzBdKSkge1xuICAgICAgICAgICAgcltmaWVsZF0gPSB0aGlzLmh5ZHJhdGUocm93W2ZpZWxkXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJbZmllbGRdID0gcm93W2ZpZWxkXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDspJHssqkg7ZWE65OcIOyymOumrDogdXNlcl9fbmFtZSDihpIgdXNlcltuYW1lXVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGZpZWxkLnNwbGl0KFwiX19cIik7XG4gICAgICAgIGNvbnN0IG9ialBhdGggPVxuICAgICAgICAgIHBhcnRzWzBdICtcbiAgICAgICAgICBwYXJ0c1xuICAgICAgICAgICAgLnNsaWNlKDEpXG4gICAgICAgICAgICAubWFwKChwYXJ0KSA9PiBgWyR7cGFydH1dYClcbiAgICAgICAgICAgIC5qb2luKFwiXCIpO1xuXG4gICAgICAgIHIgPSBzZXQoXG4gICAgICAgICAgcixcbiAgICAgICAgICBvYmpQYXRoLFxuICAgICAgICAgIHJvd1tmaWVsZF0gJiYgQXJyYXkuaXNBcnJheShyb3dbZmllbGRdKSAmJiBpc09iamVjdChyb3dbZmllbGRdWzBdKVxuICAgICAgICAgICAgPyB0aGlzLmh5ZHJhdGUocm93W2ZpZWxkXSlcbiAgICAgICAgICAgIDogcm93W2ZpZWxkXSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sIHt9IGFzIFVua25vd25EQlJlY29yZCk7XG5cbiAgICAgIC8vIG51bGwgcmVsYXRpb24g7LKY66asXG4gICAgICBudWxsS2V5cy5mb3JFYWNoKChudWxsS2V5KSA9PiB7XG4gICAgICAgIGh5ZHJhdGVkW251bGxLZXldID0gbnVsbDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaHlkcmF0ZWQ7XG4gICAgfSkgYXMgVFtdO1xuICB9XG59XG5cbi8qKlxuICogRW5oYW5jZXIg7YyM652866+47YSwIOyhsOqxtOu2gCDtg4DsnoVcbiAqIFJlcXVpcmVkRW5oYW5jZXJLZXlz6rCAIOyXhuycvOuptCBlbmhhbmNlcnMg7ISg7YOd7KCBLCDsnojsnLzrqbQg7ZWE7IiYXG4gKi9cbnR5cGUgRW5oYW5jZXJQYXJhbTxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgVENvbXB1dGVkUmVzdWx0cyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuICBUU3Vic2V0TWFwcGluZyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuICBUU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBQdXJpU3Vic2V0Rm4+LFxuPiA9IFtSZXF1aXJlZEVuaGFuY2VyS2V5czxUU3Vic2V0S2V5LCBUQ29tcHV0ZWRSZXN1bHRzLCBUU3Vic2V0TWFwcGluZz5dIGV4dGVuZHMgW25ldmVyXVxuICA/IHsgZW5oYW5jZXJzPzogRW5oYW5jZXJNYXA8VFN1YnNldEtleSwgVENvbXB1dGVkUmVzdWx0cywgVFN1YnNldE1hcHBpbmcsIFRTdWJzZXRRdWVyaWVzPiB9XG4gIDogeyBlbmhhbmNlcnM6IEVuaGFuY2VyTWFwPFRTdWJzZXRLZXksIFRDb21wdXRlZFJlc3VsdHMsIFRTdWJzZXRNYXBwaW5nLCBUU3Vic2V0UXVlcmllcz4gfTtcblxudHlwZSBSZXF1aXJlZEVuaGFuY2VyS2V5czxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgVENvbXB1dGVkUmVzdWx0cyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuICBUU3Vic2V0TWFwcGluZyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuPiA9IHtcbiAgW0sgaW4gVFN1YnNldEtleV06IFRDb21wdXRlZFJlc3VsdHNbS10gZXh0ZW5kcyBUU3Vic2V0TWFwcGluZ1tLXSA/IG5ldmVyIDogSztcbn1bVFN1YnNldEtleV07XG5cbmV4cG9ydCBjb25zdCBCYXNlTW9kZWwgPSBuZXcgQmFzZU1vZGVsQ2xhc3MoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OzthQU1zQztxQkFDa0I7WUFFcUI7ZUFDakI7aUJBR2U7U0FHbEQ7V0FDSTttQkFNZTtxQkFFSTtDQVluQyxpQkFBYixNQUtFO0VBSWtCO0VBQ047RUFDQTtFQUxaO0VBRUEsWUFDRSxZQUFvQyxLQUFLLFlBQVksTUFDckQsZUFDQSxlQUNBO0dBSGdCLEtBQUEsWUFBQTtHQUNOLEtBQUEsZ0JBQUE7R0FDQSxLQUFBLGdCQUFBO0dBRVYsS0FBSyxTQUFTLFVBQVUsd0JBQXdCLEtBQUssV0FBVyxPQUFPLENBQUM7RUFDMUU7RUFFQSxNQUFNLE9BQXVCO0dBQzNCLE9BQU8sR0FBRyxNQUFNLEtBQUs7RUFDdkI7RUFFQSxRQUFRLE9BQThCO0dBRXBDLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUMsZUFBZSxLQUFLO0dBQzNELElBQUksS0FDRixPQUFPO0dBS1QsT0FBTyxJQUFJLFlBREEsS0FBSyxNQUFNLEtBQ0MsR0FBSSxJQUFJLGNBQWMsQ0FBQztFQUNoRDtFQUVBLE1BQU0sVUFBVTtHQUNkLE9BQU8sR0FBRyxRQUFRO0VBQ3BCO0VBRUEsTUFBTSxlQUNKLEtBQ0EsTUFDQSxXQUNBLGNBQ0EsWUFBb0IsS0FDcEI7R0FDQSxJQUFJLENBQUMsS0FDSCxNQUFNLEtBQUssTUFBTSxHQUFHO0dBR3RCLElBQUk7R0FDSixJQUFJO0dBQ0osSUFBSTtHQUVKLElBQUksYUFBYSxTQUFTLEdBQUc7SUFDM0IsZUFBZSxJQUFJLElBQUksbUJBQW1CLGFBQWEsS0FBSyxHQUFHLEVBQUUsR0FBRztJQUNwRSxjQUFjLEdBQUcsYUFBYTtJQUM5QixVQUFVLEtBQUssS0FBSyxRQUFRLGFBQWEsS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUM7R0FDL0UsT0FBTztJQUNMLGVBQWUsYUFBYTtJQUM1QixjQUFjLGFBQWE7SUFDM0IsVUFBVSxLQUFLLEtBQUssUUFBUSxJQUFJLGFBQWEsR0FBYTtHQUM1RDtHQUVBLElBQUksWUFBc0IsQ0FBQztHQUMzQixLQUFLLE1BQU0sU0FBUyxRQUFRLFNBQVMsU0FBUyxHQUFHO0lBQy9DLE1BQU0sU0FBUyxNQUFNLElBQUksU0FBUyxDQUFDLENBQ2hDLE9BQU8sTUFBTSxJQUFJLElBQUksV0FBVyxDQUFDLENBQUMsQ0FDbEMsUUFBUSxjQUF3QixLQUFLO0lBQ3hDLFlBQVksVUFBVSxPQUNwQixPQUFPLEtBQUssVUFBMkIsU0FBUyxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FDbkU7R0FDRjtHQUVBLE9BQU87RUFDVDs7Ozs7OztFQVFBLGlCQUF1QyxRQUFXO0dBQ2hELElBQUksQ0FBQyxLQUFLLGVBQ1IsTUFBTSxJQUFJLE1BQU0sOEJBQThCO0dBR2hELE1BQU0sY0FBYyxJQUFJLFlBQVksS0FBSyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBQztHQUN4RSxNQUFNLEtBQUssS0FBSyxjQUFjLE9BQU8sR0FBRyxXQUFXO0dBT25ELE9BQU87SUFDRDtJQUNKLFlBQVksWUFBZ0Q7R0FROUQ7RUFDRjs7Ozs7RUFNQSxnQkFDRSxXQU1BO0dBQ0EsT0FBTztFQUNUOzs7Ozs7Ozs7O0VBV0EsTUFBTSxtQkFVSixRQVk0QztHQUM1QyxNQUFNLEVBQUUsUUFBUSxJQUFJLFFBQVEsYUFBYSxRQUFRLE9BQU8scUJBQXFCLFVBQVU7R0FFdkYsSUFBSSxDQUFDLEtBQUssZUFDUixNQUFNLElBQUksTUFBTSw4QkFBOEI7R0FJaEQsSUFBSSxZQUFZLGNBQWM7SUFDNUIsTUFBTSxtQkFBbUIscUJBQXFCLFlBQVksWUFBWTtJQUN0RSxLQUFLLG1CQUFtQixJQUFJLGdCQUFnQjtHQUM5QztHQUVBLE1BQU0sRUFBRSxLQUFLLFNBQVM7R0FHdEIsTUFBTSxRQUFRLE1BQU0sS0FBSyxrQkFBa0IsSUFBSSxhQUFhLE9BQU8sa0JBQWtCO0dBRXJGLElBQUksYUFBYSxjQUFjLFNBQzdCLE9BQU8sRUFBRSxNQUFNO0dBSWpCLE1BQU0sZUFBZSxNQUFNLEtBQUssaUJBQWlCLFFBQVEsSUFBSSxhQUFhLEtBQUssTUFBTSxLQUFLO0dBRzFGLE1BQU0sV0FBWSxPQUFlLFlBQVk7R0FDN0MsTUFBTSxlQUFnQixNQUFNLFFBQVEsSUFDbEMsYUFBYSxLQUFLLFFBQVEsV0FBVyxHQUFHLEtBQUssR0FBRyxDQUNsRDtHQUlBLE1BQU0saUJBRFMsY0FBYyxJQUFJLEtBQUssU0FDZixDQUFBLENBQU8sZ0JBQWdCLFdBQVcsQ0FBQztHQUMxRCxNQUFNLE9BQ0osZUFBZSxTQUFTLElBQ3BCLGFBQWEsS0FBSyxRQUFRLEtBQUssbUJBQW1CLEtBQUssY0FBYyxDQUFDLElBQ3RFO0dBRU4sSUFBSSxZQUFZLGNBQWMsUUFFNUIsT0FBTyxFQUFFLEtBQUs7UUFHZCxPQUFPO0lBQUU7SUFBTTtHQUFNO0VBRXpCOzs7OztFQU1BLG1CQUFxQyxLQUFRLFFBQXFCO0dBQ2hFLE1BQU0sU0FBUyxVQUFVLEdBQUc7R0FDNUIsS0FBSyxNQUFNLFNBQVMsUUFDbEIsS0FBSyxZQUFZLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQztHQUUzQyxPQUFPO0VBQ1Q7Ozs7Ozs7RUFRQSxtQkFDRSxJQUNBLFNBQ007R0FDTixJQUFJLENBQUMsU0FBUztHQUVkLE1BQU0sU0FBUyxjQUFjLElBQUksS0FBSyxTQUFTO0dBRy9DLHNCQUFzQixTQUFTLE1BQU07R0FHckMsTUFBTSxPQUFPO0dBRWIsS0FBSyxNQUFNLENBQUMsT0FBTyxjQUFjLE9BQU8sUUFBUSxPQUFPLEdBQUc7SUFDeEQsSUFBSSxjQUFjLFVBQWEsY0FBYyxNQUFNO0lBR25ELE1BQU0sWUFBWSxPQUFPLGlCQUFpQixLQUFLO0lBRy9DLElBQUksT0FBTyxjQUFjLFlBQVksTUFBTSxRQUFRLFNBQVMsR0FBRztLQUM3RCxLQUFLLE1BQU0sV0FBVyxTQUFTO0tBQy9CO0lBQ0Y7SUFHQSxLQUFLLE1BQU0sQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRLFNBQVMsR0FDdEQsS0FBSyxjQUFjLElBQUksV0FBVyxVQUE0QixLQUFLO0dBRXZFO0VBQ0Y7Ozs7RUFLQSxjQUNFLElBQ0EsT0FDQSxVQUNBLE9BQ007R0FDTixNQUFNLE9BQU87R0FFYixRQUFRLFVBQVI7SUFDRSxLQUFLO0tBQ0gsS0FBSyxNQUFNLE9BQU8sS0FBSztLQUN2QjtJQUVGLEtBQUs7S0FDSCxLQUFLLE1BQU0sT0FBTyxNQUFNLEtBQUs7S0FDN0I7SUFFRixLQUFLO0tBQ0gsS0FBSyxNQUFNLE9BQU8sS0FBSyxLQUFLO0tBQzVCO0lBRUYsS0FBSztLQUNILEtBQUssTUFBTSxPQUFPLE1BQU0sS0FBSztLQUM3QjtJQUVGLEtBQUs7S0FDSCxLQUFLLE1BQU0sT0FBTyxLQUFLLEtBQUs7S0FDNUI7SUFFRixLQUFLO0tBQ0gsS0FBSyxNQUFNLE9BQU8sTUFBTSxLQUFLO0tBQzdCO0lBRUYsS0FBSztLQUNILEtBQUssUUFBUSxPQUFPLEtBQUs7S0FDekI7SUFFRixLQUFLO0tBQ0gsS0FBSyxXQUFXLE9BQU8sS0FBSztLQUM1QjtJQUVGLEtBQUs7S0FDSCxLQUFLLE1BQU0sT0FBTyxRQUFRLElBQUksTUFBTSxFQUFFO0tBQ3RDO0lBRUYsS0FBSztLQUNILEtBQUssTUFBTSxPQUFPLFFBQVEsR0FBRyxNQUFNLEVBQUU7S0FDckM7SUFFRixLQUFLO0tBQ0gsS0FBSyxNQUFNLE9BQU8sUUFBUSxJQUFJLE9BQU87S0FDckM7SUFFRixLQUFLO0tBQ0gsS0FBSyxNQUFNLE9BQU8sSUFBSTtLQUN0QjtJQUVGLEtBQUs7S0FDSCxLQUFLLE1BQU0sT0FBTyxNQUFNLElBQUk7S0FDNUI7SUFFRixLQUFLO0tBQ0gsS0FBSyxNQUFNLE9BQU8sS0FBSyxLQUFLO0tBQzVCO0lBRUYsS0FBSztLQUNILEtBQUssTUFBTSxPQUFPLEtBQUssS0FBSztLQUM1QjtJQUVGLEtBQUs7S0FDSCxJQUFJLE1BQU0sUUFBUSxLQUFLLEtBQUssTUFBTSxXQUFXLEdBQUc7TUFDOUMsTUFBTSxDQUFDLEtBQUssT0FBTztNQUNuQixLQUFLLE1BQU0sT0FBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sT0FBTyxNQUFNLEdBQUc7S0FDckQ7S0FDQTtJQUdGLFNBQ0UsUUFBUSxLQUFLLHlCQUF5QixVQUFVO0dBQ3BEO0VBQ0Y7Ozs7RUFLQSxZQUFZLEtBQVUsT0FBdUI7R0FDM0MsSUFBSSxDQUFDLE9BQU8sT0FBTyxRQUFRLFVBQ3pCO0dBR0YsSUFBSSxNQUFNLFdBQVcsR0FBRztJQUN0QixJQUFJLE1BQU0sUUFBUSxHQUFHLEdBQ25CLElBQUksU0FBUyxTQUFTO0tBQ3BCLElBQUksUUFBUSxPQUFPLFNBQVMsVUFDMUIsT0FBTyxLQUFLLE1BQU07SUFFdEIsQ0FBQztTQUVELE9BQU8sSUFBSSxNQUFNO0lBRW5CO0dBQ0Y7R0FFQSxNQUFNLENBQUMsT0FBTyxHQUFHLFFBQVE7R0FDekIsTUFBTSxPQUFPLElBQUk7R0FFakIsSUFBSSxNQUFNLFFBQVEsSUFBSSxHQUNwQixLQUFLLEtBQUssU0FBUyxLQUFLLFlBQVksTUFBTSxJQUFJLENBQUM7UUFDMUMsSUFBSSxRQUFRLE9BQU8sU0FBUyxVQUNqQyxLQUFLLFlBQVksTUFBTSxJQUFJO0VBRS9COzs7O0VBS0EsTUFBYyxrQkFDWixJQUNBLFFBQ0EsT0FDQSxvQkFDaUI7R0FDakIsSUFBSSxPQUFPLGNBQWMsUUFDdkIsT0FBTztHQUdULE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQyxNQUFNLFFBQVE7R0FFekUsSUFBSSxvQkFBb0I7SUFDdEIsTUFBTSxFQUFFLFNBQVMsY0FBYyxNQUFNLE9BQU87SUFFNUMsTUFBTSxjQUFjLElBREQsVUFBVSxPQUNULENBQUEsQ0FBTyxPQUFPLFVBQVUsUUFBUSxHQUFHLEVBQ3JELFVBQVUsT0FBTyxPQUFPLFNBQVMsU0FDbkMsQ0FBQztJQUVELE1BQU0saUJBQWlCLGNBQWMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUMvRCxNQUFNLGNBQWMsdUJBQXVCLFdBQVc7SUFHdEQsQUFEdUIsZUFBZSxRQUFRLE1BQU0sQ0FBQyxZQUFZLFNBQVMsQ0FBQyxDQUMzRSxDQUFBLENBQWUsU0FBUyxVQUFVO0tBQ2hDLFVBQVUsVUFBVSxLQUFLO0lBQzNCLENBQUM7R0FDSDtHQUlBLE1BQU0sY0FBa0MsTUFBTSxVQUMzQyxNQUFNLFFBQVEsQ0FBQyxDQUNmLE9BQU8sRUFBRSxPQUFPLEtBQUssVUFBVSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FDdEQsTUFBTTtHQUVULElBQUksT0FDRixVQUFVLE1BQU07R0FHbEIsT0FBTyxhQUFhLFNBQVM7RUFDL0I7Ozs7RUFLQSxNQUFjLGlCQUNaLFFBQ0EsSUFDQSxRQUNBLEtBQ0EsTUFDQSxPQUNnQjtHQUNoQixJQUFJLE9BQU8sY0FBYyxTQUN2QixPQUFPLENBQUM7R0FVVixJQUFJLGVBQWUsYUFQTTtJQUN2QixJQUFJLFFBQVEsR0FDVixPQUFPO1NBRVAsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxPQUFPLE9BQU8sRUFBRTtHQUVoRCxFQUFBLENBQ3lCO0dBRXpCLElBQUksT0FDRixHQUFHLE1BQU07R0FJWCxNQUFNLFVBQVcsS0FBSyxjQUFzQjtHQUM1QyxJQUFJLFdBQVcsTUFBTSxRQUFRLE9BQU8sR0FDbEMsZUFBZSxNQUFNLEtBQUssZUFBZSxjQUFjLFNBQVMsS0FBSztHQUd2RSxPQUFPLEtBQUssUUFBUSxZQUFZO0VBQ2xDOzs7O0VBS0EsTUFBYyxlQUFlLE1BQWEsU0FBZ0IsT0FBZ0M7R0FDeEYsS0FBSyxNQUFNLGlCQUFpQixTQUFTO0lBQ25DLE1BQU0sRUFBRSxJQUFJLE9BQU8sSUFBSSxtQkFBbUIsU0FBUyxrQkFBa0I7SUFFckUsTUFBTSxrQkFBa0Isa0JBQ3RCLElBQUksWUFBWSxLQUFLLE1BQU0sR0FBRyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQ3BELEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUM5QjtJQUVBLElBQUksT0FDRixnQkFBZ0IsTUFBTTtJQUd4QixJQUFJLGFBQWMsTUFBTTtJQUd4QixJQUFJLGlCQUFpQixjQUFjLFNBQVMsR0FDMUMsYUFBYSxNQUFNLEtBQUssZUFBZSxZQUFZLGVBQWUsS0FBSztJQUd6RSxNQUFNLGVBQWUsTUFBTSxhQUFhLFFBQVEsSUFBSSxLQUFLO0lBRXpELE9BQU8sS0FBSyxLQUFLLFFBQVE7S0FDdkIsSUFBSSxPQUFPLGFBQWEsSUFBSSxXQUFXLENBQUMsRUFBQSxDQUFHLEtBQUssTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN4RSxPQUFPO0lBQ1QsQ0FBQztHQUNIO0dBRUEsT0FBTztFQUNUOzs7Ozs7O0VBUUEsUUFBbUMsTUFBZ0I7R0FDakQsT0FBTyxLQUFLLEtBQUssUUFBVztJQUUxQixNQUFNLGFBQWEsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsUUFBUSxJQUFJLFNBQVMsSUFBSSxDQUFDO0lBQ3RFLE1BQU0sU0FBUyxPQUFPLFFBQVEsYUFBYSxRQUFRLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBR3JFLE1BQU0sV0FBVyxPQUFPLFFBQVEsTUFBTSxDQUFDLENBQ3BDLFFBQVEsQ0FBQyxVQUFVLFlBQVk7S0FDOUIsSUFBSSxDQUFDLFVBQVUsT0FBTyxXQUFXLEdBQUcsT0FBTztLQUczQyxNQUFNLFVBQVUsR0FBRyxTQUFTO0tBQzVCLElBQUksV0FBVyxLQUViLE9BQU8sSUFBSSxhQUFhO0tBSTFCLE9BQU8sT0FBTyxPQUNYLFVBQ0MsSUFBSSxXQUFXLFFBQVMsTUFBTSxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FDL0U7SUFDRixDQUFDLENBQUMsQ0FDRCxLQUFLLENBQUMsU0FBUyxHQUFHO0lBRXJCLE1BQU0sV0FBVyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVU7S0FDckQsSUFBSSxDQUFDLE1BQU0sU0FBUyxJQUFJLEdBQUc7TUFFekIsSUFBSSxNQUFNLFFBQVEsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEdBQ3JELEVBQUUsU0FBUyxLQUFLLFFBQVEsSUFBSSxNQUFNO1dBRWxDLEVBQUUsU0FBUyxJQUFJO01BRWpCLE9BQU87S0FDVDtLQUdBLE1BQU0sUUFBUSxNQUFNLE1BQU0sSUFBSTtLQUM5QixNQUFNLFVBQ0osTUFBTSxLQUNOLE1BQ0csTUFBTSxDQUFDLENBQUMsQ0FDUixLQUFLLFNBQVMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUMxQixLQUFLLEVBQUU7S0FFWixJQUFJLElBQ0YsR0FDQSxTQUNBLElBQUksVUFBVSxNQUFNLFFBQVEsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQzdELEtBQUssUUFBUSxJQUFJLE1BQU0sSUFDdkIsSUFBSSxNQUNWO0tBRUEsT0FBTztJQUNULEdBQUcsQ0FBQyxDQUFvQjtJQUd4QixTQUFTLFNBQVMsWUFBWTtLQUM1QixTQUFTLFdBQVc7SUFDdEIsQ0FBQztJQUVELE9BQU87R0FDVCxDQUFDO0VBQ0g7Q0FDRjtDQXVCYSxZQUFZLElBQUksZUFBZSJ9
|
|
325
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2RlbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvYmFzZS1tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogYmlvbWUtaWdub3JlLWFsbCBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogUHVyaeydmCDtg4DsnoXsnYAg6rCc67OEIOuqqOuNuOyXkOyEnCDtmZXsoJXrkJjrr4DroZwgQmFzZU1vZGVs7JeQ7ISc64qUIGFueeulvCDtl4jsmqntlaggKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjbHVzdGVyLCBncm91cCwgaXNPYmplY3QsIG9taXQsIHNldCB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBGaWx0ZXJPcGVyYXRvciwgdHlwZSBGaWx0ZXJRdWVyeSB9IGZyb20gXCIuLi9maWx0ZXIvdHlwZXNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUZpbHRlclF1ZXJ5LCB2YWxpZGF0ZVNvbmFtdUZpbHRlcnMgfSBmcm9tIFwiLi4vZmlsdGVyL3V0aWxzXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IHR5cGUgRGF0YWJhc2VTY2hlbWFFeHRlbmQsIHR5cGUgU29uYW11UXVlcnlNb2RlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIExpc3RSZXN1bHQgfSBmcm9tIFwiLi4vdXRpbHMvbW9kZWxcIjtcbmltcG9ydCB7IGdldEpvaW5UYWJsZXMsIGdldFRhYmxlTmFtZXNGcm9tV2hlcmUgfSBmcm9tIFwiLi4vdXRpbHMvc3FsLXBhcnNlclwiO1xuaW1wb3J0IHsgdHlwZSBFbmhhbmNlck1hcCwgdHlwZSBSZXNvbHZlU3Vic2V0SW50ZXJzZWN0aW9uIH0gZnJvbSBcIi4vYmFzZS1tb2RlbC50eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBEQlByZXNldCB9IGZyb20gXCIuL2RiXCI7XG5pbXBvcnQgeyBEQiB9IGZyb20gXCIuL2RiXCI7XG5pbXBvcnQgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBJbmZlckFsbFN1YnNldHMsXG4gIHR5cGUgUHVyaUxvYWRlclF1ZXJpZXMsXG4gIHR5cGUgUHVyaVN1YnNldEZuLFxufSBmcm9tIFwiLi9wdXJpLXN1YnNldC50eXBlc1wiO1xuaW1wb3J0IHsgUHVyaVdyYXBwZXIgfSBmcm9tIFwiLi9wdXJpLXdyYXBwZXJcIjtcbmltcG9ydCB7IHR5cGUgVW5pb25FeHRyYWN0ZWRUVGFibGVzIH0gZnJvbSBcIi4vcHVyaS50eXBlc1wiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuL3Vwc2VydC1idWlsZGVyXCI7XG5cbnR5cGUgVW5rbm93bkRCUmVjb3JkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICog66qo65OgIE1vZGVsIO2BtOuemOyKpOydmCDquLDrs7gg7YG0656Y7IqkXG4gKlxuICogQHRlbXBsYXRlIFRTdWJzZXRLZXkgLSDshJzruIzshYsg7YKkIOycoOuLiOyYqCAo7JiIOiBcIkFcIiB8IFwiUFwiIHwgXCJTU1wiKVxuICogQHRlbXBsYXRlIFRTdWJzZXRNYXBwaW5nIC0g7ISc67iM7IWL67OEIOy1nOyihSDqsrDqs7wg7YOA7J6FIOunpO2VkVxuICogQHRlbXBsYXRlIFRTdWJzZXRRdWVyaWVzIC0g7ISc67iM7IWLIOy/vOumrCDtlajsiJgg6rCd7LK0XG4gKiBAdGVtcGxhdGUgVExvYWRlclF1ZXJpZXMgLSDshJzruIzshYvrs4Qg66Gc642UIOy/vOumrCDrsLDsl7Qg6rCd7LK0XG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlTW9kZWxDbGFzczxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICBUU3Vic2V0TWFwcGluZyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBuZXZlcixcbiAgVFN1YnNldFF1ZXJpZXMgZXh0ZW5kcyBSZWNvcmQ8VFN1YnNldEtleSwgUHVyaVN1YnNldEZuPiA9IG5ldmVyLFxuICBUTG9hZGVyUXVlcmllcyBleHRlbmRzIFB1cmlMb2FkZXJRdWVyaWVzPFRTdWJzZXRLZXk+ID0gbmV2ZXIsXG4+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBtb2RlbE5hbWU6IHN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IubmFtZSxcbiAgICBwcm90ZWN0ZWQgc3Vic2V0UXVlcmllcz86IFRTdWJzZXRRdWVyaWVzLFxuICAgIHByb3RlY3RlZCBsb2FkZXJRdWVyaWVzPzogVExvYWRlclF1ZXJpZXMsXG4gICkge1xuICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKTtcbiAgfVxuXG4gIGdldERCKHdoaWNoOiBEQlByZXNldCk6IEtuZXgge1xuICAgIHJldHVybiBEQi5nZXREQih3aGljaCk7XG4gIH1cblxuICBnZXRQdXJpKHdoaWNoOiBEQlByZXNldCk6IFB1cmlXcmFwcGVyIHtcbiAgICAvLyDtirjrnpzsnq3shZgg7Luo7YWN7Iqk7Yq47JeQ7IScIO2KuOuenOyereyFmCDtmo3rk51cbiAgICBjb25zdCB0cnggPSBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5nZXRUcmFuc2FjdGlvbih3aGljaCk7XG4gICAgaWYgKHRyeCkge1xuICAgICAgcmV0dXJuIHRyeDtcbiAgICB9XG5cbiAgICAvLyDtirjrnpzsnq3shZjsnbQg7JeG7Jy866m0IOyDiOuhnOyatCBQdXJpV3JhcHBlciDrsJjtmZhcbiAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIod2hpY2gpO1xuICAgIHJldHVybiBuZXcgUHVyaVdyYXBwZXIoZGIsIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWJzZXRRdWVyeVB1cmkoKTogUHVyaVdyYXBwZXIge1xuICAgIGNvbnN0IGFjdGl2ZVRyYW5zYWN0aW9uID0gREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuZ2V0QWN0aXZlVHJhbnNhY3Rpb24oKTtcbiAgICBpZiAoYWN0aXZlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybiBhY3RpdmVUcmFuc2FjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFB1cmlXcmFwcGVyKHRoaXMuZ2V0REIoXCJyXCIpLCBuZXcgVXBzZXJ0QnVpbGRlcigpKTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKSB7XG4gICAgcmV0dXJuIERCLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGFzeW5jIGdldEluc2VydGVkSWRzKFxuICAgIHdkYjogS25leCxcbiAgICByb3dzOiBVbmtub3duREJSZWNvcmRbXSxcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICB1bnFLZXlGaWVsZHM6IHN0cmluZ1tdLFxuICAgIGNodW5rU2l6ZTogbnVtYmVyID0gNTAwLFxuICApIHtcbiAgICBpZiAoIXdkYikge1xuICAgICAgd2RiID0gdGhpcy5nZXREQihcIndcIik7XG4gICAgfVxuXG4gICAgbGV0IHVucUtleXM6IHN0cmluZ1tdO1xuICAgIGxldCB3aGVyZUluRmllbGQ6IHN0cmluZyB8IEtuZXguUmF3O1xuICAgIGxldCBzZWxlY3RGaWVsZDogc3RyaW5nO1xuXG4gICAgaWYgKHVucUtleUZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICB3aGVyZUluRmllbGQgPSB3ZGIucmF3KGBDT05DQVRfV1MoJ18nLCAnJHt1bnFLZXlGaWVsZHMuam9pbihcIixcIil9JylgKTtcbiAgICAgIHNlbGVjdEZpZWxkID0gYCR7d2hlcmVJbkZpZWxkfSBhcyB0bXBVaWRgO1xuICAgICAgdW5xS2V5cyA9IHJvd3MubWFwKChyb3cpID0+IHVucUtleUZpZWxkcy5tYXAoKGZpZWxkKSA9PiByb3dbZmllbGRdKS5qb2luKFwiX1wiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoZXJlSW5GaWVsZCA9IHVucUtleUZpZWxkc1swXTtcbiAgICAgIHNlbGVjdEZpZWxkID0gdW5xS2V5RmllbGRzWzBdO1xuICAgICAgdW5xS2V5cyA9IHJvd3MubWFwKChyb3cpID0+IHJvd1t1bnFLZXlGaWVsZHNbMF1dIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdElkczogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW1zIG9mIGNsdXN0ZXIodW5xS2V5cywgY2h1bmtTaXplKSkge1xuICAgICAgY29uc3QgZGJSb3dzID0gYXdhaXQgd2RiKHRhYmxlTmFtZSlcbiAgICAgICAgLnNlbGVjdChcImlkXCIsIHdkYi5yYXcoc2VsZWN0RmllbGQpKVxuICAgICAgICAud2hlcmVJbih3aGVyZUluRmllbGQgYXMgc3RyaW5nLCBpdGVtcyk7XG4gICAgICByZXN1bHRJZHMgPSByZXN1bHRJZHMuY29uY2F0KFxuICAgICAgICBkYlJvd3MubWFwKChkYlJvdzogVW5rbm93bkRCUmVjb3JkKSA9PiBwYXJzZUludChTdHJpbmcoZGJSb3cuaWQpKSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRJZHM7XG4gIH1cblxuICAvKipcbiAgICog7Yq57KCVIOyEnOu4jOyFi+yXkCDrjIDtlZwg7L+866asIOu5jOuNlCDtmo3rk51cbiAgICpcbiAgICogQHJldHVybnMgcWIgLSDsv7zrpqwg67mM642UICjsobDqsbQg7LaU6rCA7JqpKVxuICAgKiBAcmV0dXJucyBvblN1YnNldCAtIO2KueyglSDshJzruIzshYsg7KCE7JqpIO2DgOyeheydtCDtlYTsmpTtlaAg65WMIOyCrOyaqVxuICAgKi9cbiAgZ2V0U3Vic2V0UXVlcmllczxUIGV4dGVuZHMgVFN1YnNldEtleT4oc3Vic2V0OiBUKSB7XG4gICAgaWYgKCF0aGlzLnN1YnNldFF1ZXJpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInN1YnNldFF1ZXJpZXMgaXMgbm90IGRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgcHVyaVdyYXBwZXIgPSB0aGlzLmdldFN1YnNldFF1ZXJ5UHVyaSgpO1xuICAgIGNvbnN0IHFiID0gdGhpcy5zdWJzZXRRdWVyaWVzW3N1YnNldF0/LihwdXJpV3JhcHBlcik7XG5cbiAgICAvLyBOb25BbGxvd2VkQXNTaW5nbGVUYWJsZTog64uo7J28IO2FjOydtOu4lCDsu6zrn7wg7KCR6re8IOuwqeyngOyaqSDrp4jsu6RcbiAgICB0eXBlIFFCVGFibGVzID0gVW5pb25FeHRyYWN0ZWRUVGFibGVzPFRTdWJzZXRLZXksIFRTdWJzZXRRdWVyaWVzPiAmIHtcbiAgICAgIE5vbkFsbG93ZWRBc1NpbmdsZVRhYmxlOiB7IF9fZnVsbHRleHRfXzogdHJ1ZSB9O1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgcWI6IHFiIGFzIHVua25vd24gYXMgUHVyaTxEYXRhYmFzZVNjaGVtYUV4dGVuZCwgUUJUYWJsZXMsIHt9PixcbiAgICAgIG9uU3Vic2V0OiAoKF9zdWJzZXQ6IFRTdWJzZXRLZXkgfCByZWFkb25seSBUU3Vic2V0S2V5W10pID0+IHFiKSBhcyB7XG4gICAgICAgIC8vIOuLqOydvCDtgqRcbiAgICAgICAgPFMgZXh0ZW5kcyBUU3Vic2V0S2V5PihzdWJzZXQ6IFMpOiBSZXR1cm5UeXBlPFRTdWJzZXRRdWVyaWVzW1NdPjtcbiAgICAgICAgLy8g7YKkIOuwsOyXtCAtPiDqtZDsp5Htlakg67CY7ZmYXG4gICAgICAgIDxBcnIgZXh0ZW5kcyByZWFkb25seSBUU3Vic2V0S2V5W10+KFxuICAgICAgICAgIHN1YnNldHM6IFsuLi5BcnJdLFxuICAgICAgICApOiBSZXNvbHZlU3Vic2V0SW50ZXJzZWN0aW9uPEFyciwgVFN1YnNldFF1ZXJpZXM+O1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVuaGFuY2VyIOqwneyytCDsg53shLEg7Zes7Y28XG4gICAqIO2DgOyehSDqsoDspp0g67CPIOy2lOuhoOydhCDrj4TsmYDspIxcbiAgICovXG4gIGNyZWF0ZUVuaGFuY2VyczxUIGV4dGVuZHMgVFN1YnNldEtleT4oXG4gICAgZW5oYW5jZXJzOiBFbmhhbmNlck1hcDxcbiAgICAgIFQsXG4gICAgICBJbmZlckFsbFN1YnNldHM8VFN1YnNldFF1ZXJpZXMsIFRMb2FkZXJRdWVyaWVzPixcbiAgICAgIFRTdWJzZXRNYXBwaW5nLFxuICAgICAgVFN1YnNldFF1ZXJpZXNcbiAgICA+LFxuICApIHtcbiAgICByZXR1cm4gZW5oYW5jZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIOyEnOu4jOyFiyDsv7zrpqwg7Iuk7ZaJXG4gICAqXG4gICAqIDEuIFNvbmFtdSDtlYTthLAg7KCB7JqpICjtg4DsnoUg67OA7ZmYIO2PrO2VqClcbiAgICogMi4g7L+866asIOyLpO2WiSAocGFnaW5hdGlvbiDsoIHsmqkpXG4gICAqIDMuIOuhnOuNlCDsi6TtlokgKDE6TiwgTjpNIOq0gOqzhCDrjbDsnbTthLAg66Gc65SpKVxuICAgKiA0LiBIeWRyYXRlIChmbGF0IOKGkiDspJHssqkg6rCd7LK0KVxuICAgKiA1LiBFbmhhbmNlciDsoIHsmqkgKHZpcnR1YWwg7ZWE65OcIOqzhOyCsClcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVTdWJzZXRRdWVyeTxcbiAgICBUIGV4dGVuZHMgVFN1YnNldEtleSxcbiAgICBUQ29tcHV0ZWRSZXN1bHRzIGV4dGVuZHMgSW5mZXJBbGxTdWJzZXRzPFRTdWJzZXRRdWVyaWVzLCBUTG9hZGVyUXVlcmllcz4sXG4gICAgTFAgZXh0ZW5kcyB7XG4gICAgICBudW0/OiBudW1iZXI7XG4gICAgICBwYWdlPzogbnVtYmVyO1xuICAgICAgcXVlcnlNb2RlPzogU29uYW11UXVlcnlNb2RlO1xuICAgICAgc29uYW11RmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgfSxcbiAgPihcbiAgICBwYXJhbXM6IHtcbiAgICAgIHN1YnNldDogVDtcbiAgICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+O1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIG51bTogbnVtYmVyO1xuICAgICAgICBwYWdlOiBudW1iZXI7XG4gICAgICAgIHF1ZXJ5TW9kZT86IFNvbmFtdVF1ZXJ5TW9kZTtcbiAgICAgICAgc29uYW11RmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICB9O1xuICAgICAgZGVidWc/OiBib29sZWFuO1xuICAgICAgb3B0aW1pemVDb3VudFF1ZXJ5PzogYm9vbGVhbjtcbiAgICB9ICYgRW5oYW5jZXJQYXJhbTxUU3Vic2V0S2V5LCBUQ29tcHV0ZWRSZXN1bHRzLCBUU3Vic2V0TWFwcGluZywgVFN1YnNldFF1ZXJpZXM+LFxuICApOiBQcm9taXNlPExpc3RSZXN1bHQ8TFAsIFRTdWJzZXRNYXBwaW5nW1RdPj4ge1xuICAgIGNvbnN0IHsgc3Vic2V0LCBxYiwgcGFyYW1zOiBxdWVyeVBhcmFtcywgZGVidWcgPSBmYWxzZSwgb3B0aW1pemVDb3VudFF1ZXJ5ID0gZmFsc2UgfSA9IHBhcmFtcztcblxuICAgIGlmICghdGhpcy5sb2FkZXJRdWVyaWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJsb2FkZXJRdWVyaWVzIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgIH1cblxuICAgIC8vIFNvbmFtdSBGaWx0ZXIg7KCB7JqpXG4gICAgaWYgKHF1ZXJ5UGFyYW1zLnNvbmFtdUZpbHRlcikge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZEZpbHRlciA9IG5vcm1hbGl6ZUZpbHRlclF1ZXJ5KHF1ZXJ5UGFyYW1zLnNvbmFtdUZpbHRlcik7XG4gICAgICB0aGlzLmFwcGx5U29uYW11RmlsdGVycyhxYiwgbm9ybWFsaXplZEZpbHRlcik7XG4gICAgfVxuXG4gICAgY29uc3QgeyBudW0sIHBhZ2UgfSA9IHF1ZXJ5UGFyYW1zO1xuICAgIC8vIOuqqOuToCDroZzrjZTqsIAgcm9vdCBxdWVyeeyZgCDqsJnsnYAg7Jew6rKw7J2EIOyCrOyaqe2VmOuPhOuhnSDsi6Ttlokg7Iuc7KCQ7J2YIGtuZXjsl5DshJwg7ZWcIOuyiOunjCDtjIzsg53tlZzri6QuXG4gICAgY29uc3QgcHVyaVdyYXBwZXIgPSBuZXcgUHVyaVdyYXBwZXIocWIua25leCwgbmV3IFVwc2VydEJ1aWxkZXIoKSk7XG5cbiAgICAvLyBDT1VOVCDsv7zrpqwg7Iuk7ZaJIChxdWVyeU1vZGU6IGxpc3Tsnbwg65WM64qUIDAg66as7YS0KVxuICAgIGNvbnN0IHRvdGFsID0gYXdhaXQgdGhpcy5leGVjdXRlQ291bnRRdWVyeShxYiwgcXVlcnlQYXJhbXMsIGRlYnVnLCBvcHRpbWl6ZUNvdW50UXVlcnkpO1xuXG4gICAgaWYgKHF1ZXJ5UGFyYW1zPy5xdWVyeU1vZGUgPT09IFwiY291bnRcIikge1xuICAgICAgcmV0dXJuIHsgdG90YWwgfSBhcyBMaXN0UmVzdWx0PExQLCBUU3Vic2V0TWFwcGluZ1tUXT47XG4gICAgfVxuXG4gICAgLy8gTElTVCDsv7zrpqwg7Iuk7ZaJXG4gICAgY29uc3QgY29tcHV0ZWRSb3dzID0gYXdhaXQgdGhpcy5leGVjdXRlTGlzdFF1ZXJ5KFxuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIG51bSxcbiAgICAgIHBhZ2UsXG4gICAgICBkZWJ1ZyxcbiAgICAgIHB1cmlXcmFwcGVyLFxuICAgICk7XG5cbiAgICAvLyBFbmhhbmNlciDsoIHsmqlcbiAgICBjb25zdCBlbmhhbmNlciA9IChwYXJhbXMgYXMgYW55KS5lbmhhbmNlcnM/LltzdWJzZXRdO1xuICAgIGNvbnN0IGVuaGFuY2VkUm93cyA9IChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNvbXB1dGVkUm93cy5tYXAoKHJvdykgPT4gZW5oYW5jZXI/Lihyb3cpID8/IHJvdyksXG4gICAgKSkgYXMgVFN1YnNldE1hcHBpbmdbVF1bXTtcblxuICAgIC8vIEludGVybmFsIO2VhOuTnCDsoJzqsbBcbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldCh0aGlzLm1vZGVsTmFtZSk7XG4gICAgY29uc3QgaW50ZXJuYWxGaWVsZHMgPSBlbnRpdHkuc3Vic2V0c0ludGVybmFsW3N1YnNldF0gPz8gW107XG4gICAgY29uc3Qgcm93cyA9XG4gICAgICBpbnRlcm5hbEZpZWxkcy5sZW5ndGggPiAwXG4gICAgICAgID8gZW5oYW5jZWRSb3dzLm1hcCgocm93KSA9PiB0aGlzLm9taXRJbnRlcm5hbEZpZWxkcyhyb3csIGludGVybmFsRmllbGRzKSlcbiAgICAgICAgOiBlbmhhbmNlZFJvd3M7XG5cbiAgICBpZiAocXVlcnlQYXJhbXMucXVlcnlNb2RlID09PSBcImxpc3RcIikge1xuICAgICAgLy8g66as7Iqk7Yq466eMIOumrO2EtFxuICAgICAgcmV0dXJuIHsgcm93cyB9IGFzIExpc3RSZXN1bHQ8TFAsIFRTdWJzZXRNYXBwaW5nW1RdPjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g65GY64ukIOumrO2EtFxuICAgICAgcmV0dXJuIHsgcm93cywgdG90YWwgfSBhcyBMaXN0UmVzdWx0PExQLCBUU3Vic2V0TWFwcGluZ1tUXT47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOqwneyytOyXkOyEnCBpbnRlcm5hbCDtlYTrk5wg7KCc6rGwXG4gICAqIOykkeyyqSDtlYTrk5wo7JiIOiBcInVzZXIuZW1haWxcIikg67CPIOuwsOyXtCjsmIg6IFwiZW1wbG95ZWVzLnNhbGFyeVwiKeuPhCDsspjrpqxcbiAgICovXG4gIG9taXRJbnRlcm5hbEZpZWxkczxUIGV4dGVuZHMgb2JqZWN0Pihyb3c6IFQsIGZpZWxkczogc3RyaW5nW10pOiBUIHtcbiAgICBjb25zdCByZXN1bHQgPSBjbG9uZURlZXAocm93KTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgdGhpcy5kZWxldGVGaWVsZChyZXN1bHQsIGZpZWxkLnNwbGl0KFwiLlwiKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyUXVlcnnrpbwgUHVyaSBRdWVyeUJ1aWxkZXLsl5Ag7KCB7JqpXG4gICAqXG4gICAqIEBwYXJhbSBxYiBQdXJpIFF1ZXJ5QnVpbGRlciDsnbjsiqTthLTsiqRcbiAgICogQHBhcmFtIGZpbHRlcnMgRmlsdGVyUXVlcnkg6rCd7LK0XG4gICAqL1xuICBwcm90ZWN0ZWQgYXBwbHlTb25hbXVGaWx0ZXJzPFRFbnRpdHkgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT4sXG4gICAgZmlsdGVycz86IEZpbHRlclF1ZXJ5PFRFbnRpdHk+LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWZpbHRlcnMpIHJldHVybjtcblxuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KHRoaXMubW9kZWxOYW1lKTtcblxuICAgIC8vIDEuIO2VhO2EsCDqsoDspp0gKEVudGl0eSDquLDrsJgpXG4gICAgdmFsaWRhdGVTb25hbXVGaWx0ZXJzKGZpbHRlcnMsIGVudGl0eSk7XG5cbiAgICAvLyAyLiDqsoDspp3rkJwg7ZWE7YSwIOyggeyaqVxuICAgIGNvbnN0IHB1cmkgPSBxYiBhcyBhbnk7XG5cbiAgICBmb3IgKGNvbnN0IFtmaWVsZCwgY29uZGl0aW9uXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKSkge1xuICAgICAgaWYgKGNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkIHx8IGNvbmRpdGlvbiA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgIC8vIO2FjOydtOu4lOuqhS7tlYTrk5zrqoUg7ZiV7Iud7Jy866GcIOuzgO2ZmFxuICAgICAgY29uc3QgZnVsbEZpZWxkID0gZW50aXR5LmdldEZ1bGxGaWVsZE5hbWUoZmllbGQpO1xuXG4gICAgICAvLyDsp4HsoJEg6rCSIChlceyZgCDrj5nsnbwpXG4gICAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcbiAgICAgICAgcHVyaS53aGVyZShmdWxsRmllbGQsIGNvbmRpdGlvbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyDsl7DsgrDsnpAg6rCd7LK0XG4gICAgICBmb3IgKGNvbnN0IFtvcGVyYXRvciwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbikpIHtcbiAgICAgICAgdGhpcy5hcHBseU9wZXJhdG9yKHFiLCBmdWxsRmllbGQsIG9wZXJhdG9yIGFzIEZpbHRlck9wZXJhdG9yLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOuLqOydvCDsl7DsgrDsnpDrpbwgUXVlcnlCdWlsZGVy7JeQIOyggeyaqVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU9wZXJhdG9yKFxuICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+LFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuICAgIHZhbHVlOiB1bmtub3duLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBwdXJpID0gcWIgYXMgYW55O1xuXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgY2FzZSBcImVxXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJuZVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIiE9XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIj5cIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIj49XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIjxcIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIjw9XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJpblwiOlxuICAgICAgICBwdXJpLndoZXJlSW4oZmllbGQsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJub3RJblwiOlxuICAgICAgICBwdXJpLndoZXJlTm90SW4oZmllbGQsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcImxpa2VcIiwgYCUke3ZhbHVlfSVgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJzdGFydHNXaXRoXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwibGlrZVwiLCBgJHt2YWx1ZX0lYCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZW5kc1dpdGhcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCJsaWtlXCIsIGAlJHt2YWx1ZX1gKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJpc051bGxcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaXNOb3ROdWxsXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiIT1cIiwgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiYmVmb3JlXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPFwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiYWZ0ZXJcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI+XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJiZXR3ZWVuXCI6IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSB2YWx1ZTtcbiAgICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIj49XCIsIG1pbikud2hlcmUoZmllbGQsIFwiPD1cIiwgbWF4KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBvcGVyYXRvcjogJHtvcGVyYXRvcn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog7KSR7LKpIO2VhOuTnCDsgq3soJwgKOuwsOyXtCDrgrQg6rCd7LK064+EIOyymOumrClcbiAgICovXG4gIGRlbGV0ZUZpZWxkKG9iajogYW55LCBwYXJ0czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICBvYmouZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtICYmIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBkZWxldGUgaXRlbVtwYXJ0c1swXV07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBvYmpbcGFydHNbMF1dO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBwYXJ0cztcbiAgICBjb25zdCBuZXh0ID0gb2JqW2ZpcnN0XTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7XG4gICAgICBuZXh0Lm1hcCgoaXRlbSkgPT4gdGhpcy5kZWxldGVGaWVsZChpdGVtLCByZXN0KSk7XG4gICAgfSBlbHNlIGlmIChuZXh0ICYmIHR5cGVvZiBuZXh0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aGlzLmRlbGV0ZUZpZWxkKG5leHQsIHJlc3QpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDT1VOVCDsv7zrpqwg7Iuk7ZaJICjrgrTrtoAg66mU7ISc65OcKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlQ291bnRRdWVyeShcbiAgICBxYjogUHVyaTxhbnksIGFueSwgYW55PixcbiAgICBwYXJhbXM6IHsgcXVlcnlNb2RlPzogXCJsaXN0XCIgfCBcImNvdW50XCIgfCBcImJvdGhcIiB9LFxuICAgIGRlYnVnOiBib29sZWFuLFxuICAgIG9wdGltaXplQ291bnRRdWVyeTogYm9vbGVhbixcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAocGFyYW1zLnF1ZXJ5TW9kZSA9PT0gXCJsaXN0XCIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50UHVyaSA9IHFiLmNsb25lKCkuY2xlYXIoXCJvcmRlclwiKS5jbGVhcihcImxpbWl0XCIpLmNsZWFyKFwib2Zmc2V0XCIpO1xuXG4gICAgaWYgKG9wdGltaXplQ291bnRRdWVyeSkge1xuICAgICAgY29uc3QgeyBkZWZhdWx0OiBTcWxQYXJzZXIgfSA9IGF3YWl0IGltcG9ydChcIm5vZGUtc3FsLXBhcnNlclwiKTtcbiAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBTcWxQYXJzZXIuUGFyc2VyKCk7XG4gICAgICBjb25zdCBwYXJzZWRRdWVyeSA9IHBhcnNlci5hc3RpZnkoY291bnRQdXJpLnRvUXVlcnkoKSwge1xuICAgICAgICBkYXRhYmFzZTogU29uYW11LmNvbmZpZy5kYXRhYmFzZS5kYXRhYmFzZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBsZWZ0Sm9pblRhYmxlcyA9IGdldEpvaW5UYWJsZXMocGFyc2VkUXVlcnksIFtcIkxFRlQgSk9JTlwiXSk7XG4gICAgICBjb25zdCB3aGVyZVRhYmxlcyA9IGdldFRhYmxlTmFtZXNGcm9tV2hlcmUocGFyc2VkUXVlcnkpO1xuXG4gICAgICBjb25zdCB0YWJsZXNUb1JlbW92ZSA9IGxlZnRKb2luVGFibGVzLmZpbHRlcigoaikgPT4gIXdoZXJlVGFibGVzLmluY2x1ZGVzKGopKTtcbiAgICAgIHRhYmxlc1RvUmVtb3ZlLmZvckVhY2goKHRhYmxlKSA9PiB7XG4gICAgICAgIGNvdW50UHVyaS5jbGVhckpvaW4odGFibGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ09VTlQoKinroZwg7KCE7LK0IOugiOy9lOuTnCDsiJjrpbwg6rOE7IKwXG4gICAgLy8gVE9ETzogcWLsnZggRElTVElOQ1TqsIAg7J6I64qUIOqyveyasCDsspjrpqztlbTslbwg7ZWoXG4gICAgY29uc3QgY291bnRSZXN1bHQ6IHsgdG90YWw/OiBudW1iZXIgfSA9IGF3YWl0IGNvdW50UHVyaVxuICAgICAgLmNsZWFyKFwic2VsZWN0XCIpXG4gICAgICAuc2VsZWN0KHsgdG90YWw6IFB1cmkucmF3TnVtYmVyKGBDT1VOVCgqKTo6aW50ZWdlcmApIH0pXG4gICAgICAuZmlyc3QoKTtcblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY291bnRQdXJpLmRlYnVnKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50UmVzdWx0Py50b3RhbCA/PyAwO1xuICB9XG5cbiAgLyoqXG4gICAqIExJU1Qg7L+866asIOyLpO2WiSAo64K067aAIOuplOyEnOuTnClcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZUxpc3RRdWVyeTxUIGV4dGVuZHMgVFN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+LFxuICAgIHBhcmFtczogeyBxdWVyeU1vZGU/OiBcImxpc3RcIiB8IFwiY291bnRcIiB8IFwiYm90aFwiIH0sXG4gICAgbnVtOiBudW1iZXIsXG4gICAgcGFnZTogbnVtYmVyLFxuICAgIGRlYnVnOiBib29sZWFuLFxuICAgIHB1cmlXcmFwcGVyOiBQdXJpV3JhcHBlcixcbiAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGlmIChwYXJhbXMucXVlcnlNb2RlID09PSBcImNvdW50XCIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBsaW1pdGVkUWIgPSAoKCkgPT4ge1xuICAgICAgaWYgKG51bSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcWI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcWIubGltaXQobnVtKS5vZmZzZXQobnVtICogKHBhZ2UgLSAxKSk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICBsZXQgdW5sb2FkZWRSb3dzID0gYXdhaXQgbGltaXRlZFFiO1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBxYi5kZWJ1ZygpO1xuICAgIH1cblxuICAgIC8vIOuhnOuNlCDsspjrpqxcbiAgICBjb25zdCBsb2FkZXJzID0gKHRoaXMubG9hZGVyUXVlcmllcyBhcyBhbnkpW3N1YnNldF07XG4gICAgaWYgKGxvYWRlcnMgJiYgQXJyYXkuaXNBcnJheShsb2FkZXJzKSkge1xuICAgICAgdW5sb2FkZWRSb3dzID0gYXdhaXQgdGhpcy5wcm9jZXNzTG9hZGVycyh1bmxvYWRlZFJvd3MsIGxvYWRlcnMsIGRlYnVnLCBwdXJpV3JhcHBlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHlkcmF0ZSh1bmxvYWRlZFJvd3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIOyerOq3gOyggSDroZzrjZQg7LKY66asXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NMb2FkZXJzKFxuICAgIHJvd3M6IGFueVtdLFxuICAgIGxvYWRlcnM6IGFueVtdLFxuICAgIGRlYnVnOiBib29sZWFuLFxuICAgIHB1cmlXcmFwcGVyOiBQdXJpV3JhcHBlcixcbiAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGZvciAoY29uc3QgcmVzb2x2ZUxvYWRlciBvZiBsb2FkZXJzKSB7XG4gICAgICBjb25zdCB7IGFzLCByZWZJZCwgcWI6IHJlc29sdmVMb2FkZXJRYkZuLCBsb2FkZXJzOiBuZXN0ZWRMb2FkZXJzIH0gPSByZXNvbHZlTG9hZGVyO1xuXG4gICAgICBjb25zdCByZXNvbHZlTG9hZGVyUWIgPSByZXNvbHZlTG9hZGVyUWJGbihcbiAgICAgICAgcHVyaVdyYXBwZXIsXG4gICAgICAgIHJvd3MubWFwKChyb3cpID0+IHJvd1tyZWZJZF0pLFxuICAgICAgKTtcblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIHJlc29sdmVMb2FkZXJRYi5kZWJ1ZygpO1xuICAgICAgfVxuXG4gICAgICBsZXQgbG9hZGVkUm93cyA9IChhd2FpdCByZXNvbHZlTG9hZGVyUWIpIGFzIGFueVtdO1xuXG4gICAgICAvLyDspJHssqkgbG9hZGVyc+qwgCDsnojsnLzrqbQg7J6s6reAIOyymOumrFxuICAgICAgaWYgKG5lc3RlZExvYWRlcnMgJiYgbmVzdGVkTG9hZGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxvYWRlZFJvd3MgPSBhd2FpdCB0aGlzLnByb2Nlc3NMb2FkZXJzKGxvYWRlZFJvd3MsIG5lc3RlZExvYWRlcnMsIGRlYnVnLCBwdXJpV3JhcHBlcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YlJvd0dyb3VwcyA9IGdyb3VwKGxvYWRlZFJvd3MsIChyb3cpID0+IHJvdy5yZWZJZCk7XG5cbiAgICAgIHJvd3MgPSByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIHJvd1thc10gPSAoc3ViUm93R3JvdXBzW3Jvd1tyZWZJZF1dID8/IFtdKS5tYXAoKHIpID0+IG9taXQociwgW1wicmVmSWRcIl0pKTtcbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXQg66CI7L2U65Oc66W8IOykkeyyqSDqsJ3ssrTroZwg67OA7ZmYXG4gICAqXG4gICAqIC0gYHVzZXJfX25hbWVgIOKGkiBgeyB1c2VyOiB7IG5hbWUgfSB9YFxuICAgKiAtIG51bGxhYmxlIHJlbGF0aW9u7J2YIOqyveyasCBpZCDtlYTrk5zqsIAgbnVsbOydtOuptCDqsJ3ssrQg7J6Q7LK066W8IG51bGzroZxcbiAgICovXG4gIGh5ZHJhdGU8VCBleHRlbmRzIFVua25vd25EQlJlY29yZD4ocm93czogVFtdKTogVFtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAoKHJvdzogVCkgPT4ge1xuICAgICAgLy8gbnVsbGFibGUgcmVsYXRpb24g7LKY66asOiDqt7jro7nsnZggaWQg7ZWE65Oc6rCAIG51bGzsnbTrqbQg6rCd7LK0IOyghOyytOulvCBudWxs66GcXG4gICAgICBjb25zdCBuZXN0ZWRLZXlzID0gT2JqZWN0LmtleXMocm93KS5maWx0ZXIoKGtleSkgPT4ga2V5LmluY2x1ZGVzKFwiX19cIikpO1xuICAgICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0Lmdyb3VwQnkobmVzdGVkS2V5cywgKGtleSkgPT4ga2V5LnNwbGl0KFwiX19cIilbMF0pO1xuXG4gICAgICAvLyBpZCDtlYTrk5zqsIAgbnVsbOyduCDqt7jro7kg7LC+6riwICjsmIg6IHBhcmVudF9faWTqsIAgbnVsbOydtOuptCBwYXJlbnQg6re466O5IOyghOyytOqwgCBudWxsKVxuICAgICAgY29uc3QgbnVsbEtleXMgPSBPYmplY3QuZW50cmllcyhncm91cHMpXG4gICAgICAgIC5maWx0ZXIoKFtncm91cEtleSwgZmllbGRzXSkgPT4ge1xuICAgICAgICAgIGlmICghZmllbGRzIHx8IGZpZWxkcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgIC8vIOq3uOujueydmCBpZCDtlYTrk5wg7LC+6riwICjsmIg6IFwicGFyZW50X19pZFwiKVxuICAgICAgICAgIGNvbnN0IGlkRmllbGQgPSBgJHtncm91cEtleX1fX2lkYDtcbiAgICAgICAgICBpZiAoaWRGaWVsZCBpbiByb3cpIHtcbiAgICAgICAgICAgIC8vIGlkIO2VhOuTnOqwgCBudWxs7J2066m0IOqwneyytCDsoITssrTqsIAgbnVsbFxuICAgICAgICAgICAgcmV0dXJuIHJvd1tpZEZpZWxkXSA9PT0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBpZCDtlYTrk5zqsIAg7JeG7Jy866m0IOq4sOyhtCDroZzsp4E6IOuqqOuToCDtlYTrk5zqsIAgbnVsbOyduOyngCDtmZXsnbhcbiAgICAgICAgICByZXR1cm4gZmllbGRzLmV2ZXJ5KFxuICAgICAgICAgICAgKGZpZWxkKSA9PlxuICAgICAgICAgICAgICByb3dbZmllbGRdID09PSBudWxsIHx8IChBcnJheS5pc0FycmF5KHJvd1tmaWVsZF0pICYmIHJvd1tmaWVsZF0ubGVuZ3RoID09PSAwKSxcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKChba2V5XSkgPT4ga2V5KTtcblxuICAgICAgY29uc3QgaHlkcmF0ZWQgPSBPYmplY3Qua2V5cyhyb3cpLnJlZHVjZSgociwgZmllbGQpID0+IHtcbiAgICAgICAgaWYgKCFmaWVsZC5pbmNsdWRlcyhcIl9fXCIpKSB7XG4gICAgICAgICAgLy8g7J2867CYIO2VhOuTnDog67Cw7Je0IOuCtCDqsJ3ssrTrqbQg7J6s6reAIGh5ZHJhdGVcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dbZmllbGRdKSAmJiBpc09iamVjdChyb3dbZmllbGRdWzBdKSkge1xuICAgICAgICAgICAgcltmaWVsZF0gPSB0aGlzLmh5ZHJhdGUocm93W2ZpZWxkXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJbZmllbGRdID0gcm93W2ZpZWxkXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDspJHssqkg7ZWE65OcIOyymOumrDogdXNlcl9fbmFtZSDihpIgdXNlcltuYW1lXVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGZpZWxkLnNwbGl0KFwiX19cIik7XG4gICAgICAgIGNvbnN0IG9ialBhdGggPVxuICAgICAgICAgIHBhcnRzWzBdICtcbiAgICAgICAgICBwYXJ0c1xuICAgICAgICAgICAgLnNsaWNlKDEpXG4gICAgICAgICAgICAubWFwKChwYXJ0KSA9PiBgWyR7cGFydH1dYClcbiAgICAgICAgICAgIC5qb2luKFwiXCIpO1xuXG4gICAgICAgIHIgPSBzZXQoXG4gICAgICAgICAgcixcbiAgICAgICAgICBvYmpQYXRoLFxuICAgICAgICAgIHJvd1tmaWVsZF0gJiYgQXJyYXkuaXNBcnJheShyb3dbZmllbGRdKSAmJiBpc09iamVjdChyb3dbZmllbGRdWzBdKVxuICAgICAgICAgICAgPyB0aGlzLmh5ZHJhdGUocm93W2ZpZWxkXSlcbiAgICAgICAgICAgIDogcm93W2ZpZWxkXSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sIHt9IGFzIFVua25vd25EQlJlY29yZCk7XG5cbiAgICAgIC8vIG51bGwgcmVsYXRpb24g7LKY66asXG4gICAgICBudWxsS2V5cy5mb3JFYWNoKChudWxsS2V5KSA9PiB7XG4gICAgICAgIGh5ZHJhdGVkW251bGxLZXldID0gbnVsbDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaHlkcmF0ZWQ7XG4gICAgfSkgYXMgVFtdO1xuICB9XG59XG5cbi8qKlxuICogRW5oYW5jZXIg7YyM652866+47YSwIOyhsOqxtOu2gCDtg4DsnoVcbiAqIFJlcXVpcmVkRW5oYW5jZXJLZXlz6rCAIOyXhuycvOuptCBlbmhhbmNlcnMg7ISg7YOd7KCBLCDsnojsnLzrqbQg7ZWE7IiYXG4gKi9cbnR5cGUgRW5oYW5jZXJQYXJhbTxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgVENvbXB1dGVkUmVzdWx0cyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuICBUU3Vic2V0TWFwcGluZyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuICBUU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBQdXJpU3Vic2V0Rm4+LFxuPiA9IFtSZXF1aXJlZEVuaGFuY2VyS2V5czxUU3Vic2V0S2V5LCBUQ29tcHV0ZWRSZXN1bHRzLCBUU3Vic2V0TWFwcGluZz5dIGV4dGVuZHMgW25ldmVyXVxuICA/IHsgZW5oYW5jZXJzPzogRW5oYW5jZXJNYXA8VFN1YnNldEtleSwgVENvbXB1dGVkUmVzdWx0cywgVFN1YnNldE1hcHBpbmcsIFRTdWJzZXRRdWVyaWVzPiB9XG4gIDogeyBlbmhhbmNlcnM6IEVuaGFuY2VyTWFwPFRTdWJzZXRLZXksIFRDb21wdXRlZFJlc3VsdHMsIFRTdWJzZXRNYXBwaW5nLCBUU3Vic2V0UXVlcmllcz4gfTtcblxudHlwZSBSZXF1aXJlZEVuaGFuY2VyS2V5czxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgVENvbXB1dGVkUmVzdWx0cyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuICBUU3Vic2V0TWFwcGluZyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBhbnk+LFxuPiA9IHtcbiAgW0sgaW4gVFN1YnNldEtleV06IFRDb21wdXRlZFJlc3VsdHNbS10gZXh0ZW5kcyBUU3Vic2V0TWFwcGluZ1tLXSA/IG5ldmVyIDogSztcbn1bVFN1YnNldEtleV07XG5cbmV4cG9ydCBjb25zdCBCYXNlTW9kZWwgPSBuZXcgQmFzZU1vZGVsQ2xhc3MoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OzthQU1zQztxQkFDa0I7WUFFcUI7ZUFDakI7aUJBR2U7U0FHbEQ7V0FDSTttQkFNZTtxQkFFSTtDQVluQyxpQkFBYixNQUtF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
|
package/dist/database/db.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { AsyncLocalStorage } from "async_hooks";
|
|
|
2
2
|
import { type Knex } from "knex";
|
|
3
3
|
import { type SonamuConfig } from "../api/config";
|
|
4
4
|
import { type EnvironmentSnapshots, type SonamuEnvironment } from "../env";
|
|
5
|
+
import { type PuriTransactionWrapper } from "./puri-wrapper";
|
|
5
6
|
import { TransactionContext } from "./transaction-context";
|
|
6
7
|
export type SonamuMainDBPreset = "test" | "fixture" | SonamuEnvironment;
|
|
7
8
|
export type SonamuReadonlyDBPreset = "test_readonly" | "development_readonly" | "staging_readonly" | "production_readonly";
|
|
@@ -15,7 +16,7 @@ export declare class DBClass {
|
|
|
15
16
|
private workerDBs;
|
|
16
17
|
private currentConfig;
|
|
17
18
|
transactionStorage: AsyncLocalStorage<TransactionContext>;
|
|
18
|
-
|
|
19
|
+
runWithTransactionScope<T>(preset: DBPreset, transaction: PuriTransactionWrapper, callback: () => Promise<T>): Promise<T>;
|
|
19
20
|
setConfig(dbConfig: SonamuDBConfig): void;
|
|
20
21
|
private getCurrentConfig;
|
|
21
22
|
getTransactionContext(): TransactionContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAwB,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAmC3D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC;AACxE,MAAM,MAAM,sBAAsB,GAC9B,eAAe,GACf,sBAAsB,GACtB,kBAAkB,GAClB,qBAAqB,CAAC;AAC1B,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AACzE,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,cAAc,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAgGjE,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,aAAa,CAA+B;IAE7C,kBAAkB,wCAA+C;IAEjE,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAwB,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEjG,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAmC3D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC;AACxE,MAAM,MAAM,sBAAsB,GAC9B,eAAe,GACf,sBAAsB,GACtB,kBAAkB,GAClB,qBAAqB,CAAC;AAC1B,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AACzE,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,cAAc,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAgGjE,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,aAAa,CAA+B;IAE7C,kBAAkB,wCAA+C;IAEjE,uBAAuB,CAAC,CAAC,EAC9B,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,sBAAsB,EACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC;IAcb,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIzC,OAAO,CAAC,gBAAgB;IAQjB,qBAAqB,IAAI,kBAAkB;IAIlD,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IA4C5B,OAAO,CAAC,WAAW;IA6BnB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM;IAsBnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBvB,gBAAgB,CACrB,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAChC,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,oBAAoB,GAC/B,cAAc;IA2EV,eAAe,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAQ;IACjD,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAKlD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAIzC;AACD,eAAO,MAAM,EAAE,SAAgB,CAAC"}
|
package/dist/database/db.js
CHANGED
|
@@ -79,8 +79,18 @@ var init_db = __esmMin((() => {
|
|
|
79
79
|
workerDBs = /* @__PURE__ */ new Map();
|
|
80
80
|
currentConfig = null;
|
|
81
81
|
transactionStorage = new AsyncLocalStorage();
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
runWithTransactionScope(preset, transaction, callback) {
|
|
83
|
+
const transactionContext = new TransactionContext(this.transactionStorage.getStore(), {
|
|
84
|
+
preset,
|
|
85
|
+
transaction
|
|
86
|
+
});
|
|
87
|
+
return this.transactionStorage.run(transactionContext, async () => {
|
|
88
|
+
try {
|
|
89
|
+
return await callback();
|
|
90
|
+
} finally {
|
|
91
|
+
transactionContext.clearLocal();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
84
94
|
}
|
|
85
95
|
setConfig(dbConfig) {
|
|
86
96
|
this.currentConfig = dbConfig;
|
|
@@ -242,4 +252,4 @@ var init_db = __esmMin((() => {
|
|
|
242
252
|
init_db();
|
|
243
253
|
export { DB, DBClass, init_db };
|
|
244
254
|
|
|
245
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFiYXNlL2RiLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiYXN5bmNfaG9va3NcIjtcblxuaW1wb3J0IHsgdHlwZSBLbmV4IH0gZnJvbSBcImtuZXhcIjtcblxuaW1wb3J0IHsgdHlwZSBEYXRhYmFzZUNvbmZpZywgdHlwZSBTb25hbXVDb25maWcgfSBmcm9tIFwiLi4vYXBpL2NvbmZpZ1wiO1xuaW1wb3J0IHsgZ2V0U29uYW11RW52aXJvbm1lbnQsIHR5cGUgRW52aXJvbm1lbnRTbmFwc2hvdHMsIHR5cGUgU29uYW11RW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vZW52XCI7XG5pbXBvcnQgeyBjcmVhdGVLbmV4SW5zdGFuY2UgfSBmcm9tIFwiLi9rbmV4XCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbnRleHQgfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1jb250ZXh0XCI7XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBtZXJnZVJlY29yZChcbiAgdGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgc291cmNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlKSkge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRhcmdldFtrZXldO1xuXG4gICAgaWYgKGlzUGxhaW5PYmplY3QoY3VycmVudFZhbHVlKSAmJiBpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgdGFyZ2V0W2tleV0gPSBtZXJnZVJlY29yZCh7IC4uLmN1cnJlbnRWYWx1ZSB9LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWdzPFQgZXh0ZW5kcyBvYmplY3Q+KC4uLmNvbmZpZ3M6IChQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkIHwgbnVsbClbXSk6IFQge1xuICBjb25zdCBtZXJnZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgZm9yIChjb25zdCBjb25maWcgb2YgY29uZmlncykge1xuICAgIGlmIChjb25maWcgIT09IHVuZGVmaW5lZCAmJiBjb25maWcgIT09IG51bGwpIHtcbiAgICAgIG1lcmdlUmVjb3JkKG1lcmdlZCwgY29uZmlnIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkIGFzIFQ7XG59XG5cbmV4cG9ydCB0eXBlIFNvbmFtdU1haW5EQlByZXNldCA9IFwidGVzdFwiIHwgXCJmaXh0dXJlXCIgfCBTb25hbXVFbnZpcm9ubWVudDtcbmV4cG9ydCB0eXBlIFNvbmFtdVJlYWRvbmx5REJQcmVzZXQgPVxuICB8IFwidGVzdF9yZWFkb25seVwiXG4gIHwgXCJkZXZlbG9wbWVudF9yZWFkb25seVwiXG4gIHwgXCJzdGFnaW5nX3JlYWRvbmx5XCJcbiAgfCBcInByb2R1Y3Rpb25fcmVhZG9ubHlcIjtcbmV4cG9ydCB0eXBlIFNvbmFtdURCUHJlc2V0ID0gU29uYW11TWFpbkRCUHJlc2V0IHwgU29uYW11UmVhZG9ubHlEQlByZXNldDtcbmV4cG9ydCB0eXBlIERCUHJlc2V0ID0gXCJ3XCIgfCBcInJcIiB8IFNvbmFtdURCUHJlc2V0O1xuXG5leHBvcnQgdHlwZSBTb25hbXVEQkNvbmZpZyA9IFJlY29yZDxTb25hbXVEQlByZXNldCwgS25leC5Db25maWc+O1xuXG5mdW5jdGlvbiBpc0NvbmNyZXRlUHJlc2V0KHZhbHVlOiBEQlByZXNldCk6IHZhbHVlIGlzIFNvbmFtdURCUHJlc2V0IHtcbiAgcmV0dXJuIHZhbHVlICE9PSBcIndcIiAmJiB2YWx1ZSAhPT0gXCJyXCI7XG59XG5cbmZ1bmN0aW9uIGdldFJlYWRvbmx5UHJlc2V0KGVudmlyb25tZW50OiBTb25hbXVFbnZpcm9ubWVudCk6IFNvbmFtdVJlYWRvbmx5REJQcmVzZXQge1xuICByZXR1cm4gYCR7ZW52aXJvbm1lbnR9X3JlYWRvbmx5YCBhcyBTb25hbXVSZWFkb25seURCUHJlc2V0O1xufVxuXG5mdW5jdGlvbiBnZXRQcm9qZWN0RGF0YWJhc2VCYXNlTmFtZShwcm9qZWN0TmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAocHJvamVjdE5hbWUgPz8gXCJzb25hbXVcIilcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csIFwiX1wiKVxuICAgIC5yZXBsYWNlKC9eXyt8XyskL2csIFwiXCIpO1xufVxuXG5mdW5jdGlvbiBudW1iZXJGcm9tRW52KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIikge1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IE51bWJlcih2YWx1ZSk7XG4gIGlmIChOdW1iZXIuaXNOYU4ocGFyc2VkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkYXRhYmFzZSBwb3J0OiAke3ZhbHVlfWApO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZnVuY3Rpb24gY29ubmVjdGlvbkZyb21FbnYob3B0aW9uczoge1xuICBiYXNlTmFtZTogc3RyaW5nO1xuICBzdWZmaXg6IFNvbmFtdU1haW5EQlByZXNldDtcbiAgYmFzZUNvbm5lY3Rpb24/OiBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZztcbiAgcHJlZml4PzogXCJTT05BTVVfREJfUkVBRE9OTFlcIiB8IFwiU09OQU1VX0RCX0ZJWFRVUkVcIjtcbiAgZW52PzogTm9kZUpTLlByb2Nlc3NFbnY7XG59KTogS25leC5QZ0Nvbm5lY3Rpb25Db25maWcge1xuICBjb25zdCB7XG4gICAgYmFzZU5hbWUsXG4gICAgc3VmZml4LFxuICAgIGJhc2VDb25uZWN0aW9uID0ge30sXG4gICAgcHJlZml4ID0gXCJTT05BTVVfREJcIixcbiAgICBlbnYgPSBwcm9jZXNzLmVudixcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlYWQgPSAoa2V5OiBcIkhPU1RcIiB8IFwiUE9SVFwiIHwgXCJVU0VSXCIgfCBcIlBBU1NXT1JEXCIgfCBcIk5BTUVcIikgPT4ge1xuICAgIGNvbnN0IHByZWZpeGVkVmFsdWUgPSBlbnZbYCR7cHJlZml4fV8ke2tleX1gXTtcbiAgICBpZiAocHJlZml4ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcHJlZml4ZWRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKHByZWZpeCA9PT0gXCJTT05BTVVfREJfRklYVFVSRVwiICYmIGtleSA9PT0gXCJOQU1FXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudltgU09OQU1VX0RCXyR7a2V5fWBdO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgLi4uYmFzZUNvbm5lY3Rpb24sXG4gICAgaG9zdDogcmVhZChcIkhPU1RcIikgPz8gYmFzZUNvbm5lY3Rpb24uaG9zdCA/PyBcIjAuMC4wLjBcIixcbiAgICBwb3J0OiBudW1iZXJGcm9tRW52KHJlYWQoXCJQT1JUXCIpLCBiYXNlQ29ubmVjdGlvbi5wb3J0ID8/IDU0MzIpLFxuICAgIHVzZXI6IHJlYWQoXCJVU0VSXCIpID8/IGJhc2VDb25uZWN0aW9uLnVzZXIgPz8gXCJwb3N0Z3Jlc1wiLFxuICAgIHBhc3N3b3JkOiByZWFkKFwiUEFTU1dPUkRcIikgPz8gYmFzZUNvbm5lY3Rpb24ucGFzc3dvcmQsXG4gICAgZGF0YWJhc2U6IHJlYWQoXCJOQU1FXCIpID8/IGAke2Jhc2VOYW1lfV8ke3N1ZmZpeH1gLFxuICB9O1xufVxuXG5mdW5jdGlvbiBuZXV0cmFsaXplRW52aXJvbm1lbnRDb25uZWN0aW9uRmllbGRzKFxuICBjb25uZWN0aW9uOiBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCxcbik6IEtuZXguUGdDb25uZWN0aW9uQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNvbm5lY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBuZXV0cmFsQ29ubmVjdGlvbiA9IHsgLi4uY29ubmVjdGlvbiB9O1xuICBkZWxldGUgbmV1dHJhbENvbm5lY3Rpb24uaG9zdDtcbiAgZGVsZXRlIG5ldXRyYWxDb25uZWN0aW9uLnBvcnQ7XG4gIGRlbGV0ZSBuZXV0cmFsQ29ubmVjdGlvbi51c2VyO1xuICBkZWxldGUgbmV1dHJhbENvbm5lY3Rpb24ucGFzc3dvcmQ7XG4gIGRlbGV0ZSBuZXV0cmFsQ29ubmVjdGlvbi5kYXRhYmFzZTtcblxuICByZXR1cm4gbmV1dHJhbENvbm5lY3Rpb247XG59XG5cbmZ1bmN0aW9uIGFzc2VydE5vTGVnYWN5RGF0YWJhc2VDb25maWcoY29uZmlnOiBTb25hbXVDb25maWdbXCJkYXRhYmFzZVwiXSk6IHZvaWQge1xuICBjb25zdCBsZWdhY3lDb25maWcgPSBjb25maWcgYXMgU29uYW11Q29uZmlnW1wiZGF0YWJhc2VcIl0gJiB7XG4gICAgbmFtZT86IHVua25vd247XG4gICAgZW52aXJvbm1lbnRzPzogdW5rbm93bjtcbiAgfTtcblxuICBpZiAobGVnYWN5Q29uZmlnLm5hbWUgIT09IHVuZGVmaW5lZCB8fCBsZWdhY3lDb25maWcuZW52aXJvbm1lbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlNvbmFtdSBkYXRhYmFzZS5uYW1lIGFuZCBkYXRhYmFzZS5lbnZpcm9ubWVudHMgd2VyZSByZW1vdmVkLiBVc2UgU09OQU1VX0RCXyogZG90ZW52IHZhcmlhYmxlcyBpbnN0ZWFkLlwiLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERCQ2xhc3Mge1xuICBwcml2YXRlIHdkYj86IEtuZXg7XG4gIHByaXZhdGUgcmRiPzogS25leDtcbiAgcHJpdmF0ZSBwcmVzZXREQnM6IE1hcDxTb25hbXVEQlByZXNldCwgS25leD4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgd29ya2VyREJzOiBNYXA8bnVtYmVyLCBLbmV4PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBjdXJyZW50Q29uZmlnOiBTb25hbXVEQkNvbmZpZyB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyB0cmFuc2FjdGlvblN0b3JhZ2UgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8VHJhbnNhY3Rpb25Db250ZXh0PigpO1xuXG4gIHB1YmxpYyBydW5XaXRoVHJhbnNhY3Rpb248VD4oY2FsbGJhY2s6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblN0b3JhZ2UucnVuKG5ldyBUcmFuc2FjdGlvbkNvbnRleHQoKSwgY2FsbGJhY2spO1xuICB9XG5cbiAgc2V0Q29uZmlnKGRiQ29uZmlnOiBTb25hbXVEQkNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENvbmZpZyA9IGRiQ29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50Q29uZmlnKCk6IFNvbmFtdURCQ29uZmlnIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Q29uZmlnID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb25hbXUgREIgY29uZmlnIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50Q29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQ29udGV4dCgpOiBUcmFuc2FjdGlvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpID8/IG5ldyBUcmFuc2FjdGlvbkNvbnRleHQoKTtcbiAgfVxuXG4gIGdldERCKHdoaWNoOiBEQlByZXNldCk6IEtuZXgge1xuICAgIGNvbnN0IGRiQ29uZmlnID0gdGhpcy5nZXRDdXJyZW50Q29uZmlnKCk7XG5cbiAgICBpZiAoaXNDb25jcmV0ZVByZXNldCh3aGljaCkpIHtcbiAgICAgIGlmICghdGhpcy5wcmVzZXREQnMuaGFzKHdoaWNoKSkge1xuICAgICAgICB0aGlzLnByZXNldERCcy5zZXQod2hpY2gsIGNyZWF0ZUtuZXhJbnN0YW5jZShkYkNvbmZpZ1t3aGljaF0pKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGIgPSB0aGlzLnByZXNldERCcy5nZXQod2hpY2gpO1xuICAgICAgYXNzZXJ0KGRiLCBgREIgcHJlc2V0ICR7d2hpY2h9IG5vdCBmb3VuZGApO1xuICAgICAgcmV0dXJuIGRiO1xuICAgIH1cblxuICAgIGlmIChnZXRTb25hbXVFbnZpcm9ubWVudCgpID09PSBcInRlc3RcIikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52LlNPTkFNVV9XT1JLRVJfREIgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFdvcmtlckRCKGRiQ29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudGVzdFRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlc3RUcmFuc2FjdGlvbjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy53ZGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2RiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53ZGIgPSBjcmVhdGVLbmV4SW5zdGFuY2Uoe1xuICAgICAgICAgIC4uLmRiQ29uZmlnLnRlc3QsXG4gICAgICAgICAgcG9vbDoge1xuICAgICAgICAgICAgbWluOiAxLFxuICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy53ZGI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VOYW1lID0gd2hpY2ggPT09IFwid1wiID8gXCJ3ZGJcIiA6IFwicmRiXCI7XG5cbiAgICBpZiAoIXRoaXNbaW5zdGFuY2VOYW1lXSkge1xuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5nZXREQkNvbmZpZyh3aGljaCk7XG4gICAgICB0aGlzW2luc3RhbmNlTmFtZV0gPSBjcmVhdGVLbmV4SW5zdGFuY2UoY29uZmlnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1tpbnN0YW5jZU5hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXb3JrZXJEQihkYkNvbmZpZzogU29uYW11REJDb25maWcpOiBLbmV4IHtcbiAgICBpZiAodGhpcy50ZXN0VHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnRlc3RUcmFuc2FjdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JrZXJJZCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlZJVEVTVF9QT09MX0lEID8/IFwiMVwiLCAxMCk7XG5cbiAgICBpZiAoIXRoaXMud29ya2VyREJzLmhhcyh3b3JrZXJJZCkpIHtcbiAgICAgIGNvbnN0IGJhc2VUZXN0Q29uZmlnID0gZGJDb25maWcudGVzdDtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBiYXNlVGVzdENvbmZpZy5jb25uZWN0aW9uIGFzIHsgZGF0YWJhc2U6IHN0cmluZyB9O1xuICAgICAgY29uc3Qgd29ya2VyRGJOYW1lID0gYCR7Y29ubmVjdGlvbi5kYXRhYmFzZX1fJHt3b3JrZXJJZH1gO1xuXG4gICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7XG4gICAgICAgIC4uLmJhc2VUZXN0Q29uZmlnLFxuICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgLi4uY29ubmVjdGlvbixcbiAgICAgICAgICBkYXRhYmFzZTogd29ya2VyRGJOYW1lLFxuICAgICAgICB9LFxuICAgICAgICBwb29sOiB7IG1pbjogMSwgbWF4OiAxIH0sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLndvcmtlckRCcy5zZXQod29ya2VySWQsIGNyZWF0ZUtuZXhJbnN0YW5jZSh3b3JrZXJDb25maWcpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYiA9IHRoaXMud29ya2VyREJzLmdldCh3b3JrZXJJZCk7XG4gICAgYXNzZXJ0KGRiLCBgV29ya2VyIERCICR7d29ya2VySWR9IG5vdCBmb3VuZGApO1xuICAgIHJldHVybiBkYjtcbiAgfVxuXG4gIGdldERCQ29uZmlnKHdoaWNoOiBEQlByZXNldCk6IEtuZXguQ29uZmlnIHtcbiAgICBjb25zdCBkYkNvbmZpZyA9IHRoaXMuZ2V0Q3VycmVudENvbmZpZygpO1xuXG4gICAgaWYgKGlzQ29uY3JldGVQcmVzZXQod2hpY2gpKSB7XG4gICAgICByZXR1cm4gZGJDb25maWdbd2hpY2hdO1xuICAgIH1cblxuICAgIGNvbnN0IGVudmlyb25tZW50ID0gZ2V0U29uYW11RW52aXJvbm1lbnQoKTtcbiAgICBpZiAoZW52aXJvbm1lbnQgPT09IFwidGVzdFwiKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB3aGljaCA9PT0gXCJ3XCIgPyBkYkNvbmZpZy50ZXN0IDogZGJDb25maWcudGVzdF9yZWFkb25seTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRhcmdldCxcbiAgICAgICAgcG9vbDoge1xuICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICBtYXg6IDEsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB3aGljaCA9PT0gXCJ3XCIgPyBkYkNvbmZpZ1tlbnZpcm9ubWVudF0gOiBkYkNvbmZpZ1tnZXRSZWFkb25seVByZXNldChlbnZpcm9ubWVudCldO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53ZGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy53ZGIuZGVzdHJveSgpO1xuICAgICAgdGhpcy53ZGIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnJkYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJkYi5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJkYiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBkYiBvZiB0aGlzLnByZXNldERCcy52YWx1ZXMoKSkge1xuICAgICAgYXdhaXQgZGIuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLnByZXNldERCcy5jbGVhcigpO1xuICAgIGZvciAoY29uc3QgZGIgb2YgdGhpcy53b3JrZXJEQnMudmFsdWVzKCkpIHtcbiAgICAgIGF3YWl0IGRiLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy53b3JrZXJEQnMuY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZURCQ29uZmlnKFxuICAgIGNvbmZpZzogU29uYW11Q29uZmlnW1wiZGF0YWJhc2VcIl0sXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmcsXG4gICAgc25hcHNob3RzPzogRW52aXJvbm1lbnRTbmFwc2hvdHMsXG4gICk6IFNvbmFtdURCQ29uZmlnIHtcbiAgICBhc3NlcnROb0xlZ2FjeURhdGFiYXNlQ29uZmlnKGNvbmZpZyk7XG5cbiAgICBjb25zdCBiYXNlTmFtZSA9IGdldFByb2plY3REYXRhYmFzZUJhc2VOYW1lKHByb2plY3ROYW1lKTtcbiAgICBjb25zdCBkZWZhdWx0S25leENvbmZpZyA9IG1lcmdlQ29uZmlnczxQYXJ0aWFsPERhdGFiYXNlQ29uZmlnPj4oXG4gICAgICB7XG4gICAgICAgIGNsaWVudDogY29uZmlnLmRhdGFiYXNlID09PSBcInBnbmF0aXZlXCIgPyBcInBnbmF0aXZlXCIgOiBcInBvc3RncmVzcWxcIixcbiAgICAgICAgcG9vbDoge1xuICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICBtYXg6IDUsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICBkaXJlY3Rvcnk6IFwiLi9zcmMvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbmZpZy5kZWZhdWx0T3B0aW9ucyxcbiAgICApO1xuICAgIGNvbnN0IGJhc2VDb25uZWN0aW9uID0gZGVmYXVsdEtuZXhDb25maWcuY29ubmVjdGlvbiBhcyBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBlbnZpcm9ubWVudEZhbGxiYWNrQ29ubmVjdGlvbiA9IHNuYXBzaG90c1xuICAgICAgPyBuZXV0cmFsaXplRW52aXJvbm1lbnRDb25uZWN0aW9uRmllbGRzKGJhc2VDb25uZWN0aW9uKVxuICAgICAgOiBiYXNlQ29ubmVjdGlvbjtcblxuICAgIGNvbnN0IGVudkZvclByZXNldCA9IChwcmVzZXQ6IFNvbmFtdU1haW5EQlByZXNldCk6IE5vZGVKUy5Qcm9jZXNzRW52ID0+IHtcbiAgICAgIGlmICghc25hcHNob3RzKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudjtcbiAgICAgIH1cbiAgICAgIGlmIChwcmVzZXQgPT09IFwiZml4dHVyZVwiKSB7XG4gICAgICAgIHJldHVybiBzbmFwc2hvdHMudGVzdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzbmFwc2hvdHNbcHJlc2V0XTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFpbkNvbmZpZyA9IChwcmVzZXQ6IFNvbmFtdU1haW5EQlByZXNldCk6IEtuZXguQ29uZmlnID0+XG4gICAgICBtZXJnZUNvbmZpZ3MoZGVmYXVsdEtuZXhDb25maWcsIHtcbiAgICAgICAgY29ubmVjdGlvbjogY29ubmVjdGlvbkZyb21FbnYoe1xuICAgICAgICAgIGJhc2VOYW1lLFxuICAgICAgICAgIHN1ZmZpeDogcHJlc2V0LFxuICAgICAgICAgIGJhc2VDb25uZWN0aW9uOiBlbnZpcm9ubWVudEZhbGxiYWNrQ29ubmVjdGlvbixcbiAgICAgICAgICBlbnY6IGVudkZvclByZXNldChwcmVzZXQpLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IHJlYWRvbmx5Q29uZmlnID0gKGVudmlyb25tZW50OiBTb25hbXVFbnZpcm9ubWVudCk6IEtuZXguQ29uZmlnID0+XG4gICAgICBtZXJnZUNvbmZpZ3M8S25leC5Db25maWc+KGRlZmF1bHRLbmV4Q29uZmlnLCBtYWluQ29uZmlnKGVudmlyb25tZW50KSwge1xuICAgICAgICBjb25uZWN0aW9uOiBjb25uZWN0aW9uRnJvbUVudih7XG4gICAgICAgICAgYmFzZU5hbWUsXG4gICAgICAgICAgc3VmZml4OiBlbnZpcm9ubWVudCxcbiAgICAgICAgICBiYXNlQ29ubmVjdGlvbjogbWFpbkNvbmZpZyhlbnZpcm9ubWVudCkuY29ubmVjdGlvbiBhcyBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBwcmVmaXg6IFwiU09OQU1VX0RCX1JFQURPTkxZXCIsXG4gICAgICAgICAgZW52OiBlbnZGb3JQcmVzZXQoZW52aXJvbm1lbnQpLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdGVzdCA9IG1haW5Db25maWcoXCJ0ZXN0XCIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlc3QsXG4gICAgICB0ZXN0X3JlYWRvbmx5OiByZWFkb25seUNvbmZpZyhcInRlc3RcIiksXG4gICAgICBmaXh0dXJlOiBtZXJnZUNvbmZpZ3MoZGVmYXVsdEtuZXhDb25maWcsIHtcbiAgICAgICAgY29ubmVjdGlvbjogY29ubmVjdGlvbkZyb21FbnYoe1xuICAgICAgICAgIGJhc2VOYW1lLFxuICAgICAgICAgIHN1ZmZpeDogXCJmaXh0dXJlXCIsXG4gICAgICAgICAgYmFzZUNvbm5lY3Rpb246IGVudmlyb25tZW50RmFsbGJhY2tDb25uZWN0aW9uLFxuICAgICAgICAgIHByZWZpeDogXCJTT05BTVVfREJfRklYVFVSRVwiLFxuICAgICAgICAgIGVudjogZW52Rm9yUHJlc2V0KFwiZml4dHVyZVwiKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICAgIGRldmVsb3BtZW50OiBtYWluQ29uZmlnKFwiZGV2ZWxvcG1lbnRcIiksXG4gICAgICBkZXZlbG9wbWVudF9yZWFkb25seTogcmVhZG9ubHlDb25maWcoXCJkZXZlbG9wbWVudFwiKSxcbiAgICAgIHN0YWdpbmc6IG1haW5Db25maWcoXCJzdGFnaW5nXCIpLFxuICAgICAgc3RhZ2luZ19yZWFkb25seTogcmVhZG9ubHlDb25maWcoXCJzdGFnaW5nXCIpLFxuICAgICAgcHJvZHVjdGlvbjogbWFpbkNvbmZpZyhcInByb2R1Y3Rpb25cIiksXG4gICAgICBwcm9kdWN0aW9uX3JlYWRvbmx5OiByZWFkb25seUNvbmZpZyhcInByb2R1Y3Rpb25cIiksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0ZXN0VHJhbnNhY3Rpb246IEtuZXguVHJhbnNhY3Rpb24gfCBudWxsID0gbnVsbDtcbiAgYXN5bmMgY3JlYXRlVGVzdFRyYW5zYWN0aW9uKCk6IFByb21pc2U8S25leC5UcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGRiID0gdGhpcy5nZXREQihcIndcIik7XG4gICAgdGhpcy50ZXN0VHJhbnNhY3Rpb24gPSBhd2FpdCBkYi50cmFuc2FjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLnRlc3RUcmFuc2FjdGlvbjtcbiAgfVxuICBhc3luYyBjbGVhclRlc3RUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnRlc3RUcmFuc2FjdGlvbj8ucm9sbGJhY2soKTtcbiAgICB0aGlzLnRlc3RUcmFuc2FjdGlvbiA9IG51bGw7XG4gIH1cbiAgYXN5bmMgZ2V0VGVzdENvbm5lY3Rpb24oKTogUHJvbWlzZTxLbmV4PiB7XG4gICAgY29uc3QgZGIgPSB0aGlzLmdldERCKFwid1wiKTtcbiAgICByZXR1cm4gZGI7XG4gIH1cbn1cbmV4cG9ydCBjb25zdCBEQiA9IG5ldyBEQkNsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQSxTQUFTLGNBQWMsT0FBa0Q7Q0FDdkUsT0FBTyxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsQ0FBQyxNQUFNLFFBQVEsS0FBSztBQUM1RTtBQUVBLFNBQVMsWUFDUCxRQUNBLFFBQ3lCO0NBQ3pCLEtBQUssTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsTUFBTSxHQUFHO0VBQ2pELE1BQU0sZUFBZSxPQUFPO0VBRTVCLElBQUksY0FBYyxZQUFZLEtBQUssY0FBYyxLQUFLLEdBQ3BELE9BQU8sT0FBTyxZQUFZLEVBQUUsR0FBRyxhQUFhLEdBQUcsS0FBSztPQUVwRCxPQUFPLE9BQU87Q0FFbEI7Q0FFQSxPQUFPO0FBQ1Q7QUFFQSxTQUFTLGFBQStCLEdBQUcsU0FBK0M7Q0FDeEYsTUFBTSxTQUFrQyxDQUFDO0NBRXpDLEtBQUssTUFBTSxVQUFVLFNBQ25CLElBQUksV0FBVyxVQUFhLFdBQVcsTUFDckMsWUFBWSxRQUFRLE1BQWlDO0NBSXpELE9BQU87QUFDVDtBQWFBLFNBQVMsaUJBQWlCLE9BQTBDO0NBQ2xFLE9BQU8sVUFBVSxPQUFPLFVBQVU7QUFDcEM7QUFFQSxTQUFTLGtCQUFrQixhQUF3RDtDQUNqRixPQUFPLEdBQUcsWUFBWTtBQUN4QjtBQUVBLFNBQVMsMkJBQTJCLGFBQThCO0NBQ2hFLFFBQVEsZUFBZSxTQUFBLENBQ3BCLFlBQVksQ0FBQyxDQUNiLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FDM0IsUUFBUSxZQUFZLEVBQUU7QUFDM0I7QUFFQSxTQUFTLGNBQWMsT0FBMkIsVUFBMEI7Q0FDMUUsSUFBSSxVQUFVLFVBQWEsVUFBVSxJQUNuQyxPQUFPO0NBR1QsTUFBTSxTQUFTLE9BQU8sS0FBSztDQUMzQixJQUFJLE9BQU8sTUFBTSxNQUFNLEdBQ3JCLE1BQU0sSUFBSSxNQUFNLDBCQUEwQixPQUFPO0NBR25ELE9BQU87QUFD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
|
|
255
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFiYXNlL2RiLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiYXN5bmNfaG9va3NcIjtcblxuaW1wb3J0IHsgdHlwZSBLbmV4IH0gZnJvbSBcImtuZXhcIjtcblxuaW1wb3J0IHsgdHlwZSBEYXRhYmFzZUNvbmZpZywgdHlwZSBTb25hbXVDb25maWcgfSBmcm9tIFwiLi4vYXBpL2NvbmZpZ1wiO1xuaW1wb3J0IHsgZ2V0U29uYW11RW52aXJvbm1lbnQsIHR5cGUgRW52aXJvbm1lbnRTbmFwc2hvdHMsIHR5cGUgU29uYW11RW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vZW52XCI7XG5pbXBvcnQgeyBjcmVhdGVLbmV4SW5zdGFuY2UgfSBmcm9tIFwiLi9rbmV4XCI7XG5pbXBvcnQgeyB0eXBlIFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfSBmcm9tIFwiLi9wdXJpLXdyYXBwZXJcIjtcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ29udGV4dCB9IGZyb20gXCIuL3RyYW5zYWN0aW9uLWNvbnRleHRcIjtcblxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG1lcmdlUmVjb3JkKFxuICB0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UpKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGFyZ2V0W2tleV07XG5cbiAgICBpZiAoaXNQbGFpbk9iamVjdChjdXJyZW50VmFsdWUpICYmIGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICB0YXJnZXRba2V5XSA9IG1lcmdlUmVjb3JkKHsgLi4uY3VycmVudFZhbHVlIH0sIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3M8VCBleHRlbmRzIG9iamVjdD4oLi4uY29uZmlnczogKFBhcnRpYWw8VD4gfCB1bmRlZmluZWQgfCBudWxsKVtdKTogVCB7XG4gIGNvbnN0IG1lcmdlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgaWYgKGNvbmZpZyAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgbWVyZ2VSZWNvcmQobWVyZ2VkLCBjb25maWcgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQgYXMgVDtcbn1cblxuZXhwb3J0IHR5cGUgU29uYW11TWFpbkRCUHJlc2V0ID0gXCJ0ZXN0XCIgfCBcImZpeHR1cmVcIiB8IFNvbmFtdUVudmlyb25tZW50O1xuZXhwb3J0IHR5cGUgU29uYW11UmVhZG9ubHlEQlByZXNldCA9XG4gIHwgXCJ0ZXN0X3JlYWRvbmx5XCJcbiAgfCBcImRldmVsb3BtZW50X3JlYWRvbmx5XCJcbiAgfCBcInN0YWdpbmdfcmVhZG9ubHlcIlxuICB8IFwicHJvZHVjdGlvbl9yZWFkb25seVwiO1xuZXhwb3J0IHR5cGUgU29uYW11REJQcmVzZXQgPSBTb25hbXVNYWluREJQcmVzZXQgfCBTb25hbXVSZWFkb25seURCUHJlc2V0O1xuZXhwb3J0IHR5cGUgREJQcmVzZXQgPSBcIndcIiB8IFwiclwiIHwgU29uYW11REJQcmVzZXQ7XG5cbmV4cG9ydCB0eXBlIFNvbmFtdURCQ29uZmlnID0gUmVjb3JkPFNvbmFtdURCUHJlc2V0LCBLbmV4LkNvbmZpZz47XG5cbmZ1bmN0aW9uIGlzQ29uY3JldGVQcmVzZXQodmFsdWU6IERCUHJlc2V0KTogdmFsdWUgaXMgU29uYW11REJQcmVzZXQge1xuICByZXR1cm4gdmFsdWUgIT09IFwid1wiICYmIHZhbHVlICE9PSBcInJcIjtcbn1cblxuZnVuY3Rpb24gZ2V0UmVhZG9ubHlQcmVzZXQoZW52aXJvbm1lbnQ6IFNvbmFtdUVudmlyb25tZW50KTogU29uYW11UmVhZG9ubHlEQlByZXNldCB7XG4gIHJldHVybiBgJHtlbnZpcm9ubWVudH1fcmVhZG9ubHlgIGFzIFNvbmFtdVJlYWRvbmx5REJQcmVzZXQ7XG59XG5cbmZ1bmN0aW9uIGdldFByb2plY3REYXRhYmFzZUJhc2VOYW1lKHByb2plY3ROYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIChwcm9qZWN0TmFtZSA/PyBcInNvbmFtdVwiKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgXCJfXCIpXG4gICAgLnJlcGxhY2UoL15fK3xfKyQvZywgXCJcIik7XG59XG5cbmZ1bmN0aW9uIG51bWJlckZyb21FbnYodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKE51bWJlci5pc05hTihwYXJzZWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRhdGFiYXNlIHBvcnQ6ICR7dmFsdWV9YCk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5mdW5jdGlvbiBjb25uZWN0aW9uRnJvbUVudihvcHRpb25zOiB7XG4gIGJhc2VOYW1lOiBzdHJpbmc7XG4gIHN1ZmZpeDogU29uYW11TWFpbkRCUHJlc2V0O1xuICBiYXNlQ29ubmVjdGlvbj86IEtuZXguUGdDb25uZWN0aW9uQ29uZmlnO1xuICBwcmVmaXg/OiBcIlNPTkFNVV9EQl9SRUFET05MWVwiIHwgXCJTT05BTVVfREJfRklYVFVSRVwiO1xuICBlbnY/OiBOb2RlSlMuUHJvY2Vzc0Vudjtcbn0pOiBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZyB7XG4gIGNvbnN0IHtcbiAgICBiYXNlTmFtZSxcbiAgICBzdWZmaXgsXG4gICAgYmFzZUNvbm5lY3Rpb24gPSB7fSxcbiAgICBwcmVmaXggPSBcIlNPTkFNVV9EQlwiLFxuICAgIGVudiA9IHByb2Nlc3MuZW52LFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVhZCA9IChrZXk6IFwiSE9TVFwiIHwgXCJQT1JUXCIgfCBcIlVTRVJcIiB8IFwiUEFTU1dPUkRcIiB8IFwiTkFNRVwiKSA9PiB7XG4gICAgY29uc3QgcHJlZml4ZWRWYWx1ZSA9IGVudltgJHtwcmVmaXh9XyR7a2V5fWBdO1xuICAgIGlmIChwcmVmaXhlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBwcmVmaXhlZFZhbHVlO1xuICAgIH1cbiAgICBpZiAocHJlZml4ID09PSBcIlNPTkFNVV9EQl9GSVhUVVJFXCIgJiYga2V5ID09PSBcIk5BTUVcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZW52W2BTT05BTVVfREJfJHtrZXl9YF07XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlQ29ubmVjdGlvbixcbiAgICBob3N0OiByZWFkKFwiSE9TVFwiKSA/PyBiYXNlQ29ubmVjdGlvbi5ob3N0ID8/IFwiMC4wLjAuMFwiLFxuICAgIHBvcnQ6IG51bWJlckZyb21FbnYocmVhZChcIlBPUlRcIiksIGJhc2VDb25uZWN0aW9uLnBvcnQgPz8gNTQzMiksXG4gICAgdXNlcjogcmVhZChcIlVTRVJcIikgPz8gYmFzZUNvbm5lY3Rpb24udXNlciA/PyBcInBvc3RncmVzXCIsXG4gICAgcGFzc3dvcmQ6IHJlYWQoXCJQQVNTV09SRFwiKSA/PyBiYXNlQ29ubmVjdGlvbi5wYXNzd29yZCxcbiAgICBkYXRhYmFzZTogcmVhZChcIk5BTUVcIikgPz8gYCR7YmFzZU5hbWV9XyR7c3VmZml4fWAsXG4gIH07XG59XG5cbmZ1bmN0aW9uIG5ldXRyYWxpemVFbnZpcm9ubWVudENvbm5lY3Rpb25GaWVsZHMoXG4gIGNvbm5lY3Rpb246IEtuZXguUGdDb25uZWN0aW9uQ29uZmlnIHwgdW5kZWZpbmVkLFxuKTogS25leC5QZ0Nvbm5lY3Rpb25Db25maWcgfCB1bmRlZmluZWQge1xuICBpZiAoY29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG5ldXRyYWxDb25uZWN0aW9uID0geyAuLi5jb25uZWN0aW9uIH07XG4gIGRlbGV0ZSBuZXV0cmFsQ29ubmVjdGlvbi5ob3N0O1xuICBkZWxldGUgbmV1dHJhbENvbm5lY3Rpb24ucG9ydDtcbiAgZGVsZXRlIG5ldXRyYWxDb25uZWN0aW9uLnVzZXI7XG4gIGRlbGV0ZSBuZXV0cmFsQ29ubmVjdGlvbi5wYXNzd29yZDtcbiAgZGVsZXRlIG5ldXRyYWxDb25uZWN0aW9uLmRhdGFiYXNlO1xuXG4gIHJldHVybiBuZXV0cmFsQ29ubmVjdGlvbjtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0Tm9MZWdhY3lEYXRhYmFzZUNvbmZpZyhjb25maWc6IFNvbmFtdUNvbmZpZ1tcImRhdGFiYXNlXCJdKTogdm9pZCB7XG4gIGNvbnN0IGxlZ2FjeUNvbmZpZyA9IGNvbmZpZyBhcyBTb25hbXVDb25maWdbXCJkYXRhYmFzZVwiXSAmIHtcbiAgICBuYW1lPzogdW5rbm93bjtcbiAgICBlbnZpcm9ubWVudHM/OiB1bmtub3duO1xuICB9O1xuXG4gIGlmIChsZWdhY3lDb25maWcubmFtZSAhPT0gdW5kZWZpbmVkIHx8IGxlZ2FjeUNvbmZpZy5lbnZpcm9ubWVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiU29uYW11IGRhdGFiYXNlLm5hbWUgYW5kIGRhdGFiYXNlLmVudmlyb25tZW50cyB3ZXJlIHJlbW92ZWQuIFVzZSBTT05BTVVfREJfKiBkb3RlbnYgdmFyaWFibGVzIGluc3RlYWQuXCIsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgREJDbGFzcyB7XG4gIHByaXZhdGUgd2RiPzogS25leDtcbiAgcHJpdmF0ZSByZGI/OiBLbmV4O1xuICBwcml2YXRlIHByZXNldERCczogTWFwPFNvbmFtdURCUHJlc2V0LCBLbmV4PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB3b3JrZXJEQnM6IE1hcDxudW1iZXIsIEtuZXg+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGN1cnJlbnRDb25maWc6IFNvbmFtdURCQ29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHRyYW5zYWN0aW9uU3RvcmFnZSA9IG5ldyBBc3luY0xvY2FsU3RvcmFnZTxUcmFuc2FjdGlvbkNvbnRleHQ+KCk7XG5cbiAgcHVibGljIHJ1bldpdGhUcmFuc2FjdGlvblNjb3BlPFQ+KFxuICAgIHByZXNldDogREJQcmVzZXQsXG4gICAgdHJhbnNhY3Rpb246IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIsXG4gICAgY2FsbGJhY2s6ICgpID0+IFByb21pc2U8VD4sXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHBhcmVudENvbnRleHQgPSB0aGlzLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uQ29udGV4dCA9IG5ldyBUcmFuc2FjdGlvbkNvbnRleHQocGFyZW50Q29udGV4dCwgeyBwcmVzZXQsIHRyYW5zYWN0aW9uIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25TdG9yYWdlLnJ1bih0cmFuc2FjdGlvbkNvbnRleHQsIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjYWxsYmFjaygpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gZGV0YWNoZWQgZGVzY2VuZGFudOqwgCDsmYTro4zrkJwg7Yq4656c7J6t7IWY7J2EIOuLpOyLnCDsgqzsmqntlZjsp4Ag7JWK64+E66GdIGxvY2FsIHNjb3Bl66W8IOu5hOyatOuLpC5cbiAgICAgICAgdHJhbnNhY3Rpb25Db250ZXh0LmNsZWFyTG9jYWwoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldENvbmZpZyhkYkNvbmZpZzogU29uYW11REJDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRDb25maWcgPSBkYkNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudENvbmZpZygpOiBTb25hbXVEQkNvbmZpZyB7XG4gICAgaWYgKHRoaXMuY3VycmVudENvbmZpZyA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU29uYW11IERCIGNvbmZpZyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkNvbnRleHQoKTogVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKSA/PyBuZXcgVHJhbnNhY3Rpb25Db250ZXh0KCk7XG4gIH1cblxuICBnZXREQih3aGljaDogREJQcmVzZXQpOiBLbmV4IHtcbiAgICBjb25zdCBkYkNvbmZpZyA9IHRoaXMuZ2V0Q3VycmVudENvbmZpZygpO1xuXG4gICAgaWYgKGlzQ29uY3JldGVQcmVzZXQod2hpY2gpKSB7XG4gICAgICBpZiAoIXRoaXMucHJlc2V0REJzLmhhcyh3aGljaCkpIHtcbiAgICAgICAgdGhpcy5wcmVzZXREQnMuc2V0KHdoaWNoLCBjcmVhdGVLbmV4SW5zdGFuY2UoZGJDb25maWdbd2hpY2hdKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRiID0gdGhpcy5wcmVzZXREQnMuZ2V0KHdoaWNoKTtcbiAgICAgIGFzc2VydChkYiwgYERCIHByZXNldCAke3doaWNofSBub3QgZm91bmRgKTtcbiAgICAgIHJldHVybiBkYjtcbiAgICB9XG5cbiAgICBpZiAoZ2V0U29uYW11RW52aXJvbm1lbnQoKSA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5TT05BTVVfV09SS0VSX0RCID09PSBcInRydWVcIikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRXb3JrZXJEQihkYkNvbmZpZyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnRlc3RUcmFuc2FjdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXN0VHJhbnNhY3Rpb247XG4gICAgICB9IGVsc2UgaWYgKHRoaXMud2RiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndkYjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud2RiID0gY3JlYXRlS25leEluc3RhbmNlKHtcbiAgICAgICAgICAuLi5kYkNvbmZpZy50ZXN0LFxuICAgICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2RiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTmFtZSA9IHdoaWNoID09PSBcIndcIiA/IFwid2RiXCIgOiBcInJkYlwiO1xuXG4gICAgaWYgKCF0aGlzW2luc3RhbmNlTmFtZV0pIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0REJDb25maWcod2hpY2gpO1xuICAgICAgdGhpc1tpbnN0YW5jZU5hbWVdID0gY3JlYXRlS25leEluc3RhbmNlKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNbaW5zdGFuY2VOYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V29ya2VyREIoZGJDb25maWc6IFNvbmFtdURCQ29uZmlnKTogS25leCB7XG4gICAgaWYgKHRoaXMudGVzdFRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXN0VHJhbnNhY3Rpb247XG4gICAgfVxuXG4gICAgY29uc3Qgd29ya2VySWQgPSBwYXJzZUludChwcm9jZXNzLmVudi5WSVRFU1RfUE9PTF9JRCA/PyBcIjFcIiwgMTApO1xuXG4gICAgaWYgKCF0aGlzLndvcmtlckRCcy5oYXMod29ya2VySWQpKSB7XG4gICAgICBjb25zdCBiYXNlVGVzdENvbmZpZyA9IGRiQ29uZmlnLnRlc3Q7XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gYmFzZVRlc3RDb25maWcuY29ubmVjdGlvbiBhcyB7IGRhdGFiYXNlOiBzdHJpbmcgfTtcbiAgICAgIGNvbnN0IHdvcmtlckRiTmFtZSA9IGAke2Nvbm5lY3Rpb24uZGF0YWJhc2V9XyR7d29ya2VySWR9YDtcblxuICAgICAgY29uc3Qgd29ya2VyQ29uZmlnID0ge1xuICAgICAgICAuLi5iYXNlVGVzdENvbmZpZyxcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgIC4uLmNvbm5lY3Rpb24sXG4gICAgICAgICAgZGF0YWJhc2U6IHdvcmtlckRiTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgcG9vbDogeyBtaW46IDEsIG1heDogMSB9LFxuICAgICAgfTtcblxuICAgICAgdGhpcy53b3JrZXJEQnMuc2V0KHdvcmtlcklkLCBjcmVhdGVLbmV4SW5zdGFuY2Uod29ya2VyQ29uZmlnKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGIgPSB0aGlzLndvcmtlckRCcy5nZXQod29ya2VySWQpO1xuICAgIGFzc2VydChkYiwgYFdvcmtlciBEQiAke3dvcmtlcklkfSBub3QgZm91bmRgKTtcbiAgICByZXR1cm4gZGI7XG4gIH1cblxuICBnZXREQkNvbmZpZyh3aGljaDogREJQcmVzZXQpOiBLbmV4LkNvbmZpZyB7XG4gICAgY29uc3QgZGJDb25maWcgPSB0aGlzLmdldEN1cnJlbnRDb25maWcoKTtcblxuICAgIGlmIChpc0NvbmNyZXRlUHJlc2V0KHdoaWNoKSkge1xuICAgICAgcmV0dXJuIGRiQ29uZmlnW3doaWNoXTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGdldFNvbmFtdUVudmlyb25tZW50KCk7XG4gICAgaWYgKGVudmlyb25tZW50ID09PSBcInRlc3RcIikge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gd2hpY2ggPT09IFwid1wiID8gZGJDb25maWcudGVzdCA6IGRiQ29uZmlnLnRlc3RfcmVhZG9ubHk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi50YXJnZXQsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgbWF4OiAxLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2hpY2ggPT09IFwid1wiID8gZGJDb25maWdbZW52aXJvbm1lbnRdIDogZGJDb25maWdbZ2V0UmVhZG9ubHlQcmVzZXQoZW52aXJvbm1lbnQpXTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMud2RiICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMud2RiLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMud2RiID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5yZGIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5yZGIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZGIgb2YgdGhpcy5wcmVzZXREQnMudmFsdWVzKCkpIHtcbiAgICAgIGF3YWl0IGRiLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5wcmVzZXREQnMuY2xlYXIoKTtcbiAgICBmb3IgKGNvbnN0IGRiIG9mIHRoaXMud29ya2VyREJzLnZhbHVlcygpKSB7XG4gICAgICBhd2FpdCBkYi5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMud29ya2VyREJzLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVEQkNvbmZpZyhcbiAgICBjb25maWc6IFNvbmFtdUNvbmZpZ1tcImRhdGFiYXNlXCJdLFxuICAgIHByb2plY3ROYW1lPzogc3RyaW5nLFxuICAgIHNuYXBzaG90cz86IEVudmlyb25tZW50U25hcHNob3RzLFxuICApOiBTb25hbXVEQkNvbmZpZyB7XG4gICAgYXNzZXJ0Tm9MZWdhY3lEYXRhYmFzZUNvbmZpZyhjb25maWcpO1xuXG4gICAgY29uc3QgYmFzZU5hbWUgPSBnZXRQcm9qZWN0RGF0YWJhc2VCYXNlTmFtZShwcm9qZWN0TmFtZSk7XG4gICAgY29uc3QgZGVmYXVsdEtuZXhDb25maWcgPSBtZXJnZUNvbmZpZ3M8UGFydGlhbDxEYXRhYmFzZUNvbmZpZz4+KFxuICAgICAge1xuICAgICAgICBjbGllbnQ6IGNvbmZpZy5kYXRhYmFzZSA9PT0gXCJwZ25hdGl2ZVwiID8gXCJwZ25hdGl2ZVwiIDogXCJwb3N0Z3Jlc3FsXCIsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgbWF4OiA1LFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgZGlyZWN0b3J5OiBcIi4vc3JjL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb25maWcuZGVmYXVsdE9wdGlvbnMsXG4gICAgKTtcbiAgICBjb25zdCBiYXNlQ29ubmVjdGlvbiA9IGRlZmF1bHRLbmV4Q29uZmlnLmNvbm5lY3Rpb24gYXMgS25leC5QZ0Nvbm5lY3Rpb25Db25maWcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZW52aXJvbm1lbnRGYWxsYmFja0Nvbm5lY3Rpb24gPSBzbmFwc2hvdHNcbiAgICAgID8gbmV1dHJhbGl6ZUVudmlyb25tZW50Q29ubmVjdGlvbkZpZWxkcyhiYXNlQ29ubmVjdGlvbilcbiAgICAgIDogYmFzZUNvbm5lY3Rpb247XG5cbiAgICBjb25zdCBlbnZGb3JQcmVzZXQgPSAocHJlc2V0OiBTb25hbXVNYWluREJQcmVzZXQpOiBOb2RlSlMuUHJvY2Vzc0VudiA9PiB7XG4gICAgICBpZiAoIXNuYXBzaG90cykge1xuICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnY7XG4gICAgICB9XG4gICAgICBpZiAocHJlc2V0ID09PSBcImZpeHR1cmVcIikge1xuICAgICAgICByZXR1cm4gc25hcHNob3RzLnRlc3Q7XG4gICAgICB9XG4gICAgICByZXR1cm4gc25hcHNob3RzW3ByZXNldF07XG4gICAgfTtcblxuICAgIGNvbnN0IG1haW5Db25maWcgPSAocHJlc2V0OiBTb25hbXVNYWluREJQcmVzZXQpOiBLbmV4LkNvbmZpZyA9PlxuICAgICAgbWVyZ2VDb25maWdzKGRlZmF1bHRLbmV4Q29uZmlnLCB7XG4gICAgICAgIGNvbm5lY3Rpb246IGNvbm5lY3Rpb25Gcm9tRW52KHtcbiAgICAgICAgICBiYXNlTmFtZSxcbiAgICAgICAgICBzdWZmaXg6IHByZXNldCxcbiAgICAgICAgICBiYXNlQ29ubmVjdGlvbjogZW52aXJvbm1lbnRGYWxsYmFja0Nvbm5lY3Rpb24sXG4gICAgICAgICAgZW52OiBlbnZGb3JQcmVzZXQocHJlc2V0KSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICBjb25zdCByZWFkb25seUNvbmZpZyA9IChlbnZpcm9ubWVudDogU29uYW11RW52aXJvbm1lbnQpOiBLbmV4LkNvbmZpZyA9PlxuICAgICAgbWVyZ2VDb25maWdzPEtuZXguQ29uZmlnPihkZWZhdWx0S25leENvbmZpZywgbWFpbkNvbmZpZyhlbnZpcm9ubWVudCksIHtcbiAgICAgICAgY29ubmVjdGlvbjogY29ubmVjdGlvbkZyb21FbnYoe1xuICAgICAgICAgIGJhc2VOYW1lLFxuICAgICAgICAgIHN1ZmZpeDogZW52aXJvbm1lbnQsXG4gICAgICAgICAgYmFzZUNvbm5lY3Rpb246IG1haW5Db25maWcoZW52aXJvbm1lbnQpLmNvbm5lY3Rpb24gYXMgS25leC5QZ0Nvbm5lY3Rpb25Db25maWcsXG4gICAgICAgICAgcHJlZml4OiBcIlNPTkFNVV9EQl9SRUFET05MWVwiLFxuICAgICAgICAgIGVudjogZW52Rm9yUHJlc2V0KGVudmlyb25tZW50KSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgIGNvbnN0IHRlc3QgPSBtYWluQ29uZmlnKFwidGVzdFwiKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXN0LFxuICAgICAgdGVzdF9yZWFkb25seTogcmVhZG9ubHlDb25maWcoXCJ0ZXN0XCIpLFxuICAgICAgZml4dHVyZTogbWVyZ2VDb25maWdzKGRlZmF1bHRLbmV4Q29uZmlnLCB7XG4gICAgICAgIGNvbm5lY3Rpb246IGNvbm5lY3Rpb25Gcm9tRW52KHtcbiAgICAgICAgICBiYXNlTmFtZSxcbiAgICAgICAgICBzdWZmaXg6IFwiZml4dHVyZVwiLFxuICAgICAgICAgIGJhc2VDb25uZWN0aW9uOiBlbnZpcm9ubWVudEZhbGxiYWNrQ29ubmVjdGlvbixcbiAgICAgICAgICBwcmVmaXg6IFwiU09OQU1VX0RCX0ZJWFRVUkVcIixcbiAgICAgICAgICBlbnY6IGVudkZvclByZXNldChcImZpeHR1cmVcIiksXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgICBkZXZlbG9wbWVudDogbWFpbkNvbmZpZyhcImRldmVsb3BtZW50XCIpLFxuICAgICAgZGV2ZWxvcG1lbnRfcmVhZG9ubHk6IHJlYWRvbmx5Q29uZmlnKFwiZGV2ZWxvcG1lbnRcIiksXG4gICAgICBzdGFnaW5nOiBtYWluQ29uZmlnKFwic3RhZ2luZ1wiKSxcbiAgICAgIHN0YWdpbmdfcmVhZG9ubHk6IHJlYWRvbmx5Q29uZmlnKFwic3RhZ2luZ1wiKSxcbiAgICAgIHByb2R1Y3Rpb246IG1haW5Db25maWcoXCJwcm9kdWN0aW9uXCIpLFxuICAgICAgcHJvZHVjdGlvbl9yZWFkb25seTogcmVhZG9ubHlDb25maWcoXCJwcm9kdWN0aW9uXCIpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdGVzdFRyYW5zYWN0aW9uOiBLbmV4LlRyYW5zYWN0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGFzeW5jIGNyZWF0ZVRlc3RUcmFuc2FjdGlvbigpOiBQcm9taXNlPEtuZXguVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIoXCJ3XCIpO1xuICAgIHRoaXMudGVzdFRyYW5zYWN0aW9uID0gYXdhaXQgZGIudHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy50ZXN0VHJhbnNhY3Rpb247XG4gIH1cbiAgYXN5bmMgY2xlYXJUZXN0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50ZXN0VHJhbnNhY3Rpb24/LnJvbGxiYWNrKCk7XG4gICAgdGhpcy50ZXN0VHJhbnNhY3Rpb24gPSBudWxsO1xuICB9XG4gIGFzeW5jIGdldFRlc3RDb25uZWN0aW9uKCk6IFByb21pc2U8S25leD4ge1xuICAgIGNvbnN0IGRiID0gdGhpcy5nZXREQihcIndcIik7XG4gICAgcmV0dXJuIGRiO1xuICB9XG59XG5leHBvcnQgY29uc3QgREIgPSBuZXcgREJDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBV0EsU0FBUyxjQUFjLE9BQWtEO0NBQ3ZFLE9BQU8sT0FBTyxVQUFVLFlBQVksVUFBVSxRQUFRLENBQUMsTUFBTSxRQUFRLEtBQUs7QUFDNUU7QUFFQSxTQUFTLFlBQ1AsUUFDQSxRQUN5QjtDQUN6QixLQUFLLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxRQUFRLE1BQU0sR0FBRztFQUNqRCxNQUFNLGVBQWUsT0FBTztFQUU1QixJQUFJLGNBQWMsWUFBWSxLQUFLLGNBQWMsS0FBSyxHQUNwRCxPQUFPLE9BQU8sWUFBWSxFQUFFLEdBQUcsYUFBYSxHQUFHLEtBQUs7T0FF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puri-wrapper.d.ts","sourceRoot":"","sources":["../../src/database/puri-wrapper.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAE1B,KAAK,SAAS,CAAC,OAAO,SAAS,oBAAoB,IAAI,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,CAAC;AAEtF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,qBAAa,WAAW,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB;IAEzE,IAAI,EAAE,IAAI;IACV,aAAa,EAAE,aAAa;gBAD5B,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa;IAGrC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAK1B,IAAI,CAAC,MAAM,SAAS,MAAM,OAAO,EAC/B,SAAS,EAAE,MAAM,GAChB,IAAI,CACL,OAAO,EACP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CACjD;IAED,IAAI,CAAC,MAAM,SAAS,MAAM,OAAO,EAAE,MAAM,SAAS,MAAM,EAAE,IAAI,EAAE;SAC7D,CAAC,IAAI,MAAM,GAAG,MAAM;KACtB,GAAG,IAAI,CACN,OAAO,EACP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CACjD;IAED,IAAI,CAAC,MAAM,SAAS,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;SAC3C,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC;KAC9C,GAAG,IAAI,CACN,OAAO,EACP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,EACrC,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC5C;IAMD,KAAK,CAAC,MAAM,SAAS,MAAM,OAAO,EAChC,SAAS,EAAE,MAAM,GAChB,IAAI,CACL,OAAO,EACP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CACjD;IAED,KAAK,CAAC,MAAM,SAAS,MAAM,OAAO,EAAE,MAAM,SAAS,MAAM,EAAE,IAAI,EAAE;SAC9D,CAAC,IAAI,MAAM,GAAG,MAAM;KACtB,GAAG,IAAI,CACN,OAAO,EACP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CACjD;IAED,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;SAC5C,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC;KAC9C,GAAG,IAAI,CACN,OAAO,EACP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,EACrC,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC5C;IAKK,WAAW,CAAC,CAAC,EACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAC,CAAC,CAAC,EACrD,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"puri-wrapper.d.ts","sourceRoot":"","sources":["../../src/database/puri-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,25 +24,18 @@ var init_puri_wrapper = __esmMin((() => {
|
|
|
24
24
|
async transaction(callback, options = {}) {
|
|
25
25
|
const { isolation, readOnly, dbPreset = "w" } = options;
|
|
26
26
|
const { DB } = await import("./db.js");
|
|
27
|
-
const existingContext = DB.transactionStorage.getStore();
|
|
28
27
|
const startTransaction = async (knex, upsertBuilder) => {
|
|
29
28
|
return knex.transaction(async (trx) => {
|
|
30
29
|
const trxWrapper = new PuriTransactionWrapper(trx, upsertBuilder);
|
|
31
|
-
DB.
|
|
32
|
-
try {
|
|
33
|
-
return await callback(trxWrapper);
|
|
34
|
-
} finally {
|
|
35
|
-
DB.getTransactionContext().deleteTransaction(dbPreset);
|
|
36
|
-
}
|
|
30
|
+
return DB.runWithTransactionScope(dbPreset, trxWrapper, () => callback(trxWrapper));
|
|
37
31
|
}, {
|
|
38
32
|
isolationLevel: isolation,
|
|
39
33
|
readOnly
|
|
40
34
|
});
|
|
41
35
|
};
|
|
42
|
-
|
|
43
|
-
const existingTrx = existingContext.getTransaction(dbPreset);
|
|
36
|
+
const existingTrx = DB.transactionStorage.getStore()?.getTransaction(dbPreset);
|
|
44
37
|
if (existingTrx) return startTransaction(existingTrx.trx, existingTrx.upsertBuilder);
|
|
45
|
-
|
|
38
|
+
return startTransaction(this.knex, this.upsertBuilder);
|
|
46
39
|
}
|
|
47
40
|
ubRegister(tableName, row) {
|
|
48
41
|
return this.upsertBuilder.register(tableName, row);
|
|
@@ -100,4 +93,4 @@ var init_puri_wrapper = __esmMin((() => {
|
|
|
100
93
|
init_puri_wrapper();
|
|
101
94
|
export { PuriTransactionWrapper, PuriWrapper, init_puri_wrapper };
|
|
102
95
|
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyaS13cmFwcGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLXdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogb3hsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqLyAvLyBQdXJpV3JhcHBlcuuKlCDri6TslpHtlZwg7YOA7J6F7J2EIOyCrOyaqe2VmOqzoCDsnojsirXri4jri6QuXG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IHR5cGUgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgREJQcmVzZXQgfSBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uS2V5cyxcbiAgdHlwZSBJZFR5cGUsXG4gIHR5cGUgT21pdEludGVybmFsVHlwZUtleXMsXG4gIHR5cGUgUHVyaVRhYmxlLFxufSBmcm9tIFwiLi9wdXJpLnR5cGVzXCI7XG5pbXBvcnQge1xuICB0eXBlIEluc2VydE9ubHlPcHRpb25zLFxuICB0eXBlIFVCUmVmLFxuICB0eXBlIFVwc2VydEJ1aWxkZXIsXG4gIHR5cGUgVXBzZXJ0T3B0aW9ucyxcbn0gZnJvbSBcIi4vdXBzZXJ0LWJ1aWxkZXJcIjtcblxudHlwZSBUYWJsZU5hbWU8VFNjaGVtYSBleHRlbmRzIERhdGFiYXNlU2NoZW1hRXh0ZW5kPiA9IEV4dHJhY3Q8a2V5b2YgVFNjaGVtYSwgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7XG4gIGlzb2xhdGlvbj86IEV4Y2x1ZGU8S25leC5Jc29sYXRpb25MZXZlbHMsIFwic25hcHNob3RcIj47IC8vIHNuYXBzaG90OiBtc3NxbCBvbmx5XG4gIGRiUHJlc2V0PzogREJQcmVzZXQ7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBQdXJpV3JhcHBlcjxUU2NoZW1hIGV4dGVuZHMgRGF0YWJhc2VTY2hlbWFFeHRlbmQgPSBEYXRhYmFzZVNjaGVtYUV4dGVuZD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMga25leDogS25leCxcbiAgICBwdWJsaWMgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgKSB7fVxuXG4gIHJhdyhzcWw6IHN0cmluZyk6IEtuZXguUmF3IHtcbiAgICByZXR1cm4gdGhpcy5rbmV4LnJhdyhzcWwpO1xuICB9XG5cbiAgLy8g7YWM7J2067iU66qF7Jy866GcIOyLnOyekVxuICBmcm9tPFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRUYWJsZSwgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hLCBUQWxpYXMgZXh0ZW5kcyBzdHJpbmc+KHNwZWM6IHtcbiAgICBbSyBpbiBUQWxpYXNdOiBUVGFibGU7XG4gIH0pOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDshJzruIzsv7zrpqzroZwg7Iuc7J6RXG4gIGZyb208VEFsaWFzIGV4dGVuZHMgc3RyaW5nLCBUU3ViUmVzdWx0PihzcGVjOiB7XG4gICAgW0sgaW4gVEFsaWFzXTogUHVyaTxUU2NoZW1hLCBhbnksIFRTdWJSZXN1bHQ+O1xuICB9KTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU3ViUmVzdWx0Pj4sXG4gICAgT21pdEludGVybmFsVHlwZUtleXM8UHVyaVRhYmxlPFRTdWJSZXN1bHQ+PlxuICA+O1xuICBmcm9tKHNwZWM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBQdXJpKHRoaXMua25leCwgc3BlYyk7XG4gIH1cblxuICAvLyDthYzsnbTruJTrqoXsnLzroZwg7Iuc7J6RXG4gIHRhYmxlPFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRUYWJsZSwgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgdGFibGU8VFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYSwgVEFsaWFzIGV4dGVuZHMgc3RyaW5nPihzcGVjOiB7XG4gICAgW0sgaW4gVEFsaWFzXTogVFRhYmxlO1xuICB9KTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0SW50ZXJuYWxUeXBlS2V5czxQdXJpVGFibGU8VFNjaGVtYVtUVGFibGVdPj5cbiAgPjtcbiAgLy8g7ISc67iM7L+866as66GcIOyLnOyekVxuICB0YWJsZTxUQWxpYXMgZXh0ZW5kcyBzdHJpbmcsIFRTdWJSZXN1bHQ+KHNwZWM6IHtcbiAgICBbSyBpbiBUQWxpYXNdOiBQdXJpPFRTY2hlbWEsIGFueSwgVFN1YlJlc3VsdD47XG4gIH0pOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTdWJSZXN1bHQ+PixcbiAgICBPbWl0SW50ZXJuYWxUeXBlS2V5czxQdXJpVGFibGU8VFN1YlJlc3VsdD4+XG4gID47XG4gIHRhYmxlKHNwZWM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBQdXJpKHRoaXMua25leCwgc3BlYyk7XG4gIH1cblxuICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICBjYWxsYmFjazogKHRyeDogUHVyaVRyYW5zYWN0aW9uV3JhcHBlcikgPT4gUHJvbWlzZTxUPixcbiAgICBvcHRpb25zOiBUcmFuc2FjdGlvbmFsT3B0aW9ucyA9IHt9LFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBAdHJhbnNhY3Rpb25hbCDrjbDsvZTroIjsnbTthLDsmYAg64+Z7J287ZWcIOuhnOyngTog7J2066+4IO2KuOuenOyereyFmCDsu6jthY3siqTtirjqsIAg7J6I64qU7KeAIO2ZleyduFxuICAgIGNvbnN0IHsgREIgfSA9IGF3YWl0IGltcG9ydChcIi4vZGJcIik7XG4gICAgY29uc3QgZXhpc3RpbmdDb250ZXh0ID0gREIudHJhbnNhY3Rpb25TdG9yYWdlLmdldFN0b3JlKCk7XG5cbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG6rGw64KYIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4jroZwg7Iuc7J6RXG4gICAgY29uc3Qgc3RhcnRUcmFuc2FjdGlvbiA9IGFzeW5jIChcbiAgICAgIGtuZXg6IEtuZXggfCBLbmV4LlRyYW5zYWN0aW9uLFxuICAgICAgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBrbmV4LnRyYW5zYWN0aW9uKFxuICAgICAgICBhc3luYyAodHJ4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJ4V3JhcHBlciA9IG5ldyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyKHRyeCwgdXBzZXJ0QnVpbGRlcik7XG5cbiAgICAgICAgICAvLyBUcmFuc2FjdGlvbkNvbnRleHTsl5Ag7Yq4656c7J6t7IWYIOyggOyepVxuICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLnNldFRyYW5zYWN0aW9uKGRiUHJlc2V0LCB0cnhXcmFwcGVyKTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgY2FsbGJhY2sodHJ4V3JhcHBlcik7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIO2KuOuenOyereyFmCDsoJzqsbBcbiAgICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLmRlbGV0ZVRyYW5zYWN0aW9uKGRiUHJlc2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgaXNvbGF0aW9uTGV2ZWw6IGlzb2xhdGlvbiwgcmVhZE9ubHkgfSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuOqwgCDsl4bsnLzrqbQg7IOI66GcIOyDneyEsVxuICAgIGlmICghZXhpc3RpbmdDb250ZXh0KSB7XG4gICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uKCgpID0+IHN0YXJ0VHJhbnNhY3Rpb24odGhpcy5rbmV4LCB0aGlzLnVwc2VydEJ1aWxkZXIpKTtcbiAgICB9XG5cbiAgICAvLyDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsnbTrr7gg7J6I7Jy866m0IFNBVkVQT0lOVOuhnCDspJHssqkg7Yq4656c7J6t7IWYIOyDneyEsVxuICAgIGNvbnN0IGV4aXN0aW5nVHJ4ID0gZXhpc3RpbmdDb250ZXh0LmdldFRyYW5zYWN0aW9uKGRiUHJlc2V0KTtcbiAgICBpZiAoZXhpc3RpbmdUcngpIHtcbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKGV4aXN0aW5nVHJ4LnRyeCwgZXhpc3RpbmdUcngudXBzZXJ0QnVpbGRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOy7qO2FjeyKpO2KuOuKlCDsnojsp4Drp4wg7J20IHByZXNldOydmCDtirjrnpzsnq3shZjsnYAg7JeG64qUIOqyveyasCAo6rCZ7J2AIOy7qO2FjeyKpO2KuCDrgrTsl5DshJwg7Iuk7ZaJKVxuICAgICAgcmV0dXJuIHN0YXJ0VHJhbnNhY3Rpb24odGhpcy5rbmV4LCB0aGlzLnVwc2VydEJ1aWxkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHViUmVnaXN0ZXI8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPFRTY2hlbWE+PihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICByb3c6IFBhcnRpYWw8e1xuICAgICAgW0sgaW4gQ29sdW1uS2V5czxUU2NoZW1hW1RUYWJsZV0+XTogVFNjaGVtYVtUVGFibGVdW0tdIHwgVUJSZWY7XG4gICAgfT4sXG4gICk6IFVCUmVmIHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnJlZ2lzdGVyKHRhYmxlTmFtZSwgcm93KTtcbiAgfVxuXG4gIHViVXBzZXJ0PFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxUU2NoZW1hPiAmIGtleW9mIERhdGFiYXNlU2NoZW1hRXh0ZW5kPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICBvcHRpb25zPzogVXBzZXJ0T3B0aW9uczxUVGFibGU+LFxuICApOiBQcm9taXNlPElkVHlwZTxEYXRhYmFzZVNjaGVtYUV4dGVuZCwgVFRhYmxlPltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci51cHNlcnQodGhpcy5rbmV4LCB0YWJsZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgdWJJbnNlcnRPbmx5PFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxUU2NoZW1hPiAmIGtleW9mIERhdGFiYXNlU2NoZW1hRXh0ZW5kPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICBvcHRpb25zPzogSW5zZXJ0T25seU9wdGlvbnMsXG4gICk6IFByb21pc2U8SWRUeXBlPERhdGFiYXNlU2NoZW1hRXh0ZW5kLCBUVGFibGU+W10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLmluc2VydE9ubHkodGhpcy5rbmV4LCB0YWJsZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgdWJVcHNlcnRPckluc2VydDxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8VFNjaGVtYT4gJiBrZXlvZiBEYXRhYmFzZVNjaGVtYUV4dGVuZD4oXG4gICAgdGFibGVOYW1lOiBUVGFibGUsXG4gICAgbW9kZTogXCJ1cHNlcnRcIiB8IFwiaW5zZXJ0XCIsXG4gICAgb3B0aW9ucz86IFVwc2VydE9wdGlvbnM8VFRhYmxlPixcbiAgKTogUHJvbWlzZTxJZFR5cGU8RGF0YWJhc2VTY2hlbWFFeHRlbmQsIFRUYWJsZT5bXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIudXBzZXJ0T3JJbnNlcnQodGhpcy5rbmV4LCB0YWJsZU5hbWUsIG1vZGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgdWJVcGRhdGVCYXRjaChcbiAgICB0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPixcbiAgICBvcHRpb25zPzogeyBjaHVua1NpemU/OiBudW1iZXI7IHdoZXJlPzogc3RyaW5nIHwgc3RyaW5nW10gfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci51cGRhdGVCYXRjaCh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyDtirjrnpzsnq3shZgg7Jew6rKwIO2FjOyKpO2KuOyaqVxuICBhc3luYyBkZWJ1Z1RyYW5zYWN0aW9uKCkge1xuICAgIGNvbnN0IGluZm8gPSBhd2FpdCB0aGlzLmdldFRyYW5zYWN0aW9uSW5mbygpO1xuICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmN5YW4oXCJbUHVyaSBUcmFuc2FjdGlvbl1cIil9ICR7Y2hhbGsubWFnZW50YShpbmZvKX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g7Jew6rKwIElEIOyhsO2ajFxuICAgIGNvbnN0IFtjb25uZWN0aW9uSWRSb3dzXSA9IGF3YWl0IHRoaXMua25leC5yYXcoYFNFTEVDVCBDT05ORUNUSU9OX0lEKCkgYXMgY29ubmVjdGlvbl9pZGApO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZFJvd3NbMF0uY29ubmVjdGlvbl9pZDtcblxuICAgIC8vIO2KuOuenOyereyFmCDsoJXrs7Qg7KGw7ZqMXG4gICAgY29uc3QgW3RyeFJvd3NdID0gYXdhaXQgdGhpcy5rbmV4LnJhdyhgXG4gICAgICAgIFNFTEVDVCBTVEFURSwgSVNPTEFUSU9OX0xFVkVMLCBUSFJFQURfSUQsIEVWRU5UX0lEXG4gICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLmV2ZW50c190cmFuc2FjdGlvbnNfY3VycmVudFxuICAgICAgICBXSEVSRSBUSFJFQURfSUQgPSBcbiAgICAgICAgICAoU0VMRUNUIFRIUkVBRF9JRFxuICAgICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLnRocmVhZHMgXG4gICAgICAgICAgV0hFUkUgUFJPQ0VTU0xJU1RfSUQgPSBDT05ORUNUSU9OX0lEKCkpXG4gICAgICBgKTtcblxuICAgIGlmICh0cnhSb3dzLmxlbmd0aCA+IDAgJiYgdHJ4Um93c1swXS5TVEFURSAhPT0gXCJDT01NSVRURURcIikge1xuICAgICAgY29uc3QgdHJ4ID0gdHJ4Um93c1swXTtcbiAgICAgIHJldHVybiBgSW4gVHJhbnNhY3Rpb24sIENvbm5JRDogJHtjb25uZWN0aW9uSWR9LCBUaHJlYWRJRDogJHt0cnguVEhSRUFEX0lEfSwgRXZlbnRJRDogJHt0cnguRVZFTlRfSUR9LCBJbm5vREIgVFJYOiAke3RyeC5TVEFURX0oJHt0cnguSVNPTEFUSU9OX0xFVkVMfSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYE5vdCBpbiBUcmFuc2FjdGlvbiwgQ29ubklEOiAke2Nvbm5lY3Rpb25JZH1gO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciBleHRlbmRzIFB1cmlXcmFwcGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRyeDogS25leC5UcmFuc2FjdGlvbixcbiAgICBwdWJsaWMgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgKSB7XG4gICAgc3VwZXIodHJ4LCB1cHNlcnRCdWlsZGVyKTtcbiAgfVxuXG4gIGFzeW5jIHJvbGxiYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudHJ4LnJvbGxiYWNrKCk7XG4gIH1cblxuICBhc3luYyBjb21taXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50cnguY29tbWl0KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1dBTzZCO0NBc0JoQixjQUFiLE1BQXNGO0VBRTNFO0VBQ0E7RUFGVCxZQUNFLE1BQ0EsZUFDQTtHQUZPLEtBQUEsT0FBQTtHQUNBLEtBQUEsZ0JBQUE7RUFDTjtFQUVILElBQUksS0FBdUI7R0FDekIsT0FBTyxLQUFLLEtBQUssSUFBSSxHQUFHO0VBQzFCO0VBMEJBLEtBQUssTUFBZ0I7R0FDbkIsT0FBTyxJQUFJLEtBQUssS0FBSyxNQUFNLElBQUk7RUFDakM7RUEwQkEsTUFBTSxNQUFnQjtHQUNwQixPQUFPLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSTtFQUNqQztFQUVBLE1BQU0sWUFDSixVQUNBLFVBQWdDLENBQUMsR0FDckI7R0FDWixNQUFNLEVBQUUsV0FBVyxVQUFVLFdBQVcsUUFBUTtHQUdoRCxNQUFNLEVBQUUsT0FBTyxNQUFNLE9BQU87R0FDNUIsTUFBTSxrQkFBa0IsR0FBRyxtQkFBbUIsU0FBUztHQUd2RCxNQUFNLG1CQUFtQixPQUN2QixNQUNBLGtCQUNHO0lBQ0gsT0FBTyxLQUFLLFlBQ1YsT0FBTyxRQUFRO0tBQ2IsTUFBTSxhQUFhLElBQUksdUJBQXVCLEtBQUssYUFBYTtLQUdoRSxHQUFHLHNCQUFzQixDQUFDLENBQUMsZUFBZSxVQUFVLFVBQVU7S0FFOUQsSUFBSTtNQUNGLE9BQU8sTUFBTSxTQUFTLFVBQVU7S0FDbEMsVUFBVTtNQUVSLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxrQkFBa0IsUUFBUTtLQUN2RDtJQUNGLEdBQ0E7S0FBRSxnQkFBZ0I7S0FBVztJQUFTLENBQ3hDO0dBQ0Y7R0FHQSxJQUFJLENBQUMsaUJBQ0gsT0FBTyxHQUFHLHlCQUF5QixpQkFBaUIsS0FBSyxNQUFNLEtBQUssYUFBYSxDQUFDO0dBSXBGLE1BQU0sY0FBYyxnQkFBZ0IsZUFBZSxRQUFRO0dBQzNELElBQUksYUFDRixPQUFPLGlCQUFpQixZQUFZLEtBQUssWUFBWSxhQUFhO1FBR2xFLE9BQU8saUJBQWlCLEtBQUssTUFBTSxLQUFLLGFBQWE7RUFFekQ7RUFFQSxXQUNFLFdBQ0EsS0FHTztHQUNQLE9BQU8sS0FBSyxjQUFjLFNBQVMsV0FBVyxHQUFHO0VBQ25EO0VBRUEsU0FDRSxXQUNBLFNBQ2lEO0dBQ2pELE9BQU8sS0FBSyxjQUFjLE9BQU8sS0FBSyxNQUFNLFdBQVcsT0FBTztFQUNoRTtFQUVBLGFBQ0UsV0FDQSxTQUNpRDtHQUNqRCxPQUFPLEtBQUssY0FBYyxXQUFXLEtBQUssTUFBTSxXQUFXLE9BQU87RUFDcEU7RUFFQSxpQkFDRSxXQUNBLE1BQ0EsU0FDaUQ7R0FDakQsT0FBTyxLQUFLLGNBQWMsZUFBZSxLQUFLLE1BQU0sV0FBVyxNQUFNLE9BQU87RUFDOUU7RUFFQSxjQUNFLFdBQ0EsU0FDZTtHQUNmLE9BQU8sS0FBSyxjQUFjLFlBQVksS0FBSyxNQUFNLFdBQVcsT0FBTztFQUNyRTtFQUdBLE1BQU0sbUJBQW1CO0dBQ3ZCLE1BQU0sT0FBTyxNQUFNLEtBQUssbUJBQW1CO0dBQzNDLFFBQVEsSUFBSSxHQUFHLE1BQU0sS0FBSyxvQkFBb0IsRUFBRSxHQUFHLE1BQU0sUUFBUSxJQUFJLEdBQUc7RUFDMUU7RUFFQSxNQUFjLHFCQUFzQztHQUVsRCxNQUFNLENBQUMsb0JBQW9CLE1BQU0sS0FBSyxLQUFLLElBQUkseUNBQXlDO0dBQ3hGLE1BQU0sZUFBZSxpQkFBaUIsRUFBRSxDQUFDO0dBR3pDLE1BQU0sQ0FBQyxXQUFXLE1BQU0sS0FBSyxLQUFLLElBQUk7Ozs7Ozs7T0FPbkM7R0FFSCxJQUFJLFFBQVEsU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDLFVBQVUsYUFBYTtJQUMxRCxNQUFNLE1BQU0sUUFBUTtJQUNwQixPQUFPLDJCQUEyQixhQUFhLGNBQWMsSUFBSSxVQUFVLGFBQWEsSUFBSSxTQUFTLGdCQUFnQixJQUFJLE1BQU0sR0FBRyxJQUFJLGdCQUFnQjtHQUN4SixPQUNFLE9BQU8sK0JBQStCO0VBRTFDO0NBQ0Y7Q0FFYSx5QkFBYixjQUE0QyxZQUFZO0VBRTdDO0VBQ0E7RUFGVCxZQUNFLEtBQ0EsZUFDQTtHQUNBLE1BQU0sS0FBSyxhQUFhO0dBSGpCLEtBQUEsTUFBQTtHQUNBLEtBQUEsZ0JBQUE7RUFHVDtFQUVBLE1BQU0sV0FBMEI7R0FDOUIsTUFBTSxLQUFLLElBQUksU0FBUztFQUMxQjtFQUVBLE1BQU0sU0FBd0I7R0FDNUIsTUFBTSxLQUFLLElBQUksT0FBTztFQUN4QjtDQUNGIn0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyaS13cmFwcGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLXdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogb3hsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqLyAvLyBQdXJpV3JhcHBlcuuKlCDri6TslpHtlZwg7YOA7J6F7J2EIOyCrOyaqe2VmOqzoCDsnojsirXri4jri6QuXG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IHR5cGUgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgREJQcmVzZXQgfSBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uS2V5cyxcbiAgdHlwZSBJZFR5cGUsXG4gIHR5cGUgT21pdEludGVybmFsVHlwZUtleXMsXG4gIHR5cGUgUHVyaVRhYmxlLFxufSBmcm9tIFwiLi9wdXJpLnR5cGVzXCI7XG5pbXBvcnQge1xuICB0eXBlIEluc2VydE9ubHlPcHRpb25zLFxuICB0eXBlIFVCUmVmLFxuICB0eXBlIFVwc2VydEJ1aWxkZXIsXG4gIHR5cGUgVXBzZXJ0T3B0aW9ucyxcbn0gZnJvbSBcIi4vdXBzZXJ0LWJ1aWxkZXJcIjtcblxudHlwZSBUYWJsZU5hbWU8VFNjaGVtYSBleHRlbmRzIERhdGFiYXNlU2NoZW1hRXh0ZW5kPiA9IEV4dHJhY3Q8a2V5b2YgVFNjaGVtYSwgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7XG4gIGlzb2xhdGlvbj86IEV4Y2x1ZGU8S25leC5Jc29sYXRpb25MZXZlbHMsIFwic25hcHNob3RcIj47IC8vIHNuYXBzaG90OiBtc3NxbCBvbmx5XG4gIGRiUHJlc2V0PzogREJQcmVzZXQ7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBQdXJpV3JhcHBlcjxUU2NoZW1hIGV4dGVuZHMgRGF0YWJhc2VTY2hlbWFFeHRlbmQgPSBEYXRhYmFzZVNjaGVtYUV4dGVuZD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMga25leDogS25leCxcbiAgICBwdWJsaWMgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgKSB7fVxuXG4gIHJhdyhzcWw6IHN0cmluZyk6IEtuZXguUmF3IHtcbiAgICByZXR1cm4gdGhpcy5rbmV4LnJhdyhzcWwpO1xuICB9XG5cbiAgLy8g7YWM7J2067iU66qF7Jy866GcIOyLnOyekVxuICBmcm9tPFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRUYWJsZSwgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hLCBUQWxpYXMgZXh0ZW5kcyBzdHJpbmc+KHNwZWM6IHtcbiAgICBbSyBpbiBUQWxpYXNdOiBUVGFibGU7XG4gIH0pOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDshJzruIzsv7zrpqzroZwg7Iuc7J6RXG4gIGZyb208VEFsaWFzIGV4dGVuZHMgc3RyaW5nLCBUU3ViUmVzdWx0PihzcGVjOiB7XG4gICAgW0sgaW4gVEFsaWFzXTogUHVyaTxUU2NoZW1hLCBhbnksIFRTdWJSZXN1bHQ+O1xuICB9KTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU3ViUmVzdWx0Pj4sXG4gICAgT21pdEludGVybmFsVHlwZUtleXM8UHVyaVRhYmxlPFRTdWJSZXN1bHQ+PlxuICA+O1xuICBmcm9tKHNwZWM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBQdXJpKHRoaXMua25leCwgc3BlYyk7XG4gIH1cblxuICAvLyDthYzsnbTruJTrqoXsnLzroZwg7Iuc7J6RXG4gIHRhYmxlPFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRUYWJsZSwgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgdGFibGU8VFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYSwgVEFsaWFzIGV4dGVuZHMgc3RyaW5nPihzcGVjOiB7XG4gICAgW0sgaW4gVEFsaWFzXTogVFRhYmxlO1xuICB9KTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0SW50ZXJuYWxUeXBlS2V5czxQdXJpVGFibGU8VFNjaGVtYVtUVGFibGVdPj5cbiAgPjtcbiAgLy8g7ISc67iM7L+866as66GcIOyLnOyekVxuICB0YWJsZTxUQWxpYXMgZXh0ZW5kcyBzdHJpbmcsIFRTdWJSZXN1bHQ+KHNwZWM6IHtcbiAgICBbSyBpbiBUQWxpYXNdOiBQdXJpPFRTY2hlbWEsIGFueSwgVFN1YlJlc3VsdD47XG4gIH0pOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTdWJSZXN1bHQ+PixcbiAgICBPbWl0SW50ZXJuYWxUeXBlS2V5czxQdXJpVGFibGU8VFN1YlJlc3VsdD4+XG4gID47XG4gIHRhYmxlKHNwZWM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBQdXJpKHRoaXMua25leCwgc3BlYyk7XG4gIH1cblxuICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICBjYWxsYmFjazogKHRyeDogUHVyaVRyYW5zYWN0aW9uV3JhcHBlcikgPT4gUHJvbWlzZTxUPixcbiAgICBvcHRpb25zOiBUcmFuc2FjdGlvbmFsT3B0aW9ucyA9IHt9LFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCB7IERCIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RiXCIpO1xuXG4gICAgY29uc3Qgc3RhcnRUcmFuc2FjdGlvbiA9IGFzeW5jIChcbiAgICAgIGtuZXg6IEtuZXggfCBLbmV4LlRyYW5zYWN0aW9uLFxuICAgICAgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBrbmV4LnRyYW5zYWN0aW9uKFxuICAgICAgICBhc3luYyAodHJ4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJ4V3JhcHBlciA9IG5ldyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyKHRyeCwgdXBzZXJ0QnVpbGRlcik7XG5cbiAgICAgICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uU2NvcGUoZGJQcmVzZXQsIHRyeFdyYXBwZXIsICgpID0+IGNhbGxiYWNrKHRyeFdyYXBwZXIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBpc29sYXRpb25MZXZlbDogaXNvbGF0aW9uLCByZWFkT25seSB9LFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdUcnggPSBEQi50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKT8uZ2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQpO1xuICAgIGlmIChleGlzdGluZ1RyeCkge1xuICAgICAgLy8g6rCZ7J2AIHByZXNldOydmCDspJHssqkg7Yq4656c7J6t7IWY7J2AIOq4sOyhtCDsl7DqsrDsl5DshJwgU0FWRVBPSU5U66GcIOyLnOyeke2VnOuLpC5cbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKGV4aXN0aW5nVHJ4LnRyeCwgZXhpc3RpbmdUcngudXBzZXJ0QnVpbGRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXJ0VHJhbnNhY3Rpb24odGhpcy5rbmV4LCB0aGlzLnVwc2VydEJ1aWxkZXIpO1xuICB9XG5cbiAgdWJSZWdpc3RlcjxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8VFNjaGVtYT4+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICAgIHJvdzogUGFydGlhbDx7XG4gICAgICBbSyBpbiBDb2x1bW5LZXlzPFRTY2hlbWFbVFRhYmxlXT5dOiBUU2NoZW1hW1RUYWJsZV1bS10gfCBVQlJlZjtcbiAgICB9PixcbiAgKTogVUJSZWYge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIucmVnaXN0ZXIodGFibGVOYW1lLCByb3cpO1xuICB9XG5cbiAgdWJVcHNlcnQ8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPFRTY2hlbWE+ICYga2V5b2YgRGF0YWJhc2VTY2hlbWFFeHRlbmQ+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICAgIG9wdGlvbnM/OiBVcHNlcnRPcHRpb25zPFRUYWJsZT4sXG4gICk6IFByb21pc2U8SWRUeXBlPERhdGFiYXNlU2NoZW1hRXh0ZW5kLCBUVGFibGU+W10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnVwc2VydCh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICB1Ykluc2VydE9ubHk8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPFRTY2hlbWE+ICYga2V5b2YgRGF0YWJhc2VTY2hlbWFFeHRlbmQ+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICAgIG9wdGlvbnM/OiBJbnNlcnRPbmx5T3B0aW9ucyxcbiAgKTogUHJvbWlzZTxJZFR5cGU8RGF0YWJhc2VTY2hlbWFFeHRlbmQsIFRUYWJsZT5bXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIuaW5zZXJ0T25seSh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICB1YlVwc2VydE9ySW5zZXJ0PFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxUU2NoZW1hPiAmIGtleW9mIERhdGFiYXNlU2NoZW1hRXh0ZW5kPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICBtb2RlOiBcInVwc2VydFwiIHwgXCJpbnNlcnRcIixcbiAgICBvcHRpb25zPzogVXBzZXJ0T3B0aW9uczxUVGFibGU+LFxuICApOiBQcm9taXNlPElkVHlwZTxEYXRhYmFzZVNjaGVtYUV4dGVuZCwgVFRhYmxlPltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci51cHNlcnRPckluc2VydCh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgbW9kZSwgb3B0aW9ucyk7XG4gIH1cblxuICB1YlVwZGF0ZUJhdGNoKFxuICAgIHRhYmxlTmFtZTogVGFibGVOYW1lPFRTY2hlbWE+LFxuICAgIG9wdGlvbnM/OiB7IGNodW5rU2l6ZT86IG51bWJlcjsgd2hlcmU/OiBzdHJpbmcgfCBzdHJpbmdbXSB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnVwZGF0ZUJhdGNoKHRoaXMua25leCwgdGFibGVOYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIO2KuOuenOyereyFmCDsl7DqsrAg7YWM7Iqk7Yq47JqpXG4gIGFzeW5jIGRlYnVnVHJhbnNhY3Rpb24oKSB7XG4gICAgY29uc3QgaW5mbyA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNhY3Rpb25JbmZvKCk7XG4gICAgY29uc29sZS5sb2coYCR7Y2hhbGsuY3lhbihcIltQdXJpIFRyYW5zYWN0aW9uXVwiKX0gJHtjaGFsay5tYWdlbnRhKGluZm8pfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUcmFuc2FjdGlvbkluZm8oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyDsl7DqsrAgSUQg7KGw7ZqMXG4gICAgY29uc3QgW2Nvbm5lY3Rpb25JZFJvd3NdID0gYXdhaXQgdGhpcy5rbmV4LnJhdyhgU0VMRUNUIENPTk5FQ1RJT05fSUQoKSBhcyBjb25uZWN0aW9uX2lkYCk7XG4gICAgY29uc3QgY29ubmVjdGlvbklkID0gY29ubmVjdGlvbklkUm93c1swXS5jb25uZWN0aW9uX2lkO1xuXG4gICAgLy8g7Yq4656c7J6t7IWYIOygleuztCDsobDtmoxcbiAgICBjb25zdCBbdHJ4Um93c10gPSBhd2FpdCB0aGlzLmtuZXgucmF3KGBcbiAgICAgICAgU0VMRUNUIFNUQVRFLCBJU09MQVRJT05fTEVWRUwsIFRIUkVBRF9JRCwgRVZFTlRfSURcbiAgICAgICAgRlJPTSBwZXJmb3JtYW5jZV9zY2hlbWEuZXZlbnRzX3RyYW5zYWN0aW9uc19jdXJyZW50XG4gICAgICAgIFdIRVJFIFRIUkVBRF9JRCA9IFxuICAgICAgICAgIChTRUxFQ1QgVEhSRUFEX0lEXG4gICAgICAgICAgRlJPTSBwZXJmb3JtYW5jZV9zY2hlbWEudGhyZWFkcyBcbiAgICAgICAgICBXSEVSRSBQUk9DRVNTTElTVF9JRCA9IENPTk5FQ1RJT05fSUQoKSlcbiAgICAgIGApO1xuXG4gICAgaWYgKHRyeFJvd3MubGVuZ3RoID4gMCAmJiB0cnhSb3dzWzBdLlNUQVRFICE9PSBcIkNPTU1JVFRFRFwiKSB7XG4gICAgICBjb25zdCB0cnggPSB0cnhSb3dzWzBdO1xuICAgICAgcmV0dXJuIGBJbiBUcmFuc2FjdGlvbiwgQ29ubklEOiAke2Nvbm5lY3Rpb25JZH0sIFRocmVhZElEOiAke3RyeC5USFJFQURfSUR9LCBFdmVudElEOiAke3RyeC5FVkVOVF9JRH0sIElubm9EQiBUUlg6ICR7dHJ4LlNUQVRFfSgke3RyeC5JU09MQVRJT05fTEVWRUx9KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgTm90IGluIFRyYW5zYWN0aW9uLCBDb25uSUQ6ICR7Y29ubmVjdGlvbklkfWA7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyIGV4dGVuZHMgUHVyaVdyYXBwZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJ4OiBLbmV4LlRyYW5zYWN0aW9uLFxuICAgIHB1YmxpYyB1cHNlcnRCdWlsZGVyOiBVcHNlcnRCdWlsZGVyLFxuICApIHtcbiAgICBzdXBlcih0cngsIHVwc2VydEJ1aWxkZXIpO1xuICB9XG5cbiAgYXN5bmMgcm9sbGJhY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50cngucm9sbGJhY2soKTtcbiAgfVxuXG4gIGFzeW5jIGNvbW1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnRyeC5jb21taXQoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7V0FPNkI7Q0FzQmhCLGNBQWIsTUFBc0Y7RUFFM0U7RUFDQTtFQUZULFlBQ0UsTUFDQSxlQUNBO0dBRk8sS0FBQSxPQUFBO0dBQ0EsS0FBQSxnQkFBQTtFQUNOO0VBRUgsSUFBSSxLQUF1QjtHQUN6QixPQUFPLEtBQUssS0FBSyxJQUFJLEdBQUc7RUFDMUI7RUEwQkEsS0FBSyxNQUFnQjtHQUNuQixPQUFPLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSTtFQUNqQztFQTBCQSxNQUFNLE1BQWdCO0dBQ3BCLE9BQU8sSUFBSSxLQUFLLEtBQUssTUFBTSxJQUFJO0VBQ2pDO0VBRUEsTUFBTSxZQUNKLFVBQ0EsVUFBZ0MsQ0FBQyxHQUNyQjtHQUNaLE1BQU0sRUFBRSxXQUFXLFVBQVUsV0FBVyxRQUFRO0dBRWhELE1BQU0sRUFBRSxPQUFPLE1BQU0sT0FBTztHQUU1QixNQUFNLG1CQUFtQixPQUN2QixNQUNBLGtCQUNHO0lBQ0gsT0FBTyxLQUFLLFlBQ1YsT0FBTyxRQUFRO0tBQ2IsTUFBTSxhQUFhLElBQUksdUJBQXVCLEtBQUssYUFBYTtLQUVoRSxPQUFPLEdBQUcsd0JBQXdCLFVBQVUsa0JBQWtCLFNBQVMsVUFBVSxDQUFDO0lBQ3BGLEdBQ0E7S0FBRSxnQkFBZ0I7S0FBVztJQUFTLENBQ3hDO0dBQ0Y7R0FFQSxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsU0FBUyxDQUFDLEVBQUUsZUFBZSxRQUFRO0dBQzdFLElBQUksYUFFRixPQUFPLGlCQUFpQixZQUFZLEtBQUssWUFBWSxhQUFhO0dBR3BFLE9BQU8saUJBQWlCLEtBQUssTUFBTSxLQUFLLGFBQWE7RUFDdkQ7RUFFQSxXQUNFLFdBQ0EsS0FHTztHQUNQLE9BQU8sS0FBSyxjQUFjLFNBQVMsV0FBVyxHQUFHO0VBQ25EO0VBRUEsU0FDRSxXQUNBLFNBQ2lEO0dBQ2pELE9BQU8sS0FBSyxjQUFjLE9BQU8sS0FBSyxNQUFNLFdBQVcsT0FBTztFQUNoRTtFQUVBLGFBQ0UsV0FDQSxTQUNpRDtHQUNqRCxPQUFPLEtBQUssY0FBYyxXQUFXLEtBQUssTUFBTSxXQUFXLE9BQU87RUFDcEU7RUFFQSxpQkFDRSxXQUNBLE1BQ0EsU0FDaUQ7R0FDakQsT0FBTyxLQUFLLGNBQWMsZUFBZSxLQUFLLE1BQU0sV0FBVyxNQUFNLE9BQU87RUFDOUU7RUFFQSxjQUNFLFdBQ0EsU0FDZTtHQUNmLE9BQU8sS0FBSyxjQUFjLFlBQVksS0FBSyxNQUFNLFdBQVcsT0FBTztFQUNyRTtFQUdBLE1BQU0sbUJBQW1CO0dBQ3ZCLE1BQU0sT0FBTyxNQUFNLEtBQUssbUJBQW1CO0dBQzNDLFFBQVEsSUFBSSxHQUFHLE1BQU0sS0FBSyxvQkFBb0IsRUFBRSxHQUFHLE1BQU0sUUFBUSxJQUFJLEdBQUc7RUFDMUU7RUFFQSxNQUFjLHFCQUFzQztHQUVsRCxNQUFNLENBQUMsb0JBQW9CLE1BQU0sS0FBSyxLQUFLLElBQUkseUNBQXlDO0dBQ3hGLE1BQU0sZUFBZSxpQkFBaUIsRUFBRSxDQUFDO0dBR3pDLE1BQU0sQ0FBQyxXQUFXLE1BQU0sS0FBSyxLQUFLLElBQUk7Ozs7Ozs7T0FPbkM7R0FFSCxJQUFJLFFBQVEsU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDLFVBQVUsYUFBYTtJQUMxRCxNQUFNLE1BQU0sUUFBUTtJQUNwQixPQUFPLDJCQUEyQixhQUFhLGNBQWMsSUFBSSxVQUFVLGFBQWEsSUFBSSxTQUFTLGdCQUFnQixJQUFJLE1BQU0sR0FBRyxJQUFJLGdCQUFnQjtHQUN4SixPQUNFLE9BQU8sK0JBQStCO0VBRTFDO0NBQ0Y7Q0FFYSx5QkFBYixjQUE0QyxZQUFZO0VBRTdDO0VBQ0E7RUFGVCxZQUNFLEtBQ0EsZUFDQTtHQUNBLE1BQU0sS0FBSyxhQUFhO0dBSGpCLEtBQUEsTUFBQTtHQUNBLEtBQUEsZ0JBQUE7RUFHVDtFQUVBLE1BQU0sV0FBMEI7R0FDOUIsTUFBTSxLQUFLLElBQUksU0FBUztFQUMxQjtFQUVBLE1BQU0sU0FBd0I7R0FDNUIsTUFBTSxLQUFLLElBQUksT0FBTztFQUN4QjtDQUNGIn0=
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { type DBPreset } from "./db";
|
|
2
2
|
import { type PuriTransactionWrapper } from "./puri-wrapper";
|
|
3
3
|
export declare class TransactionContext {
|
|
4
|
-
private
|
|
4
|
+
private readonly parent?;
|
|
5
|
+
private local?;
|
|
6
|
+
constructor(parent?: TransactionContext | undefined, local?: {
|
|
7
|
+
preset: DBPreset;
|
|
8
|
+
transaction: PuriTransactionWrapper;
|
|
9
|
+
} | undefined);
|
|
5
10
|
getTransaction(preset: DBPreset): PuriTransactionWrapper | undefined;
|
|
6
|
-
|
|
7
|
-
|
|
11
|
+
getActiveTransaction(): PuriTransactionWrapper | undefined;
|
|
12
|
+
clearLocal(): void;
|
|
8
13
|
}
|
|
9
14
|
//# sourceMappingURL=transaction-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/database/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,qBAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/database/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,KAAK,CAAC;gBADG,MAAM,CAAC,EAAE,kBAAkB,YAAA,EACpC,KAAK,CAAC,EAAE;QACd,MAAM,EAAE,QAAQ,CAAC;QACjB,WAAW,EAAE,sBAAsB,CAAC;KACrC,YAAA;IAGH,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,sBAAsB,GAAG,SAAS;IAMpE,oBAAoB,IAAI,sBAAsB,GAAG,SAAS;IAI1D,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -3,15 +3,20 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
|
3
3
|
var TransactionContext;
|
|
4
4
|
var init_transaction_context = __esmMin((() => {
|
|
5
5
|
TransactionContext = class {
|
|
6
|
-
|
|
6
|
+
parent;
|
|
7
|
+
local;
|
|
8
|
+
constructor(parent, local) {
|
|
9
|
+
this.parent = parent;
|
|
10
|
+
this.local = local;
|
|
11
|
+
}
|
|
7
12
|
getTransaction(preset) {
|
|
8
|
-
return this.
|
|
13
|
+
return this.local?.preset === preset ? this.local.transaction : this.parent?.getTransaction(preset);
|
|
9
14
|
}
|
|
10
|
-
|
|
11
|
-
this.
|
|
15
|
+
getActiveTransaction() {
|
|
16
|
+
return this.local?.transaction ?? this.parent?.getActiveTransaction();
|
|
12
17
|
}
|
|
13
|
-
|
|
14
|
-
this.
|
|
18
|
+
clearLocal() {
|
|
19
|
+
this.local = void 0;
|
|
15
20
|
}
|
|
16
21
|
};
|
|
17
22
|
}));
|
|
@@ -19,4 +24,4 @@ var init_transaction_context = __esmMin((() => {
|
|
|
19
24
|
init_transaction_context();
|
|
20
25
|
export { TransactionContext, init_transaction_context };
|
|
21
26
|
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29udGV4dC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvdHJhbnNhY3Rpb24tY29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERCUHJlc2V0IH0gZnJvbSBcIi4vZGJcIjtcbmltcG9ydCB7IHR5cGUgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciB9IGZyb20gXCIuL3B1cmktd3JhcHBlclwiO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnQ/OiBUcmFuc2FjdGlvbkNvbnRleHQsXG4gICAgcHJpdmF0ZSBsb2NhbD86IHtcbiAgICAgIHByZXNldDogREJQcmVzZXQ7XG4gICAgICB0cmFuc2FjdGlvbjogUHVyaVRyYW5zYWN0aW9uV3JhcHBlcjtcbiAgICB9LFxuICApIHt9XG5cbiAgZ2V0VHJhbnNhY3Rpb24ocHJlc2V0OiBEQlByZXNldCk6IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxvY2FsPy5wcmVzZXQgPT09IHByZXNldFxuICAgICAgPyB0aGlzLmxvY2FsLnRyYW5zYWN0aW9uXG4gICAgICA6IHRoaXMucGFyZW50Py5nZXRUcmFuc2FjdGlvbihwcmVzZXQpO1xuICB9XG5cbiAgZ2V0QWN0aXZlVHJhbnNhY3Rpb24oKTogUHVyaVRyYW5zYWN0aW9uV3JhcHBlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubG9jYWw/LnRyYW5zYWN0aW9uID8/IHRoaXMucGFyZW50Py5nZXRBY3RpdmVUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgY2xlYXJMb2NhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Q0FHYSxxQkFBYixNQUFnQztFQUVYO0VBQ1Q7RUFGVixZQUNFLFFBQ0EsT0FJQTtHQUxpQixLQUFBLFNBQUE7R0FDVCxLQUFBLFFBQUE7RUFJUDtFQUVILGVBQWUsUUFBc0Q7R0FDbkUsT0FBTyxLQUFLLE9BQU8sV0FBVyxTQUMxQixLQUFLLE1BQU0sY0FDWCxLQUFLLFFBQVEsZUFBZSxNQUFNO0VBQ3hDO0VBRUEsdUJBQTJEO0dBQ3pELE9BQU8sS0FBSyxPQUFPLGVBQWUsS0FBSyxRQUFRLHFCQUFxQjtFQUN0RTtFQUVBLGFBQW1CO0dBQ2pCLEtBQUssUUFBUTtFQUNmO0NBQ0YifQ==
|