@fjall/components-infrastructure 0.87.18 → 0.88.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/app.d.ts +13 -17
- package/dist/lib/app.js +56 -40
- package/dist/lib/config/aws/accountId.js +1 -2
- package/dist/lib/config/aws/backupGlobalSettings.js +1 -2
- package/dist/lib/config/aws/costAllocationTags.js +3 -4
- package/dist/lib/config/aws/identityCenter.js +1 -2
- package/dist/lib/config/aws/identityCenterGroupMembership.js +1 -6
- package/dist/lib/config/aws/index.d.ts +0 -1
- package/dist/lib/config/aws/index.js +1 -2
- package/dist/lib/config/aws/ipamDelegateAdmin.js +1 -2
- package/dist/lib/config/aws/ipamPoolId.js +1 -2
- package/dist/lib/config/aws/organisationId.js +1 -2
- package/dist/lib/config/aws/organisationsAccess.js +1 -2
- package/dist/lib/config/aws/ramSharing.js +1 -2
- package/dist/lib/patterns/aws/account.d.ts +12 -0
- package/dist/lib/patterns/aws/account.js +59 -0
- package/dist/lib/patterns/aws/buildkite.js +1 -2
- package/dist/lib/patterns/aws/cdn.d.ts +5 -10
- package/dist/lib/patterns/aws/cdn.js +5 -13
- package/dist/lib/patterns/aws/compute.d.ts +20 -3
- package/dist/lib/patterns/aws/compute.js +29 -5
- package/dist/lib/patterns/aws/database.d.ts +1 -1
- package/dist/lib/patterns/aws/database.js +16 -13
- package/dist/lib/patterns/aws/index.d.ts +4 -3
- package/dist/lib/patterns/aws/index.js +6 -4
- package/dist/lib/patterns/aws/interfaces/index.d.ts +2 -1
- package/dist/lib/patterns/aws/interfaces/index.js +8 -5
- package/dist/lib/patterns/aws/interfaces/organisation.d.ts +22 -0
- package/dist/lib/patterns/aws/interfaces/organisation.js +28 -0
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +5 -5
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/interfaces/storage.d.ts +10 -120
- package/dist/lib/patterns/aws/interfaces/storage.js +6 -43
- package/dist/lib/patterns/aws/organisation.d.ts +51 -0
- package/dist/lib/patterns/aws/organisation.js +150 -0
- package/dist/lib/patterns/aws/organisationFactory.d.ts +20 -0
- package/dist/lib/patterns/aws/organisationFactory.js +24 -0
- package/dist/lib/patterns/aws/pattern.d.ts +1 -1
- package/dist/lib/patterns/aws/pattern.js +1 -1
- package/dist/lib/patterns/aws/payload.d.ts +7 -5
- package/dist/lib/patterns/aws/payload.js +110 -51
- package/dist/lib/patterns/aws/platform.d.ts +11 -0
- package/dist/lib/patterns/aws/platform.js +29 -0
- package/dist/lib/patterns/aws/storage.d.ts +40 -125
- package/dist/lib/patterns/aws/storage.js +63 -191
- package/dist/lib/resources/aws/compute/ec2.d.ts +1 -1
- package/dist/lib/resources/aws/compute/ec2.js +3 -4
- package/dist/lib/resources/aws/compute/ecs.d.ts +6 -9
- package/dist/lib/resources/aws/compute/ecs.js +58 -26
- package/dist/lib/resources/aws/compute/lambda.d.ts +2 -0
- package/dist/lib/resources/aws/compute/lambda.js +11 -6
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +1 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +16 -16
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +1 -0
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +14 -10
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +5 -4
- package/dist/lib/resources/aws/database/rdsInstance.js +18 -7
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -4
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -4
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +2 -1
- package/dist/lib/resources/aws/logging/cloudTrail.js +7 -4
- package/dist/lib/resources/aws/networking/ipamPool.js +21 -3
- package/dist/lib/resources/aws/organisation/index.d.ts +4 -0
- package/dist/lib/resources/aws/organisation/index.js +10 -0
- package/dist/lib/resources/aws/organisation/organisation.d.ts +12 -0
- package/dist/lib/resources/aws/organisation/organisation.js +14 -0
- package/dist/lib/resources/aws/organisation/organisationAccount.d.ts +18 -0
- package/dist/lib/resources/aws/organisation/organisationAccount.js +31 -0
- package/dist/lib/resources/aws/organisation/organisationPolicy.d.ts +13 -0
- package/dist/lib/resources/aws/organisation/organisationPolicy.js +32 -0
- package/dist/lib/resources/aws/organisation/organisationalUnit.d.ts +10 -0
- package/dist/lib/resources/aws/organisation/organisationalUnit.js +9 -0
- package/dist/lib/resources/aws/secrets/kms.js +10 -7
- package/dist/lib/resources/aws/secrets/parameter.js +1 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +3 -1
- package/dist/lib/resources/aws/storage/ecr.js +5 -3
- package/dist/lib/resources/aws/storage/s3.d.ts +6 -39
- package/dist/lib/resources/aws/storage/s3.js +31 -34
- package/dist/lib/utils/capitaliseString.d.ts +12 -0
- package/dist/lib/utils/capitaliseString.js +30 -0
- package/dist/lib/utils/capitalizeString.d.ts +11 -0
- package/dist/lib/utils/capitalizeString.js +24 -1
- package/dist/lib/utils/getConfig.d.ts +1 -0
- package/dist/lib/utils/getConfig.js +9 -1
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +2 -1
- package/dist/lib/utils/resourceNaming.d.ts +22 -19
- package/dist/lib/utils/resourceNaming.js +42 -35
- package/package.json +3 -4
|
@@ -6,14 +6,16 @@ const aws_rds_1 = require("aws-cdk-lib/aws-rds");
|
|
|
6
6
|
const constructs_1 = require("constructs");
|
|
7
7
|
const rdsAurora_1 = require("./rdsAurora");
|
|
8
8
|
const resourceNaming_1 = require("../../../utils/resourceNaming");
|
|
9
|
+
const capitaliseString_1 = require("../../../utils/capitaliseString");
|
|
9
10
|
class RdsAuroraGlobal extends constructs_1.Construct {
|
|
10
11
|
constructor(scope, id, props) {
|
|
11
12
|
super(scope, id);
|
|
13
|
+
this.constructId = id;
|
|
12
14
|
this.props = props;
|
|
13
15
|
this.currentRegion = aws_cdk_lib_1.Stack.of(this).region;
|
|
14
16
|
this.globalId =
|
|
15
17
|
props.globalClusterIdentifier?.toLowerCase() ||
|
|
16
|
-
resourceNaming_1.ResourceNaming.globalClusterId(
|
|
18
|
+
resourceNaming_1.ResourceNaming.globalClusterId(id);
|
|
17
19
|
// create clusters / global cluster depending on region
|
|
18
20
|
this.addAuroraCluster();
|
|
19
21
|
this.addGlobalCluster();
|
|
@@ -24,17 +26,18 @@ class RdsAuroraGlobal extends constructs_1.Construct {
|
|
|
24
26
|
return this.globalId;
|
|
25
27
|
}
|
|
26
28
|
getPrimaryClusterIdentifier() {
|
|
27
|
-
return resourceNaming_1.ResourceNaming.primaryClusterId(this.
|
|
29
|
+
return resourceNaming_1.ResourceNaming.primaryClusterId(this.constructId);
|
|
28
30
|
}
|
|
29
31
|
getGlobalClusterEngineString() {
|
|
30
|
-
// Default to aurora-postgresql if no engine specified (matches existing
|
|
32
|
+
// Default to aurora-postgresql if no engine specified (matches existing behaviour)
|
|
31
33
|
if (!this.props.engine)
|
|
32
34
|
return "aurora-postgresql";
|
|
33
35
|
// Handle different engine formats safely using unknown and type guards
|
|
34
36
|
const engine = this.props.engine;
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
// them
|
|
37
|
+
// CDK's IClusterEngine interface does not expose engineType/engine/name
|
|
38
|
+
// properties directly, but the concrete implementations (e.g. AuroraMysqlEngineVersion)
|
|
39
|
+
// do have them at runtime. Cast through unknown to probe these internal fields.
|
|
40
|
+
// CDK engine internals — may break on CDK upgrades. See rdsAuroraGlobal unit test.
|
|
38
41
|
const engineRecord = engine;
|
|
39
42
|
let engineType = engineRecord.engineType ?? engineRecord.engine ?? engineRecord.name;
|
|
40
43
|
// If the engine was provided as a raw string (unlikely but support it)
|
|
@@ -140,7 +143,7 @@ class RdsAuroraGlobal extends constructs_1.Construct {
|
|
|
140
143
|
this.regionalCluster = new rdsAurora_1.RdsAurora(this, `${this.props.databaseName}Regional`, {
|
|
141
144
|
vpc: this.props.vpc,
|
|
142
145
|
databaseName: this.props.databaseName,
|
|
143
|
-
clusterIdentifier: resourceNaming_1.ResourceNaming.secondaryClusterId(this.
|
|
146
|
+
clusterIdentifier: resourceNaming_1.ResourceNaming.secondaryClusterId(this.constructId, this.currentRegion),
|
|
144
147
|
isGlobalSecondary: true,
|
|
145
148
|
// Secondary doesn't create credentials (uses replicated secret)
|
|
146
149
|
...commonConfig
|
|
@@ -161,9 +164,10 @@ class RdsAuroraGlobal extends constructs_1.Construct {
|
|
|
161
164
|
}
|
|
162
165
|
}
|
|
163
166
|
addOutputs() {
|
|
164
|
-
|
|
167
|
+
const outputName = (0, capitaliseString_1.toPascalCase)(this.props.databaseName);
|
|
168
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}GlobalClusterIdentifierOutput`, {
|
|
165
169
|
value: this.globalId,
|
|
166
|
-
exportName: `${
|
|
170
|
+
exportName: `${outputName}GlobalClusterIdentifier`
|
|
167
171
|
});
|
|
168
172
|
}
|
|
169
173
|
getCredentials() {
|
|
@@ -189,4 +193,4 @@ class RdsAuroraGlobal extends constructs_1.Construct {
|
|
|
189
193
|
}
|
|
190
194
|
}
|
|
191
195
|
exports.RdsAuroraGlobal = RdsAuroraGlobal;
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzQXVyb3JhR2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvcmRzQXVyb3JhR2xvYmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRjtBQUNoRixpREFBMEU7QUFDMUUsMkNBQXVDO0FBT3ZDLDJDQUF3QztBQVd4QyxrRUFBK0Q7QUF1RC9ELE1BQWEsZUFBZ0IsU0FBUSxzQkFBUztJQVU1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVE7WUFDWCxLQUFLLENBQUMsdUJBQXVCLEVBQUUsV0FBVyxFQUFFO2dCQUM1QywrQkFBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUs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IHsgQ2ZuT3V0cHV0LCB0eXBlIER1cmF0aW9uLCB0eXBlIElSZXNvbHZhYmxlLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ2ZuR2xvYmFsQ2x1c3RlciwgdHlwZSBDZm5EQkNsdXN0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIHR5cGUgSVZwYyxcbiAgdHlwZSBDb25uZWN0aW9ucyxcbiAgdHlwZSBJQ29ubmVjdGFibGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IHR5cGUgSUNsdXN0ZXJFbmdpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiO1xuaW1wb3J0IHsgUmRzQXVyb3JhIH0gZnJvbSBcIi4vcmRzQXVyb3JhXCI7XG5pbXBvcnQgeyB0eXBlIFNlY3JldCB9IGZyb20gXCIuLi9zZWNyZXRzXCI7XG5pbXBvcnQge1xuICB0eXBlIEVuZ2luZUNvbmZpZyxcbiAgdHlwZSBQcm94eUNvbmZpZyxcbiAgdHlwZSBDcmVkZW50aWFsc0NvbmZpZyxcbiAgdHlwZSBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnLFxuICB0eXBlIEF1cm9yYVdyaXRlckNvbmZpZyxcbiAgdHlwZSBBdXJvcmFSZWFkZXJzQ29uZmlnLFxuICB0eXBlIFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWdcbn0gZnJvbSBcIi4uLy4uLy4uL3BhdHRlcm5zL2F3cy9kYXRhYmFzZVwiO1xuaW1wb3J0IHsgUmVzb3VyY2VOYW1pbmcgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVzb3VyY2VOYW1pbmdcIjtcblxuaW50ZXJmYWNlIFJkc0F1cm9yYUdsb2JhbFByb3BzIHtcbiAgdnBjOiBJVnBjO1xuICBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgLyoqIFByaW1hcnkgcmVnaW9uIHdoZXJlIHRoZSBpbml0aWFsIGNsdXN0ZXIgJiBnbG9iYWwgY2x1c3RlciByZXNvdXJjZSBhcmUgY3JlYXRlZCAqL1xuICBwcmltYXJ5UmVnaW9uOiBzdHJpbmc7XG4gIC8qKiBTZWNvbmRhcnkgcmVnaW9ucyB3aGVyZSBBdXJvcmEgY2x1c3RlcnMgd2lsbCBiZSBkZXBsb3llZCAoZm9yIHNlY3JldCByZXBsaWNhdGlvbikgKi9cbiAgc2Vjb25kYXJ5UmVnaW9ucz86IHN0cmluZ1tdO1xuICAvKiogT3B0aW9uYWwgZGV0ZXJtaW5pc3RpYyBpZCBmb3IgdGhlIGdsb2JhbCBjbHVzdGVyIChzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBzdGFja3MvcmVnaW9ucykgKi9cbiAgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBlbmdpbmUgdG8gZm9yd2FyZCB0byB0aGUgdW5kZXJseWluZyBjbHVzdGVyICovXG4gIGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICAvKiogRW5naW5lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gKHVzZXJuYW1lLCBTU0wgcGFyYW1zLCByb3RhdGlvbiBhcHApICovXG4gIGVuZ2luZUNvbmZpZz86IEVuZ2luZUNvbmZpZztcbiAgLyoqIEVuYWJsZSB3cml0ZSBmb3J3YXJkaW5nIG9uIHNlY29uZGFyeSBjbHVzdGVycyB0byBmb3J3YXJkIHdyaXRlcyB0byBwcmltYXJ5IHJlZ2lvbiAqL1xuICBlbmFibGVHbG9iYWxXcml0ZUZvcndhcmRpbmc/OiBib29sZWFuO1xuXG4gIC8vIEluc3RhbmNlIGNvbmZpZ3VyYXRpb24gKGFwcGxpZWQgdG8gYWxsIHJlZ2lvbmFsIGNsdXN0ZXJzKVxuICAvKiogV3JpdGVyIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24gKi9cbiAgd3JpdGVyPzogQXVyb3JhV3JpdGVyQ29uZmlnO1xuICAvKipcbiAgICogUmVhZGVyIGluc3RhbmNlcyBjb25maWd1cmF0aW9uLlxuICAgKiAtIGB7IGNvdW50OiBOIH1gIC0gU2ltcGxlOiBOIHJlYWRlcnMgd2l0aCBkZWZhdWx0c1xuICAgKiAtIGB7IGluc3RhbmNlczogWy4uLl0gfWAgLSBBZHZhbmNlZDogcGVyLXJlYWRlciBjb25maWdcbiAgICogLSBgZmFsc2VgIC0gRXhwbGljaXRseSBkaXNhYmxlIHJlYWRlcnMgKHdyaXRlci1vbmx5IGNsdXN0ZXIpXG4gICAqIC0gT21pdCAtIERlZmF1bHQ6IDEgcmVhZGVyXG4gICAqL1xuICByZWFkZXJzPzogQXVyb3JhUmVhZGVyc0NvbmZpZyB8IGZhbHNlO1xuXG4gIC8vIE5lc3RlZCBjb25maWd1cmF0aW9ucyAocHJlc2VuY2UtYmFzZWQpXG4gIC8qKiBSRFMgUHJveHkgY29uZmlndXJhdGlvbi4gT21pdCA9IG5vIHByb3h5LCB7fSA9IGRlZmF1bHRzLCBmYWxzZSA9IGRpc2FibGVkICovXG4gIHByb3h5PzogUHJveHlDb25maWcgfCBmYWxzZTtcbiAgLyoqIENyZWRlbnRpYWxzIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIHVzZXJuYW1lIGFuZCBzZWNyZXQgcm90YXRpb24gKi9cbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc0NvbmZpZztcbiAgLyoqIEVuY3J5cHRpb24gY29uZmlndXJhdGlvbiAqL1xuICBlbmNyeXB0aW9uPzogQXVyb3JhRW5jcnlwdGlvbkNvbmZpZztcblxuICAvLyBPcGVyYXRpb25hbCBjb25maWd1cmF0aW9uXG4gIC8qKiBCYWNrdXAgcmV0ZW50aW9uIGluIGRheXMuIERlZmF1bHQ6IDE0ICovXG4gIGJhY2t1cFJldGVudGlvbj86IG51bWJlcjtcbiAgLyoqIENsb3VkV2F0Y2ggbW9uaXRvcmluZyBpbnRlcnZhbC4gRGVmYXVsdDogMSBtaW51dGUgKi9cbiAgbW9uaXRvcmluZ0ludGVydmFsPzogRHVyYXRpb247XG4gIC8qKiBQcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93LiBEZWZhdWx0OiBcIlNhdDoxMjozMC1TYXQ6MjA6MzBcIiAqL1xuICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZztcbiAgLyoqIERhdGFiYXNlIHBvcnQuIERlZmF1bHQ6IDM1MjU1IChGSkFMTCBvbiBwaG9uZSBrZXlwYWQpICovXG4gIHBvcnQ/OiBudW1iZXI7XG4gIHBlcmZvcm1hbmNlSW5zaWdodHM/OiBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnIHwgZmFsc2U7XG4gIGRlbGV0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG4gIC8qKiBBUk4gb3IgaWRlbnRpZmllciBvZiBEQiBjbHVzdGVyIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbSAqL1xuICBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZSBmcm9tIHRoZSBzbmFwc2hvdCAocmVxdWlyZWQgd2hlbiByZXN0b3JpbmcgZnJvbSBzbmFwc2hvdCB0byByZXNldCBwYXNzd29yZCkgKi9cbiAgc25hcHNob3RVc2VybmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJkc0F1cm9yYUdsb2JhbCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBjb25uZWN0aW9ucyE6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgZ2xvYmFsQ2x1c3Rlcj86IENmbkdsb2JhbENsdXN0ZXI7XG4gIHByaXZhdGUgcHJpbWFyeUNsdXN0ZXI/OiBSZHNBdXJvcmE7XG4gIHByaXZhdGUgcmVnaW9uYWxDbHVzdGVyPzogUmRzQXVyb3JhO1xuICBwcml2YXRlIHByb3BzOiBSZHNBdXJvcmFHbG9iYWxQcm9wcztcbiAgcHJpdmF0ZSBjdXJyZW50UmVnaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgZ2xvYmFsSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmRzQXVyb3JhR2xvYmFsUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuY3VycmVudFJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICB0aGlzLmdsb2JhbElkID1cbiAgICAgIHByb3BzLmdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPy50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBSZXNvdXJjZU5hbWluZy5nbG9iYWxDbHVzdGVySWQocHJvcHMuZGF0YWJhc2VOYW1lKTtcblxuICAgIC8vIGNyZWF0ZSBjbHVzdGVycyAvIGdsb2JhbCBjbHVzdGVyIGRlcGVuZGluZyBvbiByZWdpb25cbiAgICB0aGlzLmFkZEF1cm9yYUNsdXN0ZXIoKTtcbiAgICB0aGlzLmFkZEdsb2JhbENsdXN0ZXIoKTtcbiAgICB0aGlzLmFkZE91dHB1dHMoKTtcbiAgfVxuXG4gIC8vIC0tLSBwdWJsaWMgaGVscGVycyAtLS1cbiAgZ2V0R2xvYmFsQ2x1c3RlcklkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nbG9iYWxJZDtcbiAgfVxuXG4gIGdldFByaW1hcnlDbHVzdGVySWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBSZXNvdXJjZU5hbWluZy5wcmltYXJ5Q2x1c3RlcklkKHRoaXMucHJvcHMuZGF0YWJhc2VOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R2xvYmFsQ2x1c3RlckVuZ2luZVN0cmluZygpOiBzdHJpbmcge1xuICAgIC8vIERlZmF1bHQgdG8gYXVyb3JhLXBvc3RncmVzcWwgaWYgbm8gZW5naW5lIHNwZWNpZmllZCAobWF0Y2hlcyBleGlzdGluZyBiZWhhdmlvcilcbiAgICBpZiAoIXRoaXMucHJvcHMuZW5naW5lKSByZXR1cm4gXCJhdXJvcmEtcG9zdGdyZXNxbFwiO1xuXG4gICAgLy8gSGFuZGxlIGRpZmZlcmVudCBlbmdpbmUgZm9ybWF0cyBzYWZlbHkgdXNpbmcgdW5rbm93biBhbmQgdHlwZSBndWFyZHNcbiAgICBjb25zdCBlbmdpbmUgPSB0aGlzLnByb3BzLmVuZ2luZTtcblxuICAgIC8vIFRyeSB0byBleHRyYWN0IGVuZ2luZSB0eXBlIGZyb20gdGhlIGVuZ2luZSBvYmplY3RcbiAgICAvLyBJQ2x1c3RlckVuZ2luZSBtYXkgaGF2ZSBwcm9wZXJ0aWVzIGxpa2UgZW5naW5lVHlwZSwgYnV0IHdlIG5lZWQgdG8gYWNjZXNzXG4gICAgLy8gdGhlbSBzYWZlbHkgc2luY2UgdGhlIGludGVyZmFjZSBkb2Vzbid0IGd1YXJhbnRlZSBhbGwgcHJvcGVydGllc1xuICAgIGNvbnN0IGVuZ2luZVJlY29yZCA9IGVuZ2luZSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGxldCBlbmdpbmVUeXBlOiB1bmtub3duID1cbiAgICAgIGVuZ2luZVJlY29yZC5lbmdpbmVUeXBlID8/IGVuZ2luZVJlY29yZC5lbmdpbmUgPz8gZW5naW5lUmVjb3JkLm5hbWU7XG5cbiAgICAvLyBJZiB0aGUgZW5naW5lIHdhcyBwcm92aWRlZCBhcyBhIHJhdyBzdHJpbmcgKHVubGlrZWx5IGJ1dCBzdXBwb3J0IGl0KVxuICAgIGlmICh0eXBlb2YgZW5naW5lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBlbmdpbmVUeXBlID0gZW5naW5lO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIHRvU3RyaW5nKCkgZm9yIFRva2VuLWxpa2Ugb2JqZWN0c1xuICAgIGlmICghZW5naW5lVHlwZSAmJiB0eXBlb2YgZW5naW5lUmVjb3JkLnRvU3RyaW5nID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVuZ2luZVR5cGUgPSBlbmdpbmVSZWNvcmQudG9TdHJpbmcoKTtcbiAgICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAgIGVuZ2luZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBlbmdpbmVUeXBlICE9PSBcInN0cmluZ1wiKSByZXR1cm4gXCJhdXJvcmEtcG9zdGdyZXNxbFwiO1xuXG4gICAgLy8gTm9ybWFsaXNlIGNvbW1vbiBmb3JtczogQVVST1JBX1BPU1RHUkVTUUwgLT4gYXVyb3JhLXBvc3RncmVzcWwsIGF1cm9yYV9wb3N0Z3Jlc3FsIC0+IGF1cm9yYS1wb3N0Z3Jlc3FsXG4gICAgY29uc3Qgbm9ybWFsaXNlZCA9IGVuZ2luZVR5cGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIFwiLVwiKTtcblxuICAgIC8vIElmIHRoZSBub3JtYWxpc2VkIHZhbHVlIGlzIGp1c3QgJ2F1cm9yYScsIHByZWZlciB0aGUgbW9yZSBzcGVjaWZpYyBwb3N0Z3JlcyBkZWZhdWx0XG4gICAgaWYgKG5vcm1hbGlzZWQgPT09IFwiYXVyb3JhXCIpIHJldHVybiBcImF1cm9yYS1wb3N0Z3Jlc3FsXCI7XG5cbiAgICByZXR1cm4gbm9ybWFsaXNlZDtcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgQ2ZuR2xvYmFsQ2x1c3RlciBvbmx5IGluIHRoZSBwcmltYXJ5IHJlZ2lvblxuICBhZGRHbG9iYWxDbHVzdGVyKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByaW1hcnlSZWdpb24gIT09IHRoaXMuY3VycmVudFJlZ2lvbikgcmV0dXJuO1xuXG4gICAgLy8gY3JlYXRlIHRoZSBnbG9iYWwgY2x1c3RlciByZXNvdXJjZSByZWZlcmVuY2luZyB0aGUgcHJpbWFyeSBjbHVzdGVyIGlkZW50aWZpZXJcbiAgICAvLyBQcmVmZXIgcmVmZXJlbmNpbmcgdGhlIEwxIERCQ2x1c3RlciBSZWYgc28gQ2xvdWRGb3JtYXRpb24gd2lsbCBjcmVhdGUgdGhlXG4gICAgLy8gREJDbHVzdGVyIGZpcnN0IGFuZCB3ZSBhdm9pZCBpZGVudGlmaWVyLWNhc2luZyBtaXNtYXRjaGVzLlxuICAgIGxldCBzb3VyY2VJZGVudGlmaWVyOiBzdHJpbmcgfCBJUmVzb2x2YWJsZSA9XG4gICAgICB0aGlzLmdldFByaW1hcnlDbHVzdGVySWRlbnRpZmllcigpO1xuICAgIGxldCBwcmltYXJ5TDE6IENmbkRCQ2x1c3RlciB8IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSB7XG4gICAgICAvLyBVc2UgdGhlIGhlbHBlciBvbiBSZHNBdXJvcmEgdG8gZ2V0IHRoZSB1bmRlcmx5aW5nIEwxIERCQ2x1c3RlciAobW9yZSByZWxpYWJsZVxuICAgICAgLy8gdGhhbiByZWx5aW5nIG9uIG5vZGUuZGVmYXVsdENoaWxkIHdoaWNoIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiBjb25zdHJ1Y3Qgb3JkZXJpbmcpXG4gICAgICBwcmltYXJ5TDEgPVxuICAgICAgICB0aGlzLnByaW1hcnlDbHVzdGVyLmdldENmbkNsdXN0ZXIgJiZcbiAgICAgICAgdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRDZm5DbHVzdGVyKCk7XG4gICAgICBpZiAocHJpbWFyeUwxKSB7XG4gICAgICAgIHNvdXJjZUlkZW50aWZpZXIgPSBwcmltYXJ5TDEucmVmO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZ2xvYmFsQ2x1c3RlciA9IG5ldyBDZm5HbG9iYWxDbHVzdGVyKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfUdsb2JhbENsdXN0ZXJgLFxuICAgICAge1xuICAgICAgICBnbG9iYWxDbHVzdGVySWRlbnRpZmllcjogdGhpcy5nbG9iYWxJZCxcbiAgICAgICAgc291cmNlRGJDbHVzdGVySWRlbnRpZmllcjogc291cmNlSWRlbnRpZmllclxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBlbnN1cmUgdGhlIHVuZGVybHlpbmcgcHJpbWFyeSBEQkNsdXN0ZXIgTDEgaGFzIHRoZSBnbG9iYWxDbHVzdGVySWRlbnRpZmllciBzZXRcbiAgICBpZiAocHJpbWFyeUwxKSB7XG4gICAgICAvLyBNYWtlIHRoZSBDRk4gZGVwZW5kZW5jeSBleHBsaWNpdCBzbyB0aGUgREJDbHVzdGVyIGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBHbG9iYWxDbHVzdGVyXG4gICAgICB0aGlzLmdsb2JhbENsdXN0ZXIuYWRkRGVwZW5kc09uKHByaW1hcnlMMSk7XG4gICAgICAvLyBJTVBPUlRBTlQ6IGRvIE5PVCBzZXQgdGhlIHByaW1hcnkgREJDbHVzdGVyJ3MgYGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYCBoZXJlLlxuICAgICAgLy8gSWYgd2Ugc2V0IHRoZSBwcmltYXJ5IERCQ2x1c3RlciB0byByZWZlcmVuY2UgdGhlIGdsb2JhbCBjbHVzdGVyLCBDbG91ZEZvcm1hdGlvblxuICAgICAgLy8gd2lsbCBhdHRlbXB0IHRvIHZhbGlkYXRlIHRoYXQgdGhlIGdsb2JhbCBjbHVzdGVyIGV4aXN0cyB3aGVuIGNyZWF0aW5nIHRoZVxuICAgICAgLy8gREJDbHVzdGVyIOKAlCBidXQgdGhlIGdsb2JhbCBjbHVzdGVyIGlzIGNyZWF0ZWQgYWZ0ZXJ3YXJkICh3ZSBhZGQgYVxuICAgICAgLy8gZGVwZW5kc09uKSwgd2hpY2ggY2F1c2VzIGEgXCJHbG9iYWwgY2x1c3RlciAuLi4gbm90IGZvdW5kXCIgZXJyb3IuIFRoZVxuICAgICAgLy8gY29ycmVjdCBvcmRlciBpcyB0byBjcmVhdGUgdGhlIERCQ2x1c3RlciBmaXJzdCwgdGhlbiBjcmVhdGUgdGhlXG4gICAgICAvLyBDZm5HbG9iYWxDbHVzdGVyIHdpdGggYHNvdXJjZURiQ2x1c3RlcklkZW50aWZpZXJgIHBvaW50aW5nIGF0IHRoZVxuICAgICAgLy8gcHJpbWFyeSBjbHVzdGVyJ3MgUmVmLiBMZWF2aW5nIHRoZSBwcmltYXJ5IEwxIHdpdGhvdXQgdGhlXG4gICAgICAvLyBgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgIGF2b2lkcyB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlLlxuICAgIH1cbiAgfVxuXG4gIC8vIGNyZWF0ZSBhbiBBdXJvcmEgY2x1c3RlciBpbiB0aGlzIHJlZ2lvbiAocHJpbWFyeSBvciBzZWNvbmRhcnkpXG4gIGFkZEF1cm9yYUNsdXN0ZXIoKSB7XG4gICAgLy8gQ29tbW9uIGNvbmZpZ3VyYXRpb24gc2hhcmVkIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGNsdXN0ZXJzXG4gICAgY29uc3QgY29tbW9uQ29uZmlnID0ge1xuICAgICAgZW5naW5lOiB0aGlzLnByb3BzLmVuZ2luZSxcbiAgICAgIGVuZ2luZUNvbmZpZzogdGhpcy5wcm9wcy5lbmdpbmVDb25maWcsXG4gICAgICAvLyBJbnN0YW5jZSBjb25maWd1cmF0aW9uXG4gICAgICB3cml0ZXI6IHRoaXMucHJvcHMud3JpdGVyLFxuICAgICAgcmVhZGVyczogdGhpcy5wcm9wcy5yZWFkZXJzLFxuICAgICAgLy8gTmVzdGVkIGNvbmZpZ3VyYXRpb25zXG4gICAgICBwcm94eTogdGhpcy5wcm9wcy5wcm94eSxcbiAgICAgIGVuY3J5cHRpb246IHRoaXMucHJvcHMuZW5jcnlwdGlvbixcbiAgICAgIC8vIE9wZXJhdGlvbmFsIGNvbmZpZ3VyYXRpb25cbiAgICAgIGJhY2t1cFJldGVudGlvbjogdGhpcy5wcm9wcy5iYWNrdXBSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IHRoaXMucHJvcHMubW9uaXRvcmluZ0ludGVydmFsLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHRoaXMucHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3csXG4gICAgICBwb3J0OiB0aGlzLnByb3BzLnBvcnQsXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRzOiB0aGlzLnByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMsXG4gICAgICBkZWxldGlvblByb3RlY3Rpb246IHRoaXMucHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uLFxuICAgICAgc25hcHNob3RJZGVudGlmaWVyOiB0aGlzLnByb3BzLnNuYXBzaG90SWRlbnRpZmllcixcbiAgICAgIHNuYXBzaG90VXNlcm5hbWU6IHRoaXMucHJvcHMuc25hcHNob3RVc2VybmFtZVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5wcm9wcy5wcmltYXJ5UmVnaW9uID09PSB0aGlzLmN1cnJlbnRSZWdpb24pIHtcbiAgICAgIC8vIHByaW1hcnlcbiAgICAgIHRoaXMucHJpbWFyeUNsdXN0ZXIgPSBuZXcgUmRzQXVyb3JhKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHt0aGlzLnByb3BzLmRhdGFiYXNlTmFtZX1QcmltYXJ5YCxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdGhpcy5wcm9wcy52cGMsXG4gICAgICAgICAgZGF0YWJhc2VOYW1lOiB0aGlzLnByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICBjbHVzdGVySWRlbnRpZmllcjogdGhpcy5nZXRQcmltYXJ5Q2x1c3RlcklkZW50aWZpZXIoKSxcbiAgICAgICAgICAvLyBFbmFibGUgc2VjcmV0IHJlcGxpY2F0aW9uIHRvIHNlY29uZGFyeSByZWdpb25zXG4gICAgICAgICAgc2VjcmV0UmVwbGljYVJlZ2lvbnM6IHRoaXMucHJvcHMuc2Vjb25kYXJ5UmVnaW9ucyxcbiAgICAgICAgICAvLyBQcmltYXJ5IHJlZ2lvbiBjcmVhdGVzIGNyZWRlbnRpYWxzXG4gICAgICAgICAgY3JlZGVudGlhbHM6IHRoaXMucHJvcHMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgLi4uY29tbW9uQ29uZmlnXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5wcmltYXJ5Q2x1c3Rlci5jb25uZWN0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2Vjb25kYXJ5IHJlZ2lvblxuICAgICAgLy8gUGFzcyBkYXRhYmFzZU5hbWUgZm9yIHJlc291cmNlIG5hbWluZywgYnV0IGZsYWcgYXMgZ2xvYmFsIHNlY29uZGFyeVxuICAgICAgLy8gVGhpcyBwcmV2ZW50cyBzZXR0aW5nIGNyZWRlbnRpYWxzIGFuZCBkZWZhdWx0RGF0YWJhc2VOYW1lIHdoaWNoIGFyZSBpbmhlcml0ZWQgZnJvbSBwcmltYXJ5XG4gICAgICB0aGlzLnJlZ2lvbmFsQ2x1c3RlciA9IG5ldyBSZHNBdXJvcmEoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfVJlZ2lvbmFsYCxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdGhpcy5wcm9wcy52cGMsXG4gICAgICAgICAgZGF0YWJhc2VOYW1lOiB0aGlzLnByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICBjbHVzdGVySWRlbnRpZmllcjogUmVzb3VyY2VOYW1pbmcuc2Vjb25kYXJ5Q2x1c3RlcklkKFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWdpb25cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzR2xvYmFsU2Vjb25kYXJ5OiB0cnVlLFxuICAgICAgICAgIC8vIFNlY29uZGFyeSBkb2Vzbid0IGNyZWF0ZSBjcmVkZW50aWFscyAodXNlcyByZXBsaWNhdGVkIHNlY3JldClcbiAgICAgICAgICAuLi5jb21tb25Db25maWdcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgLy8gc2V0IHRoZSBMMSBEQkNsdXN0ZXIgcHJvcGVydHkgc28gQ2xvdWRGb3JtYXRpb24gd2lsbCBqb2luIGl0IHRvIHRoZSBnbG9iYWwgY2x1c3RlclxuICAgICAgaWYgKHRoaXMucmVnaW9uYWxDbHVzdGVyKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lvbmFsTDEgPVxuICAgICAgICAgIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldENmbkNsdXN0ZXIgJiZcbiAgICAgICAgICB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRDZm5DbHVzdGVyKCk7XG4gICAgICAgIGlmIChyZWdpb25hbEwxKSB7XG4gICAgICAgICAgcmVnaW9uYWxMMS5nbG9iYWxDbHVzdGVySWRlbnRpZmllciA9IHRoaXMuZ2xvYmFsSWQ7XG5cbiAgICAgICAgICAvLyBFbmFibGUgd3JpdGUgZm9yd2FyZGluZyBpZiByZXF1ZXN0ZWRcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVHbG9iYWxXcml0ZUZvcndhcmRpbmcpIHtcbiAgICAgICAgICAgIHJlZ2lvbmFsTDEuZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMucmVnaW9uYWxDbHVzdGVyLmNvbm5lY3Rpb25zO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZE91dHB1dHMoKSB7XG4gICAgbmV3IENmbk91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBgJHt0aGlzLnByb3BzLmRhdGFiYXNlTmFtZX1HbG9iYWxDbHVzdGVySWRlbnRpZmllck91dHB1dGAsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiB0aGlzLmdsb2JhbElkLFxuICAgICAgICBleHBvcnROYW1lOiBgJHt0aGlzLnByb3BzLmRhdGFiYXNlTmFtZX1HbG9iYWxDbHVzdGVySWRlbnRpZmllcmBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogU2VjcmV0IHtcbiAgICBpZiAodGhpcy5wcmltYXJ5Q2x1c3RlcikgcmV0dXJuIHRoaXMucHJpbWFyeUNsdXN0ZXIuZ2V0Q3JlZGVudGlhbHMoKTtcbiAgICBpZiAodGhpcy5yZWdpb25hbENsdXN0ZXIpIHJldHVybiB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRDcmVkZW50aWFscygpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIEF1cm9yYSBjbHVzdGVyIGF2YWlsYWJsZSB0byByZXR1cm4gY3JlZGVudGlhbHMgZnJvbVwiKTtcbiAgfVxuXG4gIGdldEhvc3RFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSByZXR1cm4gdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRIb3N0RW5kcG9pbnQoKTtcbiAgICBpZiAodGhpcy5yZWdpb25hbENsdXN0ZXIpIHJldHVybiB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRIb3N0RW5kcG9pbnQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBBdXJvcmEgY2x1c3RlciBhdmFpbGFibGUgdG8gcmV0dXJuIGVuZHBvaW50IGZyb21cIik7XG4gIH1cblxuICBnZXRIb3N0UG9ydCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSByZXR1cm4gdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRIb3N0UG9ydCgpO1xuICAgIGlmICh0aGlzLnJlZ2lvbmFsQ2x1c3RlcikgcmV0dXJuIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldEhvc3RQb3J0KCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gQXVyb3JhIGNsdXN0ZXIgYXZhaWxhYmxlIHRvIHJldHVybiBwb3J0IGZyb21cIik7XG4gIH1cbn1cbiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzQXVyb3JhR2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvcmRzQXVyb3JhR2xvYmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRjtBQUNoRixpREFBMEU7QUFDMUUsMkNBQXVDO0FBT3ZDLDJDQUF3QztBQVd4QyxrRUFBK0Q7QUFDL0Qsc0VBQStEO0FBdUQvRCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFXNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRO1lBQ1gsS0FBSyxDQUFDLHVCQUF1QixFQUFFLFdBQVcsRUFBRTtnQkFDNUMsK0JBQWMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckMsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxJ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QUFDLENBQUM7SUFDckUsQ0FBQztDQUNGO0FBbE9ELDBDQWtPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgdHlwZSBEdXJhdGlvbiwgdHlwZSBJUmVzb2x2YWJsZSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENmbkdsb2JhbENsdXN0ZXIsIHR5cGUgQ2ZuREJDbHVzdGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICB0eXBlIElWcGMsXG4gIHR5cGUgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyB0eXBlIElDbHVzdGVyRW5naW5lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IFJkc0F1cm9yYSB9IGZyb20gXCIuL3Jkc0F1cm9yYVwiO1xuaW1wb3J0IHsgdHlwZSBTZWNyZXQgfSBmcm9tIFwiLi4vc2VjcmV0c1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbmdpbmVDb25maWcsXG4gIHR5cGUgUHJveHlDb25maWcsXG4gIHR5cGUgQ3JlZGVudGlhbHNDb25maWcsXG4gIHR5cGUgQXVyb3JhRW5jcnlwdGlvbkNvbmZpZyxcbiAgdHlwZSBBdXJvcmFXcml0ZXJDb25maWcsXG4gIHR5cGUgQXVyb3JhUmVhZGVyc0NvbmZpZyxcbiAgdHlwZSBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnXG59IGZyb20gXCIuLi8uLi8uLi9wYXR0ZXJucy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFJlc291cmNlTmFtaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc291cmNlTmFtaW5nXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY2FwaXRhbGlzZVN0cmluZ1wiO1xuXG5pbnRlcmZhY2UgUmRzQXVyb3JhR2xvYmFsUHJvcHMge1xuICB2cGM6IElWcGM7XG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICAvKiogUHJpbWFyeSByZWdpb24gd2hlcmUgdGhlIGluaXRpYWwgY2x1c3RlciAmIGdsb2JhbCBjbHVzdGVyIHJlc291cmNlIGFyZSBjcmVhdGVkICovXG4gIHByaW1hcnlSZWdpb246IHN0cmluZztcbiAgLyoqIFNlY29uZGFyeSByZWdpb25zIHdoZXJlIEF1cm9yYSBjbHVzdGVycyB3aWxsIGJlIGRlcGxveWVkIChmb3Igc2VjcmV0IHJlcGxpY2F0aW9uKSAqL1xuICBzZWNvbmRhcnlSZWdpb25zPzogc3RyaW5nW107XG4gIC8qKiBPcHRpb25hbCBkZXRlcm1pbmlzdGljIGlkIGZvciB0aGUgZ2xvYmFsIGNsdXN0ZXIgKHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIHN0YWNrcy9yZWdpb25zKSAqL1xuICBnbG9iYWxDbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGVuZ2luZSB0byBmb3J3YXJkIHRvIHRoZSB1bmRlcmx5aW5nIGNsdXN0ZXIgKi9cbiAgZW5naW5lPzogSUNsdXN0ZXJFbmdpbmU7XG4gIC8qKiBFbmdpbmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiAodXNlcm5hbWUsIFNTTCBwYXJhbXMsIHJvdGF0aW9uIGFwcCkgKi9cbiAgZW5naW5lQ29uZmlnPzogRW5naW5lQ29uZmlnO1xuICAvKiogRW5hYmxlIHdyaXRlIGZvcndhcmRpbmcgb24gc2Vjb25kYXJ5IGNsdXN0ZXJzIHRvIGZvcndhcmQgd3JpdGVzIHRvIHByaW1hcnkgcmVnaW9uICovXG4gIGVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZz86IGJvb2xlYW47XG5cbiAgLy8gSW5zdGFuY2UgY29uZmlndXJhdGlvbiAoYXBwbGllZCB0byBhbGwgcmVnaW9uYWwgY2x1c3RlcnMpXG4gIC8qKiBXcml0ZXIgaW5zdGFuY2UgY29uZmlndXJhdGlvbiAqL1xuICB3cml0ZXI/OiBBdXJvcmFXcml0ZXJDb25maWc7XG4gIC8qKlxuICAgKiBSZWFkZXIgaW5zdGFuY2VzIGNvbmZpZ3VyYXRpb24uXG4gICAqIC0gYHsgY291bnQ6IE4gfWAgLSBTaW1wbGU6IE4gcmVhZGVycyB3aXRoIGRlZmF1bHRzXG4gICAqIC0gYHsgaW5zdGFuY2VzOiBbLi4uXSB9YCAtIEFkdmFuY2VkOiBwZXItcmVhZGVyIGNvbmZpZ1xuICAgKiAtIGBmYWxzZWAgLSBFeHBsaWNpdGx5IGRpc2FibGUgcmVhZGVycyAod3JpdGVyLW9ubHkgY2x1c3RlcilcbiAgICogLSBPbWl0IC0gRGVmYXVsdDogMSByZWFkZXJcbiAgICovXG4gIHJlYWRlcnM/OiBBdXJvcmFSZWFkZXJzQ29uZmlnIHwgZmFsc2U7XG5cbiAgLy8gTmVzdGVkIGNvbmZpZ3VyYXRpb25zIChwcmVzZW5jZS1iYXNlZClcbiAgLyoqIFJEUyBQcm94eSBjb25maWd1cmF0aW9uLiBPbWl0ID0gbm8gcHJveHksIHt9ID0gZGVmYXVsdHMsIGZhbHNlID0gZGlzYWJsZWQgKi9cbiAgcHJveHk/OiBQcm94eUNvbmZpZyB8IGZhbHNlO1xuICAvKiogQ3JlZGVudGlhbHMgY29uZmlndXJhdGlvbiBpbmNsdWRpbmcgdXNlcm5hbWUgYW5kIHNlY3JldCByb3RhdGlvbiAqL1xuICBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzQ29uZmlnO1xuICAvKiogRW5jcnlwdGlvbiBjb25maWd1cmF0aW9uICovXG4gIGVuY3J5cHRpb24/OiBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnO1xuXG4gIC8vIE9wZXJhdGlvbmFsIGNvbmZpZ3VyYXRpb25cbiAgLyoqIEJhY2t1cCByZXRlbnRpb24gaW4gZGF5cy4gRGVmYXVsdDogMTQgKi9cbiAgYmFja3VwUmV0ZW50aW9uPzogbnVtYmVyO1xuICAvKiogQ2xvdWRXYXRjaCBtb25pdG9yaW5nIGludGVydmFsLiBEZWZhdWx0OiAxIG1pbnV0ZSAqL1xuICBtb25pdG9yaW5nSW50ZXJ2YWw/OiBEdXJhdGlvbjtcbiAgLyoqIFByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuIERlZmF1bHQ6IFwiU2F0OjEyOjMwLVNhdDoyMDozMFwiICovXG4gIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nO1xuICAvKiogRGF0YWJhc2UgcG9ydC4gRGVmYXVsdDogMzUyNTUgKEZKQUxMIG9uIHBob25lIGtleXBhZCkgKi9cbiAgcG9ydD86IG51bWJlcjtcbiAgcGVyZm9ybWFuY2VJbnNpZ2h0cz86IFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWcgfCBmYWxzZTtcbiAgZGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIERCIGNsdXN0ZXIgc25hcHNob3QgdG8gcmVzdG9yZSBmcm9tICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqIFVzZXJuYW1lIGZyb20gdGhlIHNuYXBzaG90IChyZXF1aXJlZCB3aGVuIHJlc3RvcmluZyBmcm9tIHNuYXBzaG90IHRvIHJlc2V0IHBhc3N3b3JkKSAqL1xuICBzbmFwc2hvdFVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmRzQXVyb3JhR2xvYmFsIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zITogQ29ubmVjdGlvbnM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb25zdHJ1Y3RJZDogc3RyaW5nO1xuICBwcml2YXRlIGdsb2JhbENsdXN0ZXI/OiBDZm5HbG9iYWxDbHVzdGVyO1xuICBwcml2YXRlIHByaW1hcnlDbHVzdGVyPzogUmRzQXVyb3JhO1xuICBwcml2YXRlIHJlZ2lvbmFsQ2x1c3Rlcj86IFJkc0F1cm9yYTtcbiAgcHJpdmF0ZSBwcm9wczogUmRzQXVyb3JhR2xvYmFsUHJvcHM7XG4gIHByaXZhdGUgY3VycmVudFJlZ2lvbjogc3RyaW5nO1xuICBwcml2YXRlIGdsb2JhbElkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJkc0F1cm9yYUdsb2JhbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuY29uc3RydWN0SWQgPSBpZDtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5jdXJyZW50UmVnaW9uID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIHRoaXMuZ2xvYmFsSWQgPVxuICAgICAgcHJvcHMuZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXI/LnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgIFJlc291cmNlTmFtaW5nLmdsb2JhbENsdXN0ZXJJZChpZCk7XG5cbiAgICAvLyBjcmVhdGUgY2x1c3RlcnMgLyBnbG9iYWwgY2x1c3RlciBkZXBlbmRpbmcgb24gcmVnaW9uXG4gICAgdGhpcy5hZGRBdXJvcmFDbHVzdGVyKCk7XG4gICAgdGhpcy5hZGRHbG9iYWxDbHVzdGVyKCk7XG4gICAgdGhpcy5hZGRPdXRwdXRzKCk7XG4gIH1cblxuICAvLyAtLS0gcHVibGljIGhlbHBlcnMgLS0tXG4gIGdldEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2xvYmFsSWQ7XG4gIH1cblxuICBnZXRQcmltYXJ5Q2x1c3RlcklkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUmVzb3VyY2VOYW1pbmcucHJpbWFyeUNsdXN0ZXJJZCh0aGlzLmNvbnN0cnVjdElkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R2xvYmFsQ2x1c3RlckVuZ2luZVN0cmluZygpOiBzdHJpbmcge1xuICAgIC8vIERlZmF1bHQgdG8gYXVyb3JhLXBvc3RncmVzcWwgaWYgbm8gZW5naW5lIHNwZWNpZmllZCAobWF0Y2hlcyBleGlzdGluZyBiZWhhdmlvdXIpXG4gICAgaWYgKCF0aGlzLnByb3BzLmVuZ2luZSkgcmV0dXJuIFwiYXVyb3JhLXBvc3RncmVzcWxcIjtcblxuICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgZW5naW5lIGZvcm1hdHMgc2FmZWx5IHVzaW5nIHVua25vd24gYW5kIHR5cGUgZ3VhcmRzXG4gICAgY29uc3QgZW5naW5lID0gdGhpcy5wcm9wcy5lbmdpbmU7XG5cbiAgICAvLyBDREsncyBJQ2x1c3RlckVuZ2luZSBpbnRlcmZhY2UgZG9lcyBub3QgZXhwb3NlIGVuZ2luZVR5cGUvZW5naW5lL25hbWVcbiAgICAvLyBwcm9wZXJ0aWVzIGRpcmVjdGx5LCBidXQgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyAoZS5nLiBBdXJvcmFNeXNxbEVuZ2luZVZlcnNpb24pXG4gICAgLy8gZG8gaGF2ZSB0aGVtIGF0IHJ1bnRpbWUuIENhc3QgdGhyb3VnaCB1bmtub3duIHRvIHByb2JlIHRoZXNlIGludGVybmFsIGZpZWxkcy5cbiAgICAvLyBDREsgZW5naW5lIGludGVybmFscyDigJQgbWF5IGJyZWFrIG9uIENESyB1cGdyYWRlcy4gU2VlIHJkc0F1cm9yYUdsb2JhbCB1bml0IHRlc3QuXG4gICAgY29uc3QgZW5naW5lUmVjb3JkID0gZW5naW5lIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgbGV0IGVuZ2luZVR5cGU6IHVua25vd24gPVxuICAgICAgZW5naW5lUmVjb3JkLmVuZ2luZVR5cGUgPz8gZW5naW5lUmVjb3JkLmVuZ2luZSA/PyBlbmdpbmVSZWNvcmQubmFtZTtcblxuICAgIC8vIElmIHRoZSBlbmdpbmUgd2FzIHByb3ZpZGVkIGFzIGEgcmF3IHN0cmluZyAodW5saWtlbHkgYnV0IHN1cHBvcnQgaXQpXG4gICAgaWYgKHR5cGVvZiBlbmdpbmUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGVuZ2luZVR5cGUgPSBlbmdpbmU7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgdG8gdG9TdHJpbmcoKSBmb3IgVG9rZW4tbGlrZSBvYmplY3RzXG4gICAgaWYgKCFlbmdpbmVUeXBlICYmIHR5cGVvZiBlbmdpbmVSZWNvcmQudG9TdHJpbmcgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZW5naW5lVHlwZSA9IGVuZ2luZVJlY29yZC50b1N0cmluZygpO1xuICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgZW5naW5lVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGVuZ2luZVR5cGUgIT09IFwic3RyaW5nXCIpIHJldHVybiBcImF1cm9yYS1wb3N0Z3Jlc3FsXCI7XG5cbiAgICAvLyBOb3JtYWxpc2UgY29tbW9uIGZvcm1zOiBBVVJPUkFfUE9TVEdSRVNRTCAtPiBhdXJvcmEtcG9zdGdyZXNxbCwgYXVyb3JhX3Bvc3RncmVzcWwgLT4gYXVyb3JhLXBvc3RncmVzcWxcbiAgICBjb25zdCBub3JtYWxpc2VkID0gZW5naW5lVHlwZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywgXCItXCIpO1xuXG4gICAgLy8gSWYgdGhlIG5vcm1hbGlzZWQgdmFsdWUgaXMganVzdCAnYXVyb3JhJywgcHJlZmVyIHRoZSBtb3JlIHNwZWNpZmljIHBvc3RncmVzIGRlZmF1bHRcbiAgICBpZiAobm9ybWFsaXNlZCA9PT0gXCJhdXJvcmFcIikgcmV0dXJuIFwiYXVyb3JhLXBvc3RncmVzcWxcIjtcblxuICAgIHJldHVybiBub3JtYWxpc2VkO1xuICB9XG5cbiAgLy8gY3JlYXRlIHRoZSBDZm5HbG9iYWxDbHVzdGVyIG9ubHkgaW4gdGhlIHByaW1hcnkgcmVnaW9uXG4gIGFkZEdsb2JhbENsdXN0ZXIoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucHJpbWFyeVJlZ2lvbiAhPT0gdGhpcy5jdXJyZW50UmVnaW9uKSByZXR1cm47XG5cbiAgICAvLyBjcmVhdGUgdGhlIGdsb2JhbCBjbHVzdGVyIHJlc291cmNlIHJlZmVyZW5jaW5nIHRoZSBwcmltYXJ5IGNsdXN0ZXIgaWRlbnRpZmllclxuICAgIC8vIFByZWZlciByZWZlcmVuY2luZyB0aGUgTDEgREJDbHVzdGVyIFJlZiBzbyBDbG91ZEZvcm1hdGlvbiB3aWxsIGNyZWF0ZSB0aGVcbiAgICAvLyBEQkNsdXN0ZXIgZmlyc3QgYW5kIHdlIGF2b2lkIGlkZW50aWZpZXItY2FzaW5nIG1pc21hdGNoZXMuXG4gICAgbGV0IHNvdXJjZUlkZW50aWZpZXI6IHN0cmluZyB8IElSZXNvbHZhYmxlID1cbiAgICAgIHRoaXMuZ2V0UHJpbWFyeUNsdXN0ZXJJZGVudGlmaWVyKCk7XG4gICAgbGV0IHByaW1hcnlMMTogQ2ZuREJDbHVzdGVyIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHtcbiAgICAgIC8vIFVzZSB0aGUgaGVscGVyIG9uIFJkc0F1cm9yYSB0byBnZXQgdGhlIHVuZGVybHlpbmcgTDEgREJDbHVzdGVyIChtb3JlIHJlbGlhYmxlXG4gICAgICAvLyB0aGFuIHJlbHlpbmcgb24gbm9kZS5kZWZhdWx0Q2hpbGQgd2hpY2ggY2FuIHZhcnkgZGVwZW5kaW5nIG9uIGNvbnN0cnVjdCBvcmRlcmluZylcbiAgICAgIHByaW1hcnlMMSA9XG4gICAgICAgIHRoaXMucHJpbWFyeUNsdXN0ZXIuZ2V0Q2ZuQ2x1c3RlciAmJlxuICAgICAgICB0aGlzLnByaW1hcnlDbHVzdGVyLmdldENmbkNsdXN0ZXIoKTtcbiAgICAgIGlmIChwcmltYXJ5TDEpIHtcbiAgICAgICAgc291cmNlSWRlbnRpZmllciA9IHByaW1hcnlMMS5yZWY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5nbG9iYWxDbHVzdGVyID0gbmV3IENmbkdsb2JhbENsdXN0ZXIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7dGhpcy5wcm9wcy5kYXRhYmFzZU5hbWV9R2xvYmFsQ2x1c3RlcmAsXG4gICAgICB7XG4gICAgICAgIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmdsb2JhbElkLFxuICAgICAgICBzb3VyY2VEYkNsdXN0ZXJJZGVudGlmaWVyOiBzb3VyY2VJZGVudGlmaWVyXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwcmltYXJ5IERCQ2x1c3RlciBMMSBoYXMgdGhlIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyIHNldFxuICAgIGlmIChwcmltYXJ5TDEpIHtcbiAgICAgIC8vIE1ha2UgdGhlIENGTiBkZXBlbmRlbmN5IGV4cGxpY2l0IHNvIHRoZSBEQkNsdXN0ZXIgaXMgY3JlYXRlZCBiZWZvcmUgdGhlIEdsb2JhbENsdXN0ZXJcbiAgICAgIHRoaXMuZ2xvYmFsQ2x1c3Rlci5hZGREZXBlbmRzT24ocHJpbWFyeUwxKTtcbiAgICAgIC8vIElNUE9SVEFOVDogZG8gTk9UIHNldCB0aGUgcHJpbWFyeSBEQkNsdXN0ZXIncyBgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgIGhlcmUuXG4gICAgICAvLyBJZiB3ZSBzZXQgdGhlIHByaW1hcnkgREJDbHVzdGVyIHRvIHJlZmVyZW5jZSB0aGUgZ2xvYmFsIGNsdXN0ZXIsIENsb3VkRm9ybWF0aW9uXG4gICAgICAvLyB3aWxsIGF0dGVtcHQgdG8gdmFsaWRhdGUgdGhhdCB0aGUgZ2xvYmFsIGNsdXN0ZXIgZXhpc3RzIHdoZW4gY3JlYXRpbmcgdGhlXG4gICAgICAvLyBEQkNsdXN0ZXIg4oCUIGJ1dCB0aGUgZ2xvYmFsIGNsdXN0ZXIgaXMgY3JlYXRlZCBhZnRlcndhcmQgKHdlIGFkZCBhXG4gICAgICAvLyBkZXBlbmRzT24pLCB3aGljaCBjYXVzZXMgYSBcIkdsb2JhbCBjbHVzdGVyIC4uLiBub3QgZm91bmRcIiBlcnJvci4gVGhlXG4gICAgICAvLyBjb3JyZWN0IG9yZGVyIGlzIHRvIGNyZWF0ZSB0aGUgREJDbHVzdGVyIGZpcnN0LCB0aGVuIGNyZWF0ZSB0aGVcbiAgICAgIC8vIENmbkdsb2JhbENsdXN0ZXIgd2l0aCBgc291cmNlRGJDbHVzdGVySWRlbnRpZmllcmAgcG9pbnRpbmcgYXQgdGhlXG4gICAgICAvLyBwcmltYXJ5IGNsdXN0ZXIncyBSZWYuIExlYXZpbmcgdGhlIHByaW1hcnkgTDEgd2l0aG91dCB0aGVcbiAgICAgIC8vIGBnbG9iYWxDbHVzdGVySWRlbnRpZmllcmAgYXZvaWRzIHRoZSBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgfVxuICB9XG5cbiAgLy8gY3JlYXRlIGFuIEF1cm9yYSBjbHVzdGVyIGluIHRoaXMgcmVnaW9uIChwcmltYXJ5IG9yIHNlY29uZGFyeSlcbiAgYWRkQXVyb3JhQ2x1c3RlcigpIHtcbiAgICAvLyBDb21tb24gY29uZmlndXJhdGlvbiBzaGFyZWQgYmV0d2VlbiBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgY2x1c3RlcnNcbiAgICBjb25zdCBjb21tb25Db25maWcgPSB7XG4gICAgICBlbmdpbmU6IHRoaXMucHJvcHMuZW5naW5lLFxuICAgICAgZW5naW5lQ29uZmlnOiB0aGlzLnByb3BzLmVuZ2luZUNvbmZpZyxcbiAgICAgIC8vIEluc3RhbmNlIGNvbmZpZ3VyYXRpb25cbiAgICAgIHdyaXRlcjogdGhpcy5wcm9wcy53cml0ZXIsXG4gICAgICByZWFkZXJzOiB0aGlzLnByb3BzLnJlYWRlcnMsXG4gICAgICAvLyBOZXN0ZWQgY29uZmlndXJhdGlvbnNcbiAgICAgIHByb3h5OiB0aGlzLnByb3BzLnByb3h5LFxuICAgICAgZW5jcnlwdGlvbjogdGhpcy5wcm9wcy5lbmNyeXB0aW9uLFxuICAgICAgLy8gT3BlcmF0aW9uYWwgY29uZmlndXJhdGlvblxuICAgICAgYmFja3VwUmV0ZW50aW9uOiB0aGlzLnByb3BzLmJhY2t1cFJldGVudGlvbixcbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogdGhpcy5wcm9wcy5tb25pdG9yaW5nSW50ZXJ2YWwsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogdGhpcy5wcm9wcy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyxcbiAgICAgIHBvcnQ6IHRoaXMucHJvcHMucG9ydCxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodHM6IHRoaXMucHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyxcbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogdGhpcy5wcm9wcy5kZWxldGlvblByb3RlY3Rpb24sXG4gICAgICBzbmFwc2hvdElkZW50aWZpZXI6IHRoaXMucHJvcHMuc25hcHNob3RJZGVudGlmaWVyLFxuICAgICAgc25hcHNob3RVc2VybmFtZTogdGhpcy5wcm9wcy5zbmFwc2hvdFVzZXJuYW1lXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnByb3BzLnByaW1hcnlSZWdpb24gPT09IHRoaXMuY3VycmVudFJlZ2lvbikge1xuICAgICAgLy8gcHJpbWFyeVxuICAgICAgdGhpcy5wcmltYXJ5Q2x1c3RlciA9IG5ldyBSZHNBdXJvcmEoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfVByaW1hcnlgLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB0aGlzLnByb3BzLnZwYyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHRoaXMucHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgIGNsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmdldFByaW1hcnlDbHVzdGVySWRlbnRpZmllcigpLFxuICAgICAgICAgIC8vIEVuYWJsZSBzZWNyZXQgcmVwbGljYXRpb24gdG8gc2Vjb25kYXJ5IHJlZ2lvbnNcbiAgICAgICAgICBzZWNyZXRSZXBsaWNhUmVnaW9uczogdGhpcy5wcm9wcy5zZWNvbmRhcnlSZWdpb25zLFxuICAgICAgICAgIC8vIFByaW1hcnkgcmVnaW9uIGNyZWF0ZXMgY3JlZGVudGlhbHNcbiAgICAgICAgICBjcmVkZW50aWFsczogdGhpcy5wcm9wcy5jcmVkZW50aWFscyxcbiAgICAgICAgICAuLi5jb21tb25Db25maWdcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnByaW1hcnlDbHVzdGVyLmNvbm5lY3Rpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZWNvbmRhcnkgcmVnaW9uXG4gICAgICAvLyBQYXNzIGRhdGFiYXNlTmFtZSBmb3IgcmVzb3VyY2UgbmFtaW5nLCBidXQgZmxhZyBhcyBnbG9iYWwgc2Vjb25kYXJ5XG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHNldHRpbmcgY3JlZGVudGlhbHMgYW5kIGRlZmF1bHREYXRhYmFzZU5hbWUgd2hpY2ggYXJlIGluaGVyaXRlZCBmcm9tIHByaW1hcnlcbiAgICAgIHRoaXMucmVnaW9uYWxDbHVzdGVyID0gbmV3IFJkc0F1cm9yYShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7dGhpcy5wcm9wcy5kYXRhYmFzZU5hbWV9UmVnaW9uYWxgLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB0aGlzLnByb3BzLnZwYyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHRoaXMucHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgIGNsdXN0ZXJJZGVudGlmaWVyOiBSZXNvdXJjZU5hbWluZy5zZWNvbmRhcnlDbHVzdGVySWQoXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdElkLFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50UmVnaW9uXG4gICAgICAgICAgKSxcbiAgICAgICAgICBpc0dsb2JhbFNlY29uZGFyeTogdHJ1ZSxcbiAgICAgICAgICAvLyBTZWNvbmRhcnkgZG9lc24ndCBjcmVhdGUgY3JlZGVudGlhbHMgKHVzZXMgcmVwbGljYXRlZCBzZWNyZXQpXG4gICAgICAgICAgLi4uY29tbW9uQ29uZmlnXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIC8vIHNldCB0aGUgTDEgREJDbHVzdGVyIHByb3BlcnR5IHNvIENsb3VkRm9ybWF0aW9uIHdpbGwgam9pbiBpdCB0byB0aGUgZ2xvYmFsIGNsdXN0ZXJcbiAgICAgIGlmICh0aGlzLnJlZ2lvbmFsQ2x1c3Rlcikge1xuICAgICAgICBjb25zdCByZWdpb25hbEwxID1cbiAgICAgICAgICB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRDZm5DbHVzdGVyICYmXG4gICAgICAgICAgdGhpcy5yZWdpb25hbENsdXN0ZXIuZ2V0Q2ZuQ2x1c3RlcigpO1xuICAgICAgICBpZiAocmVnaW9uYWxMMSkge1xuICAgICAgICAgIHJlZ2lvbmFsTDEuZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXIgPSB0aGlzLmdsb2JhbElkO1xuXG4gICAgICAgICAgLy8gRW5hYmxlIHdyaXRlIGZvcndhcmRpbmcgaWYgcmVxdWVzdGVkXG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nKSB7XG4gICAgICAgICAgICByZWdpb25hbEwxLmVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5jb25uZWN0aW9ucztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRPdXRwdXRzKCkge1xuICAgIGNvbnN0IG91dHB1dE5hbWUgPSB0b1Bhc2NhbENhc2UodGhpcy5wcm9wcy5kYXRhYmFzZU5hbWUpO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7b3V0cHV0TmFtZX1HbG9iYWxDbHVzdGVySWRlbnRpZmllck91dHB1dGAsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmdsb2JhbElkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7b3V0cHV0TmFtZX1HbG9iYWxDbHVzdGVySWRlbnRpZmllcmBcbiAgICB9KTtcbiAgfVxuXG4gIGdldENyZWRlbnRpYWxzKCk6IFNlY3JldCB7XG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHJldHVybiB0aGlzLnByaW1hcnlDbHVzdGVyLmdldENyZWRlbnRpYWxzKCk7XG4gICAgaWYgKHRoaXMucmVnaW9uYWxDbHVzdGVyKSByZXR1cm4gdGhpcy5yZWdpb25hbENsdXN0ZXIuZ2V0Q3JlZGVudGlhbHMoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBBdXJvcmEgY2x1c3RlciBhdmFpbGFibGUgdG8gcmV0dXJuIGNyZWRlbnRpYWxzIGZyb21cIik7XG4gIH1cblxuICBnZXRIb3N0RW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5wcmltYXJ5Q2x1c3RlcikgcmV0dXJuIHRoaXMucHJpbWFyeUNsdXN0ZXIuZ2V0SG9zdEVuZHBvaW50KCk7XG4gICAgaWYgKHRoaXMucmVnaW9uYWxDbHVzdGVyKSByZXR1cm4gdGhpcy5yZWdpb25hbENsdXN0ZXIuZ2V0SG9zdEVuZHBvaW50KCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gQXVyb3JhIGNsdXN0ZXIgYXZhaWxhYmxlIHRvIHJldHVybiBlbmRwb2ludCBmcm9tXCIpO1xuICB9XG5cbiAgZ2V0SG9zdFBvcnQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5wcmltYXJ5Q2x1c3RlcikgcmV0dXJuIHRoaXMucHJpbWFyeUNsdXN0ZXIuZ2V0SG9zdFBvcnQoKTtcbiAgICBpZiAodGhpcy5yZWdpb25hbENsdXN0ZXIpIHJldHVybiB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRIb3N0UG9ydCgpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIEF1cm9yYSBjbHVzdGVyIGF2YWlsYWJsZSB0byByZXR1cm4gcG9ydCBmcm9tXCIpO1xuICB9XG59XG4iXX0=
|
|
@@ -42,10 +42,11 @@ export declare class RdsInstance extends Construct implements IConnectable {
|
|
|
42
42
|
private engineConfig;
|
|
43
43
|
private databaseCredentials;
|
|
44
44
|
private database;
|
|
45
|
-
private masterSecret
|
|
46
|
-
private databaseProxy
|
|
47
|
-
private databaseProxySecurityGroup
|
|
48
|
-
private readReplicaSecurityGroup
|
|
45
|
+
private masterSecret?;
|
|
46
|
+
private databaseProxy?;
|
|
47
|
+
private databaseProxySecurityGroup?;
|
|
48
|
+
private readReplicaSecurityGroup?;
|
|
49
|
+
private readonly constructId;
|
|
49
50
|
constructor(scope: Construct, id: string, props: RdsProps);
|
|
50
51
|
addDatabase(props: RdsProps): void;
|
|
51
52
|
rotateSecret(props: RdsProps): void;
|
|
@@ -13,9 +13,11 @@ const secrets_1 = require("../secrets");
|
|
|
13
13
|
const customResource_1 = require("../utilities/customResource");
|
|
14
14
|
const database_1 = require("../../../patterns/aws/database");
|
|
15
15
|
const resourceNaming_1 = require("../../../utils/resourceNaming");
|
|
16
|
+
const capitaliseString_1 = require("../../../utils/capitaliseString");
|
|
16
17
|
class RdsInstance extends constructs_1.Construct {
|
|
17
18
|
constructor(scope, id, props) {
|
|
18
19
|
super(scope, id);
|
|
20
|
+
this.constructId = id;
|
|
19
21
|
this.port = props.port || 35255;
|
|
20
22
|
this.vpc = props.vpc;
|
|
21
23
|
// PostgreSQL fallback for direct usage - ensure engine and engineConfig match
|
|
@@ -43,6 +45,7 @@ class RdsInstance extends constructs_1.Construct {
|
|
|
43
45
|
? props.snapshotUsername
|
|
44
46
|
: (props.credentials?.username ?? this.engineConfig.defaultUsername);
|
|
45
47
|
this.databaseCredentials = new secrets_1.Secret(this, `${props.databaseName}Credentials`, {
|
|
48
|
+
// TODO: revert to this.constructId after webapp redeploy (temp fix to preserve existing instance identifiers)
|
|
46
49
|
secretName: resourceNaming_1.ResourceNaming.credentialsSecretName(props.databaseName),
|
|
47
50
|
generateSecretString: {
|
|
48
51
|
secretStringTemplate: JSON.stringify({
|
|
@@ -112,6 +115,7 @@ class RdsInstance extends constructs_1.Construct {
|
|
|
112
115
|
enablePerformanceInsights: piEnabled,
|
|
113
116
|
performanceInsightEncryptionKey: performanceInsightsEncryptionKey,
|
|
114
117
|
performanceInsightRetention: performanceInsightsRetention,
|
|
118
|
+
// TODO: revert to this.constructId after webapp redeploy (temp fix to preserve existing instance identifiers)
|
|
115
119
|
instanceIdentifier: resourceNaming_1.ResourceNaming.dbInstanceId(props.databaseName),
|
|
116
120
|
instanceType: props.instanceType
|
|
117
121
|
? new aws_ec2_1.InstanceType(props.instanceType)
|
|
@@ -148,6 +152,7 @@ class RdsInstance extends constructs_1.Construct {
|
|
|
148
152
|
rotationConfig?.automaticallyAfter) ||
|
|
149
153
|
aws_cdk_lib_1.Duration.days(30);
|
|
150
154
|
this.masterSecret = new secrets_1.Secret(this, `${props.databaseName}MasterSecret`, {
|
|
155
|
+
// TODO: revert to this.constructId after webapp redeploy (temp fix to preserve existing instance identifiers)
|
|
151
156
|
secretName: resourceNaming_1.ResourceNaming.masterSecretName(props.databaseName)
|
|
152
157
|
});
|
|
153
158
|
new aws_secretsmanager_1.SecretRotation(this, `${props.databaseName}SecretRotation`, {
|
|
@@ -160,6 +165,8 @@ class RdsInstance extends constructs_1.Construct {
|
|
|
160
165
|
});
|
|
161
166
|
}
|
|
162
167
|
addProxy(props) {
|
|
168
|
+
if (!props.proxy)
|
|
169
|
+
return;
|
|
163
170
|
const proxyConfig = props.proxy;
|
|
164
171
|
const vpcSubnets = proxyConfig.vpcSubnets ?? {
|
|
165
172
|
subnetType: aws_ec2_1.SubnetType.PRIVATE_WITH_EGRESS
|
|
@@ -171,6 +178,7 @@ class RdsInstance extends constructs_1.Construct {
|
|
|
171
178
|
// Allow proxy to connect to database
|
|
172
179
|
this.databaseSecurityGroup.addIngressRule(this.databaseProxySecurityGroup, aws_ec2_1.Port.tcp(this.port), "Allow RDS Proxy to connect to database");
|
|
173
180
|
this.databaseProxy = new aws_rds_1.DatabaseProxy(this, `${props.databaseName}DatabaseProxy`, {
|
|
181
|
+
// TODO: revert to this.constructId after webapp redeploy (temp fix to preserve existing instance identifiers)
|
|
174
182
|
dbProxyName: resourceNaming_1.ResourceNaming.proxyName(props.databaseName),
|
|
175
183
|
proxyTarget: aws_rds_1.ProxyTarget.fromInstance(this.database),
|
|
176
184
|
secrets: [this.databaseCredentials.secret],
|
|
@@ -184,13 +192,16 @@ class RdsInstance extends constructs_1.Construct {
|
|
|
184
192
|
maxConnectionsPercent: proxyConfig.maxConnections,
|
|
185
193
|
maxIdleConnectionsPercent: proxyConfig.maxIdleConnections
|
|
186
194
|
});
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
195
|
+
const outputName = (0, capitaliseString_1.toPascalCase)(props.databaseName || this.constructId);
|
|
196
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}ProxyEndpointOutput`, {
|
|
197
|
+
key: `${outputName}ProxyEndpoint`,
|
|
198
|
+
exportName: `${outputName}ProxyEndpoint`,
|
|
190
199
|
value: this.databaseProxy.endpoint
|
|
191
200
|
});
|
|
192
201
|
}
|
|
193
202
|
addReadReplica(props) {
|
|
203
|
+
if (!props.readReplica)
|
|
204
|
+
return;
|
|
194
205
|
const replicaConfig = props.readReplica;
|
|
195
206
|
const replicaInstanceType = replicaConfig.instanceType ?? props.instanceType ?? "t4g.large";
|
|
196
207
|
const piEnabled = props.performanceInsights !== false;
|
|
@@ -211,10 +222,11 @@ class RdsInstance extends constructs_1.Construct {
|
|
|
211
222
|
// Deletion waiter ensures primary is "available" before CloudFormation deletes it.
|
|
212
223
|
// When the read replica is deleted, the primary enters "modifying" state.
|
|
213
224
|
// Without this waiter, the final snapshot creation fails.
|
|
225
|
+
// TODO: revert to this.constructId after webapp redeploy (temp fix to preserve existing instance identifiers)
|
|
214
226
|
const instanceId = resourceNaming_1.ResourceNaming.dbInstanceId(props.databaseName);
|
|
215
227
|
const waiterTimeout = aws_cdk_lib_1.Duration.minutes(10);
|
|
216
228
|
const deletionWaiter = new customResource_1.CustomResource(this, `${props.databaseName}DeletionWaiter`, {
|
|
217
|
-
runtime: aws_lambda_1.Runtime.
|
|
229
|
+
runtime: aws_lambda_1.Runtime.NODEJS_22_X,
|
|
218
230
|
timeout: waiterTimeout.plus(aws_cdk_lib_1.Duration.seconds(30)),
|
|
219
231
|
lambdaDescription: `${props.databaseName} deletion waiter`,
|
|
220
232
|
inlineCode: `
|
|
@@ -280,6 +292,7 @@ exports.handler = async (event) => {
|
|
|
280
292
|
performanceInsightRetention: piEnabled
|
|
281
293
|
? this.getPerformanceInsightRetention(piConfig?.retentionPeriod ?? 7)
|
|
282
294
|
: undefined,
|
|
295
|
+
// TODO: revert to this.constructId after webapp redeploy (temp fix to preserve existing instance identifiers)
|
|
283
296
|
instanceIdentifier: resourceNaming_1.ResourceNaming.readReplicaId(props.databaseName),
|
|
284
297
|
instanceType: new aws_ec2_1.InstanceType(replicaInstanceType),
|
|
285
298
|
availabilityZone: replicaConfig.availabilityZone,
|
|
@@ -304,8 +317,6 @@ exports.handler = async (event) => {
|
|
|
304
317
|
return aws_rds_1.PerformanceInsightRetention.MONTHS_6;
|
|
305
318
|
case 372:
|
|
306
319
|
return aws_rds_1.PerformanceInsightRetention.MONTHS_12;
|
|
307
|
-
case 731:
|
|
308
|
-
return aws_rds_1.PerformanceInsightRetention.LONG_TERM;
|
|
309
320
|
default:
|
|
310
321
|
return aws_rds_1.PerformanceInsightRetention.MONTHS_1;
|
|
311
322
|
}
|
|
@@ -339,4 +350,4 @@ exports.handler = async (event) => {
|
|
|
339
350
|
}
|
|
340
351
|
}
|
|
341
352
|
exports.RdsInstance = RdsInstance;
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzSW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9yZHNJbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBaUU7QUFDakUsaURBUTZCO0FBQzdCLGlEQWdCNkI7QUFDN0IsdUVBR3dDO0FBQ3hDLHVEQUFpRDtBQUNqRCxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBQ3ZDLGdDQUF1QztBQUN2Qyx3Q0FBd0Q7QUFDeEQsZ0VBQTZEO0FBRTdELDZEQVN3QztBQUN4QyxrRUFBK0Q7QUErQi9ELE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBY3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZTtRQUN2RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBRXJCLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUk7WUFDeEMsZUFBZSxFQUFFLFVBQVU7WUFDM0IsYUFBYSxFQUFFLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUN2QyxlQUFlLEVBQUUsOENBQThDO1NBQ2hFLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLDBFQUEwRTtRQUMxRSxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsY0FBYyxLQUFLLEtBQUssQ0FBQztRQUMzRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUss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RSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExY0Qsa0NBMGNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlLFxuICBJbnN0YW5jZVR5cGUsXG4gIHR5cGUgSVZwYyxcbiAgUG9ydCxcbiAgdHlwZSBTdWJuZXRTZWxlY3Rpb24sXG4gIFN1Ym5ldFR5cGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7XG4gIENhQ2VydGlmaWNhdGUsXG4gIENyZWRlbnRpYWxzLFxuICBEYXRhYmFzZUluc3RhbmNlLFxuICBEYXRhYmFzZUluc3RhbmNlRnJvbVNuYXBzaG90LFxuICBEYXRhYmFzZUluc3RhbmNlRW5naW5lLFxuICBEYXRhYmFzZUluc3RhbmNlUmVhZFJlcGxpY2EsXG4gIERhdGFiYXNlUHJveHksXG4gIHR5cGUgSURhdGFiYXNlSW5zdGFuY2UsXG4gIHR5cGUgSUluc3RhbmNlRW5naW5lLFxuICBQYXJhbWV0ZXJHcm91cCxcbiAgUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLFxuICBQb3N0Z3Jlc0VuZ2luZVZlcnNpb24sXG4gIFByb3h5VGFyZ2V0LFxuICBTbmFwc2hvdENyZWRlbnRpYWxzLFxuICBTdG9yYWdlVHlwZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiO1xuaW1wb3J0IHtcbiAgU2VjcmV0Um90YXRpb24sXG4gIFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb25cbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgUnVudGltZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIEVmZmVjdCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cCB9IGZyb20gXCIuLi9pYW1cIjtcbmltcG9ydCB7IEN1c3RvbWVyTWFuYWdlZEtleSwgU2VjcmV0IH0gZnJvbSBcIi4uL3NlY3JldHNcIjtcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgdHlwZSBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYmFzZS9hd3NTdGFja1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbmdpbmVDb25maWcsXG4gIHR5cGUgUHJveHlDb25maWcsXG4gIHR5cGUgUmVhZFJlcGxpY2FDb25maWcsXG4gIHR5cGUgQ3JlZGVudGlhbHNDb25maWcsXG4gIHR5cGUgRW5jcnlwdGlvbkNvbmZpZyxcbiAgdHlwZSBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnLFxuICBpc0F3c01hbmFnZWRLZXksXG4gIGlzQ01LUmVxdWVzdGVkXG59IGZyb20gXCIuLi8uLi8uLi9wYXR0ZXJucy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFJlc291cmNlTmFtaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc291cmNlTmFtaW5nXCI7XG5cbmludGVyZmFjZSBSZHNQcm9wcyB7XG4gIHZwYzogSVZwYztcbiAgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICBlbmdpbmU/OiBJSW5zdGFuY2VFbmdpbmU7XG4gIGVuZ2luZUNvbmZpZz86IEVuZ2luZUNvbmZpZztcbiAgaW5zdGFuY2VUeXBlPzogc3RyaW5nO1xuICBtYXhBbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuICBhbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuICBiYWNrdXBSZXRlbnRpb24/OiBEdXJhdGlvbjtcbiAgcHJlZmVycmVkQmFja3VwV2luZG93Pzogc3RyaW5nO1xuICBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcbiAgbW9uaXRvcmluZ0ludGVydmFsPzogRHVyYXRpb247XG4gIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nO1xuICBwb3J0PzogbnVtYmVyO1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyB8IGZhbHNlO1xuICBzZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW107XG4gIG11bHRpQXo/OiBib29sZWFuO1xuICBwcm94eT86IFByb3h5Q29uZmlnIHwgZmFsc2U7XG4gIHJlYWRSZXBsaWNhPzogUmVhZFJlcGxpY2FDb25maWcgfCBmYWxzZTtcbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc0NvbmZpZztcbiAgZW5jcnlwdGlvbj86IEVuY3J5cHRpb25Db25maWc7XG4gIHB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW47XG4gIGRlbGV0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG4gIC8qKiBBUk4gb3IgaWRlbnRpZmllciBvZiBEQiBpbnN0YW5jZSBzbmFwc2hvdCB0byByZXN0b3JlIGZyb20gKi9cbiAgc25hcHNob3RJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKiogVXNlcm5hbWUgZnJvbSB0aGUgc25hcHNob3QgKHJlcXVpcmVkIHdoZW4gcmVzdG9yaW5nIGZyb20gc25hcHNob3QgdG8gcmVzZXQgcGFzc3dvcmQpICovXG4gIHNuYXBzaG90VXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBSZHNJbnN0YW5jZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBjb25uZWN0aW9ucyE6IENvbm5lY3Rpb25zO1xuICBwdWJsaWMgZGF0YWJhc2VTZWN1cml0eUdyb3VwITogU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIHZwYyE6IElWcGM7XG5cbiAgcHJpdmF0ZSBwb3J0ITogbnVtYmVyO1xuICBwcml2YXRlIGVuZ2luZUNvbmZpZyE6IEVuZ2luZUNvbmZpZztcbiAgcHJpdmF0ZSBkYXRhYmFzZUNyZWRlbnRpYWxzITogU2VjcmV0O1xuICBwcml2YXRlIGRhdGFiYXNlITogSURhdGFiYXNlSW5zdGFuY2U7XG4gIHByaXZhdGUgbWFzdGVyU2VjcmV0ITogU2VjcmV0O1xuICBwcml2YXRlIGRhdGFiYXNlUHJveHkhOiBEYXRhYmFzZVByb3h5O1xuICBwcml2YXRlIGRhdGFiYXNlUHJveHlTZWN1cml0eUdyb3VwITogU2VjdXJpdHlHcm91cDtcbiAgcHJpdmF0ZSByZWFkUmVwbGljYVNlY3VyaXR5R3JvdXAhOiBTZWN1cml0eUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZHNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnBvcnQgPSBwcm9wcy5wb3J0IHx8IDM1MjU1O1xuICAgIHRoaXMudnBjID0gcHJvcHMudnBjO1xuXG4gICAgLy8gUG9zdGdyZVNRTCBmYWxsYmFjayBmb3IgZGlyZWN0IHVzYWdlIC0gZW5zdXJlIGVuZ2luZSBhbmQgZW5naW5lQ29uZmlnIG1hdGNoXG4gICAgdGhpcy5lbmdpbmVDb25maWcgPSBwcm9wcy5lbmdpbmVDb25maWcgPz8ge1xuICAgICAgZGVmYXVsdFVzZXJuYW1lOiBcInBvc3RncmVzXCIsXG4gICAgICBzc2xQYXJhbWV0ZXJzOiB7IFwicmRzLmZvcmNlX3NzbFwiOiBcIjFcIiB9LFxuICAgICAgcm90YXRpb25BcHBOYW1lOiBcIlNlY3JldHNNYW5hZ2VyUkRTUG9zdGdyZVNRTFJvdGF0aW9uTXVsdGlVc2VyXCJcbiAgICB9O1xuXG4gICAgdGhpcy5hZGREYXRhYmFzZShwcm9wcyk7XG5cbiAgICAvLyBTZWNyZXQgcm90YXRpb24gZW5hYmxlZCBieSBkZWZhdWx0IChvcHQtb3V0IHdpdGggc2VjcmV0Um90YXRpb246IGZhbHNlKVxuICAgIGNvbnN0IHNlY3JldFJvdGF0aW9uRGlzYWJsZWQgPSBwcm9wcy5jcmVkZW50aWFscz8uc2VjcmV0Um90YXRpb24gPT09IGZhbHNlO1xuICAgIGlmICghc2VjcmV0Um90YXRpb25EaXNhYmxlZCkge1xuICAgICAgdGhpcy5yb3RhdGVTZWNyZXQocHJvcHMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5wcm94eSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLnByb3h5ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5hZGRQcm94eShwcm9wcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlYWRSZXBsaWNhICE9PSB1bmRlZmluZWQgJiYgcHJvcHMucmVhZFJlcGxpY2EgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmFkZFJlYWRSZXBsaWNhKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBhZGREYXRhYmFzZShwcm9wczogUmRzUHJvcHMpIHtcbiAgICAvLyBVc2VybmFtZSBwcmlvcml0eTogc25hcHNob3RVc2VybmFtZSA+IGNyZWRlbnRpYWxzLnVzZXJuYW1lID4gZW5naW5lIGRlZmF1bHRcbiAgICBjb25zdCB1c2VybmFtZSA9XG4gICAgICBwcm9wcy5zbmFwc2hvdElkZW50aWZpZXIgJiYgcHJvcHMuc25hcHNob3RVc2VybmFtZVxuICAgICAgICA/IHByb3BzLnNuYXBzaG90VXNlcm5hbWVcbiAgICAgICAgOiAocHJvcHMuY3JlZGVudGlhbHM/LnVzZXJuYW1lID8/IHRoaXMuZW5naW5lQ29uZmlnLmRlZmF1bHRVc2VybmFtZSk7XG4gICAgdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzID0gbmV3IFNlY3JldChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9Q3JlZGVudGlhbHNgLFxuICAgICAge1xuICAgICAgICBzZWNyZXROYW1lOiBSZXNvdXJjZU5hbWluZy5jcmVkZW50aWFsc1NlY3JldE5hbWUocHJvcHMuZGF0YWJhc2VOYW1lISksXG4gICAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHVzZXJuYW1lXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICAgIGluY2x1ZGVTcGFjZTogZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVNlY3VyaXR5R3JvdXBgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciBSRFMgZGF0YWJhc2UgaW5zdGFuY2UgJHtwcm9wcy5kYXRhYmFzZU5hbWV9YFxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBTZWxmLXJlZmVyZW5jaW5nIHJ1bGUgZm9yIG11bHRpLUFaIGNvbW11bmljYXRpb25cbiAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShcbiAgICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwLFxuICAgICAgUG9ydC50Y3AodGhpcy5wb3J0KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKHtcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXBdLFxuICAgICAgZGVmYXVsdFBvcnQ6IFBvcnQudGNwKHRoaXMucG9ydClcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0b3JhZ2VFbmNyeXB0aW9uS2V5ID0gaXNDTUtSZXF1ZXN0ZWQocHJvcHMuZW5jcnlwdGlvbj8uc3RvcmFnZUtleSlcbiAgICAgID8gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1DbHVzdGVyRW5jcnlwdGlvbktleWAsXG4gICAgICAgICAgeyBhbGlhc05hbWU6IGBjbWsvcmRzLyR7cHJvcHMuZGF0YWJhc2VOYW1lfS9lbmNyeXB0aW9uS2V5YCB9XG4gICAgICAgICkua2V5XG4gICAgICA6IGlzQXdzTWFuYWdlZEtleShwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5KSB8fFxuICAgICAgICAgIHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXkgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXk7XG5cbiAgICBjb25zdCBwaUVuYWJsZWQgPSBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzICE9PSBmYWxzZTtcbiAgICBjb25zdCBwaUNvbmZpZyA9XG4gICAgICBwaUVuYWJsZWQgJiYgdHlwZW9mIHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcGVyZm9ybWFuY2VJbnNpZ2h0c0VuY3J5cHRpb25LZXkgPVxuICAgICAgcGlFbmFibGVkICYmIGlzQ01LUmVxdWVzdGVkKHBpQ29uZmlnPy5lbmNyeXB0aW9uS2V5KVxuICAgICAgICA/IG5ldyBDdXN0b21lck1hbmFnZWRLZXkoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVBlcmZvcm1hbmNlSW5zaWdodHNLZXlgLFxuICAgICAgICAgICAgeyBhbGlhc05hbWU6IGBjbWsvcmRzLyR7cHJvcHMuZGF0YWJhc2VOYW1lfS9JbnNpZ2h0c0tleWAgfVxuICAgICAgICAgICkua2V5XG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvbiA9IHBpRW5hYmxlZFxuICAgICAgPyB0aGlzLmdldFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbihwaUNvbmZpZz8ucmV0ZW50aW9uUGVyaW9kID8/IDcpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVuZ2luZSA9XG4gICAgICBwcm9wcy5lbmdpbmUgfHxcbiAgICAgIERhdGFiYXNlSW5zdGFuY2VFbmdpbmUucG9zdGdyZXMoe1xuICAgICAgICB2ZXJzaW9uOiBQb3N0Z3Jlc0VuZ2luZVZlcnNpb24uVkVSXzE3XzVcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyR3JvdXAgPSBuZXcgUGFyYW1ldGVyR3JvdXAoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVBhcmFtZXRlckdyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgZW5naW5lLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFBhcmFtZXRlciBncm91cCBmb3IgJHtwcm9wcy5kYXRhYmFzZU5hbWV9IHdpdGggc2VjdXJpdHkgZGVmYXVsdHNgLFxuICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLmVuZ2luZUNvbmZpZy5zc2xQYXJhbWV0ZXJzXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIFVzZSBQVUJMSUMgc3VibmV0IGZvciBwdWJsaWNseUFjY2Vzc2libGUgZGF0YWJhc2VzIChlLmcuLCB0aW5rZXJlciB0aWVyIHdpdGhvdXQgTkFUKVxuICAgIGNvbnN0IHN1Ym5ldFR5cGUgPSBwcm9wcy5wdWJsaWNseUFjY2Vzc2libGVcbiAgICAgID8gU3VibmV0VHlwZS5QVUJMSUNcbiAgICAgIDogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTO1xuXG4gICAgY29uc3QgY29tbW9uSW5zdGFuY2VQcm9wcyA9IHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgIHN1Ym5ldFR5cGVcbiAgICAgIH0sXG4gICAgICBzZWN1cml0eUdyb3VwczogW3RoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwXSxcbiAgICAgIGVuZ2luZSxcbiAgICAgIHBhcmFtZXRlckdyb3VwLFxuICAgICAgYWxsb2NhdGVkU3RvcmFnZTogcHJvcHMuYWxsb2NhdGVkU3RvcmFnZSxcbiAgICAgIGJhY2t1cFJldGVudGlvbjogcHJvcHMuYmFja3VwUmV0ZW50aW9uIHx8IER1cmF0aW9uLmRheXMoMTQpLFxuICAgICAgcHJlZmVycmVkQmFja3VwV2luZG93OiBwcm9wcy5wcmVmZXJyZWRCYWNrdXBXaW5kb3cgfHwgXCIwMjowMC0wMzowMFwiLFxuICAgICAgc3RvcmFnZUVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHN0b3JhZ2VFbmNyeXB0aW9uS2V5LFxuICAgICAgc3RvcmFnZVR5cGU6IFN0b3JhZ2VUeXBlLkdQMyxcbiAgICAgIGNhQ2VydGlmaWNhdGU6IENhQ2VydGlmaWNhdGUuUkRTX0NBX1JTQTQwOTZfRzEsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlNOQVBTSE9ULFxuICAgICAgZGVsZXRlQXV0b21hdGVkQmFja3VwczogZmFsc2UsXG4gICAgICBlbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzOiBwaUVuYWJsZWQsXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRFbmNyeXB0aW9uS2V5OiBwZXJmb3JtYW5jZUluc2lnaHRzRW5jcnlwdGlvbktleSxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjogcGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvbixcbiAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogUmVzb3VyY2VOYW1pbmcuZGJJbnN0YW5jZUlkKHByb3BzLmRhdGFiYXNlTmFtZSEpLFxuICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5pbnN0YW5jZVR5cGVcbiAgICAgICAgPyBuZXcgSW5zdGFuY2VUeXBlKHByb3BzLmluc3RhbmNlVHlwZSlcbiAgICAgICAgOiBuZXcgSW5zdGFuY2VUeXBlKFwidDRnLmxhcmdlXCIpLFxuICAgICAgbWF4QWxsb2NhdGVkU3RvcmFnZTogcHJvcHMubWF4QWxsb2NhdGVkU3RvcmFnZSB8fCA1MDAsXG4gICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IHByb3BzLm1vbml0b3JpbmdJbnRlcnZhbCB8fCBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgbXVsdGlBejogcHJvcHMubXVsdGlBeiAhPT0gZmFsc2UsXG4gICAgICBwb3J0OiB0aGlzLnBvcnQsXG4gICAgICBkZWxldGlvblByb3RlY3Rpb246IHByb3BzLmRlbGV0aW9uUHJvdGVjdGlvbiA/PyB0cnVlLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6XG4gICAgICAgIHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93IHx8IFwiU2F0OjEyOjMwLVNhdDoyMDozMFwiLFxuICAgICAgcHVibGljbHlBY2Nlc3NpYmxlOiBwcm9wcy5wdWJsaWNseUFjY2Vzc2libGUgPz8gZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLnNuYXBzaG90SWRlbnRpZmllcikge1xuICAgICAgLy8gQ3JlYXRlIGZyb20gc25hcHNob3RcbiAgICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgRGF0YWJhc2VJbnN0YW5jZUZyb21TbmFwc2hvdChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfURhdGFiYXNlYCxcbiAgICAgICAge1xuICAgICAgICAgIC4uLmNvbW1vbkluc3RhbmNlUHJvcHMsXG4gICAgICAgICAgc25hcHNob3RJZGVudGlmaWVyOiBwcm9wcy5zbmFwc2hvdElkZW50aWZpZXIsXG4gICAgICAgICAgLy8gRm9yIHNuYXBzaG90cywgY3JlZGVudGlhbHMgYXJlIHVzZWQgdG8gcmVzZXQgdGhlIHBhc3N3b3JkXG4gICAgICAgICAgY3JlZGVudGlhbHM6IFNuYXBzaG90Q3JlZGVudGlhbHMuZnJvbVNlY3JldChcbiAgICAgICAgICAgIHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXRcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgRGF0YWJhc2VJbnN0YW5jZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfURhdGFiYXNlYCxcbiAgICAgICAge1xuICAgICAgICAgIC4uLmNvbW1vbkluc3RhbmNlUHJvcHMsXG4gICAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzLmZyb21TZWNyZXQodGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldClcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByb3RhdGVTZWNyZXQocHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgY29uc3Qgcm90YXRpb25Db25maWcgPSBwcm9wcy5jcmVkZW50aWFscz8uc2VjcmV0Um90YXRpb247XG4gICAgY29uc3Qgcm90YXRpb25QZXJpb2QgPVxuICAgICAgKHR5cGVvZiByb3RhdGlvbkNvbmZpZyA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICByb3RhdGlvbkNvbmZpZz8uYXV0b21hdGljYWxseUFmdGVyKSB8fFxuICAgICAgRHVyYXRpb24uZGF5cygzMCk7XG5cbiAgICB0aGlzLm1hc3RlclNlY3JldCA9IG5ldyBTZWNyZXQodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfU1hc3RlclNlY3JldGAsIHtcbiAgICAgIHNlY3JldE5hbWU6IFJlc291cmNlTmFtaW5nLm1hc3RlclNlY3JldE5hbWUocHJvcHMuZGF0YWJhc2VOYW1lISlcbiAgICB9KTtcblxuICAgIG5ldyBTZWNyZXRSb3RhdGlvbih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9U2VjcmV0Um90YXRpb25gLCB7XG4gICAgICBhcHBsaWNhdGlvbjogbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oXG4gICAgICAgIHRoaXMuZW5naW5lQ29uZmlnLnJvdGF0aW9uQXBwTmFtZSxcbiAgICAgICAgXCIxLjEuMzY3XCIsXG4gICAgICAgIHsgaXNNdWx0aVVzZXI6IHRydWUgfVxuICAgICAgKSxcbiAgICAgIHNlY3JldDogdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldCxcbiAgICAgIG1hc3RlclNlY3JldDogdGhpcy5tYXN0ZXJTZWNyZXQuc2VjcmV0LFxuICAgICAgdGFyZ2V0OiB0aGlzLmRhdGFiYXNlLFxuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGF1dG9tYXRpY2FsbHlBZnRlcjogcm90YXRpb25QZXJpb2RcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFByb3h5KHByb3BzOiBSZHNQcm9wcykge1xuICAgIGNvbnN0IHByb3h5Q29uZmlnID0gcHJvcHMucHJveHkgYXMgUHJveHlDb25maWc7XG4gICAgY29uc3QgdnBjU3VibmV0czogU3VibmV0U2VsZWN0aW9uID0gcHJveHlDb25maWcudnBjU3VibmV0cyA/PyB7XG4gICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NcbiAgICB9O1xuXG4gICAgdGhpcy5kYXRhYmFzZVByb3h5U2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1Qcm94eVNlY3VyaXR5R3JvdXBgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciBSRFMgUHJveHkgZm9yICR7cHJvcHMuZGF0YWJhc2VOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gQWxsb3cgcHJveHkgdG8gY29ubmVjdCB0byBkYXRhYmFzZVxuICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgdGhpcy5kYXRhYmFzZVByb3h5U2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHRoaXMucG9ydCksXG4gICAgICBcIkFsbG93IFJEUyBQcm94eSB0byBjb25uZWN0IHRvIGRhdGFiYXNlXCJcbiAgICApO1xuXG4gICAgdGhpcy5kYXRhYmFzZVByb3h5ID0gbmV3IERhdGFiYXNlUHJveHkoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfURhdGFiYXNlUHJveHlgLFxuICAgICAge1xuICAgICAgICBkYlByb3h5TmFtZTogUmVzb3VyY2VOYW1pbmcucHJveHlOYW1lKHByb3BzLmRhdGFiYXNlTmFtZSEpLFxuICAgICAgICBwcm94eVRhcmdldDogUHJveHlUYXJnZXQuZnJvbUluc3RhbmNlKHRoaXMuZGF0YWJhc2UpLFxuICAgICAgICBzZWNyZXRzOiBbdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldF0sXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpcy5kYXRhYmFzZVByb3h5U2VjdXJpdHlHcm91cF0sXG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIHZwY1N1Ym5ldHMsXG4gICAgICAgIHJlcXVpcmVUTFM6IHByb3h5Q29uZmlnLnJlcXVpcmVUTFMgPz8gdHJ1ZSxcbiAgICAgICAgYm9ycm93VGltZW91dDogcHJveHlDb25maWcuY29ubmVjdGlvbkJvcnJvd1RpbWVvdXRcbiAgICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJveHlDb25maWcuY29ubmVjdGlvbkJvcnJvd1RpbWVvdXQpXG4gICAgICAgICAgOiBEdXJhdGlvbi5zZWNvbmRzKDEyMCksXG4gICAgICAgIG1heENvbm5lY3Rpb25zUGVyY2VudDogcHJveHlDb25maWcubWF4Q29ubmVjdGlvbnMsXG4gICAgICAgIG1heElkbGVDb25uZWN0aW9uc1BlcmNlbnQ6IHByb3h5Q29uZmlnLm1heElkbGVDb25uZWN0aW9uc1xuICAgICAgfVxuICAgICk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1Qcm94eUVuZHBvaW50T3V0cHV0YCwge1xuICAgICAga2V5OiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlFbmRwb2ludGAsXG4gICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlFbmRwb2ludGAsXG4gICAgICB2YWx1ZTogdGhpcy5kYXRhYmFzZVByb3h5LmVuZHBvaW50XG4gICAgfSk7XG4gIH1cblxuICBhZGRSZWFkUmVwbGljYShwcm9wczogUmRzUHJvcHMpIHtcbiAgICBjb25zdCByZXBsaWNhQ29uZmlnID0gcHJvcHMucmVhZFJlcGxpY2EgYXMgUmVhZFJlcGxpY2FDb25maWc7XG4gICAgY29uc3QgcmVwbGljYUluc3RhbmNlVHlwZSA9XG4gICAgICByZXBsaWNhQ29uZmlnLmluc3RhbmNlVHlwZSA/PyBwcm9wcy5pbnN0YW5jZVR5cGUgPz8gXCJ0NGcubGFyZ2VcIjtcblxuICAgIGNvbnN0IHBpRW5hYmxlZCA9IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMgIT09IGZhbHNlO1xuICAgIGNvbnN0IHBpQ29uZmlnID1cbiAgICAgIHBpRW5hYmxlZCAmJiB0eXBlb2YgcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHNcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZWFkUmVwbGljYVBlcmZvcm1hbmNlSW5zaWdodHNLZXkgPVxuICAgICAgcGlFbmFibGVkICYmIGlzQ01LUmVxdWVzdGVkKHBpQ29uZmlnPy5lbmNyeXB0aW9uS2V5KVxuICAgICAgICA/IG5ldyBDdXN0b21lck1hbmFnZWRLZXkoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJlYWRSZXBsaWNhUmVhZGVySW5zaWdodHNLZXlgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhbGlhc05hbWU6IGBjbWsvcmRzLyR7cHJvcHMuZGF0YWJhc2VOYW1lfS9SZWFkUmVwbGljYUluc2lnaHRzS2V5YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICkua2V5XG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5yZWFkUmVwbGljYVNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmVhZFJlcGxpY2FTZWN1cml0eUdyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgUkRTIHJlYWQgcmVwbGljYSBvZiAke3Byb3BzLmRhdGFiYXNlTmFtZX1gXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEFsbG93IHByaW1hcnkgZGF0YWJhc2UgdG8gcmVwbGljYXRlIHRvIHJlYWQgcmVwbGljYVxuICAgIHRoaXMucmVhZFJlcGxpY2FTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXAsXG4gICAgICBQb3J0LnRjcCh0aGlzLnBvcnQpLFxuICAgICAgXCJBbGxvdyBwcmltYXJ5IGRhdGFiYXNlIHRvIHJlcGxpY2F0ZSB0byByZWFkIHJlcGxpY2FcIlxuICAgICk7XG5cbiAgICAvLyBEZWxldGlvbiB3YWl0ZXIgZW5zdXJlcyBwcmltYXJ5IGlzIFwiYXZhaWxhYmxlXCIgYmVmb3JlIENsb3VkRm9ybWF0aW9uIGRlbGV0ZXMgaXQuXG4gICAgLy8gV2hlbiB0aGUgcmVhZCByZXBsaWNhIGlzIGRlbGV0ZWQsIHRoZSBwcmltYXJ5IGVudGVycyBcIm1vZGlmeWluZ1wiIHN0YXRlLlxuICAgIC8vIFdpdGhvdXQgdGhpcyB3YWl0ZXIsIHRoZSBmaW5hbCBzbmFwc2hvdCBjcmVhdGlvbiBmYWlscy5cbiAgICBjb25zdCBpbnN0YW5jZUlkID0gUmVzb3VyY2VOYW1pbmcuZGJJbnN0YW5jZUlkKHByb3BzLmRhdGFiYXNlTmFtZSEpO1xuICAgIGNvbnN0IHdhaXRlclRpbWVvdXQgPSBEdXJhdGlvbi5taW51dGVzKDEwKTtcbiAgICBjb25zdCBkZWxldGlvbldhaXRlciA9IG5ldyBDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGVsZXRpb25XYWl0ZXJgLFxuICAgICAge1xuICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiB3YWl0ZXJUaW1lb3V0LnBsdXMoRHVyYXRpb24uc2Vjb25kcygzMCkpLFxuICAgICAgICBsYW1iZGFEZXNjcmlwdGlvbjogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfSBkZWxldGlvbiB3YWl0ZXJgLFxuICAgICAgICBpbmxpbmVDb2RlOiBgXG5jb25zdCB7IFJEU0NsaWVudCB9ID0gcmVxdWlyZSgnQGF3cy1zZGsvY2xpZW50LXJkcycpO1xuY29uc3QgeyB3YWl0VW50aWxEQkluc3RhbmNlQXZhaWxhYmxlIH0gPSByZXF1aXJlKCdAYXdzLXNkay9jbGllbnQtcmRzJyk7XG5cbmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6JywgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcbiAgY29uc3QgaW5zdGFuY2VJZCA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5JbnN0YW5jZUlkZW50aWZpZXI7XG4gIGNvbnN0IHBoeXNpY2FsUmVzb3VyY2VJZCA9IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCB8fCBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCB8fCAncmRzLWRlbGV0aW9uLXdhaXRlcic7XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnRGVsZXRlJykge1xuICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBpbnN0YW5jZSB0byBiZSBhdmFpbGFibGU6JywgaW5zdGFuY2VJZCk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFJEU0NsaWVudCh7fSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRVbnRpbERCSW5zdGFuY2VBdmFpbGFibGUoXG4gICAgICAgIHsgY2xpZW50LCBtYXhXYWl0VGltZTogJHt3YWl0ZXJUaW1lb3V0LnRvU2Vjb25kcygpfSwgbWluRGVsYXk6IDEwLCBtYXhEZWxheTogMzAgfSxcbiAgICAgICAgeyBEQkluc3RhbmNlSWRlbnRpZmllcjogaW5zdGFuY2VJZCB9XG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coJ0luc3RhbmNlIGlzIGF2YWlsYWJsZSwgZGVsZXRpb24gY2FuIHByb2NlZWQnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdSZXNvdXJjZU5vdEZvdW5kRXJyb3InIHx8XG4gICAgICAgICAgZXJyb3IubWVzc2FnZT8uaW5jbHVkZXMoJ0RCSW5zdGFuY2VOb3RGb3VuZCcpIHx8XG4gICAgICAgICAgZXJyb3Iuc3RhdGUgPT09ICdGQUlMVVJFJykge1xuICAgICAgICBjb25zb2xlLmxvZygnSW5zdGFuY2Ugbm90IGZvdW5kIG9yIHdhaXRlciBmYWlsZWQsIHByb2NlZWRpbmcgd2l0aCBkZWxldGlvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2FpdGluZyBmb3IgaW5zdGFuY2U6JywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgUGh5c2ljYWxSZXNvdXJjZUlkOiBwaHlzaWNhbFJlc291cmNlSWQgfTtcbn07XG4gICAgICAgIGAsXG4gICAgICAgIGlubGluZVBvbGljeTogW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJyZHM6RGVzY3JpYmVEQkluc3RhbmNlc1wiXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbnN0YW5jZUlkZW50aWZpZXI6IGluc3RhbmNlSWQsXG4gICAgICAgICAgVmVyc2lvbjogXCIxLjAuMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGVsZXRpb25XYWl0ZXIucmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuZGF0YWJhc2UpO1xuXG4gICAgY29uc3QgcmVhZFJlcGxpY2EgPSBuZXcgRGF0YWJhc2VJbnN0YW5jZVJlYWRSZXBsaWNhKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZWFkUmVwbGljYWAsXG4gICAgICB7XG4gICAgICAgIHNvdXJjZURhdGFiYXNlSW5zdGFuY2U6IHRoaXMuZGF0YWJhc2UsXG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NcbiAgICAgICAgfSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFt0aGlzLnJlYWRSZXBsaWNhU2VjdXJpdHlHcm91cF0sXG4gICAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IHRydWUsXG4gICAgICAgIHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZS5HUDMsXG4gICAgICAgIGNhQ2VydGlmaWNhdGU6IENhQ2VydGlmaWNhdGUuUkRTX0NBX1JTQTQwOTZfRzEsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgZGVsZXRlQXV0b21hdGVkQmFja3VwczogZmFsc2UsXG4gICAgICAgIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM6IHBpRW5hYmxlZCxcbiAgICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0RW5jcnlwdGlvbktleTogcmVhZFJlcGxpY2FQZXJmb3JtYW5jZUluc2lnaHRzS2V5LFxuICAgICAgICBwZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb246IHBpRW5hYmxlZFxuICAgICAgICAgID8gdGhpcy5nZXRQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24ocGlDb25maWc/LnJldGVudGlvblBlcmlvZCA/PyA3KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IFJlc291cmNlTmFtaW5nLnJlYWRSZXBsaWNhSWQocHJvcHMuZGF0YWJhc2VOYW1lISksXG4gICAgICAgIGluc3RhbmNlVHlwZTogbmV3IEluc3RhbmNlVHlwZShyZXBsaWNhSW5zdGFuY2VUeXBlKSxcbiAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcmVwbGljYUNvbmZpZy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICBtYXhBbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5tYXhBbGxvY2F0ZWRTdG9yYWdlIHx8IDUwMCxcbiAgICAgICAgbW9uaXRvcmluZ0ludGVydmFsOiBwcm9wcy5tb25pdG9yaW5nSW50ZXJ2YWwgfHwgRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgbXVsdGlBejogcHJvcHMubXVsdGlBeiAhPT0gZmFsc2UsXG4gICAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9wcy5kZWxldGlvblByb3RlY3Rpb24gPz8gdHJ1ZSxcbiAgICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6XG4gICAgICAgICAgcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgfHwgXCJTYXQ6MTI6MzAtU2F0OjIwOjMwXCJcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmVhZFJlcGxpY2Eubm9kZS5hZGREZXBlbmRlbmN5KGRlbGV0aW9uV2FpdGVyLnJlc291cmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uKFxuICAgIGRheXM/OiBudW1iZXJcbiAgKTogUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uIHtcbiAgICBzd2l0Y2ggKGRheXMpIHtcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5ERUZBVUxUO1xuICAgICAgY2FzZSAzMTpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMTtcbiAgICAgIGNhc2UgOTM6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzM7XG4gICAgICBjYXNlIDE4NjpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfNjtcbiAgICAgIGNhc2UgMzcyOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18xMjtcbiAgICAgIGNhc2UgNzMxOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLkxPTkdfVEVSTTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzE7XG4gICAgfVxuICB9XG5cbiAgZ2V0SG9zdEVuZHBvaW50KCkge1xuICAgIGlmICh0aGlzLmRhdGFiYXNlUHJveHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFiYXNlUHJveHkuZW5kcG9pbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmRiSW5zdGFuY2VFbmRwb2ludEFkZHJlc3M7XG4gICAgfVxuICB9XG5cbiAgZ2V0SG9zdFBvcnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMucG9ydCk7XG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBTZWNyZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHM7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoaWQ6IHN0cmluZywgcHJvcHM6IFJkc1Byb3BzKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdQcm9wczogUmRzUHJvcHMgPSB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICAuLi57XG4gICAgICAgICAgdnBjOiAoc2IuZ2V0TmV0d29yaygpIGFzIElWcGMpIHx8IHByb3BzLnZwYyxcbiAgICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBwcm9wcz8uc2VjdXJpdHlHcm91cElkcyA/PyBbXSxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSB8fCBgJHtpZC5yZXBsYWNlKFwiUmRzXCIsIFwiXCIpfWBcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzSW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9yZHNJbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBaUU7QUFDakUsaURBUTZCO0FBQzdCLGlEQWdCNkI7QUFDN0IsdUVBR3dDO0FBQ3hDLHVEQUFpRDtBQUNqRCxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBQ3ZDLGdDQUF1QztBQUN2Qyx3Q0FBd0Q7QUFDeEQsZ0VBQTZEO0FBRTdELDZEQVN3QztBQUN4QyxrRUFBK0Q7QUFDL0Qsc0VBQStEO0FBK0IvRCxNQUFhLFdBQVksU0FBUSxzQkFBUztJQWdCeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFlO1FBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFckIsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSTtZQUN4QyxlQUFlLEVBQUUsVUFBVTtZQUMzQixhQUFhLEVBQUUsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQ3ZDLGVBQWUsRUFBRSw4Q0FBOEM7U0FDaEUsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsMEVBQTBFO1FBQzFFLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLEtBQUssS0FBSyxDQUFDO1FBQzNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxD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QUMsVUFBVSxFQUFXLElBQUksS0FBSyxDQUFDLEdBQUc7b0JBQzNDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsSUFBSSxFQUFFO29CQUMvQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2lCQUMvRDthQUNGLENBQUM7WUFFRixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcGRELGtDQW9kQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25zLFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgSW5zdGFuY2VUeXBlLFxuICB0eXBlIElWcGMsXG4gIFBvcnQsXG4gIHR5cGUgU3VibmV0U2VsZWN0aW9uLFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBDYUNlcnRpZmljYXRlLFxuICBDcmVkZW50aWFscyxcbiAgRGF0YWJhc2VJbnN0YW5jZSxcbiAgRGF0YWJhc2VJbnN0YW5jZUZyb21TbmFwc2hvdCxcbiAgRGF0YWJhc2VJbnN0YW5jZUVuZ2luZSxcbiAgRGF0YWJhc2VJbnN0YW5jZVJlYWRSZXBsaWNhLFxuICBEYXRhYmFzZVByb3h5LFxuICB0eXBlIElEYXRhYmFzZUluc3RhbmNlLFxuICB0eXBlIElJbnN0YW5jZUVuZ2luZSxcbiAgUGFyYW1ldGVyR3JvdXAsXG4gIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbixcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBQcm94eVRhcmdldCxcbiAgU25hcHNob3RDcmVkZW50aWFscyxcbiAgU3RvcmFnZVR5cGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7XG4gIFNlY3JldFJvdGF0aW9uLFxuICBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiLi4vaWFtXCI7XG5pbXBvcnQgeyBDdXN0b21lck1hbmFnZWRLZXksIFNlY3JldCB9IGZyb20gXCIuLi9zZWNyZXRzXCI7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2Jhc2UvYXdzU3RhY2tcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW5naW5lQ29uZmlnLFxuICB0eXBlIFByb3h5Q29uZmlnLFxuICB0eXBlIFJlYWRSZXBsaWNhQ29uZmlnLFxuICB0eXBlIENyZWRlbnRpYWxzQ29uZmlnLFxuICB0eXBlIEVuY3J5cHRpb25Db25maWcsXG4gIHR5cGUgUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyxcbiAgaXNBd3NNYW5hZ2VkS2V5LFxuICBpc0NNS1JlcXVlc3RlZFxufSBmcm9tIFwiLi4vLi4vLi4vcGF0dGVybnMvYXdzL2RhdGFiYXNlXCI7XG5pbXBvcnQgeyBSZXNvdXJjZU5hbWluZyB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXNvdXJjZU5hbWluZ1wiO1xuaW1wb3J0IHsgdG9QYXNjYWxDYXNlIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NhcGl0YWxpc2VTdHJpbmdcIjtcblxuaW50ZXJmYWNlIFJkc1Byb3BzIHtcbiAgdnBjOiBJVnBjO1xuICBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG4gIGVuZ2luZT86IElJbnN0YW5jZUVuZ2luZTtcbiAgZW5naW5lQ29uZmlnPzogRW5naW5lQ29uZmlnO1xuICBpbnN0YW5jZVR5cGU/OiBzdHJpbmc7XG4gIG1heEFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG4gIGFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG4gIGJhY2t1cFJldGVudGlvbj86IER1cmF0aW9uO1xuICBwcmVmZXJyZWRCYWNrdXBXaW5kb3c/OiBzdHJpbmc7XG4gIGNsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nO1xuICBtb25pdG9yaW5nSW50ZXJ2YWw/OiBEdXJhdGlvbjtcbiAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIHBlcmZvcm1hbmNlSW5zaWdodHM/OiBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnIHwgZmFsc2U7XG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXTtcbiAgbXVsdGlBej86IGJvb2xlYW47XG4gIHByb3h5PzogUHJveHlDb25maWcgfCBmYWxzZTtcbiAgcmVhZFJlcGxpY2E/OiBSZWFkUmVwbGljYUNvbmZpZyB8IGZhbHNlO1xuICBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzQ29uZmlnO1xuICBlbmNyeXB0aW9uPzogRW5jcnlwdGlvbkNvbmZpZztcbiAgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbiAgZGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIERCIGluc3RhbmNlIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbSAqL1xuICBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZSBmcm9tIHRoZSBzbmFwc2hvdCAocmVxdWlyZWQgd2hlbiByZXN0b3JpbmcgZnJvbSBzbmFwc2hvdCB0byByZXNldCBwYXNzd29yZCkgKi9cbiAgc25hcHNob3RVc2VybmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJkc0luc3RhbmNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zITogQ29ubmVjdGlvbnM7XG4gIHB1YmxpYyBkYXRhYmFzZVNlY3VyaXR5R3JvdXAhOiBTZWN1cml0eUdyb3VwO1xuICBwdWJsaWMgdnBjITogSVZwYztcblxuICBwcml2YXRlIHBvcnQhOiBudW1iZXI7XG4gIHByaXZhdGUgZW5naW5lQ29uZmlnITogRW5naW5lQ29uZmlnO1xuICBwcml2YXRlIGRhdGFiYXNlQ3JlZGVudGlhbHMhOiBTZWNyZXQ7XG4gIHByaXZhdGUgZGF0YWJhc2UhOiBJRGF0YWJhc2VJbnN0YW5jZTtcbiAgcHJpdmF0ZSBtYXN0ZXJTZWNyZXQ/OiBTZWNyZXQ7XG4gIHByaXZhdGUgZGF0YWJhc2VQcm94eT86IERhdGFiYXNlUHJveHk7XG4gIHByaXZhdGUgZGF0YWJhc2VQcm94eVNlY3VyaXR5R3JvdXA/OiBTZWN1cml0eUdyb3VwO1xuICBwcml2YXRlIHJlYWRSZXBsaWNhU2VjdXJpdHlHcm91cD86IFNlY3VyaXR5R3JvdXA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb25zdHJ1Y3RJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZHNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdElkID0gaWQ7XG4gICAgdGhpcy5wb3J0ID0gcHJvcHMucG9ydCB8fCAzNTI1NTtcbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYztcblxuICAgIC8vIFBvc3RncmVTUUwgZmFsbGJhY2sgZm9yIGRpcmVjdCB1c2FnZSAtIGVuc3VyZSBlbmdpbmUgYW5kIGVuZ2luZUNvbmZpZyBtYXRjaFxuICAgIHRoaXMuZW5naW5lQ29uZmlnID0gcHJvcHMuZW5naW5lQ29uZmlnID8/IHtcbiAgICAgIGRlZmF1bHRVc2VybmFtZTogXCJwb3N0Z3Jlc1wiLFxuICAgICAgc3NsUGFyYW1ldGVyczogeyBcInJkcy5mb3JjZV9zc2xcIjogXCIxXCIgfSxcbiAgICAgIHJvdGF0aW9uQXBwTmFtZTogXCJTZWNyZXRzTWFuYWdlclJEU1Bvc3RncmVTUUxSb3RhdGlvbk11bHRpVXNlclwiXG4gICAgfTtcblxuICAgIHRoaXMuYWRkRGF0YWJhc2UocHJvcHMpO1xuXG4gICAgLy8gU2VjcmV0IHJvdGF0aW9uIGVuYWJsZWQgYnkgZGVmYXVsdCAob3B0LW91dCB3aXRoIHNlY3JldFJvdGF0aW9uOiBmYWxzZSlcbiAgICBjb25zdCBzZWNyZXRSb3RhdGlvbkRpc2FibGVkID0gcHJvcHMuY3JlZGVudGlhbHM/LnNlY3JldFJvdGF0aW9uID09PSBmYWxzZTtcbiAgICBpZiAoIXNlY3JldFJvdGF0aW9uRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucm90YXRlU2VjcmV0KHByb3BzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucHJveHkgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5wcm94eSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWRkUHJveHkocHJvcHMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5yZWFkUmVwbGljYSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLnJlYWRSZXBsaWNhICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5hZGRSZWFkUmVwbGljYShwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRGF0YWJhc2UocHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgLy8gVXNlcm5hbWUgcHJpb3JpdHk6IHNuYXBzaG90VXNlcm5hbWUgPiBjcmVkZW50aWFscy51c2VybmFtZSA+IGVuZ2luZSBkZWZhdWx0XG4gICAgY29uc3QgdXNlcm5hbWUgPVxuICAgICAgcHJvcHMuc25hcHNob3RJZGVudGlmaWVyICYmIHByb3BzLnNuYXBzaG90VXNlcm5hbWVcbiAgICAgICAgPyBwcm9wcy5zbmFwc2hvdFVzZXJuYW1lXG4gICAgICAgIDogKHByb3BzLmNyZWRlbnRpYWxzPy51c2VybmFtZSA/PyB0aGlzLmVuZ2luZUNvbmZpZy5kZWZhdWx0VXNlcm5hbWUpO1xuICAgIHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscyA9IG5ldyBTZWNyZXQoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNyZWRlbnRpYWxzYCxcbiAgICAgIHtcbiAgICAgICAgLy8gVE9ETzogcmV2ZXJ0IHRvIHRoaXMuY29uc3RydWN0SWQgYWZ0ZXIgd2ViYXBwIHJlZGVwbG95ICh0ZW1wIGZpeCB0byBwcmVzZXJ2ZSBleGlzdGluZyBpbnN0YW5jZSBpZGVudGlmaWVycylcbiAgICAgICAgc2VjcmV0TmFtZTogUmVzb3VyY2VOYW1pbmcuY3JlZGVudGlhbHNTZWNyZXROYW1lKHByb3BzLmRhdGFiYXNlTmFtZSEpLFxuICAgICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB1c2VybmFtZVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGV4Y2x1ZGVQdW5jdHVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICBpbmNsdWRlU3BhY2U6IGZhbHNlLFxuICAgICAgICAgIGdlbmVyYXRlU3RyaW5nS2V5OiBcInBhc3N3b3JkXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1TZWN1cml0eUdyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgUkRTIGRhdGFiYXNlIGluc3RhbmNlICR7cHJvcHMuZGF0YWJhc2VOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gU2VsZi1yZWZlcmVuY2luZyBydWxlIGZvciBtdWx0aS1BWiBjb21tdW5pY2F0aW9uXG4gICAgdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHRoaXMucG9ydClcbiAgICApO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7XG4gICAgICBzZWN1cml0eUdyb3VwczogW3RoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwXSxcbiAgICAgIGRlZmF1bHRQb3J0OiBQb3J0LnRjcCh0aGlzLnBvcnQpXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdG9yYWdlRW5jcnlwdGlvbktleSA9IGlzQ01LUmVxdWVzdGVkKHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXkpXG4gICAgICA/IG5ldyBDdXN0b21lck1hbmFnZWRLZXkoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9Q2x1c3RlckVuY3J5cHRpb25LZXlgLFxuICAgICAgICAgIHsgYWxpYXNOYW1lOiBgY21rL3Jkcy8ke3Byb3BzLmRhdGFiYXNlTmFtZX0vZW5jcnlwdGlvbktleWAgfVxuICAgICAgICApLmtleVxuICAgICAgOiBpc0F3c01hbmFnZWRLZXkocHJvcHMuZW5jcnlwdGlvbj8uc3RvcmFnZUtleSkgfHxcbiAgICAgICAgICBwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5ID09PSB1bmRlZmluZWRcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5O1xuXG4gICAgY29uc3QgcGlFbmFibGVkID0gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyAhPT0gZmFsc2U7XG4gICAgY29uc3QgcGlDb25maWcgPVxuICAgICAgcGlFbmFibGVkICYmIHR5cGVvZiBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzID09PSBcIm9iamVjdFwiXG4gICAgICAgID8gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0c1xuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBlcmZvcm1hbmNlSW5zaWdodHNFbmNyeXB0aW9uS2V5ID1cbiAgICAgIHBpRW5hYmxlZCAmJiBpc0NNS1JlcXVlc3RlZChwaUNvbmZpZz8uZW5jcnlwdGlvbktleSlcbiAgICAgICAgPyBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1QZXJmb3JtYW5jZUluc2lnaHRzS2V5YCxcbiAgICAgICAgICAgIHsgYWxpYXNOYW1lOiBgY21rL3Jkcy8ke3Byb3BzLmRhdGFiYXNlTmFtZX0vSW5zaWdodHNLZXlgIH1cbiAgICAgICAgICApLmtleVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb24gPSBwaUVuYWJsZWRcbiAgICAgID8gdGhpcy5nZXRQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24ocGlDb25maWc/LnJldGVudGlvblBlcmlvZCA/PyA3KVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBlbmdpbmUgPVxuICAgICAgcHJvcHMuZW5naW5lIHx8XG4gICAgICBEYXRhYmFzZUluc3RhbmNlRW5naW5lLnBvc3RncmVzKHtcbiAgICAgICAgdmVyc2lvbjogUG9zdGdyZXNFbmdpbmVWZXJzaW9uLlZFUl8xN181XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHBhcmFtZXRlckdyb3VwID0gbmV3IFBhcmFtZXRlckdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1QYXJhbWV0ZXJHcm91cGAsXG4gICAgICB7XG4gICAgICAgIGVuZ2luZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBQYXJhbWV0ZXIgZ3JvdXAgZm9yICR7cHJvcHMuZGF0YWJhc2VOYW1lfSB3aXRoIHNlY3VyaXR5IGRlZmF1bHRzYCxcbiAgICAgICAgcGFyYW1ldGVyczogdGhpcy5lbmdpbmVDb25maWcuc3NsUGFyYW1ldGVyc1xuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBVc2UgUFVCTElDIHN1Ym5ldCBmb3IgcHVibGljbHlBY2Nlc3NpYmxlIGRhdGFiYXNlcyAoZS5nLiwgdGlua2VyZXIgdGllciB3aXRob3V0IE5BVClcbiAgICBjb25zdCBzdWJuZXRUeXBlID0gcHJvcHMucHVibGljbHlBY2Nlc3NpYmxlXG4gICAgICA/IFN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICA6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcblxuICAgIGNvbnN0IGNvbW1vbkluc3RhbmNlUHJvcHMgPSB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICBzdWJuZXRUeXBlXG4gICAgICB9LFxuICAgICAgc2VjdXJpdHlHcm91cHM6IFt0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cF0sXG4gICAgICBlbmdpbmUsXG4gICAgICBwYXJhbWV0ZXJHcm91cCxcbiAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgICBiYWNrdXBSZXRlbnRpb246IHByb3BzLmJhY2t1cFJldGVudGlvbiB8fCBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHByZWZlcnJlZEJhY2t1cFdpbmRvdzogcHJvcHMucHJlZmVycmVkQmFja3VwV2luZG93IHx8IFwiMDI6MDAtMDM6MDBcIixcbiAgICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IHRydWUsXG4gICAgICBzdG9yYWdlRW5jcnlwdGlvbktleSxcbiAgICAgIHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZS5HUDMsXG4gICAgICBjYUNlcnRpZmljYXRlOiBDYUNlcnRpZmljYXRlLlJEU19DQV9SU0E0MDk2X0cxLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5TTkFQU0hPVCxcbiAgICAgIGRlbGV0ZUF1dG9tYXRlZEJhY2t1cHM6IGZhbHNlLFxuICAgICAgZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0czogcGlFbmFibGVkLFxuICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0RW5jcnlwdGlvbktleTogcGVyZm9ybWFuY2VJbnNpZ2h0c0VuY3J5cHRpb25LZXksXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb246IHBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb24sXG4gICAgICAvLyBUT0RPOiByZXZlcnQgdG8gdGhpcy5jb25zdHJ1Y3RJZCBhZnRlciB3ZWJhcHAgcmVkZXBsb3kgKHRlbXAgZml4IHRvIHByZXNlcnZlIGV4aXN0aW5nIGluc3RhbmNlIGlkZW50aWZpZXJzKVxuICAgICAgaW5zdGFuY2VJZGVudGlmaWVyOiBSZXNvdXJjZU5hbWluZy5kYkluc3RhbmNlSWQocHJvcHMuZGF0YWJhc2VOYW1lISksXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZVxuICAgICAgICA/IG5ldyBJbnN0YW5jZVR5cGUocHJvcHMuaW5zdGFuY2VUeXBlKVxuICAgICAgICA6IG5ldyBJbnN0YW5jZVR5cGUoXCJ0NGcubGFyZ2VcIiksXG4gICAgICBtYXhBbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5tYXhBbGxvY2F0ZWRTdG9yYWdlIHx8IDUwMCxcbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsIHx8IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBtdWx0aUF6OiBwcm9wcy5tdWx0aUF6ICE9PSBmYWxzZSxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uID8/IHRydWUsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzpcbiAgICAgICAgcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgfHwgXCJTYXQ6MTI6MzAtU2F0OjIwOjMwXCIsXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZSA/PyBmYWxzZVxuICAgIH07XG5cbiAgICBpZiAocHJvcHMuc25hcHNob3RJZGVudGlmaWVyKSB7XG4gICAgICAvLyBDcmVhdGUgZnJvbSBzbmFwc2hvdFxuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBEYXRhYmFzZUluc3RhbmNlRnJvbVNuYXBzaG90KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGF0YWJhc2VgLFxuICAgICAgICB7XG4gICAgICAgICAgLi4uY29tbW9uSW5zdGFuY2VQcm9wcyxcbiAgICAgICAgICBzbmFwc2hvdElkZW50aWZpZXI6IHByb3BzLnNuYXBzaG90SWRlbnRpZmllcixcbiAgICAgICAgICAvLyBGb3Igc25hcHNob3RzLCBjcmVkZW50aWFscyBhcmUgdXNlZCB0byByZXNldCB0aGUgcGFzc3dvcmRcbiAgICAgICAgICBjcmVkZW50aWFsczogU25hcHNob3RDcmVkZW50aWFscy5mcm9tU2VjcmV0KFxuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBpbnN0YW5jZVxuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBEYXRhYmFzZUluc3RhbmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGF0YWJhc2VgLFxuICAgICAgICB7XG4gICAgICAgICAgLi4uY29tbW9uSW5zdGFuY2VQcm9wcyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMuZnJvbVNlY3JldCh0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0KVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJvdGF0ZVNlY3JldChwcm9wczogUmRzUHJvcHMpIHtcbiAgICBjb25zdCByb3RhdGlvbkNvbmZpZyA9IHByb3BzLmNyZWRlbnRpYWxzPy5zZWNyZXRSb3RhdGlvbjtcbiAgICBjb25zdCByb3RhdGlvblBlcmlvZCA9XG4gICAgICAodHlwZW9mIHJvdGF0aW9uQ29uZmlnID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIHJvdGF0aW9uQ29uZmlnPy5hdXRvbWF0aWNhbGx5QWZ0ZXIpIHx8XG4gICAgICBEdXJhdGlvbi5kYXlzKDMwKTtcblxuICAgIHRoaXMubWFzdGVyU2VjcmV0ID0gbmV3IFNlY3JldCh0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9TWFzdGVyU2VjcmV0YCwge1xuICAgICAgLy8gVE9ETzogcmV2ZXJ0IHRvIHRoaXMuY29uc3RydWN0SWQgYWZ0ZXIgd2ViYXBwIHJlZGVwbG95ICh0ZW1wIGZpeCB0byBwcmVzZXJ2ZSBleGlzdGluZyBpbnN0YW5jZSBpZGVudGlmaWVycylcbiAgICAgIHNlY3JldE5hbWU6IFJlc291cmNlTmFtaW5nLm1hc3RlclNlY3JldE5hbWUocHJvcHMuZGF0YWJhc2VOYW1lISlcbiAgICB9KTtcblxuICAgIG5ldyBTZWNyZXRSb3RhdGlvbih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9U2VjcmV0Um90YXRpb25gLCB7XG4gICAgICBhcHBsaWNhdGlvbjogbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oXG4gICAgICAgIHRoaXMuZW5naW5lQ29uZmlnLnJvdGF0aW9uQXBwTmFtZSxcbiAgICAgICAgXCIxLjEuMzY3XCIsXG4gICAgICAgIHsgaXNNdWx0aVVzZXI6IHRydWUgfVxuICAgICAgKSxcbiAgICAgIHNlY3JldDogdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldCxcbiAgICAgIG1hc3RlclNlY3JldDogdGhpcy5tYXN0ZXJTZWNyZXQuc2VjcmV0LFxuICAgICAgdGFyZ2V0OiB0aGlzLmRhdGFiYXNlLFxuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGF1dG9tYXRpY2FsbHlBZnRlcjogcm90YXRpb25QZXJpb2RcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFByb3h5KHByb3BzOiBSZHNQcm9wcykge1xuICAgIGlmICghcHJvcHMucHJveHkpIHJldHVybjtcbiAgICBjb25zdCBwcm94eUNvbmZpZyA9IHByb3BzLnByb3h5O1xuICAgIGNvbnN0IHZwY1N1Ym5ldHM6IFN1Ym5ldFNlbGVjdGlvbiA9IHByb3h5Q29uZmlnLnZwY1N1Ym5ldHMgPz8ge1xuICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgfTtcblxuICAgIHRoaXMuZGF0YWJhc2VQcm94eVNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlTZWN1cml0eUdyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgUkRTIFByb3h5IGZvciAke3Byb3BzLmRhdGFiYXNlTmFtZX1gXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEFsbG93IHByb3h5IHRvIGNvbm5lY3QgdG8gZGF0YWJhc2VcbiAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShcbiAgICAgIHRoaXMuZGF0YWJhc2VQcm94eVNlY3VyaXR5R3JvdXAsXG4gICAgICBQb3J0LnRjcCh0aGlzLnBvcnQpLFxuICAgICAgXCJBbGxvdyBSRFMgUHJveHkgdG8gY29ubmVjdCB0byBkYXRhYmFzZVwiXG4gICAgKTtcblxuICAgIHRoaXMuZGF0YWJhc2VQcm94eSA9IG5ldyBEYXRhYmFzZVByb3h5KFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1EYXRhYmFzZVByb3h5YCxcbiAgICAgIHtcbiAgICAgICAgLy8gVE9ETzogcmV2ZXJ0IHRvIHRoaXMuY29uc3RydWN0SWQgYWZ0ZXIgd2ViYXBwIHJlZGVwbG95ICh0ZW1wIGZpeCB0byBwcmVzZXJ2ZSBleGlzdGluZyBpbnN0YW5jZSBpZGVudGlmaWVycylcbiAgICAgICAgZGJQcm94eU5hbWU6IFJlc291cmNlTmFtaW5nLnByb3h5TmFtZShwcm9wcy5kYXRhYmFzZU5hbWUhKSxcbiAgICAgICAgcHJveHlUYXJnZXQ6IFByb3h5VGFyZ2V0LmZyb21JbnN0YW5jZSh0aGlzLmRhdGFiYXNlKSxcbiAgICAgICAgc2VjcmV0czogW3RoaXMuZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXRdLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogW3RoaXMuZGF0YWJhc2VQcm94eVNlY3VyaXR5R3JvdXBdLFxuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICB2cGNTdWJuZXRzLFxuICAgICAgICByZXF1aXJlVExTOiBwcm94eUNvbmZpZy5yZXF1aXJlVExTID8/IHRydWUsXG4gICAgICAgIGJvcnJvd1RpbWVvdXQ6IHByb3h5Q29uZmlnLmNvbm5lY3Rpb25Cb3Jyb3dUaW1lb3V0XG4gICAgICAgICAgPyBEdXJhdGlvbi5zZWNvbmRzKHByb3h5Q29uZmlnLmNvbm5lY3Rpb25Cb3Jyb3dUaW1lb3V0KVxuICAgICAgICAgIDogRHVyYXRpb24uc2Vjb25kcygxMjApLFxuICAgICAgICBtYXhDb25uZWN0aW9uc1BlcmNlbnQ6IHByb3h5Q29uZmlnLm1heENvbm5lY3Rpb25zLFxuICAgICAgICBtYXhJZGxlQ29ubmVjdGlvbnNQZXJjZW50OiBwcm94eUNvbmZpZy5tYXhJZGxlQ29ubmVjdGlvbnNcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3Qgb3V0cHV0TmFtZSA9IHRvUGFzY2FsQ2FzZShwcm9wcy5kYXRhYmFzZU5hbWUgfHwgdGhpcy5jb25zdHJ1Y3RJZCk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtvdXRwdXROYW1lfVByb3h5RW5kcG9pbnRPdXRwdXRgLCB7XG4gICAgICBrZXk6IGAke291dHB1dE5hbWV9UHJveHlFbmRwb2ludGAsXG4gICAgICBleHBvcnROYW1lOiBgJHtvdXRwdXROYW1lfVByb3h5RW5kcG9pbnRgLFxuICAgICAgdmFsdWU6IHRoaXMuZGF0YWJhc2VQcm94eS5lbmRwb2ludFxuICAgIH0pO1xuICB9XG5cbiAgYWRkUmVhZFJlcGxpY2EocHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgaWYgKCFwcm9wcy5yZWFkUmVwbGljYSkgcmV0dXJuO1xuICAgIGNvbnN0IHJlcGxpY2FDb25maWcgPSBwcm9wcy5yZWFkUmVwbGljYTtcbiAgICBjb25zdCByZXBsaWNhSW5zdGFuY2VUeXBlID1cbiAgICAgIHJlcGxpY2FDb25maWcuaW5zdGFuY2VUeXBlID8/IHByb3BzLmluc3RhbmNlVHlwZSA/PyBcInQ0Zy5sYXJnZVwiO1xuXG4gICAgY29uc3QgcGlFbmFibGVkID0gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyAhPT0gZmFsc2U7XG4gICAgY29uc3QgcGlDb25maWcgPVxuICAgICAgcGlFbmFibGVkICYmIHR5cGVvZiBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzID09PSBcIm9iamVjdFwiXG4gICAgICAgID8gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0c1xuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJlYWRSZXBsaWNhUGVyZm9ybWFuY2VJbnNpZ2h0c0tleSA9XG4gICAgICBwaUVuYWJsZWQgJiYgaXNDTUtSZXF1ZXN0ZWQocGlDb25maWc/LmVuY3J5cHRpb25LZXkpXG4gICAgICAgID8gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmVhZFJlcGxpY2FSZWFkZXJJbnNpZ2h0c0tleWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kYXRhYmFzZU5hbWV9L1JlYWRSZXBsaWNhSW5zaWdodHNLZXlgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKS5rZXlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnJlYWRSZXBsaWNhU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZWFkUmVwbGljYVNlY3VyaXR5R3JvdXBgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciBSRFMgcmVhZCByZXBsaWNhIG9mICR7cHJvcHMuZGF0YWJhc2VOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gQWxsb3cgcHJpbWFyeSBkYXRhYmFzZSB0byByZXBsaWNhdGUgdG8gcmVhZCByZXBsaWNhXG4gICAgdGhpcy5yZWFkUmVwbGljYVNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHRoaXMucG9ydCksXG4gICAgICBcIkFsbG93IHByaW1hcnkgZGF0YWJhc2UgdG8gcmVwbGljYXRlIHRvIHJlYWQgcmVwbGljYVwiXG4gICAgKTtcblxuICAgIC8vIERlbGV0aW9uIHdhaXRlciBlbnN1cmVzIHByaW1hcnkgaXMgXCJhdmFpbGFibGVcIiBiZWZvcmUgQ2xvdWRGb3JtYXRpb24gZGVsZXRlcyBpdC5cbiAgICAvLyBXaGVuIHRoZSByZWFkIHJlcGxpY2EgaXMgZGVsZXRlZCwgdGhlIHByaW1hcnkgZW50ZXJzIFwibW9kaWZ5aW5nXCIgc3RhdGUuXG4gICAgLy8gV2l0aG91dCB0aGlzIHdhaXRlciwgdGhlIGZpbmFsIHNuYXBzaG90IGNyZWF0aW9uIGZhaWxzLlxuICAgIC8vIFRPRE86IHJldmVydCB0byB0aGlzLmNvbnN0cnVjdElkIGFmdGVyIHdlYmFwcCByZWRlcGxveSAodGVtcCBmaXggdG8gcHJlc2VydmUgZXhpc3RpbmcgaW5zdGFuY2UgaWRlbnRpZmllcnMpXG4gICAgY29uc3QgaW5zdGFuY2VJZCA9IFJlc291cmNlTmFtaW5nLmRiSW5zdGFuY2VJZChwcm9wcy5kYXRhYmFzZU5hbWUhKTtcbiAgICBjb25zdCB3YWl0ZXJUaW1lb3V0ID0gRHVyYXRpb24ubWludXRlcygxMCk7XG4gICAgY29uc3QgZGVsZXRpb25XYWl0ZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfURlbGV0aW9uV2FpdGVyYCxcbiAgICAgIHtcbiAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjJfWCxcbiAgICAgICAgdGltZW91dDogd2FpdGVyVGltZW91dC5wbHVzKER1cmF0aW9uLnNlY29uZHMoMzApKSxcbiAgICAgICAgbGFtYmRhRGVzY3JpcHRpb246IGAke3Byb3BzLmRhdGFiYXNlTmFtZX0gZGVsZXRpb24gd2FpdGVyYCxcbiAgICAgICAgaW5saW5lQ29kZTogYFxuY29uc3QgeyBSRFNDbGllbnQgfSA9IHJlcXVpcmUoJ0Bhd3Mtc2RrL2NsaWVudC1yZHMnKTtcbmNvbnN0IHsgd2FpdFVudGlsREJJbnN0YW5jZUF2YWlsYWJsZSB9ID0gcmVxdWlyZSgnQGF3cy1zZGsvY2xpZW50LXJkcycpO1xuXG5leHBvcnRzLmhhbmRsZXIgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgY29uc29sZS5sb2coJ0V2ZW50OicsIEpTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKSk7XG4gIGNvbnN0IGluc3RhbmNlSWQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuSW5zdGFuY2VJZGVudGlmaWVyO1xuICBjb25zdCBwaHlzaWNhbFJlc291cmNlSWQgPSBldmVudC5QaHlzaWNhbFJlc291cmNlSWQgfHwgZXZlbnQuTG9naWNhbFJlc291cmNlSWQgfHwgJ3Jkcy1kZWxldGlvbi13YWl0ZXInO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScpIHtcbiAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgaW5zdGFuY2UgdG8gYmUgYXZhaWxhYmxlOicsIGluc3RhbmNlSWQpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBSRFNDbGllbnQoe30pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0VW50aWxEQkluc3RhbmNlQXZhaWxhYmxlKFxuICAgICAgICB7IGNsaWVudCwgbWF4V2FpdFRpbWU6ICR7d2FpdGVyVGltZW91dC50b1NlY29uZHMoKX0sIG1pbkRlbGF5OiAxMCwgbWF4RGVsYXk6IDMwIH0sXG4gICAgICAgIHsgREJJbnN0YW5jZUlkZW50aWZpZXI6IGluc3RhbmNlSWQgfVxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKCdJbnN0YW5jZSBpcyBhdmFpbGFibGUsIGRlbGV0aW9uIGNhbiBwcm9jZWVkJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5uYW1lID09PSAnUmVzb3VyY2VOb3RGb3VuZEVycm9yJyB8fFxuICAgICAgICAgIGVycm9yLm1lc3NhZ2U/LmluY2x1ZGVzKCdEQkluc3RhbmNlTm90Rm91bmQnKSB8fFxuICAgICAgICAgIGVycm9yLnN0YXRlID09PSAnRkFJTFVSRScpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0luc3RhbmNlIG5vdCBmb3VuZCBvciB3YWl0ZXIgZmFpbGVkLCBwcm9jZWVkaW5nIHdpdGggZGVsZXRpb24nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdhaXRpbmcgZm9yIGluc3RhbmNlOicsIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7IFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkIH07XG59O1xuICAgICAgICBgLFxuICAgICAgICBpbmxpbmVQb2xpY3k6IFtcbiAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgYWN0aW9uczogW1wicmRzOkRlc2NyaWJlREJJbnN0YW5jZXNcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICB9KVxuICAgICAgICBdLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgSW5zdGFuY2VJZGVudGlmaWVyOiBpbnN0YW5jZUlkLFxuICAgICAgICAgIFZlcnNpb246IFwiMS4wLjBcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGRlbGV0aW9uV2FpdGVyLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmRhdGFiYXNlKTtcblxuICAgIGNvbnN0IHJlYWRSZXBsaWNhID0gbmV3IERhdGFiYXNlSW5zdGFuY2VSZWFkUmVwbGljYShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmVhZFJlcGxpY2FgLFxuICAgICAge1xuICAgICAgICBzb3VyY2VEYXRhYmFzZUluc3RhbmNlOiB0aGlzLmRhdGFiYXNlLFxuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgICAgIH0sXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpcy5yZWFkUmVwbGljYVNlY3VyaXR5R3JvdXBdLFxuICAgICAgICBhbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5hbGxvY2F0ZWRTdG9yYWdlLFxuICAgICAgICBzdG9yYWdlRW5jcnlwdGVkOiB0cnVlLFxuICAgICAgICBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUuR1AzLFxuICAgICAgICBjYUNlcnRpZmljYXRlOiBDYUNlcnRpZmljYXRlLlJEU19DQV9SU0E0MDk2X0cxLFxuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgIGRlbGV0ZUF1dG9tYXRlZEJhY2t1cHM6IGZhbHNlLFxuICAgICAgICBlbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzOiBwaUVuYWJsZWQsXG4gICAgICAgIHBlcmZvcm1hbmNlSW5zaWdodEVuY3J5cHRpb25LZXk6IHJlYWRSZXBsaWNhUGVyZm9ybWFuY2VJbnNpZ2h0c0tleSxcbiAgICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uOiBwaUVuYWJsZWRcbiAgICAgICAgICA/IHRoaXMuZ2V0UGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uKHBpQ29uZmlnPy5yZXRlbnRpb25QZXJpb2QgPz8gNylcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgLy8gVE9ETzogcmV2ZXJ0IHRvIHRoaXMuY29uc3RydWN0SWQgYWZ0ZXIgd2ViYXBwIHJlZGVwbG95ICh0ZW1wIGZpeCB0byBwcmVzZXJ2ZSBleGlzdGluZyBpbnN0YW5jZSBpZGVudGlmaWVycylcbiAgICAgICAgaW5zdGFuY2VJZGVudGlmaWVyOiBSZXNvdXJjZU5hbWluZy5yZWFkUmVwbGljYUlkKHByb3BzLmRhdGFiYXNlTmFtZSEpLFxuICAgICAgICBpbnN0YW5jZVR5cGU6IG5ldyBJbnN0YW5jZVR5cGUocmVwbGljYUluc3RhbmNlVHlwZSksXG4gICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHJlcGxpY2FDb25maWcuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgbWF4QWxsb2NhdGVkU3RvcmFnZTogcHJvcHMubWF4QWxsb2NhdGVkU3RvcmFnZSB8fCA1MDAsXG4gICAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsIHx8IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgIG11bHRpQXo6IHByb3BzLm11bHRpQXogIT09IGZhbHNlLFxuICAgICAgICBwb3J0OiB0aGlzLnBvcnQsXG4gICAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uID8/IHRydWUsXG4gICAgICAgIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93OlxuICAgICAgICAgIHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93IHx8IFwiU2F0OjEyOjMwLVNhdDoyMDozMFwiXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJlYWRSZXBsaWNhLm5vZGUuYWRkRGVwZW5kZW5jeShkZWxldGlvbldhaXRlci5yZXNvdXJjZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbihcbiAgICBkYXlzPzogbnVtYmVyXG4gICk6IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbiB7XG4gICAgc3dpdGNoIChkYXlzKSB7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uREVGQVVMVDtcbiAgICAgIGNhc2UgMzE6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzE7XG4gICAgICBjYXNlIDkzOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18zO1xuICAgICAgY2FzZSAxODY6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzY7XG4gICAgICBjYXNlIDM3MjpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMTI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18xO1xuICAgIH1cbiAgfVxuXG4gIGdldEhvc3RFbmRwb2ludCgpIHtcbiAgICBpZiAodGhpcy5kYXRhYmFzZVByb3h5KSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhYmFzZVByb3h5LmVuZHBvaW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5kYkluc3RhbmNlRW5kcG9pbnRBZGRyZXNzO1xuICAgIH1cbiAgfVxuXG4gIGdldEhvc3RQb3J0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLnBvcnQpO1xuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogU2VjcmV0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzOiBSZHNQcm9wcyk6IChzYjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3Qge1xuICAgIHJldHVybiAoc2I6IFN0YWNrQnVpbGRlcikgPT4ge1xuICAgICAgY29uc3QgbmV3UHJvcHM6IFJkc1Byb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBJVnBjKSB8fCBwcm9wcy52cGMsXG4gICAgICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHM/LnNlY3VyaXR5R3JvdXBJZHMgPz8gW10sXG4gICAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUgfHwgYCR7aWQucmVwbGFjZShcIlJkc1wiLCBcIlwiKX1gXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBuZXcgdGhpcyhzYi5nZXRTdGFjaygpLCBpZCwgbmV3UHJvcHMpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -9,7 +9,6 @@ class Assignment extends constructs_1.Construct {
|
|
|
9
9
|
super(scope, id);
|
|
10
10
|
const physicalId = `assignment${props.permissionSetArn}to${props.principalId}`;
|
|
11
11
|
const _assignment = new awsCustomResource_1.AwsCustomResource(this, `assignment`, {
|
|
12
|
-
functionName: physicalId,
|
|
13
12
|
onCreate: {
|
|
14
13
|
service: "sso-admin",
|
|
15
14
|
action: "CreateAccountAssignment", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/CreateAccountAssignmentCommand
|
|
@@ -54,4 +53,4 @@ class Assignment extends constructs_1.Construct {
|
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
exports.Assignment = Assignment;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9hc3NpZ25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxnRUFBZ0U7QUFDaEUseUVBQXNFO0FBR3RFLE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBQ3ZDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBUUM7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sVUFBVSxHQUFHLGFBQWEsS0FBSyxDQUFDLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUvRSxNQUFNLFdBQVcsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDNUQsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixNQUFNLEVBQUUseUJBQXlCLEVBQUUsaUhBQWlIO2dCQUNwSixVQUFVLEVBQUU7b0JBQ1YsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7b0JBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtvQkFDNUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtvQkFDeEMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO29CQUNsQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7aUJBQy9CO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDO2FBQ3RFO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixNQUFNLEVBQUUseUJBQXlCLEVBQUUsaUhBQWlIO2dCQUNwSixVQUFVLEVBQUU7b0JBQ1YsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7b0JBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtvQkFDNUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtvQkFDeEMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO29CQUNsQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7aUJBQy9CO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQztnQkFDM0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2FBQ2pCLENBQUM7WUFDRiwyRkFBMkY7WUFDM0Ysb0JBQW9CO1lBQ3BCLG1FQUFtRTtZQUNuRSwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLHVDQUF1QztZQUN2QyxzQ0FBc0M7WUFDdEMsU0FBUztZQUNULHVCQUF1QjtZQUN2QixPQUFPO1lBQ1AsTUFBTTtZQUNOLFlBQVksRUFBRSw4QkFBOEI7U0FDN0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN0RELGdDQTZEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgdHlwZSBSb2xlIH0gZnJvbSBcIi4uXCI7XG5cbmV4cG9ydCBjbGFzcyBBc3NpZ25tZW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiB7XG4gICAgICBpbnN0YW5jZUFybjogc3RyaW5nO1xuICAgICAgcGVybWlzc2lvblNldEFybjogc3RyaW5nO1xuICAgICAgcHJpbmNpcGFsVHlwZTogc3RyaW5nO1xuICAgICAgcHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgICAgIHRhcmdldFR5cGU6IHN0cmluZztcbiAgICAgIHRhcmdldElkOiBzdHJpbmc7XG4gICAgICByb2xlOiBSb2xlO1xuICAgIH1cbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHBoeXNpY2FsSWQgPSBgYXNzaWdubWVudCR7cHJvcHMucGVybWlzc2lvblNldEFybn10byR7cHJvcHMucHJpbmNpcGFsSWR9YDtcblxuICAgIGNvbnN0IF9hc3NpZ25tZW50ID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGBhc3NpZ25tZW50YCwge1xuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgYWN0aW9uOiBcIkNyZWF0ZUFjY291bnRBc3NpZ25tZW50XCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL3YzL2xhdGVzdC9jbGllbnQvc3NvLWFkbWluL2NvbW1hbmQvQ3JlYXRlQWNjb3VudEFzc2lnbm1lbnRDb21tYW5kXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBJbnN0YW5jZUFybjogcHJvcHMuaW5zdGFuY2VBcm4sXG4gICAgICAgICAgVGFyZ2V0SWQ6IHByb3BzLnRhcmdldElkLFxuICAgICAgICAgIFRhcmdldFR5cGU6IHByb3BzLnRhcmdldFR5cGUsXG4gICAgICAgICAgUGVybWlzc2lvblNldEFybjogcHJvcHMucGVybWlzc2lvblNldEFybixcbiAgICAgICAgICBQcmluY2lwYWxUeXBlOiBwcm9wcy5wcmluY2lwYWxUeXBlLFxuICAgICAgICAgIFByaW5jaXBhbElkOiBwcm9wcy5wcmluY2lwYWxJZFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YocGh5c2ljYWxJZClcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcInNzby1hZG1pblwiLFxuICAgICAgICBhY3Rpb246IFwiRGVsZXRlQWNjb3VudEFzc2lnbm1lbnRcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9zc28tYWRtaW4vY29tbWFuZC9EZWxldGVBY2NvdW50QXNzaWdubWVudENvbW1hbmRcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEluc3RhbmNlQXJuOiBwcm9wcy5pbnN0YW5jZUFybixcbiAgICAgICAgICBUYXJnZXRJZDogcHJvcHMudGFyZ2V0SWQsXG4gICAgICAgICAgVGFyZ2V0VHlwZTogcHJvcHMudGFyZ2V0VHlwZSxcbiAgICAgICAgICBQZXJtaXNzaW9uU2V0QXJuOiBwcm9wcy5wZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgICAgIFByaW5jaXBhbFR5cGU6IHByb3BzLnByaW5jaXBhbFR5cGUsXG4gICAgICAgICAgUHJpbmNpcGFsSWQ6IHByb3BzLnByaW5jaXBhbElkXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIH0pLFxuICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgLy8gcm9sZTogcHJvcHMucm9sZSxcbiAgICAgIC8vIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAvLyAgICAgYWN0aW9uczogW1xuICAgICAgLy8gICAgICAgXCJzc286Q3JlYXRlQWNjb3VudEFzc2lnbm1lbnRcIixcbiAgICAgIC8vICAgICAgIFwic3NvOkRlbGV0ZUFjY291bnRBc3NpZ25tZW50XCJcbiAgICAgIC8vICAgICBdLFxuICAgICAgLy8gICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgLy8gICB9KVxuICAgICAgLy8gXSksXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpTU09BY2NvdW50QXNzaWdubWVudFwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -8,7 +8,6 @@ class AttachManagedPolicy extends constructs_1.Construct {
|
|
|
8
8
|
constructor(scope, id, props) {
|
|
9
9
|
super(scope, id);
|
|
10
10
|
new awsCustomResource_1.AwsCustomResource(this, "attachManagedPolicy", {
|
|
11
|
-
functionName: `attachPolicyToPermissionSet${props.permissionSet}`,
|
|
12
11
|
onCreate: {
|
|
13
12
|
service: "sso-admin",
|
|
14
13
|
action: "AttachManagedPolicyToPermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/AttachManagedPolicyToPermissionSetCommand
|
|
@@ -49,4 +48,4 @@ class AttachManagedPolicy extends constructs_1.Construct {
|
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
50
|
exports.AttachManagedPolicy = AttachManagedPolicy;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoTWFuYWdlZFBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9hdHRhY2hNYW5hZ2VkUG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxnRUFBZ0U7QUFDaEUseUVBQXNFO0FBV3RFLE1BQWEsbUJBQW9CLFNBQVEsc0JBQVM7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ2pELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLG9DQUFvQyxFQUFFLDRIQUE0SDtnQkFDMUssVUFBVSxFQUFFO29CQUNWLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtvQkFDeEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtpQkFDekM7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQscUNBQXFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FDM0Q7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLHNDQUFzQyxFQUFFLCtIQUErSDtnQkFDL0ssVUFBVSxFQUFFO29CQUNWLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtvQkFDeEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtpQkFDekM7YUFDRjtZQUNELE1BQU0sRUFBRSxlQUFlLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDO2dCQUMzRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDakIsQ0FBQztZQUNGLDJGQUEyRjtZQUMzRixvQkFBb0I7WUFDcEIsbUVBQW1FO1lBQ25FLDBCQUEwQjtZQUMxQixpQkFBaUI7WUFDakIsc0NBQXNDO1lBQ3RDLGtEQUFrRDtZQUNsRCxvREFBb0Q7WUFDcEQsMEJBQTBCO1lBQzFCLFNBQVM7WUFDVCx1QkFBdUI7WUFDdkIsT0FBTztZQUNQLE1BQU07WUFDTixZQUFZLEVBQUUsdUJBQXVCO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTdDRCxrREE2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgUm9sZSB9IGZyb20gXCIuLlwiO1xuXG5pbnRlcmZhY2UgQXR0YWNoTWFuYWdlZFBvbGljeVByb3BzIHtcbiAgaW5zdGFuY2VBcm46IHN0cmluZztcbiAgcGVybWlzc2lvblNldDogc3RyaW5nO1xuICBwZXJtaXNzaW9uU2V0QXJuOiBzdHJpbmc7XG4gIG1hbmFnZWRQb2xpY3lBcm46IHN0cmluZztcbiAgcm9sZTogUm9sZTtcbn1cblxuZXhwb3J0IGNsYXNzIEF0dGFjaE1hbmFnZWRQb2xpY3kgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXR0YWNoTWFuYWdlZFBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcImF0dGFjaE1hbmFnZWRQb2xpY3lcIiwge1xuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgYWN0aW9uOiBcIkF0dGFjaE1hbmFnZWRQb2xpY3lUb1Blcm1pc3Npb25TZXRcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9zc28tYWRtaW4vY29tbWFuZC9BdHRhY2hNYW5hZ2VkUG9saWN5VG9QZXJtaXNzaW9uU2V0Q29tbWFuZFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICAgIFBlcm1pc3Npb25TZXRBcm46IHByb3BzLnBlcm1pc3Npb25TZXRBcm4sXG4gICAgICAgICAgTWFuYWdlZFBvbGljeUFybjogcHJvcHMubWFuYWdlZFBvbGljeUFyblxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYGF0dGFjaE1hbmFnZWRQb2xpY3lUb1Blcm1pc3Npb25TZXQke3Byb3BzLnBlcm1pc3Npb25TZXR9YFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgYWN0aW9uOiBcIkRldGFjaE1hbmFnZWRQb2xpY3lGcm9tUGVybWlzc2lvblNldFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L3Nzby1hZG1pbi9jb21tYW5kL0RldGFjaE1hbmFnZWRQb2xpY3lGcm9tUGVybWlzc2lvblNldENvbW1hbmQvXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBJbnN0YW5jZUFybjogcHJvcHMuaW5zdGFuY2VBcm4sXG4gICAgICAgICAgUGVybWlzc2lvblNldEFybjogcHJvcHMucGVybWlzc2lvblNldEFybixcbiAgICAgICAgICBNYW5hZ2VkUG9saWN5QXJuOiBwcm9wcy5tYW5hZ2VkUG9saWN5QXJuXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIH0pLFxuICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgLy8gcm9sZTogcHJvcHMucm9sZSxcbiAgICAgIC8vIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAvLyAgICAgYWN0aW9uczogW1xuICAgICAgLy8gICAgICAgXCJzc286UHJvdmlzaW9uUGVybWlzc2lvblNldFwiLFxuICAgICAgLy8gICAgICAgXCJzc286QXR0YWNoTWFuYWdlZFBvbGljeVRvUGVybWlzc2lvblNldFwiLFxuICAgICAgLy8gICAgICAgXCJzc286RGV0YWNoTWFuYWdlZFBvbGljeUZyb21QZXJtaXNzaW9uU2V0XCIsXG4gICAgICAvLyAgICAgICBcInNzbzpUYWdSZXNvdXJjZVwiXG4gICAgICAvLyAgICAgXSxcbiAgICAgIC8vICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIC8vICAgfSlcbiAgICAgIC8vIF0pLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UGVybWlzc2lvblNldFwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|