aws-cdk 2.8.0 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +1 -1
- package/README.md +1 -1
- package/build-info.json +2 -2
- package/lib/api/cloudformation-deployments.d.ts +8 -5
- package/lib/api/cloudformation-deployments.js +100 -42
- package/lib/api/hotswap/lambda-functions.js +115 -14
- package/lib/api/hotswap-deployments.js +1 -1
- package/lib/api/logs/logs-monitor.js +5 -4
- package/lib/api/toolkit-info.js +5 -5
- package/lib/api/util/placeholders.d.ts +6 -0
- package/lib/api/util/placeholders.js +25 -0
- package/lib/assets.js +2 -1
- package/lib/cdk-toolkit.js +3 -3
- package/lib/context-providers/ami.d.ts +1 -1
- package/lib/context-providers/ami.js +3 -3
- package/lib/context-providers/availability-zones.d.ts +1 -1
- package/lib/context-providers/availability-zones.js +3 -3
- package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -1
- package/lib/context-providers/endpoint-service-availability-zones.js +3 -3
- package/lib/context-providers/hosted-zones.d.ts +1 -1
- package/lib/context-providers/hosted-zones.js +3 -3
- package/lib/context-providers/index.d.ts +6 -0
- package/lib/context-providers/index.js +18 -5
- package/lib/context-providers/keys.d.ts +1 -1
- package/lib/context-providers/keys.js +3 -3
- package/lib/context-providers/load-balancers.d.ts +1 -1
- package/lib/context-providers/load-balancers.js +4 -4
- package/lib/context-providers/security-groups.d.ts +1 -1
- package/lib/context-providers/security-groups.js +3 -3
- package/lib/context-providers/ssm-parameters.d.ts +1 -1
- package/lib/context-providers/ssm-parameters.js +3 -3
- package/lib/context-providers/vpcs.d.ts +1 -1
- package/lib/context-providers/vpcs.js +6 -3
- package/lib/init-templates/v1/app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v1/app/fsharp/cdk.template.json +1 -1
- package/lib/init-templates/v1/sample-app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v1/sample-app/fsharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/app/fsharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/sample-app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/sample-app/fsharp/cdk.template.json +1 -1
- package/lib/plugin.d.ts +15 -1
- package/lib/plugin.js +17 -3
- package/lib/util/asset-publishing.d.ts +1 -1
- package/lib/util/asset-publishing.js +4 -4
- package/npm-shrinkwrap.json +41 -41
- package/package.json +16 -15
- package/test/api/cloudformation-deployments.test.js +643 -1
- package/test/api/hotswap/hotswap-deployments.test.js +2 -2
- package/test/api/hotswap/hotswap-test-setup.d.ts +6 -1
- package/test/api/hotswap/hotswap-test-setup.js +19 -3
- package/test/api/hotswap/lambda-functions-docker-hotswap-deployments.test.d.ts +1 -0
- package/test/api/hotswap/lambda-functions-docker-hotswap-deployments.test.js +121 -0
- package/test/api/hotswap/lambda-functions-hotswap-deployments.test.js +175 -2
- package/test/api/hotswap/lambda-functions-inline-hotswap-deployments.test.d.ts +1 -0
- package/test/api/hotswap/lambda-functions-inline-hotswap-deployments.test.js +139 -0
- package/test/api/hotswap/lambda-versions-aliases-hotswap-deployments.test.js +2 -2
- package/test/api/logs/logs-monitor.test.js +9 -13
- package/test/cdk-toolkit.test.js +42 -1
- package/test/context-providers/generic.test.js +7 -6
- package/test/context-providers/vpcs.test.js +132 -1
- package/test/diff-nested-stacks-templates/one-output-one-param-stack.nested.template.json +20 -0
- package/test/diff-nested-stacks-templates/one-resource-one-stack-stack.nested.template.json +19 -0
- package/test/diff-nested-stacks-templates/one-resource-stack.nested.template.json +10 -0
- package/test/diff-nested-stacks-templates/one-resource-two-stacks-stack.nested.template.json +28 -0
- package/test/diff.test.js +215 -96
- package/test/util/mock-sdk.d.ts +3 -1
- package/test/util/mock-sdk.js +3 -3
- package/test/util.js +18 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as cxschema from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
-
import { SdkProvider } from '../api';
|
|
2
|
+
import { SdkProvider } from '../api/aws-auth/sdk-provider';
|
|
3
3
|
import { ContextProviderPlugin } from './provider';
|
|
4
4
|
/**
|
|
5
5
|
* Plugin to read arbitrary SSM parameter names
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SSMContextProviderPlugin = void 0;
|
|
4
4
|
const cxapi = require("@aws-cdk/cx-api");
|
|
5
|
-
const
|
|
5
|
+
const credentials_1 = require("../api/aws-auth/credentials");
|
|
6
6
|
const logging_1 = require("../logging");
|
|
7
7
|
/**
|
|
8
8
|
* Plugin to read arbitrary SSM parameter names
|
|
@@ -38,7 +38,7 @@ class SSMContextProviderPlugin {
|
|
|
38
38
|
*/
|
|
39
39
|
async getSsmParameterValue(account, region, parameterName, lookupRoleArn) {
|
|
40
40
|
const options = { assumeRoleArn: lookupRoleArn };
|
|
41
|
-
const ssm = (await this.aws.forEnvironment(cxapi.EnvironmentUtils.make(account, region),
|
|
41
|
+
const ssm = (await this.aws.forEnvironment(cxapi.EnvironmentUtils.make(account, region), credentials_1.Mode.ForReading, options)).sdk.ssm();
|
|
42
42
|
try {
|
|
43
43
|
return await ssm.getParameter({ Name: parameterName }).promise();
|
|
44
44
|
}
|
|
@@ -51,4 +51,4 @@ class SSMContextProviderPlugin {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
exports.SSMContextProviderPlugin = SSMContextProviderPlugin;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NtLXBhcmFtZXRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzc20tcGFyYW1ldGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUM7QUFFekMsNkRBQW1EO0FBRW5ELHdDQUFtQztBQUduQzs7R0FFRztBQUNILE1BQWEsd0JBQXdCO0lBQ25DLFlBQTZCLEdBQWdCO1FBQWhCLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFDN0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBdUM7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7U0FDekY7UUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLGVBQUssQ0FBQyx5QkFBeUIsT0FBTyxJQUFJLE1BQU0sSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsT0FBTyxZQUFZLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQzFHO1FBQ0QsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFlLEVBQUUsTUFBYyxFQUFFLGFBQXFCLEVBQUUsYUFBc0I7UUFFL0csTUFBTSxPQUFPLEdBQUcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDakQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLGtCQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlILElBQUk7WUFDRixPQUFPLE1BQU0sR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLEVBQUU7Z0JBQ2xDLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxNQUFNLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztDQUNGO0FBNUNELDREQTRDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9jcmVkZW50aWFscyc7XG5pbXBvcnQgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9zZGstcHJvdmlkZXInO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlclBsdWdpbiB9IGZyb20gJy4vcHJvdmlkZXInO1xuXG4vKipcbiAqIFBsdWdpbiB0byByZWFkIGFyYml0cmFyeSBTU00gcGFyYW1ldGVyIG5hbWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBTU01Db250ZXh0UHJvdmlkZXJQbHVnaW4gaW1wbGVtZW50cyBDb250ZXh0UHJvdmlkZXJQbHVnaW4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF3czogU2RrUHJvdmlkZXIpIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWYWx1ZShhcmdzOiBjeHNjaGVtYS5TU01QYXJhbWV0ZXJDb250ZXh0UXVlcnkpIHtcbiAgICBjb25zdCByZWdpb24gPSBhcmdzLnJlZ2lvbjtcbiAgICBjb25zdCBhY2NvdW50ID0gYXJncy5hY2NvdW50O1xuICAgIGlmICghKCdwYXJhbWV0ZXJOYW1lJyBpbiBhcmdzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwYXJhbWV0ZXJOYW1lIG11c3QgYmUgcHJvdmlkZWQgaW4gcHJvcHMgZm9yIFNTTUNvbnRleHRQcm92aWRlclBsdWdpbicpO1xuICAgIH1cbiAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gYXJncy5wYXJhbWV0ZXJOYW1lO1xuICAgIGRlYnVnKGBSZWFkaW5nIFNTTSBwYXJhbWV0ZXIgJHthY2NvdW50fToke3JlZ2lvbn06JHtwYXJhbWV0ZXJOYW1lfWApO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldFNzbVBhcmFtZXRlclZhbHVlKGFjY291bnQsIHJlZ2lvbiwgcGFyYW1ldGVyTmFtZSwgYXJncy5sb29rdXBSb2xlQXJuKTtcbiAgICBpZiAoIXJlc3BvbnNlLlBhcmFtZXRlciB8fCByZXNwb25zZS5QYXJhbWV0ZXIuVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTU00gcGFyYW1ldGVyIG5vdCBhdmFpbGFibGUgaW4gYWNjb3VudCAke2FjY291bnR9LCByZWdpb24gJHtyZWdpb259OiAke3BhcmFtZXRlck5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5QYXJhbWV0ZXIuVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgYW4gU1NNIFBhcmFtZXRlciwgd2hpbGUgbm90IHRocm93aW4gaWYgdGhlIHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdC5cbiAgICogQHBhcmFtIGFjY291bnQgICAgICAgdGhlIGFjY291bnQgaW4gd2hpY2ggdGhlIFNTTSBQYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8gYmUuXG4gICAqIEBwYXJhbSByZWdpb24gICAgICAgIHRoZSByZWdpb24gaW4gd2hpY2ggdGhlIFNTTSBQYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8gYmUuXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJOYW1lIHRoZSBuYW1lIG9mIHRoZSBTU00gUGFyYW1ldGVyXG4gICAqIEBwYXJhbSBsb29rdXBSb2xlQXJuIHRoZSBBUk4gb2YgdGhlIGxvb2t1cCByb2xlLlxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBgYEdldFBhcmFtZXRlcmBgIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQHRocm93cyBFcnJvciBpZiBhIHNlcnZpY2UgZXJyb3IgKG90aGVyIHRoYW4gYGBQYXJhbWV0ZXJOb3RGb3VuZGBgKSBvY2N1cnMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFNzbVBhcmFtZXRlclZhbHVlKGFjY291bnQ6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIHBhcmFtZXRlck5hbWU6IHN0cmluZywgbG9va3VwUm9sZUFybj86IHN0cmluZylcbiAgICA6IFByb21pc2U8QVdTLlNTTS5HZXRQYXJhbWV0ZXJSZXN1bHQ+IHtcbiAgICBjb25zdCBvcHRpb25zID0geyBhc3N1bWVSb2xlQXJuOiBsb29rdXBSb2xlQXJuIH07XG4gICAgY29uc3Qgc3NtID0gKGF3YWl0IHRoaXMuYXdzLmZvckVudmlyb25tZW50KGN4YXBpLkVudmlyb25tZW50VXRpbHMubWFrZShhY2NvdW50LCByZWdpb24pLCBNb2RlLkZvclJlYWRpbmcsIG9wdGlvbnMpKS5zZGsuc3NtKCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBzc20uZ2V0UGFyYW1ldGVyKHsgTmFtZTogcGFyYW1ldGVyTmFtZSB9KS5wcm9taXNlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuY29kZSA9PT0gJ1BhcmFtZXRlck5vdEZvdW5kJykge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as cxschema from '@aws-cdk/cloud-assembly-schema';
|
|
2
2
|
import * as cxapi from '@aws-cdk/cx-api';
|
|
3
|
-
import { SdkProvider } from '../api';
|
|
3
|
+
import { SdkProvider } from '../api/aws-auth/sdk-provider';
|
|
4
4
|
import { ContextProviderPlugin } from './provider';
|
|
5
5
|
export declare class VpcNetworkContextProviderPlugin implements ContextProviderPlugin {
|
|
6
6
|
private readonly aws;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VpcNetworkContextProviderPlugin = void 0;
|
|
4
4
|
const cxapi = require("@aws-cdk/cx-api");
|
|
5
|
-
const
|
|
5
|
+
const credentials_1 = require("../api/aws-auth/credentials");
|
|
6
6
|
const logging_1 = require("../logging");
|
|
7
7
|
class VpcNetworkContextProviderPlugin {
|
|
8
8
|
constructor(aws) {
|
|
@@ -12,7 +12,7 @@ class VpcNetworkContextProviderPlugin {
|
|
|
12
12
|
const account = args.account;
|
|
13
13
|
const region = args.region;
|
|
14
14
|
const options = { assumeRoleArn: args.lookupRoleArn };
|
|
15
|
-
const ec2 = (await this.aws.forEnvironment(cxapi.EnvironmentUtils.make(account, region),
|
|
15
|
+
const ec2 = (await this.aws.forEnvironment(cxapi.EnvironmentUtils.make(account, region), credentials_1.Mode.ForReading, options)).sdk.ec2();
|
|
16
16
|
const vpcId = await this.findVpc(ec2, args);
|
|
17
17
|
return this.readVpcProps(ec2, vpcId, args);
|
|
18
18
|
}
|
|
@@ -69,6 +69,9 @@ class VpcNetworkContextProviderPlugin {
|
|
|
69
69
|
// eslint-disable-next-line max-len
|
|
70
70
|
throw new Error(`Subnet ${subnet.SubnetArn} has invalid subnet type ${type} (must be ${SubnetType.Public}, ${SubnetType.Private} or ${SubnetType.Isolated})`);
|
|
71
71
|
}
|
|
72
|
+
if (args.subnetGroupNameTag && !getTag(args.subnetGroupNameTag, subnet.Tags)) {
|
|
73
|
+
throw new Error(`Invalid subnetGroupNameTag: Subnet ${subnet.SubnetArn} does not have an associated tag with Key='${args.subnetGroupNameTag}'`);
|
|
74
|
+
}
|
|
72
75
|
const name = getTag(args.subnetGroupNameTag || 'aws-cdk:subnet-name', subnet.Tags) || type;
|
|
73
76
|
const routeTableId = routeTables.routeTableIdForSubnetId(subnet.SubnetId);
|
|
74
77
|
if (!routeTableId) {
|
|
@@ -267,4 +270,4 @@ function collapse(xs) {
|
|
|
267
270
|
}
|
|
268
271
|
return undefined;
|
|
269
272
|
}
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZwY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQXlDO0FBRXpDLGdDQUEyQztBQUMzQyx3Q0FBbUM7QUFHbkMsTUFBYSwrQkFBK0I7SUFFMUMsWUFBNkIsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtJQUM3QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUE4QjtRQUNsRCxNQUFNLE9BQU8sR0FBVyxJQUFJLENBQUMsT0FBUSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxNQUFPLENBQUM7UUFFcEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxVQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTlILE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFNUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBWSxFQUFFLElBQThCO1FBQ2hFLDZFQUE2RTtRQUM3RSxNQUFNLE9BQU8sR0FBcUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJ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SUFDMUIsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUFFLE9BQU8sRUFBRSxDQUFDO0tBQUU7SUFDakMsT0FBTyxTQUFTLENBQUM7QUFFbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgTW9kZSwgU2RrUHJvdmlkZXIgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlclBsdWdpbiB9IGZyb20gJy4vcHJvdmlkZXInO1xuXG5leHBvcnQgY2xhc3MgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbiBpbXBsZW1lbnRzIENvbnRleHRQcm92aWRlclBsdWdpbiB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhd3M6IFNka1Byb3ZpZGVyKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VmFsdWUoYXJnczogY3hzY2hlbWEuVnBjQ29udGV4dFF1ZXJ5KSB7XG4gICAgY29uc3QgYWNjb3VudDogc3RyaW5nID0gYXJncy5hY2NvdW50ITtcbiAgICBjb25zdCByZWdpb246IHN0cmluZyA9IGFyZ3MucmVnaW9uITtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGFzc3VtZVJvbGVBcm46IGFyZ3MubG9va3VwUm9sZUFybiB9O1xuICAgIGNvbnN0IGVjMiA9IChhd2FpdCB0aGlzLmF3cy5mb3JFbnZpcm9ubWVudChjeGFwaS5FbnZpcm9ubWVudFV0aWxzLm1ha2UoYWNjb3VudCwgcmVnaW9uKSwgTW9kZS5Gb3JSZWFkaW5nLCBvcHRpb25zKSkuc2RrLmVjMigpO1xuXG4gICAgY29uc3QgdnBjSWQgPSBhd2FpdCB0aGlzLmZpbmRWcGMoZWMyLCBhcmdzKTtcblxuICAgIHJldHVybiB0aGlzLnJlYWRWcGNQcm9wcyhlYzIsIHZwY0lkLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZFZwYyhlYzI6IEFXUy5FQzIsIGFyZ3M6IGN4c2NoZW1hLlZwY0NvbnRleHRRdWVyeSk6IFByb21pc2U8QVdTLkVDMi5WcGM+IHtcbiAgICAvLyBCdWlsZCByZXF1ZXN0IGZpbHRlciAobWFwIHsgTmFtZSAtPiBWYWx1ZSB9IHRvIGxpc3Qgb2YgW3sgTmFtZSwgVmFsdWVzIH1dKVxuICAgIGNvbnN0IGZpbHRlcnM6IEFXUy5FQzIuRmlsdGVyW10gPSBPYmplY3QuZW50cmllcyhhcmdzLmZpbHRlcikubWFwKChbdGFnLCB2YWx1ZV0pID0+ICh7IE5hbWU6IHRhZywgVmFsdWVzOiBbdmFsdWVdIH0pKTtcblxuICAgIGRlYnVnKGBMaXN0aW5nIFZQQ3MgaW4gJHthcmdzLmFjY291bnR9OiR7YXJncy5yZWdpb259YCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBlYzIuZGVzY3JpYmVWcGNzKHsgRmlsdGVyczogZmlsdGVycyB9KS5wcm9taXNlKCk7XG5cbiAgICBjb25zdCB2cGNzID0gcmVzcG9uc2UuVnBjcyB8fCBbXTtcbiAgICBpZiAodnBjcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYW55IFZQQ3MgbWF0Y2hpbmcgJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgICB9XG4gICAgaWYgKHZwY3MubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3VuZCAke3ZwY3MubGVuZ3RofSBWUENzIG1hdGNoaW5nICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9OyBwbGVhc2UgbmFycm93IHRoZSBzZWFyY2ggY3JpdGVyaWFgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdnBjc1swXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZFZwY1Byb3BzKGVjMjogQVdTLkVDMiwgdnBjOiBBV1MuRUMyLlZwYywgYXJnczogY3hzY2hlbWEuVnBjQ29udGV4dFF1ZXJ5KTogUHJvbWlzZTxjeGFwaS5WcGNDb250ZXh0UmVzcG9uc2U+IHtcbiAgICBjb25zdCB2cGNJZCA9IHZwYy5WcGNJZCE7XG5cbiAgICBkZWJ1ZyhgRGVzY3JpYmluZyBWUEMgJHt2cGNJZH1gKTtcblxuICAgIGNvbnN0IGZpbHRlcnMgPSB7IEZpbHRlcnM6IFt7IE5hbWU6ICd2cGMtaWQnLCBWYWx1ZXM6IFt2cGNJZF0gfV0gfTtcblxuICAgIGNvbnN0IHN1Ym5ldHNSZXNwb25zZSA9IGF3YWl0IGVjMi5kZXNjcmliZVN1Ym5ldHMoZmlsdGVycykucHJvbWlzZSgpO1xuICAgIGNvbnN0IGxpc3RlZFN1Ym5ldHMgPSBzdWJuZXRzUmVzcG9uc2UuU3VibmV0cyB8fCBbXTtcblxuICAgIGNvbnN0IHJvdXRlVGFibGVzUmVzcG9uc2UgPSBhd2FpdCBlYzIuZGVzY3JpYmVSb3V0ZVRhYmxlcyhmaWx0ZXJzKS5wcm9taXNlKCk7XG4gICAgY29uc3Qgcm91dGVUYWJsZXMgPSBuZXcgUm91dGVUYWJsZXMocm91dGVUYWJsZXNSZXNwb25zZS5Sb3V0ZVRhYmxlcyB8fCBbXSk7XG5cbiAgICAvLyBOb3cgY29tZXMgb3VyIGpvYiB0byBzZXBhcmF0ZSB0aGVzZSBzdWJuZXRzIG91dCBpbnRvIEFacyBhbmQgc3VibmV0IGdyb3VwcyAoUHVibGljLCBQcml2YXRlLCBJc29sYXRlZClcbiAgICAvLyBXZSBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB0byBnbyBvbjpcbiAgICAvLyAtIFR5cGUgdGFnLCB3ZSB0YWcgc3VibmV0cyB3aXRoIHRoZWlyIHR5cGUuIEluIGFic2VuY2Ugb2YgdGhpcyB0YWcsIHdlXG4gICAgLy8gICBkZXRlcm1pbmUgdGhlIHN1Ym5ldCBtdXN0IGJlIFB1YmxpYyBpZiBlaXRoZXI6XG4gICAgLy8gICBhKSBpdCBoYXMgdGhlIHByb3BlcnR5IE1hcFB1YmxpY0lwT25MYXVuY2hcbiAgICAvLyAgIGIpIGl0IGhhcyBhIHJvdXRlIHRvIGFuIEludGVybmV0IEdhdGV3YXlcbiAgICAvLyAgIElmIGJvdGggb2YgdGhlIGFib3ZlIGlzIGZhbHNlIGJ1dCB0aGUgc3VibmV0IGhhcyBhIHJvdXRlIHRvIGEgTkFUIEdhdGV3YXlcbiAgICAvLyAgIGFuZCB0aGUgZGVzdGluYXRpb24gQ0lEUiBibG9jayBpcyBcIjAuMC4wLjAvMFwiLCB3ZSBhc3N1bWUgaXQgdG8gYmUgYSBQcml2YXRlIHN1Ym5ldC5cbiAgICAvLyAgIEFueXRoaW5nIGVsc2UgaXMgY29uc2lkZXJlZCBJc29sYXRlZC5cbiAgICAvLyAtIE5hbWUgdGFnLCB3ZSB0YWcgc3VibmV0cyB3aXRoIHRoZWlyIHN1Ym5ldCBncm91cCBuYW1lLiBJbiBhYnNlbmNlIG9mIHRoaXMgdGFnLFxuICAgIC8vICAgd2UgdXNlIHRoZSB0eXBlIGFzIHRoZSBuYW1lLlxuXG4gICAgY29uc3QgYXpzID0gQXJyYXkuZnJvbShuZXcgU2V0PHN0cmluZz4obGlzdGVkU3VibmV0cy5tYXAocyA9PiBzLkF2YWlsYWJpbGl0eVpvbmUhKSkpO1xuICAgIGF6cy5zb3J0KCk7XG5cbiAgICBjb25zdCBzdWJuZXRzOiBTdWJuZXRbXSA9IGxpc3RlZFN1Ym5ldHMubWFwKHN1Ym5ldCA9PiB7XG4gICAgICBsZXQgdHlwZSA9IGdldFRhZygnYXdzLWNkazpzdWJuZXQtdHlwZScsIHN1Ym5ldC5UYWdzKTtcbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgJiYgc3VibmV0Lk1hcFB1YmxpY0lwT25MYXVuY2gpIHsgdHlwZSA9IFN1Ym5ldFR5cGUuUHVibGljOyB9XG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkICYmIHJvdXRlVGFibGVzLmhhc1JvdXRlVG9JZ3coc3VibmV0LlN1Ym5ldElkKSkgeyB0eXBlID0gU3VibmV0VHlwZS5QdWJsaWM7IH1cbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgJiYgcm91dGVUYWJsZXMuaGFzUm91dGVUb05hdEdhdGV3YXkoc3VibmV0LlN1Ym5ldElkKSkgeyB0eXBlID0gU3VibmV0VHlwZS5Qcml2YXRlOyB9XG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7IHR5cGUgPSBTdWJuZXRUeXBlLklzb2xhdGVkOyB9XG5cbiAgICAgIGlmICghaXNWYWxpZFN1Ym5ldFR5cGUodHlwZSkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdWJuZXQgJHtzdWJuZXQuU3VibmV0QXJufSBoYXMgaW52YWxpZCBzdWJuZXQgdHlwZSAke3R5cGV9IChtdXN0IGJlICR7U3VibmV0VHlwZS5QdWJsaWN9LCAke1N1Ym5ldFR5cGUuUHJpdmF0ZX0gb3IgJHtTdWJuZXRUeXBlLklzb2xhdGVkfSlgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmFtZSA9IGdldFRhZyhhcmdzLnN1Ym5ldEdyb3VwTmFtZVRhZyB8fCAnYXdzLWNkazpzdWJuZXQtbmFtZScsIHN1Ym5ldC5UYWdzKSB8fCB0eXBlO1xuICAgICAgY29uc3Qgcm91dGVUYWJsZUlkID0gcm91dGVUYWJsZXMucm91dGVUYWJsZUlkRm9yU3VibmV0SWQoc3VibmV0LlN1Ym5ldElkKTtcblxuICAgICAgaWYgKCFyb3V0ZVRhYmxlSWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdWJuZXQgJHtzdWJuZXQuU3VibmV0QXJufSBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgcm91dGUgdGFibGUgKGFuZCB0aGVyZSBpcyBubyBcIm1haW5cIiB0YWJsZSlgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXo6IHN1Ym5ldC5BdmFpbGFiaWxpdHlab25lISxcbiAgICAgICAgY2lkcjogc3VibmV0LkNpZHJCbG9jayEsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHN1Ym5ldElkOiBzdWJuZXQuU3VibmV0SWQhLFxuICAgICAgICByb3V0ZVRhYmxlSWQsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgbGV0IGdyb3VwZWQ6IFN1Ym5ldEdyb3VwcztcbiAgICBsZXQgYXNzeW1ldHJpY1N1Ym5ldEdyb3VwczogY3hhcGkuVnBjU3VibmV0R3JvdXBbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoYXJncy5yZXR1cm5Bc3ltbWV0cmljU3VibmV0cykge1xuICAgICAgZ3JvdXBlZCA9IHsgYXpzOiBbXSwgZ3JvdXBzOiBbXSB9O1xuICAgICAgYXNzeW1ldHJpY1N1Ym5ldEdyb3VwcyA9IGdyb3VwQXN5bW1ldHJpY1N1Ym5ldHMoc3VibmV0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwZWQgPSBncm91cFN1Ym5ldHMoc3VibmV0cyk7XG4gICAgICBhc3N5bWV0cmljU3VibmV0R3JvdXBzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIEZpbmQgYXR0YWNoZWQrYXZhaWxhYmxlIFZQTiBnYXRld2F5IGZvciB0aGlzIFZQQ1xuICAgIGNvbnN0IHZwbkdhdGV3YXlSZXNwb25zZSA9IGF3YWl0IGVjMi5kZXNjcmliZVZwbkdhdGV3YXlzKHtcbiAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIE5hbWU6ICdhdHRhY2htZW50LnZwYy1pZCcsXG4gICAgICAgICAgVmFsdWVzOiBbdnBjSWRdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTmFtZTogJ2F0dGFjaG1lbnQuc3RhdGUnLFxuICAgICAgICAgIFZhbHVlczogWydhdHRhY2hlZCddLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTmFtZTogJ3N0YXRlJyxcbiAgICAgICAgICBWYWx1ZXM6IFsnYXZhaWxhYmxlJ10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pLnByb21pc2UoKTtcbiAgICBjb25zdCB2cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5UmVzcG9uc2UuVnBuR2F0ZXdheXMgJiYgdnBuR2F0ZXdheVJlc3BvbnNlLlZwbkdhdGV3YXlzLmxlbmd0aCA9PT0gMVxuICAgICAgPyB2cG5HYXRld2F5UmVzcG9uc2UuVnBuR2F0ZXdheXNbMF0uVnBuR2F0ZXdheUlkXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICB2cGNJZCxcbiAgICAgIHZwY0NpZHJCbG9jazogdnBjLkNpZHJCbG9jayEsXG4gICAgICBhdmFpbGFiaWxpdHlab25lczogZ3JvdXBlZC5henMsXG4gICAgICBpc29sYXRlZFN1Ym5ldElkczogY29sbGFwc2UoZmxhdE1hcChmaW5kR3JvdXBzKFN1Ym5ldFR5cGUuSXNvbGF0ZWQsIGdyb3VwZWQpLCBncm91cCA9PiBncm91cC5zdWJuZXRzLm1hcChzID0+IHMuc3VibmV0SWQpKSksXG4gICAgICBpc29sYXRlZFN1Ym5ldE5hbWVzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Jc29sYXRlZCwgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLm5hbWUgPyBbZ3JvdXAubmFtZV0gOiBbXSkpLFxuICAgICAgaXNvbGF0ZWRTdWJuZXRSb3V0ZVRhYmxlSWRzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Jc29sYXRlZCwgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5yb3V0ZVRhYmxlSWQpKSksXG4gICAgICBwcml2YXRlU3VibmV0SWRzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Qcml2YXRlLCBncm91cGVkKSwgZ3JvdXAgPT4gZ3JvdXAuc3VibmV0cy5tYXAocyA9PiBzLnN1Ym5ldElkKSkpLFxuICAgICAgcHJpdmF0ZVN1Ym5ldE5hbWVzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Qcml2YXRlLCBncm91cGVkKSwgZ3JvdXAgPT4gZ3JvdXAubmFtZSA/IFtncm91cC5uYW1lXSA6IFtdKSksXG4gICAgICBwcml2YXRlU3VibmV0Um91dGVUYWJsZUlkczogY29sbGFwc2UoZmxhdE1hcChmaW5kR3JvdXBzKFN1Ym5ldFR5cGUuUHJpdmF0ZSwgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5yb3V0ZVRhYmxlSWQpKSksXG4gICAgICBwdWJsaWNTdWJuZXRJZHM6IGNvbGxhcHNlKGZsYXRNYXAoZmluZEdyb3VwcyhTdWJuZXRUeXBlLlB1YmxpYywgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5zdWJuZXRJZCkpKSxcbiAgICAgIHB1YmxpY1N1Ym5ldE5hbWVzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5QdWJsaWMsIGdyb3VwZWQpLCBncm91cCA9PiBncm91cC5uYW1lID8gW2dyb3VwLm5hbWVdIDogW10pKSxcbiAgICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IGNvbGxhcHNlKGZsYXRNYXAoZmluZEdyb3VwcyhTdWJuZXRUeXBlLlB1YmxpYywgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5yb3V0ZVRhYmxlSWQpKSksXG4gICAgICB2cG5HYXRld2F5SWQsXG4gICAgICBzdWJuZXRHcm91cHM6IGFzc3ltZXRyaWNTdWJuZXRHcm91cHMsXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBSb3V0ZVRhYmxlcyB7XG4gIHB1YmxpYyByZWFkb25seSBtYWluUm91dGVUYWJsZT86IEFXUy5FQzIuUm91dGVUYWJsZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRhYmxlczogQVdTLkVDMi5Sb3V0ZVRhYmxlW10pIHtcbiAgICB0aGlzLm1haW5Sb3V0ZVRhYmxlID0gdGhpcy50YWJsZXMuZmluZCh0YWJsZSA9PiAhIXRhYmxlLkFzc29jaWF0aW9ucyAmJiB0YWJsZS5Bc3NvY2lhdGlvbnMuc29tZShhc3NvYyA9PiAhIWFzc29jLk1haW4pKTtcbiAgfVxuXG4gIHB1YmxpYyByb3V0ZVRhYmxlSWRGb3JTdWJuZXRJZChzdWJuZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGVGb3JTdWJuZXQoc3VibmV0SWQpO1xuICAgIHJldHVybiAodGFibGUgJiYgdGFibGUuUm91dGVUYWJsZUlkKSB8fCAodGhpcy5tYWluUm91dGVUYWJsZSAmJiB0aGlzLm1haW5Sb3V0ZVRhYmxlLlJvdXRlVGFibGVJZCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ2l2ZW4gc3VibmV0IGhhcyBhIHJvdXRlIHRvIGEgTkFUIEdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyBoYXNSb3V0ZVRvTmF0R2F0ZXdheShzdWJuZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlRm9yU3VibmV0KHN1Ym5ldElkKSB8fCB0aGlzLm1haW5Sb3V0ZVRhYmxlO1xuXG4gICAgcmV0dXJuICEhdGFibGUgJiYgISF0YWJsZS5Sb3V0ZXMgJiYgdGFibGUuUm91dGVzLnNvbWUocm91dGUgPT4gISFyb3V0ZS5OYXRHYXRld2F5SWQgJiYgcm91dGUuRGVzdGluYXRpb25DaWRyQmxvY2sgPT09ICcwLjAuMC4wLzAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBnaXZlbiBzdWJuZXQgaGFzIGEgcm91dGUgdG8gYW4gSUdXXG4gICAqL1xuICBwdWJsaWMgaGFzUm91dGVUb0lndyhzdWJuZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlRm9yU3VibmV0KHN1Ym5ldElkKSB8fCB0aGlzLm1haW5Sb3V0ZVRhYmxlO1xuXG4gICAgcmV0dXJuICEhdGFibGUgJiYgISF0YWJsZS5Sb3V0ZXMgJiYgdGFibGUuUm91dGVzLnNvbWUocm91dGUgPT4gISFyb3V0ZS5HYXRld2F5SWQgJiYgcm91dGUuR2F0ZXdheUlkLnN0YXJ0c1dpdGgoJ2lndy0nKSk7XG4gIH1cblxuICBwdWJsaWMgdGFibGVGb3JTdWJuZXQoc3VibmV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlcy5maW5kKHRhYmxlID0+ICEhdGFibGUuQXNzb2NpYXRpb25zICYmIHRhYmxlLkFzc29jaWF0aW9ucy5zb21lKGFzc29jID0+IGFzc29jLlN1Ym5ldElkID09PSBzdWJuZXRJZCkpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIHRhZyBmcm9tIGEgc2V0IG9mIHRhZ3NcbiAqL1xuZnVuY3Rpb24gZ2V0VGFnKG5hbWU6IHN0cmluZywgdGFncz86IEFXUy5FQzIuVGFnW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzIHx8IFtdKSB7XG4gICAgaWYgKHRhZy5LZXkgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiB0YWcuVmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR3JvdXAgc3VibmV0cyBvZiB0aGUgc2FtZSB0eXBlIHRvZ2V0aGVyLCBhbmQgb3JkZXIgYnkgQVpcbiAqL1xuZnVuY3Rpb24gZ3JvdXBTdWJuZXRzKHN1Ym5ldHM6IFN1Ym5ldFtdKTogU3VibmV0R3JvdXBzIHtcbiAgY29uc3QgZ3JvdXBpbmc6IHtba2V5OiBzdHJpbmddOiBTdWJuZXRbXX0gPSB7fTtcbiAgZm9yIChjb25zdCBzdWJuZXQgb2Ygc3VibmV0cykge1xuICAgIGNvbnN0IGtleSA9IFtzdWJuZXQudHlwZSwgc3VibmV0Lm5hbWVdLnRvU3RyaW5nKCk7XG4gICAgaWYgKCEoa2V5IGluIGdyb3VwaW5nKSkgeyBncm91cGluZ1trZXldID0gW107IH1cbiAgICBncm91cGluZ1trZXldLnB1c2goc3VibmV0KTtcbiAgfVxuXG4gIGNvbnN0IGdyb3VwcyA9IE9iamVjdC52YWx1ZXMoZ3JvdXBpbmcpLm1hcChzbnMgPT4ge1xuICAgIHNucy5zb3J0KChhOiBTdWJuZXQsIGI6IFN1Ym5ldCkgPT4gYS5hei5sb2NhbGVDb21wYXJlKGIuYXopKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogc25zWzBdLnR5cGUsXG4gICAgICBuYW1lOiBzbnNbMF0ubmFtZSxcbiAgICAgIHN1Ym5ldHM6IHNucyxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdCBhenMgPSBncm91cHNbMF0uc3VibmV0cy5tYXAocyA9PiBzLmF6KTtcblxuICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgIGNvbnN0IGdyb3VwQVpzID0gZ3JvdXAuc3VibmV0cy5tYXAocyA9PiBzLmF6KTtcbiAgICBpZiAoIWFycmF5c0VxdWFsKGdyb3VwQVpzLCBhenMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBhbGwgc3VibmV0cyBpbiBWUEMgaGF2ZSB0aGUgc2FtZSBBWnM6ICR7Z3JvdXBBWnN9IHZzICR7YXpzfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGF6cywgZ3JvdXBzIH07XG59XG5cbmZ1bmN0aW9uIGdyb3VwQXN5bW1ldHJpY1N1Ym5ldHMoc3VibmV0czogU3VibmV0W10pOiBjeGFwaS5WcGNTdWJuZXRHcm91cFtdIHtcbiAgY29uc3QgZ3JvdXBpbmc6IHsgW2tleTogc3RyaW5nXTogU3VibmV0W10gfSA9IHt9O1xuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBzdWJuZXRzKSB7XG4gICAgY29uc3Qga2V5ID0gW3N1Ym5ldC50eXBlLCBzdWJuZXQubmFtZV0udG9TdHJpbmcoKTtcbiAgICBpZiAoIShrZXkgaW4gZ3JvdXBpbmcpKSB7XG4gICAgICBncm91cGluZ1trZXldID0gW107XG4gICAgfVxuICAgIGdyb3VwaW5nW2tleV0ucHVzaChzdWJuZXQpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZ3JvdXBpbmcpLm1hcChzdWJuZXRBcnJheSA9PiB7XG4gICAgc3VibmV0QXJyYXkuc29ydCgoc3VibmV0MTogU3VibmV0LCBzdWJuZXQyOiBTdWJuZXQpID0+IHN1Ym5ldDEuYXoubG9jYWxlQ29tcGFyZShzdWJuZXQyLmF6KSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogc3VibmV0QXJyYXlbMF0ubmFtZSxcbiAgICAgIHR5cGU6IHN1Ym5ldFR5cGVUb1ZwY1N1Ym5ldFR5cGUoc3VibmV0QXJyYXlbMF0udHlwZSksXG4gICAgICBzdWJuZXRzOiBzdWJuZXRBcnJheS5tYXAoc3VibmV0ID0+ICh7XG4gICAgICAgIHN1Ym5ldElkOiBzdWJuZXQuc3VibmV0SWQsXG4gICAgICAgIGNpZHI6IHN1Ym5ldC5jaWRyLFxuICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBzdWJuZXQuYXosXG4gICAgICAgIHJvdXRlVGFibGVJZDogc3VibmV0LnJvdXRlVGFibGVJZCxcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3VibmV0VHlwZVRvVnBjU3VibmV0VHlwZSh0eXBlOiBTdWJuZXRUeXBlKTogY3hhcGkuVnBjU3VibmV0R3JvdXBUeXBlIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBTdWJuZXRUeXBlLklzb2xhdGVkOiByZXR1cm4gY3hhcGkuVnBjU3VibmV0R3JvdXBUeXBlLklTT0xBVEVEO1xuICAgIGNhc2UgU3VibmV0VHlwZS5Qcml2YXRlOiByZXR1cm4gY3hhcGkuVnBjU3VibmV0R3JvdXBUeXBlLlBSSVZBVEU7XG4gICAgY2FzZSBTdWJuZXRUeXBlLlB1YmxpYzogcmV0dXJuIGN4YXBpLlZwY1N1Ym5ldEdyb3VwVHlwZS5QVUJMSUM7XG4gIH1cbn1cblxuZW51bSBTdWJuZXRUeXBlIHtcbiAgUHVibGljID0gJ1B1YmxpYycsXG4gIFByaXZhdGUgPSAnUHJpdmF0ZScsXG4gIElzb2xhdGVkID0gJ0lzb2xhdGVkJ1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkU3VibmV0VHlwZSh2YWw6IHN0cmluZyk6IHZhbCBpcyBTdWJuZXRUeXBlIHtcbiAgcmV0dXJuIHZhbCA9PT0gU3VibmV0VHlwZS5QdWJsaWNcbiAgICB8fCB2YWwgPT09IFN1Ym5ldFR5cGUuUHJpdmF0ZVxuICAgIHx8IHZhbCA9PT0gU3VibmV0VHlwZS5Jc29sYXRlZDtcbn1cblxuaW50ZXJmYWNlIFN1Ym5ldCB7XG4gIGF6OiBzdHJpbmc7XG4gIGNpZHI6IHN0cmluZztcbiAgdHlwZTogU3VibmV0VHlwZTtcbiAgbmFtZTogc3RyaW5nO1xuICByb3V0ZVRhYmxlSWQ6IHN0cmluZztcbiAgc3VibmV0SWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN1Ym5ldEdyb3VwIHtcbiAgdHlwZTogU3VibmV0VHlwZTtcbiAgbmFtZTogc3RyaW5nO1xuICBzdWJuZXRzOiBTdWJuZXRbXTtcbn1cblxuaW50ZXJmYWNlIFN1Ym5ldEdyb3VwcyB7XG4gIGF6czogc3RyaW5nW107XG4gIGdyb3VwczogU3VibmV0R3JvdXBbXTtcbn1cblxuZnVuY3Rpb24gYXJyYXlzRXF1YWwoYXM6IHN0cmluZ1tdLCBiczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgaWYgKGFzLmxlbmd0aCAhPT0gYnMubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXNbaV0gIT09IGJzW2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZpbmRHcm91cHModHlwZTogU3VibmV0VHlwZSwgZ3JvdXBzOiBTdWJuZXRHcm91cHMpOiBTdWJuZXRHcm91cFtdIHtcbiAgcmV0dXJuIGdyb3Vwcy5ncm91cHMuZmlsdGVyKGcgPT4gZy50eXBlID09PSB0eXBlKTtcbn1cblxuZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmbjogKHg6IFQpID0+IFVbXSk6IFVbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxVPigpO1xuICBmb3IgKGNvbnN0IHggb2YgeHMpIHtcbiAgICByZXQucHVzaCguLi5mbih4KSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gY29sbGFwc2U8VD4oeHM6IFRbXSk6IFRbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICh4cy5sZW5ndGggPiAwKSB7IHJldHVybiB4czsgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xuXG59XG4iXX0=
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZwY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQXlDO0FBRXpDLDZEQUFtRDtBQUVuRCx3Q0FBbUM7QUFHbkMsTUFBYSwrQkFBK0I7SUFFMUMsWUFBNkIsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtJQUM3QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUE4QjtRQUNsRCxNQUFNLE9BQU8sR0FBVyxJQUFJLENBQUMsT0FBUSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxNQUFPLENBQUM7UUFFcEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxrQkFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU5SCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVksRUFBRSxJQUE4QjtRQUNoRSw2RUFBNkU7UUFDN0UsTUFBTSxPQUFPLEdBQXFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFB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LEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBSyxDQUFDO0lBQzNCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFJLEVBQU87SUFDMUIsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUFFLE9BQU8sRUFBRSxDQUFDO0tBQUU7SUFDakMsT0FBTyxTQUFTLENBQUM7QUFFbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9jcmVkZW50aWFscyc7XG5pbXBvcnQgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9zZGstcHJvdmlkZXInO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlclBsdWdpbiB9IGZyb20gJy4vcHJvdmlkZXInO1xuXG5leHBvcnQgY2xhc3MgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbiBpbXBsZW1lbnRzIENvbnRleHRQcm92aWRlclBsdWdpbiB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhd3M6IFNka1Byb3ZpZGVyKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VmFsdWUoYXJnczogY3hzY2hlbWEuVnBjQ29udGV4dFF1ZXJ5KSB7XG4gICAgY29uc3QgYWNjb3VudDogc3RyaW5nID0gYXJncy5hY2NvdW50ITtcbiAgICBjb25zdCByZWdpb246IHN0cmluZyA9IGFyZ3MucmVnaW9uITtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGFzc3VtZVJvbGVBcm46IGFyZ3MubG9va3VwUm9sZUFybiB9O1xuICAgIGNvbnN0IGVjMiA9IChhd2FpdCB0aGlzLmF3cy5mb3JFbnZpcm9ubWVudChjeGFwaS5FbnZpcm9ubWVudFV0aWxzLm1ha2UoYWNjb3VudCwgcmVnaW9uKSwgTW9kZS5Gb3JSZWFkaW5nLCBvcHRpb25zKSkuc2RrLmVjMigpO1xuXG4gICAgY29uc3QgdnBjSWQgPSBhd2FpdCB0aGlzLmZpbmRWcGMoZWMyLCBhcmdzKTtcblxuICAgIHJldHVybiB0aGlzLnJlYWRWcGNQcm9wcyhlYzIsIHZwY0lkLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZFZwYyhlYzI6IEFXUy5FQzIsIGFyZ3M6IGN4c2NoZW1hLlZwY0NvbnRleHRRdWVyeSk6IFByb21pc2U8QVdTLkVDMi5WcGM+IHtcbiAgICAvLyBCdWlsZCByZXF1ZXN0IGZpbHRlciAobWFwIHsgTmFtZSAtPiBWYWx1ZSB9IHRvIGxpc3Qgb2YgW3sgTmFtZSwgVmFsdWVzIH1dKVxuICAgIGNvbnN0IGZpbHRlcnM6IEFXUy5FQzIuRmlsdGVyW10gPSBPYmplY3QuZW50cmllcyhhcmdzLmZpbHRlcikubWFwKChbdGFnLCB2YWx1ZV0pID0+ICh7IE5hbWU6IHRhZywgVmFsdWVzOiBbdmFsdWVdIH0pKTtcblxuICAgIGRlYnVnKGBMaXN0aW5nIFZQQ3MgaW4gJHthcmdzLmFjY291bnR9OiR7YXJncy5yZWdpb259YCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBlYzIuZGVzY3JpYmVWcGNzKHsgRmlsdGVyczogZmlsdGVycyB9KS5wcm9taXNlKCk7XG5cbiAgICBjb25zdCB2cGNzID0gcmVzcG9uc2UuVnBjcyB8fCBbXTtcbiAgICBpZiAodnBjcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYW55IFZQQ3MgbWF0Y2hpbmcgJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgICB9XG4gICAgaWYgKHZwY3MubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3VuZCAke3ZwY3MubGVuZ3RofSBWUENzIG1hdGNoaW5nICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9OyBwbGVhc2UgbmFycm93IHRoZSBzZWFyY2ggY3JpdGVyaWFgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdnBjc1swXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZFZwY1Byb3BzKGVjMjogQVdTLkVDMiwgdnBjOiBBV1MuRUMyLlZwYywgYXJnczogY3hzY2hlbWEuVnBjQ29udGV4dFF1ZXJ5KTogUHJvbWlzZTxjeGFwaS5WcGNDb250ZXh0UmVzcG9uc2U+IHtcbiAgICBjb25zdCB2cGNJZCA9IHZwYy5WcGNJZCE7XG5cbiAgICBkZWJ1ZyhgRGVzY3JpYmluZyBWUEMgJHt2cGNJZH1gKTtcblxuICAgIGNvbnN0IGZpbHRlcnMgPSB7IEZpbHRlcnM6IFt7IE5hbWU6ICd2cGMtaWQnLCBWYWx1ZXM6IFt2cGNJZF0gfV0gfTtcblxuICAgIGNvbnN0IHN1Ym5ldHNSZXNwb25zZSA9IGF3YWl0IGVjMi5kZXNjcmliZVN1Ym5ldHMoZmlsdGVycykucHJvbWlzZSgpO1xuICAgIGNvbnN0IGxpc3RlZFN1Ym5ldHMgPSBzdWJuZXRzUmVzcG9uc2UuU3VibmV0cyB8fCBbXTtcblxuICAgIGNvbnN0IHJvdXRlVGFibGVzUmVzcG9uc2UgPSBhd2FpdCBlYzIuZGVzY3JpYmVSb3V0ZVRhYmxlcyhmaWx0ZXJzKS5wcm9taXNlKCk7XG4gICAgY29uc3Qgcm91dGVUYWJsZXMgPSBuZXcgUm91dGVUYWJsZXMocm91dGVUYWJsZXNSZXNwb25zZS5Sb3V0ZVRhYmxlcyB8fCBbXSk7XG5cbiAgICAvLyBOb3cgY29tZXMgb3VyIGpvYiB0byBzZXBhcmF0ZSB0aGVzZSBzdWJuZXRzIG91dCBpbnRvIEFacyBhbmQgc3VibmV0IGdyb3VwcyAoUHVibGljLCBQcml2YXRlLCBJc29sYXRlZClcbiAgICAvLyBXZSBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB0byBnbyBvbjpcbiAgICAvLyAtIFR5cGUgdGFnLCB3ZSB0YWcgc3VibmV0cyB3aXRoIHRoZWlyIHR5cGUuIEluIGFic2VuY2Ugb2YgdGhpcyB0YWcsIHdlXG4gICAgLy8gICBkZXRlcm1pbmUgdGhlIHN1Ym5ldCBtdXN0IGJlIFB1YmxpYyBpZiBlaXRoZXI6XG4gICAgLy8gICBhKSBpdCBoYXMgdGhlIHByb3BlcnR5IE1hcFB1YmxpY0lwT25MYXVuY2hcbiAgICAvLyAgIGIpIGl0IGhhcyBhIHJvdXRlIHRvIGFuIEludGVybmV0IEdhdGV3YXlcbiAgICAvLyAgIElmIGJvdGggb2YgdGhlIGFib3ZlIGlzIGZhbHNlIGJ1dCB0aGUgc3VibmV0IGhhcyBhIHJvdXRlIHRvIGEgTkFUIEdhdGV3YXlcbiAgICAvLyAgIGFuZCB0aGUgZGVzdGluYXRpb24gQ0lEUiBibG9jayBpcyBcIjAuMC4wLjAvMFwiLCB3ZSBhc3N1bWUgaXQgdG8gYmUgYSBQcml2YXRlIHN1Ym5ldC5cbiAgICAvLyAgIEFueXRoaW5nIGVsc2UgaXMgY29uc2lkZXJlZCBJc29sYXRlZC5cbiAgICAvLyAtIE5hbWUgdGFnLCB3ZSB0YWcgc3VibmV0cyB3aXRoIHRoZWlyIHN1Ym5ldCBncm91cCBuYW1lLiBJbiBhYnNlbmNlIG9mIHRoaXMgdGFnLFxuICAgIC8vICAgd2UgdXNlIHRoZSB0eXBlIGFzIHRoZSBuYW1lLlxuXG4gICAgY29uc3QgYXpzID0gQXJyYXkuZnJvbShuZXcgU2V0PHN0cmluZz4obGlzdGVkU3VibmV0cy5tYXAocyA9PiBzLkF2YWlsYWJpbGl0eVpvbmUhKSkpO1xuICAgIGF6cy5zb3J0KCk7XG5cbiAgICBjb25zdCBzdWJuZXRzOiBTdWJuZXRbXSA9IGxpc3RlZFN1Ym5ldHMubWFwKHN1Ym5ldCA9PiB7XG4gICAgICBsZXQgdHlwZSA9IGdldFRhZygnYXdzLWNkazpzdWJuZXQtdHlwZScsIHN1Ym5ldC5UYWdzKTtcbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgJiYgc3VibmV0Lk1hcFB1YmxpY0lwT25MYXVuY2gpIHsgdHlwZSA9IFN1Ym5ldFR5cGUuUHVibGljOyB9XG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkICYmIHJvdXRlVGFibGVzLmhhc1JvdXRlVG9JZ3coc3VibmV0LlN1Ym5ldElkKSkgeyB0eXBlID0gU3VibmV0VHlwZS5QdWJsaWM7IH1cbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgJiYgcm91dGVUYWJsZXMuaGFzUm91dGVUb05hdEdhdGV3YXkoc3VibmV0LlN1Ym5ldElkKSkgeyB0eXBlID0gU3VibmV0VHlwZS5Qcml2YXRlOyB9XG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7IHR5cGUgPSBTdWJuZXRUeXBlLklzb2xhdGVkOyB9XG5cbiAgICAgIGlmICghaXNWYWxpZFN1Ym5ldFR5cGUodHlwZSkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdWJuZXQgJHtzdWJuZXQuU3VibmV0QXJufSBoYXMgaW52YWxpZCBzdWJuZXQgdHlwZSAke3R5cGV9IChtdXN0IGJlICR7U3VibmV0VHlwZS5QdWJsaWN9LCAke1N1Ym5ldFR5cGUuUHJpdmF0ZX0gb3IgJHtTdWJuZXRUeXBlLklzb2xhdGVkfSlgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3Muc3VibmV0R3JvdXBOYW1lVGFnICYmICFnZXRUYWcoYXJncy5zdWJuZXRHcm91cE5hbWVUYWcsIHN1Ym5ldC5UYWdzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3VibmV0R3JvdXBOYW1lVGFnOiBTdWJuZXQgJHtzdWJuZXQuU3VibmV0QXJufSBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGFnIHdpdGggS2V5PScke2FyZ3Muc3VibmV0R3JvdXBOYW1lVGFnfSdgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmFtZSA9IGdldFRhZyhhcmdzLnN1Ym5ldEdyb3VwTmFtZVRhZyB8fCAnYXdzLWNkazpzdWJuZXQtbmFtZScsIHN1Ym5ldC5UYWdzKSB8fCB0eXBlO1xuICAgICAgY29uc3Qgcm91dGVUYWJsZUlkID0gcm91dGVUYWJsZXMucm91dGVUYWJsZUlkRm9yU3VibmV0SWQoc3VibmV0LlN1Ym5ldElkKTtcblxuICAgICAgaWYgKCFyb3V0ZVRhYmxlSWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdWJuZXQgJHtzdWJuZXQuU3VibmV0QXJufSBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgcm91dGUgdGFibGUgKGFuZCB0aGVyZSBpcyBubyBcIm1haW5cIiB0YWJsZSlgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXo6IHN1Ym5ldC5BdmFpbGFiaWxpdHlab25lISxcbiAgICAgICAgY2lkcjogc3VibmV0LkNpZHJCbG9jayEsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHN1Ym5ldElkOiBzdWJuZXQuU3VibmV0SWQhLFxuICAgICAgICByb3V0ZVRhYmxlSWQsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgbGV0IGdyb3VwZWQ6IFN1Ym5ldEdyb3VwcztcbiAgICBsZXQgYXNzeW1ldHJpY1N1Ym5ldEdyb3VwczogY3hhcGkuVnBjU3VibmV0R3JvdXBbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoYXJncy5yZXR1cm5Bc3ltbWV0cmljU3VibmV0cykge1xuICAgICAgZ3JvdXBlZCA9IHsgYXpzOiBbXSwgZ3JvdXBzOiBbXSB9O1xuICAgICAgYXNzeW1ldHJpY1N1Ym5ldEdyb3VwcyA9IGdyb3VwQXN5bW1ldHJpY1N1Ym5ldHMoc3VibmV0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwZWQgPSBncm91cFN1Ym5ldHMoc3VibmV0cyk7XG4gICAgICBhc3N5bWV0cmljU3VibmV0R3JvdXBzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIEZpbmQgYXR0YWNoZWQrYXZhaWxhYmxlIFZQTiBnYXRld2F5IGZvciB0aGlzIFZQQ1xuICAgIGNvbnN0IHZwbkdhdGV3YXlSZXNwb25zZSA9IGF3YWl0IGVjMi5kZXNjcmliZVZwbkdhdGV3YXlzKHtcbiAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIE5hbWU6ICdhdHRhY2htZW50LnZwYy1pZCcsXG4gICAgICAgICAgVmFsdWVzOiBbdnBjSWRdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTmFtZTogJ2F0dGFjaG1lbnQuc3RhdGUnLFxuICAgICAgICAgIFZhbHVlczogWydhdHRhY2hlZCddLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTmFtZTogJ3N0YXRlJyxcbiAgICAgICAgICBWYWx1ZXM6IFsnYXZhaWxhYmxlJ10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pLnByb21pc2UoKTtcbiAgICBjb25zdCB2cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5UmVzcG9uc2UuVnBuR2F0ZXdheXMgJiYgdnBuR2F0ZXdheVJlc3BvbnNlLlZwbkdhdGV3YXlzLmxlbmd0aCA9PT0gMVxuICAgICAgPyB2cG5HYXRld2F5UmVzcG9uc2UuVnBuR2F0ZXdheXNbMF0uVnBuR2F0ZXdheUlkXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICB2cGNJZCxcbiAgICAgIHZwY0NpZHJCbG9jazogdnBjLkNpZHJCbG9jayEsXG4gICAgICBhdmFpbGFiaWxpdHlab25lczogZ3JvdXBlZC5henMsXG4gICAgICBpc29sYXRlZFN1Ym5ldElkczogY29sbGFwc2UoZmxhdE1hcChmaW5kR3JvdXBzKFN1Ym5ldFR5cGUuSXNvbGF0ZWQsIGdyb3VwZWQpLCBncm91cCA9PiBncm91cC5zdWJuZXRzLm1hcChzID0+IHMuc3VibmV0SWQpKSksXG4gICAgICBpc29sYXRlZFN1Ym5ldE5hbWVzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Jc29sYXRlZCwgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLm5hbWUgPyBbZ3JvdXAubmFtZV0gOiBbXSkpLFxuICAgICAgaXNvbGF0ZWRTdWJuZXRSb3V0ZVRhYmxlSWRzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Jc29sYXRlZCwgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5yb3V0ZVRhYmxlSWQpKSksXG4gICAgICBwcml2YXRlU3VibmV0SWRzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Qcml2YXRlLCBncm91cGVkKSwgZ3JvdXAgPT4gZ3JvdXAuc3VibmV0cy5tYXAocyA9PiBzLnN1Ym5ldElkKSkpLFxuICAgICAgcHJpdmF0ZVN1Ym5ldE5hbWVzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5Qcml2YXRlLCBncm91cGVkKSwgZ3JvdXAgPT4gZ3JvdXAubmFtZSA/IFtncm91cC5uYW1lXSA6IFtdKSksXG4gICAgICBwcml2YXRlU3VibmV0Um91dGVUYWJsZUlkczogY29sbGFwc2UoZmxhdE1hcChmaW5kR3JvdXBzKFN1Ym5ldFR5cGUuUHJpdmF0ZSwgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5yb3V0ZVRhYmxlSWQpKSksXG4gICAgICBwdWJsaWNTdWJuZXRJZHM6IGNvbGxhcHNlKGZsYXRNYXAoZmluZEdyb3VwcyhTdWJuZXRUeXBlLlB1YmxpYywgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5zdWJuZXRJZCkpKSxcbiAgICAgIHB1YmxpY1N1Ym5ldE5hbWVzOiBjb2xsYXBzZShmbGF0TWFwKGZpbmRHcm91cHMoU3VibmV0VHlwZS5QdWJsaWMsIGdyb3VwZWQpLCBncm91cCA9PiBncm91cC5uYW1lID8gW2dyb3VwLm5hbWVdIDogW10pKSxcbiAgICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IGNvbGxhcHNlKGZsYXRNYXAoZmluZEdyb3VwcyhTdWJuZXRUeXBlLlB1YmxpYywgZ3JvdXBlZCksIGdyb3VwID0+IGdyb3VwLnN1Ym5ldHMubWFwKHMgPT4gcy5yb3V0ZVRhYmxlSWQpKSksXG4gICAgICB2cG5HYXRld2F5SWQsXG4gICAgICBzdWJuZXRHcm91cHM6IGFzc3ltZXRyaWNTdWJuZXRHcm91cHMsXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBSb3V0ZVRhYmxlcyB7XG4gIHB1YmxpYyByZWFkb25seSBtYWluUm91dGVUYWJsZT86IEFXUy5FQzIuUm91dGVUYWJsZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRhYmxlczogQVdTLkVDMi5Sb3V0ZVRhYmxlW10pIHtcbiAgICB0aGlzLm1haW5Sb3V0ZVRhYmxlID0gdGhpcy50YWJsZXMuZmluZCh0YWJsZSA9PiAhIXRhYmxlLkFzc29jaWF0aW9ucyAmJiB0YWJsZS5Bc3NvY2lhdGlvbnMuc29tZShhc3NvYyA9PiAhIWFzc29jLk1haW4pKTtcbiAgfVxuXG4gIHB1YmxpYyByb3V0ZVRhYmxlSWRGb3JTdWJuZXRJZChzdWJuZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGVGb3JTdWJuZXQoc3VibmV0SWQpO1xuICAgIHJldHVybiAodGFibGUgJiYgdGFibGUuUm91dGVUYWJsZUlkKSB8fCAodGhpcy5tYWluUm91dGVUYWJsZSAmJiB0aGlzLm1haW5Sb3V0ZVRhYmxlLlJvdXRlVGFibGVJZCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ2l2ZW4gc3VibmV0IGhhcyBhIHJvdXRlIHRvIGEgTkFUIEdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyBoYXNSb3V0ZVRvTmF0R2F0ZXdheShzdWJuZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlRm9yU3VibmV0KHN1Ym5ldElkKSB8fCB0aGlzLm1haW5Sb3V0ZVRhYmxlO1xuXG4gICAgcmV0dXJuICEhdGFibGUgJiYgISF0YWJsZS5Sb3V0ZXMgJiYgdGFibGUuUm91dGVzLnNvbWUocm91dGUgPT4gISFyb3V0ZS5OYXRHYXRld2F5SWQgJiYgcm91dGUuRGVzdGluYXRpb25DaWRyQmxvY2sgPT09ICcwLjAuMC4wLzAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBnaXZlbiBzdWJuZXQgaGFzIGEgcm91dGUgdG8gYW4gSUdXXG4gICAqL1xuICBwdWJsaWMgaGFzUm91dGVUb0lndyhzdWJuZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlRm9yU3VibmV0KHN1Ym5ldElkKSB8fCB0aGlzLm1haW5Sb3V0ZVRhYmxlO1xuXG4gICAgcmV0dXJuICEhdGFibGUgJiYgISF0YWJsZS5Sb3V0ZXMgJiYgdGFibGUuUm91dGVzLnNvbWUocm91dGUgPT4gISFyb3V0ZS5HYXRld2F5SWQgJiYgcm91dGUuR2F0ZXdheUlkLnN0YXJ0c1dpdGgoJ2lndy0nKSk7XG4gIH1cblxuICBwdWJsaWMgdGFibGVGb3JTdWJuZXQoc3VibmV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlcy5maW5kKHRhYmxlID0+ICEhdGFibGUuQXNzb2NpYXRpb25zICYmIHRhYmxlLkFzc29jaWF0aW9ucy5zb21lKGFzc29jID0+IGFzc29jLlN1Ym5ldElkID09PSBzdWJuZXRJZCkpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIHRhZyBmcm9tIGEgc2V0IG9mIHRhZ3NcbiAqL1xuZnVuY3Rpb24gZ2V0VGFnKG5hbWU6IHN0cmluZywgdGFncz86IEFXUy5FQzIuVGFnW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzIHx8IFtdKSB7XG4gICAgaWYgKHRhZy5LZXkgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiB0YWcuVmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR3JvdXAgc3VibmV0cyBvZiB0aGUgc2FtZSB0eXBlIHRvZ2V0aGVyLCBhbmQgb3JkZXIgYnkgQVpcbiAqL1xuZnVuY3Rpb24gZ3JvdXBTdWJuZXRzKHN1Ym5ldHM6IFN1Ym5ldFtdKTogU3VibmV0R3JvdXBzIHtcbiAgY29uc3QgZ3JvdXBpbmc6IHtba2V5OiBzdHJpbmddOiBTdWJuZXRbXX0gPSB7fTtcbiAgZm9yIChjb25zdCBzdWJuZXQgb2Ygc3VibmV0cykge1xuICAgIGNvbnN0IGtleSA9IFtzdWJuZXQudHlwZSwgc3VibmV0Lm5hbWVdLnRvU3RyaW5nKCk7XG4gICAgaWYgKCEoa2V5IGluIGdyb3VwaW5nKSkgeyBncm91cGluZ1trZXldID0gW107IH1cbiAgICBncm91cGluZ1trZXldLnB1c2goc3VibmV0KTtcbiAgfVxuXG4gIGNvbnN0IGdyb3VwcyA9IE9iamVjdC52YWx1ZXMoZ3JvdXBpbmcpLm1hcChzbnMgPT4ge1xuICAgIHNucy5zb3J0KChhOiBTdWJuZXQsIGI6IFN1Ym5ldCkgPT4gYS5hei5sb2NhbGVDb21wYXJlKGIuYXopKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogc25zWzBdLnR5cGUsXG4gICAgICBuYW1lOiBzbnNbMF0ubmFtZSxcbiAgICAgIHN1Ym5ldHM6IHNucyxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdCBhenMgPSBncm91cHNbMF0uc3VibmV0cy5tYXAocyA9PiBzLmF6KTtcblxuICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgIGNvbnN0IGdyb3VwQVpzID0gZ3JvdXAuc3VibmV0cy5tYXAocyA9PiBzLmF6KTtcbiAgICBpZiAoIWFycmF5c0VxdWFsKGdyb3VwQVpzLCBhenMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBhbGwgc3VibmV0cyBpbiBWUEMgaGF2ZSB0aGUgc2FtZSBBWnM6ICR7Z3JvdXBBWnN9IHZzICR7YXpzfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGF6cywgZ3JvdXBzIH07XG59XG5cbmZ1bmN0aW9uIGdyb3VwQXN5bW1ldHJpY1N1Ym5ldHMoc3VibmV0czogU3VibmV0W10pOiBjeGFwaS5WcGNTdWJuZXRHcm91cFtdIHtcbiAgY29uc3QgZ3JvdXBpbmc6IHsgW2tleTogc3RyaW5nXTogU3VibmV0W10gfSA9IHt9O1xuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBzdWJuZXRzKSB7XG4gICAgY29uc3Qga2V5ID0gW3N1Ym5ldC50eXBlLCBzdWJuZXQubmFtZV0udG9TdHJpbmcoKTtcbiAgICBpZiAoIShrZXkgaW4gZ3JvdXBpbmcpKSB7XG4gICAgICBncm91cGluZ1trZXldID0gW107XG4gICAgfVxuICAgIGdyb3VwaW5nW2tleV0ucHVzaChzdWJuZXQpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZ3JvdXBpbmcpLm1hcChzdWJuZXRBcnJheSA9PiB7XG4gICAgc3VibmV0QXJyYXkuc29ydCgoc3VibmV0MTogU3VibmV0LCBzdWJuZXQyOiBTdWJuZXQpID0+IHN1Ym5ldDEuYXoubG9jYWxlQ29tcGFyZShzdWJuZXQyLmF6KSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogc3VibmV0QXJyYXlbMF0ubmFtZSxcbiAgICAgIHR5cGU6IHN1Ym5ldFR5cGVUb1ZwY1N1Ym5ldFR5cGUoc3VibmV0QXJyYXlbMF0udHlwZSksXG4gICAgICBzdWJuZXRzOiBzdWJuZXRBcnJheS5tYXAoc3VibmV0ID0+ICh7XG4gICAgICAgIHN1Ym5ldElkOiBzdWJuZXQuc3VibmV0SWQsXG4gICAgICAgIGNpZHI6IHN1Ym5ldC5jaWRyLFxuICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBzdWJuZXQuYXosXG4gICAgICAgIHJvdXRlVGFibGVJZDogc3VibmV0LnJvdXRlVGFibGVJZCxcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3VibmV0VHlwZVRvVnBjU3VibmV0VHlwZSh0eXBlOiBTdWJuZXRUeXBlKTogY3hhcGkuVnBjU3VibmV0R3JvdXBUeXBlIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBTdWJuZXRUeXBlLklzb2xhdGVkOiByZXR1cm4gY3hhcGkuVnBjU3VibmV0R3JvdXBUeXBlLklTT0xBVEVEO1xuICAgIGNhc2UgU3VibmV0VHlwZS5Qcml2YXRlOiByZXR1cm4gY3hhcGkuVnBjU3VibmV0R3JvdXBUeXBlLlBSSVZBVEU7XG4gICAgY2FzZSBTdWJuZXRUeXBlLlB1YmxpYzogcmV0dXJuIGN4YXBpLlZwY1N1Ym5ldEdyb3VwVHlwZS5QVUJMSUM7XG4gIH1cbn1cblxuZW51bSBTdWJuZXRUeXBlIHtcbiAgUHVibGljID0gJ1B1YmxpYycsXG4gIFByaXZhdGUgPSAnUHJpdmF0ZScsXG4gIElzb2xhdGVkID0gJ0lzb2xhdGVkJ1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkU3VibmV0VHlwZSh2YWw6IHN0cmluZyk6IHZhbCBpcyBTdWJuZXRUeXBlIHtcbiAgcmV0dXJuIHZhbCA9PT0gU3VibmV0VHlwZS5QdWJsaWNcbiAgICB8fCB2YWwgPT09IFN1Ym5ldFR5cGUuUHJpdmF0ZVxuICAgIHx8IHZhbCA9PT0gU3VibmV0VHlwZS5Jc29sYXRlZDtcbn1cblxuaW50ZXJmYWNlIFN1Ym5ldCB7XG4gIGF6OiBzdHJpbmc7XG4gIGNpZHI6IHN0cmluZztcbiAgdHlwZTogU3VibmV0VHlwZTtcbiAgbmFtZTogc3RyaW5nO1xuICByb3V0ZVRhYmxlSWQ6IHN0cmluZztcbiAgc3VibmV0SWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN1Ym5ldEdyb3VwIHtcbiAgdHlwZTogU3VibmV0VHlwZTtcbiAgbmFtZTogc3RyaW5nO1xuICBzdWJuZXRzOiBTdWJuZXRbXTtcbn1cblxuaW50ZXJmYWNlIFN1Ym5ldEdyb3VwcyB7XG4gIGF6czogc3RyaW5nW107XG4gIGdyb3VwczogU3VibmV0R3JvdXBbXTtcbn1cblxuZnVuY3Rpb24gYXJyYXlzRXF1YWwoYXM6IHN0cmluZ1tdLCBiczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgaWYgKGFzLmxlbmd0aCAhPT0gYnMubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXNbaV0gIT09IGJzW2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZpbmRHcm91cHModHlwZTogU3VibmV0VHlwZSwgZ3JvdXBzOiBTdWJuZXRHcm91cHMpOiBTdWJuZXRHcm91cFtdIHtcbiAgcmV0dXJuIGdyb3Vwcy5ncm91cHMuZmlsdGVyKGcgPT4gZy50eXBlID09PSB0eXBlKTtcbn1cblxuZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmbjogKHg6IFQpID0+IFVbXSk6IFVbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxVPigpO1xuICBmb3IgKGNvbnN0IHggb2YgeHMpIHtcbiAgICByZXQucHVzaCguLi5mbih4KSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gY29sbGFwc2U8VD4oeHM6IFRbXSk6IFRbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICh4cy5sZW5ndGggPiAwKSB7IHJldHVybiB4czsgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xuXG59XG4iXX0=
|
package/lib/plugin.d.ts
CHANGED
|
@@ -69,7 +69,21 @@ export declare class PluginHost {
|
|
|
69
69
|
* This feature is experimental, and only intended to be used internally at Amazon
|
|
70
70
|
* as a trial.
|
|
71
71
|
*
|
|
72
|
+
* After registering with 'my-plugin-name', the provider must be addressed as follows:
|
|
73
|
+
*
|
|
74
|
+
* ```ts
|
|
75
|
+
* const value = ContextProvider.getValue(this, {
|
|
76
|
+
* providerName: 'plugin',
|
|
77
|
+
* props: {
|
|
78
|
+
* pluginName: 'my-plugin-name',
|
|
79
|
+
* myParameter1: 'xyz',
|
|
80
|
+
* },
|
|
81
|
+
* includeEnvironment: true | false,
|
|
82
|
+
* dummyValue: 'what-to-return-on-the-first-pass',
|
|
83
|
+
* })
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
72
86
|
* @experimental
|
|
73
87
|
*/
|
|
74
|
-
registerContextProviderAlpha(
|
|
88
|
+
registerContextProviderAlpha(pluginProviderName: string, provider: ContextProviderPlugin): void;
|
|
75
89
|
}
|
package/lib/plugin.js
CHANGED
|
@@ -71,15 +71,29 @@ class PluginHost {
|
|
|
71
71
|
* This feature is experimental, and only intended to be used internally at Amazon
|
|
72
72
|
* as a trial.
|
|
73
73
|
*
|
|
74
|
+
* After registering with 'my-plugin-name', the provider must be addressed as follows:
|
|
75
|
+
*
|
|
76
|
+
* ```ts
|
|
77
|
+
* const value = ContextProvider.getValue(this, {
|
|
78
|
+
* providerName: 'plugin',
|
|
79
|
+
* props: {
|
|
80
|
+
* pluginName: 'my-plugin-name',
|
|
81
|
+
* myParameter1: 'xyz',
|
|
82
|
+
* },
|
|
83
|
+
* includeEnvironment: true | false,
|
|
84
|
+
* dummyValue: 'what-to-return-on-the-first-pass',
|
|
85
|
+
* })
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
74
88
|
* @experimental
|
|
75
89
|
*/
|
|
76
|
-
registerContextProviderAlpha(
|
|
90
|
+
registerContextProviderAlpha(pluginProviderName, provider) {
|
|
77
91
|
if (!provider_1.isContextProviderPlugin(provider)) {
|
|
78
92
|
throw new Error(`Object you gave me does not look like a ContextProviderPlugin: ${util_1.inspect(provider)}`);
|
|
79
93
|
}
|
|
80
|
-
context_providers_1.
|
|
94
|
+
context_providers_1.registerPluginContextProvider(pluginProviderName, provider);
|
|
81
95
|
}
|
|
82
96
|
}
|
|
83
97
|
exports.PluginHost = PluginHost;
|
|
84
98
|
PluginHost.instance = new PluginHost();
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFHL0IsMkRBQW9FO0FBQ3BFLDJEQUE4RjtBQUM5Rix1Q0FBa0M7QUFpQ2xDOzs7R0FHRztBQUNILE1BQWEsVUFBVTtJQVNyQjtRQU5BOzs7V0FHRztRQUNhLDhCQUF5QixHQUFHLElBQUksS0FBSyxFQUE0QixDQUFDO1FBR2hGLElBQUksVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGlGQUFpRixDQUFDLENBQUM7U0FDcEc7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxVQUFrQjtRQUM1QixJQUFJO1lBQ0YsMERBQTBEO1lBQzFELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuQyxtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDckIsZUFBSyxDQUFDLFVBQVUsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMseURBQXlELENBQUMsQ0FBQztnQkFDbEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLFVBQVUsbUNBQW1DLENBQUMsQ0FBQzthQUMxRTtZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUFFO1NBQ3ZEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixlQUFLLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUVELFNBQVMsUUFBUSxDQUFDLENBQU07WUFDdEIsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdDQUFnQyxDQUFDLE1BQWdDO1FBQ3RFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ0ksNEJBQTRCLENBQUMsa0JBQTBCLEVBQUUsUUFBK0I7UUFDN0YsSUFBSSxDQUFDLGtDQUF1QixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLGNBQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEc7UUFDRCxpREFBNkIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXRGSCxnQ0F1RkM7QUF0RmUsbUJBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UgfSBmcm9tICcuL2FwaS9hd3MtYXV0aC9jcmVkZW50aWFscyc7XG5pbXBvcnQgeyByZWdpc3RlclBsdWdpbkNvbnRleHRQcm92aWRlciB9IGZyb20gJy4vY29udGV4dC1wcm92aWRlcnMnO1xuaW1wb3J0IHsgQ29udGV4dFByb3ZpZGVyUGx1Z2luLCBpc0NvbnRleHRQcm92aWRlclBsdWdpbiB9IGZyb20gJy4vY29udGV4dC1wcm92aWRlcnMvcHJvdmlkZXInO1xuaW1wb3J0IHsgZXJyb3IgfSBmcm9tICcuL2xvZ2dpbmcnO1xuXG4vKipcbiAqIFRoZSBiYXNpYyBjb250cmFjdCBmb3IgcGx1Zy1pbnMgdG8gYWRoZXJlIHRvOjpcbiAqXG4gKiAgIGltcG9ydCB7IFBsdWdpbiwgUGx1Z2luSG9zdCB9IGZyb20gJ2F3cy1jZGsnO1xuICogICBpbXBvcnQgeyBDdXN0b21DcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UgfSBmcm9tICcuL2N1c3RvbS1jcmVkZW50aWFsLXByb3ZpZGVyLXNvdXJjZSc7XG4gKlxuICogICBleHBvcnQgZGVmYXVsdCBjbGFzcyBGb29DREtQbHVnSW4gaW1wbGVtZW50cyBQbHVnaW5Ib3N0IHtcbiAqICAgICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbiA9ICcxJztcbiAqXG4gKiAgICAgcHVibGljIGluaXQoaG9zdDogUGx1Z2luSG9zdCkge1xuICogICAgIGhvc3QucmVnaXN0ZXJDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UobmV3IEN1c3RvbUNyZWRlbnRpYWxQcm92aWRlclNvdXJjZSgpKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luIHtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBwbHVnLWluIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBwbHVnLWluLiBUaGlzIHdpbGwgYmUgdXNlZCBieVxuICAgKiB0aGUgcGx1Zy1pbiBob3N0IHRvIGhhbmRsZSB2ZXJzaW9uIGNoYW5nZXMuXG4gICAqL1xuICB2ZXJzaW9uOiAnMSc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIHJpZ2h0IGFmdGVyIHRoZSBwbHVnLWluIGhhcyBiZWVuIGxvYWRlZCxcbiAgICogc28gdGhhdCB0aGUgcGx1Zy1pbiBpcyBhYmxlIHRvIGluaXRpYWxpemUgaXRzZWxmLiBJdCBtYXkgY2FsbCBtZXRob2RzIG9mIHRoZVxuICAgKiBgYFBsdWdpbkhvc3RgYCBpbnN0YW5jZSBpdCByZWNlaXZlcyB0byByZWdpc3RlciBuZXcgYGBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VgYFxuICAgKiBpbnN0YW5jZXMuXG4gICAqL1xuICBpbml0PzogKGhvc3Q6IFBsdWdpbkhvc3QpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQSB1dGlsaXR5IHRvIG1hbmFnZSBwbHVnLWlucy5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3N0IHtcbiAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSA9IG5ldyBQbHVnaW5Ib3N0KCk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy4gTmV3IHNvdXJjZXMgY2FuXG4gICAqIGJlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlICtyZWdpc3RlckNyZWRlbnRpYWxQcm92aWRlclNvdXJjZSsgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlclNvdXJjZXMgPSBuZXcgQXJyYXk8Q3JlZGVudGlhbFByb3ZpZGVyU291cmNlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmIChQbHVnaW5Ib3N0Lmluc3RhbmNlICYmIFBsdWdpbkhvc3QuaW5zdGFuY2UgIT09IHRoaXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTmV3IGluc3RhbmNlcyBvZiBQbHVnaW5Ib3N0IG11c3Qgbm90IGJlIGJ1aWx0LiBVc2UgUGx1Z2luSG9zdC5pbnN0YW5jZSBpbnN0ZWFkIScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHBsdWctaW4gaW50byB0aGlzIFBsdWdpbkhvc3QuXG4gICAqXG4gICAqIEBwYXJhbSBtb2R1bGVTcGVjIHRoZSBzcGVjaWZpY2F0aW9uIChwYXRoIG9yIG5hbWUpIG9mIHRoZSBwbHVnLWluIG1vZHVsZSB0byBiZSBsb2FkZWQuXG4gICAqL1xuICBwdWJsaWMgbG9hZChtb2R1bGVTcGVjOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuICAgICAgY29uc3QgcGx1Z2luID0gcmVxdWlyZShtb2R1bGVTcGVjKTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgIGlmICghaXNQbHVnaW4ocGx1Z2luKSkge1xuICAgICAgICBlcnJvcihgTW9kdWxlICR7Y2hhbGsuZ3JlZW4obW9kdWxlU3BlYyl9IGlzIG5vdCBhIHZhbGlkIHBsdWctaW4sIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB2ZXJzaW9uLmApO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSAke21vZHVsZVNwZWN9IGRvZXMgbm90IGRlZmluZSBhIHZhbGlkIHBsdWctaW4uYCk7XG4gICAgICB9XG4gICAgICBpZiAocGx1Z2luLmluaXQpIHsgcGx1Z2luLmluaXQoUGx1Z2luSG9zdC5pbnN0YW5jZSk7IH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvcihgVW5hYmxlIHRvIGxvYWQgJHtjaGFsay5ncmVlbihtb2R1bGVTcGVjKX06ICR7ZS5zdGFja31gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgcGx1Zy1pbjogJHttb2R1bGVTcGVjfWApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUGx1Z2luKHg6IGFueSk6IHggaXMgUGx1Z2luIHtcbiAgICAgIHJldHVybiB4ICE9IG51bGwgJiYgeC52ZXJzaW9uID09PSAnMSc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBwbHVnLWlucyB0byByZWdpc3RlciBuZXcgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZSBhIG5ldyBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2Uoc291cmNlOiBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlclNvdXJjZXMucHVzaChzb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIChFWFBFUklNRU5UQUwpIEFsbG93IHBsdWdpbnMgdG8gcmVnaXN0ZXIgY29udGV4dCBwcm92aWRlcnNcbiAgICpcbiAgICogQ29udGV4dCBwcm92aWRlcnMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIG1ldGhvZDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogICBnZXRWYWx1ZShhcmdzOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PjtcbiAgICogYGBgXG4gICAqXG4gICAqIEN1cnJlbnRseSwgdGhleSBjYW5ub3QgcmV1c2UgdGhlIENESydzIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMsIHNvIHRoZXlcbiAgICogbXVzdCBiZSBwcmVwYXJlZCB0byBlaXRoZXIgbm90IG1ha2UgQVdTIGNhbGxzIG9yIHVzZSB0aGVpciBvd24gc291cmNlIG9mXG4gICAqIEFXUyBjcmVkZW50aWFscy5cbiAgICpcbiAgICogVGhpcyBmZWF0dXJlIGlzIGV4cGVyaW1lbnRhbCwgYW5kIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IGF0IEFtYXpvblxuICAgKiBhcyBhIHRyaWFsLlxuICAgKlxuICAgKiBBZnRlciByZWdpc3RlcmluZyB3aXRoICdteS1wbHVnaW4tbmFtZScsIHRoZSBwcm92aWRlciBtdXN0IGJlIGFkZHJlc3NlZCBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCB2YWx1ZSA9IENvbnRleHRQcm92aWRlci5nZXRWYWx1ZSh0aGlzLCB7XG4gICAqICAgcHJvdmlkZXJOYW1lOiAncGx1Z2luJyxcbiAgICogICBwcm9wczoge1xuICAgKiAgICAgcGx1Z2luTmFtZTogJ215LXBsdWdpbi1uYW1lJyxcbiAgICogICAgIG15UGFyYW1ldGVyMTogJ3h5eicsXG4gICAqICAgfSxcbiAgICogICBpbmNsdWRlRW52aXJvbm1lbnQ6IHRydWUgfCBmYWxzZSxcbiAgICogICBkdW1teVZhbHVlOiAnd2hhdC10by1yZXR1cm4tb24tdGhlLWZpcnN0LXBhc3MnLFxuICAgKiB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29udGV4dFByb3ZpZGVyQWxwaGEocGx1Z2luUHJvdmlkZXJOYW1lOiBzdHJpbmcsIHByb3ZpZGVyOiBDb250ZXh0UHJvdmlkZXJQbHVnaW4pIHtcbiAgICBpZiAoIWlzQ29udGV4dFByb3ZpZGVyUGx1Z2luKHByb3ZpZGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPYmplY3QgeW91IGdhdmUgbWUgZG9lcyBub3QgbG9vayBsaWtlIGEgQ29udGV4dFByb3ZpZGVyUGx1Z2luOiAke2luc3BlY3QocHJvdmlkZXIpfWApO1xuICAgIH1cbiAgICByZWdpc3RlclBsdWdpbkNvbnRleHRQcm92aWRlcihwbHVnaW5Qcm92aWRlck5hbWUsIHByb3ZpZGVyKTtcbiAgfVxufVxuIl19
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.publishAssets = void 0;
|
|
4
4
|
const cxapi = require("@aws-cdk/cx-api");
|
|
5
5
|
const cdk_assets = require("cdk-assets");
|
|
6
|
-
const
|
|
6
|
+
const credentials_1 = require("../api/aws-auth/credentials");
|
|
7
7
|
const logging_1 = require("../logging");
|
|
8
8
|
/**
|
|
9
9
|
* Use cdk-assets to publish all assets in the given manifest.
|
|
@@ -42,7 +42,7 @@ class PublishingAws {
|
|
|
42
42
|
}
|
|
43
43
|
async discoverPartition() {
|
|
44
44
|
var _a;
|
|
45
|
-
return (_a = (await this.aws.baseCredentialsPartition(this.targetEnv,
|
|
45
|
+
return (_a = (await this.aws.baseCredentialsPartition(this.targetEnv, credentials_1.Mode.ForWriting))) !== null && _a !== void 0 ? _a : 'aws';
|
|
46
46
|
}
|
|
47
47
|
async discoverDefaultRegion() {
|
|
48
48
|
return this.targetEnv.region;
|
|
@@ -84,7 +84,7 @@ class PublishingAws {
|
|
|
84
84
|
if (maybeSdk) {
|
|
85
85
|
return maybeSdk;
|
|
86
86
|
}
|
|
87
|
-
const sdk = (await this.aws.forEnvironment(env,
|
|
87
|
+
const sdk = (await this.aws.forEnvironment(env, credentials_1.Mode.ForWriting, {
|
|
88
88
|
assumeRoleArn: options.assumeRoleArn,
|
|
89
89
|
assumeRoleExternalId: options.assumeRoleExternalId,
|
|
90
90
|
})).sdk;
|
|
@@ -108,4 +108,4 @@ class PublishingProgressListener {
|
|
|
108
108
|
EVENT_TO_LOGGER[type](`[${event.percentComplete}%] ${type}: ${event.message}`);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2V0LXB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBRXpDLHlDQUF5QztBQUN6Qyw2REFBbUQ7QUFHbkQsd0NBQWlEO0FBRWpEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFrQyxFQUFFLEdBQWdCLEVBQUUsU0FBNEI7SUFDcEgsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLGVBQWU7V0FDN0UsU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsY0FBYyxFQUFFO1FBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzVHO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUN0QyxnQkFBZ0IsRUFBRSxJQUFJLDBCQUEwQixFQUFFO1FBQ2xELFlBQVksRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDBGQUEwRixDQUFDLENBQUM7S0FDN0c7QUFDSCxDQUFDO0FBakJELHNDQWlCQztBQUVELE1BQU0sYUFBYTtJQUdqQjtJQUNFOztPQUVHO0lBQ2MsR0FBZ0I7SUFFakM7O09BRUc7SUFDYyxTQUE0QjtRQUw1QixRQUFHLEdBQUgsR0FBRyxD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QUNaLEtBQUssRUFBRSxlQUFLO0lBQ1osT0FBTyxFQUFFLGVBQUs7SUFDZCxNQUFNLEVBQUUsZUFBSztDQUNkLENBQUM7QUFFRixNQUFNLDBCQUEwQjtJQUN2QixjQUFjLENBQUMsSUFBMEIsRUFBRSxLQUFrQztRQUNsRixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsZUFBZSxNQUFNLElBQUksS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgY2RrX2Fzc2V0cyBmcm9tICdjZGstYXNzZXRzJztcbmltcG9ydCB7IE1vZGUgfSBmcm9tICcuLi9hcGkvYXdzLWF1dGgvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgSVNESyB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9zZGsnO1xuaW1wb3J0IHsgU2RrUHJvdmlkZXIgfSBmcm9tICcuLi9hcGkvYXdzLWF1dGgvc2RrLXByb3ZpZGVyJztcbmltcG9ydCB7IGRlYnVnLCBlcnJvciwgcHJpbnQgfSBmcm9tICcuLi9sb2dnaW5nJztcblxuLyoqXG4gKiBVc2UgY2RrLWFzc2V0cyB0byBwdWJsaXNoIGFsbCBhc3NldHMgaW4gdGhlIGdpdmVuIG1hbmlmZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaEFzc2V0cyhtYW5pZmVzdDogY2RrX2Fzc2V0cy5Bc3NldE1hbmlmZXN0LCBzZGs6IFNka1Byb3ZpZGVyLCB0YXJnZXRFbnY6IGN4YXBpLkVudmlyb25tZW50KSB7XG4gIC8vIFRoaXMgc2hvdWxkbid0IHJlYWxseSBoYXBwZW4gKGl0J3MgYSBwcm9ncmFtbWluZyBlcnJvciksIGJ1dCB3ZSBkb24ndCBoYXZlXG4gIC8vIHRoZSB0eXBlcyBoZXJlIHRvIGd1aWRlIHVzLiBEbyBhbiBydW50aW1lIHZhbGlkYXRpb24gdG8gYmUgc3VwZXIgc3VwZXIgc3VyZS5cbiAgaWYgKHRhcmdldEVudi5hY2NvdW50ID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0RW52LmFjY291bnQgPT09IGN4YXBpLlVOS05PV05fQUNDT1VOVFxuICAgIHx8IHRhcmdldEVudi5yZWdpb24gPT09IHVuZGVmaW5lZCB8fCB0YXJnZXRFbnYuYWNjb3VudCA9PT0gY3hhcGkuVU5LTk9XTl9SRUdJT04pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2V0IHB1Ymxpc2hpbmcgcmVxdWlyZXMgcmVzb2x2ZWQgYWNjb3VudCBhbmQgcmVnaW9uLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRFbnYpfWApO1xuICB9XG5cbiAgY29uc3QgcHVibGlzaGVyID0gbmV3IGNka19hc3NldHMuQXNzZXRQdWJsaXNoaW5nKG1hbmlmZXN0LCB7XG4gICAgYXdzOiBuZXcgUHVibGlzaGluZ0F3cyhzZGssIHRhcmdldEVudiksXG4gICAgcHJvZ3Jlc3NMaXN0ZW5lcjogbmV3IFB1Ymxpc2hpbmdQcm9ncmVzc0xpc3RlbmVyKCksXG4gICAgdGhyb3dPbkVycm9yOiBmYWxzZSxcbiAgfSk7XG4gIGF3YWl0IHB1Ymxpc2hlci5wdWJsaXNoKCk7XG4gIGlmIChwdWJsaXNoZXIuaGFzRmFpbHVyZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoIG9uZSBvciBtb3JlIGFzc2V0cy4gU2VlIHRoZSBlcnJvciBtZXNzYWdlcyBhYm92ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKTtcbiAgfVxufVxuXG5jbGFzcyBQdWJsaXNoaW5nQXdzIGltcGxlbWVudHMgY2RrX2Fzc2V0cy5JQXdzIHtcbiAgcHJpdmF0ZSBzZGtDYWNoZTogTWFwPFN0cmluZywgSVNESz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgU0RLIHRvIHdvcmsgd2l0aFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXdzOiBTZGtQcm92aWRlcixcblxuICAgIC8qKlxuICAgICAqIEVudmlyb25tZW50IHdoZXJlIHRoZSBzdGFjayB3ZSdyZSBkZXBsb3lpbmcgaXMgZ29pbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldEVudjogY3hhcGkuRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNjb3ZlclBhcnRpdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5hd3MuYmFzZUNyZWRlbnRpYWxzUGFydGl0aW9uKHRoaXMudGFyZ2V0RW52LCBNb2RlLkZvcldyaXRpbmcpKSA/PyAnYXdzJztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNjb3ZlckRlZmF1bHRSZWdpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXRFbnYucmVnaW9uO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRpc2NvdmVyQ3VycmVudEFjY291bnQoKTogUHJvbWlzZTxjZGtfYXNzZXRzLkFjY291bnQ+IHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgdGhpcy5hd3MuZGVmYXVsdEFjY291bnQoKTtcbiAgICByZXR1cm4gYWNjb3VudCA/PyB7XG4gICAgICBhY2NvdW50SWQ6ICc8dW5rbm93biBhY2NvdW50PicsXG4gICAgICBwYXJ0aXRpb246ICdhd3MnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGlzY292ZXJUYXJnZXRBY2NvdW50KG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8Y2RrX2Fzc2V0cy5BY2NvdW50PiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNkayhvcHRpb25zKSkuY3VycmVudEFjY291bnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzM0NsaWVudChvcHRpb25zOiBjZGtfYXNzZXRzLkNsaWVudE9wdGlvbnMpOiBQcm9taXNlPEFXUy5TMz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZGsob3B0aW9ucykpLnMzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZWNyQ2xpZW50KG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8QVdTLkVDUj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZGsob3B0aW9ucykpLmVjcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlY3JldHNNYW5hZ2VyQ2xpZW50KG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8QVdTLlNlY3JldHNNYW5hZ2VyPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNkayhvcHRpb25zKSkuc2VjcmV0c01hbmFnZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gU0RLIGFwcHJvcHJpYXRlIGZvciB0aGUgZ2l2ZW4gY2xpZW50IG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2RrKG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8SVNESz4ge1xuICAgIGNvbnN0IGVudiA9IHtcbiAgICAgIC4uLnRoaXMudGFyZ2V0RW52LFxuICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiA/PyB0aGlzLnRhcmdldEVudi5yZWdpb24sIC8vIERlZmF1bHQ6IHNhbWUgcmVnaW9uIGFzIHRoZSBzdGFja1xuICAgIH07XG5cbiAgICBjb25zdCBjYWNoZUtleSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGVudiwgLy8gcmVnaW9uLCBuYW1lLCBhY2NvdW50XG4gICAgICBhc3N1bWVSdWxlQXJuOiBvcHRpb25zLmFzc3VtZVJvbGVBcm4sXG4gICAgICBhc3N1bWVSb2xlRXh0ZXJuYWxJZDogb3B0aW9ucy5hc3N1bWVSb2xlRXh0ZXJuYWxJZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1heWJlU2RrID0gdGhpcy5zZGtDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChtYXliZVNkaykge1xuICAgICAgcmV0dXJuIG1heWJlU2RrO1xuICAgIH1cblxuICAgIGNvbnN0IHNkayA9IChhd2FpdCB0aGlzLmF3cy5mb3JFbnZpcm9ubWVudChlbnYsIE1vZGUuRm9yV3JpdGluZywge1xuICAgICAgYXNzdW1lUm9sZUFybjogb3B0aW9ucy5hc3N1bWVSb2xlQXJuLFxuICAgICAgYXNzdW1lUm9sZUV4dGVybmFsSWQ6IG9wdGlvbnMuYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgfSkpLnNkaztcbiAgICB0aGlzLnNka0NhY2hlLnNldChjYWNoZUtleSwgc2RrKTtcblxuICAgIHJldHVybiBzZGs7XG4gIH1cbn1cblxuY29uc3QgRVZFTlRfVE9fTE9HR0VSOiBSZWNvcmQ8Y2RrX2Fzc2V0cy5FdmVudFR5cGUsICh4OiBzdHJpbmcpID0+IHZvaWQ+ID0ge1xuICBidWlsZDogZGVidWcsXG4gIGNhY2hlZDogZGVidWcsXG4gIGNoZWNrOiBkZWJ1ZyxcbiAgZGVidWcsXG4gIGZhaWw6IGVycm9yLFxuICBmb3VuZDogZGVidWcsXG4gIHN0YXJ0OiBwcmludCxcbiAgc3VjY2VzczogcHJpbnQsXG4gIHVwbG9hZDogZGVidWcsXG59O1xuXG5jbGFzcyBQdWJsaXNoaW5nUHJvZ3Jlc3NMaXN0ZW5lciBpbXBsZW1lbnRzIGNka19hc3NldHMuSVB1Ymxpc2hQcm9ncmVzc0xpc3RlbmVyIHtcbiAgcHVibGljIG9uUHVibGlzaEV2ZW50KHR5cGU6IGNka19hc3NldHMuRXZlbnRUeXBlLCBldmVudDogY2RrX2Fzc2V0cy5JUHVibGlzaFByb2dyZXNzKTogdm9pZCB7XG4gICAgRVZFTlRfVE9fTE9HR0VSW3R5cGVdKGBbJHtldmVudC5wZXJjZW50Q29tcGxldGV9JV0gJHt0eXBlfTogJHtldmVudC5tZXNzYWdlfWApO1xuICB9XG59XG4iXX0=
|