@cdktn/provider-generator 0.24.0-pre.87 → 0.24.0-pre.89
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/build/__tests__/edge-provider-schema/builder.d.ts +9 -3
- package/build/__tests__/edge-provider-schema/builder.js +6 -3
- package/build/__tests__/edge-provider-schema/index.js +119 -1
- package/build/__tests__/provider.test.js +4 -1
- package/build/get/__tests__/generator/ephemeral-resources.test.d.ts +2 -0
- package/build/get/__tests__/generator/ephemeral-resources.test.js +49 -0
- package/build/get/__tests__/generator/provider-functions.test.d.ts +2 -0
- package/build/get/__tests__/generator/provider-functions.test.js +176 -0
- package/build/get/__tests__/generator/provider.test.js +9 -1
- package/build/get/__tests__/generator/write-only.test.d.ts +2 -0
- package/build/get/__tests__/generator/write-only.test.js +65 -0
- package/build/get/__tests__/target-versions.test.d.ts +2 -0
- package/build/get/__tests__/target-versions.test.js +171 -0
- package/build/get/constructs-maker.d.ts +8 -1
- package/build/get/constructs-maker.js +13 -4
- package/build/get/generator/emitter/attributes-emitter.d.ts +12 -2
- package/build/get/generator/emitter/attributes-emitter.js +47 -5
- package/build/get/generator/emitter/index.d.ts +1 -0
- package/build/get/generator/emitter/index.js +2 -1
- package/build/get/generator/emitter/provider-functions-emitter.d.ts +11 -0
- package/build/get/generator/emitter/provider-functions-emitter.js +94 -0
- package/build/get/generator/emitter/resource-emitter.d.ts +5 -1
- package/build/get/generator/emitter/resource-emitter.js +83 -7
- package/build/get/generator/models/attribute-model.d.ts +2 -0
- package/build/get/generator/models/attribute-model.js +2 -1
- package/build/get/generator/models/index.d.ts +1 -0
- package/build/get/generator/models/index.js +2 -1
- package/build/get/generator/models/provider-function-model.d.ts +102 -0
- package/build/get/generator/models/provider-function-model.js +667 -0
- package/build/get/generator/models/resource-model.d.ts +3 -0
- package/build/get/generator/models/resource-model.js +13 -4
- package/build/get/generator/models/struct.d.ts +2 -0
- package/build/get/generator/models/struct.js +6 -2
- package/build/get/generator/provider-generator.d.ts +2 -0
- package/build/get/generator/provider-generator.js +31 -3
- package/build/get/generator/resource-parser.js +3 -1
- package/package.json +5 -5
- package/src/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +4 -0
- package/src/__tests__/edge-provider-schema/builder.ts +17 -1
- package/src/__tests__/edge-provider-schema/index.ts +124 -1
- package/src/__tests__/provider.test.ts +3 -0
- package/src/get/__tests__/generator/__snapshots__/ephemeral-resources.test.ts.snap +524 -0
- package/src/get/__tests__/generator/__snapshots__/provider-functions.test.ts.snap +444 -0
- package/src/get/__tests__/generator/__snapshots__/write-only.test.ts.snap +262 -0
- package/src/get/__tests__/generator/ephemeral-resources.test.ts +46 -0
- package/src/get/__tests__/generator/fixtures/ephemeral-resources.test.fixture.json +160 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-collision.test.fixture.json +31 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-synthetic.test.fixture.json +192 -0
- package/src/get/__tests__/generator/fixtures/provider-functions.test.fixture.json +170 -0
- package/src/get/__tests__/generator/fixtures/write-only.test.fixture.json +58 -0
- package/src/get/__tests__/generator/provider-functions.test.ts +262 -0
- package/src/get/__tests__/generator/provider.test.ts +8 -0
- package/src/get/__tests__/generator/write-only.test.ts +71 -0
- package/src/get/__tests__/target-versions.test.ts +206 -0
- package/src/get/constructs-maker.ts +43 -3
- package/src/get/generator/emitter/attributes-emitter.ts +61 -6
- package/src/get/generator/emitter/index.ts +1 -0
- package/src/get/generator/emitter/provider-functions-emitter.ts +117 -0
- package/src/get/generator/emitter/resource-emitter.ts +110 -6
- package/src/get/generator/models/attribute-model.ts +3 -0
- package/src/get/generator/models/index.ts +1 -0
- package/src/get/generator/models/provider-function-model.ts +872 -0
- package/src/get/generator/models/resource-model.ts +25 -3
- package/src/get/generator/models/struct.ts +9 -1
- package/src/get/generator/provider-generator.ts +70 -4
- package/src/get/generator/resource-parser.ts +2 -0
|
@@ -2,6 +2,7 @@ import { FQPN, ProviderName } from "@cdktn/provider-schema";
|
|
|
2
2
|
import { AttributeModel } from "./attribute-model";
|
|
3
3
|
import { Struct, ConfigStruct } from "./struct";
|
|
4
4
|
import { Schema } from "@cdktn/commons";
|
|
5
|
+
import { ProviderFunctionsModel } from "./provider-function-model";
|
|
5
6
|
export declare const STRUCT_SHARDING_THRESHOLD = 400;
|
|
6
7
|
interface ResourceModelOptions {
|
|
7
8
|
terraformType: string;
|
|
@@ -28,6 +29,7 @@ export declare class ResourceModel {
|
|
|
28
29
|
providerVersion?: string;
|
|
29
30
|
terraformProviderSource?: string;
|
|
30
31
|
terraformProviderName: string;
|
|
32
|
+
providerFunctionsModel?: ProviderFunctionsModel;
|
|
31
33
|
fileName: string;
|
|
32
34
|
attributes: AttributeModel[];
|
|
33
35
|
schema: Schema;
|
|
@@ -48,6 +50,7 @@ export declare class ResourceModel {
|
|
|
48
50
|
get linkToDocs(): string;
|
|
49
51
|
get isProvider(): boolean;
|
|
50
52
|
get isDataSource(): boolean;
|
|
53
|
+
get isEphemeralResource(): boolean;
|
|
51
54
|
get parentClassName(): string;
|
|
52
55
|
get terraformResourceType(): string;
|
|
53
56
|
get terraformDocName(): string;
|
|
@@ -42,7 +42,7 @@ class ResourceModel {
|
|
|
42
42
|
return [this.configStruct, ...this._structs];
|
|
43
43
|
}
|
|
44
44
|
get configStruct() {
|
|
45
|
-
return new struct_1.ConfigStruct(this.configStructName, this.attributes);
|
|
45
|
+
return new struct_1.ConfigStruct(this.configStructName, this.attributes, this.isEphemeralResource ? "TerraformEphemeralMetaArguments" : undefined);
|
|
46
46
|
}
|
|
47
47
|
get synthesizableAttributes() {
|
|
48
48
|
return this.configStruct.assignableAttributes;
|
|
@@ -61,6 +61,8 @@ class ResourceModel {
|
|
|
61
61
|
return base;
|
|
62
62
|
if (this.isDataSource)
|
|
63
63
|
return `${base}/data-sources/${this.terraformDocName}`;
|
|
64
|
+
if (this.isEphemeralResource)
|
|
65
|
+
return `${base}/ephemeral-resources/${this.terraformDocName}`;
|
|
64
66
|
return `${base}/resources/${this.terraformDocName}`;
|
|
65
67
|
}
|
|
66
68
|
get isProvider() {
|
|
@@ -69,19 +71,26 @@ class ResourceModel {
|
|
|
69
71
|
get isDataSource() {
|
|
70
72
|
return this.terraformSchemaType === "data_source";
|
|
71
73
|
}
|
|
74
|
+
get isEphemeralResource() {
|
|
75
|
+
return this.terraformSchemaType === "ephemeral_resource";
|
|
76
|
+
}
|
|
72
77
|
get parentClassName() {
|
|
73
78
|
return this.isProvider
|
|
74
79
|
? "TerraformProvider"
|
|
75
80
|
: this.isDataSource
|
|
76
81
|
? "TerraformDataSource"
|
|
77
|
-
:
|
|
82
|
+
: this.isEphemeralResource
|
|
83
|
+
? "TerraformEphemeralResource"
|
|
84
|
+
: "TerraformResource";
|
|
78
85
|
}
|
|
79
86
|
get terraformResourceType() {
|
|
80
87
|
return this.isProvider
|
|
81
88
|
? this.terraformProviderName
|
|
82
89
|
: this.isDataSource
|
|
83
90
|
? this.terraformType.replace(/^data_/, "")
|
|
84
|
-
: this.
|
|
91
|
+
: this.isEphemeralResource
|
|
92
|
+
? this.terraformType.replace(/^ephemeral_/, "")
|
|
93
|
+
: this.terraformType;
|
|
85
94
|
}
|
|
86
95
|
get terraformDocName() {
|
|
87
96
|
return (0, codemaker_1.toSnakeCase)(this.terraformResourceType.replace(new RegExp(`^${this.provider}_`, "i"), ""));
|
|
@@ -103,4 +112,4 @@ class ResourceModel {
|
|
|
103
112
|
}
|
|
104
113
|
}
|
|
105
114
|
exports.ResourceModel = ResourceModel;
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvcmVzb3VyY2UtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5Q0FBd0M7QUFDeEMsZ0RBQXdCO0FBQ3hCLDREQUF1RTtBQUV2RSxxQ0FBZ0Q7QUFHaEQsNkNBQTZDO0FBQzdDLHdEQUF3RDtBQUN4RCwyQ0FBMkM7QUFDOUIsUUFBQSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7QUFpQjdDLE1BQWEsYUFBYTtJQXlCeEIsWUFBWSxPQUE2QjtRQUZsQyw0QkFBdUIsR0FBNEMsRUFBRSxDQUFDO1FBRzNFLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEsMkJBQVMsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFP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QUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUNyQyxFQUFFLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLEdBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQWM7UUFDakMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFuSUQsc0NBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IHRvU25ha2VDYXNlIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEZRUE4sIHBhcnNlRlFQTiwgUHJvdmlkZXJOYW1lIH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1zY2hlbWFcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZU1vZGVsIH0gZnJvbSBcIi4vYXR0cmlidXRlLW1vZGVsXCI7XG5pbXBvcnQgeyBTdHJ1Y3QsIENvbmZpZ1N0cnVjdCB9IGZyb20gXCIuL3N0cnVjdFwiO1xuaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5cbi8vIExpbWl0IGlzIDEyMDAgdG8gcHJldmVudCBzdGFjayBzaXplIGVycm9yLlxuLy8gQ291bGQgaW5jcmVhc2Ugbm93IHRoYXQgY2FsY3VsYXRpb24gaXMgbW9yZSBhY2N1cmF0ZTtcbi8vIGhvd2V2ZXIsIHByb2JhYmx5IGJldHRlciB0byBoYXZlIHNtYWxsZXJcbmV4cG9ydCBjb25zdCBTVFJVQ1RfU0hBUkRJTkdfVEhSRVNIT0xEID0gNDAwO1xuXG5pbnRlcmZhY2UgUmVzb3VyY2VNb2RlbE9wdGlvbnMge1xuICB0ZXJyYWZvcm1UeXBlOiBzdHJpbmc7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBiYXNlTmFtZTogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdO1xuICBzdHJ1Y3RzOiBTdHJ1Y3RbXTtcbiAgZnFwbjogRlFQTjtcbiAgc2NoZW1hOiBTY2hlbWE7XG4gIHRlcnJhZm9ybVNjaGVtYVR5cGU6IHN0cmluZztcbiAgY29uZmlnU3RydWN0TmFtZTogc3RyaW5nO1xufVxuXG50eXBlIERlZmluaXRpb25QYXRoID0gc3RyaW5nO1xuZXhwb3J0IGNsYXNzIFJlc291cmNlTW9kZWwge1xuICBwdWJsaWMgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBmaWxlUGF0aDogc3RyaW5nO1xuICBwdWJsaWMgdGVycmFmb3JtVHlwZTogc3RyaW5nO1xuICBwdWJsaWMgYmFzZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHByb3ZpZGVyOiBQcm92aWRlck5hbWU7XG4gIHB1YmxpYyBmcXBuOiBGUVBOO1xuICBwdWJsaWMgcHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludD86IHN0cmluZztcbiAgcHVibGljIHByb3ZpZGVyVmVyc2lvbj86IHN0cmluZztcbiAgcHVibGljIHRlcnJhZm9ybVByb3ZpZGVyU291cmNlPzogc3RyaW5nO1xuICAvKlxuICAgKiB1c3VhbGx5IHNhbWUgYXMgcHJvdmlkZXIsIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBpZiB1c2VyIHBpY2tzIGEgZGlmZmVyZW50IG5hbWVcbiAgICogdG8gYmUgYWJsZSB0byB1c2UgdHdvIHByb3ZpZGVycyB3aXRoIHRoZSBzYW1lIG5hbWVcbiAgICovXG4gIHB1YmxpYyB0ZXJyYWZvcm1Qcm92aWRlck5hbWU6IHN0cmluZztcbiAgcHVibGljIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdO1xuICBwdWJsaWMgc2NoZW1hOiBTY2hlbWE7XG4gIHByaXZhdGUgX3N0cnVjdHM6IFN0cnVjdFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogc3RyaW5nW107XG4gIHByaXZhdGUgdGVycmFmb3JtU2NoZW1hVHlwZTogc3RyaW5nO1xuICBwcml2YXRlIGNvbmZpZ1N0cnVjdE5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHN0cnVjdHNSZXF1aXJlU2hhcmRpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyByZWN1cnNpdmVBdHRyaWJ1dGVQYXRoczogeyBbdXNhZ2VQYXRoOiBzdHJpbmddOiBEZWZpbml0aW9uUGF0aCB9ID0ge307XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVzb3VyY2VNb2RlbE9wdGlvbnMpIHtcbiAgICB0aGlzLmNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3NOYW1lO1xuICAgIHRoaXMuZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoO1xuICAgIHRoaXMudGVycmFmb3JtVHlwZSA9IG9wdGlvbnMudGVycmFmb3JtVHlwZTtcbiAgICB0aGlzLmJhc2VOYW1lID0gb3B0aW9ucy5iYXNlTmFtZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXM7XG4gICAgdGhpcy5zY2hlbWEgPSBvcHRpb25zLnNjaGVtYTtcbiAgICB0aGlzLmZxcG4gPSBvcHRpb25zLmZxcG47XG4gICAgdGhpcy5wcm92aWRlciA9IHBhcnNlRlFQTihvcHRpb25zLmZxcG4pLm5hbWU7XG4gICAgdGhpcy50ZXJyYWZvcm1Qcm92aWRlck5hbWUgPSB0aGlzLnByb3ZpZGVyO1xuICAgIHRoaXMuZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lO1xuICAgIHRoaXMuX3N0cnVjdHMgPSBvcHRpb25zLnN0cnVjdHM7XG4gICAgdGhpcy50ZXJyYWZvcm1TY2hlbWFUeXBlID0gb3B0aW9ucy50ZXJyYWZvcm1TY2hlbWFUeXBlO1xuICAgIHRoaXMuY29uZmlnU3RydWN0TmFtZSA9IG9wdGlvbnMuY29uZmlnU3RydWN0TmFtZTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IFtcbiAgICAgIGBpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztgLFxuICAgICAgYGltcG9ydCAqIGFzIGNka3RuIGZyb20gJ2Nka3RuJztgLFxuICAgIF07XG5cbiAgICB0aGlzLnN0cnVjdHNSZXF1aXJlU2hhcmRpbmcgPVxuICAgICAgdGhpcy5fc3RydWN0cy5yZWR1Y2UoKHBhcnRpYWxTdW0sIHMpID0+IHBhcnRpYWxTdW0gKyBzLmV4cG9ydENvdW50LCAwKSA+XG4gICAgICBTVFJVQ1RfU0hBUkRJTkdfVEhSRVNIT0xEO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJ1Y3RzKCk6IFN0cnVjdFtdIHtcbiAgICByZXR1cm4gW3RoaXMuY29uZmlnU3RydWN0LCAuLi50aGlzLl9zdHJ1Y3RzXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlnU3RydWN0KCkge1xuICAgIHJldHVybiBuZXcgQ29uZmlnU3RydWN0KHRoaXMuY29uZmlnU3RydWN0TmFtZSwgdGhpcy5hdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3ludGhlc2l6YWJsZUF0dHJpYnV0ZXMoKTogQXR0cmlidXRlTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RydWN0LmFzc2lnbmFibGVBdHRyaWJ1dGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBpbXBvcnRTdGF0ZW1lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmNpZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNjaGVtYUFzSnNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVzY2FwZVNjaGVtYShKU09OLnN0cmluZ2lmeSh0aGlzLnNjaGVtYSwgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpbmtUb0RvY3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGhvc3RuYW1lLCBuYW1lc3BhY2UsIG5hbWUgfSA9IHBhcnNlRlFQTih0aGlzLmZxcG4pO1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLnByb3ZpZGVyVmVyc2lvbiB8fCBcImxhdGVzdFwiO1xuICAgIGNvbnN0IGJhc2UgPSBgaHR0cHM6Ly8ke2hvc3RuYW1lfS9wcm92aWRlcnMvJHtuYW1lc3BhY2V9LyR7bmFtZX0vJHt2ZXJzaW9ufS9kb2NzYDtcbiAgICBpZiAodGhpcy5pc1Byb3ZpZGVyKSByZXR1cm4gYmFzZTtcbiAgICBpZiAodGhpcy5pc0RhdGFTb3VyY2UpXG4gICAgICByZXR1cm4gYCR7YmFzZX0vZGF0YS1zb3VyY2VzLyR7dGhpcy50ZXJyYWZvcm1Eb2NOYW1lfWA7XG4gICAgcmV0dXJuIGAke2Jhc2V9L3Jlc291cmNlcy8ke3RoaXMudGVycmFmb3JtRG9jTmFtZX1gO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1Byb3ZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVNjaGVtYVR5cGUgPT09IFwicHJvdmlkZXJcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEYXRhU291cmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVNjaGVtYVR5cGUgPT09IFwiZGF0YV9zb3VyY2VcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyZW50Q2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm92aWRlclxuICAgICAgPyBcIlRlcnJhZm9ybVByb3ZpZGVyXCJcbiAgICAgIDogdGhpcy5pc0RhdGFTb3VyY2VcbiAgICAgICAgPyBcIlRlcnJhZm9ybURhdGFTb3VyY2VcIlxuICAgICAgICA6IFwiVGVycmFmb3JtUmVzb3VyY2VcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGVycmFmb3JtUmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm92aWRlclxuICAgICAgPyB0aGlzLnRlcnJhZm9ybVByb3ZpZGVyTmFtZVxuICAgICAgOiB0aGlzLmlzRGF0YVNvdXJjZVxuICAgICAgICA/IHRoaXMudGVycmFmb3JtVHlwZS5yZXBsYWNlKC9eZGF0YV8vLCBcIlwiKVxuICAgICAgICA6IHRoaXMudGVycmFmb3JtVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGVycmFmb3JtRG9jTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b1NuYWtlQ2FzZShcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlLnJlcGxhY2UoXG4gICAgICAgIG5ldyBSZWdFeHAoYF4ke3RoaXMucHJvdmlkZXJ9X2AsIFwiaVwiKSxcbiAgICAgICAgXCJcIixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmZXJlbmNlZFR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdHJ1Y3QucmVmZXJlbmNlZFR5cGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJ1Y3RzRm9sZGVyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwYXRoLmJhc2VuYW1lKHRoaXMuZmlsZU5hbWUsIFwiLnRzXCIpfS1zdHJ1Y3RzYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RydWN0c0ZvbGRlclBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMubmFtZXNwYWNlRm9sZGVyUGF0aCwgdGhpcy5zdHJ1Y3RzRm9sZGVyTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVzcGFjZUZvbGRlclBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWxlUGF0aC5zcGxpdChcIi9cIikuc2xpY2UoMCwgLTEpLmpvaW4oXCIvXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVTY2hlbWEoc2NoZW1hOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzY2hlbWEucmVwbGFjZSgvKFxcKlxcLykvZ2ksIGAqXFxcXC9gKTtcbiAgfVxufVxuIl19
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvcmVzb3VyY2UtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5Q0FBd0M7QUFDeEMsZ0RBQXdCO0FBQ3hCLDREQUF1RTtBQUV2RSxxQ0FBZ0Q7QUFJaEQsNkNBQTZDO0FBQzdDLHdEQUF3RDtBQUN4RCwyQ0FBMkM7QUFDOUIsUUFBQSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7QUFpQjdDLE1BQWEsYUFBYTtJQWdDeEIsWUFBWSxPQUE2QjtRQUZsQyw0QkFBdUIsR0FBNEMsRUFBRSxDQUFDO1FBRzNFLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEsMkJBQVMsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFP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RU8sWUFBWSxDQUFDLE1BQWM7UUFDakMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUF4SkQsc0NBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IHRvU25ha2VDYXNlIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEZRUE4sIHBhcnNlRlFQTiwgUHJvdmlkZXJOYW1lIH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1zY2hlbWFcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZU1vZGVsIH0gZnJvbSBcIi4vYXR0cmlidXRlLW1vZGVsXCI7XG5pbXBvcnQgeyBTdHJ1Y3QsIENvbmZpZ1N0cnVjdCB9IGZyb20gXCIuL3N0cnVjdFwiO1xuaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyBQcm92aWRlckZ1bmN0aW9uc01vZGVsIH0gZnJvbSBcIi4vcHJvdmlkZXItZnVuY3Rpb24tbW9kZWxcIjtcblxuLy8gTGltaXQgaXMgMTIwMCB0byBwcmV2ZW50IHN0YWNrIHNpemUgZXJyb3IuXG4vLyBDb3VsZCBpbmNyZWFzZSBub3cgdGhhdCBjYWxjdWxhdGlvbiBpcyBtb3JlIGFjY3VyYXRlO1xuLy8gaG93ZXZlciwgcHJvYmFibHkgYmV0dGVyIHRvIGhhdmUgc21hbGxlclxuZXhwb3J0IGNvbnN0IFNUUlVDVF9TSEFSRElOR19USFJFU0hPTEQgPSA0MDA7XG5cbmludGVyZmFjZSBSZXNvdXJjZU1vZGVsT3B0aW9ucyB7XG4gIHRlcnJhZm9ybVR5cGU6IHN0cmluZztcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIGJhc2VOYW1lOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVQYXRoOiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZU1vZGVsW107XG4gIHN0cnVjdHM6IFN0cnVjdFtdO1xuICBmcXBuOiBGUVBOO1xuICBzY2hlbWE6IFNjaGVtYTtcbiAgdGVycmFmb3JtU2NoZW1hVHlwZTogc3RyaW5nO1xuICBjb25maWdTdHJ1Y3ROYW1lOiBzdHJpbmc7XG59XG5cbnR5cGUgRGVmaW5pdGlvblBhdGggPSBzdHJpbmc7XG5leHBvcnQgY2xhc3MgUmVzb3VyY2VNb2RlbCB7XG4gIHB1YmxpYyBjbGFzc05hbWU6IHN0cmluZztcbiAgcHVibGljIGZpbGVQYXRoOiBzdHJpbmc7XG4gIHB1YmxpYyB0ZXJyYWZvcm1UeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBiYXNlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcHJvdmlkZXI6IFByb3ZpZGVyTmFtZTtcbiAgcHVibGljIGZxcG46IEZRUE47XG4gIHB1YmxpYyBwcm92aWRlclZlcnNpb25Db25zdHJhaW50Pzogc3RyaW5nO1xuICBwdWJsaWMgcHJvdmlkZXJWZXJzaW9uPzogc3RyaW5nO1xuICBwdWJsaWMgdGVycmFmb3JtUHJvdmlkZXJTb3VyY2U/OiBzdHJpbmc7XG4gIC8qXG4gICAqIHVzdWFsbHkgc2FtZSBhcyBwcm92aWRlciwgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGlmIHVzZXIgcGlja3MgYSBkaWZmZXJlbnQgbmFtZVxuICAgKiB0byBiZSBhYmxlIHRvIHVzZSB0d28gcHJvdmlkZXJzIHdpdGggdGhlIHNhbWUgbmFtZVxuICAgKi9cbiAgcHVibGljIHRlcnJhZm9ybVByb3ZpZGVyTmFtZTogc3RyaW5nO1xuICAvKlxuICAgKiBPbmx5IHNldCAoYnkgcHJvdmlkZXItZ2VuZXJhdG9yLnRzKSB3aGVuIGlzUHJvdmlkZXIgaXMgdHJ1ZSBhbmQgdGhlXG4gICAqIHByb3ZpZGVyIHNjaGVtYSBkZWNsYXJlcyBwcm92aWRlci1kZWZpbmVkIGZ1bmN0aW9ucyAtIGRyaXZlcyB3aGV0aGVyXG4gICAqIFJlc291cmNlRW1pdHRlciBlbWl0cyB0aGUgbWVtb2l6ZWQgYGZ1bmN0aW9uc2AgZ2V0dGVyIGFuZCBpdHNcbiAgICogY3Jvc3MtZGlyZWN0b3J5IGltcG9ydCBvZiB0aGUgc2libGluZyBwcm92aWRlci1mdW5jdGlvbnMvaW5kZXgudHMgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBwcm92aWRlckZ1bmN0aW9uc01vZGVsPzogUHJvdmlkZXJGdW5jdGlvbnNNb2RlbDtcbiAgcHVibGljIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdO1xuICBwdWJsaWMgc2NoZW1hOiBTY2hlbWE7XG4gIHByaXZhdGUgX3N0cnVjdHM6IFN0cnVjdFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogc3RyaW5nW107XG4gIHByaXZhdGUgdGVycmFmb3JtU2NoZW1hVHlwZTogc3RyaW5nO1xuICBwcml2YXRlIGNvbmZpZ1N0cnVjdE5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHN0cnVjdHNSZXF1aXJlU2hhcmRpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyByZWN1cnNpdmVBdHRyaWJ1dGVQYXRoczogeyBbdXNhZ2VQYXRoOiBzdHJpbmddOiBEZWZpbml0aW9uUGF0aCB9ID0ge307XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVzb3VyY2VNb2RlbE9wdGlvbnMpIHtcbiAgICB0aGlzLmNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3NOYW1lO1xuICAgIHRoaXMuZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoO1xuICAgIHRoaXMudGVycmFmb3JtVHlwZSA9IG9wdGlvbnMudGVycmFmb3JtVHlwZTtcbiAgICB0aGlzLmJhc2VOYW1lID0gb3B0aW9ucy5iYXNlTmFtZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXM7XG4gICAgdGhpcy5zY2hlbWEgPSBvcHRpb25zLnNjaGVtYTtcbiAgICB0aGlzLmZxcG4gPSBvcHRpb25zLmZxcG47XG4gICAgdGhpcy5wcm92aWRlciA9IHBhcnNlRlFQTihvcHRpb25zLmZxcG4pLm5hbWU7XG4gICAgdGhpcy50ZXJyYWZvcm1Qcm92aWRlck5hbWUgPSB0aGlzLnByb3ZpZGVyO1xuICAgIHRoaXMuZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lO1xuICAgIHRoaXMuX3N0cnVjdHMgPSBvcHRpb25zLnN0cnVjdHM7XG4gICAgdGhpcy50ZXJyYWZvcm1TY2hlbWFUeXBlID0gb3B0aW9ucy50ZXJyYWZvcm1TY2hlbWFUeXBlO1xuICAgIHRoaXMuY29uZmlnU3RydWN0TmFtZSA9IG9wdGlvbnMuY29uZmlnU3RydWN0TmFtZTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IFtcbiAgICAgIGBpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztgLFxuICAgICAgYGltcG9ydCAqIGFzIGNka3RuIGZyb20gJ2Nka3RuJztgLFxuICAgIF07XG5cbiAgICB0aGlzLnN0cnVjdHNSZXF1aXJlU2hhcmRpbmcgPVxuICAgICAgdGhpcy5fc3RydWN0cy5yZWR1Y2UoKHBhcnRpYWxTdW0sIHMpID0+IHBhcnRpYWxTdW0gKyBzLmV4cG9ydENvdW50LCAwKSA+XG4gICAgICBTVFJVQ1RfU0hBUkRJTkdfVEhSRVNIT0xEO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJ1Y3RzKCk6IFN0cnVjdFtdIHtcbiAgICByZXR1cm4gW3RoaXMuY29uZmlnU3RydWN0LCAuLi50aGlzLl9zdHJ1Y3RzXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlnU3RydWN0KCkge1xuICAgIHJldHVybiBuZXcgQ29uZmlnU3RydWN0KFxuICAgICAgdGhpcy5jb25maWdTdHJ1Y3ROYW1lLFxuICAgICAgdGhpcy5hdHRyaWJ1dGVzLFxuICAgICAgdGhpcy5pc0VwaGVtZXJhbFJlc291cmNlID8gXCJUZXJyYWZvcm1FcGhlbWVyYWxNZXRhQXJndW1lbnRzXCIgOiB1bmRlZmluZWQsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3ludGhlc2l6YWJsZUF0dHJpYnV0ZXMoKTogQXR0cmlidXRlTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RydWN0LmFzc2lnbmFibGVBdHRyaWJ1dGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBpbXBvcnRTdGF0ZW1lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmNpZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNjaGVtYUFzSnNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVzY2FwZVNjaGVtYShKU09OLnN0cmluZ2lmeSh0aGlzLnNjaGVtYSwgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpbmtUb0RvY3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGhvc3RuYW1lLCBuYW1lc3BhY2UsIG5hbWUgfSA9IHBhcnNlRlFQTih0aGlzLmZxcG4pO1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLnByb3ZpZGVyVmVyc2lvbiB8fCBcImxhdGVzdFwiO1xuICAgIGNvbnN0IGJhc2UgPSBgaHR0cHM6Ly8ke2hvc3RuYW1lfS9wcm92aWRlcnMvJHtuYW1lc3BhY2V9LyR7bmFtZX0vJHt2ZXJzaW9ufS9kb2NzYDtcbiAgICBpZiAodGhpcy5pc1Byb3ZpZGVyKSByZXR1cm4gYmFzZTtcbiAgICBpZiAodGhpcy5pc0RhdGFTb3VyY2UpXG4gICAgICByZXR1cm4gYCR7YmFzZX0vZGF0YS1zb3VyY2VzLyR7dGhpcy50ZXJyYWZvcm1Eb2NOYW1lfWA7XG4gICAgaWYgKHRoaXMuaXNFcGhlbWVyYWxSZXNvdXJjZSlcbiAgICAgIHJldHVybiBgJHtiYXNlfS9lcGhlbWVyYWwtcmVzb3VyY2VzLyR7dGhpcy50ZXJyYWZvcm1Eb2NOYW1lfWA7XG4gICAgcmV0dXJuIGAke2Jhc2V9L3Jlc291cmNlcy8ke3RoaXMudGVycmFmb3JtRG9jTmFtZX1gO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1Byb3ZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVNjaGVtYVR5cGUgPT09IFwicHJvdmlkZXJcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEYXRhU291cmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVNjaGVtYVR5cGUgPT09IFwiZGF0YV9zb3VyY2VcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNFcGhlbWVyYWxSZXNvdXJjZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1TY2hlbWFUeXBlID09PSBcImVwaGVtZXJhbF9yZXNvdXJjZVwiO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJlbnRDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1Byb3ZpZGVyXG4gICAgICA/IFwiVGVycmFmb3JtUHJvdmlkZXJcIlxuICAgICAgOiB0aGlzLmlzRGF0YVNvdXJjZVxuICAgICAgICA/IFwiVGVycmFmb3JtRGF0YVNvdXJjZVwiXG4gICAgICAgIDogdGhpcy5pc0VwaGVtZXJhbFJlc291cmNlXG4gICAgICAgICAgPyBcIlRlcnJhZm9ybUVwaGVtZXJhbFJlc291cmNlXCJcbiAgICAgICAgICA6IFwiVGVycmFmb3JtUmVzb3VyY2VcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGVycmFmb3JtUmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm92aWRlclxuICAgICAgPyB0aGlzLnRlcnJhZm9ybVByb3ZpZGVyTmFtZVxuICAgICAgOiB0aGlzLmlzRGF0YVNvdXJjZVxuICAgICAgICA/IHRoaXMudGVycmFmb3JtVHlwZS5yZXBsYWNlKC9eZGF0YV8vLCBcIlwiKVxuICAgICAgICA6IHRoaXMuaXNFcGhlbWVyYWxSZXNvdXJjZVxuICAgICAgICAgID8gdGhpcy50ZXJyYWZvcm1UeXBlLnJlcGxhY2UoL15lcGhlbWVyYWxfLywgXCJcIilcbiAgICAgICAgICA6IHRoaXMudGVycmFmb3JtVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGVycmFmb3JtRG9jTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b1NuYWtlQ2FzZShcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlLnJlcGxhY2UoXG4gICAgICAgIG5ldyBSZWdFeHAoYF4ke3RoaXMucHJvdmlkZXJ9X2AsIFwiaVwiKSxcbiAgICAgICAgXCJcIixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmZXJlbmNlZFR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdHJ1Y3QucmVmZXJlbmNlZFR5cGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJ1Y3RzRm9sZGVyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwYXRoLmJhc2VuYW1lKHRoaXMuZmlsZU5hbWUsIFwiLnRzXCIpfS1zdHJ1Y3RzYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RydWN0c0ZvbGRlclBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMubmFtZXNwYWNlRm9sZGVyUGF0aCwgdGhpcy5zdHJ1Y3RzRm9sZGVyTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVzcGFjZUZvbGRlclBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWxlUGF0aC5zcGxpdChcIi9cIikuc2xpY2UoMCwgLTEpLmpvaW4oXCIvXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVTY2hlbWEoc2NoZW1hOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzY2hlbWEucmVwbGFjZSgvKFxcKlxcLykvZ2ksIGAqXFxcXC9gKTtcbiAgfVxufVxuIl19
|
|
@@ -26,6 +26,8 @@ export declare class Struct {
|
|
|
26
26
|
get exportCount(): number;
|
|
27
27
|
}
|
|
28
28
|
export declare class ConfigStruct extends Struct {
|
|
29
|
+
private readonly extendsClass;
|
|
30
|
+
constructor(name: string, attributes: AttributeModel[], extendsClass?: string);
|
|
29
31
|
get extends(): string;
|
|
30
32
|
}
|
|
31
33
|
//# sourceMappingURL=struct.d.ts.map
|
|
@@ -82,9 +82,13 @@ class Struct {
|
|
|
82
82
|
}
|
|
83
83
|
exports.Struct = Struct;
|
|
84
84
|
class ConfigStruct extends Struct {
|
|
85
|
+
constructor(name, attributes, extendsClass = "TerraformMetaArguments") {
|
|
86
|
+
super(name, attributes);
|
|
87
|
+
this.extendsClass = extendsClass;
|
|
88
|
+
}
|
|
85
89
|
get extends() {
|
|
86
|
-
return ` extends cdktn.
|
|
90
|
+
return ` extends cdktn.${this.extendsClass}`;
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
93
|
exports.ConfigStruct = ConfigStruct;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvbW9kZWxzL3N0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSx3Q0FBOEM7QUFDOUMsTUFBYSxNQUFNO0lBQ2pCLFlBQ2tCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFVLEtBQUssRUFDZixjQUFjLEtBQUssRUFDNUIsZUFBZSxLQUFLLEVBQ1gsY0FBc0IsRUFBRTtRQUx4QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ1gsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDdkMsQ0FBQztJQUVKLElBQVcsb0JBQW9CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxDQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUNwQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDMUQsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxX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QUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBWkQsb0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi9hdHRyaWJ1dGUtbW9kZWxcIjtcbmltcG9ydCB7IGRvd25jYXNlRmlyc3QgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbFwiO1xuZXhwb3J0IGNsYXNzIFN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZU1vZGVsW10sXG4gICAgcHVibGljIHJlYWRvbmx5IGlzQ2xhc3MgPSBmYWxzZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNBbm9ueW1vdXMgPSBmYWxzZSxcbiAgICBwdWJsaWMgaXNTaW5nbGVJdGVtID0gZmFsc2UsXG4gICAgcHVibGljIHJlYWRvbmx5IG5lc3RpbmdNb2RlOiBzdHJpbmcgPSBcIlwiLFxuICApIHt9XG5cbiAgcHVibGljIGdldCBhc3NpZ25hYmxlQXR0cmlidXRlcygpOiBBdHRyaWJ1dGVNb2RlbFtdIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzLmZpbHRlcigoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUuaXNBc3NpZ25hYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3B0aW9uYWxBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZU1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMuZmlsdGVyKChhdHRyaWJ1dGUpID0+IGF0dHJpYnV0ZS5vcHRpb25hbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbE9wdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmF0dHJpYnV0ZXMuZmlsdGVyKFxuICAgICAgICAoYXR0cmlidXRlKSA9PiAhYXR0cmlidXRlLm9wdGlvbmFsICYmICFhdHRyaWJ1dGUuY29tcHV0ZWQsXG4gICAgICApLmxlbmd0aCA9PSAwXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXR0cmlidXRlVHlwZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfSR7dGhpcy5hbGxPcHRpb25hbCA/IFwiID0ge31cIiA6IFwiXCJ9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXNzaWduYWJsZSgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNDbGFzcyB8fCB0aGlzLmFzc2lnbmFibGVBdHRyaWJ1dGVzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4dGVuZHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFwcGVyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtkb3duY2FzZUZpcnN0KHRoaXMubmFtZSl9VG9UZXJyYWZvcm1gO1xuICB9XG5cbiAgcHVibGljIGdldCBoY2xNYXBwZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2Rvd25jYXNlRmlyc3QodGhpcy5uYW1lKX1Ub0hjbFRlcnJhZm9ybWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dFJlZmVyZW5jZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfU91dHB1dFJlZmVyZW5jZWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpc3ROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubmFtZX1MaXN0YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFwTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWV9TWFwYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFwTGlzdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfU1hcExpc3RgO1xuICB9XG5cbiAgcHVibGljIGdldCBsaXN0TWFwTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWV9TGlzdE1hcGA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpc3RMaXN0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWV9TGlzdExpc3RgO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1Byb3ZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMuc29tZSgoYXR0KSA9PiBhdHQuaXNQcm92aWRlcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlZmVyZW5jZWRUeXBlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgdHlwZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICB0aGlzLmF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0KSA9PiB7XG4gICAgICBjb25zdCBhdHRSZWZlcmVuY2VzID0gYXR0LmdldFJlZmVyZW5jZWRUeXBlcyhmYWxzZSk7IC8vIFRoaXMgbWF5IGJlIGEgY29uZmlnIHN0cnVjdCwgYnV0IHN0aWxsIG5lZWQgdGhlIHJlZmVyZW5jZXMgaW4gdGhpcyBjb250ZXh0XG4gICAgICBpZiAoYXR0UmVmZXJlbmNlcykge1xuICAgICAgICB0eXBlcy5wdXNoKC4uLmF0dFJlZmVyZW5jZXMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBleHBvcnRDb3VudCgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDE7IC8vIHNlbGZcbiAgICBjb3VudCArPSAxOyAvLyB0b1RlcnJhZm9ybSBmdW5jdGlvblxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5uZXN0aW5nTW9kZSA9PT0gXCJsaXN0XCIgfHxcbiAgICAgIHRoaXMubmVzdGluZ01vZGUgPT09IFwic2V0XCIgfHxcbiAgICAgIHRoaXMubmVzdGluZ01vZGUgPT09IFwibWFwXCJcbiAgICApIHtcbiAgICAgIGNvdW50ICs9IDE7IC8vIG91dHB1dCByZWZlcmVuY2VcblxuICAgICAgaWYgKCF0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgICBjb3VudCArPSAxOyAvLyBjb21wbGV4IGNvbGxlY3Rpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZ1N0cnVjdCBleHRlbmRzIFN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXh0ZW5kc0NsYXNzOiBzdHJpbmcgPSBcIlRlcnJhZm9ybU1ldGFBcmd1bWVudHNcIixcbiAgKSB7XG4gICAgc3VwZXIobmFtZSwgYXR0cmlidXRlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4dGVuZHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCBleHRlbmRzIGNka3RuLiR7dGhpcy5leHRlbmRzQ2xhc3N9YDtcbiAgfVxufVxuIl19
|
|
@@ -23,6 +23,7 @@ export declare class TerraformProviderGenerator {
|
|
|
23
23
|
private resourceParser;
|
|
24
24
|
private resourceEmitter;
|
|
25
25
|
private structEmitter;
|
|
26
|
+
private providerFunctionsEmitter;
|
|
26
27
|
private readonly importExtension;
|
|
27
28
|
versions: {
|
|
28
29
|
[fqpn: string]: string | undefined;
|
|
@@ -36,6 +37,7 @@ export declare class TerraformProviderGenerator {
|
|
|
36
37
|
getClassNameForResource(terraformType: string): string;
|
|
37
38
|
getNamespaceNameForResource(terraformType: string): string;
|
|
38
39
|
private emitProvider;
|
|
40
|
+
private emitProviderFunctions;
|
|
39
41
|
private emitResourceReadme;
|
|
40
42
|
private emitIndexFile;
|
|
41
43
|
private emitLazyIndexFile;
|
|
@@ -6,6 +6,7 @@ exports.TerraformProviderGenerator = void 0;
|
|
|
6
6
|
const codemaker_1 = require("codemaker");
|
|
7
7
|
const commons_1 = require("@cdktn/commons");
|
|
8
8
|
const provider_schema_1 = require("@cdktn/provider-schema");
|
|
9
|
+
const models_1 = require("./models");
|
|
9
10
|
const resource_parser_1 = require("./resource-parser");
|
|
10
11
|
const emitter_1 = require("./emitter");
|
|
11
12
|
const isMatching = (target, terraformSchemaName) => {
|
|
@@ -69,8 +70,9 @@ class TerraformProviderGenerator {
|
|
|
69
70
|
this.versions = {};
|
|
70
71
|
this.code.indentation = 2;
|
|
71
72
|
this.importExtension = (_a = options.importExtension) !== null && _a !== void 0 ? _a : "";
|
|
72
|
-
this.resourceEmitter = new emitter_1.ResourceEmitter(this.code);
|
|
73
|
+
this.resourceEmitter = new emitter_1.ResourceEmitter(this.code, this.importExtension);
|
|
73
74
|
this.structEmitter = new emitter_1.StructEmitter(this.code, this.importExtension);
|
|
75
|
+
this.providerFunctionsEmitter = new emitter_1.ProviderFunctionsEmitter(this.code);
|
|
74
76
|
}
|
|
75
77
|
getProviderByConstraint(providerConstraint) {
|
|
76
78
|
return Object.keys(this.schema.provider_schemas || {}).find((fqpn) => isMatching(providerConstraint, fqpn));
|
|
@@ -102,7 +104,11 @@ class TerraformProviderGenerator {
|
|
|
102
104
|
}
|
|
103
105
|
const resources = Object.entries(provider.resource_schemas || {}).map(([type, resource]) => this.resourceParser.parse(fqpn, type, resource, "resource", constraint));
|
|
104
106
|
const dataSources = Object.entries(provider.data_source_schemas || {}).map(([type, resource]) => this.resourceParser.parse(fqpn, `data_${type}`, resource, "data_source", constraint));
|
|
105
|
-
|
|
107
|
+
const ephemeralResources = Object.entries(provider.ephemeral_resource_schemas || {}).map(([type, resource]) => this.resourceParser.parse(fqpn, `ephemeral_${type}`, resource, "ephemeral_resource", constraint));
|
|
108
|
+
// CRITICAL: ephemeral resources must be appended AFTER resources and data
|
|
109
|
+
// sources - uniqueClassName dedup is order-dependent and existing
|
|
110
|
+
// prebuilt snapshots must not churn.
|
|
111
|
+
return [].concat(...resources, ...dataSources, ...ephemeralResources);
|
|
106
112
|
}
|
|
107
113
|
getClassNameForResource(terraformType) {
|
|
108
114
|
return this.resourceParser.getClassNameForResource(terraformType);
|
|
@@ -134,6 +140,12 @@ class TerraformProviderGenerator {
|
|
|
134
140
|
}
|
|
135
141
|
this.emitResourceReadme(resourceModel);
|
|
136
142
|
});
|
|
143
|
+
// Built before the provider class is emitted (rather than after, as
|
|
144
|
+
// resources/data sources/ephemeral resources above already are) so that
|
|
145
|
+
// the model can be attached to providerResource and picked up by
|
|
146
|
+
// ResourceEmitter while it still emits the provider class file below -
|
|
147
|
+
// see the engineering brief for why this ordering matters.
|
|
148
|
+
const providerFunctionsModel = (0, models_1.buildProviderFunctionsModel)(name, provider.functions);
|
|
137
149
|
if (provider.provider) {
|
|
138
150
|
const providerResource = this.resourceParser.parse(fqpn, `provider`, provider.provider, "provider", constraint);
|
|
139
151
|
if (constraint) {
|
|
@@ -142,12 +154,28 @@ class TerraformProviderGenerator {
|
|
|
142
154
|
providerResource.terraformProviderName = constraint.name;
|
|
143
155
|
}
|
|
144
156
|
providerResource.providerVersion = providerVersion;
|
|
157
|
+
if (providerFunctionsModel) {
|
|
158
|
+
(0, models_1.assertNoFunctionsGetterCollision)(name, providerResource.attributes.map((att) => att.name));
|
|
159
|
+
providerResource.providerFunctionsModel = providerFunctionsModel;
|
|
160
|
+
}
|
|
145
161
|
files.push(this.emitResource(providerResource));
|
|
146
162
|
this.emitResourceReadme(providerResource);
|
|
147
163
|
}
|
|
164
|
+
if (providerFunctionsModel) {
|
|
165
|
+
files.push(this.emitProviderFunctions(name, providerFunctionsModel));
|
|
166
|
+
}
|
|
148
167
|
this.emitIndexFile(name, files);
|
|
149
168
|
this.emitLazyIndexFile(name, files);
|
|
150
169
|
}
|
|
170
|
+
emitProviderFunctions(provider, model) {
|
|
171
|
+
const filePath = `providers/${provider}/provider-functions/index.ts`;
|
|
172
|
+
this.code.openFile(filePath);
|
|
173
|
+
this.code.line(`// generated from provider function schema`);
|
|
174
|
+
this.code.line();
|
|
175
|
+
this.providerFunctionsEmitter.emit(model);
|
|
176
|
+
this.code.closeFile(filePath);
|
|
177
|
+
return filePath;
|
|
178
|
+
}
|
|
151
179
|
emitResourceReadme(resource) {
|
|
152
180
|
const filePath = `${resource.namespaceFolderPath}/README.md`;
|
|
153
181
|
this.code.openFile(filePath);
|
|
@@ -232,4 +260,4 @@ class TerraformProviderGenerator {
|
|
|
232
260
|
}
|
|
233
261
|
}
|
|
234
262
|
exports.TerraformProviderGenerator = TerraformProviderGenerator;
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvcHJvdmlkZXItZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMseUNBQW1EO0FBQ25ELDRDQU93QjtBQUN4Qiw0REFBdUU7QUFFdkUsdURBQW1EO0FBQ25ELHVDQUEyRDtBQWdCM0QsTUFBTSxVQUFVLEdBQUcsQ0FDakIsTUFBNkIsRUFDN0IsbUJBQTJCLEVBQ2xCLEVBQUU7SUFDWCxJQUFJLE1BQU0sQ0FBQyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFbEMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWhELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssbUJBQW1CLENBQUM7SUFDL0MsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7UUFFakQsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sWUFBWSxHQUFHO2dCQUNuQixXQUFXO2dCQUNYLFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLFNBQVMsRUFBRSxXQUFXO2dCQUN0QixJQUFJLEVBQUUsRUFBRTthQUNULENBQUM7WUFDRixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUss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RSxFQUFFLENBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQixDQUFDO1lBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxjQUFjLENBQUMsUUFBdUI7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUF0UUQsZ0VBc1FDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvZGVNYWtlciwgdG9DYW1lbENhc2UgfSBmcm9tIFwiY29kZW1ha2VyXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldCxcbiAgQ29uc3RydWN0c01ha2VyVGFyZ2V0LFxuICBMQU5HVUFHRVMsXG4gIGxvZ2dlcixcbiAgUHJvdmlkZXJTY2hlbWEsXG4gIFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludCxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyBGUVBOLCBwYXJzZUZRUE4sIFByb3ZpZGVyTmFtZSB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCI7XG5pbXBvcnQgeyBSZXNvdXJjZU1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBSZXNvdXJjZVBhcnNlciB9IGZyb20gXCIuL3Jlc291cmNlLXBhcnNlclwiO1xuaW1wb3J0IHsgUmVzb3VyY2VFbWl0dGVyLCBTdHJ1Y3RFbWl0dGVyIH0gZnJvbSBcIi4vZW1pdHRlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWxlIGV4dGVuc2lvbiB0byB3cml0ZSBvbiBlbWl0dGVkIHJlbGF0aXZlIGltcG9ydHMuXG4gICAqIERlZmF1bHRzIHRvIFwiXCIgKENvbW1vbkpTKS5cbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydEV4dGVuc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFByb3ZpZGVyRGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbn1cblxuY29uc3QgaXNNYXRjaGluZyA9IChcbiAgdGFyZ2V0OiBDb25zdHJ1Y3RzTWFrZXJUYXJnZXQsXG4gIHRlcnJhZm9ybVNjaGVtYU5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAodGFyZ2V0LmlzTW9kdWxlKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgZWxlbWVudHMgPSB0ZXJyYWZvcm1TY2hlbWFOYW1lLnNwbGl0KFwiL1wiKTtcblxuICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHRhcmdldC5zb3VyY2UgPT09IHRlcnJhZm9ybVNjaGVtYU5hbWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW2hvc3RuYW1lLCBuYW1lc3BhY2UsIHByb3ZpZGVyXSA9IGVsZW1lbnRzO1xuXG4gICAgaWYgKCFob3N0bmFtZSB8fCAhbmFtZXNwYWNlIHx8ICFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW4ndCBoYW5kbGUgJHt0ZXJyYWZvcm1TY2hlbWFOYW1lfWApO1xuICAgIH1cblxuICAgIC8vIElmIHRhcmdldC5zb3VyY2UgaXMgc2V0LCB0cnkgdG8gbWF0Y2ggaXRcbiAgICBpZiAodGFyZ2V0LnNvdXJjZSkge1xuICAgICAgY29uc3QgdGFyZ2V0U291cmNlID0ge1xuICAgICAgICAvLyBkZWZhdWx0c1xuICAgICAgICBob3N0bmFtZTogXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW9cIixcbiAgICAgICAgbmFtZXNwYWNlOiBcImhhc2hpY29ycFwiLFxuICAgICAgICBuYW1lOiBcIlwiLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGFyZ2V0LnNvdXJjZS5zcGxpdChcIi9cIik7XG4gICAgICAvLyBPbmx5IGEgMy1wYXJ0IHNvdXJjZSBleHBsaWNpdGx5IHBpbnMgYSByZWdpc3RyeSBob3N0bmFtZS4gU2hvcnRoYW5kXG4gICAgICAvLyBzb3VyY2VzIChlLmcuIFwiaGFzaGljb3JwL2F3c2NjXCIpIG9taXQgaXQsIHNvIHdlIG11c3Qgbm90IGFzc3VtZSBhXG4gICAgICAvLyBkZWZhdWx0OiBUZXJyYWZvcm0gcmVzb2x2ZXMgdGhlbSB1bmRlciByZWdpc3RyeS50ZXJyYWZvcm0uaW8gd2hpbGVcbiAgICAgIC8vIE9wZW5Ub2Z1IHJlc29sdmVzIHRoZW0gdW5kZXIgcmVnaXN0cnkub3BlbnRvZnUub3JnLiBDb21wYXJpbmcgYWdhaW5zdCBhXG4gICAgICAvLyBoYXJkLWNvZGVkIGRlZmF1bHQgd291bGQgbWFrZSBzY2hlbWEgbG9va3VwIGZhaWwgdW5kZXIgT3BlblRvZnUgZXZlblxuICAgICAgLy8gdGhvdWdoIHRoZSBwcm92aWRlciB3YXMgaW5zdGFsbGVkIGNvcnJlY3RseS5cbiAgICAgIGNvbnN0IGV4cGxpY2l0SG9zdG5hbWUgPSB0YXJnZXRFbGVtZW50cy5sZW5ndGggPT09IDM7XG4gICAgICBzd2l0Y2ggKHRhcmdldEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6IC8vIG9ubHkgbmFtZSBzZXRcbiAgICAgICAgICB0YXJnZXRTb3VyY2UubmFtZSA9IHRhcmdldEVsZW1lbnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogLy8gbmFtZXNwYWNlIGFuZCBuYW1lIHNldFxuICAgICAgICAgIHRhcmdldFNvdXJjZS5uYW1lc3BhY2UgPSB0YXJnZXRFbGVtZW50c1swXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIHRhcmdldFNvdXJjZS5uYW1lID0gdGFyZ2V0RWxlbWVudHNbMV0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOiAvLyBob3N0bmFtZSwgbmFtZXNwYWNlIGFuZCBuYW1lIHNldFxuICAgICAgICAgIHRhcmdldFNvdXJjZS5ob3N0bmFtZSA9IHRhcmdldEVsZW1lbnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgdGFyZ2V0U291cmNlLm5hbWVzcGFjZSA9IHRhcmdldEVsZW1lbnRzWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgdGFyZ2V0U291cmNlLm5hbWUgPSB0YXJnZXRFbGVtZW50c1syXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBjYW4ndCBoYW5kbGUgJHt0YXJnZXQuc291cmNlfS4gRXhwZWN0ZWQgc3RyaW5nIHdpdGggMSwgMiBvciAzIGVsZW1lbnRzIHNlcGFyYXRlZCBieSAnLydgLFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgICghZXhwbGljaXRIb3N0bmFtZSB8fCB0YXJnZXRTb3VyY2UuaG9zdG5hbWUgPT09IGhvc3RuYW1lKSAmJlxuICAgICAgICB0YXJnZXRTb3VyY2UubmFtZXNwYWNlID09PSBuYW1lc3BhY2UgJiZcbiAgICAgICAgdGFyZ2V0U291cmNlLm5hbWUgPT09IHByb3ZpZGVyXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVsc2UsIHRyeSB0byBtYXRjaCB0YXJnZXQubmFtZSB0byB0aGUgcHJvdmlkZXIgbmFtZVxuXG4gICAgcmV0dXJuIHRhcmdldC5uYW1lID09PSBwcm92aWRlcjtcbiAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlckNvbnN0cmFpbnRzIHtcbiAgW2Zxbjogc3RyaW5nXTogUHJvdmlkZXJEYXRhO1xufVxuXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtUHJvdmlkZXJHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlc291cmNlUGFyc2VyID0gbmV3IFJlc291cmNlUGFyc2VyKCk7XG4gIHByaXZhdGUgcmVzb3VyY2VFbWl0dGVyOiBSZXNvdXJjZUVtaXR0ZXI7XG4gIHByaXZhdGUgc3RydWN0RW1pdHRlcjogU3RydWN0RW1pdHRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBpbXBvcnRFeHRlbnNpb246IHN0cmluZztcbiAgcHVibGljIHZlcnNpb25zOiB7IFtmcXBuOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29kZTogQ29kZU1ha2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBQcm92aWRlclNjaGVtYSxcbiAgICBvcHRpb25zOiBUZXJyYWZvcm1Qcm92aWRlckdlbmVyYXRvck9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5jb2RlLmluZGVudGF0aW9uID0gMjtcbiAgICB0aGlzLmltcG9ydEV4dGVuc2lvbiA9IG9wdGlvbnMuaW1wb3J0RXh0ZW5zaW9uID8/IFwiXCI7XG4gICAgdGhpcy5yZXNvdXJjZUVtaXR0ZXIgPSBuZXcgUmVzb3VyY2VFbWl0dGVyKHRoaXMuY29kZSk7XG4gICAgdGhpcy5zdHJ1Y3RFbWl0dGVyID0gbmV3IFN0cnVjdEVtaXR0ZXIodGhpcy5jb2RlLCB0aGlzLmltcG9ydEV4dGVuc2lvbik7XG4gIH1cblxuICBwcml2YXRlIGdldFByb3ZpZGVyQnlDb25zdHJhaW50KFxuICAgIHByb3ZpZGVyQ29uc3RyYWludDogQ29uc3RydWN0c01ha2VyVGFyZ2V0LFxuICApOiBGUVBOIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvdmlkZXJfc2NoZW1hcyB8fCB7fSkuZmluZCgoZnFwbikgPT5cbiAgICAgIGlzTWF0Y2hpbmcocHJvdmlkZXJDb25zdHJhaW50LCBmcXBuKSxcbiAgICApIGFzIEZRUE4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGUocHJvdmlkZXJDb25zdHJhaW50OiBDb25zdHJ1Y3RzTWFrZXJUYXJnZXQpIHtcbiAgICBjb25zdCBmcXBuID0gdGhpcy5nZXRQcm92aWRlckJ5Q29uc3RyYWludChwcm92aWRlckNvbnN0cmFpbnQpO1xuICAgIGlmICghZnFwbikge1xuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgcHJvdmlkZXIgY29uc3RyYWludCBmb3IgJHtwcm92aWRlckNvbnN0cmFpbnR9IGluIHNjaGVtYTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB0aGlzLnNjaGVtYSxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIDIsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgZmluZCBwcm92aWRlciB3aXRoIGNvbnN0cmFpbnQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBwcm92aWRlckNvbnN0cmFpbnQsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdmlkZXJWZXJzaW9uID0gdGhpcy5zY2hlbWEucHJvdmlkZXJfdmVyc2lvbnM/LltmcXBuXTtcbiAgICB0aGlzLmVtaXRQcm92aWRlcihmcXBuLCBwcm92aWRlclZlcnNpb24sIHByb3ZpZGVyQ29uc3RyYWludCk7XG4gICAgdGhpcy52ZXJzaW9uc1tmcXBuXSA9IHByb3ZpZGVyVmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUFsbCgpIHtcbiAgICBmb3IgKGNvbnN0IGZxcG4gb2YgT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvdmlkZXJfc2NoZW1hcyB8fCB7fSkpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGUoXG4gICAgICAgIG5ldyBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldChcbiAgICAgICAgICBuZXcgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50KGZxcG4pLFxuICAgICAgICAgIExBTkdVQUdFU1swXSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmUob3V0ZGlyOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmNvZGUuc2F2ZShvdXRkaXIpO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkUmVzb3VyY2VNb2RlbHMoXG4gICAgZnFwbjogRlFQTixcbiAgICBjb25zdHJhaW50PzogQ29uc3RydWN0c01ha2VyVGFyZ2V0LFxuICApOiBSZXNvdXJjZU1vZGVsW10ge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5zY2hlbWEucHJvdmlkZXJfc2NoZW1hcz8uW2ZxcG5dO1xuICAgIGlmICghcHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCBmaW5kIHByb3ZpZGVyICcke2ZxcG59JyBpbiBzY2hlbWFgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZXMgPSBPYmplY3QuZW50cmllcyhwcm92aWRlci5yZXNvdXJjZV9zY2hlbWFzIHx8IHt9KS5tYXAoXG4gICAgICAoW3R5cGUsIHJlc291cmNlXSkgPT5cbiAgICAgICAgdGhpcy5yZXNvdXJjZVBhcnNlci5wYXJzZShmcXBuLCB0eXBlLCByZXNvdXJjZSwgXCJyZXNvdXJjZVwiLCBjb25zdHJhaW50KSxcbiAgICApO1xuXG4gICAgY29uc3QgZGF0YVNvdXJjZXMgPSBPYmplY3QuZW50cmllcyhwcm92aWRlci5kYXRhX3NvdXJjZV9zY2hlbWFzIHx8IHt9KS5tYXAoXG4gICAgICAoW3R5cGUsIHJlc291cmNlXSkgPT5cbiAgICAgICAgdGhpcy5yZXNvdXJjZVBhcnNlci5wYXJzZShcbiAgICAgICAgICBmcXBuLFxuICAgICAgICAgIGBkYXRhXyR7dHlwZX1gLFxuICAgICAgICAgIHJlc291cmNlLFxuICAgICAgICAgIFwiZGF0YV9zb3VyY2VcIixcbiAgICAgICAgICBjb25zdHJhaW50LFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICByZXR1cm4gKFtdIGFzIFJlc291cmNlTW9kZWxbXSkuY29uY2F0KC4uLnJlc291cmNlcywgLi4uZGF0YVNvdXJjZXMpO1xuICB9XG5cbiAgcHVibGljIGdldENsYXNzTmFtZUZvclJlc291cmNlKHRlcnJhZm9ybVR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlUGFyc2VyLmdldENsYXNzTmFtZUZvclJlc291cmNlKHRlcnJhZm9ybVR5cGUpO1xuICB9XG5cbiAgcHVibGljIGdldE5hbWVzcGFjZU5hbWVGb3JSZXNvdXJjZSh0ZXJyYWZvcm1UeXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVBhcnNlci5nZXROYW1lc3BhY2VOYW1lRm9yUmVzb3VyY2UodGVycmFmb3JtVHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm92aWRlcihcbiAgICBmcXBuOiBGUVBOLFxuICAgIHByb3ZpZGVyVmVyc2lvbj86IHN0cmluZyxcbiAgICBjb25zdHJhaW50PzogQ29uc3RydWN0c01ha2VyVGFyZ2V0LFxuICApIHtcbiAgICBjb25zdCBuYW1lID0gY29uc3RyYWludD8ubmFtZVxuICAgICAgPyAoY29uc3RyYWludC5uYW1lIGFzIFByb3ZpZGVyTmFtZSlcbiAgICAgIDogcGFyc2VGUVBOKGZxcG4pLm5hbWU7XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnNjaGVtYS5wcm92aWRlcl9zY2hlbWFzPy5bZnFwbl07XG4gICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4gbm90IGZpbmQgcHJvdmlkZXIgJyR7ZnFwbn0nIGluIHNjaGVtYWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuYnVpbGRSZXNvdXJjZU1vZGVscyhmcXBuLCBjb25zdHJhaW50KS5mb3JFYWNoKChyZXNvdXJjZU1vZGVsKSA9PiB7XG4gICAgICBpZiAoY29uc3RyYWludCkge1xuICAgICAgICByZXNvdXJjZU1vZGVsLnByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQgPSBjb25zdHJhaW50LnZlcnNpb247XG4gICAgICAgIHJlc291cmNlTW9kZWwudGVycmFmb3JtUHJvdmlkZXJTb3VyY2UgPSBjb25zdHJhaW50LnNvdXJjZTtcbiAgICAgIH1cbiAgICAgIHJlc291cmNlTW9kZWwucHJvdmlkZXJWZXJzaW9uID0gcHJvdmlkZXJWZXJzaW9uO1xuXG4gICAgICBpZiAocmVzb3VyY2VNb2RlbC5zdHJ1Y3RzUmVxdWlyZVNoYXJkaW5nKSB7XG4gICAgICAgIGZpbGVzLnB1c2godGhpcy5lbWl0UmVzb3VyY2VXaXRoQ29tcGxleFN0cnVjdChyZXNvdXJjZU1vZGVsKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWxlcy5wdXNoKHRoaXMuZW1pdFJlc291cmNlKHJlc291cmNlTW9kZWwpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW1pdFJlc291cmNlUmVhZG1lKHJlc291cmNlTW9kZWwpO1xuICAgIH0pO1xuXG4gICAgaWYgKHByb3ZpZGVyLnByb3ZpZGVyKSB7XG4gICAgICBjb25zdCBwcm92aWRlclJlc291cmNlID0gdGhpcy5yZXNvdXJjZVBhcnNlci5wYXJzZShcbiAgICAgICAgZnFwbixcbiAgICAgICAgYHByb3ZpZGVyYCxcbiAgICAgICAgcHJvdmlkZXIucHJvdmlkZXIsXG4gICAgICAgIFwicHJvdmlkZXJcIixcbiAgICAgICAgY29uc3RyYWludCxcbiAgICAgICk7XG4gICAgICBpZiAoY29uc3RyYWludCkge1xuICAgICAgICBwcm92aWRlclJlc291cmNlLnByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQgPSBjb25zdHJhaW50LnZlcnNpb247XG4gICAgICAgIHByb3ZpZGVyUmVzb3VyY2UudGVycmFmb3JtUHJvdmlkZXJTb3VyY2UgPSBjb25zdHJhaW50LnNvdXJjZTtcbiAgICAgICAgcHJvdmlkZXJSZXNvdXJjZS50ZXJyYWZvcm1Qcm92aWRlck5hbWUgPSBjb25zdHJhaW50Lm5hbWU7XG4gICAgICB9XG4gICAgICBwcm92aWRlclJlc291cmNlLnByb3ZpZGVyVmVyc2lvbiA9IHByb3ZpZGVyVmVyc2lvbjtcbiAgICAgIGZpbGVzLnB1c2godGhpcy5lbWl0UmVzb3VyY2UocHJvdmlkZXJSZXNvdXJjZSkpO1xuICAgICAgdGhpcy5lbWl0UmVzb3VyY2VSZWFkbWUocHJvdmlkZXJSZXNvdXJjZSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0SW5kZXhGaWxlKG5hbWUsIGZpbGVzKTtcbiAgICB0aGlzLmVtaXRMYXp5SW5kZXhGaWxlKG5hbWUsIGZpbGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJlc291cmNlUmVhZG1lKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBgJHtyZXNvdXJjZS5uYW1lc3BhY2VGb2xkZXJQYXRofS9SRUFETUUubWRgO1xuICAgIHRoaXMuY29kZS5vcGVuRmlsZShmaWxlUGF0aCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCMgXFxgJHtyZXNvdXJjZS50ZXJyYWZvcm1UeXBlfVxcYGApO1xuICAgIHRoaXMuY29kZS5saW5lKCk7XG4gICAgY29uc3QgdHlwZSA9IHJlc291cmNlLmlzUHJvdmlkZXJcbiAgICAgID8gcmVzb3VyY2UucHJvdmlkZXJcbiAgICAgIDogcmVzb3VyY2UudGVycmFmb3JtVHlwZTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGBSZWZlciB0byB0aGUgVGVycmFmb3JtIFJlZ2lzdHJ5IGZvciBkb2NzOiBbXFxgJHt0eXBlfVxcYF0oJHtyZXNvdXJjZS5saW5rVG9Eb2NzfSkuYCxcbiAgICApO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW5kZXhGaWxlKHByb3ZpZGVyOiBQcm92aWRlck5hbWUsIGZpbGVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZvbGRlciA9IGBwcm92aWRlcnMvJHtwcm92aWRlcn1gO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7Zm9sZGVyfS9pbmRleC50c2A7XG4gICAgdGhpcy5jb2RlLm9wZW5GaWxlKGZpbGVQYXRoKTtcbiAgICB0aGlzLmNvZGUubGluZShcIi8vIGdlbmVyYXRlZCBieSBjZGt0biBnZXRcIik7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gZmlsZS5yZXBsYWNlKGAke2ZvbGRlcn0vYCwgXCJcIikucmVwbGFjZShcIi9pbmRleC50c1wiLCBcIlwiKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgZXhwb3J0ICogYXMgJHt0b0NhbWVsQ2FzZShkaXJOYW1lKX0gZnJvbSAnLi8ke2Rpck5hbWV9L2luZGV4JHt0aGlzLmltcG9ydEV4dGVuc2lvbn0nO2AsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0TGF6eUluZGV4RmlsZShwcm92aWRlcjogUHJvdmlkZXJOYW1lLCBmaWxlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmb2xkZXIgPSBgcHJvdmlkZXJzLyR7cHJvdmlkZXJ9YDtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGAke2ZvbGRlcn0vbGF6eS1pbmRleC50c2A7XG4gICAgdGhpcy5jb2RlLm9wZW5GaWxlKGZpbGVQYXRoKTtcbiAgICB0aGlzLmNvZGUubGluZShcIi8vIGdlbmVyYXRlZCBieSBjZGt0biBnZXRcIik7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gZmlsZS5yZXBsYWNlKGAke2ZvbGRlcn0vYCwgXCJcIikucmVwbGFjZShcIi9pbmRleC50c1wiLCBcIlwiKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICcke3RvQ2FtZWxDYXNlKFxuICAgICAgICAgIGRpck5hbWUsXG4gICAgICAgICl9JywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlcXVpcmUoJy4vJHtkaXJOYW1lfScpOyB9IH0pO2AsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2UocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpOiBzdHJpbmcge1xuICAgIHRoaXMuY29kZS5vcGVuRmlsZShyZXNvdXJjZS5maWxlUGF0aCk7XG4gICAgdGhpcy5lbWl0RmlsZUhlYWRlcihyZXNvdXJjZSk7XG4gICAgdGhpcy5zdHJ1Y3RFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuICAgIHRoaXMucmVzb3VyY2VFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUocmVzb3VyY2UuZmlsZVBhdGgpO1xuXG4gICAgcmV0dXJuIHJlc291cmNlLmZpbGVQYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2VXaXRoQ29tcGxleFN0cnVjdChyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIGNvbnN0IGdlbmVyYXRlZEZpbGVzID0gW107XG5cbiAgICAvLyBkcm9wIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGZpbGVwYXRoXG4gICAgY29uc3QgZmlsZVBhdGggPSByZXNvdXJjZS5maWxlUGF0aDtcbiAgICB0aGlzLmNvZGUub3BlbkZpbGUoZmlsZVBhdGgpO1xuICAgIHRoaXMuY29kZS5saW5lKGAvLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcblxuICAgIGlmIChyZXNvdXJjZS5zdHJ1Y3RzUmVxdWlyZVNoYXJkaW5nKSB7XG4gICAgICBjb25zdCBzdHJ1Y3RzU3BlY2lmaWVyID0gYC4vJHtyZXNvdXJjZS5zdHJ1Y3RzRm9sZGVyTmFtZX0vaW5kZXgke3RoaXMuaW1wb3J0RXh0ZW5zaW9ufWA7XG4gICAgICBpZiAocmVzb3VyY2UucmVmZXJlbmNlZFR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgICAgYGltcG9ydCB7ICR7cmVzb3VyY2UucmVmZXJlbmNlZFR5cGVzLmpvaW4oXG4gICAgICAgICAgICBcIiwgXFxuXCIsXG4gICAgICAgICAgKX19IGZyb20gJyR7c3RydWN0c1NwZWNpZmllcn0nO2AsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29kZS5saW5lKGBleHBvcnQgKiBmcm9tICcke3N0cnVjdHNTcGVjaWZpZXJ9JztgKTtcblxuICAgICAgcmVzb3VyY2UuaW1wb3J0U3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuY29kZS5saW5lKHN0YXRlbWVudCksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0cnVjdEVtaXR0ZXIuZW1pdEludGVyZmFjZShyZXNvdXJjZSwgcmVzb3VyY2UuY29uZmlnU3RydWN0KTtcbiAgICAgIHRoaXMucmVzb3VyY2VFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuXG4gICAgICB0aGlzLmNvZGUuY2xvc2VGaWxlKGZpbGVQYXRoKTtcblxuICAgICAgdGhpcy5zdHJ1Y3RFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuICAgICAgZ2VuZXJhdGVkRmlsZXMucHVzaChyZXNvdXJjZS5maWxlTmFtZSk7XG4gICAgICBnZW5lcmF0ZWRGaWxlcy5wdXNoKHJlc291cmNlLnN0cnVjdHNGb2xkZXJOYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb3VyY2UuaW1wb3J0U3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuY29kZS5saW5lKHN0YXRlbWVudCksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0cnVjdEVtaXR0ZXIuZW1pdChyZXNvdXJjZSk7XG4gICAgICB0aGlzLnJlc291cmNlRW1pdHRlci5lbWl0KHJlc291cmNlKTtcbiAgICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICAgICAgZ2VuZXJhdGVkRmlsZXMucHVzaChyZXNvdXJjZS5maWxlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmlsZUhlYWRlcihyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIHRoaXMuY29kZS5saW5lKGAvLyAke3Jlc291cmNlLmxpbmtUb0RvY3N9YCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYC8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFgKTtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHJlc291cmNlLmltcG9ydFN0YXRlbWVudHMuZm9yRWFjaCgoc3RhdGVtZW50KSA9PiB0aGlzLmNvZGUubGluZShzdGF0ZW1lbnQpKTtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5saW5lKFwiLy8gQ29uZmlndXJhdGlvblwiKTtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICB9XG59XG4iXX0=
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvcHJvdmlkZXItZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMseUNBQW1EO0FBQ25ELDRDQU93QjtBQUN4Qiw0REFBdUU7QUFDdkUscUNBS2tCO0FBQ2xCLHVEQUFtRDtBQUNuRCx1Q0FJbUI7QUFnQm5CLE1BQU0sVUFBVSxHQUFHLENBQ2pCLE1BQTZCLEVBQzdCLG1CQUEyQixFQUNsQixFQUFFO0lBQ1gsSUFBSSxNQUFNLENBQUMsUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRWxDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLG1CQUFtQixDQUFDO0lBQy9DLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRWpELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRztnQkFDbkIsV0FBVztnQkFDWCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxTQUFTLEVBQUUsV0FBVztnQkFDdEIsSUFBSSxFQUFFLEVBQUU7YUFDVCxDQUFDO1lBQ0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1B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QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUEvVEQsZ0VBK1RDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvZGVNYWtlciwgdG9DYW1lbENhc2UgfSBmcm9tIFwiY29kZW1ha2VyXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldCxcbiAgQ29uc3RydWN0c01ha2VyVGFyZ2V0LFxuICBMQU5HVUFHRVMsXG4gIGxvZ2dlcixcbiAgUHJvdmlkZXJTY2hlbWEsXG4gIFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludCxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyBGUVBOLCBwYXJzZUZRUE4sIFByb3ZpZGVyTmFtZSB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCI7XG5pbXBvcnQge1xuICBQcm92aWRlckZ1bmN0aW9uc01vZGVsLFxuICBSZXNvdXJjZU1vZGVsLFxuICBhc3NlcnROb0Z1bmN0aW9uc0dldHRlckNvbGxpc2lvbixcbiAgYnVpbGRQcm92aWRlckZ1bmN0aW9uc01vZGVsLFxufSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IFJlc291cmNlUGFyc2VyIH0gZnJvbSBcIi4vcmVzb3VyY2UtcGFyc2VyXCI7XG5pbXBvcnQge1xuICBQcm92aWRlckZ1bmN0aW9uc0VtaXR0ZXIsXG4gIFJlc291cmNlRW1pdHRlcixcbiAgU3RydWN0RW1pdHRlcixcbn0gZnJvbSBcIi4vZW1pdHRlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWxlIGV4dGVuc2lvbiB0byB3cml0ZSBvbiBlbWl0dGVkIHJlbGF0aXZlIGltcG9ydHMuXG4gICAqIERlZmF1bHRzIHRvIFwiXCIgKENvbW1vbkpTKS5cbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydEV4dGVuc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFByb3ZpZGVyRGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbn1cblxuY29uc3QgaXNNYXRjaGluZyA9IChcbiAgdGFyZ2V0OiBDb25zdHJ1Y3RzTWFrZXJUYXJnZXQsXG4gIHRlcnJhZm9ybVNjaGVtYU5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAodGFyZ2V0LmlzTW9kdWxlKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgZWxlbWVudHMgPSB0ZXJyYWZvcm1TY2hlbWFOYW1lLnNwbGl0KFwiL1wiKTtcblxuICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHRhcmdldC5zb3VyY2UgPT09IHRlcnJhZm9ybVNjaGVtYU5hbWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW2hvc3RuYW1lLCBuYW1lc3BhY2UsIHByb3ZpZGVyXSA9IGVsZW1lbnRzO1xuXG4gICAgaWYgKCFob3N0bmFtZSB8fCAhbmFtZXNwYWNlIHx8ICFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW4ndCBoYW5kbGUgJHt0ZXJyYWZvcm1TY2hlbWFOYW1lfWApO1xuICAgIH1cblxuICAgIC8vIElmIHRhcmdldC5zb3VyY2UgaXMgc2V0LCB0cnkgdG8gbWF0Y2ggaXRcbiAgICBpZiAodGFyZ2V0LnNvdXJjZSkge1xuICAgICAgY29uc3QgdGFyZ2V0U291cmNlID0ge1xuICAgICAgICAvLyBkZWZhdWx0c1xuICAgICAgICBob3N0bmFtZTogXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW9cIixcbiAgICAgICAgbmFtZXNwYWNlOiBcImhhc2hpY29ycFwiLFxuICAgICAgICBuYW1lOiBcIlwiLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGFyZ2V0LnNvdXJjZS5zcGxpdChcIi9cIik7XG4gICAgICAvLyBPbmx5IGEgMy1wYXJ0IHNvdXJjZSBleHBsaWNpdGx5IHBpbnMgYSByZWdpc3RyeSBob3N0bmFtZS4gU2hvcnRoYW5kXG4gICAgICAvLyBzb3VyY2VzIChlLmcuIFwiaGFzaGljb3JwL2F3c2NjXCIpIG9taXQgaXQsIHNvIHdlIG11c3Qgbm90IGFzc3VtZSBhXG4gICAgICAvLyBkZWZhdWx0OiBUZXJyYWZvcm0gcmVzb2x2ZXMgdGhlbSB1bmRlciByZWdpc3RyeS50ZXJyYWZvcm0uaW8gd2hpbGVcbiAgICAgIC8vIE9wZW5Ub2Z1IHJlc29sdmVzIHRoZW0gdW5kZXIgcmVnaXN0cnkub3BlbnRvZnUub3JnLiBDb21wYXJpbmcgYWdhaW5zdCBhXG4gICAgICAvLyBoYXJkLWNvZGVkIGRlZmF1bHQgd291bGQgbWFrZSBzY2hlbWEgbG9va3VwIGZhaWwgdW5kZXIgT3BlblRvZnUgZXZlblxuICAgICAgLy8gdGhvdWdoIHRoZSBwcm92aWRlciB3YXMgaW5zdGFsbGVkIGNvcnJlY3RseS5cbiAgICAgIGNvbnN0IGV4cGxpY2l0SG9zdG5hbWUgPSB0YXJnZXRFbGVtZW50cy5sZW5ndGggPT09IDM7XG4gICAgICBzd2l0Y2ggKHRhcmdldEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6IC8vIG9ubHkgbmFtZSBzZXRcbiAgICAgICAgICB0YXJnZXRTb3VyY2UubmFtZSA9IHRhcmdldEVsZW1lbnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogLy8gbmFtZXNwYWNlIGFuZCBuYW1lIHNldFxuICAgICAgICAgIHRhcmdldFNvdXJjZS5uYW1lc3BhY2UgPSB0YXJnZXRFbGVtZW50c1swXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIHRhcmdldFNvdXJjZS5uYW1lID0gdGFyZ2V0RWxlbWVudHNbMV0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOiAvLyBob3N0bmFtZSwgbmFtZXNwYWNlIGFuZCBuYW1lIHNldFxuICAgICAgICAgIHRhcmdldFNvdXJjZS5ob3N0bmFtZSA9IHRhcmdldEVsZW1lbnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgdGFyZ2V0U291cmNlLm5hbWVzcGFjZSA9IHRhcmdldEVsZW1lbnRzWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgdGFyZ2V0U291cmNlLm5hbWUgPSB0YXJnZXRFbGVtZW50c1syXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBjYW4ndCBoYW5kbGUgJHt0YXJnZXQuc291cmNlfS4gRXhwZWN0ZWQgc3RyaW5nIHdpdGggMSwgMiBvciAzIGVsZW1lbnRzIHNlcGFyYXRlZCBieSAnLydgLFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgICghZXhwbGljaXRIb3N0bmFtZSB8fCB0YXJnZXRTb3VyY2UuaG9zdG5hbWUgPT09IGhvc3RuYW1lKSAmJlxuICAgICAgICB0YXJnZXRTb3VyY2UubmFtZXNwYWNlID09PSBuYW1lc3BhY2UgJiZcbiAgICAgICAgdGFyZ2V0U291cmNlLm5hbWUgPT09IHByb3ZpZGVyXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVsc2UsIHRyeSB0byBtYXRjaCB0YXJnZXQubmFtZSB0byB0aGUgcHJvdmlkZXIgbmFtZVxuXG4gICAgcmV0dXJuIHRhcmdldC5uYW1lID09PSBwcm92aWRlcjtcbiAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlckNvbnN0cmFpbnRzIHtcbiAgW2Zxbjogc3RyaW5nXTogUHJvdmlkZXJEYXRhO1xufVxuXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtUHJvdmlkZXJHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlc291cmNlUGFyc2VyID0gbmV3IFJlc291cmNlUGFyc2VyKCk7XG4gIHByaXZhdGUgcmVzb3VyY2VFbWl0dGVyOiBSZXNvdXJjZUVtaXR0ZXI7XG4gIHByaXZhdGUgc3RydWN0RW1pdHRlcjogU3RydWN0RW1pdHRlcjtcbiAgcHJpdmF0ZSBwcm92aWRlckZ1bmN0aW9uc0VtaXR0ZXI6IFByb3ZpZGVyRnVuY3Rpb25zRW1pdHRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBpbXBvcnRFeHRlbnNpb246IHN0cmluZztcbiAgcHVibGljIHZlcnNpb25zOiB7IFtmcXBuOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29kZTogQ29kZU1ha2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBQcm92aWRlclNjaGVtYSxcbiAgICBvcHRpb25zOiBUZXJyYWZvcm1Qcm92aWRlckdlbmVyYXRvck9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5jb2RlLmluZGVudGF0aW9uID0gMjtcbiAgICB0aGlzLmltcG9ydEV4dGVuc2lvbiA9IG9wdGlvbnMuaW1wb3J0RXh0ZW5zaW9uID8/IFwiXCI7XG4gICAgdGhpcy5yZXNvdXJjZUVtaXR0ZXIgPSBuZXcgUmVzb3VyY2VFbWl0dGVyKHRoaXMuY29kZSwgdGhpcy5pbXBvcnRFeHRlbnNpb24pO1xuICAgIHRoaXMuc3RydWN0RW1pdHRlciA9IG5ldyBTdHJ1Y3RFbWl0dGVyKHRoaXMuY29kZSwgdGhpcy5pbXBvcnRFeHRlbnNpb24pO1xuICAgIHRoaXMucHJvdmlkZXJGdW5jdGlvbnNFbWl0dGVyID0gbmV3IFByb3ZpZGVyRnVuY3Rpb25zRW1pdHRlcih0aGlzLmNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm92aWRlckJ5Q29uc3RyYWludChcbiAgICBwcm92aWRlckNvbnN0cmFpbnQ6IENvbnN0cnVjdHNNYWtlclRhcmdldCxcbiAgKTogRlFQTiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3ZpZGVyX3NjaGVtYXMgfHwge30pLmZpbmQoKGZxcG4pID0+XG4gICAgICBpc01hdGNoaW5nKHByb3ZpZGVyQ29uc3RyYWludCwgZnFwbiksXG4gICAgKSBhcyBGUVBOIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlKHByb3ZpZGVyQ29uc3RyYWludDogQ29uc3RydWN0c01ha2VyVGFyZ2V0KSB7XG4gICAgY29uc3QgZnFwbiA9IHRoaXMuZ2V0UHJvdmlkZXJCeUNvbnN0cmFpbnQocHJvdmlkZXJDb25zdHJhaW50KTtcbiAgICBpZiAoIWZxcG4pIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYENvdWxkIG5vdCBmaW5kIHByb3ZpZGVyIGNvbnN0cmFpbnQgZm9yICR7cHJvdmlkZXJDb25zdHJhaW50fSBpbiBzY2hlbWE6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdGhpcy5zY2hlbWEsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAyLFxuICAgICAgICApfWAsXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgcHJvdmlkZXIgd2l0aCBjb25zdHJhaW50ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJvdmlkZXJDb25zdHJhaW50LFxuICAgICAgICApfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3ZpZGVyVmVyc2lvbiA9IHRoaXMuc2NoZW1hLnByb3ZpZGVyX3ZlcnNpb25zPy5bZnFwbl07XG4gICAgdGhpcy5lbWl0UHJvdmlkZXIoZnFwbiwgcHJvdmlkZXJWZXJzaW9uLCBwcm92aWRlckNvbnN0cmFpbnQpO1xuICAgIHRoaXMudmVyc2lvbnNbZnFwbl0gPSBwcm92aWRlclZlcnNpb247XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVBbGwoKSB7XG4gICAgZm9yIChjb25zdCBmcXBuIG9mIE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3ZpZGVyX3NjaGVtYXMgfHwge30pKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlKFxuICAgICAgICBuZXcgQ29uc3RydWN0c01ha2VyUHJvdmlkZXJUYXJnZXQoXG4gICAgICAgICAgbmV3IFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludChmcXBuKSxcbiAgICAgICAgICBMQU5HVUFHRVNbMF0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzYXZlKG91dGRpcjogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jb2RlLnNhdmUob3V0ZGlyKTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZFJlc291cmNlTW9kZWxzKFxuICAgIGZxcG46IEZRUE4sXG4gICAgY29uc3RyYWludD86IENvbnN0cnVjdHNNYWtlclRhcmdldCxcbiAgKTogUmVzb3VyY2VNb2RlbFtdIHtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuc2NoZW1hLnByb3ZpZGVyX3NjaGVtYXM/LltmcXBuXTtcbiAgICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgZmluZCBwcm92aWRlciAnJHtmcXBufScgaW4gc2NoZW1hYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VzID0gT2JqZWN0LmVudHJpZXMocHJvdmlkZXIucmVzb3VyY2Vfc2NoZW1hcyB8fCB7fSkubWFwKFxuICAgICAgKFt0eXBlLCByZXNvdXJjZV0pID0+XG4gICAgICAgIHRoaXMucmVzb3VyY2VQYXJzZXIucGFyc2UoZnFwbiwgdHlwZSwgcmVzb3VyY2UsIFwicmVzb3VyY2VcIiwgY29uc3RyYWludCksXG4gICAgKTtcblxuICAgIGNvbnN0IGRhdGFTb3VyY2VzID0gT2JqZWN0LmVudHJpZXMocHJvdmlkZXIuZGF0YV9zb3VyY2Vfc2NoZW1hcyB8fCB7fSkubWFwKFxuICAgICAgKFt0eXBlLCByZXNvdXJjZV0pID0+XG4gICAgICAgIHRoaXMucmVzb3VyY2VQYXJzZXIucGFyc2UoXG4gICAgICAgICAgZnFwbixcbiAgICAgICAgICBgZGF0YV8ke3R5cGV9YCxcbiAgICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgICBcImRhdGFfc291cmNlXCIsXG4gICAgICAgICAgY29uc3RyYWludCxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3QgZXBoZW1lcmFsUmVzb3VyY2VzID0gT2JqZWN0LmVudHJpZXMoXG4gICAgICBwcm92aWRlci5lcGhlbWVyYWxfcmVzb3VyY2Vfc2NoZW1hcyB8fCB7fSxcbiAgICApLm1hcCgoW3R5cGUsIHJlc291cmNlXSkgPT5cbiAgICAgIHRoaXMucmVzb3VyY2VQYXJzZXIucGFyc2UoXG4gICAgICAgIGZxcG4sXG4gICAgICAgIGBlcGhlbWVyYWxfJHt0eXBlfWAsXG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBcImVwaGVtZXJhbF9yZXNvdXJjZVwiLFxuICAgICAgICBjb25zdHJhaW50LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gQ1JJVElDQUw6IGVwaGVtZXJhbCByZXNvdXJjZXMgbXVzdCBiZSBhcHBlbmRlZCBBRlRFUiByZXNvdXJjZXMgYW5kIGRhdGFcbiAgICAvLyBzb3VyY2VzIC0gdW5pcXVlQ2xhc3NOYW1lIGRlZHVwIGlzIG9yZGVyLWRlcGVuZGVudCBhbmQgZXhpc3RpbmdcbiAgICAvLyBwcmVidWlsdCBzbmFwc2hvdHMgbXVzdCBub3QgY2h1cm4uXG4gICAgcmV0dXJuIChbXSBhcyBSZXNvdXJjZU1vZGVsW10pLmNvbmNhdChcbiAgICAgIC4uLnJlc291cmNlcyxcbiAgICAgIC4uLmRhdGFTb3VyY2VzLFxuICAgICAgLi4uZXBoZW1lcmFsUmVzb3VyY2VzLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2xhc3NOYW1lRm9yUmVzb3VyY2UodGVycmFmb3JtVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VQYXJzZXIuZ2V0Q2xhc3NOYW1lRm9yUmVzb3VyY2UodGVycmFmb3JtVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TmFtZXNwYWNlTmFtZUZvclJlc291cmNlKHRlcnJhZm9ybVR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlUGFyc2VyLmdldE5hbWVzcGFjZU5hbWVGb3JSZXNvdXJjZSh0ZXJyYWZvcm1UeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFByb3ZpZGVyKFxuICAgIGZxcG46IEZRUE4sXG4gICAgcHJvdmlkZXJWZXJzaW9uPzogc3RyaW5nLFxuICAgIGNvbnN0cmFpbnQ/OiBDb25zdHJ1Y3RzTWFrZXJUYXJnZXQsXG4gICkge1xuICAgIGNvbnN0IG5hbWUgPSBjb25zdHJhaW50Py5uYW1lXG4gICAgICA/IChjb25zdHJhaW50Lm5hbWUgYXMgUHJvdmlkZXJOYW1lKVxuICAgICAgOiBwYXJzZUZRUE4oZnFwbikubmFtZTtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuc2NoZW1hLnByb3ZpZGVyX3NjaGVtYXM/LltmcXBuXTtcbiAgICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgZmluZCBwcm92aWRlciAnJHtmcXBufScgaW4gc2NoZW1hYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5idWlsZFJlc291cmNlTW9kZWxzKGZxcG4sIGNvbnN0cmFpbnQpLmZvckVhY2goKHJlc291cmNlTW9kZWwpID0+IHtcbiAgICAgIGlmIChjb25zdHJhaW50KSB7XG4gICAgICAgIHJlc291cmNlTW9kZWwucHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludCA9IGNvbnN0cmFpbnQudmVyc2lvbjtcbiAgICAgICAgcmVzb3VyY2VNb2RlbC50ZXJyYWZvcm1Qcm92aWRlclNvdXJjZSA9IGNvbnN0cmFpbnQuc291cmNlO1xuICAgICAgfVxuICAgICAgcmVzb3VyY2VNb2RlbC5wcm92aWRlclZlcnNpb24gPSBwcm92aWRlclZlcnNpb247XG5cbiAgICAgIGlmIChyZXNvdXJjZU1vZGVsLnN0cnVjdHNSZXF1aXJlU2hhcmRpbmcpIHtcbiAgICAgICAgZmlsZXMucHVzaCh0aGlzLmVtaXRSZXNvdXJjZVdpdGhDb21wbGV4U3RydWN0KHJlc291cmNlTW9kZWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbGVzLnB1c2godGhpcy5lbWl0UmVzb3VyY2UocmVzb3VyY2VNb2RlbCkpO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0UmVzb3VyY2VSZWFkbWUocmVzb3VyY2VNb2RlbCk7XG4gICAgfSk7XG5cbiAgICAvLyBCdWlsdCBiZWZvcmUgdGhlIHByb3ZpZGVyIGNsYXNzIGlzIGVtaXR0ZWQgKHJhdGhlciB0aGFuIGFmdGVyLCBhc1xuICAgIC8vIHJlc291cmNlcy9kYXRhIHNvdXJjZXMvZXBoZW1lcmFsIHJlc291cmNlcyBhYm92ZSBhbHJlYWR5IGFyZSkgc28gdGhhdFxuICAgIC8vIHRoZSBtb2RlbCBjYW4gYmUgYXR0YWNoZWQgdG8gcHJvdmlkZXJSZXNvdXJjZSBhbmQgcGlja2VkIHVwIGJ5XG4gICAgLy8gUmVzb3VyY2VFbWl0dGVyIHdoaWxlIGl0IHN0aWxsIGVtaXRzIHRoZSBwcm92aWRlciBjbGFzcyBmaWxlIGJlbG93IC1cbiAgICAvLyBzZWUgdGhlIGVuZ2luZWVyaW5nIGJyaWVmIGZvciB3aHkgdGhpcyBvcmRlcmluZyBtYXR0ZXJzLlxuICAgIGNvbnN0IHByb3ZpZGVyRnVuY3Rpb25zTW9kZWwgPSBidWlsZFByb3ZpZGVyRnVuY3Rpb25zTW9kZWwoXG4gICAgICBuYW1lLFxuICAgICAgcHJvdmlkZXIuZnVuY3Rpb25zLFxuICAgICk7XG5cbiAgICBpZiAocHJvdmlkZXIucHJvdmlkZXIpIHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyUmVzb3VyY2UgPSB0aGlzLnJlc291cmNlUGFyc2VyLnBhcnNlKFxuICAgICAgICBmcXBuLFxuICAgICAgICBgcHJvdmlkZXJgLFxuICAgICAgICBwcm92aWRlci5wcm92aWRlcixcbiAgICAgICAgXCJwcm92aWRlclwiLFxuICAgICAgICBjb25zdHJhaW50LFxuICAgICAgKTtcbiAgICAgIGlmIChjb25zdHJhaW50KSB7XG4gICAgICAgIHByb3ZpZGVyUmVzb3VyY2UucHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludCA9IGNvbnN0cmFpbnQudmVyc2lvbjtcbiAgICAgICAgcHJvdmlkZXJSZXNvdXJjZS50ZXJyYWZvcm1Qcm92aWRlclNvdXJjZSA9IGNvbnN0cmFpbnQuc291cmNlO1xuICAgICAgICBwcm92aWRlclJlc291cmNlLnRlcnJhZm9ybVByb3ZpZGVyTmFtZSA9IGNvbnN0cmFpbnQubmFtZTtcbiAgICAgIH1cbiAgICAgIHByb3ZpZGVyUmVzb3VyY2UucHJvdmlkZXJWZXJzaW9uID0gcHJvdmlkZXJWZXJzaW9uO1xuXG4gICAgICBpZiAocHJvdmlkZXJGdW5jdGlvbnNNb2RlbCkge1xuICAgICAgICBhc3NlcnROb0Z1bmN0aW9uc0dldHRlckNvbGxpc2lvbihcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHByb3ZpZGVyUmVzb3VyY2UuYXR0cmlidXRlcy5tYXAoKGF0dCkgPT4gYXR0Lm5hbWUpLFxuICAgICAgICApO1xuICAgICAgICBwcm92aWRlclJlc291cmNlLnByb3ZpZGVyRnVuY3Rpb25zTW9kZWwgPSBwcm92aWRlckZ1bmN0aW9uc01vZGVsO1xuICAgICAgfVxuXG4gICAgICBmaWxlcy5wdXNoKHRoaXMuZW1pdFJlc291cmNlKHByb3ZpZGVyUmVzb3VyY2UpKTtcbiAgICAgIHRoaXMuZW1pdFJlc291cmNlUmVhZG1lKHByb3ZpZGVyUmVzb3VyY2UpO1xuICAgIH1cblxuICAgIGlmIChwcm92aWRlckZ1bmN0aW9uc01vZGVsKSB7XG4gICAgICBmaWxlcy5wdXNoKHRoaXMuZW1pdFByb3ZpZGVyRnVuY3Rpb25zKG5hbWUsIHByb3ZpZGVyRnVuY3Rpb25zTW9kZWwpKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRJbmRleEZpbGUobmFtZSwgZmlsZXMpO1xuICAgIHRoaXMuZW1pdExhenlJbmRleEZpbGUobmFtZSwgZmlsZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UHJvdmlkZXJGdW5jdGlvbnMoXG4gICAgcHJvdmlkZXI6IFByb3ZpZGVyTmFtZSxcbiAgICBtb2RlbDogUHJvdmlkZXJGdW5jdGlvbnNNb2RlbCxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGBwcm92aWRlcnMvJHtwcm92aWRlcn0vcHJvdmlkZXItZnVuY3Rpb25zL2luZGV4LnRzYDtcbiAgICB0aGlzLmNvZGUub3BlbkZpbGUoZmlsZVBhdGgpO1xuICAgIHRoaXMuY29kZS5saW5lKGAvLyBnZW5lcmF0ZWQgZnJvbSBwcm92aWRlciBmdW5jdGlvbiBzY2hlbWFgKTtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMucHJvdmlkZXJGdW5jdGlvbnNFbWl0dGVyLmVtaXQobW9kZWwpO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICAgIHJldHVybiBmaWxlUGF0aDtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJlc291cmNlUmVhZG1lKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBgJHtyZXNvdXJjZS5uYW1lc3BhY2VGb2xkZXJQYXRofS9SRUFETUUubWRgO1xuICAgIHRoaXMuY29kZS5vcGVuRmlsZShmaWxlUGF0aCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCMgXFxgJHtyZXNvdXJjZS50ZXJyYWZvcm1UeXBlfVxcYGApO1xuICAgIHRoaXMuY29kZS5saW5lKCk7XG4gICAgY29uc3QgdHlwZSA9IHJlc291cmNlLmlzUHJvdmlkZXJcbiAgICAgID8gcmVzb3VyY2UucHJvdmlkZXJcbiAgICAgIDogcmVzb3VyY2UudGVycmFmb3JtVHlwZTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGBSZWZlciB0byB0aGUgVGVycmFmb3JtIFJlZ2lzdHJ5IGZvciBkb2NzOiBbXFxgJHt0eXBlfVxcYF0oJHtyZXNvdXJjZS5saW5rVG9Eb2NzfSkuYCxcbiAgICApO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW5kZXhGaWxlKHByb3ZpZGVyOiBQcm92aWRlck5hbWUsIGZpbGVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZvbGRlciA9IGBwcm92aWRlcnMvJHtwcm92aWRlcn1gO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7Zm9sZGVyfS9pbmRleC50c2A7XG4gICAgdGhpcy5jb2RlLm9wZW5GaWxlKGZpbGVQYXRoKTtcbiAgICB0aGlzLmNvZGUubGluZShcIi8vIGdlbmVyYXRlZCBieSBjZGt0biBnZXRcIik7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gZmlsZS5yZXBsYWNlKGAke2ZvbGRlcn0vYCwgXCJcIikucmVwbGFjZShcIi9pbmRleC50c1wiLCBcIlwiKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgZXhwb3J0ICogYXMgJHt0b0NhbWVsQ2FzZShkaXJOYW1lKX0gZnJvbSAnLi8ke2Rpck5hbWV9L2luZGV4JHt0aGlzLmltcG9ydEV4dGVuc2lvbn0nO2AsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0TGF6eUluZGV4RmlsZShwcm92aWRlcjogUHJvdmlkZXJOYW1lLCBmaWxlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmb2xkZXIgPSBgcHJvdmlkZXJzLyR7cHJvdmlkZXJ9YDtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGAke2ZvbGRlcn0vbGF6eS1pbmRleC50c2A7XG4gICAgdGhpcy5jb2RlLm9wZW5GaWxlKGZpbGVQYXRoKTtcbiAgICB0aGlzLmNvZGUubGluZShcIi8vIGdlbmVyYXRlZCBieSBjZGt0biBnZXRcIik7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gZmlsZS5yZXBsYWNlKGAke2ZvbGRlcn0vYCwgXCJcIikucmVwbGFjZShcIi9pbmRleC50c1wiLCBcIlwiKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICcke3RvQ2FtZWxDYXNlKFxuICAgICAgICAgIGRpck5hbWUsXG4gICAgICAgICl9JywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlcXVpcmUoJy4vJHtkaXJOYW1lfScpOyB9IH0pO2AsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2UocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpOiBzdHJpbmcge1xuICAgIHRoaXMuY29kZS5vcGVuRmlsZShyZXNvdXJjZS5maWxlUGF0aCk7XG4gICAgdGhpcy5lbWl0RmlsZUhlYWRlcihyZXNvdXJjZSk7XG4gICAgdGhpcy5zdHJ1Y3RFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuICAgIHRoaXMucmVzb3VyY2VFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUocmVzb3VyY2UuZmlsZVBhdGgpO1xuXG4gICAgcmV0dXJuIHJlc291cmNlLmZpbGVQYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2VXaXRoQ29tcGxleFN0cnVjdChyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIGNvbnN0IGdlbmVyYXRlZEZpbGVzID0gW107XG5cbiAgICAvLyBkcm9wIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGZpbGVwYXRoXG4gICAgY29uc3QgZmlsZVBhdGggPSByZXNvdXJjZS5maWxlUGF0aDtcbiAgICB0aGlzLmNvZGUub3BlbkZpbGUoZmlsZVBhdGgpO1xuICAgIHRoaXMuY29kZS5saW5lKGAvLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcblxuICAgIGlmIChyZXNvdXJjZS5zdHJ1Y3RzUmVxdWlyZVNoYXJkaW5nKSB7XG4gICAgICBjb25zdCBzdHJ1Y3RzU3BlY2lmaWVyID0gYC4vJHtyZXNvdXJjZS5zdHJ1Y3RzRm9sZGVyTmFtZX0vaW5kZXgke3RoaXMuaW1wb3J0RXh0ZW5zaW9ufWA7XG4gICAgICBpZiAocmVzb3VyY2UucmVmZXJlbmNlZFR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgICAgYGltcG9ydCB7ICR7cmVzb3VyY2UucmVmZXJlbmNlZFR5cGVzLmpvaW4oXG4gICAgICAgICAgICBcIiwgXFxuXCIsXG4gICAgICAgICAgKX19IGZyb20gJyR7c3RydWN0c1NwZWNpZmllcn0nO2AsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29kZS5saW5lKGBleHBvcnQgKiBmcm9tICcke3N0cnVjdHNTcGVjaWZpZXJ9JztgKTtcblxuICAgICAgcmVzb3VyY2UuaW1wb3J0U3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuY29kZS5saW5lKHN0YXRlbWVudCksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0cnVjdEVtaXR0ZXIuZW1pdEludGVyZmFjZShyZXNvdXJjZSwgcmVzb3VyY2UuY29uZmlnU3RydWN0KTtcbiAgICAgIHRoaXMucmVzb3VyY2VFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuXG4gICAgICB0aGlzLmNvZGUuY2xvc2VGaWxlKGZpbGVQYXRoKTtcblxuICAgICAgdGhpcy5zdHJ1Y3RFbWl0dGVyLmVtaXQocmVzb3VyY2UpO1xuICAgICAgZ2VuZXJhdGVkRmlsZXMucHVzaChyZXNvdXJjZS5maWxlTmFtZSk7XG4gICAgICBnZW5lcmF0ZWRGaWxlcy5wdXNoKHJlc291cmNlLnN0cnVjdHNGb2xkZXJOYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb3VyY2UuaW1wb3J0U3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuY29kZS5saW5lKHN0YXRlbWVudCksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0cnVjdEVtaXR0ZXIuZW1pdChyZXNvdXJjZSk7XG4gICAgICB0aGlzLnJlc291cmNlRW1pdHRlci5lbWl0KHJlc291cmNlKTtcbiAgICAgIHRoaXMuY29kZS5jbG9zZUZpbGUoZmlsZVBhdGgpO1xuICAgICAgZ2VuZXJhdGVkRmlsZXMucHVzaChyZXNvdXJjZS5maWxlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmlsZUhlYWRlcihyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIHRoaXMuY29kZS5saW5lKGAvLyAke3Jlc291cmNlLmxpbmtUb0RvY3N9YCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYC8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFgKTtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHJlc291cmNlLmltcG9ydFN0YXRlbWVudHMuZm9yRWFjaCgoc3RhdGVtZW50KSA9PiB0aGlzLmNvZGUubGluZShzdGF0ZW1lbnQpKTtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5saW5lKFwiLy8gQ29uZmlndXJhdGlvblwiKTtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICB9XG59XG4iXX0=
|