cdk8s-cli 2.200.49 → 2.200.51
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/lib/cli/cmds/import.js +15 -18
- package/lib/cli/cmds/init.js +5 -7
- package/lib/cli/cmds/synth.js +14 -16
- package/lib/config.js +3 -4
- package/lib/import/codegen.js +5 -7
- package/lib/import/crd.js +4 -5
- package/lib/import/crds-dev.js +2 -3
- package/lib/import/dispatch.js +2 -3
- package/lib/import/helm.js +2 -3
- package/lib/import/k8s-util.js +3 -4
- package/lib/import/k8s.js +4 -7
- package/lib/plugins/_manager.js +4 -5
- package/lib/plugins/validation.js +5 -8
- package/lib/reviver.js +3 -4
- package/lib/util.js +6 -9
- package/package.json +2 -2
|
@@ -53,13 +53,12 @@ class ValidationContext {
|
|
|
53
53
|
* Whether or not the synth command was executed with --stdout.
|
|
54
54
|
*/
|
|
55
55
|
stdout) {
|
|
56
|
-
var _a;
|
|
57
56
|
this.manifests = manifests;
|
|
58
57
|
this.pkg = pkg;
|
|
59
58
|
this.version = version;
|
|
60
59
|
this.metadata = metadata;
|
|
61
60
|
this.stdout = stdout;
|
|
62
|
-
this.report = new ValidationReport(this.pkg, this.version,
|
|
61
|
+
this.report = new ValidationReport(this.pkg, this.version, this.metadata ?? {}, stdout ?? false);
|
|
63
62
|
this.logger = new ValidationLogger();
|
|
64
63
|
}
|
|
65
64
|
parseManifest(manifestPath) {
|
|
@@ -96,13 +95,12 @@ class ValidationReport {
|
|
|
96
95
|
* Add a violation to the report.
|
|
97
96
|
*/
|
|
98
97
|
addViolation(violation) {
|
|
99
|
-
var _a;
|
|
100
98
|
if (this._summary) {
|
|
101
99
|
throw new Error('Violations cannot be added to report after its submitted');
|
|
102
100
|
}
|
|
103
101
|
const violatingConstructs = [];
|
|
104
102
|
for (const resource of violation.violatingResources) {
|
|
105
|
-
const constructPath =
|
|
103
|
+
const constructPath = this.metadata[resource.resourceName]?.path;
|
|
106
104
|
violatingConstructs.push({
|
|
107
105
|
...resource,
|
|
108
106
|
// augment with construct metadata
|
|
@@ -138,7 +136,6 @@ class ValidationReport {
|
|
|
138
136
|
* Transform the report to a well formatted table string.
|
|
139
137
|
*/
|
|
140
138
|
toString() {
|
|
141
|
-
var _a, _b;
|
|
142
139
|
const json = this.toJson();
|
|
143
140
|
const output = [json.title];
|
|
144
141
|
output.push('-'.repeat(json.title.length));
|
|
@@ -149,7 +146,7 @@ class ValidationReport {
|
|
|
149
146
|
['Status', json.summary.status],
|
|
150
147
|
['Plugin', json.summary.plugin],
|
|
151
148
|
['Version', json.summary.version],
|
|
152
|
-
...Object.entries(
|
|
149
|
+
...Object.entries(json.summary.metadata ?? {}),
|
|
153
150
|
]));
|
|
154
151
|
if (json.violations) {
|
|
155
152
|
output.push('');
|
|
@@ -164,7 +161,7 @@ class ValidationReport {
|
|
|
164
161
|
output.push(' Occurrences:');
|
|
165
162
|
for (const construct of violation.violatingConstructs) {
|
|
166
163
|
output.push('');
|
|
167
|
-
output.push(` - Construct Path: ${
|
|
164
|
+
output.push(` - Construct Path: ${construct.constructPath ?? 'N/A'}`);
|
|
168
165
|
output.push(` - Manifest Path: ${construct.manifestPath}`);
|
|
169
166
|
output.push(` - Resource Name: ${construct.resourceName}`);
|
|
170
167
|
if (construct.locations) {
|
|
@@ -239,4 +236,4 @@ function red(s) {
|
|
|
239
236
|
function bright(s) {
|
|
240
237
|
return `\x1b[1m${s}`;
|
|
241
238
|
}
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW5zL3ZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLGlDQUE4QjtBQUM5QiwyQ0FBNkI7QUFLN0I7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQWdCNUI7SUFFRTs7T0FFRztJQUNhLFNBQTRCO0lBRTVDOztPQUVHO0lBQ2EsR0FBVztJQUUzQjs7T0FFRztJQUNhLE9BQWU7SUFFL0I7O09BRUc7SUFDYSxXQUFnRSxFQUFFO0lBRWxGOztPQUVHO0lBQ2EsTUFBZ0I7O1FBcEJoQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUs1QixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBS1gsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUtmLGFBQVEsR0FBUixRQUFRLENBQTBEO1FBS2xFLFdBQU0sR0FBTixNQUFNLENBQVU7UUFFaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRSxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxLQUFLLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sYUFBYSxDQUFDLFlBQW9CO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFD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QztJQUU1RCxDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQixDQUFDLHFCQUE2QjtRQUNoRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sU0FBUyxHQUFpRCxFQUFFLENBQUM7UUFDbkUsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxxQkFBcUIsS0FBSyxRQUFRLENBQUMsT0FBTyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQy9JO1FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2pFLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRyxRQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3BEO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFFbkIsQ0FBQztDQUVGO0FBMUNELDRDQTBDQztBQWNELFNBQVMsS0FBSyxDQUFDLENBQVM7SUFDdEIsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxDQUFTO0lBQ3BCLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsQ0FBUztJQUN2QixPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCB7IHRhYmxlIH0gZnJvbSAndGFibGUnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuL19tYW5hZ2VyJztcbmltcG9ydCB7IFZhbGlkYXRpb25Db25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgU3ludGhlc2l6ZWRBcHAgfSBmcm9tICcuLi91dGlsJztcblxuLyoqXG4gKiBDb250ZXh0IGF2YWlsYWJsZSB0byBwbHVnaW5zIGR1cmluZyB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkNvbnRleHQge1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZW1pdHRlZCBieSB0aGUgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogUGx1Z2lucyBzaG91bGQgaW50ZXJhY3Qgd2l0aCB0aGlzIG9iamVjdCB0byBnZW5lcmF0ZSB0aGUgcmVwb3J0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlcG9ydDogVmFsaWRhdGlvblJlcG9ydDtcblxuICAvKipcbiAgICogTG9nZ2VyIGZvciB0aGUgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogUGx1Z2lucyBzaG91bGQgaW50ZXJhY3Qgd2l0aCB0aGlzIG9iamVjdCB0byBsb2cgbWVzc2FnZXMgZHVyaW5nIHZhbGlkYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VyOiBWYWxpZGF0aW9uTG9nZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3Qgb2YgbWFuaWZlc3RzIHRvIHZhbGlkYXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBtYW5pZmVzdHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuXG4gICAgLyoqXG4gICAgICogVGhlIE5vZGVKUyBwYWNrYWdlIG5hbWUgb2YgdGhlIHBsdWdpbiBydW5uaW5nIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBwa2c6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBOb2RlSlMgcGFja2FnZSB0aGF0IHJ1bnMgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBtZXRhZGF0YSBvZiByZXNvdXJjZXMgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBtZXRhZGF0YToge3JlYWRvbmx5IFtrZXk6IHN0cmluZ106IFJlc291cmNlQ29uc3RydWN0TWV0YWRhdGF9ID0ge30sXG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgc3ludGggY29tbWFuZCB3YXMgZXhlY3V0ZWQgd2l0aCAtLXN0ZG91dC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc3Rkb3V0PzogYm9vbGVhbikge1xuXG4gICAgdGhpcy5yZXBvcnQgPSBuZXcgVmFsaWRhdGlvblJlcG9ydCh0aGlzLnBrZywgdGhpcy52ZXJzaW9uLCB0aGlzLm1ldGFkYXRhID8/IHt9LCBzdGRvdXQgPz8gZmFsc2UpO1xuICAgIHRoaXMubG9nZ2VyID0gbmV3IFZhbGlkYXRpb25Mb2dnZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZU1hbmlmZXN0KG1hbmlmZXN0UGF0aDogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IHBhcnNlZCA9IHlhbWwucGFyc2VBbGxEb2N1bWVudHMoZnMucmVhZEZpbGVTeW5jKG1hbmlmZXN0UGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSk7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogW3BhcnNlZF07XG4gICAgcmV0dXJuIHJlc291cmNlcy5tYXAociA9PiByLnRvSlMoKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2dnZXIgYXZhaWxhYmxlIHRvIHBsdWdpbnMgZHVyaW5nIHZhbGlkYXRpb24uIFVzZSB0aGlzIGluc3RlYWQgb2YgYGNvbnNvbGUubG9nYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25Mb2dnZXIge1xuXG4gIC8qKlxuICAgKiBMb2cgYSBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnRyYWN0IGJldHdlZW4gY2RrOHMgYW5kIHRoaXJkLXBhcnRpZXMgbG9va2luZyB0byBpbXBsZW1lbnQgdmFsaWRhdGlvbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb24ge1xuXG4gIC8qKlxuICAgKiBSdW4gdGhlIHZhbGlkYXRpb24gbG9naWMuXG4gICAqXG4gICAqIC0gVXNlIGBjb250ZXh0Lm1hbmlmZXN0c2AgdG8gcmV0cmlldmUgdGhlIGxpc3Qgb2YgbWFuaWZlc3RzIHRvIHZhbGlkYXRlLlxuICAgKiAtIFVzZSBgY29udGV4dC5yZXBvcnRgIHRvIGFjY2VzcyBhbmQgYnVpbGQgdGhlIHJlc3VsdGluZyByZXBvcnQuXG4gICAqXG4gICAqIE1ha2Ugc3VyZSB0byBjYWxsIGBjb250ZXh0LnJlcG9ydC5wYXNzKClgIG9yIGBjb250ZXh0LnJlcG9ydC5mYWlsKClgIGJlZm9yZSByZXR1cm5pbmcsIG90aGVyd2lzZSB0aGUgdmFsaWRhdGlvbiBpcyBjb25zaWRlcmVkIGluY29tcGxldGUuXG4gICAqL1xuICB2YWxpZGF0ZShjb250ZXh0OiBWYWxpZGF0aW9uQ29udGV4dCk6IFByb21pc2U8dm9pZD47XG5cbn1cblxuLyoqXG4gKiBSZXNvdXJjZSB2aW9sYXRpbmcgYSBzcGVjaWZpYyBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25WaW9sYXRpbmdSZXNvdXJjZSB7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbnMgaW4gaXRzIGNvbmZpZyB0aGF0IHBvc2UgdGhlIHZpb2xhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbnM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbWFuaWZlc3QgdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuaWZlc3RQYXRoOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgdmlvbGF0aW5nIGEgc3BlY2lmaWMgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uVmlvbGF0aW5nQ29uc3RydWN0IGV4dGVuZHMgVmFsaWRhdGlvblZpb2xhdGluZ1Jlc291cmNlIHtcblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdCBwYXRoIGFzIGRlZmluZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0UGF0aD86IHN0cmluZztcblxufVxuXG4vKipcbiAqIFZpb2xhdGlvbiBwcm9kdWNlZCBieSB0aGUgdmFsaWRhdGlvbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblZpb2xhdGlvbiB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBydWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIHRvIHJlc29sdmUgdGhlIHZpb2xhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHJlY29tbWVuZGF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvdyB0byBmaXggdGhlIHJlY29tbWVuZGF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZXMgdmlvbGF0aW5nIHRoaXMgcnVsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZpb2xhdGluZ1Jlc291cmNlczogcmVhZG9ubHkgVmFsaWRhdGlvblZpb2xhdGluZ1Jlc291cmNlW107XG5cbn1cblxuLyoqXG4gKiBWYWxpZGF0aW9uIHByb2R1Y2VkIGJ5IHRoZSB2YWxpZGF0aW9uIHBsdWdpbiwgaW4gY29uc3RydWN0IHRlcm1zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25WaW9sYXRpb25Db25zdHJ1Y3RBd2FyZSBleHRlbmRzIE9taXQ8VmFsaWRhdGlvblZpb2xhdGlvbiwgJ3Zpb2xhdGluZ1Jlc291cmNlcyc+IHtcblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdHMgdmlvbGF0aW5nIHRoaXMgcnVsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZpb2xhdGluZ0NvbnN0cnVjdHM6IHJlYWRvbmx5IFZhbGlkYXRpb25WaW9sYXRpbmdDb25zdHJ1Y3RbXTtcbn1cblxuLy8gd2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYW4gZW51bSBzbyB0aGF0XG4vLyBwbHVnaW5zIGRvbid0IGhhdmUgdG8gaW1wb3J0IHRoZSBjbGkgYXQgcnVudGltZS5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXBvcnRTdGF0dXMgPSAnc3VjY2VzcycgfCAnZmFpbHVyZSc7XG5cbi8qKlxuICogU3VtbWFyeSBvZiB0aGUgcmVwb3J0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25SZXBvcnRTdW1tYXJ5IHtcblxuICByZWFkb25seSBzdGF0dXM6IFZhbGlkYXRpb25SZXBvcnRTdGF0dXM7XG5cbiAgcmVhZG9ubHkgcGx1Z2luOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxufVxuXG4vKipcbiAqIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUmVwb3J0SnNvbiB7XG5cbiAgLyoqXG4gICAqIFJlcG9ydCB0aXRsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgdmlvbGF0aW9ucyBpbiB0aGUgcmVycG90LlxuICAgKi9cbiAgcmVhZG9ubHkgdmlvbGF0aW9uczogcmVhZG9ubHkgVmFsaWRhdGlvblZpb2xhdGlvbkNvbnN0cnVjdEF3YXJlW107XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBzdW1tYXJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3VtbWFyeTogVmFsaWRhdGlvblJlcG9ydFN1bW1hcnk7XG5cbn1cblxuLyoqXG4gKiBUaGUgcmVwb3J0IGVtaXR0ZWQgYnkgdGhlIHBsdWdpbiBhZnRlciBldmFsdWF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvblJlcG9ydCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB2aW9sYXRpb25zOiBWYWxpZGF0aW9uVmlvbGF0aW9uQ29uc3RydWN0QXdhcmVbXSA9IFtdO1xuXG4gIHByaXZhdGUgX3N1bW1hcnk/OiBWYWxpZGF0aW9uUmVwb3J0U3VtbWFyeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBrZzogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGE6IHtyZWFkb25seSBba2V5OiBzdHJpbmddOiBSZXNvdXJjZUNvbnN0cnVjdE1ldGFkYXRhfSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0ZG91dDogYm9vbGVhbikge1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHZpb2xhdGlvbiB0byB0aGUgcmVwb3J0LlxuICAgKi9cbiAgcHVibGljIGFkZFZpb2xhdGlvbih2aW9sYXRpb246IFZhbGlkYXRpb25WaW9sYXRpb24pIHtcbiAgICBpZiAodGhpcy5fc3VtbWFyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaW9sYXRpb25zIGNhbm5vdCBiZSBhZGRlZCB0byByZXBvcnQgYWZ0ZXIgaXRzIHN1Ym1pdHRlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHZpb2xhdGluZ0NvbnN0cnVjdHM6IFZhbGlkYXRpb25WaW9sYXRpbmdDb25zdHJ1Y3RbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZXNvdXJjZSBvZiB2aW9sYXRpb24udmlvbGF0aW5nUmVzb3VyY2VzKSB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RQYXRoID0gdGhpcy5tZXRhZGF0YVtyZXNvdXJjZS5yZXNvdXJjZU5hbWVdPy5wYXRoO1xuICAgICAgdmlvbGF0aW5nQ29uc3RydWN0cy5wdXNoKHtcbiAgICAgICAgLi4ucmVzb3VyY2UsXG5cbiAgICAgICAgLy8gYXVnbWVudCB3aXRoIGNvbnN0cnVjdCBtZXRhZGF0YVxuICAgICAgICBjb25zdHJ1Y3RQYXRoOiBjb25zdHJ1Y3RQYXRoLFxuXG4gICAgICAgIC8vIGlmIHN5bnRoIGlzIGV4ZWN1dGVkIHdpdGggLS1zdGRvdXQsIHRoZSBtYW5pZmVzdCBwYXRoXG4gICAgICAgIC8vIGhlcmUgaXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGJlIGRlbGV0ZWQgb25jZSB0aGUgY29tbWFuZCBmaW5pc2hlcy5cbiAgICAgICAgbWFuaWZlc3RQYXRoOiB0aGlzLnN0ZG91dCA/ICdTVERPVVQnIDogcmVzb3VyY2UubWFuaWZlc3RQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy52aW9sYXRpb25zLnB1c2goe1xuICAgICAgcnVsZU5hbWU6IHZpb2xhdGlvbi5ydWxlTmFtZSxcbiAgICAgIHJlY29tbWVuZGF0aW9uOiB2aW9sYXRpb24ucmVjb21tZW5kYXRpb24sXG4gICAgICB2aW9sYXRpbmdDb25zdHJ1Y3RzOiB2aW9sYXRpbmdDb25zdHJ1Y3RzLFxuICAgICAgZml4OiB2aW9sYXRpb24uZml4LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCB0aGUgcmVwb3J0IHdpdGggYSBzdGF0dXMgYW5kIGFkZGl0aW9uYWwgbWV0YWRhdGEuXG4gICAqL1xuICBwdWJsaWMgc3VibWl0KHN0YXR1czogVmFsaWRhdGlvblJlcG9ydFN0YXR1cywgbWV0YWRhdGE/OiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5fc3VtbWFyeSA9IHsgc3RhdHVzLCBwbHVnaW46IHRoaXMucGtnLCB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sIG1ldGFkYXRhIH07XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHJlcG9ydCB3YXMgc3VjY2Vzc2Z1bGwuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLl9zdW1tYXJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXRlcm1pbmUgcmVwb3J0IHN0YXR1czogUmVwb3J0IGlzIGluY29tcGxldGUuIENhbGwgXFwncmVwb3J0LnN1Ym1pdFxcJycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3VtbWFyeS5zdGF0dXMgPT09ICdzdWNjZXNzJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdGhlIHJlcG9ydCB0byBhIHdlbGwgZm9ybWF0dGVkIHRhYmxlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuXG4gICAgY29uc3QganNvbiA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gW2pzb24udGl0bGVdO1xuXG4gICAgb3V0cHV0LnB1c2goJy0nLnJlcGVhdChqc29uLnRpdGxlLmxlbmd0aCkpO1xuICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICBvdXRwdXQucHVzaCgnKFN1bW1hcnkpJyk7XG4gICAgb3V0cHV0LnB1c2goJycpO1xuICAgIG91dHB1dC5wdXNoKHRhYmxlKFtcbiAgICAgIFsnU3RhdHVzJywganNvbi5zdW1tYXJ5LnN0YXR1c10sXG4gICAgICBbJ1BsdWdpbicsIGpzb24uc3VtbWFyeS5wbHVnaW5dLFxuICAgICAgWydWZXJzaW9uJywganNvbi5zdW1tYXJ5LnZlcnNpb25dLFxuICAgICAgLi4uT2JqZWN0LmVudHJpZXMoanNvbi5zdW1tYXJ5Lm1ldGFkYXRhID8/IHt9KSxcbiAgICBdKSk7XG5cbiAgICBpZiAoanNvbi52aW9sYXRpb25zKSB7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgICBvdXRwdXQucHVzaCgnKFZpb2xhdGlvbnMpJyk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdmlvbGF0aW9uIG9mIGpzb24udmlvbGF0aW9ucykge1xuICAgICAgY29uc3Qgb2NjdXJyZW5jZXMgPSB2aW9sYXRpb24udmlvbGF0aW5nQ29uc3RydWN0cy5mbGF0TWFwKGMgPT4gYy5sb2NhdGlvbnMpLmxlbmd0aDtcbiAgICAgIGNvbnN0IHRpdGxlID0gcmVzZXQocmVkKGJyaWdodChgJHt2aW9sYXRpb24ucnVsZU5hbWV9ICgke29jY3VycmVuY2VzfSBvY2N1cnJlbmNlcylgKSkpO1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgICAgb3V0cHV0LnB1c2godGl0bGUpO1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgICAgb3V0cHV0LnB1c2goJyAgT2NjdXJyZW5jZXM6Jyk7XG4gICAgICBmb3IgKGNvbnN0IGNvbnN0cnVjdCBvZiB2aW9sYXRpb24udmlvbGF0aW5nQ29uc3RydWN0cykge1xuICAgICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgICAgIG91dHB1dC5wdXNoKGAgICAgLSBDb25zdHJ1Y3QgUGF0aDogJHtjb25zdHJ1Y3QuY29uc3RydWN0UGF0aCA/PyAnTi9BJ31gKTtcbiAgICAgICAgb3V0cHV0LnB1c2goYCAgICAtIE1hbmlmZXN0IFBhdGg6ICR7Y29uc3RydWN0Lm1hbmlmZXN0UGF0aH1gKTtcbiAgICAgICAgb3V0cHV0LnB1c2goYCAgICAtIFJlc291cmNlIE5hbWU6ICR7Y29uc3RydWN0LnJlc291cmNlTmFtZX1gKTtcbiAgICAgICAgaWYgKGNvbnN0cnVjdC5sb2NhdGlvbnMpIHtcbiAgICAgICAgICBvdXRwdXQucHVzaCgnICAgIC0gTG9jYXRpb25zOicpO1xuICAgICAgICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgY29uc3RydWN0LmxvY2F0aW9ucykge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2goYCAgICAgID4gJHtsb2NhdGlvbn1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIG91dHB1dC5wdXNoKGAgIFJlY29tbWVuZGF0aW9uOiAke3Zpb2xhdGlvbi5yZWNvbW1lbmRhdGlvbn1gKTtcbiAgICAgIG91dHB1dC5wdXNoKGAgIEhvdyB0byBmaXg6ICR7dmlvbGF0aW9uLmZpeH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4ob3MuRU9MKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0aGUgcmVwb3J0IGludG8gYSBKU09OIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyB0b0pzb24oKTogVmFsaWRhdGlvblJlcG9ydEpzb24ge1xuICAgIGlmICghdGhpcy5fc3VtbWFyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZGV0ZXJtaW5lIHJlcG9ydCByZXN1bHQ6IFJlcG9ydCBpcyBpbmNvbXBsZXRlLiBDYWxsIFxcJ3JlcG9ydC5zdWJtaXRcXCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiBgVmFsaWRhdGlvbiBSZXBvcnQgKCR7dGhpcy5wa2d9QCR7dGhpcy52ZXJzaW9ufSlgLFxuICAgICAgdmlvbGF0aW9uczogdGhpcy52aW9sYXRpb25zLFxuICAgICAgc3VtbWFyeTogdGhpcy5fc3VtbWFyeSxcbiAgICB9O1xuICB9XG5cbn1cblxuLyoqXG4gKiBVdGlsaXkgY2xhc3MgZm9yIGxvYWRpbmcgdmFsaWRhdGlvbiBwbHVnaW5zLlxuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvblBsdWdpbiB7XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIHZhbGlkYXRpb24gcGx1Z2luIGFuZCBjcmVhdGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IGZvciBpdHMgZXhlY3V0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkKFxuICAgIHZhbGlkYXRpb246IFZhbGlkYXRpb25Db25maWcsXG4gICAgYXBwOiBTeW50aGVzaXplZEFwcCxcbiAgICBzdGRvdXQ6IGJvb2xlYW4sXG4gICAgcGx1Z2luTWFuYWdlcjogUGx1Z2luTWFuYWdlcik6IHsgcGx1Z2luOiBWYWxpZGF0aW9uOyBjb250ZXh0OiBWYWxpZGF0aW9uQ29udGV4dCB9IHtcblxuICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbk1hbmFnZXIubG9hZCh7XG4gICAgICBwa2c6IHZhbGlkYXRpb24ucGFja2FnZSxcbiAgICAgIHZlcnNpb246IHZhbGlkYXRpb24udmVyc2lvbixcbiAgICAgIGNsYXNzOiB2YWxpZGF0aW9uLmNsYXNzLFxuICAgICAgcHJvcGVydGllczogdmFsaWRhdGlvbi5wcm9wZXJ0aWVzLFxuICAgICAgaW5zdGFsbEVudjogdmFsaWRhdGlvbi5pbnN0YWxsRW52LFxuICAgIH0pO1xuXG4gICAgaWYgKHR5cGVvZigocGx1Z2luLmluc3RhbmNlIGFzIGFueSkudmFsaWRhdGUpICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIG9mIGNsYXNzICcke3ZhbGlkYXRpb24uY2xhc3N9JyBmcm9tIHBhY2thZ2UgJyR7dmFsaWRhdGlvbi5wYWNrYWdlfUAke3ZhbGlkYXRpb24udmVyc2lvbn0nIGlzIG5vdCBhIHZhbGlkYXRpb24gcGx1Z2luLiBBcmUgeW91IHN1cmUgeW91IHNwZWNpZmllZCB0aGUgY29ycmVjdCBjbGFzcz9gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IGFwcC5jb25zdHJ1Y3RNZXRhZGF0YSA/IHRoaXMubG9hZENvbnN0cnVjdE1ldGFkYXRhKGFwcC5jb25zdHJ1Y3RNZXRhZGF0YSkgOiB7fTtcbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IFZhbGlkYXRpb25Db250ZXh0KGFwcC5tYW5pZmVzdHMsIHBsdWdpbi5wYWNrYWdlLnBrZywgcGx1Z2luLnBhY2thZ2UudmVyc2lvbiwgbWV0YWRhdGEsIHN0ZG91dCk7XG4gICAgcmV0dXJuIHsgcGx1Z2luOiBwbHVnaW4uaW5zdGFuY2UgYXMgVmFsaWRhdGlvbiwgY29udGV4dCB9O1xuXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsb2FkQ29uc3RydWN0TWV0YWRhdGEoY29uc3RydWN0TWV0YWRhdGFQYXRoOiBzdHJpbmcpOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IFJlc291cmNlQ29uc3RydWN0TWV0YWRhdGEgfSB7XG4gICAgY29uc3QgY29udGVudHMgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjb25zdHJ1Y3RNZXRhZGF0YVBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkpO1xuICAgIGNvbnN0IHJlc291cmNlczogeyBba2V5OiBzdHJpbmddOiBSZXNvdXJjZUNvbnN0cnVjdE1ldGFkYXRhIH0gPSB7fTtcbiAgICBpZiAoY29udGVudHMudmVyc2lvbiAhPT0gJzEuMC4wJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZlcnNpb24gb2YgY29uc3RydWN0IG1ldGFkYXRhIGF0ICR7Y29uc3RydWN0TWV0YWRhdGFQYXRofTogJHtjb250ZW50cy52ZXJzaW9ufS4gU3VwcG9ydGVkIHZlcnNpb25zIGFyZTogWzEuMC4wXWApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBtZXRhZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoY29udGVudHMucmVzb3VyY2VzKSkge1xuICAgICAgcmVzb3VyY2VzW25hbWVdID0geyBwYXRoOiAobWV0YWRhdGEgYXMgYW55KS5wYXRoIH07XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZXM7XG5cbiAgfVxuXG59XG5cbi8qKlxuICogQ29uc3RydWN0IHJlbGF0ZWQgbWV0YWRhdGEgb24gcmVzb3VyY2VzLlxuICovXG5pbnRlcmZhY2UgUmVzb3VyY2VDb25zdHJ1Y3RNZXRhZGF0YSB7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBjb25zdHJ1Y3QgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG59XG5cbmZ1bmN0aW9uIHJlc2V0KHM6IHN0cmluZykge1xuICByZXR1cm4gYCR7c31cXHgxYlswbWA7XG59XG5cbmZ1bmN0aW9uIHJlZChzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBcXHgxYlszMW0ke3N9YDtcbn1cblxuZnVuY3Rpb24gYnJpZ2h0KHM6IHN0cmluZykge1xuICByZXR1cm4gYFxceDFiWzFtJHtzfWA7XG59Il19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW5zL3ZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLGlDQUE4QjtBQUM5QiwyQ0FBNkI7QUFLN0I7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQWdCNUI7SUFFRTs7T0FFRztJQUNhLFNBQTRCO0lBRTVDOztPQUVHO0lBQ2EsR0FBVztJQUUzQjs7T0FFRztJQUNhLE9BQWU7SUFFL0I7O09BRUc7SUFDYSxXQUFnRSxFQUFFO0lBRWxGOztPQUVHO0lBQ2EsTUFBZ0I7UUFwQmhCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBSzVCLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFLWCxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBS2YsYUFBUSxHQUFSLFFBQVEsQ0FBMEQ7UUFLbEUsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUVoQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sYUFBYSxDQUFDLFlBQW9CO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxD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UUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRixNQUFNLFNBQVMsR0FBaUQsRUFBRSxDQUFDO1FBQ25FLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MscUJBQXFCLEtBQUssUUFBUSxDQUFDLE9BQU8sbUNBQW1DLENBQUMsQ0FBQztTQUMvSTtRQUNELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNqRSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUcsUUFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwRDtRQUNELE9BQU8sU0FBUyxDQUFDO0lBRW5CLENBQUM7Q0FFRjtBQTFDRCw0Q0EwQ0M7QUFjRCxTQUFTLEtBQUssQ0FBQyxDQUFTO0lBQ3RCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUN2QixDQUFDO0FBRUQsU0FBUyxHQUFHLENBQUMsQ0FBUztJQUNwQixPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLENBQVM7SUFDdkIsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgeyB0YWJsZSB9IGZyb20gJ3RhYmxlJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBQbHVnaW5NYW5hZ2VyIH0gZnJvbSAnLi9fbWFuYWdlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IFN5bnRoZXNpemVkQXBwIH0gZnJvbSAnLi4vdXRpbCc7XG5cbi8qKlxuICogQ29udGV4dCBhdmFpbGFibGUgdG8gcGx1Z2lucyBkdXJpbmcgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25Db250ZXh0IHtcblxuICAvKipcbiAgICogUmVwb3J0IGVtaXR0ZWQgYnkgdGhlIHZhbGlkYXRpb24uXG4gICAqXG4gICAqIFBsdWdpbnMgc2hvdWxkIGludGVyYWN0IHdpdGggdGhpcyBvYmplY3QgdG8gZ2VuZXJhdGUgdGhlIHJlcG9ydC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXBvcnQ6IFZhbGlkYXRpb25SZXBvcnQ7XG5cbiAgLyoqXG4gICAqIExvZ2dlciBmb3IgdGhlIHZhbGlkYXRpb24uXG4gICAqXG4gICAqIFBsdWdpbnMgc2hvdWxkIGludGVyYWN0IHdpdGggdGhpcyBvYmplY3QgdG8gbG9nIG1lc3NhZ2VzIGR1cmluZyB2YWxpZGF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxvZ2dlcjogVmFsaWRhdGlvbkxvZ2dlcjtcblxuICBjb25zdHJ1Y3RvcihcblxuICAgIC8qKlxuICAgICAqIFRoZSBsaXN0IG9mIG1hbmlmZXN0cyB0byB2YWxpZGF0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWFuaWZlc3RzOiByZWFkb25seSBzdHJpbmdbXSxcblxuICAgIC8qKlxuICAgICAqIFRoZSBOb2RlSlMgcGFja2FnZSBuYW1lIG9mIHRoZSBwbHVnaW4gcnVubmluZyB0aGUgdmFsaWRhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcGtnOiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgTm9kZUpTIHBhY2thZ2UgdGhhdCBydW5zIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3QgbWV0YWRhdGEgb2YgcmVzb3VyY2VzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWV0YWRhdGE6IHtyZWFkb25seSBba2V5OiBzdHJpbmddOiBSZXNvdXJjZUNvbnN0cnVjdE1ldGFkYXRhfSA9IHt9LFxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHN5bnRoIGNvbW1hbmQgd2FzIGV4ZWN1dGVkIHdpdGggLS1zdGRvdXQuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN0ZG91dD86IGJvb2xlYW4pIHtcblxuICAgIHRoaXMucmVwb3J0ID0gbmV3IFZhbGlkYXRpb25SZXBvcnQodGhpcy5wa2csIHRoaXMudmVyc2lvbiwgdGhpcy5tZXRhZGF0YSA/PyB7fSwgc3Rkb3V0ID8/IGZhbHNlKTtcbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBWYWxpZGF0aW9uTG9nZ2VyKCk7XG4gIH1cblxuICBwdWJsaWMgcGFyc2VNYW5pZmVzdChtYW5pZmVzdFBhdGg6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBwYXJzZWQgPSB5YW1sLnBhcnNlQWxsRG9jdW1lbnRzKGZzLnJlYWRGaWxlU3luYyhtYW5pZmVzdFBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkpO1xuICAgIGNvbnN0IHJlc291cmNlcyA9IEFycmF5LmlzQXJyYXkocGFyc2VkKSA/IHBhcnNlZCA6IFtwYXJzZWRdO1xuICAgIHJldHVybiByZXNvdXJjZXMubWFwKHIgPT4gci50b0pTKCkpO1xuICB9XG59XG5cbi8qKlxuICogTG9nZ2VyIGF2YWlsYWJsZSB0byBwbHVnaW5zIGR1cmluZyB2YWxpZGF0aW9uLiBVc2UgdGhpcyBpbnN0ZWFkIG9mIGBjb25zb2xlLmxvZ2AuXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uTG9nZ2VyIHtcblxuICAvKipcbiAgICogTG9nIGEgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBsb2cobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb250cmFjdCBiZXR3ZWVuIGNkazhzIGFuZCB0aGlyZC1wYXJ0aWVzIGxvb2tpbmcgdG8gaW1wbGVtZW50IHZhbGlkYXRpb24gcGx1Z2lucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uIHtcblxuICAvKipcbiAgICogUnVuIHRoZSB2YWxpZGF0aW9uIGxvZ2ljLlxuICAgKlxuICAgKiAtIFVzZSBgY29udGV4dC5tYW5pZmVzdHNgIHRvIHJldHJpZXZlIHRoZSBsaXN0IG9mIG1hbmlmZXN0cyB0byB2YWxpZGF0ZS5cbiAgICogLSBVc2UgYGNvbnRleHQucmVwb3J0YCB0byBhY2Nlc3MgYW5kIGJ1aWxkIHRoZSByZXN1bHRpbmcgcmVwb3J0LlxuICAgKlxuICAgKiBNYWtlIHN1cmUgdG8gY2FsbCBgY29udGV4dC5yZXBvcnQucGFzcygpYCBvciBgY29udGV4dC5yZXBvcnQuZmFpbCgpYCBiZWZvcmUgcmV0dXJuaW5nLCBvdGhlcndpc2UgdGhlIHZhbGlkYXRpb24gaXMgY29uc2lkZXJlZCBpbmNvbXBsZXRlLlxuICAgKi9cbiAgdmFsaWRhdGUoY29udGV4dDogVmFsaWRhdGlvbkNvbnRleHQpOiBQcm9taXNlPHZvaWQ+O1xuXG59XG5cbi8qKlxuICogUmVzb3VyY2UgdmlvbGF0aW5nIGEgc3BlY2lmaWMgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uVmlvbGF0aW5nUmVzb3VyY2Uge1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb25zIGluIGl0cyBjb25maWcgdGhhdCBwb3NlIHRoZSB2aW9sYXRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb25zOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG1hbmlmZXN0IHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZCBpbi5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0UGF0aDogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29uc3RydWN0IHZpb2xhdGluZyBhIHNwZWNpZmljIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblZpb2xhdGluZ0NvbnN0cnVjdCBleHRlbmRzIFZhbGlkYXRpb25WaW9sYXRpbmdSZXNvdXJjZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdHJ1Y3QgcGF0aCBhcyBkZWZpbmVkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdFBhdGg/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBWaW9sYXRpb24gcHJvZHVjZWQgYnkgdGhlIHZhbGlkYXRpb24gcGx1Z2luLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25WaW9sYXRpb24ge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcnVsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWNvbW1lbmRhdGlvbiB0byByZXNvbHZlIHRoZSB2aW9sYXRpb24uXG4gICAqL1xuICByZWFkb25seSByZWNvbW1lbmRhdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3cgdG8gZml4IHRoZSByZWNvbW1lbmRhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2VzIHZpb2xhdGluZyB0aGlzIHJ1bGUuXG4gICAqL1xuICByZWFkb25seSB2aW9sYXRpbmdSZXNvdXJjZXM6IHJlYWRvbmx5IFZhbGlkYXRpb25WaW9sYXRpbmdSZXNvdXJjZVtdO1xuXG59XG5cbi8qKlxuICogVmFsaWRhdGlvbiBwcm9kdWNlZCBieSB0aGUgdmFsaWRhdGlvbiBwbHVnaW4sIGluIGNvbnN0cnVjdCB0ZXJtcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uVmlvbGF0aW9uQ29uc3RydWN0QXdhcmUgZXh0ZW5kcyBPbWl0PFZhbGlkYXRpb25WaW9sYXRpb24sICd2aW9sYXRpbmdSZXNvdXJjZXMnPiB7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdHJ1Y3RzIHZpb2xhdGluZyB0aGlzIHJ1bGUuXG4gICAqL1xuICByZWFkb25seSB2aW9sYXRpbmdDb25zdHJ1Y3RzOiByZWFkb25seSBWYWxpZGF0aW9uVmlvbGF0aW5nQ29uc3RydWN0W107XG59XG5cbi8vIHdlIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGFuIGVudW0gc28gdGhhdFxuLy8gcGx1Z2lucyBkb24ndCBoYXZlIHRvIGltcG9ydCB0aGUgY2xpIGF0IHJ1bnRpbWUuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVwb3J0U3RhdHVzID0gJ3N1Y2Nlc3MnIHwgJ2ZhaWx1cmUnO1xuXG4vKipcbiAqIFN1bW1hcnkgb2YgdGhlIHJlcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUmVwb3J0U3VtbWFyeSB7XG5cbiAgcmVhZG9ubHkgc3RhdHVzOiBWYWxpZGF0aW9uUmVwb3J0U3RhdHVzO1xuXG4gIHJlYWRvbmx5IHBsdWdpbjogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICByZWFkb25seSBtZXRhZGF0YT86IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbn1cblxuLyoqXG4gKiBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvcnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJlcG9ydEpzb24ge1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgdGl0bGUuXG4gICAqL1xuICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHZpb2xhdGlvbnMgaW4gdGhlIHJlcnBvdC5cbiAgICovXG4gIHJlYWRvbmx5IHZpb2xhdGlvbnM6IHJlYWRvbmx5IFZhbGlkYXRpb25WaW9sYXRpb25Db25zdHJ1Y3RBd2FyZVtdO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgc3VtbWFyeS5cbiAgICovXG4gIHJlYWRvbmx5IHN1bW1hcnk6IFZhbGlkYXRpb25SZXBvcnRTdW1tYXJ5O1xuXG59XG5cbi8qKlxuICogVGhlIHJlcG9ydCBlbWl0dGVkIGJ5IHRoZSBwbHVnaW4gYWZ0ZXIgZXZhbHVhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25SZXBvcnQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdmlvbGF0aW9uczogVmFsaWRhdGlvblZpb2xhdGlvbkNvbnN0cnVjdEF3YXJlW10gPSBbXTtcblxuICBwcml2YXRlIF9zdW1tYXJ5PzogVmFsaWRhdGlvblJlcG9ydFN1bW1hcnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwa2c6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhOiB7cmVhZG9ubHkgW2tleTogc3RyaW5nXTogUmVzb3VyY2VDb25zdHJ1Y3RNZXRhZGF0YX0sXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGRvdXQ6IGJvb2xlYW4pIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB2aW9sYXRpb24gdG8gdGhlIHJlcG9ydC5cbiAgICovXG4gIHB1YmxpYyBhZGRWaW9sYXRpb24odmlvbGF0aW9uOiBWYWxpZGF0aW9uVmlvbGF0aW9uKSB7XG4gICAgaWYgKHRoaXMuX3N1bW1hcnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmlvbGF0aW9ucyBjYW5ub3QgYmUgYWRkZWQgdG8gcmVwb3J0IGFmdGVyIGl0cyBzdWJtaXR0ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB2aW9sYXRpbmdDb25zdHJ1Y3RzOiBWYWxpZGF0aW9uVmlvbGF0aW5nQ29uc3RydWN0W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcmVzb3VyY2Ugb2YgdmlvbGF0aW9uLnZpb2xhdGluZ1Jlc291cmNlcykge1xuICAgICAgY29uc3QgY29uc3RydWN0UGF0aCA9IHRoaXMubWV0YWRhdGFbcmVzb3VyY2UucmVzb3VyY2VOYW1lXT8ucGF0aDtcbiAgICAgIHZpb2xhdGluZ0NvbnN0cnVjdHMucHVzaCh7XG4gICAgICAgIC4uLnJlc291cmNlLFxuXG4gICAgICAgIC8vIGF1Z21lbnQgd2l0aCBjb25zdHJ1Y3QgbWV0YWRhdGFcbiAgICAgICAgY29uc3RydWN0UGF0aDogY29uc3RydWN0UGF0aCxcblxuICAgICAgICAvLyBpZiBzeW50aCBpcyBleGVjdXRlZCB3aXRoIC0tc3Rkb3V0LCB0aGUgbWFuaWZlc3QgcGF0aFxuICAgICAgICAvLyBoZXJlIGlzIHRlbXBvcmFyeSBhbmQgd2lsbCBiZSBkZWxldGVkIG9uY2UgdGhlIGNvbW1hbmQgZmluaXNoZXMuXG4gICAgICAgIG1hbmlmZXN0UGF0aDogdGhpcy5zdGRvdXQgPyAnU1RET1VUJyA6IHJlc291cmNlLm1hbmlmZXN0UGF0aCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudmlvbGF0aW9ucy5wdXNoKHtcbiAgICAgIHJ1bGVOYW1lOiB2aW9sYXRpb24ucnVsZU5hbWUsXG4gICAgICByZWNvbW1lbmRhdGlvbjogdmlvbGF0aW9uLnJlY29tbWVuZGF0aW9uLFxuICAgICAgdmlvbGF0aW5nQ29uc3RydWN0czogdmlvbGF0aW5nQ29uc3RydWN0cyxcbiAgICAgIGZpeDogdmlvbGF0aW9uLmZpeCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgdGhlIHJlcG9ydCB3aXRoIGEgc3RhdHVzIGFuZCBhZGRpdGlvbmFsIG1ldGFkYXRhLlxuICAgKi9cbiAgcHVibGljIHN1Ym1pdChzdGF0dXM6IFZhbGlkYXRpb25SZXBvcnRTdGF0dXMsIG1ldGFkYXRhPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX3N1bW1hcnkgPSB7IHN0YXR1cywgcGx1Z2luOiB0aGlzLnBrZywgdmVyc2lvbjogdGhpcy52ZXJzaW9uLCBtZXRhZGF0YSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSByZXBvcnQgd2FzIHN1Y2Nlc3NmdWxsLlxuICAgKi9cbiAgcHVibGljIGdldCBzdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5fc3VtbWFyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZGV0ZXJtaW5lIHJlcG9ydCBzdGF0dXM6IFJlcG9ydCBpcyBpbmNvbXBsZXRlLiBDYWxsIFxcJ3JlcG9ydC5zdWJtaXRcXCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3N1bW1hcnkuc3RhdHVzID09PSAnc3VjY2Vzcyc7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHRoZSByZXBvcnQgdG8gYSB3ZWxsIGZvcm1hdHRlZCB0YWJsZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IGpzb24gPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IG91dHB1dCA9IFtqc29uLnRpdGxlXTtcblxuICAgIG91dHB1dC5wdXNoKCctJy5yZXBlYXQoanNvbi50aXRsZS5sZW5ndGgpKTtcbiAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgb3V0cHV0LnB1c2goJyhTdW1tYXJ5KScpO1xuICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICBvdXRwdXQucHVzaCh0YWJsZShbXG4gICAgICBbJ1N0YXR1cycsIGpzb24uc3VtbWFyeS5zdGF0dXNdLFxuICAgICAgWydQbHVnaW4nLCBqc29uLnN1bW1hcnkucGx1Z2luXSxcbiAgICAgIFsnVmVyc2lvbicsIGpzb24uc3VtbWFyeS52ZXJzaW9uXSxcbiAgICAgIC4uLk9iamVjdC5lbnRyaWVzKGpzb24uc3VtbWFyeS5tZXRhZGF0YSA/PyB7fSksXG4gICAgXSkpO1xuXG4gICAgaWYgKGpzb24udmlvbGF0aW9ucykge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgICAgb3V0cHV0LnB1c2goJyhWaW9sYXRpb25zKScpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHZpb2xhdGlvbiBvZiBqc29uLnZpb2xhdGlvbnMpIHtcbiAgICAgIGNvbnN0IG9jY3VycmVuY2VzID0gdmlvbGF0aW9uLnZpb2xhdGluZ0NvbnN0cnVjdHMuZmxhdE1hcChjID0+IGMubG9jYXRpb25zKS5sZW5ndGg7XG4gICAgICBjb25zdCB0aXRsZSA9IHJlc2V0KHJlZChicmlnaHQoYCR7dmlvbGF0aW9uLnJ1bGVOYW1lfSAoJHtvY2N1cnJlbmNlc30gb2NjdXJyZW5jZXMpYCkpKTtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIG91dHB1dC5wdXNoKHRpdGxlKTtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIG91dHB1dC5wdXNoKCcgIE9jY3VycmVuY2VzOicpO1xuICAgICAgZm9yIChjb25zdCBjb25zdHJ1Y3Qgb2YgdmlvbGF0aW9uLnZpb2xhdGluZ0NvbnN0cnVjdHMpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgICAgICBvdXRwdXQucHVzaChgICAgIC0gQ29uc3RydWN0IFBhdGg6ICR7Y29uc3RydWN0LmNvbnN0cnVjdFBhdGggPz8gJ04vQSd9YCk7XG4gICAgICAgIG91dHB1dC5wdXNoKGAgICAgLSBNYW5pZmVzdCBQYXRoOiAke2NvbnN0cnVjdC5tYW5pZmVzdFBhdGh9YCk7XG4gICAgICAgIG91dHB1dC5wdXNoKGAgICAgLSBSZXNvdXJjZSBOYW1lOiAke2NvbnN0cnVjdC5yZXNvdXJjZU5hbWV9YCk7XG4gICAgICAgIGlmIChjb25zdHJ1Y3QubG9jYXRpb25zKSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goJyAgICAtIExvY2F0aW9uczonKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGNvbnN0cnVjdC5sb2NhdGlvbnMpIHtcbiAgICAgICAgICAgIG91dHB1dC5wdXNoKGAgICAgICA+ICR7bG9jYXRpb259YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgICBvdXRwdXQucHVzaChgICBSZWNvbW1lbmRhdGlvbjogJHt2aW9sYXRpb24ucmVjb21tZW5kYXRpb259YCk7XG4gICAgICBvdXRwdXQucHVzaChgICBIb3cgdG8gZml4OiAke3Zpb2xhdGlvbi5maXh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dC5qb2luKG9zLkVPTCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdGhlIHJlcG9ydCBpbnRvIGEgSlNPTiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IFZhbGlkYXRpb25SZXBvcnRKc29uIHtcbiAgICBpZiAoIXRoaXMuX3N1bW1hcnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVybWluZSByZXBvcnQgcmVzdWx0OiBSZXBvcnQgaXMgaW5jb21wbGV0ZS4gQ2FsbCBcXCdyZXBvcnQuc3VibWl0XFwnJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogYFZhbGlkYXRpb24gUmVwb3J0ICgke3RoaXMucGtnfUAke3RoaXMudmVyc2lvbn0pYCxcbiAgICAgIHZpb2xhdGlvbnM6IHRoaXMudmlvbGF0aW9ucyxcbiAgICAgIHN1bW1hcnk6IHRoaXMuX3N1bW1hcnksXG4gICAgfTtcbiAgfVxuXG59XG5cbi8qKlxuICogVXRpbGl5IGNsYXNzIGZvciBsb2FkaW5nIHZhbGlkYXRpb24gcGx1Z2lucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25QbHVnaW4ge1xuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSB2YWxpZGF0aW9uIHBsdWdpbiBhbmQgY3JlYXRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCBmb3IgaXRzIGV4ZWN1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZChcbiAgICB2YWxpZGF0aW9uOiBWYWxpZGF0aW9uQ29uZmlnLFxuICAgIGFwcDogU3ludGhlc2l6ZWRBcHAsXG4gICAgc3Rkb3V0OiBib29sZWFuLFxuICAgIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIpOiB7IHBsdWdpbjogVmFsaWRhdGlvbjsgY29udGV4dDogVmFsaWRhdGlvbkNvbnRleHQgfSB7XG5cbiAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5NYW5hZ2VyLmxvYWQoe1xuICAgICAgcGtnOiB2YWxpZGF0aW9uLnBhY2thZ2UsXG4gICAgICB2ZXJzaW9uOiB2YWxpZGF0aW9uLnZlcnNpb24sXG4gICAgICBjbGFzczogdmFsaWRhdGlvbi5jbGFzcyxcbiAgICAgIHByb3BlcnRpZXM6IHZhbGlkYXRpb24ucHJvcGVydGllcyxcbiAgICAgIGluc3RhbGxFbnY6IHZhbGlkYXRpb24uaW5zdGFsbEVudixcbiAgICB9KTtcblxuICAgIGlmICh0eXBlb2YoKHBsdWdpbi5pbnN0YW5jZSBhcyBhbnkpLnZhbGlkYXRlKSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSBvZiBjbGFzcyAnJHt2YWxpZGF0aW9uLmNsYXNzfScgZnJvbSBwYWNrYWdlICcke3ZhbGlkYXRpb24ucGFja2FnZX1AJHt2YWxpZGF0aW9uLnZlcnNpb259JyBpcyBub3QgYSB2YWxpZGF0aW9uIHBsdWdpbi4gQXJlIHlvdSBzdXJlIHlvdSBzcGVjaWZpZWQgdGhlIGNvcnJlY3QgY2xhc3M/YCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YWRhdGEgPSBhcHAuY29uc3RydWN0TWV0YWRhdGEgPyB0aGlzLmxvYWRDb25zdHJ1Y3RNZXRhZGF0YShhcHAuY29uc3RydWN0TWV0YWRhdGEpIDoge307XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBWYWxpZGF0aW9uQ29udGV4dChhcHAubWFuaWZlc3RzLCBwbHVnaW4ucGFja2FnZS5wa2csIHBsdWdpbi5wYWNrYWdlLnZlcnNpb24sIG1ldGFkYXRhLCBzdGRvdXQpO1xuICAgIHJldHVybiB7IHBsdWdpbjogcGx1Z2luLmluc3RhbmNlIGFzIFZhbGlkYXRpb24sIGNvbnRleHQgfTtcblxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZENvbnN0cnVjdE1ldGFkYXRhKGNvbnN0cnVjdE1ldGFkYXRhUGF0aDogc3RyaW5nKTogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBSZXNvdXJjZUNvbnN0cnVjdE1ldGFkYXRhIH0ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY29uc3RydWN0TWV0YWRhdGFQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcbiAgICBjb25zdCByZXNvdXJjZXM6IHsgW2tleTogc3RyaW5nXTogUmVzb3VyY2VDb25zdHJ1Y3RNZXRhZGF0YSB9ID0ge307XG4gICAgaWYgKGNvbnRlbnRzLnZlcnNpb24gIT09ICcxLjAuMCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2ZXJzaW9uIG9mIGNvbnN0cnVjdCBtZXRhZGF0YSBhdCAke2NvbnN0cnVjdE1ldGFkYXRhUGF0aH06ICR7Y29udGVudHMudmVyc2lvbn0uIFN1cHBvcnRlZCB2ZXJzaW9ucyBhcmU6IFsxLjAuMF1gKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBbbmFtZSwgbWV0YWRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRlbnRzLnJlc291cmNlcykpIHtcbiAgICAgIHJlc291cmNlc1tuYW1lXSA9IHsgcGF0aDogKG1ldGFkYXRhIGFzIGFueSkucGF0aCB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VzO1xuXG4gIH1cblxufVxuXG4vKipcbiAqIENvbnN0cnVjdCByZWxhdGVkIG1ldGFkYXRhIG9uIHJlc291cmNlcy5cbiAqL1xuaW50ZXJmYWNlIFJlc291cmNlQ29uc3RydWN0TWV0YWRhdGEge1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgY29uc3RydWN0IGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxufVxuXG5mdW5jdGlvbiByZXNldChzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGAke3N9XFx4MWJbMG1gO1xufVxuXG5mdW5jdGlvbiByZWQoczogc3RyaW5nKSB7XG4gIHJldHVybiBgXFx4MWJbMzFtJHtzfWA7XG59XG5cbmZ1bmN0aW9uIGJyaWdodChzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBcXHgxYlsxbSR7c31gO1xufSJdfQ==
|
package/lib/reviver.js
CHANGED
|
@@ -9,9 +9,8 @@ exports.SafeReviver = void 0;
|
|
|
9
9
|
*/
|
|
10
10
|
class SafeReviver {
|
|
11
11
|
constructor(props) {
|
|
12
|
-
|
|
13
|
-
this.
|
|
14
|
-
this.sanitizers = (_b = props === null || props === void 0 ? void 0 : props.sanitizers) !== null && _b !== void 0 ? _b : [];
|
|
12
|
+
this.allowlistedKeys = props?.allowlistedKeys ?? [];
|
|
13
|
+
this.sanitizers = props?.sanitizers ?? [];
|
|
15
14
|
}
|
|
16
15
|
sanitizeValue(path, value) {
|
|
17
16
|
for (const sanitizer of this.sanitizers) {
|
|
@@ -95,4 +94,4 @@ SafeReviver.LEGAL_CHAR_SANITIZER = (path, value) => {
|
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2aXZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXZpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWNBOzs7OztHQUtHO0FBQ0gsTUFBYSxXQUFXO0lBc0R0QixZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQWMsRUFBRSxLQUFhO1FBQ2hELEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2QyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7YUFDbEI7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLEdBQVE7UUFDdEIsSUFBSSxHQUFHLElBQUksSUFBSTtZQUFFLE9BQU87UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFjLEVBQUUsVUFBZTtRQUNsRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyRCxJQUFJLE9BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsc0NBQXNDLE9BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0Y7WUFFRCxJQUFJLENBQUMs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XG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YWx1ZSBhbmQgdGhlIHBhdGggdG8gaXQgd2l0aGluIHRoZSBwYXJlbnQgb2JqZWN0LFxuICogYW5kIGVpdGhlciB0cmFuc2Zvcm1zIGl0IG9yIGxlYXZlcyBpdCBhbG9uZS5cbiAqL1xuZXhwb3J0IHR5cGUgU2FuaXRpemVyID0gKHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogc3RyaW5nKSA9PiB7IGFwcGxpZWQ6IGJvb2xlYW47IHNhbml0aXplZD86IHN0cmluZyB9O1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yICdTYWZlUmV2aXZlcicuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZVJldml2ZXJQcm9wcyB7XG4gIHJlYWRvbmx5IGFsbG93bGlzdGVkS2V5cz86IHN0cmluZ1tdO1xuICByZWFkb25seSBzYW5pdGl6ZXJzPzogQXJyYXk8U2FuaXRpemVyPjtcbn1cblxuLyoqXG4gKiBKU09OL1lBTUwgcmV2aXZlciB0aGF0OlxuICpcbiAqIC0gVGhyb3dzIHdoZW4gYW4gaWxsZWdhbCBrZXkgaXMgZGV0ZWN0ZWQuXG4gKiAtIFJlcGxhY2VzIGlsbGVnYWwgdmFsdWVzIHdpdGggYSBzcGVjaWFsIG1hcmtlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNhZmVSZXZpdmVyIHtcblxuICAvLyAuIHwgdXNlZCBpbiByZXNvdXJjZSBmcW4gd2hpY2ggc2VydmVycyBhcyBhIGtleSAoZS5nIGlvLms4cy5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5BUElHcm91cClcbiAgLy8gLyB8IHVzZWQgaW4gJHJlZiB0byBwb2ludCB0byBhIGRlZmluaXRpb24gKGUuZyAjL2RlZmluaXRpb25zL2lvLms4cy5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5Hcm91cFZlcnNpb25Gb3JEaXNjb3ZlcnkpXG4gIC8vIC0gfCB1c2VkIGluIGFubm90YXRpb24ga2V5cyAoZS5nIHgta3ViZXJuZXRlcy1ncm91cC12ZXJzaW9uLWtpbmQpXG4gIC8vICMgfCB1c2VkIGluICRyZWYgdG8gcG9pbnQgdG8gYSBkZWZpbml0aW9uIChlLmcgIy9kZWZpbml0aW9ucy9pby5rOHMuYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuR3JvdXBWZXJzaW9uRm9yRGlzY292ZXJ5KVxuICAvLyAsIHwgdXNlZCBpbiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgYSBsaXN0IChlLmcgbWVyZ2UscmV0YWluS2V5cylcbiAgLy8gKyB8IHVzZWQgaW4gdmFsdWVzIHJlcHJlc2VudGluZyBNSU1FIHR5cGVzIChlLmcgYXBwbGljYXRpb24vanNvbi1wYXRjaCtqc29uKVxuICAvLyA6IHwgdXNlZCBpbiBlLmcuIFByb21ldGhldXMgZXZlbnRzIChlLmcgcnVuOmNvbXBsZXRlZClcbiAgLy8gKiB8IHVzZWQgaW4gZS5nLiBBV1MgcG9saWNpZXMgKGUuZyBzMzpPYmplY3RDcmVhdGVkOiopXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTEVHQUxfQ0hBUlMgPSAvXihcXHd8XFwufFxcL3wtfCN8LCkqJC87XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTEVHQUxfQ0hBUlNfSU5fRU5VTSA9IC9eKCB8XFx3fFxcLnxcXC98LXwjfCx8XFwrfDp8XFwqfCF8PXx+KSokLztcblxuICAvLyB0aGUgc3RyaW5nIHdlIHVzZSBhcyB0aGUgc3RyaXBwZWQgdmFsdWVcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVFJJUFBFRF9WQUxVRSA9ICdfX3N0cmlwcGVkX2J5X2NkazhzX18nO1xuXG4gIC8vIHJlbW92ZSBjaGFyYWN0ZXJzIGZyb20gZGVzY3JpcHRpb25zIHRoYXQgbWlnaHQgdGVybWluYXRlIHRoZSBjb21tZW50XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVTQ1JJUFRJT05fU0FOSVRJWkVSOiBTYW5pdGl6ZXIgPSAocGF0aDogc3RyaW5nW10sIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHBhdGhbcGF0aC5sZW5ndGggLSAxXSA9PT0gJ2Rlc2NyaXB0aW9uJykge1xuICAgICAgcmV0dXJuIHsgYXBwbGllZDogdHJ1ZSwgc2FuaXRpemVkOiB2YWx1ZS5yZXBsYWNlKC9cXCpcXC8vZywgJ18vJykgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgYXBwbGllZDogZmFsc2UgfTtcbiAgICB9XG4gIH07XG5cbiAgLy8gc3RyaXAgbW9zdCBpbGxlZ2FsIHZhbHVlc1xuICAvLyB0aGUgcmVhc29uIHdlIGRvbid0IHRocm93IGlzIGJlY2F1c2Ugc29tZXRpbWVzIHRoZXNlIHR5cGUgb2YgdmFsdWVzIGV4aXN0IGluXG4gIC8vIHRoZSBvcmlnaW5hbCB0ZXh0IGZvciBnb29kIHJlYXNvbiwgbGlrZSBmb3IgZXhhbXBsZSBhIGBqc29uUGF0aGAga2V5IGluIGEgQ1JEIG1hbmlmZXN0LCBhbmQgd2UgZG9uJ3RcbiAgLy8gd2FudCB0byBmYWlsIHRoZSBlbnRpcmUgdGhpbmcuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTEVHQUxfQ0hBUl9TQU5JVElaRVI6IFNhbml0aXplciA9IChwYXRoOiBzdHJpbmdbXSwgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIC8vIGNhc2UgMTogd2UgYXJlIGluIGFuIGFycmF5IG9mIGVudW1zXG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMiAmJiBwYXRoW3BhdGgubGVuZ3RoIC0gMl0gPT09ICdlbnVtJyAmJiAvXlxcZCskLy50ZXN0KHBhdGhbcGF0aC5sZW5ndGggLSAxXSkpIHtcblxuICAgICAgaWYgKCFTYWZlUmV2aXZlci5MRUdBTF9DSEFSU19JTl9FTlVNLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGFwcGxpZWQ6IHRydWUsIHNhbml0aXplZDogU2FmZVJldml2ZXIuU1RSSVBQRURfVkFMVUUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7IGFwcGxpZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAvLyBjYXNlIDI6IGRlZmF1bHRcbiAgICB9IGVsc2Uge1xuXG4gICAgICBpZiAoIVNhZmVSZXZpdmVyLkxFR0FMX0NIQVJTLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGFwcGxpZWQ6IHRydWUsIHNhbml0aXplZDogU2FmZVJldml2ZXIuU1RSSVBQRURfVkFMVUUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7IGFwcGxpZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2xpc3RlZEtleXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcnM6IEFycmF5PFNhbml0aXplcj47XG5cbiAgY29uc3RydWN0b3IocHJvcHM/OiBTYWZlUmV2aXZlclByb3BzKSB7XG4gICAgdGhpcy5hbGxvd2xpc3RlZEtleXMgPSBwcm9wcz8uYWxsb3dsaXN0ZWRLZXlzID8/IFtdO1xuICAgIHRoaXMuc2FuaXRpemVycyA9IHByb3BzPy5zYW5pdGl6ZXJzID8/IFtdO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXplVmFsdWUocGF0aDogc3RyaW5nW10sIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGZvciAoY29uc3Qgc2FuaXRpemVyIG9mIHRoaXMuc2FuaXRpemVycykge1xuICAgICAgY29uc3QgeyBhcHBsaWVkLCBzYW5pdGl6ZWQgfSA9IHNhbml0aXplcihwYXRoLCB2YWx1ZSk7XG4gICAgICBpZiAoYXBwbGllZCkge1xuICAgICAgICByZXR1cm4gc2FuaXRpemVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZXMgYSBKU09OIG9iamVjdCBpbi1wbGFjZS5cbiAgICovXG4gIHB1YmxpYyBzYW5pdGl6ZShvYmo6IGFueSkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMuX3Nhbml0aXplT2JqKFtdLCBvYmopO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2FuaXRpemVPYmoocGF0aDogc3RyaW5nW10sIHBhcnRpYWxPYmo6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnRpYWxPYmopKSB7XG4gICAgICBpZiAodHlwZW9mKGtleSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQga2V5ICgke2tleX0pIHRvIGJlIG9mIHR5cGUgJ3N0cmluZycsIGJ1dCBnb3QgJyR7dHlwZW9mKGtleSl9J2ApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuYWxsb3dsaXN0ZWRLZXlzLmluY2x1ZGVzKGtleSkgJiYgIVNhZmVSZXZpdmVyLkxFR0FMX0NIQVJTLnRlc3Qoa2V5KSkge1xuICAgICAgICAvLyBrZXlzIGNhbm5vdCBiZSBzdHJpcHBlZCBzbyB3ZSBoYXZlIHRvIHRocm93IC0gdGhhdHMgb2ssIHdlIGRvbid0IHdhbnQgdG8gcGFyc2Ugc3VjaCBkb2NzIGF0IGFsbFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSAnJHtrZXl9JyBjb250YWlucyBub24gc3RhbmRhcmQgY2hhcmFjdGVycyAoTXVzdCBtYXRjaCByZWdleCAnJHtTYWZlUmV2aXZlci5MRUdBTF9DSEFSU30nKWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjaGlsZFBhdGggPSBwYXRoLmNvbmNhdChba2V5XSk7XG5cbiAgICAgIGlmICh0eXBlb2YodmFsdWUpID09PSAnc3RyaW5nJykge1xuICAgICAgICBwYXJ0aWFsT2JqW2tleV0gPSB0aGlzLnNhbml0aXplVmFsdWUoY2hpbGRQYXRoLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3Nhbml0aXplT2JqKGNoaWxkUGF0aCwgdmFsdWUpOyAvLyByZWN1cnNpdmUgY2FsbFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
package/lib/util.js
CHANGED
|
@@ -38,13 +38,11 @@ const crds_dev_1 = require("./import/crds-dev");
|
|
|
38
38
|
const validation_1 = require("./plugins/validation");
|
|
39
39
|
exports.PREFIX_DELIM = ':=';
|
|
40
40
|
async function shell(program, args = [], options = {}) {
|
|
41
|
-
|
|
42
|
-
const command = `"${program} ${args.join(' ')}" at ${path.resolve((_b = (_a = options.cwd) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '.')}`;
|
|
41
|
+
const command = `"${program} ${args.join(' ')}" at ${path.resolve(options.cwd?.toString() ?? '.')}`;
|
|
43
42
|
return new Promise((ok, ko) => {
|
|
44
|
-
var _a;
|
|
45
43
|
const child = (0, child_process_1.spawn)(program, args, { stdio: ['inherit', 'pipe', 'inherit'], ...options });
|
|
46
44
|
const data = new Array();
|
|
47
|
-
|
|
45
|
+
child.stdout?.on('data', chunk => data.push(chunk));
|
|
48
46
|
child.once('error', err => ko(new Error(`command ${command} failed: ${err}`)));
|
|
49
47
|
child.once('exit', code => {
|
|
50
48
|
if (code === 0) {
|
|
@@ -68,7 +66,6 @@ async function mkdtemp(closure) {
|
|
|
68
66
|
}
|
|
69
67
|
exports.mkdtemp = mkdtemp;
|
|
70
68
|
async function synthApp(command, outdir, stdout, metadata) {
|
|
71
|
-
var _a;
|
|
72
69
|
if (!stdout) {
|
|
73
70
|
console.log('Synthesizing application');
|
|
74
71
|
}
|
|
@@ -79,7 +76,7 @@ async function synthApp(command, outdir, stdout, metadata) {
|
|
|
79
76
|
CDK8S_OUTDIR: outdir,
|
|
80
77
|
// record metadata so that the validation report
|
|
81
78
|
// has contruct aware context.
|
|
82
|
-
CDK8S_RECORD_CONSTRUCT_METADATA:
|
|
79
|
+
CDK8S_RECORD_CONSTRUCT_METADATA: process.env.CDK8S_RECORD_CONSTRUCT_METADATA ?? (metadata ? 'true' : 'false'),
|
|
83
80
|
},
|
|
84
81
|
});
|
|
85
82
|
if (!await fs.pathExists(outdir)) {
|
|
@@ -88,7 +85,7 @@ async function synthApp(command, outdir, stdout, metadata) {
|
|
|
88
85
|
}
|
|
89
86
|
let found = false;
|
|
90
87
|
const yamlFiles = await findManifests(outdir);
|
|
91
|
-
if (yamlFiles
|
|
88
|
+
if (yamlFiles?.length) {
|
|
92
89
|
if (!stdout) {
|
|
93
90
|
for (const yamlFile of yamlFiles) {
|
|
94
91
|
console.log(` - ${yamlFile}`);
|
|
@@ -298,7 +295,7 @@ function isHelmImport(value) {
|
|
|
298
295
|
}
|
|
299
296
|
exports.isHelmImport = isHelmImport;
|
|
300
297
|
function crdsArePresent(imprts) {
|
|
301
|
-
return (imprts
|
|
298
|
+
return (imprts ?? []).some(imprt => (!isK8sImport(imprt) && !isHelmImport(imprt)));
|
|
302
299
|
}
|
|
303
300
|
exports.crdsArePresent = crdsArePresent;
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW9EO0FBQ3BELG1DQUEwRDtBQUMxRCwyQkFBMEM7QUFDMUMsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDZCQUE0QjtBQUM1Qiw2Q0FBK0I7QUFDL0IsMkNBQTZCO0FBRTdCLGdEQUFvRDtBQUVwRCxxREFBeUc7QUFHNUYsUUFBQSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRTFCLEtBQUssVUFBVSxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWlCLEVBQUUsRUFBRSxVQUF3QixFQUFHOztJQUMzRixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBQSxNQUFBLE9BQU8sQ0FBQyxHQUFHLDBDQUFFLFFBQVEsRUFBRSxtQ0FBSSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3BHLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7O1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQUssRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNqQyxNQUFBLEtBQUssQ0FBQyxNQUFNLDBDQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFcEQsS0FBSyxDQUFDLElBQUks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Q2Q7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFORCxvQ0FNQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxNQUE0QjtJQUN6RCxPQUFPLENBQUMsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckYsQ0FBQztBQUZELHdDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24sIFNwYXduT3B0aW9ucyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgQmluYXJ5VG9UZXh0RW5jb2RpbmcsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcHJvbWlzZXMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAndXJsJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBJbXBvcnRTcGVjLCBWYWxpZGF0aW9uQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgbWF0Y2hDcmRzRGV2VXJsIH0gZnJvbSAnLi9pbXBvcnQvY3Jkcy1kZXYnO1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4vcGx1Z2lucy9fbWFuYWdlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uUGx1Z2luLCBWYWxpZGF0aW9uQ29udGV4dCwgVmFsaWRhdGlvblJlcG9ydCwgVmFsaWRhdGlvbiB9IGZyb20gJy4vcGx1Z2lucy92YWxpZGF0aW9uJztcbmltcG9ydCB7IFNhZmVSZXZpdmVyIH0gZnJvbSAnLi9yZXZpdmVyJztcblxuZXhwb3J0IGNvbnN0IFBSRUZJWF9ERUxJTSA9ICc6PSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGVsbChwcm9ncmFtOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdID0gW10sIG9wdGlvbnM6IFNwYXduT3B0aW9ucyA9IHsgfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNvbW1hbmQgPSBgXCIke3Byb2dyYW19ICR7YXJncy5qb2luKCcgJyl9XCIgYXQgJHtwYXRoLnJlc29sdmUob3B0aW9ucy5jd2Q/LnRvU3RyaW5nKCkgPz8gJy4nKX1gO1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24ocHJvZ3JhbSwgYXJncywgeyBzdGRpbzogWydpbmhlcml0JywgJ3BpcGUnLCAnaW5oZXJpdCddLCAuLi5vcHRpb25zIH0pO1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXk8QnVmZmVyPigpO1xuICAgIGNoaWxkLnN0ZG91dD8ub24oJ2RhdGEnLCBjaHVuayA9PiBkYXRhLnB1c2goY2h1bmspKTtcblxuICAgIGNoaWxkLm9uY2UoJ2Vycm9yJywgZXJyID0+IGtvKG5ldyBFcnJvcihgY29tbWFuZCAke2NvbW1hbmR9IGZhaWxlZDogJHtlcnJ9YCkpKTtcbiAgICBjaGlsZC5vbmNlKCdleGl0JywgY29kZSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2soQnVmZmVyLmNvbmNhdChkYXRhKS50b1N0cmluZygndXRmLTgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga28obmV3IEVycm9yKGBjb21tYW5kICR7Y29tbWFuZH0gcmV0dXJuZWQgYSBub24temVybyBleGl0IGNvZGUgJHtjb2RlfWApKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBta2R0ZW1wKGNsb3N1cmU6IChkaXI6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPikge1xuICBjb25zdCB3b3JrZGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGs4cy0nKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2xvc3VyZSh3b3JrZGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUod29ya2Rpcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bnRoQXBwKGNvbW1hbmQ6IHN0cmluZywgb3V0ZGlyOiBzdHJpbmcsIHN0ZG91dDogYm9vbGVhbiwgbWV0YWRhdGE6IGJvb2xlYW4pOiBQcm9taXNlPFN5bnRoZXNpemVkQXBwPiB7XG4gIGlmICghc3Rkb3V0KSB7XG4gICAgY29uc29sZS5sb2coJ1N5bnRoZXNpemluZyBhcHBsaWNhdGlvbicpO1xuICB9XG4gIGF3YWl0IHNoZWxsKGNvbW1hbmQsIFtdLCB7XG4gICAgc2hlbGw6IHRydWUsXG4gICAgZW52OiB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIENESzhTX09VVERJUjogb3V0ZGlyLFxuICAgICAgLy8gcmVjb3JkIG1ldGFkYXRhIHNvIHRoYXQgdGhlIHZhbGlkYXRpb24gcmVwb3J0XG4gICAgICAvLyBoYXMgY29udHJ1Y3QgYXdhcmUgY29udGV4dC5cbiAgICAgIENESzhTX1JFQ09SRF9DT05TVFJVQ1RfTUVUQURBVEE6IHByb2Nlc3MuZW52LkNESzhTX1JFQ09SRF9DT05TVFJVQ1RfTUVUQURBVEEgPz8gKG1ldGFkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJyksXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFhd2FpdCBmcy5wYXRoRXhpc3RzKG91dGRpcikpIHtcbiAgICBjb25zb2xlLmVycm9yKGBFUlJPUjogc3ludGhlc2lzIGZhaWxlZCwgYXBwIGV4cGVjdGVkIHRvIGNyZWF0ZSBcIiR7b3V0ZGlyfVwiYCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgbGV0IGZvdW5kID0gZmFsc2U7XG4gIGNvbnN0IHlhbWxGaWxlcyA9IGF3YWl0IGZpbmRNYW5pZmVzdHMob3V0ZGlyKTtcbiAgaWYgKHlhbWxGaWxlcz8ubGVuZ3RoKSB7XG4gICAgaWYgKCFzdGRvdXQpIHtcbiAgICAgIGZvciAoY29uc3QgeWFtbEZpbGUgb2YgeWFtbEZpbGVzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIC0gJHt5YW1sRmlsZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCFmb3VuZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ05vIG1hbmlmZXN0cyBzeW50aGVzaXplZCcpO1xuICB9XG5cbiAgY29uc3QgY29uc3RydWN0TWV0YWRhdGEgPSBmaW5kQ29uc3RydWN0TWV0YWRhdGEob3V0ZGlyKTtcblxuICByZXR1cm4geyBtYW5pZmVzdHM6IHlhbWxGaWxlcywgY29uc3RydWN0TWV0YWRhdGEgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlQXBwKFxuICBhcHA6IFN5bnRoZXNpemVkQXBwLFxuICBzdGRvdXQ6IGJvb2xlYW4sXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uQ29uZmlnW10sXG4gIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIsXG4gIHJlcG9ydHNGaWxlPzogc3RyaW5nKSB7XG5cbiAgY29uc3QgdmFsaWRhdG9yczogeyBwbHVnaW46IFZhbGlkYXRpb247IGNvbnRleHQ6IFZhbGlkYXRpb25Db250ZXh0fVtdID0gW107XG5cbiAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgY29uc3QgeyBwbHVnaW4sIGNvbnRleHQgfSA9IFZhbGlkYXRpb25QbHVnaW4ubG9hZCh2YWxpZGF0aW9uLCBhcHAsIHN0ZG91dCwgcGx1Z2luTWFuYWdlcik7XG4gICAgdmFsaWRhdG9ycy5wdXNoKHsgcGx1Z2luLCBjb250ZXh0IH0pO1xuICB9XG5cbiAgY29uc3QgcmVwb3J0czogVmFsaWRhdGlvblJlcG9ydFtdID0gW107XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zb2xlLmxvZygnUGVyZm9ybWluZyB2YWxpZGF0aW9ucycpO1xuXG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBhd2FpdCB2YWxpZGF0b3IucGx1Z2luLnZhbGlkYXRlKHZhbGlkYXRvci5jb250ZXh0KTtcbiAgICBjb25zdCByZXBvcnQgPSB2YWxpZGF0b3IuY29udGV4dC5yZXBvcnQ7XG4gICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgcmVwb3J0LnN1Y2Nlc3M7XG4gICAgcmVwb3J0cy5wdXNoKHJlcG9ydCk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbnMgZmluaXNoZWQnKTtcblxuICAvLyBub3cgd2UgY2FuIHByaW50IHRoZW0uIHdlIGRvbid0IGluY3JlbWVudGFsbHkgcHJpbnRcbiAgLy8gc28gdG8gbm90IGNsdXR0ZXIgdGhlIHRlcm1pbmFsIGluIGNhc2Ugb2YgZXJyb3JzLlxuICBmb3IgKGNvbnN0IHJlcG9ydCBvZiByZXBvcnRzKSB7XG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIGNvbnNvbGUubG9nKHJlcG9ydC50b1N0cmluZygpKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH1cblxuICBpZiAocmVwb3J0c0ZpbGUpIHtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHJlcG9ydHNGaWxlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gd3JpdGUgdmFsaWRhdGlvbiByZXBvcnRzIGZpbGUuIEFscmVhZHkgZXhpc3RzOiAke3JlcG9ydHNGaWxlfWApO1xuICAgIH1cbiAgICAvLyB3cml0ZSB0aGUgcmVwb3J0cyBpbiBKU09OIHRvIGEgZmlsZVxuICAgIGZzLndyaXRlRmlsZVN5bmMocmVwb3J0c0ZpbGUsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHJlcG9ydHM6IHJlcG9ydHMubWFwKHIgPT4gci50b0pzb24oKSksXG4gICAgfSwgbnVsbCwgMikpO1xuICB9XG5cbiAgLy8gZXhpdCB3aXRoIGZhaWx1cmUgaWYgYW55IHJlcG9ydCByZXN1bHRlZCBpbiBhIGZhaWx1cmVcbiAgaWYgKCFzdWNjZXNzKSB7XG4gICAgY29uc29sZS5lcnJvcignVmFsaWRhdGlvbiBmYWlsZWQuIFNlZSBhYm92ZSByZXBvcnRzIGZvciBkZXRhaWxzJyk7XG4gICAgcHJvY2Vzcy5leGl0KDIpO1xuICB9XG5cbiAgY29uc29sZS5sb2coJ1ZhbGlkYXRpb25zIGVuZGVkIHN1Y2Nlc2Z1bGx5Jyk7XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVQYXJzZUpzb24odGV4dDogc3RyaW5nLCByZXZpdmVyOiBTYWZlUmV2aXZlcik6IGFueSB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHRleHQpO1xuICByZXZpdmVyLnNhbml0aXplKGpzb24pO1xuICByZXR1cm4ganNvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVQYXJzZVlhbWwodGV4dDogc3RyaW5nLCByZXZpdmVyOiBTYWZlUmV2aXZlcik6IGFueVtdIHtcblxuICAvLyBwYXJzZUFsbERvY3VtZW50cyBkb2VzbnQgYWNjZXB0IGEgcmV2aXZlclxuICAvLyBzbyB3ZSBmaXJzdCBwYXJzZSBub3JtYWxseSBhbmQgdGhhbiB0cmFuc2Zvcm1cbiAgLy8gdG8gSlMgdXNpbmcgdGhlIHJldml2ZXIuXG4gIGNvbnN0IHBhcnNlZCA9IHlhbWwucGFyc2VBbGxEb2N1bWVudHModGV4dCk7XG4gIGNvbnN0IGRvY3MgPSBbXTtcbiAgZm9yIChjb25zdCBkb2Mgb2YgcGFyc2VkKSB7XG4gICAgY29uc3QganNvbiA9IGRvYy50b0pTKCk7XG4gICAgcmV2aXZlci5zYW5pdGl6ZShqc29uKTtcbiAgICBkb2NzLnB1c2goanNvbik7XG4gIH1cbiAgcmV0dXJuIGRvY3M7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3dubG9hZCh1cmw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cbiAgbGV0IGNsaWVudDogdHlwZW9mIGh0dHAgfCB0eXBlb2YgaHR0cHM7XG4gIGNvbnN0IHByb3RvID0gcGFyc2UodXJsKS5wcm90b2NvbDtcblxuICBpZiAoIXByb3RvIHx8IHByb3RvID09PSAnZmlsZTonKSB7XG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlKHVybCwgJ3V0Zi04Jyk7XG4gIH1cblxuICBzd2l0Y2ggKHByb3RvKSB7XG4gICAgY2FzZSAnaHR0cHM6JzpcbiAgICAgIGNsaWVudCA9IGh0dHBzO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdodHRwOic6XG4gICAgICBjbGllbnQgPSBodHRwO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBwcm90b2NvbCAke3Byb3RvfWApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICBjb25zdCByZXEgPSBjbGllbnQuZ2V0KHVybCwgcmVzID0+IHtcbiAgICAgIHN3aXRjaCAocmVzLnN0YXR1c0NvZGUpIHtcbiAgICAgICAgY2FzZSAyMDA6IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gbmV3IEFycmF5PEJ1ZmZlcj4oKTtcbiAgICAgICAgICByZXMub24oJ2RhdGEnLCBjaHVuayA9PiBkYXRhLnB1c2goY2h1bmspKTtcbiAgICAgICAgICByZXMub25jZSgnZW5kJywgKCkgPT4gb2soQnVmZmVyLmNvbmNhdChkYXRhKS50b1N0cmluZygndXRmLTgnKSkpO1xuICAgICAgICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgMzAxOlxuICAgICAgICBjYXNlIDMwMjoge1xuICAgICAgICAgIGlmIChyZXMuaGVhZGVycy5sb2NhdGlvbikge1xuICAgICAgICAgICAgb2soZG93bmxvYWQocmVzLmhlYWRlcnMubG9jYXRpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAga28obmV3IEVycm9yKGAke3Jlcy5zdGF0dXNNZXNzYWdlfTogJHt1cmx9YCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXEub25jZSgnZXJyb3InLCBrbyk7XG4gICAgcmVxLmVuZCgpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRNYW5pZmVzdHMoZGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIC8vIEVuc3VyZSBwYXRoIGlzIHZhbGlkXG4gIHRyeSB7XG4gICAgYXdhaXQgcHJvbWlzZXMuYWNjZXNzKGRpcmVjdG9yeSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFJlYWQgUGF0aCBjb250ZW50c1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcHJvbWlzZXMucmVhZGRpcihkaXJlY3RvcnksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcblxuICAvLyBHZXQgZmlsZXMgd2l0aGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICBjb25zdCBmaWxlcyA9IGVudHJpZXNcbiAgICAuZmlsdGVyKGZpbGUgPT4gKCFmaWxlLmlzRGlyZWN0b3J5KCkgJiYgZmlsZS5uYW1lLmVuZHNXaXRoKCcueWFtbCcpKSlcbiAgICAubWFwKGZpbGUgPT4gKGRpcmVjdG9yeSArICcvJyArIGZpbGUubmFtZSkpO1xuXG4gIC8vIEdldCBzdWItZm9sZGVycyB3aXRoaW4gdGhlIGN1cnJlbnQgZm9sZGVyXG4gIGNvbnN0IGZvbGRlcnMgPSBlbnRyaWVzLmZpbHRlcihmb2xkZXIgPT4gZm9sZGVyLmlzRGlyZWN0b3J5KCkpO1xuXG4gIGZvciAoY29uc3QgZm9sZGVyIG9mIGZvbGRlcnMpIHtcbiAgICBmaWxlcy5wdXNoKC4uLmF3YWl0IGZpbmRNYW5pZmVzdHMoYCR7ZGlyZWN0b3J5fS8ke2ZvbGRlci5uYW1lfWApKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb25zdHJ1Y3RNZXRhZGF0YShkaXJlY3Rvcnk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIHRoaXMgZmlsZSBpcyBvcHRpb25hbGx5IGNyZWF0ZWQgZHVyaW5nIHN5bnRoZXNpc1xuICBjb25zdCBwID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgJ2NvbnN0cnVjdC1tZXRhZGF0YS5qc29uJyk7XG4gIHJldHVybiBmcy5leGlzdHNTeW5jKHApID8gcCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2Ygc3ludGhlc2l6aW5nIGFuIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoZXNpemVkQXBwIHtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgbWFuaWZlc3RzIHByb2R1Y2VkIGJ5IHRoZSBhcHAuXG4gICAqL1xuICByZWFkb25seSBtYW5pZmVzdHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0IG1ldGFkYXRhIGZpbGUgKGlmIGV4aXN0cykuXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RNZXRhZGF0YT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW1wb3J0cyhzcGVjOiBzdHJpbmcpOiBJbXBvcnRTcGVjIHtcbiAgY29uc3Qgc3BsaXRJbXBvcnQgPSBzcGVjLnNwbGl0KFBSRUZJWF9ERUxJTSk7XG5cbiAgLy8gazhzQHgueS56XG4gIC8vIGNyZC55YW1sXG4gIC8vIHVybC5jb20vY3JkLnlhbWxcbiAgaWYgKHNwbGl0SW1wb3J0Lmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IHNwZWMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGNyZDo9Y3JkLnlhbWxcbiAgLy8gY3JkOj11cmwuY29tL2NyZC55YW1sXG4gIGlmIChzcGxpdEltcG9ydC5sZW5ndGggPT09IDIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlTmFtZVByZWZpeDogc3BsaXRJbXBvcnRbMF0sXG4gICAgICBzb3VyY2U6IHNwbGl0SW1wb3J0WzFdLFxuICAgIH07XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBpbXBvcnQgc3BlY2lmaWNhdGlvbi4gU3ludGF4IGlzIFtOQU1FOj1dU1BFQycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaEFuZEVuY29kZShpbnB1dDogc3RyaW5nLCBhbGdvcml0aG06IHN0cmluZyA9ICdzaGEyNTYnLCBlbmNvZGluZzogQmluYXJ5VG9UZXh0RW5jb2RpbmcgPSAnaGV4Jyk6IHN0cmluZyB7XG4gIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKGFsZ29yaXRobSk7XG4gIGhhc2gudXBkYXRlKGlucHV0KTtcbiAgcmV0dXJuIGhhc2guZGlnZXN0KGVuY29kaW5nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUZpbGVOYW1lKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGV2VXJsID0gbWF0Y2hDcmRzRGV2VXJsKHVybCk7XG4gIGxldCBmaWxlbmFtZSA9IHVuZGVmaW5lZDtcblxuICBpZiAoZGV2VXJsKSB7XG4gICAgY29uc3QgbGFzdEluZGV4T2ZTbGFzaCA9IGRldlVybC5sYXN0SW5kZXhPZignLycpO1xuICAgIGNvbnN0IGxhc3RJbmRleE9mQXQgPSBkZXZVcmwubGFzdEluZGV4T2YoJ0AnKTtcbiAgICBmaWxlbmFtZSA9IChsYXN0SW5kZXhPZlNsYXNoID4gMCAmJiBsYXN0SW5kZXhPZkF0ID4gMCkgPyBkZXZVcmwuc2xpY2UobGFzdEluZGV4T2ZTbGFzaCsxLCBsYXN0SW5kZXhPZkF0KTogdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhc3RJbmRleE9mU2xhc2ggPSB1cmwubGFzdEluZGV4T2YoJy8nKTtcbiAgICBjb25zdCBsYXN0SW5kZXhPZllhbWwgPSB1cmwubGFzdEluZGV4T2YoJy55YW1sJykgPiAwID8gdXJsLmxhc3RJbmRleE9mKCcueWFtbCcpIDogdXJsLmxhc3RJbmRleE9mKCcueW1sJyk7XG5cbiAgICBmaWxlbmFtZSA9IChsYXN0SW5kZXhPZlNsYXNoID4gMCAmJiBsYXN0SW5kZXhPZllhbWwgPiAwKSA/IHVybC5zbGljZShsYXN0SW5kZXhPZlNsYXNoKzEsIGxhc3RJbmRleE9mWWFtbCk6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICghZmlsZW5hbWUpIHtcbiAgICAvLyBJZiB0aGUgdXJsIGlmIGZvciBhIGxvY2FsIGZpbGUsIHRoZW4ganVzdCBlbmNvZGUgdGhlIGZpbGVuYW1lIGFuZCBub3QgdGhlIGVudGlyZSBwYXRoXG4gICAgLy8gU2luY2UgcGF0aCBjYW4gZGVwZW5kIG9uIHBsYXRmb3JtXG4gICAgbGV0IGZpbGUgPSBleGlzdHNTeW5jKHVybCkgPyBwYXRoLmJhc2VuYW1lKHVybCkgOiB1cmw7XG5cbiAgICBmaWxlbmFtZSA9IGhhc2hBbmRFbmNvZGUoZmlsZSk7XG4gIH1cblxuICByZXR1cm4gZmlsZW5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0s4c0ltcG9ydCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh2YWx1ZSAhPT0gJ2s4cycgJiYgIXZhbHVlLnN0YXJ0c1dpdGgoJ2s4c0AnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIZWxtSW1wb3J0KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZS5zdGFydHNXaXRoKCdoZWxtOicpICYmICF2YWx1ZS5pbmNsdWRlcygnOj1oZWxtOicpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmRzQXJlUHJlc2VudChpbXBydHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiAoaW1wcnRzID8/IFtdKS5zb21lKGltcHJ0ID0+ICghaXNLOHNJbXBvcnQoaW1wcnQpICYmICFpc0hlbG1JbXBvcnQoaW1wcnQpKSk7XG59Il19
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW9EO0FBQ3BELG1DQUEwRDtBQUMxRCwyQkFBMEM7QUFDMUMsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDZCQUE0QjtBQUM1Qiw2Q0FBK0I7QUFDL0IsMkNBQTZCO0FBRTdCLGdEQUFvRDtBQUVwRCxxREFBeUc7QUFHNUYsUUFBQSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRTFCLEtBQUssVUFBVSxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWlCLEVBQUUsRUFBRSxVQUF3QixFQUFHO0lBQzNGLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDcEcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFLLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXBELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcs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LFNBQWdCLGNBQWMsQ0FBQyxNQUE0QjtJQUN6RCxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFGRCx3Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBTcGF3bk9wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IEJpbmFyeVRvVGV4dEVuY29kaW5nLCBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHByb21pc2VzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3VybCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgSW1wb3J0U3BlYywgVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IG1hdGNoQ3Jkc0RldlVybCB9IGZyb20gJy4vaW1wb3J0L2NyZHMtZGV2JztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuL3BsdWdpbnMvX21hbmFnZXInO1xuaW1wb3J0IHsgVmFsaWRhdGlvblBsdWdpbiwgVmFsaWRhdGlvbkNvbnRleHQsIFZhbGlkYXRpb25SZXBvcnQsIFZhbGlkYXRpb24gfSBmcm9tICcuL3BsdWdpbnMvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWZlUmV2aXZlciB9IGZyb20gJy4vcmV2aXZlcic7XG5cbmV4cG9ydCBjb25zdCBQUkVGSVhfREVMSU0gPSAnOj0nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hlbGwocHJvZ3JhbTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSA9IFtdLCBvcHRpb25zOiBTcGF3bk9wdGlvbnMgPSB7IH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb21tYW5kID0gYFwiJHtwcm9ncmFtfSAke2FyZ3Muam9pbignICcpfVwiIGF0ICR7cGF0aC5yZXNvbHZlKG9wdGlvbnMuY3dkPy50b1N0cmluZygpID8/ICcuJyl9YDtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKHByb2dyYW0sIGFyZ3MsIHsgc3RkaW86IFsnaW5oZXJpdCcsICdwaXBlJywgJ2luaGVyaXQnXSwgLi4ub3B0aW9ucyB9KTtcbiAgICBjb25zdCBkYXRhID0gbmV3IEFycmF5PEJ1ZmZlcj4oKTtcbiAgICBjaGlsZC5zdGRvdXQ/Lm9uKCdkYXRhJywgY2h1bmsgPT4gZGF0YS5wdXNoKGNodW5rKSk7XG5cbiAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGVyciA9PiBrbyhuZXcgRXJyb3IoYGNvbW1hbmQgJHtjb21tYW5kfSBmYWlsZWQ6ICR7ZXJyfWApKSk7XG4gICAgY2hpbGQub25jZSgnZXhpdCcsIGNvZGUgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9rKEJ1ZmZlci5jb25jYXQoZGF0YSkudG9TdHJpbmcoJ3V0Zi04JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtvKG5ldyBFcnJvcihgY29tbWFuZCAke2NvbW1hbmR9IHJldHVybmVkIGEgbm9uLXplcm8gZXhpdCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWtkdGVtcChjbG9zdXJlOiAoZGlyOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgY29uc3Qgd29ya2RpciA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnY2RrOHMtJykpO1xuICB0cnkge1xuICAgIGF3YWl0IGNsb3N1cmUod29ya2Rpcik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmVtb3ZlKHdvcmtkaXIpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzeW50aEFwcChjb21tYW5kOiBzdHJpbmcsIG91dGRpcjogc3RyaW5nLCBzdGRvdXQ6IGJvb2xlYW4sIG1ldGFkYXRhOiBib29sZWFuKTogUHJvbWlzZTxTeW50aGVzaXplZEFwcD4ge1xuICBpZiAoIXN0ZG91dCkge1xuICAgIGNvbnNvbGUubG9nKCdTeW50aGVzaXppbmcgYXBwbGljYXRpb24nKTtcbiAgfVxuICBhd2FpdCBzaGVsbChjb21tYW5kLCBbXSwge1xuICAgIHNoZWxsOiB0cnVlLFxuICAgIGVudjoge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICBDREs4U19PVVRESVI6IG91dGRpcixcbiAgICAgIC8vIHJlY29yZCBtZXRhZGF0YSBzbyB0aGF0IHRoZSB2YWxpZGF0aW9uIHJlcG9ydFxuICAgICAgLy8gaGFzIGNvbnRydWN0IGF3YXJlIGNvbnRleHQuXG4gICAgICBDREs4U19SRUNPUkRfQ09OU1RSVUNUX01FVEFEQVRBOiBwcm9jZXNzLmVudi5DREs4U19SRUNPUkRfQ09OU1RSVUNUX01FVEFEQVRBID8/IChtZXRhZGF0YSA/ICd0cnVlJyA6ICdmYWxzZScpLFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhvdXRkaXIpKSB7XG4gICAgY29uc29sZS5lcnJvcihgRVJST1I6IHN5bnRoZXNpcyBmYWlsZWQsIGFwcCBleHBlY3RlZCB0byBjcmVhdGUgXCIke291dGRpcn1cImApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuICBjb25zdCB5YW1sRmlsZXMgPSBhd2FpdCBmaW5kTWFuaWZlc3RzKG91dGRpcik7XG4gIGlmICh5YW1sRmlsZXM/Lmxlbmd0aCkge1xuICAgIGlmICghc3Rkb3V0KSB7XG4gICAgICBmb3IgKGNvbnN0IHlhbWxGaWxlIG9mIHlhbWxGaWxlcykge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAtICR7eWFtbEZpbGV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghZm91bmQpIHtcbiAgICBjb25zb2xlLmVycm9yKCdObyBtYW5pZmVzdHMgc3ludGhlc2l6ZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnN0cnVjdE1ldGFkYXRhID0gZmluZENvbnN0cnVjdE1ldGFkYXRhKG91dGRpcik7XG5cbiAgcmV0dXJuIHsgbWFuaWZlc3RzOiB5YW1sRmlsZXMsIGNvbnN0cnVjdE1ldGFkYXRhIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZUFwcChcbiAgYXBwOiBTeW50aGVzaXplZEFwcCxcbiAgc3Rkb3V0OiBib29sZWFuLFxuICB2YWxpZGF0aW9uczogVmFsaWRhdGlvbkNvbmZpZ1tdLFxuICBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyLFxuICByZXBvcnRzRmlsZT86IHN0cmluZykge1xuXG4gIGNvbnN0IHZhbGlkYXRvcnM6IHsgcGx1Z2luOiBWYWxpZGF0aW9uOyBjb250ZXh0OiBWYWxpZGF0aW9uQ29udGV4dH1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuICAgIGNvbnN0IHsgcGx1Z2luLCBjb250ZXh0IH0gPSBWYWxpZGF0aW9uUGx1Z2luLmxvYWQodmFsaWRhdGlvbiwgYXBwLCBzdGRvdXQsIHBsdWdpbk1hbmFnZXIpO1xuICAgIHZhbGlkYXRvcnMucHVzaCh7IHBsdWdpbiwgY29udGV4dCB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlcG9ydHM6IFZhbGlkYXRpb25SZXBvcnRbXSA9IFtdO1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc29sZS5sb2coJ1BlcmZvcm1pbmcgdmFsaWRhdGlvbnMnKTtcblxuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgYXdhaXQgdmFsaWRhdG9yLnBsdWdpbi52YWxpZGF0ZSh2YWxpZGF0b3IuY29udGV4dCk7XG4gICAgY29uc3QgcmVwb3J0ID0gdmFsaWRhdG9yLmNvbnRleHQucmVwb3J0O1xuICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIHJlcG9ydC5zdWNjZXNzO1xuICAgIHJlcG9ydHMucHVzaChyZXBvcnQpO1xuICB9XG5cbiAgY29uc29sZS5sb2coJ1ZhbGlkYXRpb25zIGZpbmlzaGVkJyk7XG5cbiAgLy8gbm93IHdlIGNhbiBwcmludCB0aGVtLiB3ZSBkb24ndCBpbmNyZW1lbnRhbGx5IHByaW50XG4gIC8vIHNvIHRvIG5vdCBjbHV0dGVyIHRoZSB0ZXJtaW5hbCBpbiBjYXNlIG9mIGVycm9ycy5cbiAgZm9yIChjb25zdCByZXBvcnQgb2YgcmVwb3J0cykge1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBjb25zb2xlLmxvZyhyZXBvcnQudG9TdHJpbmcoKSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG5cbiAgaWYgKHJlcG9ydHNGaWxlKSB7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhyZXBvcnRzRmlsZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHdyaXRlIHZhbGlkYXRpb24gcmVwb3J0cyBmaWxlLiBBbHJlYWR5IGV4aXN0czogJHtyZXBvcnRzRmlsZX1gKTtcbiAgICB9XG4gICAgLy8gd3JpdGUgdGhlIHJlcG9ydHMgaW4gSlNPTiB0byBhIGZpbGVcbiAgICBmcy53cml0ZUZpbGVTeW5jKHJlcG9ydHNGaWxlLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICByZXBvcnRzOiByZXBvcnRzLm1hcChyID0+IHIudG9Kc29uKCkpLFxuICAgIH0sIG51bGwsIDIpKTtcbiAgfVxuXG4gIC8vIGV4aXQgd2l0aCBmYWlsdXJlIGlmIGFueSByZXBvcnQgcmVzdWx0ZWQgaW4gYSBmYWlsdXJlXG4gIGlmICghc3VjY2Vzcykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1ZhbGlkYXRpb24gZmFpbGVkLiBTZWUgYWJvdmUgcmVwb3J0cyBmb3IgZGV0YWlscycpO1xuICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9ucyBlbmRlZCBzdWNjZXNmdWxseScpO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGFyc2VKc29uKHRleHQ6IHN0cmluZywgcmV2aXZlcjogU2FmZVJldml2ZXIpOiBhbnkge1xuICBjb25zdCBqc29uID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgcmV2aXZlci5zYW5pdGl6ZShqc29uKTtcbiAgcmV0dXJuIGpzb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGFyc2VZYW1sKHRleHQ6IHN0cmluZywgcmV2aXZlcjogU2FmZVJldml2ZXIpOiBhbnlbXSB7XG5cbiAgLy8gcGFyc2VBbGxEb2N1bWVudHMgZG9lc250IGFjY2VwdCBhIHJldml2ZXJcbiAgLy8gc28gd2UgZmlyc3QgcGFyc2Ugbm9ybWFsbHkgYW5kIHRoYW4gdHJhbnNmb3JtXG4gIC8vIHRvIEpTIHVzaW5nIHRoZSByZXZpdmVyLlxuICBjb25zdCBwYXJzZWQgPSB5YW1sLnBhcnNlQWxsRG9jdW1lbnRzKHRleHQpO1xuICBjb25zdCBkb2NzID0gW107XG4gIGZvciAoY29uc3QgZG9jIG9mIHBhcnNlZCkge1xuICAgIGNvbnN0IGpzb24gPSBkb2MudG9KUygpO1xuICAgIHJldml2ZXIuc2FuaXRpemUoanNvbik7XG4gICAgZG9jcy5wdXNoKGpzb24pO1xuICB9XG4gIHJldHVybiBkb2NzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQodXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuXG4gIGxldCBjbGllbnQ6IHR5cGVvZiBodHRwIHwgdHlwZW9mIGh0dHBzO1xuICBjb25zdCBwcm90byA9IHBhcnNlKHVybCkucHJvdG9jb2w7XG5cbiAgaWYgKCFwcm90byB8fCBwcm90byA9PT0gJ2ZpbGU6Jykge1xuICAgIHJldHVybiBmcy5yZWFkRmlsZSh1cmwsICd1dGYtOCcpO1xuICB9XG5cbiAgc3dpdGNoIChwcm90bykge1xuICAgIGNhc2UgJ2h0dHBzOic6XG4gICAgICBjbGllbnQgPSBodHRwcztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnaHR0cDonOlxuICAgICAgY2xpZW50ID0gaHR0cDtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgcHJvdG9jb2wgJHtwcm90b31gKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcmVxID0gY2xpZW50LmdldCh1cmwsIHJlcyA9PiB7XG4gICAgICBzd2l0Y2ggKHJlcy5zdGF0dXNDb2RlKSB7XG4gICAgICAgIGNhc2UgMjAwOiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBBcnJheTxCdWZmZXI+KCk7XG4gICAgICAgICAgcmVzLm9uKCdkYXRhJywgY2h1bmsgPT4gZGF0YS5wdXNoKGNodW5rKSk7XG4gICAgICAgICAgcmVzLm9uY2UoJ2VuZCcsICgpID0+IG9rKEJ1ZmZlci5jb25jYXQoZGF0YSkudG9TdHJpbmcoJ3V0Zi04JykpKTtcbiAgICAgICAgICByZXMub25jZSgnZXJyb3InLCBrbyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIDMwMTpcbiAgICAgICAgY2FzZSAzMDI6IHtcbiAgICAgICAgICBpZiAocmVzLmhlYWRlcnMubG9jYXRpb24pIHtcbiAgICAgICAgICAgIG9rKGRvd25sb2FkKHJlcy5oZWFkZXJzLmxvY2F0aW9uKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGtvKG5ldyBFcnJvcihgJHtyZXMuc3RhdHVzTWVzc2FnZX06ICR7dXJsfWApKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVxLm9uY2UoJ2Vycm9yJywga28pO1xuICAgIHJlcS5lbmQoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kTWFuaWZlc3RzKGRpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAvLyBFbnN1cmUgcGF0aCBpcyB2YWxpZFxuICB0cnkge1xuICAgIGF3YWl0IHByb21pc2VzLmFjY2VzcyhkaXJlY3RvcnkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBSZWFkIFBhdGggY29udGVudHNcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IHByb21pc2VzLnJlYWRkaXIoZGlyZWN0b3J5LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG5cbiAgLy8gR2V0IGZpbGVzIHdpdGhpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgY29uc3QgZmlsZXMgPSBlbnRyaWVzXG4gICAgLmZpbHRlcihmaWxlID0+ICghZmlsZS5pc0RpcmVjdG9yeSgpICYmIGZpbGUubmFtZS5lbmRzV2l0aCgnLnlhbWwnKSkpXG4gICAgLm1hcChmaWxlID0+IChkaXJlY3RvcnkgKyAnLycgKyBmaWxlLm5hbWUpKTtcblxuICAvLyBHZXQgc3ViLWZvbGRlcnMgd2l0aGluIHRoZSBjdXJyZW50IGZvbGRlclxuICBjb25zdCBmb2xkZXJzID0gZW50cmllcy5maWx0ZXIoZm9sZGVyID0+IGZvbGRlci5pc0RpcmVjdG9yeSgpKTtcblxuICBmb3IgKGNvbnN0IGZvbGRlciBvZiBmb2xkZXJzKSB7XG4gICAgZmlsZXMucHVzaCguLi5hd2FpdCBmaW5kTWFuaWZlc3RzKGAke2RpcmVjdG9yeX0vJHtmb2xkZXIubmFtZX1gKSk7XG4gIH1cblxuICByZXR1cm4gZmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29uc3RydWN0TWV0YWRhdGEoZGlyZWN0b3J5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyB0aGlzIGZpbGUgaXMgb3B0aW9uYWxseSBjcmVhdGVkIGR1cmluZyBzeW50aGVzaXNcbiAgY29uc3QgcCA9IHBhdGguam9pbihkaXJlY3RvcnksICdjb25zdHJ1Y3QtbWV0YWRhdGEuanNvbicpO1xuICByZXR1cm4gZnMuZXhpc3RzU3luYyhwKSA/IHAgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIHN5bnRoZXNpemluZyBhbiBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aGVzaXplZEFwcCB7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIG1hbmlmZXN0cyBwcm9kdWNlZCBieSB0aGUgYXBwLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuaWZlc3RzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdCBtZXRhZGF0YSBmaWxlIChpZiBleGlzdHMpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0TWV0YWRhdGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUltcG9ydHMoc3BlYzogc3RyaW5nKTogSW1wb3J0U3BlYyB7XG4gIGNvbnN0IHNwbGl0SW1wb3J0ID0gc3BlYy5zcGxpdChQUkVGSVhfREVMSU0pO1xuXG4gIC8vIGs4c0B4LnkuelxuICAvLyBjcmQueWFtbFxuICAvLyB1cmwuY29tL2NyZC55YW1sXG4gIGlmIChzcGxpdEltcG9ydC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBzcGVjLFxuICAgIH07XG4gIH1cblxuICAvLyBjcmQ6PWNyZC55YW1sXG4gIC8vIGNyZDo9dXJsLmNvbS9jcmQueWFtbFxuICBpZiAoc3BsaXRJbXBvcnQubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZU5hbWVQcmVmaXg6IHNwbGl0SW1wb3J0WzBdLFxuICAgICAgc291cmNlOiBzcGxpdEltcG9ydFsxXSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgaW1wb3J0IHNwZWNpZmljYXRpb24uIFN5bnRheCBpcyBbTkFNRTo9XVNQRUMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hBbmRFbmNvZGUoaW5wdXQ6IHN0cmluZywgYWxnb3JpdGhtOiBzdHJpbmcgPSAnc2hhMjU2JywgZW5jb2Rpbmc6IEJpbmFyeVRvVGV4dEVuY29kaW5nID0gJ2hleCcpOiBzdHJpbmcge1xuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChhbGdvcml0aG0pO1xuICBoYXNoLnVwZGF0ZShpbnB1dCk7XG4gIHJldHVybiBoYXNoLmRpZ2VzdChlbmNvZGluZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVGaWxlTmFtZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRldlVybCA9IG1hdGNoQ3Jkc0RldlVybCh1cmwpO1xuICBsZXQgZmlsZW5hbWUgPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGRldlVybCkge1xuICAgIGNvbnN0IGxhc3RJbmRleE9mU2xhc2ggPSBkZXZVcmwubGFzdEluZGV4T2YoJy8nKTtcbiAgICBjb25zdCBsYXN0SW5kZXhPZkF0ID0gZGV2VXJsLmxhc3RJbmRleE9mKCdAJyk7XG4gICAgZmlsZW5hbWUgPSAobGFzdEluZGV4T2ZTbGFzaCA+IDAgJiYgbGFzdEluZGV4T2ZBdCA+IDApID8gZGV2VXJsLnNsaWNlKGxhc3RJbmRleE9mU2xhc2grMSwgbGFzdEluZGV4T2ZBdCk6IHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0SW5kZXhPZlNsYXNoID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgY29uc3QgbGFzdEluZGV4T2ZZYW1sID0gdXJsLmxhc3RJbmRleE9mKCcueWFtbCcpID4gMCA/IHVybC5sYXN0SW5kZXhPZignLnlhbWwnKSA6IHVybC5sYXN0SW5kZXhPZignLnltbCcpO1xuXG4gICAgZmlsZW5hbWUgPSAobGFzdEluZGV4T2ZTbGFzaCA+IDAgJiYgbGFzdEluZGV4T2ZZYW1sID4gMCkgPyB1cmwuc2xpY2UobGFzdEluZGV4T2ZTbGFzaCsxLCBsYXN0SW5kZXhPZllhbWwpOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIWZpbGVuYW1lKSB7XG4gICAgLy8gSWYgdGhlIHVybCBpZiBmb3IgYSBsb2NhbCBmaWxlLCB0aGVuIGp1c3QgZW5jb2RlIHRoZSBmaWxlbmFtZSBhbmQgbm90IHRoZSBlbnRpcmUgcGF0aFxuICAgIC8vIFNpbmNlIHBhdGggY2FuIGRlcGVuZCBvbiBwbGF0Zm9ybVxuICAgIGxldCBmaWxlID0gZXhpc3RzU3luYyh1cmwpID8gcGF0aC5iYXNlbmFtZSh1cmwpIDogdXJsO1xuXG4gICAgZmlsZW5hbWUgPSBoYXNoQW5kRW5jb2RlKGZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGVuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNLOHNJbXBvcnQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodmFsdWUgIT09ICdrOHMnICYmICF2YWx1ZS5zdGFydHNXaXRoKCdrOHNAJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGVsbUltcG9ydCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghdmFsdWUuc3RhcnRzV2l0aCgnaGVsbTonKSAmJiAhdmFsdWUuaW5jbHVkZXMoJzo9aGVsbTonKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3Jkc0FyZVByZXNlbnQoaW1wcnRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gKGltcHJ0cyA/PyBbXSkuc29tZShpbXBydCA9PiAoIWlzSzhzSW1wb3J0KGltcHJ0KSAmJiAhaXNIZWxtSW1wb3J0KGltcHJ0KSkpO1xufSJdfQ==
|
package/package.json
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"glob": "^7.2.3",
|
|
67
67
|
"jest": "^27",
|
|
68
68
|
"jest-junit": "^16",
|
|
69
|
-
"projen": "^0.91.
|
|
69
|
+
"projen": "^0.91.26",
|
|
70
70
|
"ts-jest": "^27",
|
|
71
71
|
"ts-node": "^10.9.2",
|
|
72
72
|
"typescript": "~4.9.5",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"publishConfig": {
|
|
108
108
|
"access": "public"
|
|
109
109
|
},
|
|
110
|
-
"version": "2.200.
|
|
110
|
+
"version": "2.200.51",
|
|
111
111
|
"jest": {
|
|
112
112
|
"coverageProvider": "v8",
|
|
113
113
|
"testMatch": [
|