@aws-cdk/integ-runner 2.202.2 → 2.203.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_LICENSES +26 -0
- package/lib/cli.d.ts.map +1 -1
- package/lib/cli.js +3 -2
- package/lib/engines/toolkit-lib.d.ts +1 -1
- package/lib/engines/toolkit-lib.d.ts.map +1 -1
- package/lib/engines/toolkit-lib.js +11 -11
- package/lib/files.d.ts +9 -0
- package/lib/files.d.ts.map +1 -0
- package/lib/files.js +51 -0
- package/lib/index.js +218 -182
- package/lib/runner/{cdk-integ-helper.d.ts → cdk-test-app.d.ts} +90 -114
- package/lib/runner/cdk-test-app.d.ts.map +1 -0
- package/lib/runner/cdk-test-app.js +584 -0
- package/lib/runner/engine.d.ts +2 -2
- package/lib/runner/engine.d.ts.map +1 -1
- package/lib/runner/engine.js +2 -2
- package/lib/runner/index.d.ts +1 -1
- package/lib/runner/index.d.ts.map +1 -1
- package/lib/runner/index.js +2 -2
- package/lib/runner/integ-test-runner.d.ts +36 -36
- package/lib/runner/integ-test-runner.d.ts.map +1 -1
- package/lib/runner/integ-test-runner.js +172 -235
- package/lib/runner/integ-test-suite.d.ts +6 -11
- package/lib/runner/integ-test-suite.d.ts.map +1 -1
- package/lib/runner/integ-test-suite.js +14 -20
- package/lib/runner/integration-tests.d.ts +12 -3
- package/lib/runner/integration-tests.d.ts.map +1 -1
- package/lib/runner/integration-tests.js +32 -8
- package/lib/runner/snapshot-test-runner.d.ts +19 -22
- package/lib/runner/snapshot-test-runner.d.ts.map +1 -1
- package/lib/runner/snapshot-test-runner.js +47 -75
- package/lib/workers/extract/extract_worker.d.ts.map +1 -1
- package/lib/workers/extract/extract_worker.js +65 -78
- package/lib/workers/extract/index.js +228344 -227587
- package/lib/workers/integ-test-worker.d.ts.map +1 -1
- package/lib/workers/integ-test-worker.js +3 -2
- package/package.json +5 -5
- package/lib/runner/cdk-integ-helper.d.ts.map +0 -1
- package/lib/runner/cdk-integ-helper.js +0 -525
|
@@ -13,7 +13,7 @@ export type TestSuiteType = 'test-suite' | 'legacy-test-suite';
|
|
|
13
13
|
* directory. For legacy test cases use LegacyIntegTestCases
|
|
14
14
|
*/
|
|
15
15
|
export declare class IntegTestSuite {
|
|
16
|
-
|
|
16
|
+
enableLookups: boolean;
|
|
17
17
|
readonly testSuite: TestSuite;
|
|
18
18
|
readonly synthContext?: {
|
|
19
19
|
[name: string]: string;
|
|
@@ -38,6 +38,10 @@ export declare class IntegTestSuite {
|
|
|
38
38
|
* Get a list of stacks in the test suite
|
|
39
39
|
*/
|
|
40
40
|
get stacks(): string[];
|
|
41
|
+
/**
|
|
42
|
+
* Save the integ manifest to a directory
|
|
43
|
+
*/
|
|
44
|
+
saveManifest(directory: string, context?: Record<string, any>): void;
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
43
47
|
* Options for a reading a legacy test case manifest
|
|
@@ -68,11 +72,6 @@ export interface LegacyTestCaseConfig {
|
|
|
68
72
|
* test cases, i.e. tests without a `integ.json`.
|
|
69
73
|
*/
|
|
70
74
|
export declare class LegacyIntegTestSuite extends IntegTestSuite {
|
|
71
|
-
readonly enableLookups: boolean;
|
|
72
|
-
readonly testSuite: TestSuite;
|
|
73
|
-
readonly synthContext?: {
|
|
74
|
-
[name: string]: string;
|
|
75
|
-
} | undefined;
|
|
76
75
|
/**
|
|
77
76
|
* Returns the single test stack to use.
|
|
78
77
|
*
|
|
@@ -119,10 +118,6 @@ export declare class LegacyIntegTestSuite extends IntegTestSuite {
|
|
|
119
118
|
readonly type: TestSuiteType;
|
|
120
119
|
constructor(enableLookups: boolean, testSuite: TestSuite, synthContext?: {
|
|
121
120
|
[name: string]: string;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Save the integ manifest to a directory
|
|
125
|
-
*/
|
|
126
|
-
saveManifest(directory: string, context?: Record<string, any>): void;
|
|
121
|
+
});
|
|
127
122
|
}
|
|
128
123
|
//# sourceMappingURL=integ-test-suite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integ-test-suite.d.ts","sourceRoot":"","sources":["integ-test-suite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAiB,MAAM,gCAAgC,CAAC;AAG3F,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUlE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"integ-test-suite.d.ts","sourceRoot":"","sources":["integ-test-suite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAiB,MAAM,gCAAgC,CAAC;AAG3F,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUlE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,cAAc;IAgBhB,aAAa,EAAE,OAAO;aACb,SAAS,EAAE,SAAS;aACpB,YAAY,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAjB3D;;OAEG;WACW,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IASpD,SAAgB,IAAI,EAAE,aAAa,CAAgB;gBAG1C,aAAa,EAAE,OAAO,EACb,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,YAAA;IAI3D;;OAEG;IACI,8BAA8B,IAAI,MAAM,EAAE;IAMjD;;OAEG;IACI,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAgBnE;;OAEG;IACH,IAAW,MAAM,IAAI,MAAM,EAAE,CAE5B;IAED;;OAEG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAS5E;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IACtD;;;;;;;;;;OAUG;WACiB,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;WAqC7E,gBAAgB,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAoBhF;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,SAAgB,IAAI,EAAE,aAAa,CAAuB;gBAGxD,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;CAI5C"}
|
|
@@ -98,6 +98,18 @@ class IntegTestSuite {
|
|
|
98
98
|
get stacks() {
|
|
99
99
|
return Object.values(this.testSuite).flatMap(testCase => testCase.stacks);
|
|
100
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Save the integ manifest to a directory
|
|
103
|
+
*/
|
|
104
|
+
saveManifest(directory, context) {
|
|
105
|
+
const manifest = {
|
|
106
|
+
version: cloud_assembly_schema_1.Manifest.version(),
|
|
107
|
+
testCases: this.testSuite,
|
|
108
|
+
synthContext: context,
|
|
109
|
+
enableLookups: this.enableLookups,
|
|
110
|
+
};
|
|
111
|
+
cloud_assembly_schema_1.Manifest.saveIntegManifest(manifest, osPath.join(directory, integ_manifest_1.IntegManifestReader.DEFAULT_FILENAME));
|
|
112
|
+
}
|
|
101
113
|
}
|
|
102
114
|
exports.IntegTestSuite = IntegTestSuite;
|
|
103
115
|
/**
|
|
@@ -105,9 +117,6 @@ exports.IntegTestSuite = IntegTestSuite;
|
|
|
105
117
|
* test cases, i.e. tests without a `integ.json`.
|
|
106
118
|
*/
|
|
107
119
|
class LegacyIntegTestSuite extends IntegTestSuite {
|
|
108
|
-
enableLookups;
|
|
109
|
-
testSuite;
|
|
110
|
-
synthContext;
|
|
111
120
|
/**
|
|
112
121
|
* Returns the single test stack to use.
|
|
113
122
|
*
|
|
@@ -215,23 +224,8 @@ class LegacyIntegTestSuite extends IntegTestSuite {
|
|
|
215
224
|
}
|
|
216
225
|
type = 'legacy-test-suite';
|
|
217
226
|
constructor(enableLookups, testSuite, synthContext) {
|
|
218
|
-
super(enableLookups, testSuite);
|
|
219
|
-
this.enableLookups = enableLookups;
|
|
220
|
-
this.testSuite = testSuite;
|
|
221
|
-
this.synthContext = synthContext;
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Save the integ manifest to a directory
|
|
225
|
-
*/
|
|
226
|
-
saveManifest(directory, context) {
|
|
227
|
-
const manifest = {
|
|
228
|
-
version: cloud_assembly_schema_1.Manifest.version(),
|
|
229
|
-
testCases: this.testSuite,
|
|
230
|
-
synthContext: context,
|
|
231
|
-
enableLookups: this.enableLookups,
|
|
232
|
-
};
|
|
233
|
-
cloud_assembly_schema_1.Manifest.saveIntegManifest(manifest, osPath.join(directory, integ_manifest_1.IntegManifestReader.DEFAULT_FILENAME));
|
|
227
|
+
super(enableLookups, testSuite, synthContext ?? {});
|
|
234
228
|
}
|
|
235
229
|
}
|
|
236
230
|
exports.LegacyIntegTestSuite = LegacyIntegTestSuite;
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC1zdWl0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3Qtc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBRS9CLDBFQUEwRDtBQUMxRCw2Q0FBK0I7QUFFL0IsNkRBQStEO0FBRS9ELE1BQU0sc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUM7QUFDaEQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0seUJBQXlCLEdBQUcscUJBQXFCLENBQUM7QUFDeEQsTUFBTSxtQkFBbUIsR0FBRyw4QkFBOEIsQ0FBQztBQUMzRCxNQUFNLHVCQUF1QixHQUFHLGdDQUFnQyxDQUFDO0FBQ2pFLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUM7QUFTdEQ7Ozs7R0FJRztBQUNILE1BQWEsY0FBYztJQWdCUDtJQUNBO0lBQ0E7SUFqQmxCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLG9DQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksY0FBYyxDQUN2QixNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQ3RCLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVlLElBQUksR0FBa0IsWUFBWSxDQUFDO0lBRW5ELFlBQ2tCLGFBQXNCLEVBQ3RCLFNBQW9CLEVBQ3BCLFlBQXlDO1FBRnpDLGtCQUFhLEdBQWIsYUFBYSxDQUFTO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsaUJBQVksR0FBWixZQUFZLENBQTZCO0lBRTNELENBQUM7SUFFRDs7T0FFRztJQUNJLDhCQUE4QjtRQUNuQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENB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QUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRWUsSUFBSSxHQUFrQixtQkFBbUIsQ0FBQztJQUUxRCxZQUNrQixhQUFzQixFQUN0QixTQUFvQixFQUNwQixZQUF5QztRQUV6RCxLQUFLLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBSmhCLGtCQUFhLEdBQWIsYUFBYSxDQUFTO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsaUJBQVksR0FBWixZQUFZLENBQTZCO0lBRzNELENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxTQUFpQixFQUFFLE9BQTZCO1FBQ2xFLE1BQU0sUUFBUSxHQUFrQjtZQUM5QixPQUFPLEVBQUUsZ0NBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNsQyxDQUFDO1FBQ0YsZ0NBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0NBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7Q0FDRjtBQTVJRCxvREE0SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvc1BhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdHlwZSB7IFRlc3RDYXNlLCBUZXN0T3B0aW9ucywgSW50ZWdNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdHlwZSB7IElDZGssIExpc3RPcHRpb25zIH0gZnJvbSAnLi4vZW5naW5lcy9jZGstaW50ZXJmYWNlJztcbmltcG9ydCB7IEludGVnTWFuaWZlc3RSZWFkZXIgfSBmcm9tICcuL3ByaXZhdGUvaW50ZWctbWFuaWZlc3QnO1xuXG5jb25zdCBDREtfSU5URUdfU1RBQ0tfUFJBR01BID0gJy8vLyAhY2RrLWludGVnJztcbmNvbnN0IFBSQUdNQV9QUkVGSVggPSAncHJhZ21hOic7XG5jb25zdCBTRVRfQ09OVEVYVF9QUkFHTUFfUFJFRklYID0gJ3ByYWdtYTpzZXQtY29udGV4dDonO1xuY29uc3QgVkVSSUZZX0FTU0VUX0hBU0hFUyA9ICdwcmFnbWE6aW5jbHVkZS1hc3NldHMtaGFzaGVzJztcbmNvbnN0IERJU0FCTEVfVVBEQVRFX1dPUktGTE9XID0gJ3ByYWdtYTpkaXNhYmxlLXVwZGF0ZS13b3JrZmxvdyc7XG5jb25zdCBFTkFCTEVfTE9PS1VQU19QUkFHTUEgPSAncHJhZ21hOmVuYWJsZS1sb29rdXBzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGludGVncmF0aW9uIHRlc3RcbiAqL1xuZXhwb3J0IHR5cGUgVGVzdFN1aXRlID0geyBbdGVzdE5hbWU6IHN0cmluZ106IFRlc3RDYXNlIH07XG5cbmV4cG9ydCB0eXBlIFRlc3RTdWl0ZVR5cGUgPSAndGVzdC1zdWl0ZScgfCAnbGVnYWN5LXRlc3Qtc3VpdGUnO1xuXG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3Igd29ya2luZyB3aXRoIEludGVncmF0aW9uIHRlc3RzXG4gKiBUaGlzIHJlcXVpcmVzIGFuIGBpbnRlZy5qc29uYCBmaWxlIGluIHRoZSBzbmFwc2hvdFxuICogZGlyZWN0b3J5LiBGb3IgbGVnYWN5IHRlc3QgY2FzZXMgdXNlIExlZ2FjeUludGVnVGVzdENhc2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ1Rlc3RTdWl0ZSB7XG4gIC8qKlxuICAgKiBMb2FkcyBpbnRlZyB0ZXN0cyBmcm9tIGEgc25hcHNob3QgZGlyZWN0b3J5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRoKHBhdGg6IHN0cmluZyk6IEludGVnVGVzdFN1aXRlIHtcbiAgICBjb25zdCByZWFkZXIgPSBJbnRlZ01hbmlmZXN0UmVhZGVyLmZyb21QYXRoKHBhdGgpO1xuICAgIHJldHVybiBuZXcgSW50ZWdUZXN0U3VpdGUoXG4gICAgICByZWFkZXIudGVzdHMuZW5hYmxlTG9va3VwcyxcbiAgICAgIHJlYWRlci50ZXN0cy50ZXN0Q2FzZXMsXG4gICAgICByZWFkZXIudGVzdHMuc3ludGhDb250ZXh0LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogVGVzdFN1aXRlVHlwZSA9ICd0ZXN0LXN1aXRlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZW5hYmxlTG9va3VwczogYm9vbGVhbixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVzdFN1aXRlOiBUZXN0U3VpdGUsXG4gICAgcHVibGljIHJlYWRvbmx5IHN5bnRoQ29udGV4dD86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9LFxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBzdGFja3MgdGhhdCBoYXZlIHN0YWNrVXBkYXRlV29ya2Zsb3cgZGlzYWJsZWRcbiAgICovXG4gIHB1YmxpYyBnZXRTdGFja3NXaXRob3V0VXBkYXRlV29ya2Zsb3coKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMudGVzdFN1aXRlKVxuICAgICAgLmZpbHRlcih0ZXN0Q2FzZSA9PiAhKHRlc3RDYXNlLnN0YWNrVXBkYXRlV29ya2Zsb3cgPz8gdHJ1ZSkpXG4gICAgICAuZmxhdE1hcCgodGVzdENhc2U6IFRlc3RDYXNlKSA9PiB0ZXN0Q2FzZS5zdGFja3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGVzdCBjYXNlIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gc3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXRPcHRpb25zRm9yU3RhY2soc3RhY2tJZDogc3RyaW5nKTogVGVzdE9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgIGZvciAoY29uc3QgdGVzdENhc2Ugb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnRlc3RTdWl0ZSA/PyB7fSkpIHtcbiAgICAgIGlmICh0ZXN0Q2FzZS5zdGFja3MuaW5jbHVkZXMoc3RhY2tJZCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBob29rczogdGVzdENhc2UuaG9va3MsXG4gICAgICAgICAgcmVnaW9uczogdGVzdENhc2UucmVnaW9ucyxcbiAgICAgICAgICBkaWZmQXNzZXRzOiB0ZXN0Q2FzZS5kaWZmQXNzZXRzID8/IGZhbHNlLFxuICAgICAgICAgIGFsbG93RGVzdHJveTogdGVzdENhc2UuYWxsb3dEZXN0cm95LFxuICAgICAgICAgIGNka0NvbW1hbmRPcHRpb25zOiB0ZXN0Q2FzZS5jZGtDb21tYW5kT3B0aW9ucyxcbiAgICAgICAgICBzdGFja1VwZGF0ZVdvcmtmbG93OiB0ZXN0Q2FzZS5zdGFja1VwZGF0ZVdvcmtmbG93ID8/IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiBzdGFja3MgaW4gdGhlIHRlc3Qgc3VpdGVcbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhY2tzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnRlc3RTdWl0ZSkuZmxhdE1hcCh0ZXN0Q2FzZSA9PiB0ZXN0Q2FzZS5zdGFja3MpO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSByZWFkaW5nIGEgbGVnYWN5IHRlc3QgY2FzZSBtYW5pZmVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeVRlc3RDYXNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlc3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyBgY2RrIGxpc3RgXG4gICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHN0YWNrc1xuICAgKiBpbiB0aGUgdGVzdCBjYXNlXG4gICAqL1xuICByZWFkb25seSBsaXN0T3B0aW9uczogTGlzdE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFuIGluc3RhbmNlIG9mIHRoZSBDREsgQ0xJIChlLmcuIENka0NsaVdyYXBwZXIpXG4gICAqL1xuICByZWFkb25seSBjZGs6IElDZGs7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IGZpbGVcbiAgICogaS5lLiBpbnRlZy50ZXN0LmpzXG4gICAqL1xuICByZWFkb25seSBpbnRlZ1NvdXJjZUZpbGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBjcmVhdGluZyBhbiBpbnRlZyBtYW5pZmVzdCBmb3IgbGVnYWN5XG4gKiB0ZXN0IGNhc2VzLCBpLmUuIHRlc3RzIHdpdGhvdXQgYSBgaW50ZWcuanNvbmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZSBleHRlbmRzIEludGVnVGVzdFN1aXRlIHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZSB0ZXN0IHN0YWNrIHRvIHVzZS5cbiAgICpcbiAgICogSWYgdGhlIHRlc3QgaGFzIGEgc2luZ2xlIHN0YWNrLCBpdCB3aWxsIGJlIGNob3Nlbi4gT3RoZXJ3aXNlIGEgcHJhZ21hIGlzIGV4cGVjdGVkIHdpdGhpbiB0aGVcbiAgICogdGVzdCBmaWxlIHRoZSBuYW1lIG9mIHRoZSBzdGFjazpcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogICAgLy8vICFjZGstaW50ZWcgPHN0YWNrLW5hbWU+XG4gICAqXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZyb21MZWdhY3koY29uZmlnOiBMZWdhY3lUZXN0Q2FzZUNvbmZpZyk6IFByb21pc2U8TGVnYWN5SW50ZWdUZXN0U3VpdGU+IHtcbiAgICBjb25zdCBwcmFnbWFzID0gdGhpcy5wcmFnbWFzKGNvbmZpZy5pbnRlZ1NvdXJjZUZpbGVQYXRoKTtcbiAgICBjb25zdCB0ZXN0czogVGVzdENhc2UgPSB7XG4gICAgICBzdGFja3M6IFtdLFxuICAgICAgZGlmZkFzc2V0czogcHJhZ21hcy5pbmNsdWRlcyhWRVJJRllfQVNTRVRfSEFTSEVTKSxcbiAgICAgIHN0YWNrVXBkYXRlV29ya2Zsb3c6ICFwcmFnbWFzLmluY2x1ZGVzKERJU0FCTEVfVVBEQVRFX1dPUktGTE9XKSxcbiAgICB9O1xuICAgIGNvbnN0IHByYWdtYSA9IHRoaXMucmVhZFN0YWNrUHJhZ21hKGNvbmZpZy5pbnRlZ1NvdXJjZUZpbGVQYXRoKTtcbiAgICBpZiAocHJhZ21hLmxlbmd0aCA+IDApIHtcbiAgICAgIHRlc3RzLnN0YWNrcy5wdXNoKC4uLnByYWdtYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IExpc3RPcHRpb25zID0ge1xuICAgICAgICAuLi5jb25maWcubGlzdE9wdGlvbnMsXG4gICAgICAgIG5vdGljZXM6IGZhbHNlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0YWNrcyA9IGF3YWl0IGNvbmZpZy5jZGsubGlzdChvcHRpb25zKTtcbiAgICAgIGlmIChzdGFja3MubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignXCJpbnRlZy1ydW5uZXJcIiBjYW4gb25seSBvcGVyYXRlIG9uIGFwcHMgd2l0aCBhIHNpbmdsZSBzdGFjay5cXG5cXG4nICtcbiAgICAgICAgICAnICBJZiB5b3VyIGFwcCBoYXMgbXVsdGlwbGUgc3RhY2tzLCBzcGVjaWZ5IHdoaWNoIHN0YWNrIHRvIHNlbGVjdCBieSBhZGRpbmcgdGhpcyB0byB5b3VyIHRlc3Qgc291cmNlOlxcblxcbicgK1xuICAgICAgICAgIGAgICAgICAke0NES19JTlRFR19TVEFDS19QUkFHTUF9IFNUQUNLIC4uLlxcblxcbmAgK1xuICAgICAgICAgIGAgIEF2YWlsYWJsZSBzdGFja3M6ICR7c3RhY2tzLmpvaW4oJyAnKX0gKHdpbGRjYXJkcyBhcmUgYWxzbyBzdXBwb3J0ZWQpXFxuYCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhY2tzLmxlbmd0aCA9PT0gMSAmJiBzdGFja3NbMF0gPT09ICcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3RhY2sgZm91bmQgZm9yIHRlc3QgJHtjb25maWcudGVzdE5hbWV9YCk7XG4gICAgICB9XG4gICAgICB0ZXN0cy5zdGFja3MucHVzaCguLi5zdGFja3MpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTGVnYWN5SW50ZWdUZXN0U3VpdGUoXG4gICAgICBwcmFnbWFzLmluY2x1ZGVzKEVOQUJMRV9MT09LVVBTX1BSQUdNQSksXG4gICAgICB7XG4gICAgICAgIFtjb25maWcudGVzdE5hbWVdOiB0ZXN0cyxcbiAgICAgIH0sXG4gICAgICBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZS5nZXRQcmFnbWFDb250ZXh0KGNvbmZpZy5pbnRlZ1NvdXJjZUZpbGVQYXRoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRQcmFnbWFDb250ZXh0KGludGVnU291cmNlRmlsZVBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IGN0eFByYWdtYUNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIC8vIGFwcGx5IGNvbnRleHQgZnJvbSBzZXQtY29udGV4dCBwcmFnbWFcbiAgICAvLyB1c2FnZTogcHJhZ21hOnNldC1jb250ZXh0OmtleT12YWx1ZVxuICAgIGNvbnN0IGN0eFByYWdtYXMgPSAodGhpcy5wcmFnbWFzKGludGVnU291cmNlRmlsZVBhdGgpKS5maWx0ZXIocCA9PiBwLnN0YXJ0c1dpdGgoU0VUX0NPTlRFWFRfUFJBR01BX1BSRUZJWCkpO1xuICAgIGZvciAoY29uc3QgcCBvZiBjdHhQcmFnbWFzKSB7XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbiA9IHAuc3Vic3RyaW5nKFNFVF9DT05URVhUX1BSQUdNQV9QUkVGSVgubGVuZ3RoKTtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGluc3RydWN0aW9uLnNwbGl0KCc9Jyk7XG4gICAgICBpZiAoa2V5ID09IG51bGwgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgXCJzZXQtY29udGV4dFwiIHByYWdtYSBzeW50YXguIGV4YW1wbGU6IFwicHJhZ21hOnNldC1jb250ZXh0OkBhd3MtY2RrL2NvcmU6bmV3U3R5bGVTdGFja1N5bnRoZXNpcz10cnVlXCIgZ290OiAke3B9YCk7XG4gICAgICB9XG5cbiAgICAgIGN0eFByYWdtYUNvbnRleHRba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY3R4UHJhZ21hQ29udGV4dCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHN0YWNrIG5hbWVzIGZyb20gdGhlIFwiIWNkay1pbnRlZ1wiIHByYWdtYS5cbiAgICpcbiAgICogRXZlcnkgd29yZCB0aGF0J3MgTk9UIHByZWZpeGVkIGJ5IFwicHJhZ21hOlwiIGlzIGNvbnNpZGVyZWQgYSBzdGFjayBuYW1lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiAgICAvLy8gIWNkay1pbnRlZyA8c3RhY2stbmFtZT5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRTdGFja1ByYWdtYShpbnRlZ1NvdXJjZUZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuICh0aGlzLnJlYWRJbnRlZ1ByYWdtYShpbnRlZ1NvdXJjZUZpbGVQYXRoKSkuZmlsdGVyKHAgPT4gIXAuc3RhcnRzV2l0aChQUkFHTUFfUFJFRklYKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBhcmJpdHJhcnkgY2RrLWludGVnIHByYWdtYSBkaXJlY3RpdmVzXG4gICAqXG4gICAqIFJlYWRzIHRoZSB0ZXN0IHNvdXJjZSBmaWxlIGFuZCBsb29rcyBmb3IgdGhlIFwiIWNkay1pbnRlZ1wiIHByYWdtYS4gSWYgaXQgZXhpc3RzLCByZXR1cm5zIGl0J3NcbiAgICogY29udGVudHMuIFRoaXMgYWxsb3dzIGludGVnIHRlc3RzIHRvIHN1cHBseSBjdXN0b20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byBcImNkayBkZXBsb3lcIiBhbmQgXCJjZGsgc3ludGhcIi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogICAgLy8vICFjZGstaW50ZWcgWy4uLl1cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRJbnRlZ1ByYWdtYShpbnRlZ1NvdXJjZUZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc291cmNlID0gZnMucmVhZEZpbGVTeW5jKGludGVnU291cmNlRmlsZVBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgY29uc3QgcHJhZ21hTGluZSA9IHNvdXJjZS5zcGxpdCgnXFxuJykuZmluZCh4ID0+IHguc3RhcnRzV2l0aChDREtfSU5URUdfU1RBQ0tfUFJBR01BICsgJyAnKSk7XG4gICAgaWYgKCFwcmFnbWFMaW5lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgYXJncyA9IHByYWdtYUxpbmUuc3Vic3RyaW5nKENES19JTlRFR19TVEFDS19QUkFHTUEubGVuZ3RoKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzeW50YXggZm9yIGNkay1pbnRlZyBwcmFnbWEuIFVzYWdlOiBcIiR7Q0RLX0lOVEVHX1NUQUNLX1BSQUdNQX0gW1NUQUNLXSBbcHJhZ21hOlBSQUdNQV0gWy4uLl1cImApO1xuICAgIH1cbiAgICByZXR1cm4gYXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG5vbi1zdGFjayBwcmFnbWFzXG4gICAqXG4gICAqIFRoZXNlIGFyZSBhbGwgcHJhZ21hcyB0aGF0IHN0YXJ0IHdpdGggXCJwcmFnbWE6XCIuXG4gICAqXG4gICAqIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbGwgcHJhZ21hcyB0aGF0IERPTidUIHN0YXJ0IHdpdGggdGhpc1xuICAgKiBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgdG8gYmUgc3RhY2sgbmFtZXMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwcmFnbWFzKGludGVnU291cmNlRmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gKHRoaXMucmVhZEludGVnUHJhZ21hKGludGVnU291cmNlRmlsZVBhdGgpKS5maWx0ZXIocCA9PiBwLnN0YXJ0c1dpdGgoUFJBR01BX1BSRUZJWCkpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IFRlc3RTdWl0ZVR5cGUgPSAnbGVnYWN5LXRlc3Qtc3VpdGUnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBlbmFibGVMb29rdXBzOiBib29sZWFuLFxuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0U3VpdGU6IFRlc3RTdWl0ZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3ludGhDb250ZXh0PzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICkge1xuICAgIHN1cGVyKGVuYWJsZUxvb2t1cHMsIHRlc3RTdWl0ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgaW50ZWcgbWFuaWZlc3QgdG8gYSBkaXJlY3RvcnlcbiAgICovXG4gIHB1YmxpYyBzYXZlTWFuaWZlc3QoZGlyZWN0b3J5OiBzdHJpbmcsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgY29uc3QgbWFuaWZlc3Q6IEludGVnTWFuaWZlc3QgPSB7XG4gICAgICB2ZXJzaW9uOiBNYW5pZmVzdC52ZXJzaW9uKCksXG4gICAgICB0ZXN0Q2FzZXM6IHRoaXMudGVzdFN1aXRlLFxuICAgICAgc3ludGhDb250ZXh0OiBjb250ZXh0LFxuICAgICAgZW5hYmxlTG9va3VwczogdGhpcy5lbmFibGVMb29rdXBzLFxuICAgIH07XG4gICAgTWFuaWZlc3Quc2F2ZUludGVnTWFuaWZlc3QobWFuaWZlc3QsIG9zUGF0aC5qb2luKGRpcmVjdG9yeSwgSW50ZWdNYW5pZmVzdFJlYWRlci5ERUZBVUxUX0ZJTEVOQU1FKSk7XG4gIH1cbn1cbiJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC1zdWl0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3Qtc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBRS9CLDBFQUEwRDtBQUMxRCw2Q0FBK0I7QUFFL0IsNkRBQStEO0FBRS9ELE1BQU0sc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUM7QUFDaEQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0seUJBQXlCLEdBQUcscUJBQXFCLENBQUM7QUFDeEQsTUFBTSxtQkFBbUIsR0FBRyw4QkFBOEIsQ0FBQztBQUMzRCxNQUFNLHVCQUF1QixHQUFHLGdDQUFnQyxDQUFDO0FBQ2pFLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUM7QUFTdEQ7Ozs7R0FJRztBQUNILE1BQWEsY0FBYztJQWdCaEI7SUFDUztJQUNBO0lBakJsQjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUNqQyxNQUFNLE1BQU0sR0FBRyxvQ0FBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFZSxJQUFJLEdBQWtCLFlBQVksQ0FBQztJQUVuRCxZQUNTLGFBQXNCLEVBQ2IsU0FBb0IsRUFDcEIsWUFBeUM7UUFGbEQsa0JBQWEsR0FBYixhQUFhLENBQVM7UUFDYixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGlCQUFZLEdBQVosWUFBWSxDQUE2QjtJQUUzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSw4QkFBOEI7UUFDbkMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFD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QUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25GLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxzQkFBc0IsaUNBQWlDLENBQUMsQ0FBQztRQUMzSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQTJCO1FBQ2hELE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVlLElBQUksR0FBa0IsbUJBQW1CLENBQUM7SUFFMUQsWUFDRSxhQUFzQixFQUN0QixTQUFvQixFQUNwQixZQUF5QztRQUV6QyxLQUFLLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBL0hELG9EQStIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zUGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB0eXBlIHsgVGVzdENhc2UsIFRlc3RPcHRpb25zLCBJbnRlZ01hbmlmZXN0IH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB0eXBlIHsgSUNkaywgTGlzdE9wdGlvbnMgfSBmcm9tICcuLi9lbmdpbmVzL2Nkay1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW50ZWdNYW5pZmVzdFJlYWRlciB9IGZyb20gJy4vcHJpdmF0ZS9pbnRlZy1tYW5pZmVzdCc7XG5cbmNvbnN0IENES19JTlRFR19TVEFDS19QUkFHTUEgPSAnLy8vICFjZGstaW50ZWcnO1xuY29uc3QgUFJBR01BX1BSRUZJWCA9ICdwcmFnbWE6JztcbmNvbnN0IFNFVF9DT05URVhUX1BSQUdNQV9QUkVGSVggPSAncHJhZ21hOnNldC1jb250ZXh0Oic7XG5jb25zdCBWRVJJRllfQVNTRVRfSEFTSEVTID0gJ3ByYWdtYTppbmNsdWRlLWFzc2V0cy1oYXNoZXMnO1xuY29uc3QgRElTQUJMRV9VUERBVEVfV09SS0ZMT1cgPSAncHJhZ21hOmRpc2FibGUtdXBkYXRlLXdvcmtmbG93JztcbmNvbnN0IEVOQUJMRV9MT09LVVBTX1BSQUdNQSA9ICdwcmFnbWE6ZW5hYmxlLWxvb2t1cHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gaW50ZWdyYXRpb24gdGVzdFxuICovXG5leHBvcnQgdHlwZSBUZXN0U3VpdGUgPSB7IFt0ZXN0TmFtZTogc3RyaW5nXTogVGVzdENhc2UgfTtcblxuZXhwb3J0IHR5cGUgVGVzdFN1aXRlVHlwZSA9ICd0ZXN0LXN1aXRlJyB8ICdsZWdhY3ktdGVzdC1zdWl0ZSc7XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciB3b3JraW5nIHdpdGggSW50ZWdyYXRpb24gdGVzdHNcbiAqIFRoaXMgcmVxdWlyZXMgYW4gYGludGVnLmpzb25gIGZpbGUgaW4gdGhlIHNuYXBzaG90XG4gKiBkaXJlY3RvcnkuIEZvciBsZWdhY3kgdGVzdCBjYXNlcyB1c2UgTGVnYWN5SW50ZWdUZXN0Q2FzZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVnVGVzdFN1aXRlIHtcbiAgLyoqXG4gICAqIExvYWRzIGludGVnIHRlc3RzIGZyb20gYSBzbmFwc2hvdCBkaXJlY3RvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBhdGgocGF0aDogc3RyaW5nKTogSW50ZWdUZXN0U3VpdGUge1xuICAgIGNvbnN0IHJlYWRlciA9IEludGVnTWFuaWZlc3RSZWFkZXIuZnJvbVBhdGgocGF0aCk7XG4gICAgcmV0dXJuIG5ldyBJbnRlZ1Rlc3RTdWl0ZShcbiAgICAgIHJlYWRlci50ZXN0cy5lbmFibGVMb29rdXBzLFxuICAgICAgcmVhZGVyLnRlc3RzLnRlc3RDYXNlcyxcbiAgICAgIHJlYWRlci50ZXN0cy5zeW50aENvbnRleHQsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlOiBUZXN0U3VpdGVUeXBlID0gJ3Rlc3Qtc3VpdGUnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbmFibGVMb29rdXBzOiBib29sZWFuLFxuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0U3VpdGU6IFRlc3RTdWl0ZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3ludGhDb250ZXh0PzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIHN0YWNrcyB0aGF0IGhhdmUgc3RhY2tVcGRhdGVXb3JrZmxvdyBkaXNhYmxlZFxuICAgKi9cbiAgcHVibGljIGdldFN0YWNrc1dpdGhvdXRVcGRhdGVXb3JrZmxvdygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy50ZXN0U3VpdGUpXG4gICAgICAuZmlsdGVyKHRlc3RDYXNlID0+ICEodGVzdENhc2Uuc3RhY2tVcGRhdGVXb3JrZmxvdyA/PyB0cnVlKSlcbiAgICAgIC5mbGF0TWFwKCh0ZXN0Q2FzZTogVGVzdENhc2UpID0+IHRlc3RDYXNlLnN0YWNrcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0ZXN0IGNhc2Ugb3B0aW9ucyBmb3IgYSBnaXZlbiBzdGFja1xuICAgKi9cbiAgcHVibGljIGdldE9wdGlvbnNGb3JTdGFjayhzdGFja0lkOiBzdHJpbmcpOiBUZXN0T3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCB0ZXN0Q2FzZSBvZiBPYmplY3QudmFsdWVzKHRoaXMudGVzdFN1aXRlID8/IHt9KSkge1xuICAgICAgaWYgKHRlc3RDYXNlLnN0YWNrcy5pbmNsdWRlcyhzdGFja0lkKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhvb2tzOiB0ZXN0Q2FzZS5ob29rcyxcbiAgICAgICAgICByZWdpb25zOiB0ZXN0Q2FzZS5yZWdpb25zLFxuICAgICAgICAgIGRpZmZBc3NldHM6IHRlc3RDYXNlLmRpZmZBc3NldHMgPz8gZmFsc2UsXG4gICAgICAgICAgYWxsb3dEZXN0cm95OiB0ZXN0Q2FzZS5hbGxvd0Rlc3Ryb3ksXG4gICAgICAgICAgY2RrQ29tbWFuZE9wdGlvbnM6IHRlc3RDYXNlLmNka0NvbW1hbmRPcHRpb25zLFxuICAgICAgICAgIHN0YWNrVXBkYXRlV29ya2Zsb3c6IHRlc3RDYXNlLnN0YWNrVXBkYXRlV29ya2Zsb3cgPz8gdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIHN0YWNrcyBpbiB0aGUgdGVzdCBzdWl0ZVxuICAgKi9cbiAgcHVibGljIGdldCBzdGFja3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMudGVzdFN1aXRlKS5mbGF0TWFwKHRlc3RDYXNlID0+IHRlc3RDYXNlLnN0YWNrcyk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgaW50ZWcgbWFuaWZlc3QgdG8gYSBkaXJlY3RvcnlcbiAgICovXG4gIHB1YmxpYyBzYXZlTWFuaWZlc3QoZGlyZWN0b3J5OiBzdHJpbmcsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgY29uc3QgbWFuaWZlc3Q6IEludGVnTWFuaWZlc3QgPSB7XG4gICAgICB2ZXJzaW9uOiBNYW5pZmVzdC52ZXJzaW9uKCksXG4gICAgICB0ZXN0Q2FzZXM6IHRoaXMudGVzdFN1aXRlLFxuICAgICAgc3ludGhDb250ZXh0OiBjb250ZXh0LFxuICAgICAgZW5hYmxlTG9va3VwczogdGhpcy5lbmFibGVMb29rdXBzLFxuICAgIH07XG4gICAgTWFuaWZlc3Quc2F2ZUludGVnTWFuaWZlc3QobWFuaWZlc3QsIG9zUGF0aC5qb2luKGRpcmVjdG9yeSwgSW50ZWdNYW5pZmVzdFJlYWRlci5ERUZBVUxUX0ZJTEVOQU1FKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIHJlYWRpbmcgYSBsZWdhY3kgdGVzdCBjYXNlIG1hbmlmZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5VGVzdENhc2VDb25maWcge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyB0byB1c2Ugd2hlbiBwZXJmb3JtaW5nIGBjZGsgbGlzdGBcbiAgICogVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgc3RhY2tzXG4gICAqIGluIHRoZSB0ZXN0IGNhc2VcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RPcHRpb25zOiBMaXN0T3B0aW9ucztcblxuICAvKipcbiAgICogQW4gaW5zdGFuY2Ugb2YgdGhlIENESyBDTEkgKGUuZy4gQ2RrQ2xpV3JhcHBlcilcbiAgICovXG4gIHJlYWRvbmx5IGNkazogSUNkaztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGludGVncmF0aW9uIHRlc3QgZmlsZVxuICAgKiBpLmUuIGludGVnLnRlc3QuanNcbiAgICovXG4gIHJlYWRvbmx5IGludGVnU291cmNlRmlsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIGNyZWF0aW5nIGFuIGludGVnIG1hbmlmZXN0IGZvciBsZWdhY3lcbiAqIHRlc3QgY2FzZXMsIGkuZS4gdGVzdHMgd2l0aG91dCBhIGBpbnRlZy5qc29uYC5cbiAqL1xuZXhwb3J0IGNsYXNzIExlZ2FjeUludGVnVGVzdFN1aXRlIGV4dGVuZHMgSW50ZWdUZXN0U3VpdGUge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xlIHRlc3Qgc3RhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBJZiB0aGUgdGVzdCBoYXMgYSBzaW5nbGUgc3RhY2ssIGl0IHdpbGwgYmUgY2hvc2VuLiBPdGhlcndpc2UgYSBwcmFnbWEgaXMgZXhwZWN0ZWQgd2l0aGluIHRoZVxuICAgKiB0ZXN0IGZpbGUgdGhlIG5hbWUgb2YgdGhlIHN0YWNrOlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiAgICAvLy8gIWNkay1pbnRlZyA8c3RhY2stbmFtZT5cbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgZnJvbUxlZ2FjeShjb25maWc6IExlZ2FjeVRlc3RDYXNlQ29uZmlnKTogUHJvbWlzZTxMZWdhY3lJbnRlZ1Rlc3RTdWl0ZT4ge1xuICAgIGNvbnN0IHByYWdtYXMgPSB0aGlzLnByYWdtYXMoY29uZmlnLmludGVnU291cmNlRmlsZVBhdGgpO1xuICAgIGNvbnN0IHRlc3RzOiBUZXN0Q2FzZSA9IHtcbiAgICAgIHN0YWNrczogW10sXG4gICAgICBkaWZmQXNzZXRzOiBwcmFnbWFzLmluY2x1ZGVzKFZFUklGWV9BU1NFVF9IQVNIRVMpLFxuICAgICAgc3RhY2tVcGRhdGVXb3JrZmxvdzogIXByYWdtYXMuaW5jbHVkZXMoRElTQUJMRV9VUERBVEVfV09SS0ZMT1cpLFxuICAgIH07XG4gICAgY29uc3QgcHJhZ21hID0gdGhpcy5yZWFkU3RhY2tQcmFnbWEoY29uZmlnLmludGVnU291cmNlRmlsZVBhdGgpO1xuICAgIGlmIChwcmFnbWEubGVuZ3RoID4gMCkge1xuICAgICAgdGVzdHMuc3RhY2tzLnB1c2goLi4ucHJhZ21hKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3B0aW9uczogTGlzdE9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmNvbmZpZy5saXN0T3B0aW9ucyxcbiAgICAgICAgbm90aWNlczogZmFsc2UsXG4gICAgICB9O1xuICAgICAgY29uc3Qgc3RhY2tzID0gYXdhaXQgY29uZmlnLmNkay5saXN0KG9wdGlvbnMpO1xuICAgICAgaWYgKHN0YWNrcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdcImludGVnLXJ1bm5lclwiIGNhbiBvbmx5IG9wZXJhdGUgb24gYXBwcyB3aXRoIGEgc2luZ2xlIHN0YWNrLlxcblxcbicgK1xuICAgICAgICAgICcgIElmIHlvdXIgYXBwIGhhcyBtdWx0aXBsZSBzdGFja3MsIHNwZWNpZnkgd2hpY2ggc3RhY2sgdG8gc2VsZWN0IGJ5IGFkZGluZyB0aGlzIHRvIHlvdXIgdGVzdCBzb3VyY2U6XFxuXFxuJyArXG4gICAgICAgICAgYCAgICAgICR7Q0RLX0lOVEVHX1NUQUNLX1BSQUdNQX0gU1RBQ0sgLi4uXFxuXFxuYCArXG4gICAgICAgICAgYCAgQXZhaWxhYmxlIHN0YWNrczogJHtzdGFja3Muam9pbignICcpfSAod2lsZGNhcmRzIGFyZSBhbHNvIHN1cHBvcnRlZClcXG5gKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFja3MubGVuZ3RoID09PSAxICYmIHN0YWNrc1swXSA9PT0gJycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdGFjayBmb3VuZCBmb3IgdGVzdCAke2NvbmZpZy50ZXN0TmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHRlc3RzLnN0YWNrcy5wdXNoKC4uLnN0YWNrcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZShcbiAgICAgIHByYWdtYXMuaW5jbHVkZXMoRU5BQkxFX0xPT0tVUFNfUFJBR01BKSxcbiAgICAgIHtcbiAgICAgICAgW2NvbmZpZy50ZXN0TmFtZV06IHRlc3RzLFxuICAgICAgfSxcbiAgICAgIExlZ2FjeUludGVnVGVzdFN1aXRlLmdldFByYWdtYUNvbnRleHQoY29uZmlnLmludGVnU291cmNlRmlsZVBhdGgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFByYWdtYUNvbnRleHQoaW50ZWdTb3VyY2VGaWxlUGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgY3R4UHJhZ21hQ29udGV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgLy8gYXBwbHkgY29udGV4dCBmcm9tIHNldC1jb250ZXh0IHByYWdtYVxuICAgIC8vIHVzYWdlOiBwcmFnbWE6c2V0LWNvbnRleHQ6a2V5PXZhbHVlXG4gICAgY29uc3QgY3R4UHJhZ21hcyA9ICh0aGlzLnByYWdtYXMoaW50ZWdTb3VyY2VGaWxlUGF0aCkpLmZpbHRlcihwID0+IHAuc3RhcnRzV2l0aChTRVRfQ09OVEVYVF9QUkFHTUFfUFJFRklYKSk7XG4gICAgZm9yIChjb25zdCBwIG9mIGN0eFByYWdtYXMpIHtcbiAgICAgIGNvbnN0IGluc3RydWN0aW9uID0gcC5zdWJzdHJpbmcoU0VUX0NPTlRFWFRfUFJBR01BX1BSRUZJWC5sZW5ndGgpO1xuICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gaW5zdHJ1Y3Rpb24uc3BsaXQoJz0nKTtcbiAgICAgIGlmIChrZXkgPT0gbnVsbCB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBcInNldC1jb250ZXh0XCIgcHJhZ21hIHN5bnRheC4gZXhhbXBsZTogXCJwcmFnbWE6c2V0LWNvbnRleHQ6QGF3cy1jZGsvY29yZTpuZXdTdHlsZVN0YWNrU3ludGhlc2lzPXRydWVcIiBnb3Q6ICR7cH1gKTtcbiAgICAgIH1cblxuICAgICAgY3R4UHJhZ21hQ29udGV4dFtrZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5jdHhQcmFnbWFDb250ZXh0LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgc3RhY2sgbmFtZXMgZnJvbSB0aGUgXCIhY2RrLWludGVnXCIgcHJhZ21hLlxuICAgKlxuICAgKiBFdmVyeSB3b3JkIHRoYXQncyBOT1QgcHJlZml4ZWQgYnkgXCJwcmFnbWE6XCIgaXMgY29uc2lkZXJlZCBhIHN0YWNrIG5hbWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqICAgIC8vLyAhY2RrLWludGVnIDxzdGFjay1uYW1lPlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZFN0YWNrUHJhZ21hKGludGVnU291cmNlRmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gKHRoaXMucmVhZEludGVnUHJhZ21hKGludGVnU291cmNlRmlsZVBhdGgpKS5maWx0ZXIocCA9PiAhcC5zdGFydHNXaXRoKFBSQUdNQV9QUkVGSVgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGFyYml0cmFyeSBjZGstaW50ZWcgcHJhZ21hIGRpcmVjdGl2ZXNcbiAgICpcbiAgICogUmVhZHMgdGhlIHRlc3Qgc291cmNlIGZpbGUgYW5kIGxvb2tzIGZvciB0aGUgXCIhY2RrLWludGVnXCIgcHJhZ21hLiBJZiBpdCBleGlzdHMsIHJldHVybnMgaXQnc1xuICAgKiBjb250ZW50cy4gVGhpcyBhbGxvd3MgaW50ZWcgdGVzdHMgdG8gc3VwcGx5IGN1c3RvbSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRvIFwiY2RrIGRlcGxveVwiIGFuZCBcImNkayBzeW50aFwiLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiAgICAvLy8gIWNkay1pbnRlZyBbLi4uXVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZEludGVnUHJhZ21hKGludGVnU291cmNlRmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzb3VyY2UgPSBmcy5yZWFkRmlsZVN5bmMoaW50ZWdTb3VyY2VGaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBjb25zdCBwcmFnbWFMaW5lID0gc291cmNlLnNwbGl0KCdcXG4nKS5maW5kKHggPT4geC5zdGFydHNXaXRoKENES19JTlRFR19TVEFDS19QUkFHTUEgKyAnICcpKTtcbiAgICBpZiAoIXByYWdtYUxpbmUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBhcmdzID0gcHJhZ21hTGluZS5zdWJzdHJpbmcoQ0RLX0lOVEVHX1NUQUNLX1BSQUdNQS5sZW5ndGgpLnRyaW0oKS5zcGxpdCgnICcpO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHN5bnRheCBmb3IgY2RrLWludGVnIHByYWdtYS4gVXNhZ2U6IFwiJHtDREtfSU5URUdfU1RBQ0tfUFJBR01BfSBbU1RBQ0tdIFtwcmFnbWE6UFJBR01BXSBbLi4uXVwiYCk7XG4gICAgfVxuICAgIHJldHVybiBhcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbm9uLXN0YWNrIHByYWdtYXNcbiAgICpcbiAgICogVGhlc2UgYXJlIGFsbCBwcmFnbWFzIHRoYXQgc3RhcnQgd2l0aCBcInByYWdtYTpcIi5cbiAgICpcbiAgICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGFsbCBwcmFnbWFzIHRoYXQgRE9OJ1Qgc3RhcnQgd2l0aCB0aGlzXG4gICAqIHN0cmluZyBhcmUgY29uc2lkZXJlZCB0byBiZSBzdGFjayBuYW1lcy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHByYWdtYXMoaW50ZWdTb3VyY2VGaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiAodGhpcy5yZWFkSW50ZWdQcmFnbWEoaW50ZWdTb3VyY2VGaWxlUGF0aCkpLmZpbHRlcihwID0+IHAuc3RhcnRzV2l0aChQUkFHTUFfUFJFRklYKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogVGVzdFN1aXRlVHlwZSA9ICdsZWdhY3ktdGVzdC1zdWl0ZSc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZW5hYmxlTG9va3VwczogYm9vbGVhbixcbiAgICB0ZXN0U3VpdGU6IFRlc3RTdWl0ZSxcbiAgICBzeW50aENvbnRleHQ/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgKSB7XG4gICAgc3VwZXIoZW5hYmxlTG9va3VwcywgdGVzdFN1aXRlLCBzeW50aENvbnRleHQgPz8ge30pO1xuICB9XG59XG4iXX0=
|
|
@@ -23,7 +23,7 @@ export interface IntegTestInfo {
|
|
|
23
23
|
*
|
|
24
24
|
* @default - test run command will be `node {filePath}`
|
|
25
25
|
*/
|
|
26
|
-
readonly
|
|
26
|
+
readonly appCommandTemplate?: string;
|
|
27
27
|
/**
|
|
28
28
|
* true if this test is running in watch mode
|
|
29
29
|
*
|
|
@@ -31,11 +31,16 @@ export interface IntegTestInfo {
|
|
|
31
31
|
*/
|
|
32
32
|
readonly watch?: boolean;
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Return the test name from the given IntegTestInfo
|
|
36
|
+
*/
|
|
37
|
+
export declare function testNameFromInfo(test: IntegTestInfo): string;
|
|
34
38
|
/**
|
|
35
39
|
* Derived information for IntegTests
|
|
36
40
|
*/
|
|
37
41
|
export declare class IntegTest {
|
|
38
42
|
readonly info: IntegTestInfo;
|
|
43
|
+
static hydrate(info: IntegTestInfo): IntegTest;
|
|
39
44
|
/**
|
|
40
45
|
* The name of the file to run
|
|
41
46
|
*
|
|
@@ -61,7 +66,7 @@ export declare class IntegTest {
|
|
|
61
66
|
/**
|
|
62
67
|
* Directory the test is in
|
|
63
68
|
*/
|
|
64
|
-
readonly
|
|
69
|
+
readonly workingDirectory: string;
|
|
65
70
|
/**
|
|
66
71
|
* Display name for the test
|
|
67
72
|
*
|
|
@@ -84,8 +89,12 @@ export declare class IntegTest {
|
|
|
84
89
|
*
|
|
85
90
|
* @default - test run command will be `node {filePath}`
|
|
86
91
|
*/
|
|
87
|
-
readonly
|
|
92
|
+
readonly appCommandTemplate: string;
|
|
93
|
+
readonly testDirectory: string;
|
|
94
|
+
readonly testBaseName: string;
|
|
88
95
|
constructor(info: IntegTestInfo);
|
|
96
|
+
specializeTemplate(template: string): string;
|
|
97
|
+
dehydrate(): IntegTestInfo;
|
|
89
98
|
/**
|
|
90
99
|
* Whether this test matches the user-given name
|
|
91
100
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-tests.d.ts","sourceRoot":"","sources":["integration-tests.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integration-tests.d.ts","sourceRoot":"","sources":["integration-tests.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAErC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,qBAAa,SAAS;aAmEQ,IAAI,EAAE,aAAa;WAlEjC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;IAIrD;;;;OAIG;IACH,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC;;;;OAIG;IACH,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAElD;;OAEG;IACH,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IAEzC;;;;OAIG;IACH,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAE3C;;OAEG;IACH,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IAEzC;;;;;;OAMG;IACH,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,SAAgB,WAAW,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAE3C;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAEpC,SAAgB,aAAa,EAAE,MAAM,CAAC;IAEtC,SAAgB,YAAY,EAAE,MAAM,CAAC;gBAET,IAAI,EAAE,aAAa;IAsBxC,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAMnC,SAAS;IAIhB;;;;;;;;;OASG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM;IAS3B;;;;;;OAMG;IACU,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAGjF;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KACzB,CAAC;CACH;AAaD;;GAEG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,MAAM;IAG9C;;OAEG;IACU,cAAc,CAAC,OAAO,EAAE;QACnC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8CxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IA4BnB;;;;;;OAMG;YACW,QAAQ;IAqBtB,OAAO,CAAC,0BAA0B;YAcpB,QAAQ;CAoBvB"}
|
|
@@ -34,15 +34,27 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.IntegrationTests = exports.IntegTest = void 0;
|
|
37
|
+
exports.testNameFromInfo = testNameFromInfo;
|
|
37
38
|
const path = __importStar(require("path"));
|
|
38
39
|
const fs = __importStar(require("fs-extra"));
|
|
40
|
+
const files_1 = require("../files");
|
|
39
41
|
const test_specific_context_1 = require("./private/test-specific-context");
|
|
40
42
|
const CDK_OUTDIR_PREFIX = 'cdk-integ.out';
|
|
43
|
+
/**
|
|
44
|
+
* Return the test name from the given IntegTestInfo
|
|
45
|
+
*/
|
|
46
|
+
function testNameFromInfo(test) {
|
|
47
|
+
const absPath = (0, files_1.absAwareJoin)(test.discoveryRoot, test.fileName);
|
|
48
|
+
return path.relative(test.discoveryRoot, absPath);
|
|
49
|
+
}
|
|
41
50
|
/**
|
|
42
51
|
* Derived information for IntegTests
|
|
43
52
|
*/
|
|
44
53
|
class IntegTest {
|
|
45
54
|
info;
|
|
55
|
+
static hydrate(info) {
|
|
56
|
+
return new IntegTest(info);
|
|
57
|
+
}
|
|
46
58
|
/**
|
|
47
59
|
* The name of the file to run
|
|
48
60
|
*
|
|
@@ -68,7 +80,7 @@ class IntegTest {
|
|
|
68
80
|
/**
|
|
69
81
|
* Directory the test is in
|
|
70
82
|
*/
|
|
71
|
-
|
|
83
|
+
workingDirectory;
|
|
72
84
|
/**
|
|
73
85
|
* Display name for the test
|
|
74
86
|
*
|
|
@@ -91,24 +103,36 @@ class IntegTest {
|
|
|
91
103
|
*
|
|
92
104
|
* @default - test run command will be `node {filePath}`
|
|
93
105
|
*/
|
|
94
|
-
|
|
106
|
+
appCommandTemplate;
|
|
107
|
+
testDirectory;
|
|
108
|
+
testBaseName;
|
|
95
109
|
constructor(info) {
|
|
96
110
|
this.info = info;
|
|
97
|
-
this.
|
|
111
|
+
this.appCommandTemplate = info.appCommandTemplate ?? 'node {filePath}';
|
|
98
112
|
// for consistency, always run the CDK apps under test from the CWD
|
|
99
113
|
// this is especially important for languages that use the CWD to discover assets
|
|
100
114
|
// @see https://github.com/aws/aws-cdk-cli/issues/638
|
|
101
|
-
this.
|
|
115
|
+
this.workingDirectory = process.cwd();
|
|
102
116
|
this.absoluteFileName = path.resolve(info.fileName);
|
|
103
|
-
this.fileName = path.relative(this.
|
|
117
|
+
this.fileName = path.relative(this.workingDirectory, info.fileName);
|
|
118
|
+
this.testDirectory = path.dirname(this.fileName);
|
|
119
|
+
this.testBaseName = path.basename(this.fileName);
|
|
104
120
|
this.discoveryRelativeFileName = path.relative(info.discoveryRoot, info.fileName);
|
|
105
121
|
// We treat the discovery root as the base for display names
|
|
106
122
|
// Looks either like `integ.mytest` or `package/test/integ.mytest`
|
|
107
123
|
const parsed = path.parse(this.fileName);
|
|
108
|
-
this.testName = path.join(path.relative(this.info.discoveryRoot, parsed.dir), parsed.name);
|
|
109
124
|
this.normalizedTestName = parsed.name;
|
|
110
125
|
this.snapshotDir = path.join(parsed.dir, `${parsed.base}.snapshot`);
|
|
111
126
|
this.temporaryOutputDir = path.join(parsed.dir, `${CDK_OUTDIR_PREFIX}.${parsed.base}.snapshot`);
|
|
127
|
+
this.testName = this.normalizedTestName;
|
|
128
|
+
}
|
|
129
|
+
specializeTemplate(template) {
|
|
130
|
+
return template
|
|
131
|
+
.replaceAll('{filePath}', this.fileName)
|
|
132
|
+
.replaceAll('{testBaseName}', this.testBaseName);
|
|
133
|
+
}
|
|
134
|
+
dehydrate() {
|
|
135
|
+
return this.info;
|
|
112
136
|
}
|
|
113
137
|
/**
|
|
114
138
|
* Whether this test matches the user-given name
|
|
@@ -270,7 +294,7 @@ class IntegrationTests {
|
|
|
270
294
|
.map(fileName => new IntegTest({
|
|
271
295
|
discoveryRoot: this.directory,
|
|
272
296
|
fileName,
|
|
273
|
-
appCommand,
|
|
297
|
+
appCommandTemplate: appCommand,
|
|
274
298
|
})));
|
|
275
299
|
const discoveredTests = ignoreUncompiledTypeScript ? this.filterUncompiledTypeScript(testCases) : testCases;
|
|
276
300
|
return this.filterTests(discoveredTests, options.tests, options.exclude, options.strict);
|
|
@@ -307,4 +331,4 @@ class IntegrationTests {
|
|
|
307
331
|
}
|
|
308
332
|
}
|
|
309
333
|
exports.IntegrationTests = IntegrationTests;
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZ3JhdGlvbi10ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLDJFQUEwRTtBQUUxRSxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztBQXVDMUM7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUEyRFE7SUExRDVCOzs7O09BSUc7SUFDYSxRQUFRLENBQVM7SUFFakM7Ozs7T0FJRztJQUNhLHlCQUF5QixDQUFTO0lBRWxEOztPQUVHO0lBQ2EsZ0JBQWdCLENBQVM7SUFFekM7Ozs7T0FJRztJQUNhLGtCQUFrQixDQUFTO0lBRTNDOztPQUVHO0lBQ2EsU0FBUyxDQUFTO0lBRWxDOzs7Ozs7T0FNRztJQUNhLFFBQVEsQ0FBUztJQUVqQzs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUVwQzs7T0FFRztJQUNhLGtCQUFrQixDQUFTO0lBRTNDOzs7OztPQUtHO0lBQ00sVUFBVSxDQUFTO0lBRTVCLFlBQTRCLElBQW1CO1FBQW5CLFNBQUksR0FBSixJQUFJLENBQWU7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLGlCQUFpQixDQUFDO1FBRXZELG1FQUFtRTtRQUNuRSxpRkFBaUY7UUFDakYscURBQXFEO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLHlCQUF5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QUVoQyxLQUFLLFVBQVUsT0FBTyxDQUFDLEdBQVc7WUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDeEIsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQXhMRCw0Q0F3TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgZmluZFRlc3RTcGVjaWZpY0NvbnRleHQgfSBmcm9tICcuL3ByaXZhdGUvdGVzdC1zcGVjaWZpYy1jb250ZXh0JztcblxuY29uc3QgQ0RLX09VVERJUl9QUkVGSVggPSAnY2RrLWludGVnLm91dCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBpbnRlZ3JhdGlvbiB0ZXN0XG4gKlxuICogVGhpcyB0eXBlIGlzIGEgZGF0YS1vbmx5IHN0cnVjdHVyZSwgc28gaXQgY2FuIHRyaXZpYWxseSBiZSBwYXNzZWQgdG8gd29ya2Vycy5cbiAqIERlcml2ZWQgYXR0cmlidXRlcyBhcmUgY2FsY3VsYXRlZCB1c2luZyB0aGUgYEludGVnVGVzdGAgY2xhc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdUZXN0SW5mbyB7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBmaWxlIHRvIHJ1blxuICAgKlxuICAgKiBQYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJvb3QgZGlyZWN0b3J5IHdlIGRpc2NvdmVyZWQgdGhpcyB0ZXN0IGZyb21cbiAgICpcbiAgICogUGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2NvdmVyeVJvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENMSSBjb21tYW5kIHVzZWQgdG8gcnVuIHRoaXMgdGVzdC5cbiAgICogSWYgaXQgY29udGFpbnMge2ZpbGVQYXRofSwgdGhlIHRlc3QgZmlsZSBuYW1lcyB3aWxsIGJlIHN1YnN0aXR1dGVkIGF0IHRoYXQgcGxhY2UgaW4gdGhlIGNvbW1hbmQgZm9yIGVhY2ggcnVuLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRlc3QgcnVuIGNvbW1hbmQgd2lsbCBiZSBgbm9kZSB7ZmlsZVBhdGh9YFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwQ29tbWFuZD86IHN0cmluZztcblxuICAvKipcbiAgICogdHJ1ZSBpZiB0aGlzIHRlc3QgaXMgcnVubmluZyBpbiB3YXRjaCBtb2RlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVyaXZlZCBpbmZvcm1hdGlvbiBmb3IgSW50ZWdUZXN0c1xuICovXG5leHBvcnQgY2xhc3MgSW50ZWdUZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHJ1blxuICAgKlxuICAgKiBQYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIGZpbGUgdG8gcnVuXG4gICAqXG4gICAqIFJlbGF0aXZlIGZyb20gdGhlIFwiZGlzY292ZXJ5IHJvb3RcIi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaXNjb3ZlcnlSZWxhdGl2ZUZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBmaWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWJzb2x1dGVGaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbm9ybWFsaXplZCBuYW1lIG9mIHRoZSB0ZXN0LiBUaGlzIG5hbWVcbiAgICogd2lsbCBiZSB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIHdoYXQgZGlyZWN0b3J5IHRoZSB0b29sXG4gICAqIGlzIHJ1biBmcm9tLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vcm1hbGl6ZWRUZXN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXJlY3RvcnkgdGhlIHRlc3QgaXMgaW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciB0aGUgdGVzdFxuICAgKlxuICAgKiBEZXBlbmRzIG9uIHRoZSBkaXNjb3ZlcnkgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBMb29rcyBsaWtlIGBpbnRlZy5teXRlc3RgIG9yIGBwYWNrYWdlL3Rlc3QvaW50ZWcubXl0ZXN0YC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRoIG9mIHRoZSBzbmFwc2hvdCBkaXJlY3RvcnkgZm9yIHRoaXMgdGVzdFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90RGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIHRlbXBvcmFyeSBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGlzIHRlc3RcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZW1wb3JhcnlPdXRwdXREaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENMSSBjb21tYW5kIHVzZWQgdG8gcnVuIHRoaXMgdGVzdC5cbiAgICogSWYgaXQgY29udGFpbnMge2ZpbGVQYXRofSwgdGhlIHRlc3QgZmlsZSBuYW1lcyB3aWxsIGJlIHN1YnN0aXR1dGVkIGF0IHRoYXQgcGxhY2UgaW4gdGhlIGNvbW1hbmQgZm9yIGVhY2ggcnVuLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRlc3QgcnVuIGNvbW1hbmQgd2lsbCBiZSBgbm9kZSB7ZmlsZVBhdGh9YFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwQ29tbWFuZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpbmZvOiBJbnRlZ1Rlc3RJbmZvKSB7XG4gICAgdGhpcy5hcHBDb21tYW5kID0gaW5mby5hcHBDb21tYW5kID8/ICdub2RlIHtmaWxlUGF0aH0nO1xuXG4gICAgLy8gZm9yIGNvbnNpc3RlbmN5LCBhbHdheXMgcnVuIHRoZSBDREsgYXBwcyB1bmRlciB0ZXN0IGZyb20gdGhlIENXRFxuICAgIC8vIHRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIGxhbmd1YWdlcyB0aGF0IHVzZSB0aGUgQ1dEIHRvIGRpc2NvdmVyIGFzc2V0c1xuICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS9pc3N1ZXMvNjM4XG4gICAgdGhpcy5kaXJlY3RvcnkgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIHRoaXMuYWJzb2x1dGVGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShpbmZvLmZpbGVOYW1lKTtcbiAgICB0aGlzLmZpbGVOYW1lID0gcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgaW5mby5maWxlTmFtZSk7XG4gICAgdGhpcy5kaXNjb3ZlcnlSZWxhdGl2ZUZpbGVOYW1lID0gcGF0aC5yZWxhdGl2ZShpbmZvLmRpc2NvdmVyeVJvb3QsIGluZm8uZmlsZU5hbWUpO1xuXG4gICAgLy8gV2UgdHJlYXQgdGhlIGRpc2NvdmVyeSByb290IGFzIHRoZSBiYXNlIGZvciBkaXNwbGF5IG5hbWVzXG4gICAgLy8gTG9va3MgZWl0aGVyIGxpa2UgYGludGVnLm15dGVzdGAgb3IgYHBhY2thZ2UvdGVzdC9pbnRlZy5teXRlc3RgXG4gICAgY29uc3QgcGFyc2VkID0gcGF0aC5wYXJzZSh0aGlzLmZpbGVOYW1lKTtcbiAgICB0aGlzLnRlc3ROYW1lID0gcGF0aC5qb2luKHBhdGgucmVsYXRpdmUodGhpcy5pbmZvLmRpc2NvdmVyeVJvb3QsIHBhcnNlZC5kaXIpLCBwYXJzZWQubmFtZSk7XG4gICAgdGhpcy5ub3JtYWxpemVkVGVzdE5hbWUgPSBwYXJzZWQubmFtZTtcbiAgICB0aGlzLnNuYXBzaG90RGlyID0gcGF0aC5qb2luKHBhcnNlZC5kaXIsIGAke3BhcnNlZC5iYXNlfS5zbmFwc2hvdGApO1xuICAgIHRoaXMudGVtcG9yYXJ5T3V0cHV0RGlyID0gcGF0aC5qb2luKHBhcnNlZC5kaXIsIGAke0NES19PVVRESVJfUFJFRklYfS4ke3BhcnNlZC5iYXNlfS5zbmFwc2hvdGApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItZ2l2ZW4gbmFtZVxuICAgKlxuICAgKiBXZSBhcmUgdmVyeSBsZW5pZW50IGhlcmUuIEEgbmFtZSBtYXRjaGVzIGlmIGl0IG1hdGNoZXM6XG4gICAqXG4gICAqIC0gVGhlIENXRC1yZWxhdGl2ZSBmaWxlbmFtZVxuICAgKiAtIFRoZSBkaXNjb3Zlcnkgcm9vdC1yZWxhdGl2ZSBmaWxlbmFtZVxuICAgKiAtIFRoZSBzdWl0ZSBuYW1lXG4gICAqIC0gVGhlIGFic29sdXRlIGZpbGVuYW1lXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5maWxlTmFtZSxcbiAgICAgIHRoaXMuZGlzY292ZXJ5UmVsYXRpdmVGaWxlTmFtZSxcbiAgICAgIHRoaXMudGVzdE5hbWUsXG4gICAgICB0aGlzLmFic29sdXRlRmlsZU5hbWUsXG4gICAgXS5pbmNsdWRlcyhuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIGEgdGVzdC1zcGVjaWZpYyBjb250ZXh0IGZpbGUgYW5kIHJldHVybiBpdHMgY29udGVudHMgaWYgaXQgZXhpc3RzLlxuICAgKlxuICAgKiBJZiBgdW5kZWZpbmVkYCwgbm8gdGVzdC1zcGVjaWZpYyBjb250ZXh0IGNvdWxkIGJlIGZvdW5kLiBUZXN0LXNwZWNpZmljIGNvbnRleHRcbiAgICogd2lsbCBiZSB0YWtlbiBmcm9tIGVpdGhlciBgaW50ZWcuY29udGV4dC5qc29uYCBpZiBmb3VuZCwgb3Igb3RoZXJ3aXNlXG4gICAqIGBjZGsuanNvbiNjb250ZXh0YCBpZiBub3QgZm91bmQsIHVwc3RyZWFtIGZyb20gdGhlIHRlc3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdGVzdFNwZWNpZmljQ29udGV4dCgpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGZpbmRUZXN0U3BlY2lmaWNDb250ZXh0KHBhdGguZGlybmFtZSh0aGlzLmZpbGVOYW1lKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgaG93IGludGVncmF0aW9uIHRlc3QgZmlsZXMgYXJlIGRpc2NvdmVyZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblRlc3RzRGlzY292ZXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlIHRoZW4gdGhlIGxpc3Qgb2YgdGVzdHNcbiAgICogcHJvdmlkZWQgd2lsbCBiZSBleGNsdWRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUsIHRocm93IGFuIGVycm9yIGlmIGFueSBzcGVjaWZpZWQgdGVzdHMgYXJlIG5vdCBmb3VuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCBvZiB0ZXN0cyB0byBpbmNsdWRlIChvciBleGNsdWRlIGlmIGBleGNsdWRlPXRydWVgKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCBtYXRjaGVkIGZpbGVzXG4gICAqL1xuICByZWFkb25seSB0ZXN0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBvZiB0aGUgYXBwIGNvbW1hbmRzIHRvIHJ1biBpbnRlZ3JhdGlvbiB0ZXN0cyB3aXRoLFxuICAgKiBhbmQgdGhlIHJlZ2V4IHBhdHRlcm5zIG1hdGNoaW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IGZpbGVzIGVhY2ggYXBwIGNvbW1hbmQuXG4gICAqXG4gICAqIElmIHRoZSBhcHAgY29tbWFuZCBjb250YWlucyB7ZmlsZVBhdGh9LCB0aGUgdGVzdCBmaWxlIG5hbWVzIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYXQgdGhhdCBwbGFjZSBpbiB0aGUgY29tbWFuZCBmb3IgZWFjaCBydW4uXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q2FzZXM6IHtcbiAgICBbYXBwOiBzdHJpbmddOiBzdHJpbmdbXTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBQeXRob24gZXhlY3V0YWJsZSBmb3IgdGhlIGN1cnJlbnQgT1NcbiAqL1xuZnVuY3Rpb24gcHl0aG9uRXhlY3V0YWJsZSgpIHtcbiAgbGV0IHB5dGhvbiA9ICdweXRob24zJztcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICBweXRob24gPSAncHl0aG9uJztcbiAgfVxuICByZXR1cm4gcHl0aG9uO1xufVxuXG4vKipcbiAqIERpc2NvdmVyIGludGVncmF0aW9uIHRlc3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ3JhdGlvblRlc3RzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZykge1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbnRlZ3JhdGlvbiB0ZXN0cyBkaXNjb3Zlcnkgb3B0aW9ucyBmcm9tIENMSSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZnJvbUNsaU9wdGlvbnMob3B0aW9uczoge1xuICAgIGFwcD86IHN0cmluZztcbiAgICBleGNsdWRlPzogYm9vbGVhbjtcbiAgICBsYW5ndWFnZT86IHN0cmluZ1tdO1xuICAgIHRlc3RSZWdleD86IHN0cmluZ1tdO1xuICAgIHRlc3RzPzogc3RyaW5nW107XG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8SW50ZWdUZXN0W10+IHtcbiAgICBjb25zdCBiYXNlT3B0aW9ucyA9IHtcbiAgICAgIHRlc3RzOiBvcHRpb25zLnRlc3RzLFxuICAgICAgZXhjbHVkZTogb3B0aW9ucy5leGNsdWRlLFxuICAgICAgc3RyaWN0OiBvcHRpb25zLnN0cmljdCxcbiAgICB9O1xuXG4gICAgLy8gRXhwbGljaXRseSBzZXQgYm90aCwgYXBwIGFuZCB0ZXN0LXJlZ2V4XG4gICAgaWYgKG9wdGlvbnMuYXBwICYmIG9wdGlvbnMudGVzdFJlZ2V4KSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNjb3Zlcih7XG4gICAgICAgIHRlc3RDYXNlczoge1xuICAgICAgICAgIFtvcHRpb25zLmFwcF06IG9wdGlvbnMudGVzdFJlZ2V4LFxuICAgICAgICB9LFxuICAgICAgICAuLi5iYXNlT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVzZSB0aGUgc2VsZWN0ZWQgcHJlc2V0c1xuICAgIGlmICghb3B0aW9ucy5hcHAgJiYgIW9wdGlvbnMudGVzdFJlZ2V4KSB7XG4gICAgICAvLyBPbmx5IGNhc2Ugd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMsIGkuZS4gdGhlIG9ubHkgdGltZSB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBzcGVjaWFsIGNhc2VcbiAgICAgIGNvbnN0IGlnbm9yZVVuY29tcGlsZWRUeXBlU2NyaXB0ID0gb3B0aW9ucy5sYW5ndWFnZT8uaW5jbHVkZXMoJ2phdmFzY3JpcHQnKSAmJiBvcHRpb25zLmxhbmd1YWdlPy5pbmNsdWRlcygndHlwZXNjcmlwdCcpO1xuXG4gICAgICByZXR1cm4gdGhpcy5kaXNjb3Zlcih7XG4gICAgICAgIHRlc3RDYXNlczogdGhpcy5nZXRMYW5ndWFnZVByZXNldHMob3B0aW9ucy5sYW5ndWFnZSksXG4gICAgICAgIC4uLmJhc2VPcHRpb25zLFxuICAgICAgfSwgaWdub3JlVW5jb21waWxlZFR5cGVTY3JpcHQpO1xuICAgIH1cblxuICAgIC8vIE9ubHkgb25lIG9mIGFwcCBvciB0ZXN0LXJlZ2V4IGlzIHNldCwgd2l0aCBhIHNpbmdsZSBwcmVzZXQgc2VsZWN0ZWRcbiAgICAvLyA9PiBvdmVycmlkZSBlaXRoZXIgYXBwIG9yIHRlc3QtcmVnZXhcbiAgICBpZiAob3B0aW9ucy5sYW5ndWFnZT8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBbcHJlc2V0QXBwLCBwcmVzZXRUZXN0UmVnZXhdID0gdGhpcy5nZXRMYW5ndWFnZVByZXNldChvcHRpb25zLmxhbmd1YWdlWzBdKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc2NvdmVyKHtcbiAgICAgICAgdGVzdENhc2VzOiB7XG4gICAgICAgICAgW29wdGlvbnMuYXBwID8/IHByZXNldEFwcF06IG9wdGlvbnMudGVzdFJlZ2V4ID8/IHByZXNldFRlc3RSZWdleCxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPbmx5IG9uZSBvZiBhcHAgb3IgdGVzdC1yZWdleCBpcyBzZXQsIHdpdGggbXVsdGlwbGUgcHJlc2V0c1xuICAgIC8vID0+IGltcG9zc2libGUgdG8gcmVzb2x2ZVxuICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuYXBwID8gJy0tYXBwJyA6ICctLXRlc3QtcmVnZXgnO1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBhIHNpbmdsZSBcIi0tbGFuZ3VhZ2VcIiBjYW4gYmUgdXNlZCB3aXRoIFwiJHtvcHRpb259XCIuIEFsdGVybmF0aXZlbHkgcHJvdmlkZSBib3RoIFwiLS1hcHBcIiBhbmQgXCItLXRlc3QtcmVnZXhcIiB0byBmdWxseSBjdXN0b21pemUgdGhlIGNvbmZpZ3VyYXRpb24uYCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIGEgbGFuZ3VhZ2VcbiAgICovXG4gIHByaXZhdGUgZ2V0TGFuZ3VhZ2VQcmVzZXQobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IGxhbmd1YWdlUHJlc2V0czoge1xuICAgICAgW2xhbmd1YWdlOiBzdHJpbmddOiBbc3RyaW5nLCBzdHJpbmdbXV07XG4gICAgfSA9IHtcbiAgICAgIGphdmFzY3JpcHQ6IFsnbm9kZSB7ZmlsZVBhdGh9JywgWydeaW50ZWdcXFxcLi4qXFxcXC5qcyQnXV0sXG4gICAgICB0eXBlc2NyaXB0OiBbJ25vZGUgLXIgdHMtbm9kZS9yZWdpc3RlciB7ZmlsZVBhdGh9JywgWydeaW50ZWdcXFxcLig/IS4qXFxcXC5kXFxcXC50cyQpLipcXFxcLnRzJCddXSxcbiAgICAgIHB5dGhvbjogW2Ake3B5dGhvbkV4ZWN1dGFibGUoKX0ge2ZpbGVQYXRofWAsIFsnXmludGVnXy4qXFxcXC5weSQnXV0sXG4gICAgICBnbzogWydnbyBydW4ge2ZpbGVQYXRofScsIFsnXmludGVnXy4qXFxcXC5nbyQnXV0sXG4gICAgfTtcblxuICAgIHJldHVybiBsYW5ndWFnZVByZXNldHNbbGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29uZmlnIGZvciBhbGwgc2VsZWN0ZWQgbGFuZ3VhZ2VzXG4gICAqL1xuICBwcml2YXRlIGdldExhbmd1YWdlUHJlc2V0cyhsYW5ndWFnZXM6IHN0cmluZ1tdID0gW10pIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgbGFuZ3VhZ2VzXG4gICAgICAgIC5tYXAobGFuZ3VhZ2UgPT4gdGhpcy5nZXRMYW5ndWFnZVByZXNldChsYW5ndWFnZSkpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbiksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdXNlciBwcm92aWRlcyBhIGxpc3Qgb2YgdGVzdHMsIHRoZXNlIGNhbiBlaXRoZXIgYmUgYSBsaXN0IG9mIHRlc3RzIHRvIGluY2x1ZGUgb3IgYSBsaXN0IG9mIHRlc3RzIHRvIGV4Y2x1ZGUuXG4gICAqXG4gICAqIC0gSWYgaXQgaXMgYSBsaXN0IG9mIHRlc3RzIHRvIGluY2x1ZGUgdGhlbiB3ZSBkaXNjb3ZlciBhbGwgYXZhaWxhYmxlIHRlc3RzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaGF2ZSBwcm92aWRlZCB2YWxpZCB0ZXN0cy5cbiAgICogICBJZiB0aGV5IGhhdmUgcHJvdmlkZWQgYSB0ZXN0IG5hbWUgdGhhdCB3ZSBkb24ndCBmaW5kLCB0aGVuIHdlIHdyaXRlIG91dCB0aGF0IGVycm9yIG1lc3NhZ2UuXG4gICAqIC0gSWYgaXQgaXMgYSBsaXN0IG9mIHRlc3RzIHRvIGV4Y2x1ZGUsIHRoZW4gd2UgZGlzY292ZXIgYWxsIGF2YWlsYWJsZSB0ZXN0cyBhbmQgZmlsdGVyIG91dCB0aGUgdGVzdHMgdGhhdCB3ZXJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJUZXN0cyhkaXNjb3ZlcmVkVGVzdHM6IEludGVnVGVzdFtdLCByZXF1ZXN0ZWRUZXN0cz86IHN0cmluZ1tdLCBleGNsdWRlPzogYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbik6IEludGVnVGVzdFtdIHtcbiAgICBpZiAoIXJlcXVlc3RlZFRlc3RzKSB7XG4gICAgICByZXR1cm4gZGlzY292ZXJlZFRlc3RzO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFRlc3RzID0gZGlzY292ZXJlZFRlc3RzLmZpbHRlcih0ID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSByZXF1ZXN0ZWRUZXN0cy5zb21lKHBhdHRlcm4gPT4gdC5tYXRjaGVzKHBhdHRlcm4pKTtcbiAgICAgIHJldHVybiBtYXRjaGVzICE9PSAhIWV4Y2x1ZGU7IC8vIExvb2tzIHdlaXJkIGJ1dCBpcyBlcXVhbCB0byAobWF0Y2hlcyAmJiAhZXhjbHVkZSkgfHwgKCFtYXRjaGVzICYmIGV4Y2x1ZGUpXG4gICAgfSk7XG5cbiAgICAvLyBJZiBub3QgZXhjbHVkaW5nLCBhbGwgcGF0dGVybnMgbXVzdCBoYXZlIG1hdGNoZWQgYXQgbGVhc3Qgb25lIHRlc3RcbiAgICBpZiAoIWV4Y2x1ZGUpIHtcbiAgICAgIGNvbnN0IHVubWF0Y2hlZFBhdHRlcm5zID0gcmVxdWVzdGVkVGVzdHMuZmlsdGVyKHBhdHRlcm4gPT4gIWRpc2NvdmVyZWRUZXN0cy5zb21lKHQgPT4gdC5tYXRjaGVzKHBhdHRlcm4pKSk7XG4gICAgICBmb3IgKGNvbnN0IHVubWF0Y2hlZCBvZiB1bm1hdGNoZWRQYXR0ZXJucykge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgTm8gc3VjaCBpbnRlZyB0ZXN0OiAke3VubWF0Y2hlZH1cXG5gKTtcbiAgICAgIH1cbiAgICAgIGlmICh1bm1hdGNoZWRQYXR0ZXJucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBBdmFpbGFibGUgdGVzdHM6ICR7ZGlzY292ZXJlZFRlc3RzLm1hcCh0ID0+IHQuZGlzY292ZXJ5UmVsYXRpdmVGaWxlTmFtZSkuam9pbignICcpfVxcbmApO1xuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpY3QgbW9kZTogJHt1bm1hdGNoZWRQYXR0ZXJucy5sZW5ndGh9IHRlc3Qocykgbm90IGZvdW5kOiAke3VubWF0Y2hlZFBhdHRlcm5zLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhbGxUZXN0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhbiBvcHRpb25hbCBsaXN0IG9mIHRlc3RzIHRvIGxvb2sgZm9yLCBvdGhlcndpc2VcbiAgICogaXQgd2lsbCBsb29rIGZvciBhbGwgdGVzdHMgZnJvbSB0aGUgZGlyZWN0b3J5XG4gICAqXG4gICAqIEBwYXJhbSB0ZXN0cyAtIFRlc3RzIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSwgdW5kZWZpbmVkIG1lYW5zIGluY2x1ZGUgYWxsIHRlc3RzLlxuICAgKiBAcGFyYW0gZXhjbHVkZSAtIFdoZXRoZXIgdGhlICd0ZXN0cycgbGlzdCBpcyBpbmNsdXNpdmUgb3IgZXhjbHVzaXZlIChpbmNsdXNpdmUgYnkgZGVmYXVsdCkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGRpc2NvdmVyKG9wdGlvbnM6IEludGVncmF0aW9uVGVzdHNEaXNjb3ZlcnlPcHRpb25zLCBpZ25vcmVVbmNvbXBpbGVkVHlwZVNjcmlwdDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxJbnRlZ1Rlc3RbXT4ge1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgdGhpcy5yZWFkVHJlZSgpO1xuXG4gICAgY29uc3QgdGVzdENhc2VzID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucy50ZXN0Q2FzZXMpXG4gICAgICAuZmxhdE1hcCgoW2FwcENvbW1hbmQsIHBhdHRlcm5zXSkgPT4gZmlsZXNcbiAgICAgICAgLmZpbHRlcihmaWxlTmFtZSA9PiBwYXR0ZXJucy5zb21lKChwYXR0ZXJuKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KGZpbGVOYW1lKSB8fCByZWdleC50ZXN0KHBhdGguYmFzZW5hbWUoZmlsZU5hbWUpKTtcbiAgICAgICAgfSkpXG4gICAgICAgIC5tYXAoZmlsZU5hbWUgPT4gbmV3IEludGVnVGVzdCh7XG4gICAgICAgICAgZGlzY292ZXJ5Um9vdDogdGhpcy5kaXJlY3RvcnksXG4gICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgYXBwQ29tbWFuZCxcbiAgICAgICAgfSkpLFxuICAgICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWRUZXN0cyA9IGlnbm9yZVVuY29tcGlsZWRUeXBlU2NyaXB0ID8gdGhpcy5maWx0ZXJVbmNvbXBpbGVkVHlwZVNjcmlwdCh0ZXN0Q2FzZXMpIDogdGVzdENhc2VzO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVGVzdHMoZGlzY292ZXJlZFRlc3RzLCBvcHRpb25zLnRlc3RzLCBvcHRpb25zLmV4Y2x1ZGUsIG9wdGlvbnMuc3RyaWN0KTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVW5jb21waWxlZFR5cGVTY3JpcHQodGVzdENhc2VzOiBJbnRlZ1Rlc3RbXSk6IEludGVnVGVzdFtdIHtcbiAgICBjb25zdCBqc1Rlc3RDYXNlcyA9IHRlc3RDYXNlcy5maWx0ZXIodCA9PiB0LmZpbGVOYW1lLmVuZHNXaXRoKCcuanMnKSk7XG5cbiAgICByZXR1cm4gdGVzdENhc2VzXG4gICAgICAvLyBSZW1vdmUgYWxsIFR5cGVTY3JpcHQgdGVzdCBjYXNlcyAoZW5kaW5nIGluIC50cylcbiAgICAgIC8vIGZvciB3aGljaCBhIGNvbXBpbGVkIHZlcnNpb24gaXMgcHJlc2VudCAoc2FtZSBuYW1lLCBlbmRpbmcgaW4gLmpzKVxuICAgICAgLmZpbHRlcigodHNDYW5kaWRhdGUpID0+IHtcbiAgICAgICAgaWYgKCF0c0NhbmRpZGF0ZS5maWxlTmFtZS5lbmRzV2l0aCgnLnRzJykpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ganNUZXN0Q2FzZXMuZmluZEluZGV4KGpzVGVzdCA9PiBqc1Rlc3QudGVzdE5hbWUgPT09IHRzQ2FuZGlkYXRlLnRlc3ROYW1lKSA9PT0gLTE7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZFRyZWUoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWN1cnNlKGRpcjogc3RyaW5nKSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyKTtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihkaXIsIGZpbGUpO1xuICAgICAgICBjb25zdCBzdGF0ZiA9IGF3YWl0IGZzLnN0YXQoZnVsbFBhdGgpO1xuICAgICAgICBpZiAoc3RhdGYuaXNGaWxlKCkpIHtcbiAgICAgICAgICByZXQucHVzaChmdWxsUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRmLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICBhd2FpdCByZWN1cnNlKGZ1bGxQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IHJlY3Vyc2UodGhpcy5kaXJlY3RvcnkpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cbiJdfQ==
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZ3JhdGlvbi10ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQ0EsNENBR0M7QUFsREQsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQixvQ0FBd0M7QUFDeEMsMkVBQTBFO0FBRTFFLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBdUMxQzs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLElBQW1CO0lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUEsb0JBQVksRUFBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFtRVE7SUFsRXJCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBbUI7UUFDdkMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNhLFFBQVEsQ0FBUztJQUVqQzs7OztPQUlHO0lBQ2EseUJBQXlCLENBQVM7SUFFbEQ7O09BRUc7SUFDYSxnQkFBZ0IsQ0FBUztJQUV6Qzs7OztPQUlHO0lBQ2Esa0JBQWtCLENBQVM7SUFFM0M7O09BRUc7SUFDYSxnQkFBZ0IsQ0FBUztJQUV6Qzs7Ozs7O09BTUc7SUFDYSxRQUFRLENBQVM7SUFFakM7O09BRUc7SUFDYSxXQUFXLENBQVM7SUFFcEM7O09BRUc7SUFDYSxrQkFBa0IsQ0FBUztJQUUzQzs7Ozs7T0FLRztJQUNNLGtCQUFrQixDQUFTO0lBRXBCLGFBQWEsQ0FBUztJQUV0QixZQUFZLENBQVM7SUFFckMsWUFBNEIsSUFBbUI7UUFBbkIsU0FBSSxHQUFK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LEVBQUUsQ0FBQztvQkFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckIsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUN4QixNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBeExELDRDQXdMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBhYnNBd2FyZUpvaW4gfSBmcm9tICcuLi9maWxlcyc7XG5pbXBvcnQgeyBmaW5kVGVzdFNwZWNpZmljQ29udGV4dCB9IGZyb20gJy4vcHJpdmF0ZS90ZXN0LXNwZWNpZmljLWNvbnRleHQnO1xuXG5jb25zdCBDREtfT1VURElSX1BSRUZJWCA9ICdjZGstaW50ZWcub3V0JztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGludGVncmF0aW9uIHRlc3RcbiAqXG4gKiBUaGlzIHR5cGUgaXMgYSBkYXRhLW9ubHkgc3RydWN0dXJlLCBzbyBpdCBjYW4gdHJpdmlhbGx5IGJlIHBhc3NlZCB0byB3b3JrZXJzLlxuICogRGVyaXZlZCBhdHRyaWJ1dGVzIGFyZSBjYWxjdWxhdGVkIHVzaW5nIHRoZSBgSW50ZWdUZXN0YCBjbGFzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ1Rlc3RJbmZvIHtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGZpbGUgdG8gcnVuXG4gICAqXG4gICAqIFBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3Rvcnkgd2UgZGlzY292ZXJlZCB0aGlzIHRlc3QgZnJvbVxuICAgKlxuICAgKiBQYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzY292ZXJ5Um9vdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0xJIGNvbW1hbmQgdXNlZCB0byBydW4gdGhpcyB0ZXN0LlxuICAgKiBJZiBpdCBjb250YWlucyB7ZmlsZVBhdGh9LCB0aGUgdGVzdCBmaWxlIG5hbWVzIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYXQgdGhhdCBwbGFjZSBpbiB0aGUgY29tbWFuZCBmb3IgZWFjaCBydW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGVzdCBydW4gY29tbWFuZCB3aWxsIGJlIGBub2RlIHtmaWxlUGF0aH1gXG4gICAqL1xuICByZWFkb25seSBhcHBDb21tYW5kVGVtcGxhdGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHRydWUgaWYgdGhpcyB0ZXN0IGlzIHJ1bm5pbmcgaW4gd2F0Y2ggbW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgdGVzdCBuYW1lIGZyb20gdGhlIGdpdmVuIEludGVnVGVzdEluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3ROYW1lRnJvbUluZm8odGVzdDogSW50ZWdUZXN0SW5mbyk6IHN0cmluZyB7XG4gIGNvbnN0IGFic1BhdGggPSBhYnNBd2FyZUpvaW4odGVzdC5kaXNjb3ZlcnlSb290LCB0ZXN0LmZpbGVOYW1lKTtcbiAgcmV0dXJuIHBhdGgucmVsYXRpdmUodGVzdC5kaXNjb3ZlcnlSb290LCBhYnNQYXRoKTtcbn1cblxuLyoqXG4gKiBEZXJpdmVkIGluZm9ybWF0aW9uIGZvciBJbnRlZ1Rlc3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ1Rlc3Qge1xuICBwdWJsaWMgc3RhdGljIGh5ZHJhdGUoaW5mbzogSW50ZWdUZXN0SW5mbyk6IEludGVnVGVzdCB7XG4gICAgcmV0dXJuIG5ldyBJbnRlZ1Rlc3QoaW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcnVuXG4gICAqXG4gICAqIFBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogUmVsYXRpdmUgcGF0aCB0byB0aGUgZmlsZSB0byBydW5cbiAgICpcbiAgICogUmVsYXRpdmUgZnJvbSB0aGUgXCJkaXNjb3Zlcnkgcm9vdFwiLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRpc2NvdmVyeVJlbGF0aXZlRmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGZpbGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhYnNvbHV0ZUZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBub3JtYWxpemVkIG5hbWUgb2YgdGhlIHRlc3QuIFRoaXMgbmFtZVxuICAgKiB3aWxsIGJlIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBkaXJlY3RvcnkgdGhlIHRvb2xcbiAgICogaXMgcnVuIGZyb20uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm9ybWFsaXplZFRlc3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yeSB0aGUgdGVzdCBpcyBpblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciB0aGUgdGVzdFxuICAgKlxuICAgKiBEZXBlbmRzIG9uIHRoZSBkaXNjb3ZlcnkgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBMb29rcyBsaWtlIGBpbnRlZy5teXRlc3RgIG9yIGBwYWNrYWdlL3Rlc3QvaW50ZWcubXl0ZXN0YC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRoIG9mIHRoZSBzbmFwc2hvdCBkaXJlY3RvcnkgZm9yIHRoaXMgdGVzdFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90RGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIHRlbXBvcmFyeSBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGlzIHRlc3RcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZW1wb3JhcnlPdXRwdXREaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENMSSBjb21tYW5kIHVzZWQgdG8gcnVuIHRoaXMgdGVzdC5cbiAgICogSWYgaXQgY29udGFpbnMge2ZpbGVQYXRofSwgdGhlIHRlc3QgZmlsZSBuYW1lcyB3aWxsIGJlIHN1YnN0aXR1dGVkIGF0IHRoYXQgcGxhY2UgaW4gdGhlIGNvbW1hbmQgZm9yIGVhY2ggcnVuLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRlc3QgcnVuIGNvbW1hbmQgd2lsbCBiZSBgbm9kZSB7ZmlsZVBhdGh9YFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwQ29tbWFuZFRlbXBsYXRlOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRlc3REaXJlY3Rvcnk6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgdGVzdEJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGluZm86IEludGVnVGVzdEluZm8pIHtcbiAgICB0aGlzLmFwcENvbW1hbmRUZW1wbGF0ZSA9IGluZm8uYXBwQ29tbWFuZFRlbXBsYXRlID8/ICdub2RlIHtmaWxlUGF0aH0nO1xuXG4gICAgLy8gZm9yIGNvbnNpc3RlbmN5LCBhbHdheXMgcnVuIHRoZSBDREsgYXBwcyB1bmRlciB0ZXN0IGZyb20gdGhlIENXRFxuICAgIC8vIHRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIGxhbmd1YWdlcyB0aGF0IHVzZSB0aGUgQ1dEIHRvIGRpc2NvdmVyIGFzc2V0c1xuICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS9pc3N1ZXMvNjM4XG4gICAgdGhpcy53b3JraW5nRGlyZWN0b3J5ID0gcHJvY2Vzcy5jd2QoKTtcbiAgICB0aGlzLmFic29sdXRlRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUoaW5mby5maWxlTmFtZSk7XG4gICAgdGhpcy5maWxlTmFtZSA9IHBhdGgucmVsYXRpdmUodGhpcy53b3JraW5nRGlyZWN0b3J5LCBpbmZvLmZpbGVOYW1lKTtcbiAgICB0aGlzLnRlc3REaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUodGhpcy5maWxlTmFtZSk7XG4gICAgdGhpcy50ZXN0QmFzZU5hbWUgPSBwYXRoLmJhc2VuYW1lKHRoaXMuZmlsZU5hbWUpO1xuICAgIHRoaXMuZGlzY292ZXJ5UmVsYXRpdmVGaWxlTmFtZSA9IHBhdGgucmVsYXRpdmUoaW5mby5kaXNjb3ZlcnlSb290LCBpbmZvLmZpbGVOYW1lKTtcblxuICAgIC8vIFdlIHRyZWF0IHRoZSBkaXNjb3Zlcnkgcm9vdCBhcyB0aGUgYmFzZSBmb3IgZGlzcGxheSBuYW1lc1xuICAgIC8vIExvb2tzIGVpdGhlciBsaWtlIGBpbnRlZy5teXRlc3RgIG9yIGBwYWNrYWdlL3Rlc3QvaW50ZWcubXl0ZXN0YFxuICAgIGNvbnN0IHBhcnNlZCA9IHBhdGgucGFyc2UodGhpcy5maWxlTmFtZSk7XG4gICAgdGhpcy5ub3JtYWxpemVkVGVzdE5hbWUgPSBwYXJzZWQubmFtZTtcbiAgICB0aGlzLnNuYXBzaG90RGlyID0gcGF0aC5qb2luKHBhcnNlZC5kaXIsIGAke3BhcnNlZC5iYXNlfS5zbmFwc2hvdGApO1xuICAgIHRoaXMudGVtcG9yYXJ5T3V0cHV0RGlyID0gcGF0aC5qb2luKHBhcnNlZC5kaXIsIGAke0NES19PVVRESVJfUFJFRklYfS4ke3BhcnNlZC5iYXNlfS5zbmFwc2hvdGApO1xuICAgIHRoaXMudGVzdE5hbWUgPSB0aGlzLm5vcm1hbGl6ZWRUZXN0TmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBzcGVjaWFsaXplVGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0ZW1wbGF0ZVxuICAgICAgLnJlcGxhY2VBbGwoJ3tmaWxlUGF0aH0nLCB0aGlzLmZpbGVOYW1lKVxuICAgICAgLnJlcGxhY2VBbGwoJ3t0ZXN0QmFzZU5hbWV9JywgdGhpcy50ZXN0QmFzZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGRlaHlkcmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItZ2l2ZW4gbmFtZVxuICAgKlxuICAgKiBXZSBhcmUgdmVyeSBsZW5pZW50IGhlcmUuIEEgbmFtZSBtYXRjaGVzIGlmIGl0IG1hdGNoZXM6XG4gICAqXG4gICAqIC0gVGhlIENXRC1yZWxhdGl2ZSBmaWxlbmFtZVxuICAgKiAtIFRoZSBkaXNjb3Zlcnkgcm9vdC1yZWxhdGl2ZSBmaWxlbmFtZVxuICAgKiAtIFRoZSBzdWl0ZSBuYW1lXG4gICAqIC0gVGhlIGFic29sdXRlIGZpbGVuYW1lXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5maWxlTmFtZSxcbiAgICAgIHRoaXMuZGlzY292ZXJ5UmVsYXRpdmVGaWxlTmFtZSxcbiAgICAgIHRoaXMudGVzdE5hbWUsXG4gICAgICB0aGlzLmFic29sdXRlRmlsZU5hbWUsXG4gICAgXS5pbmNsdWRlcyhuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIGEgdGVzdC1zcGVjaWZpYyBjb250ZXh0IGZpbGUgYW5kIHJldHVybiBpdHMgY29udGVudHMgaWYgaXQgZXhpc3RzLlxuICAgKlxuICAgKiBJZiBgdW5kZWZpbmVkYCwgbm8gdGVzdC1zcGVjaWZpYyBjb250ZXh0IGNvdWxkIGJlIGZvdW5kLiBUZXN0LXNwZWNpZmljIGNvbnRleHRcbiAgICogd2lsbCBiZSB0YWtlbiBmcm9tIGVpdGhlciBgaW50ZWcuY29udGV4dC5qc29uYCBpZiBmb3VuZCwgb3Igb3RoZXJ3aXNlXG4gICAqIGBjZGsuanNvbiNjb250ZXh0YCBpZiBub3QgZm91bmQsIHVwc3RyZWFtIGZyb20gdGhlIHRlc3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdGVzdFNwZWNpZmljQ29udGV4dCgpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGZpbmRUZXN0U3BlY2lmaWNDb250ZXh0KHBhdGguZGlybmFtZSh0aGlzLmZpbGVOYW1lKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgaG93IGludGVncmF0aW9uIHRlc3QgZmlsZXMgYXJlIGRpc2NvdmVyZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblRlc3RzRGlzY292ZXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlIHRoZW4gdGhlIGxpc3Qgb2YgdGVzdHNcbiAgICogcHJvdmlkZWQgd2lsbCBiZSBleGNsdWRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUsIHRocm93IGFuIGVycm9yIGlmIGFueSBzcGVjaWZpZWQgdGVzdHMgYXJlIG5vdCBmb3VuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCBvZiB0ZXN0cyB0byBpbmNsdWRlIChvciBleGNsdWRlIGlmIGBleGNsdWRlPXRydWVgKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCBtYXRjaGVkIGZpbGVzXG4gICAqL1xuICByZWFkb25seSB0ZXN0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBvZiB0aGUgYXBwIGNvbW1hbmRzIHRvIHJ1biBpbnRlZ3JhdGlvbiB0ZXN0cyB3aXRoLFxuICAgKiBhbmQgdGhlIHJlZ2V4IHBhdHRlcm5zIG1hdGNoaW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IGZpbGVzIGVhY2ggYXBwIGNvbW1hbmQuXG4gICAqXG4gICAqIElmIHRoZSBhcHAgY29tbWFuZCBjb250YWlucyB7ZmlsZVBhdGh9LCB0aGUgdGVzdCBmaWxlIG5hbWVzIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYXQgdGhhdCBwbGFjZSBpbiB0aGUgY29tbWFuZCBmb3IgZWFjaCBydW4uXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q2FzZXM6IHtcbiAgICBbYXBwOiBzdHJpbmddOiBzdHJpbmdbXTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBQeXRob24gZXhlY3V0YWJsZSBmb3IgdGhlIGN1cnJlbnQgT1NcbiAqL1xuZnVuY3Rpb24gcHl0aG9uRXhlY3V0YWJsZSgpIHtcbiAgbGV0IHB5dGhvbiA9ICdweXRob24zJztcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICBweXRob24gPSAncHl0aG9uJztcbiAgfVxuICByZXR1cm4gcHl0aG9uO1xufVxuXG4vKipcbiAqIERpc2NvdmVyIGludGVncmF0aW9uIHRlc3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ3JhdGlvblRlc3RzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZykge1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbnRlZ3JhdGlvbiB0ZXN0cyBkaXNjb3Zlcnkgb3B0aW9ucyBmcm9tIENMSSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZnJvbUNsaU9wdGlvbnMob3B0aW9uczoge1xuICAgIGFwcD86IHN0cmluZztcbiAgICBleGNsdWRlPzogYm9vbGVhbjtcbiAgICBsYW5ndWFnZT86IHN0cmluZ1tdO1xuICAgIHRlc3RSZWdleD86IHN0cmluZ1tdO1xuICAgIHRlc3RzPzogc3RyaW5nW107XG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8SW50ZWdUZXN0W10+IHtcbiAgICBjb25zdCBiYXNlT3B0aW9ucyA9IHtcbiAgICAgIHRlc3RzOiBvcHRpb25zLnRlc3RzLFxuICAgICAgZXhjbHVkZTogb3B0aW9ucy5leGNsdWRlLFxuICAgICAgc3RyaWN0OiBvcHRpb25zLnN0cmljdCxcbiAgICB9O1xuXG4gICAgLy8gRXhwbGljaXRseSBzZXQgYm90aCwgYXBwIGFuZCB0ZXN0LXJlZ2V4XG4gICAgaWYgKG9wdGlvbnMuYXBwICYmIG9wdGlvbnMudGVzdFJlZ2V4KSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNjb3Zlcih7XG4gICAgICAgIHRlc3RDYXNlczoge1xuICAgICAgICAgIFtvcHRpb25zLmFwcF06IG9wdGlvbnMudGVzdFJlZ2V4LFxuICAgICAgICB9LFxuICAgICAgICAuLi5iYXNlT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVzZSB0aGUgc2VsZWN0ZWQgcHJlc2V0c1xuICAgIGlmICghb3B0aW9ucy5hcHAgJiYgIW9wdGlvbnMudGVzdFJlZ2V4KSB7XG4gICAgICAvLyBPbmx5IGNhc2Ugd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMsIGkuZS4gdGhlIG9ubHkgdGltZSB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBzcGVjaWFsIGNhc2VcbiAgICAgIGNvbnN0IGlnbm9yZVVuY29tcGlsZWRUeXBlU2NyaXB0ID0gb3B0aW9ucy5sYW5ndWFnZT8uaW5jbHVkZXMoJ2phdmFzY3JpcHQnKSAmJiBvcHRpb25zLmxhbmd1YWdlPy5pbmNsdWRlcygndHlwZXNjcmlwdCcpO1xuXG4gICAgICByZXR1cm4gdGhpcy5kaXNjb3Zlcih7XG4gICAgICAgIHRlc3RDYXNlczogdGhpcy5nZXRMYW5ndWFnZVByZXNldHMob3B0aW9ucy5sYW5ndWFnZSksXG4gICAgICAgIC4uLmJhc2VPcHRpb25zLFxuICAgICAgfSwgaWdub3JlVW5jb21waWxlZFR5cGVTY3JpcHQpO1xuICAgIH1cblxuICAgIC8vIE9ubHkgb25lIG9mIGFwcCBvciB0ZXN0LXJlZ2V4IGlzIHNldCwgd2l0aCBhIHNpbmdsZSBwcmVzZXQgc2VsZWN0ZWRcbiAgICAvLyA9PiBvdmVycmlkZSBlaXRoZXIgYXBwIG9yIHRlc3QtcmVnZXhcbiAgICBpZiAob3B0aW9ucy5sYW5ndWFnZT8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBbcHJlc2V0QXBwLCBwcmVzZXRUZXN0UmVnZXhdID0gdGhpcy5nZXRMYW5ndWFnZVByZXNldChvcHRpb25zLmxhbmd1YWdlWzBdKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc2NvdmVyKHtcbiAgICAgICAgdGVzdENhc2VzOiB7XG4gICAgICAgICAgW29wdGlvbnMuYXBwID8/IHByZXNldEFwcF06IG9wdGlvbnMudGVzdFJlZ2V4ID8/IHByZXNldFRlc3RSZWdleCxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPbmx5IG9uZSBvZiBhcHAgb3IgdGVzdC1yZWdleCBpcyBzZXQsIHdpdGggbXVsdGlwbGUgcHJlc2V0c1xuICAgIC8vID0+IGltcG9zc2libGUgdG8gcmVzb2x2ZVxuICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuYXBwID8gJy0tYXBwJyA6ICctLXRlc3QtcmVnZXgnO1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBhIHNpbmdsZSBcIi0tbGFuZ3VhZ2VcIiBjYW4gYmUgdXNlZCB3aXRoIFwiJHtvcHRpb259XCIuIEFsdGVybmF0aXZlbHkgcHJvdmlkZSBib3RoIFwiLS1hcHBcIiBhbmQgXCItLXRlc3QtcmVnZXhcIiB0byBmdWxseSBjdXN0b21pemUgdGhlIGNvbmZpZ3VyYXRpb24uYCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIGEgbGFuZ3VhZ2VcbiAgICovXG4gIHByaXZhdGUgZ2V0TGFuZ3VhZ2VQcmVzZXQobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IGxhbmd1YWdlUHJlc2V0czoge1xuICAgICAgW2xhbmd1YWdlOiBzdHJpbmddOiBbc3RyaW5nLCBzdHJpbmdbXV07XG4gICAgfSA9IHtcbiAgICAgIGphdmFzY3JpcHQ6IFsnbm9kZSB7ZmlsZVBhdGh9JywgWydeaW50ZWdcXFxcLi4qXFxcXC5qcyQnXV0sXG4gICAgICB0eXBlc2NyaXB0OiBbJ25vZGUgLXIgdHMtbm9kZS9yZWdpc3RlciB7ZmlsZVBhdGh9JywgWydeaW50ZWdcXFxcLig/IS4qXFxcXC5kXFxcXC50cyQpLipcXFxcLnRzJCddXSxcbiAgICAgIHB5dGhvbjogW2Ake3B5dGhvbkV4ZWN1dGFibGUoKX0ge2ZpbGVQYXRofWAsIFsnXmludGVnXy4qXFxcXC5weSQnXV0sXG4gICAgICBnbzogWydnbyBydW4ge2ZpbGVQYXRofScsIFsnXmludGVnXy4qXFxcXC5nbyQnXV0sXG4gICAgfTtcblxuICAgIHJldHVybiBsYW5ndWFnZVByZXNldHNbbGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29uZmlnIGZvciBhbGwgc2VsZWN0ZWQgbGFuZ3VhZ2VzXG4gICAqL1xuICBwcml2YXRlIGdldExhbmd1YWdlUHJlc2V0cyhsYW5ndWFnZXM6IHN0cmluZ1tdID0gW10pIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgbGFuZ3VhZ2VzXG4gICAgICAgIC5tYXAobGFuZ3VhZ2UgPT4gdGhpcy5nZXRMYW5ndWFnZVByZXNldChsYW5ndWFnZSkpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbiksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdXNlciBwcm92aWRlcyBhIGxpc3Qgb2YgdGVzdHMsIHRoZXNlIGNhbiBlaXRoZXIgYmUgYSBsaXN0IG9mIHRlc3RzIHRvIGluY2x1ZGUgb3IgYSBsaXN0IG9mIHRlc3RzIHRvIGV4Y2x1ZGUuXG4gICAqXG4gICAqIC0gSWYgaXQgaXMgYSBsaXN0IG9mIHRlc3RzIHRvIGluY2x1ZGUgdGhlbiB3ZSBkaXNjb3ZlciBhbGwgYXZhaWxhYmxlIHRlc3RzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaGF2ZSBwcm92aWRlZCB2YWxpZCB0ZXN0cy5cbiAgICogICBJZiB0aGV5IGhhdmUgcHJvdmlkZWQgYSB0ZXN0IG5hbWUgdGhhdCB3ZSBkb24ndCBmaW5kLCB0aGVuIHdlIHdyaXRlIG91dCB0aGF0IGVycm9yIG1lc3NhZ2UuXG4gICAqIC0gSWYgaXQgaXMgYSBsaXN0IG9mIHRlc3RzIHRvIGV4Y2x1ZGUsIHRoZW4gd2UgZGlzY292ZXIgYWxsIGF2YWlsYWJsZSB0ZXN0cyBhbmQgZmlsdGVyIG91dCB0aGUgdGVzdHMgdGhhdCB3ZXJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJUZXN0cyhkaXNjb3ZlcmVkVGVzdHM6IEludGVnVGVzdFtdLCByZXF1ZXN0ZWRUZXN0cz86IHN0cmluZ1tdLCBleGNsdWRlPzogYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbik6IEludGVnVGVzdFtdIHtcbiAgICBpZiAoIXJlcXVlc3RlZFRlc3RzKSB7XG4gICAgICByZXR1cm4gZGlzY292ZXJlZFRlc3RzO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFRlc3RzID0gZGlzY292ZXJlZFRlc3RzLmZpbHRlcih0ID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSByZXF1ZXN0ZWRUZXN0cy5zb21lKHBhdHRlcm4gPT4gdC5tYXRjaGVzKHBhdHRlcm4pKTtcbiAgICAgIHJldHVybiBtYXRjaGVzICE9PSAhIWV4Y2x1ZGU7IC8vIExvb2tzIHdlaXJkIGJ1dCBpcyBlcXVhbCB0byAobWF0Y2hlcyAmJiAhZXhjbHVkZSkgfHwgKCFtYXRjaGVzICYmIGV4Y2x1ZGUpXG4gICAgfSk7XG5cbiAgICAvLyBJZiBub3QgZXhjbHVkaW5nLCBhbGwgcGF0dGVybnMgbXVzdCBoYXZlIG1hdGNoZWQgYXQgbGVhc3Qgb25lIHRlc3RcbiAgICBpZiAoIWV4Y2x1ZGUpIHtcbiAgICAgIGNvbnN0IHVubWF0Y2hlZFBhdHRlcm5zID0gcmVxdWVzdGVkVGVzdHMuZmlsdGVyKHBhdHRlcm4gPT4gIWRpc2NvdmVyZWRUZXN0cy5zb21lKHQgPT4gdC5tYXRjaGVzKHBhdHRlcm4pKSk7XG4gICAgICBmb3IgKGNvbnN0IHVubWF0Y2hlZCBvZiB1bm1hdGNoZWRQYXR0ZXJucykge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgTm8gc3VjaCBpbnRlZyB0ZXN0OiAke3VubWF0Y2hlZH1cXG5gKTtcbiAgICAgIH1cbiAgICAgIGlmICh1bm1hdGNoZWRQYXR0ZXJucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBBdmFpbGFibGUgdGVzdHM6ICR7ZGlzY292ZXJlZFRlc3RzLm1hcCh0ID0+IHQuZGlzY292ZXJ5UmVsYXRpdmVGaWxlTmFtZSkuam9pbignICcpfVxcbmApO1xuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpY3QgbW9kZTogJHt1bm1hdGNoZWRQYXR0ZXJucy5sZW5ndGh9IHRlc3Qocykgbm90IGZvdW5kOiAke3VubWF0Y2hlZFBhdHRlcm5zLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhbGxUZXN0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhbiBvcHRpb25hbCBsaXN0IG9mIHRlc3RzIHRvIGxvb2sgZm9yLCBvdGhlcndpc2VcbiAgICogaXQgd2lsbCBsb29rIGZvciBhbGwgdGVzdHMgZnJvbSB0aGUgZGlyZWN0b3J5XG4gICAqXG4gICAqIEBwYXJhbSB0ZXN0cyAtIFRlc3RzIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSwgdW5kZWZpbmVkIG1lYW5zIGluY2x1ZGUgYWxsIHRlc3RzLlxuICAgKiBAcGFyYW0gZXhjbHVkZSAtIFdoZXRoZXIgdGhlICd0ZXN0cycgbGlzdCBpcyBpbmNsdXNpdmUgb3IgZXhjbHVzaXZlIChpbmNsdXNpdmUgYnkgZGVmYXVsdCkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGRpc2NvdmVyKG9wdGlvbnM6IEludGVncmF0aW9uVGVzdHNEaXNjb3ZlcnlPcHRpb25zLCBpZ25vcmVVbmNvbXBpbGVkVHlwZVNjcmlwdDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxJbnRlZ1Rlc3RbXT4ge1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgdGhpcy5yZWFkVHJlZSgpO1xuXG4gICAgY29uc3QgdGVzdENhc2VzID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucy50ZXN0Q2FzZXMpXG4gICAgICAuZmxhdE1hcCgoW2FwcENvbW1hbmQsIHBhdHRlcm5zXSkgPT4gZmlsZXNcbiAgICAgICAgLmZpbHRlcihmaWxlTmFtZSA9PiBwYXR0ZXJucy5zb21lKChwYXR0ZXJuKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KGZpbGVOYW1lKSB8fCByZWdleC50ZXN0KHBhdGguYmFzZW5hbWUoZmlsZU5hbWUpKTtcbiAgICAgICAgfSkpXG4gICAgICAgIC5tYXAoZmlsZU5hbWUgPT4gbmV3IEludGVnVGVzdCh7XG4gICAgICAgICAgZGlzY292ZXJ5Um9vdDogdGhpcy5kaXJlY3RvcnksXG4gICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgYXBwQ29tbWFuZFRlbXBsYXRlOiBhcHBDb21tYW5kLFxuICAgICAgICB9KSksXG4gICAgICApO1xuXG4gICAgY29uc3QgZGlzY292ZXJlZFRlc3RzID0gaWdub3JlVW5jb21waWxlZFR5cGVTY3JpcHQgPyB0aGlzLmZpbHRlclVuY29tcGlsZWRUeXBlU2NyaXB0KHRlc3RDYXNlcykgOiB0ZXN0Q2FzZXM7XG5cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJUZXN0cyhkaXNjb3ZlcmVkVGVzdHMsIG9wdGlvbnMudGVzdHMsIG9wdGlvbnMuZXhjbHVkZSwgb3B0aW9ucy5zdHJpY3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJVbmNvbXBpbGVkVHlwZVNjcmlwdCh0ZXN0Q2FzZXM6IEludGVnVGVzdFtdKTogSW50ZWdUZXN0W10ge1xuICAgIGNvbnN0IGpzVGVzdENhc2VzID0gdGVzdENhc2VzLmZpbHRlcih0ID0+IHQuZmlsZU5hbWUuZW5kc1dpdGgoJy5qcycpKTtcblxuICAgIHJldHVybiB0ZXN0Q2FzZXNcbiAgICAgIC8vIFJlbW92ZSBhbGwgVHlwZVNjcmlwdCB0ZXN0IGNhc2VzIChlbmRpbmcgaW4gLnRzKVxuICAgICAgLy8gZm9yIHdoaWNoIGEgY29tcGlsZWQgdmVyc2lvbiBpcyBwcmVzZW50IChzYW1lIG5hbWUsIGVuZGluZyBpbiAuanMpXG4gICAgICAuZmlsdGVyKCh0c0NhbmRpZGF0ZSkgPT4ge1xuICAgICAgICBpZiAoIXRzQ2FuZGlkYXRlLmZpbGVOYW1lLmVuZHNXaXRoKCcudHMnKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqc1Rlc3RDYXNlcy5maW5kSW5kZXgoanNUZXN0ID0+IGpzVGVzdC50ZXN0TmFtZSA9PT0gdHNDYW5kaWRhdGUudGVzdE5hbWUpID09PSAtMTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWFkVHJlZSgpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlY3Vyc2UoZGlyOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihkaXIpO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgZmlsZSk7XG4gICAgICAgIGNvbnN0IHN0YXRmID0gYXdhaXQgZnMuc3RhdChmdWxsUGF0aCk7XG4gICAgICAgIGlmIChzdGF0Zi5pc0ZpbGUoKSkge1xuICAgICAgICAgIHJldC5wdXNoKGZ1bGxQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGYuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIGF3YWl0IHJlY3Vyc2UoZnVsbFBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgcmVjdXJzZSh0aGlzLmRpcmVjdG9yeSk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuIl19
|
|
@@ -1,35 +1,32 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CdkTestAppOptions } from './cdk-test-app';
|
|
2
2
|
import type { Diagnostic, DestructiveChange, SnapshotVerificationOptions } from '../workers/common';
|
|
3
|
+
type RunnerOptions = Omit<CdkTestAppOptions, 'outputDirectoryNameTemplate' | 'region'> & {
|
|
4
|
+
/**
|
|
5
|
+
* Only used for testing
|
|
6
|
+
*/
|
|
7
|
+
readonly TESTING_compareAgainstDirectory?: string;
|
|
8
|
+
};
|
|
9
|
+
export type SnapshotResult = {
|
|
10
|
+
type: 'no-shapshot';
|
|
11
|
+
} | {
|
|
12
|
+
type: 'did-compare';
|
|
13
|
+
diagnostics: Diagnostic[];
|
|
14
|
+
destructiveChanges: DestructiveChange[];
|
|
15
|
+
};
|
|
3
16
|
/**
|
|
4
17
|
* Runner for snapshot tests. This handles orchestrating
|
|
5
18
|
* the validation of the integration test snapshots
|
|
6
19
|
*/
|
|
7
20
|
export declare class IntegSnapshotRunner {
|
|
8
|
-
private readonly
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
actualTests(): Promise<{
|
|
12
|
-
[testName: string]: import("@aws-cdk/cloud-assembly-schema").TestCase;
|
|
13
|
-
} | undefined>;
|
|
14
|
-
dontCareAboutLegacyLookupsForTests(): void;
|
|
21
|
+
private readonly options;
|
|
22
|
+
private readonly test;
|
|
23
|
+
constructor(options: RunnerOptions);
|
|
15
24
|
/**
|
|
16
25
|
* Synth the CDK app and compare the templates to the existing snapshot.
|
|
17
26
|
*
|
|
18
27
|
* @returns any diagnostics and any destructive changes
|
|
19
28
|
*/
|
|
20
|
-
testSnapshot(options?: SnapshotVerificationOptions): Promise<
|
|
21
|
-
diagnostics: Diagnostic[];
|
|
22
|
-
destructiveChanges: DestructiveChange[];
|
|
23
|
-
}>;
|
|
24
|
-
/**
|
|
25
|
-
* For a given cloud assembly return a collection of all templates
|
|
26
|
-
* that should be part of the snapshot and any required meta data.
|
|
27
|
-
*
|
|
28
|
-
* @param cloudAssemblyDir - The directory of the cloud assembly to look for snapshots
|
|
29
|
-
* @param pickStacks - Pick only these stacks from the cloud assembly
|
|
30
|
-
* @returns A SnapshotAssembly, the collection of all templates in this snapshot and required meta data
|
|
31
|
-
*/
|
|
32
|
-
private getSnapshotAssembly;
|
|
29
|
+
testSnapshot(options?: SnapshotVerificationOptions): Promise<SnapshotResult>;
|
|
33
30
|
/**
|
|
34
31
|
* For a given stack return all resource types that are allowed to be destroyed
|
|
35
32
|
* as part of a stack update
|
|
@@ -46,7 +43,6 @@ export declare class IntegSnapshotRunner {
|
|
|
46
43
|
* @returns any diagnostics and any destructive changes
|
|
47
44
|
*/
|
|
48
45
|
private diffAssembly;
|
|
49
|
-
private readAssembly;
|
|
50
46
|
/**
|
|
51
47
|
* Reduce template to a normal form where asset references have been normalized
|
|
52
48
|
*
|
|
@@ -55,4 +51,5 @@ export declare class IntegSnapshotRunner {
|
|
|
55
51
|
*/
|
|
56
52
|
private canonicalizeTemplate;
|
|
57
53
|
}
|
|
54
|
+
export {};
|
|
58
55
|
//# sourceMappingURL=snapshot-test-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-test-runner.d.ts","sourceRoot":"","sources":["snapshot-test-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snapshot-test-runner.d.ts","sourceRoot":"","sources":["snapshot-test-runner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAGpG,KAAK,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,6BAA6B,GAAG,QAAQ,CAAC,GAAG;IACvF;;OAEG;IACH,QAAQ,CAAC,+BAA+B,CAAC,EAAE,MAAM,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAC5F;AAEH;;;GAGG;AACH,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;gBAEJ,OAAO,EAAE,aAAa;IAInD;;;;OAIG;IACU,YAAY,CAAC,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,cAAc,CAAC;IAqE7F;;;;;;OAMG;YACW,8BAA8B;IAS5C;;;;;;OAMG;YACW,YAAY;IAwG1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CA4E7B"}
|