@aws-cdk-testing/cli-integ 3.37.0 → 3.37.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aws.d.ts +1 -0
- package/lib/aws.js +7 -2
- package/lib/corking.d.ts +11 -0
- package/lib/corking.js +32 -2
- package/lib/integ-test.js +3 -1
- package/lib/with-aws.js +3 -1
- package/npm-shrinkwrap.json +76 -76
- package/package.json +4 -4
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-docker-credential.integtest.js +2 -1
- package/tests/cli-integ-tests/proxy/proxy.integtest.js +8 -3
package/lib/aws.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { SSMClient } from '@aws-sdk/client-ssm';
|
|
|
12
12
|
import { SSOClient } from '@aws-sdk/client-sso';
|
|
13
13
|
import { STSClient } from '@aws-sdk/client-sts';
|
|
14
14
|
import type { AwsCredentialIdentity } from '@smithy/types';
|
|
15
|
+
export declare const CREDENTIAL_ENV_VARS: string[];
|
|
15
16
|
export declare class AwsClients {
|
|
16
17
|
/** A random string to use for temporary resources, like roles (should preferably match unique test-specific randomString) */
|
|
17
18
|
private readonly randomString;
|
package/lib/aws.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AwsClients = void 0;
|
|
3
|
+
exports.AwsClients = exports.CREDENTIAL_ENV_VARS = void 0;
|
|
4
4
|
exports.isStackMissingError = isStackMissingError;
|
|
5
5
|
exports.isBucketMissingError = isBucketMissingError;
|
|
6
6
|
exports.retry = retry;
|
|
@@ -22,6 +22,11 @@ const client_sso_1 = require("@aws-sdk/client-sso");
|
|
|
22
22
|
const client_sts_1 = require("@aws-sdk/client-sts");
|
|
23
23
|
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
24
24
|
const util_retry_1 = require("@smithy/util-retry");
|
|
25
|
+
exports.CREDENTIAL_ENV_VARS = [
|
|
26
|
+
'AWS_ACCESS_KEY_ID',
|
|
27
|
+
'AWS_SECRET_ACCESS_KEY',
|
|
28
|
+
'AWS_SESSION_TOKEN',
|
|
29
|
+
];
|
|
25
30
|
class AwsClients {
|
|
26
31
|
randomString;
|
|
27
32
|
region;
|
|
@@ -349,4 +354,4 @@ function chainableCredentials(region) {
|
|
|
349
354
|
function isAwsCredentialIdentity(x) {
|
|
350
355
|
return Boolean(x && typeof x === 'object' && x.accessKeyId);
|
|
351
356
|
}
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdUQSxrREFFQztBQUVELG9EQUVDO0FBVUQsc0JBc0JDO0FBaUJELDBDQUVDO0FBRUQsc0JBRUM7QUFTRCxzREFxQkM7QUFuWkQsMEVBTXdDO0FBQ3hDLDhEQUFvRDtBQUNwRCxvREFBeUU7QUFDekUsa0VBQTZEO0FBQzdELG9EQUFnRDtBQUNoRCxvREFBOEo7QUFDOUosMERBQXNEO0FBQ3RELGtEQU00QjtBQUM1Qiw0RUFBdUU7QUFDdkUsb0RBQWdEO0FBQ2hELG9EQUFnRDtBQUNoRCxvREFBZ0Q7QUFDaEQsb0RBQTZGO0FBQzdGLHdFQUErRTtBQUUvRSxtREFBNkQ7QUFTN0QsTUFBYSxVQUFVO0lBNEJGO0lBQ0Q7SUFDQztJQUNEO0lBOUJYLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQW9CLEVBQUUsTUFBYyxFQUFFLFFBQStCLEVBQUUsTUFBNkI7UUFDbEksT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBb0IsRUFBRSxNQUFjLEVBQUUsTUFBNkI7UUFDL0YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFZ0IsT0FBTyxHQUE0QixFQUFFLENBQUM7SUFDdEMsTUFBTSxDQUFlO0lBRXRCLGNBQWMsQ0FBdUI7SUFDckMsRUFBRSxDQUFXO0lBQ2IsR0FBRyxDQUFZO0lBQ2YsU0FBUyxDQUFrQjtJQUMzQixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixNQUFNLENBQWU7SUFDckIsR0FBRyxDQUFZO0lB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QkFBbUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUYseURBQXlEO1FBQ3pELGlFQUFpRTtRQUNqRSx1Q0FBdUM7UUFDdkMsT0FBTyxJQUFBLDhCQUFPLEVBQUM7WUFDYixZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUU7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxPQUFPLElBQUEsNENBQXFCLEVBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsQ0FBTTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xvdWRGb3JtYXRpb25DbGllbnQsXG4gIERlbGV0ZVN0YWNrQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGFja3NDb21tYW5kLFxuICBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kLFxuICB0eXBlIFN0YWNrLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgRHluYW1vREIgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuaW1wb3J0IHsgRGVsZXRlUmVwb3NpdG9yeUNvbW1hbmQsIEVDUkNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3InO1xuaW1wb3J0IHsgRUNSUFVCTElDQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjci1wdWJsaWMnO1xuaW1wb3J0IHsgRUNTQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjcyc7XG5pbXBvcnQgeyBDcmVhdGVSb2xlQ29tbWFuZCwgRGVsZXRlUm9sZUNvbW1hbmQsIERlbGV0ZVJvbGVQb2xpY3lDb21tYW5kLCBJQU1DbGllbnQsIExpc3RSb2xlUG9saWNpZXNDb21tYW5kLCBQdXRSb2xlUG9saWN5Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1pYW0nO1xuaW1wb3J0IHsgTGFtYmRhQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQge1xuICBTM0NsaWVudCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmQsXG4gIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmQsXG4gIHR5cGUgT2JqZWN0SWRlbnRpZmllcixcbiAgRGVsZXRlQnVja2V0Q29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XG5pbXBvcnQgeyBTTlNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc25zJztcbmltcG9ydCB7IFNTTUNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuaW1wb3J0IHsgU1NPQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbyc7XG5pbXBvcnQgeyBBc3N1bWVSb2xlQ29tbWFuZCwgU1RTQ2xpZW50LCBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbmltcG9ydCB7IGZyb21JbmksIGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5LCBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciwgTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3kgfSBmcm9tICdAc21pdGh5L3V0aWwtcmV0cnknO1xuXG5pbnRlcmZhY2UgQ2xpZW50Q29uZmlnIHtcbiAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHwgQXdzQ3JlZGVudGlhbElkZW50aXR5O1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgcmV0cnlTdHJhdGVneTogQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3k7XG4gIHJlYWRvbmx5IHJlcXVlc3RIYW5kbGVyPzogTm9kZUh0dHBIYW5kbGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEF3c0NsaWVudHMge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZvcklkZW50aXR5KHJhbmRvbVN0cmluZzogc3RyaW5nLCByZWdpb246IHN0cmluZywgaWRlbnRpdHk6IEF3c0NyZWRlbnRpYWxJZGVudGl0eSwgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gbmV3IEF3c0NsaWVudHMocmFuZG9tU3RyaW5nLCByZWdpb24sIG91dHB1dCwgaWRlbnRpdHkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBmb3JSZWdpb24ocmFuZG9tU3RyaW5nOiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nLCBvdXRwdXQ6IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkge1xuICAgIHJldHVybiBuZXcgQXdzQ2xpZW50cyhyYW5kb21TdHJpbmcsIHJlZ2lvbiwgb3V0cHV0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xlYW51cDogKCgpID0+IFByb21pc2U8dm9pZD4pW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IENsaWVudENvbmZpZztcblxuICBwdWJsaWMgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb246IENsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgczM6IFMzQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyOiBFQ1JDbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBlY3JQdWJsaWM6IEVDUlBVQkxJQ0NsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IGVjczogRUNTQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgc3NvOiBTU09DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBzc206IFNTTUNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHNuczogU05TQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgaWFtOiBJQU1DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBsYW1iZGE6IExhbWJkYUNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHN0czogU1RTQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXI6IFNlY3JldHNNYW5hZ2VyQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZHluYW1vRGI6IER5bmFtb0RCO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgLyoqIEEgcmFuZG9tIHN0cmluZyB0byB1c2UgZm9yIHRlbXBvcmFyeSByZXNvdXJjZXMsIGxpa2Ugcm9sZXMgKHNob3VsZCBwcmVmZXJhYmx5IG1hdGNoIHVuaXF1ZSB0ZXN0LXNwZWNpZmljIHJhbmRvbVN0cmluZykgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICAgIHB1YmxpYyByZWFkb25seSBpZGVudGl0eT86IEF3c0NyZWRlbnRpYWxJZGVudGl0eSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgY3JlZGVudGlhbHM6IHRoaXMuaWRlbnRpdHkgPz8gY2hhaW5hYmxlQ3JlZGVudGlhbHModGhpcy5yZWdpb24pLFxuICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSg5LCAoYXR0ZW1wdDogbnVtYmVyKSA9PiBhdHRlbXB0ICoqIDUwMCksXG4gICAgfTtcblxuICAgIHRoaXMuY2xvdWRGb3JtYXRpb24gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuczMgPSBuZXcgUzNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZWNyID0gbmV3IEVDUkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5lY3JQdWJsaWMgPSBuZXcgRUNSUFVCTElDQ2xpZW50KHsgLi4udGhpcy5jb25maWcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgLyogcHVibGljIGdhbGxlcnkgaXMgb25seSBhdmFpbGFibGUgaW4gdXMtZWFzdC0xICovIH0pO1xuICAgIHRoaXMuZWNzID0gbmV3IEVDU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zc28gPSBuZXcgU1NPQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnNzbSA9IG5ldyBTU01DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc25zID0gbmV3IFNOU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5pYW0gPSBuZXcgSUFNQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmxhbWJkYSA9IG5ldyBMYW1iZGFDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc3RzID0gbmV3IFNUU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zZWNyZXRzTWFuYWdlciA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5keW5hbW9EYiA9IG5ldyBEeW5hbW9EQih0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgYWRkQ2xlYW51cChjbGVhbnVwOiAoKSA9PiBQcm9taXNlPGFueT4pIHtcbiAgICB0aGlzLmNsZWFudXAucHVzaChjbGVhbnVwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNwb3NlKCkge1xuICAgIGZvciAoY29uc3QgY2xlYW51cCBvZiB0aGlzLmNsZWFudXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGNsZWFudXAoKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB0aGlzLm91dHB1dC53cml0ZShg4pqg77iPIEVycm9yIGR1cmluZyBjbGVhbnVwOiAke2UubWVzc2FnZX1cXG5gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbGVhbnVwLnNwbGljZSgwLCB0aGlzLmNsZWFudXAubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhY2NvdW50KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gUmVkdWNlICMgb2YgcmV0cmllcywgd2UgdXNlIHRoaXMgYXMgYSBjaXJjdWl0IGJyZWFrZXIgZm9yIGRldGVjdGluZyBuby1jb25maWdcbiAgICBjb25zdCBzdHNDbGllbnQgPSBuZXcgU1RTQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZy5jcmVkZW50aWFscyxcbiAgICAgIHJlZ2lvbjogdGhpcy5jb25maWcucmVnaW9uLFxuICAgICAgbWF4QXR0ZW1wdHM6IDIsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKGF3YWl0IHN0c0NsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKSkuQWNjb3VudCE7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGNsaWVudHMgYWxyZWFkeSBoYXMgYW4gZXN0YWJsaXNoZWQgaWRlbnRpdHkgKHZpYSBhdG1vc3BoZXJlIGZvciBleGFtcGxlKSxcbiAgICogcmV0dXJuIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG1hcCBhY3RpdmF0aW5nIGl0LlxuICAgKlxuICAgKiBPdGhlcndpc2UsIHJldHVybnMgdW5kZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIGlkZW50aXR5RW52KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5ID8ge1xuICAgICAgQVdTX0FDQ0VTU19LRVlfSUQ6IHRoaXMuaWRlbnRpdHkuYWNjZXNzS2V5SWQsXG4gICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6IHRoaXMuaWRlbnRpdHkuc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgQVdTX1NFU1NJT05fVE9LRU46IHRoaXMuaWRlbnRpdHkuc2Vzc2lvblRva2VuISxcblxuICAgICAgLy8gdW5zZXQgYW55IHByZXZpb3VzbHkgdXNlZCBwcm9maWxlIGJlY2F1c2UgdGhlIFNESyB3aWxsIHByZWZlclxuICAgICAgLy8gdGhpcyBvdmVyIHN0YXRpYyBlbnYgY3JlZGVudGlhbHMuIHRoaXMgaXMgcmVsZXZhbnQgZm9yIHRlc3RzIHJ1bm5pbmcgb24gQ29kZUJ1aWxkXG4gICAgICAvLyBiZWNhdXNlIHdlIHVzZSBhIHByb2ZpbGUgYXMgb3VyIG1haW4gY3JlZGVudGlhbHMgc291cmNlLlxuICAgICAgQVdTX1BST0ZJTEU6ICcnLFxuICAgIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgY3VycmVudCBpZGVudGl0eSBvciBpZGVudGl0eSBwcm92aWRlciB0byBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWRlbnRpYWxzKCkge1xuICAgIGNvbnN0IHggPSB0aGlzLmNvbmZpZy5jcmVkZW50aWFscztcbiAgICBpZiAoaXNBd3NDcmVkZW50aWFsSWRlbnRpdHkoeCkpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICByZXR1cm4geCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVN0YWNrcyguLi5zdGFja05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGlmIChzdGFja05hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIHB1cnBvc2VseSBkbyBhbGwgc3RhY2tzIHNlcmlhbGx5LCBiZWNhdXNlIHRoZXkndmUgYmVlbiBvcmRlcmVkXG4gICAgLy8gdG8gZG8gdGhlIGJvb3RzdHJhcCBzdGFjayBsYXN0LlxuICAgIGZvciAoY29uc3Qgc3RhY2tOYW1lIG9mIHN0YWNrTmFtZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgICAgbmV3IFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmQoe1xuICAgICAgICAgIEVuYWJsZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgICAgbmV3IERlbGV0ZVN0YWNrQ29tbWFuZCh7XG4gICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgYXdhaXQgcmV0cnkodGhpcy5vdXRwdXQsIGBEZWxldGluZyAke3N0YWNrTmFtZX1gLCByZXRyeS5mb3JTZWNvbmRzKDYwMCksIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5zdGFja1N0YXR1cyhzdGFja05hbWUpO1xuICAgICAgICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzLmVuZHNXaXRoKCdfRkFJTEVEJykpIHtcbiAgICAgICAgICB0aHJvdyByZXRyeS5hYm9ydChuZXcgRXJyb3IoYCcke3N0YWNrTmFtZX0nIGlzIGluIHN0YXRlICcke3N0YXR1c30nYCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVsZXRlIG9mICcke3N0YWNrTmFtZX0nIG5vdCBjb21wbGV0ZSB5ZXQsIHN0YXR1czogJyR7c3RhdHVzfSdgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YWNrU3RhdHVzKHN0YWNrTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYXdhaXQgdGhpcy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgICAgIG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoe1xuICAgICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICkuU3RhY2tzPy5bMF0uU3RhY2tTdGF0dXM7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoaXNTdGFja01pc3NpbmdFcnJvcihlKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1wdHlCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nLCBvcHRpb25zPzogeyBieXBhc3NHb3Zlcm5hbmNlPzogYm9vbGVhbiB9KSB7XG4gICAgY29uc3Qgb2JqZWN0cyA9IGF3YWl0IHRoaXMuczMuc2VuZChcbiAgICAgIG5ldyBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kKHtcbiAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGRlbGV0ZXMgPSBbLi4uKG9iamVjdHMuVmVyc2lvbnMgfHwgW10pLCAuLi4ob2JqZWN0cy5EZWxldGVNYXJrZXJzIHx8IFtdKV0ucmVkdWNlKChhY2MsIG9iaikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvYmouVmVyc2lvbklkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb2JqLktleSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgYWNjLnB1c2goeyBLZXk6IG9iai5LZXksIFZlcnNpb25JZDogb2JqLlZlcnNpb25JZCB9KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iai5LZXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjYy5wdXNoKHsgS2V5OiBvYmouS2V5IH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBPYmplY3RJZGVudGlmaWVyW10pO1xuXG4gICAgaWYgKGRlbGV0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuczMuc2VuZChcbiAgICAgIG5ldyBEZWxldGVPYmplY3RzQ29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgRGVsZXRlOiB7XG4gICAgICAgICAgT2JqZWN0czogZGVsZXRlcyxcbiAgICAgICAgICBRdWlldDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIEJ5cGFzc0dvdmVybmFuY2VSZXRlbnRpb246IG9wdGlvbnM/LmJ5cGFzc0dvdmVybmFuY2UgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVJbWFnZVJlcG9zaXRvcnkocmVwb3NpdG9yeU5hbWU6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuZWNyLnNlbmQoXG4gICAgICBuZXcgRGVsZXRlUmVwb3NpdG9yeUNvbW1hbmQoe1xuICAgICAgICByZXBvc2l0b3J5TmFtZTogcmVwb3NpdG9yeU5hbWUsXG4gICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZW1wdHlCdWNrZXQoYnVja2V0TmFtZSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuczMuc2VuZChcbiAgICAgICAgbmV3IERlbGV0ZUJ1Y2tldENvbW1hbmQoe1xuICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGlzQnVja2V0TWlzc2luZ0Vycm9yKGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJvbGUgdGhhdCB3aWxsIGJlIGNsZWFuZWQgdXAgd2hlbiB0aGUgQXdzQ2xpZW50cyBvYmplY3QgaXMgY2xlYW5lZCB1cFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHRlbXBvcmFyeVJvbGUobmFtZVByZWZpeDogc3RyaW5nLCBhc3N1bWVSb2xlUG9saWN5U3RhdGVtZW50czogYW55W10sIHBvbGljeVN0YXRlbWVudHM6IGFueVtdKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmlhbS5zZW5kKG5ldyBDcmVhdGVSb2xlQ29tbWFuZCh7XG4gICAgICBSb2xlTmFtZTogYCR7bmFtZVByZWZpeH0tJHt0aGlzLnJhbmRvbVN0cmluZ31gLFxuICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICAgICAgU3RhdGVtZW50OiBhc3N1bWVSb2xlUG9saWN5U3RhdGVtZW50cyxcbiAgICAgIH0sIHVuZGVmaW5lZCwgMiksXG4gICAgICBUYWdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBLZXk6ICdkZWxldGVtZScsXG4gICAgICAgICAgVmFsdWU6ICd0cnVlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSkpO1xuICAgIGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IFB1dFJvbGVQb2xpY3lDb21tYW5kKHtcbiAgICAgIFJvbGVOYW1lOiBgJHtuYW1lUHJlZml4fS0ke3RoaXMucmFuZG9tU3RyaW5nfWAsXG4gICAgICBQb2xpY3lOYW1lOiAnRGVmYXVsdFBvbGljeScsXG4gICAgICBQb2xpY3lEb2N1bWVudDogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogcG9saWN5U3RhdGVtZW50cyxcbiAgICAgIH0sIHVuZGVmaW5lZCwgMiksXG4gICAgfSkpO1xuXG4gICAgdGhpcy5hZGRDbGVhbnVwKCgpID0+IHRoaXMuZGVsZXRlUm9sZShyZXNwb25zZS5Sb2xlIS5Sb2xlTmFtZSEpKTtcblxuICAgIHJldHVybiByZXNwb25zZS5Sb2xlPy5Bcm4gPz8gJypDcmVhdGVSb2xlIGRpZCBub3QgcmV0dXJuIGFuIEFSTionO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHdhaXRGb3JBc3N1bWVSb2xlKHJvbGVBcm46IHN0cmluZykge1xuICAgIGF3YWl0IHJldHJ5T25NYXRjaGluZ0Vycm9ycyhcbiAgICAgICgpID0+IHRoaXMuc3RzLnNlbmQobmV3IEFzc3VtZVJvbGVDb21tYW5kKHtcbiAgICAgICAgUm9sZUFybjogcm9sZUFybixcbiAgICAgICAgUm9sZVNlc3Npb25OYW1lOiAndGVzdC1leGlzdGVuY2UnLFxuICAgICAgfSkpLFxuICAgICAgWydBY2Nlc3NEZW5pZWQnXSxcbiAgICAgIHJldHJ5LmZvclNlY29uZHMoNjApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlUm9sZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY2llc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5pYW0uc2VuZChuZXcgTGlzdFJvbGVQb2xpY2llc0NvbW1hbmQoe1xuICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgfSkpO1xuXG4gICAgZm9yIChjb25zdCBwb2xpY3lOYW1lIG9mIHBvbGljaWVzUmVzcG9uc2UuUG9saWN5TmFtZXMgPz8gW10pIHtcbiAgICAgIGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IERlbGV0ZVJvbGVQb2xpY3lDb21tYW5kKHtcbiAgICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgICAgIFBvbGljeU5hbWU6IHBvbGljeU5hbWUsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pYW0uc2VuZChuZXcgRGVsZXRlUm9sZUNvbW1hbmQoe1xuICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YWNrTWlzc2luZ0Vycm9yKGU6IEVycm9yKSB7XG4gIHJldHVybiBlLm1lc3NhZ2UuaW5kZXhPZignZG9lcyBub3QgZXhpc3QnKSA+IC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWNrZXRNaXNzaW5nRXJyb3IoZTogRXJyb3IpIHtcbiAgcmV0dXJuIGUubWVzc2FnZS5pbmRleE9mKCdkb2VzIG5vdCBleGlzdCcpID4gLTE7XG59XG5cbi8qKlxuICogUmV0cnkgYW4gYXN5bmMgb3BlcmF0aW9uIHVudGlsIGEgZGVhZGxpbmUgaXMgaGl0LlxuICpcbiAqIFVzZSBgcmV0cnkuZm9yU2Vjb25kcygpYCB0byBjb25zdHJ1Y3QgYSBkZWFkbGluZSByZWxhdGl2ZSB0byByaWdodCBub3cuXG4gKlxuICogRXhjZXB0aW9ucyB3aWxsIGNhdXNlIHRoZSBvcGVyYXRpb24gdG8gcmV0cnkuIFVzZSBgcmV0cnkuYWJvcnRgIHRvIGFubm90YXRlIGFuIGV4Y2VwdGlvblxuICogdG8gc3RvcCB0aGUgcmV0cnkgYW5kIGVuZCBpbiBhIGZhaWx1cmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeTxBPihcbiAgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW0sXG4gIG9wZXJhdGlvbjogc3RyaW5nLFxuICBkZWFkbGluZTogRGF0ZSxcbiAgYmxvY2s6ICgpID0+IFByb21pc2U8QT4sXG4pOiBQcm9taXNlPEE+IHtcbiAgbGV0IGkgPSAwO1xuICBvdXRwdXQud3JpdGUoYPCfkoggJHtvcGVyYXRpb259XFxuYCk7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGkrKztcbiAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGJsb2NrKCk7XG4gICAgICBvdXRwdXQud3JpdGUoYPCfkoggJHtvcGVyYXRpb259OiBzdWNjZWVkZWQgYWZ0ZXIgJHtpfSBhdHRlbXB0c1xcbmApO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLmFib3J0IHx8IERhdGUubm93KCkgPiBkZWFkbGluZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke29wZXJhdGlvbn06IGRpZCBub3Qgc3VjY2VlZCBhZnRlciAke2l9IGF0dGVtcHRzOiAke2V9YCk7XG4gICAgICB9XG4gICAgICBvdXRwdXQud3JpdGUoYOKPsyAke29wZXJhdGlvbn0gKCR7ZS5tZXNzYWdlfSlcXG5gKTtcbiAgICAgIGF3YWl0IHNsZWVwKDUwMDApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1ha2UgYSBkZWFkbGluZSBmb3IgdGhlIGByZXRyeWAgZnVuY3Rpb24gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZS5cbiAqL1xucmV0cnkuZm9yU2Vjb25kcyA9IChzZWNvbmRzOiBudW1iZXIpOiBEYXRlID0+IHtcbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUubm93KCkgKyBzZWNvbmRzICogMTAwMCk7XG59O1xuXG4vKipcbiAqIEFubm90YXRlIGFuIGVycm9yIHRvIHN0b3AgdGhlIHJldHJ5aW5nXG4gKi9cbnJldHJ5LmFib3J0ID0gKGU6IEVycm9yKTogRXJyb3IgPT4ge1xuICAoZSBhcyBhbnkpLmFib3J0ID0gdHJ1ZTtcbiAgcmV0dXJuIGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gb3V0cHV0RnJvbVN0YWNrKGtleTogc3RyaW5nLCBzdGFjazogU3RhY2spOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKHN0YWNrLk91dHB1dHMgPz8gW10pLmZpbmQoKG8pID0+IG8uT3V0cHV0S2V5ID09PSBrZXkpPy5PdXRwdXRWYWx1ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaykgPT4gc2V0VGltZW91dChvaywgbXMpKTtcbn1cblxuLyoqXG4gKiBSZXRyeSBhbiBhc3luYyBvcGVyYXRpb24gd2l0aCBlcnJvciBmaWx0ZXJpbmcgdW50aWwgYSBkZWFkbGluZSBpcyBoaXQuXG4gKlxuICogVXNlIGByZXRyeS5mb3JTZWNvbmRzKClgIHRvIGNvbnN0cnVjdCBhIGRlYWRsaW5lIHJlbGF0aXZlIHRvIHJpZ2h0IG5vdy5cbiAqXG4gKiBPbmx5IHJldHJpZXMgb24gZXJyb3JzIHdpdGggbWF0Y2hpbmcgbmFtZXMgaW4gZXJyb3JOYW1lcyBhcnJheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJ5T25NYXRjaGluZ0Vycm9yczxUPihcbiAgb3BlcmF0aW9uOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBlcnJvck5hbWVzOiBzdHJpbmdbXSxcbiAgZGVhZGxpbmU6IERhdGUsXG4gIGludGVydmFsOiBudW1iZXIgPSA1MDAwLFxuKTogUHJvbWlzZTxUPiB7XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgaSsrO1xuICAgICAgcmV0dXJuIGF3YWl0IG9wZXJhdGlvbigpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKERhdGUubm93KCkgPiBkZWFkbGluZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcGVyYXRpb24gZGlkIG5vdCBzdWNjZWVkIGFmdGVyICR7aX0gYXR0ZW1wdHM6ICR7ZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghZXJyb3JOYW1lcy5pbmNsdWRlcyhlLm5hbWUpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoYWluYWJsZUNyZWRlbnRpYWxzKHJlZ2lvbjogc3RyaW5nKTogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIge1xuICBpZiAoKHByb2Nlc3MuZW52LkNPREVCVUlMRF9CVUlMRF9BUk4gfHwgcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRCkgJiYgcHJvY2Vzcy5lbnYuQVdTX1BST0ZJTEUpIHtcbiAgICAvLyBpbiBjb2RlYnVpbGQgd2UgbXVzdCBhc3N1bWUgdGhlIHJvbGUgdGhhdCB0aGUgY2RrIHVzZXNcbiAgICAvLyBvdGhlcndpc2UgY3JlZGVudGlhbHMgd2lsbCBqdXN0IGJlIHBpY2tlZCB1cCBieSB0aGUgbm9ybWFsIHNka1xuICAgIC8vIGhldXJpc3RpY3MgYW5kIGV4cGlyZSBhZnRlciBhbiBob3VyLlxuICAgIHJldHVybiBmcm9tSW5pKHtcbiAgICAgIGNsaWVudENvbmZpZzogeyByZWdpb24gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSBqdXN0IGdldCB3aGF0J3MgZGVmYXVsdFxuICByZXR1cm4gZnJvbU5vZGVQcm92aWRlckNoYWluKHsgY2xpZW50Q29uZmlnOiB7IHJlZ2lvbiB9IH0pO1xufVxuXG5mdW5jdGlvbiBpc0F3c0NyZWRlbnRpYWxJZGVudGl0eSh4OiBhbnkpOiB4IGlzIEF3c0NyZWRlbnRpYWxJZGVudGl0eSB7XG4gIHJldHVybiBCb29sZWFuKHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHguYWNjZXNzS2V5SWQpO1xufVxuIl19
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThUQSxrREFFQztBQUVELG9EQUVDO0FBVUQsc0JBc0JDO0FBaUJELDBDQUVDO0FBRUQsc0JBRUM7QUFTRCxzREFxQkM7QUF6WkQsMEVBTXdDO0FBQ3hDLDhEQUFvRDtBQUNwRCxvREFBeUU7QUFDekUsa0VBQTZEO0FBQzdELG9EQUFnRDtBQUNoRCxvREFBOEo7QUFDOUosMERBQXNEO0FBQ3RELGtEQU00QjtBQUM1Qiw0RUFBdUU7QUFDdkUsb0RBQWdEO0FBQ2hELG9EQUFnRDtBQUNoRCxvREFBZ0Q7QUFDaEQsb0RBQTZGO0FBQzdGLHdFQUErRTtBQUUvRSxtREFBNkQ7QUFTaEQsUUFBQSxtQkFBbUIsR0FBRztJQUNqQyxtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtDQUNwQixDQUFDO0FBRUYsTUFBYSxVQUFVO0lBNEJGO0lBQ0Q7SUFDQztJQUNEO0lBOUJYLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQW9CLEVBQUUsTUFBYyxFQUFFLFFBQStCLEVBQUUsTUFBNkI7UUFDbEksT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBb0IsRUFBRSxNQUFjLEVBQUUsTUFBNkI7UUFDL0YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFZ0IsT0FBTyxHQUE0QixFQUFFLENBQUM7SUFDdEMsTUFBTSxDQUFlO0lBRXRCLGNBQWMsQ0FBdUI7SUFDckMsRUFBRSxDQUFXO0lBQ2IsR0FBRyxDQUFZO0lBQ2YsU0FBUyxDQUFrQjtJQUMzQixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixH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Q0gsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsTUFBYztJQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUYseURBQXlEO1FBQ3pELGlFQUFpRTtRQUNqRSx1Q0FBdUM7UUFDdkMsT0FBTyxJQUFBLDhCQUFPLEVBQUM7WUFDYixZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUU7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxPQUFPLElBQUEsNENBQXFCLEVBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsQ0FBTTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xvdWRGb3JtYXRpb25DbGllbnQsXG4gIERlbGV0ZVN0YWNrQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGFja3NDb21tYW5kLFxuICBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kLFxuICB0eXBlIFN0YWNrLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgRHluYW1vREIgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuaW1wb3J0IHsgRGVsZXRlUmVwb3NpdG9yeUNvbW1hbmQsIEVDUkNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3InO1xuaW1wb3J0IHsgRUNSUFVCTElDQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjci1wdWJsaWMnO1xuaW1wb3J0IHsgRUNTQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjcyc7XG5pbXBvcnQgeyBDcmVhdGVSb2xlQ29tbWFuZCwgRGVsZXRlUm9sZUNvbW1hbmQsIERlbGV0ZVJvbGVQb2xpY3lDb21tYW5kLCBJQU1DbGllbnQsIExpc3RSb2xlUG9saWNpZXNDb21tYW5kLCBQdXRSb2xlUG9saWN5Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1pYW0nO1xuaW1wb3J0IHsgTGFtYmRhQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQge1xuICBTM0NsaWVudCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmQsXG4gIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmQsXG4gIHR5cGUgT2JqZWN0SWRlbnRpZmllcixcbiAgRGVsZXRlQnVja2V0Q29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XG5pbXBvcnQgeyBTTlNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc25zJztcbmltcG9ydCB7IFNTTUNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuaW1wb3J0IHsgU1NPQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbyc7XG5pbXBvcnQgeyBBc3N1bWVSb2xlQ29tbWFuZCwgU1RTQ2xpZW50LCBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbmltcG9ydCB7IGZyb21JbmksIGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5LCBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciwgTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3kgfSBmcm9tICdAc21pdGh5L3V0aWwtcmV0cnknO1xuXG5pbnRlcmZhY2UgQ2xpZW50Q29uZmlnIHtcbiAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHwgQXdzQ3JlZGVudGlhbElkZW50aXR5O1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgcmV0cnlTdHJhdGVneTogQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3k7XG4gIHJlYWRvbmx5IHJlcXVlc3RIYW5kbGVyPzogTm9kZUh0dHBIYW5kbGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IENSRURFTlRJQUxfRU5WX1ZBUlMgPSBbXG4gICdBV1NfQUNDRVNTX0tFWV9JRCcsXG4gICdBV1NfU0VDUkVUX0FDQ0VTU19LRVknLFxuICAnQVdTX1NFU1NJT05fVE9LRU4nLFxuXTtcblxuZXhwb3J0IGNsYXNzIEF3c0NsaWVudHMge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZvcklkZW50aXR5KHJhbmRvbVN0cmluZzogc3RyaW5nLCByZWdpb246IHN0cmluZywgaWRlbnRpdHk6IEF3c0NyZWRlbnRpYWxJZGVudGl0eSwgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gbmV3IEF3c0NsaWVudHMocmFuZG9tU3RyaW5nLCByZWdpb24sIG91dHB1dCwgaWRlbnRpdHkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBmb3JSZWdpb24ocmFuZG9tU3RyaW5nOiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nLCBvdXRwdXQ6IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkge1xuICAgIHJldHVybiBuZXcgQXdzQ2xpZW50cyhyYW5kb21TdHJpbmcsIHJlZ2lvbiwgb3V0cHV0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xlYW51cDogKCgpID0+IFByb21pc2U8dm9pZD4pW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IENsaWVudENvbmZpZztcblxuICBwdWJsaWMgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb246IENsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgczM6IFMzQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyOiBFQ1JDbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBlY3JQdWJsaWM6IEVDUlBVQkxJQ0NsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IGVjczogRUNTQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgc3NvOiBTU09DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBzc206IFNTTUNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHNuczogU05TQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgaWFtOiBJQU1DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBsYW1iZGE6IExhbWJkYUNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHN0czogU1RTQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXI6IFNlY3JldHNNYW5hZ2VyQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZHluYW1vRGI6IER5bmFtb0RCO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgLyoqIEEgcmFuZG9tIHN0cmluZyB0byB1c2UgZm9yIHRlbXBvcmFyeSByZXNvdXJjZXMsIGxpa2Ugcm9sZXMgKHNob3VsZCBwcmVmZXJhYmx5IG1hdGNoIHVuaXF1ZSB0ZXN0LXNwZWNpZmljIHJhbmRvbVN0cmluZykgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICAgIHB1YmxpYyByZWFkb25seSBpZGVudGl0eT86IEF3c0NyZWRlbnRpYWxJZGVudGl0eSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgY3JlZGVudGlhbHM6IHRoaXMuaWRlbnRpdHkgPz8gY2hhaW5hYmxlQ3JlZGVudGlhbHModGhpcy5yZWdpb24pLFxuICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSg5LCAoYXR0ZW1wdDogbnVtYmVyKSA9PiBhdHRlbXB0ICoqIDUwMCksXG4gICAgfTtcblxuICAgIHRoaXMuY2xvdWRGb3JtYXRpb24gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuczMgPSBuZXcgUzNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZWNyID0gbmV3IEVDUkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5lY3JQdWJsaWMgPSBuZXcgRUNSUFVCTElDQ2xpZW50KHsgLi4udGhpcy5jb25maWcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgLyogcHVibGljIGdhbGxlcnkgaXMgb25seSBhdmFpbGFibGUgaW4gdXMtZWFzdC0xICovIH0pO1xuICAgIHRoaXMuZWNzID0gbmV3IEVDU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zc28gPSBuZXcgU1NPQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnNzbSA9IG5ldyBTU01DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc25zID0gbmV3IFNOU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5pYW0gPSBuZXcgSUFNQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmxhbWJkYSA9IG5ldyBMYW1iZGFDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc3RzID0gbmV3IFNUU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zZWNyZXRzTWFuYWdlciA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5keW5hbW9EYiA9IG5ldyBEeW5hbW9EQih0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgYWRkQ2xlYW51cChjbGVhbnVwOiAoKSA9PiBQcm9taXNlPGFueT4pIHtcbiAgICB0aGlzLmNsZWFudXAucHVzaChjbGVhbnVwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNwb3NlKCkge1xuICAgIGZvciAoY29uc3QgY2xlYW51cCBvZiB0aGlzLmNsZWFudXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGNsZWFudXAoKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB0aGlzLm91dHB1dC53cml0ZShg4pqg77iPIEVycm9yIGR1cmluZyBjbGVhbnVwOiAke2UubWVzc2FnZX1cXG5gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbGVhbnVwLnNwbGljZSgwLCB0aGlzLmNsZWFudXAubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhY2NvdW50KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gUmVkdWNlICMgb2YgcmV0cmllcywgd2UgdXNlIHRoaXMgYXMgYSBjaXJjdWl0IGJyZWFrZXIgZm9yIGRldGVjdGluZyBuby1jb25maWdcbiAgICBjb25zdCBzdHNDbGllbnQgPSBuZXcgU1RTQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZy5jcmVkZW50aWFscyxcbiAgICAgIHJlZ2lvbjogdGhpcy5jb25maWcucmVnaW9uLFxuICAgICAgbWF4QXR0ZW1wdHM6IDIsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKGF3YWl0IHN0c0NsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKSkuQWNjb3VudCE7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGNsaWVudHMgYWxyZWFkeSBoYXMgYW4gZXN0YWJsaXNoZWQgaWRlbnRpdHkgKHZpYSBhdG1vc3BoZXJlIGZvciBleGFtcGxlKSxcbiAgICogcmV0dXJuIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG1hcCBhY3RpdmF0aW5nIGl0LlxuICAgKlxuICAgKiBPdGhlcndpc2UsIHJldHVybnMgdW5kZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIGlkZW50aXR5RW52KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5ID8ge1xuICAgICAgQVdTX0FDQ0VTU19LRVlfSUQ6IHRoaXMuaWRlbnRpdHkuYWNjZXNzS2V5SWQsXG4gICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6IHRoaXMuaWRlbnRpdHkuc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgQVdTX1NFU1NJT05fVE9LRU46IHRoaXMuaWRlbnRpdHkuc2Vzc2lvblRva2VuISxcblxuICAgICAgLy8gdW5zZXQgYW55IHByZXZpb3VzbHkgdXNlZCBwcm9maWxlIGJlY2F1c2UgdGhlIFNESyB3aWxsIHByZWZlclxuICAgICAgLy8gdGhpcyBvdmVyIHN0YXRpYyBlbnYgY3JlZGVudGlhbHMuIHRoaXMgaXMgcmVsZXZhbnQgZm9yIHRlc3RzIHJ1bm5pbmcgb24gQ29kZUJ1aWxkXG4gICAgICAvLyBiZWNhdXNlIHdlIHVzZSBhIHByb2ZpbGUgYXMgb3VyIG1haW4gY3JlZGVudGlhbHMgc291cmNlLlxuICAgICAgQVdTX1BST0ZJTEU6ICcnLFxuICAgIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgY3VycmVudCBpZGVudGl0eSBvciBpZGVudGl0eSBwcm92aWRlciB0byBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWRlbnRpYWxzKCkge1xuICAgIGNvbnN0IHggPSB0aGlzLmNvbmZpZy5jcmVkZW50aWFscztcbiAgICBpZiAoaXNBd3NDcmVkZW50aWFsSWRlbnRpdHkoeCkpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICByZXR1cm4geCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVN0YWNrcyguLi5zdGFja05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGlmIChzdGFja05hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIHB1cnBvc2VseSBkbyBhbGwgc3RhY2tzIHNlcmlhbGx5LCBiZWNhdXNlIHRoZXkndmUgYmVlbiBvcmRlcmVkXG4gICAgLy8gdG8gZG8gdGhlIGJvb3RzdHJhcCBzdGFjayBsYXN0LlxuICAgIGZvciAoY29uc3Qgc3RhY2tOYW1lIG9mIHN0YWNrTmFtZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgICAgbmV3IFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmQoe1xuICAgICAgICAgIEVuYWJsZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgICAgbmV3IERlbGV0ZVN0YWNrQ29tbWFuZCh7XG4gICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgYXdhaXQgcmV0cnkodGhpcy5vdXRwdXQsIGBEZWxldGluZyAke3N0YWNrTmFtZX1gLCByZXRyeS5mb3JTZWNvbmRzKDYwMCksIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5zdGFja1N0YXR1cyhzdGFja05hbWUpO1xuICAgICAgICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzLmVuZHNXaXRoKCdfRkFJTEVEJykpIHtcbiAgICAgICAgICB0aHJvdyByZXRyeS5hYm9ydChuZXcgRXJyb3IoYCcke3N0YWNrTmFtZX0nIGlzIGluIHN0YXRlICcke3N0YXR1c30nYCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVsZXRlIG9mICcke3N0YWNrTmFtZX0nIG5vdCBjb21wbGV0ZSB5ZXQsIHN0YXR1czogJyR7c3RhdHVzfSdgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YWNrU3RhdHVzKHN0YWNrTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYXdhaXQgdGhpcy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgICAgIG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoe1xuICAgICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICkuU3RhY2tzPy5bMF0uU3RhY2tTdGF0dXM7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoaXNTdGFja01pc3NpbmdFcnJvcihlKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1wdHlCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nLCBvcHRpb25zPzogeyBieXBhc3NHb3Zlcm5hbmNlPzogYm9vbGVhbiB9KSB7XG4gICAgY29uc3Qgb2JqZWN0cyA9IGF3YWl0IHRoaXMuczMuc2VuZChcbiAgICAgIG5ldyBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kKHtcbiAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGRlbGV0ZXMgPSBbLi4uKG9iamVjdHMuVmVyc2lvbnMgfHwgW10pLCAuLi4ob2JqZWN0cy5EZWxldGVNYXJrZXJzIHx8IFtdKV0ucmVkdWNlKChhY2MsIG9iaikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvYmouVmVyc2lvbklkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb2JqLktleSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgYWNjLnB1c2goeyBLZXk6IG9iai5LZXksIFZlcnNpb25JZDogb2JqLlZlcnNpb25JZCB9KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iai5LZXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjYy5wdXNoKHsgS2V5OiBvYmouS2V5IH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBPYmplY3RJZGVudGlmaWVyW10pO1xuXG4gICAgaWYgKGRlbGV0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuczMuc2VuZChcbiAgICAgIG5ldyBEZWxldGVPYmplY3RzQ29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgRGVsZXRlOiB7XG4gICAgICAgICAgT2JqZWN0czogZGVsZXRlcyxcbiAgICAgICAgICBRdWlldDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIEJ5cGFzc0dvdmVybmFuY2VSZXRlbnRpb246IG9wdGlvbnM/LmJ5cGFzc0dvdmVybmFuY2UgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVJbWFnZVJlcG9zaXRvcnkocmVwb3NpdG9yeU5hbWU6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuZWNyLnNlbmQoXG4gICAgICBuZXcgRGVsZXRlUmVwb3NpdG9yeUNvbW1hbmQoe1xuICAgICAgICByZXBvc2l0b3J5TmFtZTogcmVwb3NpdG9yeU5hbWUsXG4gICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZW1wdHlCdWNrZXQoYnVja2V0TmFtZSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuczMuc2VuZChcbiAgICAgICAgbmV3IERlbGV0ZUJ1Y2tldENvbW1hbmQoe1xuICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGlzQnVja2V0TWlzc2luZ0Vycm9yKGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJvbGUgdGhhdCB3aWxsIGJlIGNsZWFuZWQgdXAgd2hlbiB0aGUgQXdzQ2xpZW50cyBvYmplY3QgaXMgY2xlYW5lZCB1cFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHRlbXBvcmFyeVJvbGUobmFtZVByZWZpeDogc3RyaW5nLCBhc3N1bWVSb2xlUG9saWN5U3RhdGVtZW50czogYW55W10sIHBvbGljeVN0YXRlbWVudHM6IGFueVtdKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmlhbS5zZW5kKG5ldyBDcmVhdGVSb2xlQ29tbWFuZCh7XG4gICAgICBSb2xlTmFtZTogYCR7bmFtZVByZWZpeH0tJHt0aGlzLnJhbmRvbVN0cmluZ31gLFxuICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICAgICAgU3RhdGVtZW50OiBhc3N1bWVSb2xlUG9saWN5U3RhdGVtZW50cyxcbiAgICAgIH0sIHVuZGVmaW5lZCwgMiksXG4gICAgICBUYWdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBLZXk6ICdkZWxldGVtZScsXG4gICAgICAgICAgVmFsdWU6ICd0cnVlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSkpO1xuICAgIGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IFB1dFJvbGVQb2xpY3lDb21tYW5kKHtcbiAgICAgIFJvbGVOYW1lOiBgJHtuYW1lUHJlZml4fS0ke3RoaXMucmFuZG9tU3RyaW5nfWAsXG4gICAgICBQb2xpY3lOYW1lOiAnRGVmYXVsdFBvbGljeScsXG4gICAgICBQb2xpY3lEb2N1bWVudDogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogcG9saWN5U3RhdGVtZW50cyxcbiAgICAgIH0sIHVuZGVmaW5lZCwgMiksXG4gICAgfSkpO1xuXG4gICAgdGhpcy5hZGRDbGVhbnVwKCgpID0+IHRoaXMuZGVsZXRlUm9sZShyZXNwb25zZS5Sb2xlIS5Sb2xlTmFtZSEpKTtcblxuICAgIHJldHVybiByZXNwb25zZS5Sb2xlPy5Bcm4gPz8gJypDcmVhdGVSb2xlIGRpZCBub3QgcmV0dXJuIGFuIEFSTionO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHdhaXRGb3JBc3N1bWVSb2xlKHJvbGVBcm46IHN0cmluZykge1xuICAgIGF3YWl0IHJldHJ5T25NYXRjaGluZ0Vycm9ycyhcbiAgICAgICgpID0+IHRoaXMuc3RzLnNlbmQobmV3IEFzc3VtZVJvbGVDb21tYW5kKHtcbiAgICAgICAgUm9sZUFybjogcm9sZUFybixcbiAgICAgICAgUm9sZVNlc3Npb25OYW1lOiAndGVzdC1leGlzdGVuY2UnLFxuICAgICAgfSkpLFxuICAgICAgWydBY2Nlc3NEZW5pZWQnXSxcbiAgICAgIHJldHJ5LmZvclNlY29uZHMoNjApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlUm9sZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY2llc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5pYW0uc2VuZChuZXcgTGlzdFJvbGVQb2xpY2llc0NvbW1hbmQoe1xuICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgfSkpO1xuXG4gICAgZm9yIChjb25zdCBwb2xpY3lOYW1lIG9mIHBvbGljaWVzUmVzcG9uc2UuUG9saWN5TmFtZXMgPz8gW10pIHtcbiAgICAgIGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IERlbGV0ZVJvbGVQb2xpY3lDb21tYW5kKHtcbiAgICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgICAgIFBvbGljeU5hbWU6IHBvbGljeU5hbWUsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pYW0uc2VuZChuZXcgRGVsZXRlUm9sZUNvbW1hbmQoe1xuICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YWNrTWlzc2luZ0Vycm9yKGU6IEVycm9yKSB7XG4gIHJldHVybiBlLm1lc3NhZ2UuaW5kZXhPZignZG9lcyBub3QgZXhpc3QnKSA+IC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWNrZXRNaXNzaW5nRXJyb3IoZTogRXJyb3IpIHtcbiAgcmV0dXJuIGUubWVzc2FnZS5pbmRleE9mKCdkb2VzIG5vdCBleGlzdCcpID4gLTE7XG59XG5cbi8qKlxuICogUmV0cnkgYW4gYXN5bmMgb3BlcmF0aW9uIHVudGlsIGEgZGVhZGxpbmUgaXMgaGl0LlxuICpcbiAqIFVzZSBgcmV0cnkuZm9yU2Vjb25kcygpYCB0byBjb25zdHJ1Y3QgYSBkZWFkbGluZSByZWxhdGl2ZSB0byByaWdodCBub3cuXG4gKlxuICogRXhjZXB0aW9ucyB3aWxsIGNhdXNlIHRoZSBvcGVyYXRpb24gdG8gcmV0cnkuIFVzZSBgcmV0cnkuYWJvcnRgIHRvIGFubm90YXRlIGFuIGV4Y2VwdGlvblxuICogdG8gc3RvcCB0aGUgcmV0cnkgYW5kIGVuZCBpbiBhIGZhaWx1cmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeTxBPihcbiAgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW0sXG4gIG9wZXJhdGlvbjogc3RyaW5nLFxuICBkZWFkbGluZTogRGF0ZSxcbiAgYmxvY2s6ICgpID0+IFByb21pc2U8QT4sXG4pOiBQcm9taXNlPEE+IHtcbiAgbGV0IGkgPSAwO1xuICBvdXRwdXQud3JpdGUoYPCfkoggJHtvcGVyYXRpb259XFxuYCk7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGkrKztcbiAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGJsb2NrKCk7XG4gICAgICBvdXRwdXQud3JpdGUoYPCfkoggJHtvcGVyYXRpb259OiBzdWNjZWVkZWQgYWZ0ZXIgJHtpfSBhdHRlbXB0c1xcbmApO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLmFib3J0IHx8IERhdGUubm93KCkgPiBkZWFkbGluZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke29wZXJhdGlvbn06IGRpZCBub3Qgc3VjY2VlZCBhZnRlciAke2l9IGF0dGVtcHRzOiAke2V9YCk7XG4gICAgICB9XG4gICAgICBvdXRwdXQud3JpdGUoYOKPsyAke29wZXJhdGlvbn0gKCR7ZS5tZXNzYWdlfSlcXG5gKTtcbiAgICAgIGF3YWl0IHNsZWVwKDUwMDApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1ha2UgYSBkZWFkbGluZSBmb3IgdGhlIGByZXRyeWAgZnVuY3Rpb24gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZS5cbiAqL1xucmV0cnkuZm9yU2Vjb25kcyA9IChzZWNvbmRzOiBudW1iZXIpOiBEYXRlID0+IHtcbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUubm93KCkgKyBzZWNvbmRzICogMTAwMCk7XG59O1xuXG4vKipcbiAqIEFubm90YXRlIGFuIGVycm9yIHRvIHN0b3AgdGhlIHJldHJ5aW5nXG4gKi9cbnJldHJ5LmFib3J0ID0gKGU6IEVycm9yKTogRXJyb3IgPT4ge1xuICAoZSBhcyBhbnkpLmFib3J0ID0gdHJ1ZTtcbiAgcmV0dXJuIGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gb3V0cHV0RnJvbVN0YWNrKGtleTogc3RyaW5nLCBzdGFjazogU3RhY2spOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKHN0YWNrLk91dHB1dHMgPz8gW10pLmZpbmQoKG8pID0+IG8uT3V0cHV0S2V5ID09PSBrZXkpPy5PdXRwdXRWYWx1ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaykgPT4gc2V0VGltZW91dChvaywgbXMpKTtcbn1cblxuLyoqXG4gKiBSZXRyeSBhbiBhc3luYyBvcGVyYXRpb24gd2l0aCBlcnJvciBmaWx0ZXJpbmcgdW50aWwgYSBkZWFkbGluZSBpcyBoaXQuXG4gKlxuICogVXNlIGByZXRyeS5mb3JTZWNvbmRzKClgIHRvIGNvbnN0cnVjdCBhIGRlYWRsaW5lIHJlbGF0aXZlIHRvIHJpZ2h0IG5vdy5cbiAqXG4gKiBPbmx5IHJldHJpZXMgb24gZXJyb3JzIHdpdGggbWF0Y2hpbmcgbmFtZXMgaW4gZXJyb3JOYW1lcyBhcnJheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJ5T25NYXRjaGluZ0Vycm9yczxUPihcbiAgb3BlcmF0aW9uOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBlcnJvck5hbWVzOiBzdHJpbmdbXSxcbiAgZGVhZGxpbmU6IERhdGUsXG4gIGludGVydmFsOiBudW1iZXIgPSA1MDAwLFxuKTogUHJvbWlzZTxUPiB7XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgaSsrO1xuICAgICAgcmV0dXJuIGF3YWl0IG9wZXJhdGlvbigpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKERhdGUubm93KCkgPiBkZWFkbGluZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcGVyYXRpb24gZGlkIG5vdCBzdWNjZWVkIGFmdGVyICR7aX0gYXR0ZW1wdHM6ICR7ZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghZXJyb3JOYW1lcy5pbmNsdWRlcyhlLm5hbWUpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoYWluYWJsZUNyZWRlbnRpYWxzKHJlZ2lvbjogc3RyaW5nKTogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIge1xuICBpZiAoKHByb2Nlc3MuZW52LkNPREVCVUlMRF9CVUlMRF9BUk4gfHwgcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRCkgJiYgcHJvY2Vzcy5lbnYuQVdTX1BST0ZJTEUpIHtcbiAgICAvLyBpbiBjb2RlYnVpbGQgd2UgbXVzdCBhc3N1bWUgdGhlIHJvbGUgdGhhdCB0aGUgY2RrIHVzZXNcbiAgICAvLyBvdGhlcndpc2UgY3JlZGVudGlhbHMgd2lsbCBqdXN0IGJlIHBpY2tlZCB1cCBieSB0aGUgbm9ybWFsIHNka1xuICAgIC8vIGhldXJpc3RpY3MgYW5kIGV4cGlyZSBhZnRlciBhbiBob3VyLlxuICAgIHJldHVybiBmcm9tSW5pKHtcbiAgICAgIGNsaWVudENvbmZpZzogeyByZWdpb24gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSBqdXN0IGdldCB3aGF0J3MgZGVmYXVsdFxuICByZXR1cm4gZnJvbU5vZGVQcm92aWRlckNoYWluKHsgY2xpZW50Q29uZmlnOiB7IHJlZ2lvbiB9IH0pO1xufVxuXG5mdW5jdGlvbiBpc0F3c0NyZWRlbnRpYWxJZGVudGl0eSh4OiBhbnkpOiB4IGlzIEF3c0NyZWRlbnRpYWxJZGVudGl0eSB7XG4gIHJldHVybiBCb29sZWFuKHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHguYWNjZXNzS2V5SWQpO1xufVxuIl19
|
package/lib/corking.d.ts
CHANGED
|
@@ -2,9 +2,20 @@
|
|
|
2
2
|
* Routines for corking stdout and stderr
|
|
3
3
|
*/
|
|
4
4
|
import * as stream from 'stream';
|
|
5
|
+
/**
|
|
6
|
+
* Register values to be replaced with a placeholder in all buffered output
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerSecrets(...values: Array<string>): void;
|
|
9
|
+
/**
|
|
10
|
+
* Replace every registered secret in the given text with a placeholder
|
|
11
|
+
*/
|
|
12
|
+
export declare function redactSecrets(text: string): string;
|
|
5
13
|
export declare class MemoryStream extends stream.Writable {
|
|
6
14
|
private parts;
|
|
7
15
|
_write(chunk: Buffer, _encoding: string, callback: (error?: Error | null) => void): void;
|
|
16
|
+
/**
|
|
17
|
+
* The buffered output, with all registered secrets redacted
|
|
18
|
+
*/
|
|
8
19
|
buffer(): Buffer<ArrayBuffer>;
|
|
9
20
|
clear(): void;
|
|
10
21
|
flushTo(strm: NodeJS.WritableStream): Promise<void>;
|
package/lib/corking.js
CHANGED
|
@@ -34,18 +34,48 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.MemoryStream = void 0;
|
|
37
|
+
exports.registerSecrets = registerSecrets;
|
|
38
|
+
exports.redactSecrets = redactSecrets;
|
|
37
39
|
/**
|
|
38
40
|
* Routines for corking stdout and stderr
|
|
39
41
|
*/
|
|
40
42
|
const stream = __importStar(require("stream"));
|
|
43
|
+
/**
|
|
44
|
+
* Values that must be scrubbed from any buffered test output
|
|
45
|
+
*
|
|
46
|
+
* Registered values are process-global because `MemoryStream`s are created per test,
|
|
47
|
+
* while credentials are established once per worker process.
|
|
48
|
+
*/
|
|
49
|
+
const SECRETS = new Set();
|
|
50
|
+
/**
|
|
51
|
+
* Register values to be replaced with a placeholder in all buffered output
|
|
52
|
+
*/
|
|
53
|
+
function registerSecrets(...values) {
|
|
54
|
+
for (const value of values) {
|
|
55
|
+
SECRETS.add(value);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Replace every registered secret in the given text with a placeholder
|
|
60
|
+
*/
|
|
61
|
+
function redactSecrets(text) {
|
|
62
|
+
let ret = text;
|
|
63
|
+
for (const secret of SECRETS) {
|
|
64
|
+
ret = ret.split(secret).join('<REDACTED>');
|
|
65
|
+
}
|
|
66
|
+
return ret;
|
|
67
|
+
}
|
|
41
68
|
class MemoryStream extends stream.Writable {
|
|
42
69
|
parts = new Array();
|
|
43
70
|
_write(chunk, _encoding, callback) {
|
|
44
71
|
this.parts.push(chunk);
|
|
45
72
|
callback();
|
|
46
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* The buffered output, with all registered secrets redacted
|
|
76
|
+
*/
|
|
47
77
|
buffer() {
|
|
48
|
-
return Buffer.concat(this.parts);
|
|
78
|
+
return Buffer.from(redactSecrets(Buffer.concat(this.parts).toString()));
|
|
49
79
|
}
|
|
50
80
|
clear() {
|
|
51
81
|
this.parts.splice(0, this.parts.length);
|
|
@@ -62,4 +92,4 @@ class MemoryStream extends stream.Writable {
|
|
|
62
92
|
}
|
|
63
93
|
}
|
|
64
94
|
exports.MemoryStream = MemoryStream;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ya2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvcmtpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLDBDQUlDO0FBS0Qsc0NBTUM7QUEvQkQ7O0dBRUc7QUFDSCwrQ0FBaUM7QUFFakM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRWxDOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQUcsTUFBcUI7SUFDdEQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQUMsSUFBWTtJQUN4QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDZixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBYSxZQUFhLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDdkMsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFFN0IsTUFBTSxDQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFFBQXdDO1FBQ3RGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBMkI7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBOUJELG9DQThCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUm91dGluZXMgZm9yIGNvcmtpbmcgc3Rkb3V0IGFuZCBzdGRlcnJcbiAqL1xuaW1wb3J0ICogYXMgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5cbi8qKlxuICogVmFsdWVzIHRoYXQgbXVzdCBiZSBzY3J1YmJlZCBmcm9tIGFueSBidWZmZXJlZCB0ZXN0IG91dHB1dFxuICpcbiAqIFJlZ2lzdGVyZWQgdmFsdWVzIGFyZSBwcm9jZXNzLWdsb2JhbCBiZWNhdXNlIGBNZW1vcnlTdHJlYW1gcyBhcmUgY3JlYXRlZCBwZXIgdGVzdCxcbiAqIHdoaWxlIGNyZWRlbnRpYWxzIGFyZSBlc3RhYmxpc2hlZCBvbmNlIHBlciB3b3JrZXIgcHJvY2Vzcy5cbiAqL1xuY29uc3QgU0VDUkVUUyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHZhbHVlcyB0byBiZSByZXBsYWNlZCB3aXRoIGEgcGxhY2Vob2xkZXIgaW4gYWxsIGJ1ZmZlcmVkIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTZWNyZXRzKC4uLnZhbHVlczogQXJyYXk8c3RyaW5nPikge1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgIFNFQ1JFVFMuYWRkKHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcGxhY2UgZXZlcnkgcmVnaXN0ZXJlZCBzZWNyZXQgaW4gdGhlIGdpdmVuIHRleHQgd2l0aCBhIHBsYWNlaG9sZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWRhY3RTZWNyZXRzKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCByZXQgPSB0ZXh0O1xuICBmb3IgKGNvbnN0IHNlY3JldCBvZiBTRUNSRVRTKSB7XG4gICAgcmV0ID0gcmV0LnNwbGl0KHNlY3JldCkuam9pbignPFJFREFDVEVEPicpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlTdHJlYW0gZXh0ZW5kcyBzdHJlYW0uV3JpdGFibGUge1xuICBwcml2YXRlIHBhcnRzID0gbmV3IEFycmF5PEJ1ZmZlcj4oKTtcblxuICBwdWJsaWMgX3dyaXRlKGNodW5rOiBCdWZmZXIsIF9lbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wYXJ0cy5wdXNoKGNodW5rKTtcbiAgICBjYWxsYmFjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBidWZmZXJlZCBvdXRwdXQsIHdpdGggYWxsIHJlZ2lzdGVyZWQgc2VjcmV0cyByZWRhY3RlZFxuICAgKi9cbiAgcHVibGljIGJ1ZmZlcigpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocmVkYWN0U2VjcmV0cyhCdWZmZXIuY29uY2F0KHRoaXMucGFydHMpLnRvU3RyaW5nKCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnBhcnRzLnNwbGljZSgwLCB0aGlzLnBhcnRzLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmx1c2hUbyhzdHJtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmbHVzaGVkID0gc3RybS53cml0ZSh0aGlzLmJ1ZmZlcigpKTtcbiAgICBpZiAoIWZsdXNoZWQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShvayA9PiBzdHJtLm9uY2UoJ2RyYWluJywgb2spKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlcigpLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/integ-test.js
CHANGED
|
@@ -37,7 +37,9 @@ exports.integTest = integTest;
|
|
|
37
37
|
exports.randomString = randomString;
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
|
+
const aws_1 = require("./aws");
|
|
40
41
|
const corking_1 = require("./corking");
|
|
42
|
+
(0, corking_1.registerSecrets)(...aws_1.CREDENTIAL_ENV_VARS.map(v => process.env[v]));
|
|
41
43
|
const SKIP_TESTS = [
|
|
42
44
|
...readSkipFile(path.join(__dirname, '..', 'skip-tests.txt')),
|
|
43
45
|
...readSkipFile(process.env.CDK_INTEG_SKIP_TESTS_FILE),
|
|
@@ -236,4 +238,4 @@ function readSkipFile(filePath) {
|
|
|
236
238
|
return [];
|
|
237
239
|
}
|
|
238
240
|
}
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0EsOEJBZ0dDO0FBa0JELG9DQUdDO0FBckpELHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsdUNBQXlDO0FBRXpDLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7SUFDdEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztDQUN2RCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUVuRCxzRUFBc0U7QUFDdEUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBVW5COztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixJQUFZLEVBQ1os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QUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE1lbW9yeVN0cmVhbSB9IGZyb20gJy4vY29ya2luZyc7XG5cbmNvbnN0IFNLSVBfVEVTVFMgPSBbXG4gIC4uLnJlYWRTa2lwRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnc2tpcC10ZXN0cy50eHQnKSksXG4gIC4uLnJlYWRTa2lwRmlsZShwcm9jZXNzLmVudi5DREtfSU5URUdfU0tJUF9URVNUU19GSUxFKSxcbiAgLi4uKHByb2Nlc3MuZW52LkNES19JTlRFR19TS0lQX1RFU1RTID8/ICcnKS5zcGxpdCgnLCcpLFxuXS5tYXAoeCA9PiB4LnRyaW0oKSlcbiAgLmZpbHRlcih4ID0+IHggJiYgIXguc3RhcnRzV2l0aCgnIycpKTtcblxuaWYgKFNLSVBfVEVTVFMubGVuZ3RoID4gMCkge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShg4oS577iPIFNraXBwaW5nIHRlc3RzOiAke0pTT04uc3RyaW5naWZ5KFNLSVBfVEVTVFMpfVxcbmApO1xufVxuXG4vLyBXaGV0aGVyIHdlIHdhbnQgdG8gc3RvcCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSwgZm9yIHF1aWNrZXIgZGVidWdnaW5nIChob3BlZnVsbHkpLlxuY29uc3QgRkFJTF9GQVNUID0gcHJvY2Vzcy5lbnYuRkFJTF9GQVNUID09PSAndHJ1ZSc7XG5cbi8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGUgc3VpdGUgaGFzIGZhaWxlZC4gSWYgc28sIHdlIHN0b3AgcnVubmluZy5cbmxldCBmYWlsZWQgPSBmYWxzZTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0Q29udGV4dCB7XG4gIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtO1xuICBsb2coczogc3RyaW5nKTogdm9pZDtcbiAgcmVwb3J0V2FpdFRpbWUobXM6IG51bWJlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBqZXN0J3MgJ3Rlc3QnIHdoaWNoIHRha2VzIHJlZ3Jlc3Npb24tZGlzYWJsZWQgdGVzdHMgaW50byBhY2NvdW50IGFuZCBwcmludHMgYSBiYW5uZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnVGVzdChcbiAgbmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogKGNvbnRleHQ6IFRlc3RDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+LFxuICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1bm5lciA9IHNob3VsZFNraXAobmFtZSkgPyB0ZXN0LnNraXAgOiB0ZXN0O1xuXG4gIGplc3QucmV0cnlUaW1lcyhwYXJzZUludChwcm9jZXNzLmVudi5KRVNUX1JFVFJZX1RJTUVTID8/ICcwJykpO1xuXG4gIHJ1bm5lcihuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IE1lbW9yeVN0cmVhbSgpO1xuXG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG4gICAgb3V0cHV0LndyaXRlKGAke25hbWV9XFxuYCk7XG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IHdhaXRUaW1lID0gMDtcblxuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gU3RhcnRpbmcgKHBpZCAke3Byb2Nlc3MucGlkfSkuLi5cXG5gKTtcbiAgICBtYXliZVByaW50TWVtb3J5VXNhZ2UobmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChGQUlMX0ZBU1QgJiYgZmFpbGVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRkFJTF9GQVNUIHJlcXVlc3RlZCBhbmQgY3VycmVudGx5IGZhaWxpbmcuIFN0b3BwaW5nIHRlc3QgZWFybHkuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGNhbGxiYWNrKHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICByYW5kb21TdHJpbmc6IHJhbmRvbVN0cmluZygpLFxuICAgICAgICBuYW1lLFxuICAgICAgICBsb2coczogc3RyaW5nKSB7XG4gICAgICAgICAgb3V0cHV0LndyaXRlKGAke3N9XFxuYCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlcG9ydFdhaXRUaW1lKG4pIHtcbiAgICAgICAgICB3YWl0VGltZSArPSBuO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHdyaXRlTG9nKG5hbWUsIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgb3V0cHV0OiBvdXRwdXQudG9TdHJpbmcoKSxcbiAgICAgICAgdG90YWxEdXJhdGlvbjogRGF0ZS5ub3coKSAtIHN0YXJ0LFxuICAgICAgICB3YWl0VGltZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgLy8gUHJpbnQgdGhlIGJ1ZmZlcmVkIG91dHB1dCwgb25seSBpZiB0aGUgdGVzdCBmYWlscy5cbiAgICAgIGZhaWxlZCA9IHRydWU7XG5cbiAgICAgIG91dHB1dC53cml0ZShlLm1lc3NhZ2UpO1xuICAgICAgb3V0cHV0LndyaXRlKGUuc3RhY2spO1xuXG4gICAgICBhd2FpdCB3cml0ZUxvZyhuYW1lLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBvdXRwdXQ6IG91dHB1dC50b1N0cmluZygpLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIHdhaXRUaW1lLFxuICAgICAgfSk7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIEZhaWxlZDogJHtlfVxcbmApO1xuXG4gICAgICBjb25zdCBpc0dpdEh1YiA9ICEhcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRDtcblxuICAgICAgaWYgKGlzR2l0SHViKSB7XG4gICAgICAgIC8vIEdpdEh1YiBBY3Rpb25zIGNvbXBhdGlibGUgb3V0cHV0IGZvcm1hdHRpbmdcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy9jaG9vc2luZy13aGF0LXlvdXItd29ya2Zsb3ctZG9lcy93b3JrZmxvdy1jb21tYW5kcy1mb3ItZ2l0aHViLWFjdGlvbnMjc2V0dGluZy1hbi1lcnJvci1tZXNzYWdlXG4gICAgICAgIGxldCB3cml0dGVuID0gcHJvY2Vzcy5zdGRlcnIud3JpdGUoYDo6ZXJyb3IgdGl0bGU9RmFpbGVkICR7bmFtZX06OiR7ZS5tZXNzYWdlfVxcbmApO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRlcnIub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJpbnQgb3V0cHV0IG9ubHkgaWYgdGhlIHRlc3QgZmFpbHMuIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICB3cml0dGVuID0gcHJvY2Vzcy5zdGRvdXQud3JpdGUoW1xuICAgICAgICAgIGA6Omdyb3VwOjpGYWlsdXJlIGRldGFpbHM6ICR7bmFtZX0gKGNsaWNrIHRvIGV4cGFuZClcXG5gLFxuICAgICAgICAgIGAke291dHB1dC5idWZmZXIoKS50b1N0cmluZygpfVxcbmAsXG4gICAgICAgICAgJzo6ZW5kZ3JvdXA6OlxcbicsXG4gICAgICAgIF0uam9pbignJykpO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRvdXQub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVc2UgJ2NvbnNvbGUubG9nJyBzbyB0aGUgb3V0cHV0IGlzIGJ1ZmZlcmVkIGJ5XG4gICAgICAgIC8vIGplc3QgYW5kIHByaW50cyB3aXRob3V0IGEgc3RhY2sgdHJhY2UgKGlmIHZlcmJvc2U6IGZhbHNlKS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2cob3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIERvbmUgKCR7aHVtYW5UaW1lKGR1cmF0aW9uKX0pLlxcbmApO1xuICAgICAgbWF5YmVQcmludE1lbW9yeVVzYWdlKG5hbWUpO1xuICAgIH1cbiAgfSwgdGltZW91dE1pbGxpcyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXAodGVzdE5hbWU6IHN0cmluZykge1xuICByZXR1cm4gU0tJUF9URVNUUy5pbmNsdWRlcyh0ZXN0TmFtZSk7XG59XG5cbmZ1bmN0aW9uIG1heWJlUHJpbnRNZW1vcnlVc2FnZSh0ZXN0TmFtZTogc3RyaW5nKSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19NRU1PUllfREVCVUcgIT09ICd0cnVlJykge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKSBhcyBhbnk7XG4gIGNvbnN0IHJlcG9ydDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1lbW9yeVVzYWdlKSkge1xuICAgIHJlcG9ydFtrZXldID0gYCR7TWF0aC5yb3VuZCh2YWx1ZSBhcyBudW1iZXIgLyAxMDI0IC8gMTAyNCl9IE1CYDtcbiAgfVxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7dGVzdE5hbWV9XSBNZW1vcnkgVXNhZ2U6ICR7SlNPTi5zdHJpbmdpZnkocmVwb3J0KX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgLy8gQ3JhenlcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJycpO1xufVxuXG4vKipcbiAqIFdyaXRlIGxvZyBmaWxlc1xuICpcbiAqIFdyaXRlIGEgdGV4dCBsb2cgdG8gYCR7SU5URUdfTE9HU30vW0ZBSUxFRC1dZGVzY3JpcHRpb24tb2YtdGVzdC50eHRgLCBhbmQgYSBzaW5nbGVcbiAqIGxpbmUgb2YgYSBNYXJrZG93biB0YWJsZSB0byBgJHtJTlRFR19MT0dTfS9tZC8xLWRlc2NyaXB0aW9uLW9mLXRlc3QubWRgLlxuICpcbiAqIFRoZSBsYXR0ZXIgYXJlIGRlc2lnbmVkIHRvIGJlIGdsb2JjYXR0ZWQgdG8gJEdJVEhVQl9TVEVQX1NVTU1BUlkgYWZ0ZXIgdGVzdHNcbiAqICh3ZSBkb24ndCB3cml0ZSB0aGVyZSBkaXJlY3RseSB0byBhdm9pZCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXNcbiAqIHJlYWRpbmcgYW5kIG11dGF0aW5nIHRoZSBzYW1lIGZpbGUpLlxuICpcbiAqIFdlIGRvIHVzZSBgYXRvbWljV3JpdGVgIHRvIHdyaXRlIGZpbGVzIC0tIGl0J3Mgb25seSBuZWNlc3NhcnkgZm9yIHRoZSBoZWFkZXIgZmlsZSxcbiAqIHdoaWNoIGdldHMgb3ZlcndyaXR0ZW4gYnkgZXZlcnkgdGVzdCwganVzdCB0byBtYWtlIHN1cmUgaXQgcHJvcGVybHkgZXhpc3RzIChzaG91bGRuJ3RcbiAqIGVuZCB1cCBlbXB0eSBvciB3aXRoIGludGVybGVhdmVkIGNvbnRlbnRzKS4gVGhlIG90aGVyIHdyaXRlcyBhcmUgbm90XG4gKiBjb250ZW5kZWQgYW5kIGRvbid0IG5lZWQgdG8gYmUgYXRvbWljLCBidXQgdGhlIGZ1bmN0aW9uIGlzIGp1c3QgZXJnb25vbWljIHRvIHVzZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd3JpdGVMb2codGVzdE5hbWU6IHN0cmluZywgcmVzdWx0OiB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG91dHB1dDogc3RyaW5nO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIHdhaXRUaW1lOiBudW1iZXI7XG59KSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19MT0dTKSB7XG4gICAgLy8gV3JpdGUgdGhlIGxvZyBmaWxlXG4gICAgY29uc3Qgc2x1ZyA9IHNsdWdpZnkodGVzdE5hbWUpO1xuICAgIGNvbnN0IGxvZ0ZpbGVOYW1lID0gYCR7cHJvY2Vzcy5lbnYuSU5URUdfTE9HU30vJHtyZXN1bHQuc3VjY2VzcyA/ICcnIDogJ0ZBSUxFRC0nfSR7c2x1Z30udHh0YDtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShsb2dGaWxlTmFtZSwgcmVzdWx0Lm91dHB1dCk7XG5cbiAgICAvLyBXcml0ZSBhIHJvdyBmb3IgdGhlIG1hcmtkb3duIHRhYmxlXG4gICAgLy8gU29ydCBmYWlsdXJlcyBiZWZvcmUgc3VjY2Vzc2VzLCBhbmQgdGhlIHRhYmxlIGhlYWRlciBiZWZvcmUgYWxsXG4gICAgY29uc3QgbWRGaWxlTmFtZSA9IGAke3Byb2Nlc3MuZW52LklOVEVHX0xPR1N9L21kLyR7cmVzdWx0LnN1Y2Nlc3MgPyAnMicgOiAnMSd9LSR7c2x1Z30ubWRgO1xuICAgIGNvbnN0IGNvbHVtbnM6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1xuICAgICAgWydSZXN1bHQnLCByZXN1bHQuc3VjY2VzcyA/ICdwYXNzIOKchScgOiAnZmFpbCDinYwnXSxcbiAgICAgIFsnVGVzdCBOYW1lJywgdGVzdE5hbWVdLFxuICAgICAgWydUZXN0IER1cmF0aW9uJywgaHVtYW5UaW1lKHJlc3VsdC50b3RhbER1cmF0aW9uIC0gcmVzdWx0LndhaXRUaW1lKV0sXG4gICAgICBbJ1dhaXQgVGltZScsIHJlc3VsdC53YWl0VGltZSA+IDAgPyBodW1hblRpbWUocmVzdWx0LndhaXRUaW1lKSA6ICctJ10sXG4gICAgXTtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShgJHtwcm9jZXNzLmVudi5JTlRFR19MT0dTfS9tZC8wLWhlYWRlci5tZGAsIFtcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtjb2wsIF92YWxdKSA9PiBjb2wpLmpvaW4oJyB8ICcpfSB8YCxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKCkgPT4gJy0tLS0tLS0tLS0tJykuam9pbignIHwgJyl9IHxgLFxuICAgIF0ubWFwKHggPT4gYCR7eH1cXG5gKS5qb2luKCcnKSk7XG4gICAgYXdhaXQgYXRvbWljV3JpdGUobWRGaWxlTmFtZSxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtfY29sLCB2YWxdKSA9PiB2YWwpLmpvaW4oJyB8ICcpfSB8XFxuYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVtYW5UaW1lKGRlbHRhOiBudW1iZXIpIHtcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuXG4gIGNvbnN0IFMgPSAxMDAwO1xuICBjb25zdCBNID0gNjAgKiBTO1xuICBjb25zdCBIID0gNjAgKiBNO1xuXG4gIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvIEgpO1xuICBpZiAoaG91cnMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke2hvdXJzfWhgKTtcbiAgICBkZWx0YSAtPSBob3VycyAqIEg7XG4gIH1cbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyBNKTtcbiAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke21pbnV0ZXN9bWApO1xuICAgIGRlbHRhIC09IG1pbnV0ZXMgKiBNO1xuICB9XG4gIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRlbHRhIC8gUyk7XG4gIGlmIChzZWNvbmRzID4gMCkge1xuICAgIGNvbXBvbmVudHMucHVzaChgJHtzZWNvbmRzfXNgKTtcbiAgICBkZWx0YSAtPSBzZWNvbmRzICogUztcbiAgfVxuICBjb21wb25lbnRzLnB1c2goYCR7ZGVsdGF9bXNgKTtcblxuICAvLyBSZXRhaW4gdGhlIDIgbW9zdCBzaWduaWZpY2FudCBjb21wb25lbnRzXG4gIHJldHVybiBjb21wb25lbnRzLnNsaWNlKDAsIDIpLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzbHVnaWZ5KHg6IHN0cmluZykge1xuICByZXR1cm4geC5yZXBsYWNlKC9bXmEtekEtWjAtOV8sXSsvZywgJy0nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXRvbWljV3JpdGUoZmlsZU5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZU5hbWUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCB0bXAgPSBgJHtmaWxlTmFtZX0uJHtwcm9jZXNzLnBpZH1gO1xuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUodG1wLCBjb250ZW50cyk7XG4gIGF3YWl0IGZzLnByb21pc2VzLnJlbmFtZSh0bXAsIGZpbGVOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVhZFNraXBGaWxlKGZpbGVQYXRoPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAoIWZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KS5zcGxpdCgnXFxuJyk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQ0EsOEJBZ0dDO0FBa0JELG9DQUdDO0FBeEpELHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsK0JBQTRDO0FBQzVDLHVDQUEwRDtBQUUxRCxJQUFBLHlCQUFlLEVBQUMsR0FBRyx5QkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FBQztBQUVsRSxNQUFNLFVBQVUsR0FBRztJQUNqQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RCxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDO0lBQ3RELEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7Q0FDdkQsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDakIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXhDLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUMxQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELHNGQUFzRjtBQUN0RixNQUFNLFNBQVMsR0FBRyxP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QztBQUMxQyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsUUFBaUI7SUFDckMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDUkVERU5USUFMX0VOVl9WQVJTIH0gZnJvbSAnLi9hd3MnO1xuaW1wb3J0IHsgTWVtb3J5U3RyZWFtLCByZWdpc3RlclNlY3JldHMgfSBmcm9tICcuL2NvcmtpbmcnO1xuXG5yZWdpc3RlclNlY3JldHMoLi4uQ1JFREVOVElBTF9FTlZfVkFSUy5tYXAodiA9PiBwcm9jZXNzLmVudlt2XSEpKTtcblxuY29uc3QgU0tJUF9URVNUUyA9IFtcbiAgLi4ucmVhZFNraXBGaWxlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdza2lwLXRlc3RzLnR4dCcpKSxcbiAgLi4ucmVhZFNraXBGaWxlKHByb2Nlc3MuZW52LkNES19JTlRFR19TS0lQX1RFU1RTX0ZJTEUpLFxuICAuLi4ocHJvY2Vzcy5lbnYuQ0RLX0lOVEVHX1NLSVBfVEVTVFMgPz8gJycpLnNwbGl0KCcsJyksXG5dLm1hcCh4ID0+IHgudHJpbSgpKVxuICAuZmlsdGVyKHggPT4geCAmJiAheC5zdGFydHNXaXRoKCcjJykpO1xuXG5pZiAoU0tJUF9URVNUUy5sZW5ndGggPiAwKSB7XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGDihLnvuI8gU2tpcHBpbmcgdGVzdHM6ICR7SlNPTi5zdHJpbmdpZnkoU0tJUF9URVNUUyl9XFxuYCk7XG59XG5cbi8vIFdoZXRoZXIgd2Ugd2FudCB0byBzdG9wIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlLCBmb3IgcXVpY2tlciBkZWJ1Z2dpbmcgKGhvcGVmdWxseSkuXG5jb25zdCBGQUlMX0ZBU1QgPSBwcm9jZXNzLmVudi5GQUlMX0ZBU1QgPT09ICd0cnVlJztcblxuLy8gS2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZSBzdWl0ZSBoYXMgZmFpbGVkLiBJZiBzbywgd2Ugc3RvcCBydW5uaW5nLlxubGV0IGZhaWxlZCA9IGZhbHNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb250ZXh0IHtcbiAgcmVhZG9ubHkgcmFuZG9tU3RyaW5nOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW07XG4gIGxvZyhzOiBzdHJpbmcpOiB2b2lkO1xuICByZXBvcnRXYWl0VGltZShtczogbnVtYmVyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIHdyYXBwZXIgZm9yIGplc3QncyAndGVzdCcgd2hpY2ggdGFrZXMgcmVncmVzc2lvbi1kaXNhYmxlZCB0ZXN0cyBpbnRvIGFjY291bnQgYW5kIHByaW50cyBhIGJhbm5lclxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZWdUZXN0KFxuICBuYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiAoY29udGV4dDogVGVzdENvbnRleHQpID0+IFByb21pc2U8dm9pZD4sXG4gIHRpbWVvdXRNaWxsaXM/OiBudW1iZXIsXG4pOiB2b2lkIHtcbiAgY29uc3QgcnVubmVyID0gc2hvdWxkU2tpcChuYW1lKSA/IHRlc3Quc2tpcCA6IHRlc3Q7XG5cbiAgamVzdC5yZXRyeVRpbWVzKHBhcnNlSW50KHByb2Nlc3MuZW52LkpFU1RfUkVUUllfVElNRVMgPz8gJzAnKSk7XG5cbiAgcnVubmVyKG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvdXRwdXQgPSBuZXcgTWVtb3J5U3RyZWFtKCk7XG5cbiAgICBvdXRwdXQud3JpdGUoJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4nKTtcbiAgICBvdXRwdXQud3JpdGUoYCR7bmFtZX1cXG5gKTtcbiAgICBvdXRwdXQud3JpdGUoJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4nKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgd2FpdFRpbWUgPSAwO1xuXG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYFtJTlRFRyBURVNUOjoke25hbWV9XSBTdGFydGluZyAocGlkICR7cHJvY2Vzcy5waWR9KS4uLlxcbmApO1xuICAgIG1heWJlUHJpbnRNZW1vcnlVc2FnZShuYW1lKTtcbiAgICB0cnkge1xuICAgICAgaWYgKEZBSUxfRkFTVCAmJiBmYWlsZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGQUlMX0ZBU1QgcmVxdWVzdGVkIGFuZCBjdXJyZW50bHkgZmFpbGluZy4gU3RvcHBpbmcgdGVzdCBlYXJseS4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmV0ID0gYXdhaXQgY2FsbGJhY2soe1xuICAgICAgICBvdXRwdXQsXG4gICAgICAgIHJhbmRvbVN0cmluZzogcmFuZG9tU3RyaW5nKCksXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxvZyhzOiBzdHJpbmcpIHtcbiAgICAgICAgICBvdXRwdXQud3JpdGUoYCR7c31cXG5gKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVwb3J0V2FpdFRpbWUobikge1xuICAgICAgICAgIHdhaXRUaW1lICs9IG47XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgd3JpdGVMb2cobmFtZSwge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBvdXRwdXQ6IG91dHB1dC50b1N0cmluZygpLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIHdhaXRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAvLyBQcmludCB0aGUgYnVmZmVyZWQgb3V0cHV0LCBvbmx5IGlmIHRoZSB0ZXN0IGZhaWxzLlxuICAgICAgZmFpbGVkID0gdHJ1ZTtcblxuICAgICAgb3V0cHV0LndyaXRlKGUubWVzc2FnZSk7XG4gICAgICBvdXRwdXQud3JpdGUoZS5zdGFjayk7XG5cbiAgICAgIGF3YWl0IHdyaXRlTG9nKG5hbWUsIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG91dHB1dDogb3V0cHV0LnRvU3RyaW5nKCksXG4gICAgICAgIHRvdGFsRHVyYXRpb246IERhdGUubm93KCkgLSBzdGFydCxcbiAgICAgICAgd2FpdFRpbWUsXG4gICAgICB9KTtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gRmFpbGVkOiAke2V9XFxuYCk7XG5cbiAgICAgIGNvbnN0IGlzR2l0SHViID0gISFwcm9jZXNzLmVudi5HSVRIVUJfUlVOX0lEO1xuXG4gICAgICBpZiAoaXNHaXRIdWIpIHtcbiAgICAgICAgLy8gR2l0SHViIEFjdGlvbnMgY29tcGF0aWJsZSBvdXRwdXQgZm9ybWF0dGluZ1xuICAgICAgICAvLyBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3dyaXRpbmctd29ya2Zsb3dzL2Nob29zaW5nLXdoYXQteW91ci13b3JrZmxvdy1kb2VzL3dvcmtmbG93LWNvbW1hbmRzLWZvci1naXRodWItYWN0aW9ucyNzZXR0aW5nLWFuLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgbGV0IHdyaXR0ZW4gPSBwcm9jZXNzLnN0ZGVyci53cml0ZShgOjplcnJvciB0aXRsZT1GYWlsZWQgJHtuYW1lfTo6JHtlLm1lc3NhZ2V9XFxuYCk7XG4gICAgICAgIGlmICghd3JpdHRlbikge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIGRyYWluXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBwcm9jZXNzLnN0ZGVyci5vbmNlKCdkcmFpbicsIG9rKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmludCBvdXRwdXQgb25seSBpZiB0aGUgdGVzdCBmYWlscy4gVXNlICdjb25zb2xlLmxvZycgc28gdGhlIG91dHB1dCBpcyBidWZmZXJlZCBieVxuICAgICAgICAvLyBqZXN0IGFuZCBwcmludHMgd2l0aG91dCBhIHN0YWNrIHRyYWNlIChpZiB2ZXJib3NlOiBmYWxzZSkuXG4gICAgICAgIHdyaXR0ZW4gPSBwcm9jZXNzLnN0ZG91dC53cml0ZShbXG4gICAgICAgICAgYDo6Z3JvdXA6OkZhaWx1cmUgZGV0YWlsczogJHtuYW1lfSAoY2xpY2sgdG8gZXhwYW5kKVxcbmAsXG4gICAgICAgICAgYCR7b3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCl9XFxuYCxcbiAgICAgICAgICAnOjplbmRncm91cDo6XFxuJyxcbiAgICAgICAgXS5qb2luKCcnKSk7XG4gICAgICAgIGlmICghd3JpdHRlbikge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIGRyYWluXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBwcm9jZXNzLnN0ZG91dC5vbmNlKCdkcmFpbicsIG9rKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhvdXRwdXQuYnVmZmVyKCkudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydDtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gRG9uZSAoJHtodW1hblRpbWUoZHVyYXRpb24pfSkuXFxuYCk7XG4gICAgICBtYXliZVByaW50TWVtb3J5VXNhZ2UobmFtZSk7XG4gICAgfVxuICB9LCB0aW1lb3V0TWlsbGlzKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkU2tpcCh0ZXN0TmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBTS0lQX1RFU1RTLmluY2x1ZGVzKHRlc3ROYW1lKTtcbn1cblxuZnVuY3Rpb24gbWF5YmVQcmludE1lbW9yeVVzYWdlKHRlc3ROYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHByb2Nlc3MuZW52LklOVEVHX01FTU9SWV9ERUJVRyAhPT0gJ3RydWUnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG1lbW9yeVVzYWdlID0gcHJvY2Vzcy5tZW1vcnlVc2FnZSgpIGFzIGFueTtcbiAgY29uc3QgcmVwb3J0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWVtb3J5VXNhZ2UpKSB7XG4gICAgcmVwb3J0W2tleV0gPSBgJHtNYXRoLnJvdW5kKHZhbHVlIGFzIG51bWJlciAvIDEwMjQgLyAxMDI0KX0gTUJgO1xuICB9XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHt0ZXN0TmFtZX1dIE1lbW9yeSBVc2FnZTogJHtKU09OLnN0cmluZ2lmeShyZXBvcnQpfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tU3RyaW5nKCkge1xuICAvLyBDcmF6eVxuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikucmVwbGFjZSgvW15hLXowLTldKy9nLCAnJyk7XG59XG5cbi8qKlxuICogV3JpdGUgbG9nIGZpbGVzXG4gKlxuICogV3JpdGUgYSB0ZXh0IGxvZyB0byBgJHtJTlRFR19MT0dTfS9bRkFJTEVELV1kZXNjcmlwdGlvbi1vZi10ZXN0LnR4dGAsIGFuZCBhIHNpbmdsZVxuICogbGluZSBvZiBhIE1hcmtkb3duIHRhYmxlIHRvIGAke0lOVEVHX0xPR1N9L21kLzEtZGVzY3JpcHRpb24tb2YtdGVzdC5tZGAuXG4gKlxuICogVGhlIGxhdHRlciBhcmUgZGVzaWduZWQgdG8gYmUgZ2xvYmNhdHRlZCB0byAkR0lUSFVCX1NURVBfU1VNTUFSWSBhZnRlciB0ZXN0c1xuICogKHdlIGRvbid0IHdyaXRlIHRoZXJlIGRpcmVjdGx5IHRvIGF2b2lkIGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRoIG11bHRpcGxlIHByb2Nlc3Nlc1xuICogcmVhZGluZyBhbmQgbXV0YXRpbmcgdGhlIHNhbWUgZmlsZSkuXG4gKlxuICogV2UgZG8gdXNlIGBhdG9taWNXcml0ZWAgdG8gd3JpdGUgZmlsZXMgLS0gaXQncyBvbmx5IG5lY2Vzc2FyeSBmb3IgdGhlIGhlYWRlciBmaWxlLFxuICogd2hpY2ggZ2V0cyBvdmVyd3JpdHRlbiBieSBldmVyeSB0ZXN0LCBqdXN0IHRvIG1ha2Ugc3VyZSBpdCBwcm9wZXJseSBleGlzdHMgKHNob3VsZG4ndFxuICogZW5kIHVwIGVtcHR5IG9yIHdpdGggaW50ZXJsZWF2ZWQgY29udGVudHMpLiBUaGUgb3RoZXIgd3JpdGVzIGFyZSBub3RcbiAqIGNvbnRlbmRlZCBhbmQgZG9uJ3QgbmVlZCB0byBiZSBhdG9taWMsIGJ1dCB0aGUgZnVuY3Rpb24gaXMganVzdCBlcmdvbm9taWMgdG8gdXNlLlxuICovXG5hc3luYyBmdW5jdGlvbiB3cml0ZUxvZyh0ZXN0TmFtZTogc3RyaW5nLCByZXN1bHQ6IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgb3V0cHV0OiBzdHJpbmc7XG4gIHRvdGFsRHVyYXRpb246IG51bWJlcjtcbiAgd2FpdFRpbWU6IG51bWJlcjtcbn0pIHtcbiAgaWYgKHByb2Nlc3MuZW52LklOVEVHX0xPR1MpIHtcbiAgICAvLyBXcml0ZSB0aGUgbG9nIGZpbGVcbiAgICBjb25zdCBzbHVnID0gc2x1Z2lmeSh0ZXN0TmFtZSk7XG4gICAgY29uc3QgbG9nRmlsZU5hbWUgPSBgJHtwcm9jZXNzLmVudi5JTlRFR19MT0dTfS8ke3Jlc3VsdC5zdWNjZXNzID8gJycgOiAnRkFJTEVELSd9JHtzbHVnfS50eHRgO1xuICAgIGF3YWl0IGF0b21pY1dyaXRlKGxvZ0ZpbGVOYW1lLCByZXN1bHQub3V0cHV0KTtcblxuICAgIC8vIFdyaXRlIGEgcm93IGZvciB0aGUgbWFya2Rvd24gdGFibGVcbiAgICAvLyBTb3J0IGZhaWx1cmVzIGJlZm9yZSBzdWNjZXNzZXMsIGFuZCB0aGUgdGFibGUgaGVhZGVyIGJlZm9yZSBhbGxcbiAgICBjb25zdCBtZEZpbGVOYW1lID0gYCR7cHJvY2Vzcy5lbnYuSU5URUdfTE9HU30vbWQvJHtyZXN1bHQuc3VjY2VzcyA/ICcyJyA6ICcxJ30tJHtzbHVnfS5tZGA7XG4gICAgY29uc3QgY29sdW1uczogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbXG4gICAgICBbJ1Jlc3VsdCcsIHJlc3VsdC5zdWNjZXNzID8gJ3Bhc3Mg4pyFJyA6ICdmYWlsIOKdjCddLFxuICAgICAgWydUZXN0IE5hbWUnLCB0ZXN0TmFtZV0sXG4gICAgICBbJ1Rlc3QgRHVyYXRpb24nLCBodW1hblRpbWUocmVzdWx0LnRvdGFsRHVyYXRpb24gLSByZXN1bHQud2FpdFRpbWUpXSxcbiAgICAgIFsnV2FpdCBUaW1lJywgcmVzdWx0LndhaXRUaW1lID4gMCA/IGh1bWFuVGltZShyZXN1bHQud2FpdFRpbWUpIDogJy0nXSxcbiAgICBdO1xuICAgIGF3YWl0IGF0b21pY1dyaXRlKGAke3Byb2Nlc3MuZW52LklOVEVHX0xPR1N9L21kLzAtaGVhZGVyLm1kYCwgW1xuICAgICAgYHwgJHtjb2x1bW5zLm1hcCgoW2NvbCwgX3ZhbF0pID0+IGNvbCkuam9pbignIHwgJyl9IHxgLFxuICAgICAgYHwgJHtjb2x1bW5zLm1hcCgoKSA9PiAnLS0tLS0tLS0tLS0nKS5qb2luKCcgfCAnKX0gfGAsXG4gICAgXS5tYXAoeCA9PiBgJHt4fVxcbmApLmpvaW4oJycpKTtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShtZEZpbGVOYW1lLFxuICAgICAgYHwgJHtjb2x1bW5zLm1hcCgoW19jb2wsIHZhbF0pID0+IHZhbCkuam9pbignIHwgJyl9IHxcXG5gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW1hblRpbWUoZGVsdGE6IG51bWJlcikge1xuICBjb25zdCBjb21wb25lbnRzID0gW107XG5cbiAgY29uc3QgUyA9IDEwMDA7XG4gIGNvbnN0IE0gPSA2MCAqIFM7XG4gIGNvbnN0IEggPSA2MCAqIE07XG5cbiAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKGRlbHRhIC8gSCk7XG4gIGlmIChob3VycyA+IDApIHtcbiAgICBjb21wb25lbnRzLnB1c2goYCR7aG91cnN9aGApO1xuICAgIGRlbHRhIC09IGhvdXJzICogSDtcbiAgfVxuICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihkZWx0YSAvIE0pO1xuICBpZiAobWludXRlcyA+IDApIHtcbiAgICBjb21wb25lbnRzLnB1c2goYCR7bWludXRlc31tYCk7XG4gICAgZGVsdGEgLT0gbWludXRlcyAqIE07XG4gIH1cbiAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoZGVsdGEgLyBTKTtcbiAgaWYgKHNlY29uZHMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke3NlY29uZHN9c2ApO1xuICAgIGRlbHRhIC09IHNlY29uZHMgKiBTO1xuICB9XG4gIGNvbXBvbmVudHMucHVzaChgJHtkZWx0YX1tc2ApO1xuXG4gIC8vIFJldGFpbiB0aGUgMiBtb3N0IHNpZ25pZmljYW50IGNvbXBvbmVudHNcbiAgcmV0dXJuIGNvbXBvbmVudHMuc2xpY2UoMCwgMikuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIHNsdWdpZnkoeDogc3RyaW5nKSB7XG4gIHJldHVybiB4LnJlcGxhY2UoL1teYS16QS1aMC05XyxdKy9nLCAnLScpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBhdG9taWNXcml0ZShmaWxlTmFtZTogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKSB7XG4gIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHBhdGguZGlybmFtZShmaWxlTmFtZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHRtcCA9IGAke2ZpbGVOYW1lfS4ke3Byb2Nlc3MucGlkfWA7XG4gIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZSh0bXAsIGNvbnRlbnRzKTtcbiAgYXdhaXQgZnMucHJvbWlzZXMucmVuYW1lKHRtcCwgZmlsZU5hbWUpO1xufVxuXG5mdW5jdGlvbiByZWFkU2tpcEZpbGUoZmlsZVBhdGg/OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGlmICghZmlsZVBhdGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pLnNwbGl0KCdcXG4nKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|
package/lib/with-aws.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.withAws = withAws;
|
|
|
7
7
|
exports.regionPool = regionPool;
|
|
8
8
|
const cdk_atmosphere_client_1 = require("@cdklabs/cdk-atmosphere-client");
|
|
9
9
|
const aws_1 = require("./aws");
|
|
10
|
+
const corking_1 = require("./corking");
|
|
10
11
|
const resource_pool_1 = require("./resource-pool");
|
|
11
12
|
function atmosphereEnabled() {
|
|
12
13
|
const enabled = process.env.CDK_INTEG_ATMOSPHERE_ENABLED;
|
|
@@ -57,6 +58,7 @@ function withAws(block, options = {}) {
|
|
|
57
58
|
});
|
|
58
59
|
let outcome = 'success';
|
|
59
60
|
context.reportWaitTime(Date.now() - start);
|
|
61
|
+
(0, corking_1.registerSecrets)(allocation.credentials.accessKeyId, allocation.credentials.secretAccessKey, allocation.credentials.sessionToken);
|
|
60
62
|
try {
|
|
61
63
|
const aws = await aws_1.AwsClients.forIdentity(context.randomString, allocation.environment.region, {
|
|
62
64
|
accessKeyId: allocation.credentials.accessKeyId,
|
|
@@ -132,4 +134,4 @@ async function sanityCheck(aws) {
|
|
|
132
134
|
}
|
|
133
135
|
}
|
|
134
136
|
let sanityChecked;
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3aXRoLWF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLDhDQUdDO0FBRUQsZ0RBTUM7QUFFRCx3Q0FNQztBQXlCRCwwQkFtRUM7QUFHRCxnQ0FXQztBQW5JRCwwRUFBa0U7QUFDbEUsK0JBQW1DO0FBRW5DLG1EQUErQztBQUcvQyxTQUFnQixpQkFBaUI7SUFDL0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQztJQUN6RCxPQUFPLE9BQU8sS0FBSyxNQUFNLElBQUksT0FBTyxLQUFLLEdBQUcsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUM7SUFDeEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixjQUFjO0lBQzVCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7SUFDcEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFvQkQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FDckIsS0FBMkUsRUFDM0UsVUFBNkIsRUFBRTtJQUUvQiwwSEFBMEg7SUFDMUgsc0dBQXNHO0lBQ3RHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUVqQyxPQUFPLEtBQUssRUFBRSxPQUFVLEVBQUUsRUFBRTtRQUMxQixNQUFNLGdCQUFnQixH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bGFicy9jZGstYXRtb3NwaGVyZS1jbGllbnQnO1xuaW1wb3J0IHsgQXRtb3NwaGVyZUNsaWVudCB9IGZyb20gJ0BjZGtsYWJzL2Nkay1hdG1vc3BoZXJlLWNsaWVudCc7XG5pbXBvcnQgeyBBd3NDbGllbnRzIH0gZnJvbSAnLi9hd3MnO1xuaW1wb3J0IHR5cGUgeyBUZXN0Q29udGV4dCB9IGZyb20gJy4vaW50ZWctdGVzdCc7XG5pbXBvcnQgeyBSZXNvdXJjZVBvb2wgfSBmcm9tICcuL3Jlc291cmNlLXBvb2wnO1xuaW1wb3J0IHR5cGUgeyBEaXNhYmxlQm9vdHN0cmFwQ29udGV4dCB9IGZyb20gJy4vd2l0aC1jZGstYXBwJztcblxuZXhwb3J0IGZ1bmN0aW9uIGF0bW9zcGhlcmVFbmFibGVkKCk6IGJvb2xlYW4ge1xuICBjb25zdCBlbmFibGVkID0gcHJvY2Vzcy5lbnYuQ0RLX0lOVEVHX0FUTU9TUEhFUkVfRU5BQkxFRDtcbiAgcmV0dXJuIGVuYWJsZWQgPT09ICd0cnVlJyB8fCBlbmFibGVkID09PSAnMSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdG1vc3BoZXJlRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudi5DREtfSU5URUdfQVRNT1NQSEVSRV9FTkRQT0lOVDtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ0RLX0lOVEVHX0FUTU9TUEhFUkVfRU5EUE9JTlQgaXMgbm90IGRlZmluZWQnKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdG1vc3BoZXJlUG9vbCgpIHtcbiAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudi5DREtfSU5URUdfQVRNT1NQSEVSRV9QT09MO1xuICBpZiAoIXZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDREtfSU5URUdfQVRNT1NQSEVSRV9QT09MIGlzIG5vdCBkZWZpbmVkJyk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgdHlwZSBBd3NDb250ZXh0ID0geyByZWFkb25seSBhd3M6IEF3c0NsaWVudHMgfTtcblxuZXhwb3J0IGludGVyZmFjZSBBd3NDb250ZXh0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IHRoZSB0ZXN0IGVudmlyb25tZW50IHRvIGJlIGluIG9uZSBvZiB0aGVzZSByZWdpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxsIHJlZ2lvbnMgYXJlIHBvc3NpYmxlXG4gICAqL1xuICByZWFkb25seSByZWdpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERvIG5vdCBib290c3RyYXAgdGhlIGVudlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZUJvb3RzdHJhcD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogSGlnaGVyIG9yZGVyIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYSBibG9jayB3aXRoIGFuIEFXUyBjbGllbnQgc2V0dXBcbiAqXG4gKiBBbGxvY2F0ZSB0aGUgbmV4dCByZWdpb24gZnJvbSB0aGUgUkVHSU9OIHBvb2wgYW5kIGRpc3Bvc2UgaXQgYWZ0ZXJ3YXJkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBd3M8QSBleHRlbmRzIFRlc3RDb250ZXh0PihcbiAgYmxvY2s6IChjb250ZXh0OiBBICYgQXdzQ29udGV4dCAmIERpc2FibGVCb290c3RyYXBDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+LFxuICBvcHRpb25zOiBBd3NDb250ZXh0T3B0aW9ucyA9IHt9LFxuKTogKGNvbnRleHQ6IEEpID0+IFByb21pc2U8dm9pZD4ge1xuICAvLyBTZXQgYSBoaWdoIEplc3QgdGltZW91dCBiZWNhdXNlIGl0IGluY2x1ZGVzIHRoZSB0aW1lIHdhaXRpbmcgZm9yIGxvY2tzOyBhY2NvdW50IGZvciB3b3JzdC1jYXNlIHNpbmdsZS10aHJlYWRlZCBydW50aW1lLlxuICAvLyBUaGlzIGlzIG5vdCB0aGUgYWN0dWFsIHRlc3QgZXhlY3V0aW9uIHRpbWUuIFRoZSBlZmZlY3RpdmUgdGVzdCB0aW1lb3V0IGlzIGhhbmRsZWQgYnkgd2l0aFRpbWVvdXQoKS5cbiAgamVzdC5zZXRUaW1lb3V0KDIgKiA2MCAqIDYwXzAwMCk7XG5cbiAgcmV0dXJuIGFzeW5jIChjb250ZXh0OiBBKSA9PiB7XG4gICAgY29uc3QgZGlzYWJsZUJvb3RzdHJhcCA9IG9wdGlvbnMuZGlzYWJsZUJvb3RzdHJhcCA/PyBmYWxzZTtcblxuICAgIGlmIChhdG1vc3BoZXJlRW5hYmxlZCgpKSB7XG4gICAgICBjb25zdCBhdG1vc3BoZXJlID0gbmV3IEF0bW9zcGhlcmVDbGllbnQoYXRtb3NwaGVyZUVuZHBvaW50KCksIHtcbiAgICAgICAgbG9nU3RyZWFtOiBjb250ZXh0Lm91dHB1dCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25zdHJhaW50czogQ29uc3RyYWludFtdID0gW107XG4gICAgICBpZiAob3B0aW9ucy5yZWdpb25zKSB7XG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdyZWdpb24nLFxuICAgICAgICAgIHZhbHVlOiBbLi4ub3B0aW9ucy5yZWdpb25zXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGFsbG9jYXRpb24gPSBhd2FpdCBhdG1vc3BoZXJlLmFjcXVpcmUoe1xuICAgICAgICBwb29sOiBhdG1vc3BoZXJlUG9vbCgpLFxuICAgICAgICByZXF1ZXN0ZXI6IGNvbnRleHQubmFtZSxcbiAgICAgICAgdGltZW91dFNlY29uZHM6IDYwICogMzAsXG4gICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgfSk7XG4gICAgICBsZXQgb3V0Y29tZSA9ICdzdWNjZXNzJztcbiAgICAgIGNvbnRleHQucmVwb3J0V2FpdFRpbWUoRGF0ZS5ub3coKSAtIHN0YXJ0KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYXdzID0gYXdhaXQgQXdzQ2xpZW50cy5mb3JJZGVudGl0eShjb250ZXh0LnJhbmRvbVN0cmluZywgYWxsb2NhdGlvbi5lbnZpcm9ubWVudC5yZWdpb24sIHtcbiAgICAgICAgICBhY2Nlc3NLZXlJZDogYWxsb2NhdGlvbi5jcmVkZW50aWFscy5hY2Nlc3NLZXlJZCxcbiAgICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IGFsbG9jYXRpb24uY3JlZGVudGlhbHMuc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICAgIHNlc3Npb25Ub2tlbjogYWxsb2NhdGlvbi5jcmVkZW50aWFscy5zZXNzaW9uVG9rZW4sXG4gICAgICAgICAgYWNjb3VudElkOiBhbGxvY2F0aW9uLmVudmlyb25tZW50LmFjY291bnQsXG4gICAgICAgIH0sIGNvbnRleHQub3V0cHV0KTtcbiAgICAgICAgYXdhaXQgc2FuaXR5Q2hlY2soYXdzKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBibG9jayh7IC4uLmNvbnRleHQsIGRpc2FibGVCb290c3RyYXAsIGF3cyB9KTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgb3V0Y29tZSA9ICdmYWlsdXJlJztcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGF3YWl0IGF3cy5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IGF0bW9zcGhlcmUucmVsZWFzZShhbGxvY2F0aW9uLmlkLCBvdXRjb21lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlZ2lvblBvb2woKS51c2luZyhhc3luYyAocmVnaW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGF3cyA9IGF3YWl0IEF3c0NsaWVudHMuZm9yUmVnaW9uKGNvbnRleHQucmFuZG9tU3RyaW5nLCByZWdpb24sIGNvbnRleHQub3V0cHV0KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzYW5pdHlDaGVjayhhd3MpO1xuXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGJsb2NrKHsgLi4uY29udGV4dCwgZGlzYWJsZUJvb3RzdHJhcCwgYXdzIH0pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGF3YWl0IGF3cy5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxubGV0IF9yZWdpb25Qb29sOiB1bmRlZmluZWQgfCBSZXNvdXJjZVBvb2w7XG5leHBvcnQgZnVuY3Rpb24gcmVnaW9uUG9vbCgpOiBSZXNvdXJjZVBvb2wge1xuICBpZiAoX3JlZ2lvblBvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBfcmVnaW9uUG9vbDtcbiAgfVxuXG4gIGNvbnN0IFJFR0lPTlMgPSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OU1xuICAgID8gcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTlMuc3BsaXQoJywnKVxuICAgIDogW3Byb2Nlc3MuZW52LkFXU19SRUdJT04gPz8gcHJvY2Vzcy5lbnYuQVdTX0RFRkFVTFRfUkVHSU9OID8/ICd1cy1lYXN0LTEnXTtcblxuICBfcmVnaW9uUG9vbCA9IFJlc291cmNlUG9vbC53aXRoUmVzb3VyY2VzKCdhd3NfcmVnaW9ucycsIFJFR0lPTlMpO1xuICByZXR1cm4gX3JlZ2lvblBvb2w7XG59XG5cbi8qKlxuICogUGVyZm9ybSBhIG9uZS10aW1lIHF1aWNrIHNhbml0eSBjaGVjayB0aGF0IHRoZSBBV1MgY2xpZW50cyBoYXZlIHByb3Blcmx5IGNvbmZpZ3VyZWQgY3JlZGVudGlhbHNcbiAqXG4gKiBJZiB3ZSBkb24ndCBkbyB0aGlzLCBjYWxscyBhcmUgZ29pbmcgdG8gZmFpbCBhbmQgdGhleSdsbCBiZSByZXRyaWVkIGFuZCBldmVyeXRoaW5nIHdpbGwgdGFrZVxuICogZm9yZXZlciBiZWZvcmUgdGhlIHVzZXIgbm90aWNlcyBhIHNpbXBsZSBtaXNjb25maWd1cmF0aW9uLlxuICpcbiAqIFdlIGNhbid0IGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNpbmNlIGNyZWRlbnRpYWxzIGNvdWxkIGNvbWUgZnJvbVxuICogYW55d2hlcmUsIHNvIGRvIHNpbXBsZSBhY2NvdW50IHJldHJpZXZhbC5cbiAqXG4gKiBPbmx5IGRvIGl0IG9uY2UgcGVyIHByb2Nlc3MuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhbml0eUNoZWNrKGF3czogQXdzQ2xpZW50cykge1xuICBpZiAoc2FuaXR5Q2hlY2tlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF3cy5hY2NvdW50KCk7XG4gICAgICBzYW5pdHlDaGVja2VkID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHNhbml0eUNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQVdTIGNyZWRlbnRpYWxzIHByb2JhYmx5IG5vdCBjb25maWd1cmVkLCBnb3QgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuICBpZiAoIXNhbml0eUNoZWNrZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FXUyBjcmVkZW50aWFscyBwcm9iYWJseSBub3QgY29uZmlndXJlZCwgc2VlIHByZXZpb3VzIGVycm9yJyk7XG4gIH1cbn1cbmxldCBzYW5pdHlDaGVja2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3aXRoLWF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLDhDQUdDO0FBRUQsZ0RBTUM7QUFFRCx3Q0FNQztBQXlCRCwwQkF5RUM7QUFHRCxnQ0FXQztBQTFJRCwwRUFBa0U7QUFDbEUsK0JBQW1DO0FBQ25DLHVDQUE0QztBQUU1QyxtREFBK0M7QUFHL0MsU0FBZ0IsaUJBQWlCO0lBQy9CLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUM7SUFDekQsT0FBTyxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sS0FBSyxHQUFHLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQWdCLGtCQUFrQjtJQUNoQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDO0lBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBZ0IsY0FBYztJQUM1QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDO0lBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBb0JEOzs7O0dBSUc7QUFDSCxTQUFnQixPQUFPLENBQ3JCLEtBQTJFLEVBQzNFLFVBQTZCLEVBQUU7SUFFL0IsMEhBQTBIO0lBQzFILHNHQUFzRztJQUN0RyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFFakMsT0FBTyxLQUFLLEVBQUUsT0FBVSxFQUFFLEVBQUU7UUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDO1FBRTNELElBQUksaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sVUFBVSxHQUFHLElBQUksd0NBQWdCLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtnQkFDNUQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNO2FBQzFCLENBQUMsQ0FBQztZQUVILE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7WUFDckMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ2YsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO2lCQUM1QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sVUFBVSxHQUFHLE1BQU0sVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDMUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtnQkFDdEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUN2QixjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZCLFdBQVc7YUFDWixDQUFDLENBQUM7WUFDSCxJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUM7WUFDeEIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFFM0MsSUFBQSx5QkFBZSxFQUNiLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUNsQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFDdEMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQ3BDLENBQUM7WUFFRixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxnQkFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO29CQUM1RixXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXO29CQUMvQyxlQUFlLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlO29CQUN2RCxZQUFZLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZO29CQUNqRCxTQUFTLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPO2lCQUMxQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXZCLElBQUksQ0FBQztvQkFDSCxPQUFPLE1BQU0sS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztnQkFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO29CQUNoQixPQUFPLEdBQUcsU0FBUyxDQUFDO29CQUNwQixNQUFNLENBQUMsQ0FBQztnQkFDVixDQUFDO3dCQUFTLENBQUM7b0JBQ1QsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLENBQUM7WUFDSCxDQUFDO29CQUFTLENBQUM7Z0JBQ1QsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN6QyxNQUFNLEdBQUcsR0FBRyxNQUFNLGdCQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckYsSUFBSSxDQUFDO29CQUNILE1BQU0sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUV2QixPQUFPLE1BQU0sS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDNUQsQ0FBQzt3QkFBUyxDQUFDO29CQUNULE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELElBQUksV0FBcUMsQ0FBQztBQUMxQyxTQUFnQixVQUFVO0lBQ3hCLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVc7UUFDckMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxXQUFXLENBQUMsQ0FBQztJQUU5RSxXQUFXLEdBQUcsNEJBQVksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFlO0lBQ3hDLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDakYsQ0FBQztBQUNILENBQUM7QUFDRCxJQUFJLGFBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnN0cmFpbnQgfSBmcm9tICdAY2RrbGFicy9jZGstYXRtb3NwaGVyZS1jbGllbnQnO1xuaW1wb3J0IHsgQXRtb3NwaGVyZUNsaWVudCB9IGZyb20gJ0BjZGtsYWJzL2Nkay1hdG1vc3BoZXJlLWNsaWVudCc7XG5pbXBvcnQgeyBBd3NDbGllbnRzIH0gZnJvbSAnLi9hd3MnO1xuaW1wb3J0IHsgcmVnaXN0ZXJTZWNyZXRzIH0gZnJvbSAnLi9jb3JraW5nJztcbmltcG9ydCB0eXBlIHsgVGVzdENvbnRleHQgfSBmcm9tICcuL2ludGVnLXRlc3QnO1xuaW1wb3J0IHsgUmVzb3VyY2VQb29sIH0gZnJvbSAnLi9yZXNvdXJjZS1wb29sJztcbmltcG9ydCB0eXBlIHsgRGlzYWJsZUJvb3RzdHJhcENvbnRleHQgfSBmcm9tICcuL3dpdGgtY2RrLWFwcCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdG1vc3BoZXJlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgY29uc3QgZW5hYmxlZCA9IHByb2Nlc3MuZW52LkNES19JTlRFR19BVE1PU1BIRVJFX0VOQUJMRUQ7XG4gIHJldHVybiBlbmFibGVkID09PSAndHJ1ZScgfHwgZW5hYmxlZCA9PT0gJzEnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXRtb3NwaGVyZUVuZHBvaW50KCk6IHN0cmluZyB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnYuQ0RLX0lOVEVHX0FUTU9TUEhFUkVfRU5EUE9JTlQ7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NES19JTlRFR19BVE1PU1BIRVJFX0VORFBPSU5UIGlzIG5vdCBkZWZpbmVkJyk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXRtb3NwaGVyZVBvb2woKSB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnYuQ0RLX0lOVEVHX0FUTU9TUEhFUkVfUE9PTDtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ0RLX0lOVEVHX0FUTU9TUEhFUkVfUE9PTCBpcyBub3QgZGVmaW5lZCcpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IHR5cGUgQXdzQ29udGV4dCA9IHsgcmVhZG9ubHkgYXdzOiBBd3NDbGllbnRzIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ29udGV4dE9wdGlvbnMge1xuICAvKipcbiAgICogUmVxdWVzdCB0aGUgdGVzdCBlbnZpcm9ubWVudCB0byBiZSBpbiBvbmUgb2YgdGhlc2UgcmVnaW9uc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCByZWdpb25zIGFyZSBwb3NzaWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgYm9vdHN0cmFwIHRoZSBlbnZcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVCb290c3RyYXA/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEhpZ2hlciBvcmRlciBmdW5jdGlvbiB0byBleGVjdXRlIGEgYmxvY2sgd2l0aCBhbiBBV1MgY2xpZW50IHNldHVwXG4gKlxuICogQWxsb2NhdGUgdGhlIG5leHQgcmVnaW9uIGZyb20gdGhlIFJFR0lPTiBwb29sIGFuZCBkaXNwb3NlIGl0IGFmdGVyd2FyZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQXdzPEEgZXh0ZW5kcyBUZXN0Q29udGV4dD4oXG4gIGJsb2NrOiAoY29udGV4dDogQSAmIEF3c0NvbnRleHQgJiBEaXNhYmxlQm9vdHN0cmFwQ29udGV4dCkgPT4gUHJvbWlzZTx2b2lkPixcbiAgb3B0aW9uczogQXdzQ29udGV4dE9wdGlvbnMgPSB7fSxcbik6IChjb250ZXh0OiBBKSA9PiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gU2V0IGEgaGlnaCBKZXN0IHRpbWVvdXQgYmVjYXVzZSBpdCBpbmNsdWRlcyB0aGUgdGltZSB3YWl0aW5nIGZvciBsb2NrczsgYWNjb3VudCBmb3Igd29yc3QtY2FzZSBzaW5nbGUtdGhyZWFkZWQgcnVudGltZS5cbiAgLy8gVGhpcyBpcyBub3QgdGhlIGFjdHVhbCB0ZXN0IGV4ZWN1dGlvbiB0aW1lLiBUaGUgZWZmZWN0aXZlIHRlc3QgdGltZW91dCBpcyBoYW5kbGVkIGJ5IHdpdGhUaW1lb3V0KCkuXG4gIGplc3Quc2V0VGltZW91dCgyICogNjAgKiA2MF8wMDApO1xuXG4gIHJldHVybiBhc3luYyAoY29udGV4dDogQSkgPT4ge1xuICAgIGNvbnN0IGRpc2FibGVCb290c3RyYXAgPSBvcHRpb25zLmRpc2FibGVCb290c3RyYXAgPz8gZmFsc2U7XG5cbiAgICBpZiAoYXRtb3NwaGVyZUVuYWJsZWQoKSkge1xuICAgICAgY29uc3QgYXRtb3NwaGVyZSA9IG5ldyBBdG1vc3BoZXJlQ2xpZW50KGF0bW9zcGhlcmVFbmRwb2ludCgpLCB7XG4gICAgICAgIGxvZ1N0cmVhbTogY29udGV4dC5vdXRwdXQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY29uc3RyYWludHM6IENvbnN0cmFpbnRbXSA9IFtdO1xuICAgICAgaWYgKG9wdGlvbnMucmVnaW9ucykge1xuICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAncmVnaW9uJyxcbiAgICAgICAgICB2YWx1ZTogWy4uLm9wdGlvbnMucmVnaW9uc10sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBhbGxvY2F0aW9uID0gYXdhaXQgYXRtb3NwaGVyZS5hY3F1aXJlKHtcbiAgICAgICAgcG9vbDogYXRtb3NwaGVyZVBvb2woKSxcbiAgICAgICAgcmVxdWVzdGVyOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgIHRpbWVvdXRTZWNvbmRzOiA2MCAqIDMwLFxuICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgIH0pO1xuICAgICAgbGV0IG91dGNvbWUgPSAnc3VjY2Vzcyc7XG4gICAgICBjb250ZXh0LnJlcG9ydFdhaXRUaW1lKERhdGUubm93KCkgLSBzdGFydCk7XG5cbiAgICAgIHJlZ2lzdGVyU2VjcmV0cyhcbiAgICAgICAgYWxsb2NhdGlvbi5jcmVkZW50aWFscy5hY2Nlc3NLZXlJZCxcbiAgICAgICAgYWxsb2NhdGlvbi5jcmVkZW50aWFscy5zZWNyZXRBY2Nlc3NLZXksXG4gICAgICAgIGFsbG9jYXRpb24uY3JlZGVudGlhbHMuc2Vzc2lvblRva2VuLFxuICAgICAgKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYXdzID0gYXdhaXQgQXdzQ2xpZW50cy5mb3JJZGVudGl0eShjb250ZXh0LnJhbmRvbVN0cmluZywgYWxsb2NhdGlvbi5lbnZpcm9ubWVudC5yZWdpb24sIHtcbiAgICAgICAgICBhY2Nlc3NLZXlJZDogYWxsb2NhdGlvbi5jcmVkZW50aWFscy5hY2Nlc3NLZXlJZCxcbiAgICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IGFsbG9jYXRpb24uY3JlZGVudGlhbHMuc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICAgIHNlc3Npb25Ub2tlbjogYWxsb2NhdGlvbi5jcmVkZW50aWFscy5zZXNzaW9uVG9rZW4sXG4gICAgICAgICAgYWNjb3VudElkOiBhbGxvY2F0aW9uLmVudmlyb25tZW50LmFjY291bnQsXG4gICAgICAgIH0sIGNvbnRleHQub3V0cHV0KTtcbiAgICAgICAgYXdhaXQgc2FuaXR5Q2hlY2soYXdzKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBibG9jayh7IC4uLmNvbnRleHQsIGRpc2FibGVCb290c3RyYXAsIGF3cyB9KTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgb3V0Y29tZSA9ICdmYWlsdXJlJztcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGF3YWl0IGF3cy5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IGF0bW9zcGhlcmUucmVsZWFzZShhbGxvY2F0aW9uLmlkLCBvdXRjb21lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlZ2lvblBvb2woKS51c2luZyhhc3luYyAocmVnaW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGF3cyA9IGF3YWl0IEF3c0NsaWVudHMuZm9yUmVnaW9uKGNvbnRleHQucmFuZG9tU3RyaW5nLCByZWdpb24sIGNvbnRleHQub3V0cHV0KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzYW5pdHlDaGVjayhhd3MpO1xuXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGJsb2NrKHsgLi4uY29udGV4dCwgZGlzYWJsZUJvb3RzdHJhcCwgYXdzIH0pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGF3YWl0IGF3cy5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxubGV0IF9yZWdpb25Qb29sOiB1bmRlZmluZWQgfCBSZXNvdXJjZVBvb2w7XG5leHBvcnQgZnVuY3Rpb24gcmVnaW9uUG9vbCgpOiBSZXNvdXJjZVBvb2wge1xuICBpZiAoX3JlZ2lvblBvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBfcmVnaW9uUG9vbDtcbiAgfVxuXG4gIGNvbnN0IFJFR0lPTlMgPSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OU1xuICAgID8gcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTlMuc3BsaXQoJywnKVxuICAgIDogW3Byb2Nlc3MuZW52LkFXU19SRUdJT04gPz8gcHJvY2Vzcy5lbnYuQVdTX0RFRkFVTFRfUkVHSU9OID8/ICd1cy1lYXN0LTEnXTtcblxuICBfcmVnaW9uUG9vbCA9IFJlc291cmNlUG9vbC53aXRoUmVzb3VyY2VzKCdhd3NfcmVnaW9ucycsIFJFR0lPTlMpO1xuICByZXR1cm4gX3JlZ2lvblBvb2w7XG59XG5cbi8qKlxuICogUGVyZm9ybSBhIG9uZS10aW1lIHF1aWNrIHNhbml0eSBjaGVjayB0aGF0IHRoZSBBV1MgY2xpZW50cyBoYXZlIHByb3Blcmx5IGNvbmZpZ3VyZWQgY3JlZGVudGlhbHNcbiAqXG4gKiBJZiB3ZSBkb24ndCBkbyB0aGlzLCBjYWxscyBhcmUgZ29pbmcgdG8gZmFpbCBhbmQgdGhleSdsbCBiZSByZXRyaWVkIGFuZCBldmVyeXRoaW5nIHdpbGwgdGFrZVxuICogZm9yZXZlciBiZWZvcmUgdGhlIHVzZXIgbm90aWNlcyBhIHNpbXBsZSBtaXNjb25maWd1cmF0aW9uLlxuICpcbiAqIFdlIGNhbid0IGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNpbmNlIGNyZWRlbnRpYWxzIGNvdWxkIGNvbWUgZnJvbVxuICogYW55d2hlcmUsIHNvIGRvIHNpbXBsZSBhY2NvdW50IHJldHJpZXZhbC5cbiAqXG4gKiBPbmx5IGRvIGl0IG9uY2UgcGVyIHByb2Nlc3MuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhbml0eUNoZWNrKGF3czogQXdzQ2xpZW50cykge1xuICBpZiAoc2FuaXR5Q2hlY2tlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF3cy5hY2NvdW50KCk7XG4gICAgICBzYW5pdHlDaGVja2VkID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHNhbml0eUNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQVdTIGNyZWRlbnRpYWxzIHByb2JhYmx5IG5vdCBjb25maWd1cmVkLCBnb3QgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuICBpZiAoIXNhbml0eUNoZWNrZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FXUyBjcmVkZW50aWFscyBwcm9iYWJseSBub3QgY29uZmlndXJlZCwgc2VlIHByZXZpb3VzIGVycm9yJyk7XG4gIH1cbn1cbmxldCBzYW5pdHlDaGVja2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuIl19
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk-testing/cli-integ",
|
|
3
|
-
"version": "3.37.
|
|
3
|
+
"version": "3.37.2",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -206,20 +206,20 @@
|
|
|
206
206
|
}
|
|
207
207
|
},
|
|
208
208
|
"@aws-sdk/credential-providers": {
|
|
209
|
-
"version": "3.
|
|
210
|
-
"integrity": "10c0/
|
|
211
|
-
"requires": {
|
|
212
|
-
"@aws-sdk/core": "^3.977.
|
|
213
|
-
"@aws-sdk/credential-provider-cognito-identity": "^3.972.
|
|
214
|
-
"@aws-sdk/credential-provider-env": "^3.972.
|
|
215
|
-
"@aws-sdk/credential-provider-http": "^3.972.
|
|
216
|
-
"@aws-sdk/credential-provider-ini": "^3.973.
|
|
217
|
-
"@aws-sdk/credential-provider-login": "^3.972.
|
|
218
|
-
"@aws-sdk/credential-provider-node": "^3.972.
|
|
219
|
-
"@aws-sdk/credential-provider-process": "^3.972.
|
|
220
|
-
"@aws-sdk/credential-provider-sso": "^3.973.
|
|
221
|
-
"@aws-sdk/credential-provider-web-identity": "^3.972.
|
|
222
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
209
|
+
"version": "3.1105.0",
|
|
210
|
+
"integrity": "10c0/dd7311ee0eb86b5950d5e9aedb93d42508a367e26896ced15efbeff5ab5ade31c83dfe2801f6c382bcf43806237ef272abb2ebe56e9281556c7a6336efb90261",
|
|
211
|
+
"requires": {
|
|
212
|
+
"@aws-sdk/core": "^3.977.6",
|
|
213
|
+
"@aws-sdk/credential-provider-cognito-identity": "^3.972.66",
|
|
214
|
+
"@aws-sdk/credential-provider-env": "^3.972.67",
|
|
215
|
+
"@aws-sdk/credential-provider-http": "^3.972.69",
|
|
216
|
+
"@aws-sdk/credential-provider-ini": "^3.973.12",
|
|
217
|
+
"@aws-sdk/credential-provider-login": "^3.972.74",
|
|
218
|
+
"@aws-sdk/credential-provider-node": "^3.972.78",
|
|
219
|
+
"@aws-sdk/credential-provider-process": "^3.972.67",
|
|
220
|
+
"@aws-sdk/credential-provider-sso": "^3.973.11",
|
|
221
|
+
"@aws-sdk/credential-provider-web-identity": "^3.972.73",
|
|
222
|
+
"@aws-sdk/nested-clients": "^3.997.41",
|
|
223
223
|
"@aws-sdk/types": "^3.974.2",
|
|
224
224
|
"@smithy/core": "^3.31.1",
|
|
225
225
|
"@smithy/credential-provider-imds": "^4.4.16",
|
|
@@ -228,10 +228,10 @@
|
|
|
228
228
|
}
|
|
229
229
|
},
|
|
230
230
|
"@cdklabs/cdk-atmosphere-client": {
|
|
231
|
-
"version": "0.0.
|
|
232
|
-
"integrity": "10c0/
|
|
231
|
+
"version": "0.0.113",
|
|
232
|
+
"integrity": "10c0/bf12b13a0d2625510ea78c8e7b3bfc73e693b1694ac635682dd8b2e90f3f8d3fb18e60b07ea1fbe4ee39ef17894f52818e33d3a9b98d03bfc5f9fe4ef59e12d6",
|
|
233
233
|
"requires": {
|
|
234
|
-
"@aws-sdk/credential-providers": "^3.
|
|
234
|
+
"@aws-sdk/credential-providers": "^3.1101.0",
|
|
235
235
|
"aws4fetch": "^1.0.20"
|
|
236
236
|
}
|
|
237
237
|
},
|
|
@@ -594,8 +594,8 @@
|
|
|
594
594
|
}
|
|
595
595
|
},
|
|
596
596
|
"@aws-sdk/core": {
|
|
597
|
-
"version": "3.977.
|
|
598
|
-
"integrity": "10c0/
|
|
597
|
+
"version": "3.977.6",
|
|
598
|
+
"integrity": "10c0/4d743603bb41aeed426e2928be0947202191c341f9fbefe9ea347b0b4b7154b1ea94189d01c8abf3b03b9635449e2e7c268bd67379ea2294b9f49a61b909b9af",
|
|
599
599
|
"requires": {
|
|
600
600
|
"@aws-sdk/types": "^3.974.2",
|
|
601
601
|
"@aws-sdk/xml-builder": "^3.972.37",
|
|
@@ -608,15 +608,15 @@
|
|
|
608
608
|
}
|
|
609
609
|
},
|
|
610
610
|
"@aws-sdk/credential-provider-node": {
|
|
611
|
-
"version": "3.972.
|
|
612
|
-
"integrity": "10c0/
|
|
613
|
-
"requires": {
|
|
614
|
-
"@aws-sdk/credential-provider-env": "^3.972.
|
|
615
|
-
"@aws-sdk/credential-provider-http": "^3.972.
|
|
616
|
-
"@aws-sdk/credential-provider-ini": "^3.973.
|
|
617
|
-
"@aws-sdk/credential-provider-process": "^3.972.
|
|
618
|
-
"@aws-sdk/credential-provider-sso": "^3.973.
|
|
619
|
-
"@aws-sdk/credential-provider-web-identity": "^3.972.
|
|
611
|
+
"version": "3.972.78",
|
|
612
|
+
"integrity": "10c0/2b6e5bd455a3c2b530a884a0c5919bb7d2d91941b655a56351b957de038d318c1d42b86674e20893ee7dab6db6ea32c4653bce9b1d3ca98ac803d6b49a948343",
|
|
613
|
+
"requires": {
|
|
614
|
+
"@aws-sdk/credential-provider-env": "^3.972.67",
|
|
615
|
+
"@aws-sdk/credential-provider-http": "^3.972.69",
|
|
616
|
+
"@aws-sdk/credential-provider-ini": "^3.973.12",
|
|
617
|
+
"@aws-sdk/credential-provider-process": "^3.972.67",
|
|
618
|
+
"@aws-sdk/credential-provider-sso": "^3.973.11",
|
|
619
|
+
"@aws-sdk/credential-provider-web-identity": "^3.972.73",
|
|
620
620
|
"@aws-sdk/types": "^3.974.2",
|
|
621
621
|
"@smithy/core": "^3.31.1",
|
|
622
622
|
"@smithy/credential-provider-imds": "^4.4.16",
|
|
@@ -717,10 +717,10 @@
|
|
|
717
717
|
}
|
|
718
718
|
},
|
|
719
719
|
"@aws-sdk/credential-provider-cognito-identity": {
|
|
720
|
-
"version": "3.972.
|
|
721
|
-
"integrity": "10c0/
|
|
720
|
+
"version": "3.972.66",
|
|
721
|
+
"integrity": "10c0/02bee7d7a2282aea641eb2565ea73f3d19d8430b2c231265decad7e5d8d0c2f78da33eb19c040f6c04900dfb7e11eaaf5df7943fc7d1a13cbbdd71c1c3523116",
|
|
722
722
|
"requires": {
|
|
723
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
723
|
+
"@aws-sdk/nested-clients": "^3.997.41",
|
|
724
724
|
"@aws-sdk/types": "^3.974.2",
|
|
725
725
|
"@smithy/core": "^3.31.1",
|
|
726
726
|
"@smithy/types": "^4.16.1",
|
|
@@ -728,10 +728,10 @@
|
|
|
728
728
|
}
|
|
729
729
|
},
|
|
730
730
|
"@aws-sdk/credential-provider-env": {
|
|
731
|
-
"version": "3.972.
|
|
732
|
-
"integrity": "10c0/
|
|
731
|
+
"version": "3.972.67",
|
|
732
|
+
"integrity": "10c0/547bcac01ac0912d0e42bb11f7d51bafcf2eaab1db35a098bea2be322211a86457ea60455a5294e58081c32376c240b07e66f81946a9be30e9722f723c6eaac2",
|
|
733
733
|
"requires": {
|
|
734
|
-
"@aws-sdk/core": "^3.977.
|
|
734
|
+
"@aws-sdk/core": "^3.977.6",
|
|
735
735
|
"@aws-sdk/types": "^3.974.2",
|
|
736
736
|
"@smithy/core": "^3.31.1",
|
|
737
737
|
"@smithy/types": "^4.16.1",
|
|
@@ -739,10 +739,10 @@
|
|
|
739
739
|
}
|
|
740
740
|
},
|
|
741
741
|
"@aws-sdk/credential-provider-http": {
|
|
742
|
-
"version": "3.972.
|
|
743
|
-
"integrity": "10c0/
|
|
742
|
+
"version": "3.972.69",
|
|
743
|
+
"integrity": "10c0/6e4cf9628919163a2a9784bf8618bc85a8c0ba7056813bedb9758c04eb3b36663f5099cfad329f89ac86c4e408bb3d0698ee7cff7e4a61c8a0335ab98078d678",
|
|
744
744
|
"requires": {
|
|
745
|
-
"@aws-sdk/core": "^3.977.
|
|
745
|
+
"@aws-sdk/core": "^3.977.6",
|
|
746
746
|
"@aws-sdk/types": "^3.974.2",
|
|
747
747
|
"@smithy/core": "^3.31.1",
|
|
748
748
|
"@smithy/fetch-http-handler": "^5.6.13",
|
|
@@ -752,17 +752,17 @@
|
|
|
752
752
|
}
|
|
753
753
|
},
|
|
754
754
|
"@aws-sdk/credential-provider-ini": {
|
|
755
|
-
"version": "3.973.
|
|
756
|
-
"integrity": "10c0/
|
|
757
|
-
"requires": {
|
|
758
|
-
"@aws-sdk/core": "^3.977.
|
|
759
|
-
"@aws-sdk/credential-provider-env": "^3.972.
|
|
760
|
-
"@aws-sdk/credential-provider-http": "^3.972.
|
|
761
|
-
"@aws-sdk/credential-provider-login": "^3.972.
|
|
762
|
-
"@aws-sdk/credential-provider-process": "^3.972.
|
|
763
|
-
"@aws-sdk/credential-provider-sso": "^3.973.
|
|
764
|
-
"@aws-sdk/credential-provider-web-identity": "^3.972.
|
|
765
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
755
|
+
"version": "3.973.12",
|
|
756
|
+
"integrity": "10c0/84646fee1c61e31b2052d902559ecf163c1d00558ecdc21d77b396250527348b9ebba324d0bf8ffee4b3e45476c691de502e6faad3d39d1f7420eee5d326c7c5",
|
|
757
|
+
"requires": {
|
|
758
|
+
"@aws-sdk/core": "^3.977.6",
|
|
759
|
+
"@aws-sdk/credential-provider-env": "^3.972.67",
|
|
760
|
+
"@aws-sdk/credential-provider-http": "^3.972.69",
|
|
761
|
+
"@aws-sdk/credential-provider-login": "^3.972.74",
|
|
762
|
+
"@aws-sdk/credential-provider-process": "^3.972.67",
|
|
763
|
+
"@aws-sdk/credential-provider-sso": "^3.973.11",
|
|
764
|
+
"@aws-sdk/credential-provider-web-identity": "^3.972.73",
|
|
765
|
+
"@aws-sdk/nested-clients": "^3.997.41",
|
|
766
766
|
"@aws-sdk/types": "^3.974.2",
|
|
767
767
|
"@smithy/core": "^3.31.1",
|
|
768
768
|
"@smithy/credential-provider-imds": "^4.4.16",
|
|
@@ -771,11 +771,11 @@
|
|
|
771
771
|
}
|
|
772
772
|
},
|
|
773
773
|
"@aws-sdk/credential-provider-login": {
|
|
774
|
-
"version": "3.972.
|
|
775
|
-
"integrity": "10c0/
|
|
774
|
+
"version": "3.972.74",
|
|
775
|
+
"integrity": "10c0/1ab9996accb61bccbdaefae023e9befab9e5062435370a37f672089457dc13c485d9d2fee6926381672bdb32143c00266b1aa5913b18ef4873584907835b3a92",
|
|
776
776
|
"requires": {
|
|
777
|
-
"@aws-sdk/core": "^3.977.
|
|
778
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
777
|
+
"@aws-sdk/core": "^3.977.6",
|
|
778
|
+
"@aws-sdk/nested-clients": "^3.997.41",
|
|
779
779
|
"@aws-sdk/types": "^3.974.2",
|
|
780
780
|
"@smithy/core": "^3.31.1",
|
|
781
781
|
"@smithy/types": "^4.16.1",
|
|
@@ -783,10 +783,10 @@
|
|
|
783
783
|
}
|
|
784
784
|
},
|
|
785
785
|
"@aws-sdk/credential-provider-process": {
|
|
786
|
-
"version": "3.972.
|
|
787
|
-
"integrity": "10c0/
|
|
786
|
+
"version": "3.972.67",
|
|
787
|
+
"integrity": "10c0/0381c39f171df2119791b03647545ab5084f6a8d2c227c5d3c5bfa9db027d0566102b6322bc09075c0779b0f0aa88ae1ca7bbdc773d8415d8dd8f163e69e45ea",
|
|
788
788
|
"requires": {
|
|
789
|
-
"@aws-sdk/core": "^3.977.
|
|
789
|
+
"@aws-sdk/core": "^3.977.6",
|
|
790
790
|
"@aws-sdk/types": "^3.974.2",
|
|
791
791
|
"@smithy/core": "^3.31.1",
|
|
792
792
|
"@smithy/types": "^4.16.1",
|
|
@@ -794,12 +794,12 @@
|
|
|
794
794
|
}
|
|
795
795
|
},
|
|
796
796
|
"@aws-sdk/credential-provider-sso": {
|
|
797
|
-
"version": "3.973.
|
|
798
|
-
"integrity": "10c0/
|
|
797
|
+
"version": "3.973.11",
|
|
798
|
+
"integrity": "10c0/d6df0ae72009c2f74f1c7f12e41c0a7b395ba1860d4f9f1554fd8fbc3b5f0c1be64c83aacd2b329561e27844520ae0b57bb268265f5e7850b1d0fb769455d7a1",
|
|
799
799
|
"requires": {
|
|
800
|
-
"@aws-sdk/core": "^3.977.
|
|
801
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
802
|
-
"@aws-sdk/token-providers": "3.
|
|
800
|
+
"@aws-sdk/core": "^3.977.6",
|
|
801
|
+
"@aws-sdk/nested-clients": "^3.997.41",
|
|
802
|
+
"@aws-sdk/token-providers": "3.1103.0",
|
|
803
803
|
"@aws-sdk/types": "^3.974.2",
|
|
804
804
|
"@smithy/core": "^3.31.1",
|
|
805
805
|
"@smithy/types": "^4.16.1",
|
|
@@ -807,11 +807,11 @@
|
|
|
807
807
|
}
|
|
808
808
|
},
|
|
809
809
|
"@aws-sdk/credential-provider-web-identity": {
|
|
810
|
-
"version": "3.972.
|
|
811
|
-
"integrity": "10c0/
|
|
810
|
+
"version": "3.972.73",
|
|
811
|
+
"integrity": "10c0/a7bee06b4200ff04141d4ce07d49d69f24b55b57f3aab929b445a9d9ea70f043d0b09fca8b95872d2b92df6837b771aeb14b03ca784d17ce1ee871b14173558c",
|
|
812
812
|
"requires": {
|
|
813
|
-
"@aws-sdk/core": "^3.977.
|
|
814
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
813
|
+
"@aws-sdk/core": "^3.977.6",
|
|
814
|
+
"@aws-sdk/nested-clients": "^3.997.41",
|
|
815
815
|
"@aws-sdk/types": "^3.974.2",
|
|
816
816
|
"@smithy/core": "^3.31.1",
|
|
817
817
|
"@smithy/types": "^4.16.1",
|
|
@@ -819,10 +819,10 @@
|
|
|
819
819
|
}
|
|
820
820
|
},
|
|
821
821
|
"@aws-sdk/nested-clients": {
|
|
822
|
-
"version": "3.997.
|
|
823
|
-
"integrity": "10c0/
|
|
822
|
+
"version": "3.997.41",
|
|
823
|
+
"integrity": "10c0/fe1a84bb58675a24ecd0ce3b7bcaf1a456494f10c1a9dd5b55bd268be6713f83bd3c3d3dadee6bb51a53bc24ee18b2b0882d6741bcbabc224feeae97454fdb4a",
|
|
824
824
|
"requires": {
|
|
825
|
-
"@aws-sdk/core": "^3.977.
|
|
825
|
+
"@aws-sdk/core": "^3.977.6",
|
|
826
826
|
"@aws-sdk/signature-v4-multi-region": "^3.996.43",
|
|
827
827
|
"@aws-sdk/types": "^3.974.2",
|
|
828
828
|
"@smithy/core": "^3.31.1",
|
|
@@ -2273,11 +2273,11 @@
|
|
|
2273
2273
|
}
|
|
2274
2274
|
},
|
|
2275
2275
|
"@aws-sdk/token-providers": {
|
|
2276
|
-
"version": "3.
|
|
2277
|
-
"integrity": "10c0/
|
|
2276
|
+
"version": "3.1103.0",
|
|
2277
|
+
"integrity": "10c0/5f86aa221e537b8a3fd11ed76ac025935f8859cc62b3af293abd759b8ca3aa390c17f6716723c08056b3373997a17bbdee2ff568eab5049bf0a372d35893b48d",
|
|
2278
2278
|
"requires": {
|
|
2279
|
-
"@aws-sdk/core": "^3.977.
|
|
2280
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
2279
|
+
"@aws-sdk/core": "^3.977.6",
|
|
2280
|
+
"@aws-sdk/nested-clients": "^3.997.41",
|
|
2281
2281
|
"@aws-sdk/types": "^3.974.2",
|
|
2282
2282
|
"@smithy/core": "^3.31.1",
|
|
2283
2283
|
"@smithy/types": "^4.16.1",
|
|
@@ -4426,8 +4426,8 @@
|
|
|
4426
4426
|
"integrity": "10c0/c78e31869b0578fb0a9874a0c0fdf0e1f8b3492392d1043355fb11d9ea42ef94e0216c6aee7d8e15db39d1a8caf331f9b144ae3ee43fd951b73a66837711fb09"
|
|
4427
4427
|
},
|
|
4428
4428
|
"ip-address": {
|
|
4429
|
-
"version": "10.
|
|
4430
|
-
"integrity": "10c0/
|
|
4429
|
+
"version": "10.4.0",
|
|
4430
|
+
"integrity": "10c0/d7b0bd2624fd861afbae6e49036a9b56f9506eaff7ff38592b7b4492dd5c272b53f5356dc8cc019e318acf29a96c90a3d1af1df761960267d23efa96858270fa"
|
|
4431
4431
|
},
|
|
4432
4432
|
"smart-buffer": {
|
|
4433
4433
|
"version": "4.2.0",
|
|
@@ -5180,8 +5180,8 @@
|
|
|
5180
5180
|
"integrity": "10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be"
|
|
5181
5181
|
},
|
|
5182
5182
|
"js-yaml": {
|
|
5183
|
-
"version": "3.15.
|
|
5184
|
-
"integrity": "10c0/
|
|
5183
|
+
"version": "3.15.1",
|
|
5184
|
+
"integrity": "10c0/6c693b8c59ffe12021df3b36994b090df19d920826dd810baab81652b40861e1974509dd11fe92225ab4c00cc14de053300c94db015c2c0e211edea39b118737",
|
|
5185
5185
|
"requires": {
|
|
5186
5186
|
"argparse": "^1.0.7",
|
|
5187
5187
|
"esprima": "^4.0.0"
|
package/package.json
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"organization": true
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@aws-cdk/toolkit-lib": "1.38.
|
|
44
|
+
"@aws-cdk/toolkit-lib": "1.38.2",
|
|
45
45
|
"@aws-cdk/yarn-cling": "0.0.0",
|
|
46
46
|
"@cdklabs/eslint-plugin": "^2.0.16",
|
|
47
47
|
"@stylistic/eslint-plugin": "^3",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"license-checker": "^25.0.1",
|
|
67
67
|
"nx": "^22.7.8",
|
|
68
68
|
"prettier": "^2.8",
|
|
69
|
-
"projen": "^0.101.
|
|
69
|
+
"projen": "^0.101.27",
|
|
70
70
|
"ts-jest": "^29.4.11",
|
|
71
71
|
"typescript": "5.9"
|
|
72
72
|
},
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"@aws-sdk/client-sso": "^3",
|
|
87
87
|
"@aws-sdk/client-sts": "^3",
|
|
88
88
|
"@aws-sdk/credential-providers": "^3",
|
|
89
|
-
"@cdklabs/cdk-atmosphere-client": "^0.0.
|
|
89
|
+
"@cdklabs/cdk-atmosphere-client": "^0.0.113",
|
|
90
90
|
"@octokit/rest": "^20",
|
|
91
91
|
"@smithy/types": "^4",
|
|
92
92
|
"@smithy/util-retry": "^4",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"publishConfig": {
|
|
129
129
|
"access": "public"
|
|
130
130
|
},
|
|
131
|
-
"version": "3.37.
|
|
131
|
+
"version": "3.37.2",
|
|
132
132
|
"packageManager": "yarn@4.17.1",
|
|
133
133
|
"types": "lib/index.d.ts",
|
|
134
134
|
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"yarn projen\"."
|
|
@@ -111,6 +111,7 @@ async function testDockerCredential(fixture, credSource) {
|
|
|
111
111
|
stdio: [fs.openSync(input, 'r')],
|
|
112
112
|
captureStderr: false,
|
|
113
113
|
});
|
|
114
|
+
(0, lib_1.registerSecrets)(JSON.parse(output).Secret);
|
|
114
115
|
});
|
|
115
116
|
const response = JSON.parse(output);
|
|
116
117
|
expect(response).toMatchObject({
|
|
@@ -118,4 +119,4 @@ async function testDockerCredential(fixture, credSource) {
|
|
|
118
119
|
Secret: expect.anything(),
|
|
119
120
|
});
|
|
120
121
|
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy1kb2NrZXItY3JlZGVudGlhbC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstYXNzZXRzLWRvY2tlci1jcmVkZW50aWFsLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsOEZBQThGO0FBQzlGLG9EQUErRDtBQUkvRCxzQ0FBZ0c7QUFFaEcsSUFBQSxlQUFTLEVBQ1Asd0VBQXdFLEVBQ3hFLElBQUEsZUFBUyxFQUFDLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUkscUNBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1RSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtRQUMvRDtZQUNFLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsTUFBTSxFQUFFLE9BQU87WUFDZixTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRTtTQUNuQztLQUNGLEVBQUU7UUFDRDtZQUNFLE1BQU0sRUFBRSxPQUFPO1lBQ2YsUUFBUSxFQUFFLEdBQUc7WUFDYixNQUFNLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztTQUN0QztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU3QyxNQUFNLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtRQUNsQyxhQUFhLEVBQUUsSUFBSTtRQUNuQixzRUFBc0U7UUFDdEUsYUFBYSxFQUFFLE9BQU87S0FDdkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FDSixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE0QkU7QUFFRixLQUFLLFVBQVUsb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxVQUF3QztJQUNoRyxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztJQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUUvRSxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzdDLE9BQU8sRUFBRSxLQUFLO1FBQ2QsaUJBQWlCLEVBQUU7WUFDakIsQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVO1NBQ3JCO0tBQ0YsQ0FBQyxDQUFDLENBQUM7SUFFSixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBRXZDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNDLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUV4QixNQUFNLElBQUEsV0FBSyxFQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsV0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN6RixNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsOEJBQThCLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDcEUsTUFBTSxFQUFFO2dCQUNOLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDeEIscUJBQXFCLEVBQUUsYUFBYTthQUNyQztZQUNELEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUEscUJBQWUsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzdCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO0tBQzFCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuLy8gaW1wb3J0IHsgQ3JlYXRlU2VjcmV0Q29tbWFuZCwgRGVsZXRlU2VjcmV0Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xuaW1wb3J0IHsgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXN0cyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXJlbGF0aXZlLXBhY2thZ2VzXG5pbXBvcnQgdHlwZSB7IERvY2tlckRvbWFpbkNyZWRlbnRpYWxTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9AYXdzLWNkay9jZGstYXNzZXRzLWxpYi9saWIvcHJpdmF0ZS9kb2NrZXItY3JlZGVudGlhbHMnO1xuaW1wb3J0IHR5cGUgeyBUZXN0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSwgd2l0aFJldHJ5LCByZXRyeSwgcmVnaXN0ZXJTZWNyZXRzIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cyBjYW4gYXNzdW1lIHJvbGUgYW5kIGZldGNoIEVDUiBjcmVkZW50aWFscycsXG4gIHdpdGhSZXRyeSh3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBjb25zdCBjYWxsZXIgPSBhd2FpdCBmaXh0dXJlLmF3cy5zdHMuc2VuZChuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KSk7XG5cbiAgICBjb25zdCByb2xlQXJuID0gYXdhaXQgZml4dHVyZS5hd3MudGVtcG9yYXJ5Um9sZSgnZWNyLXJlcG8tcm9sZScsIFtcbiAgICAgIHtcbiAgICAgICAgQWN0aW9uOiAnc3RzOkFzc3VtZVJvbGUnLFxuICAgICAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgICAgIFByaW5jaXBhbDogeyBBV1M6IGNhbGxlci5BY2NvdW50IH0sXG4gICAgICB9LFxuICAgIF0sIFtcbiAgICAgIHtcbiAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICBSZXNvdXJjZTogJyonLFxuICAgICAgICBBY3Rpb246IFsnZWNyOkdldEF1dGhvcml6YXRpb25Ub2tlbiddLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGF3YWl0IGZpeHR1cmUuYXdzLndhaXRGb3JBc3N1bWVSb2xlKHJvbGVBcm4pO1xuXG4gICAgYXdhaXQgdGVzdERvY2tlckNyZWRlbnRpYWwoZml4dHVyZSwge1xuICAgICAgZWNyUmVwb3NpdG9yeTogdHJ1ZSxcbiAgICAgIC8vIFRoaXMgcm9sZSBtdXN0IGhhdmUgcGVybWlzc2lvbnMgdG8gY2FsbCBgZWNyOkdldEF1dGhvcml6YXRpb25Ub2tlbmBcbiAgICAgIGFzc3VtZVJvbGVBcm46IHJvbGVBcm4sXG4gICAgfSk7XG4gIH0pKSxcbik7XG5cbi8qXG5cbi8vIFNLSVBQRUQgRk9SIE5PV1xuLy8gUmVxdWlyZXMgU2VjcmV0c01hbmFnZXIgcGVybWlzc2lvbnMgb24gdGhlIHJvbGUgdGhhdCdzIGV4ZWN1dGluZyB0aGlzLCBhbmQgdGhhdCdzXG4vLyB0b28gbXVjaCB0byBzZXQgdXAgcmlnaHQgbm93LlxuXG5pbnRlZ1Rlc3QoXG4gICdkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzIHJlYWQgZnJvbSBTZWNyZXRzTWFuYWdlcicsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHNlY3JldCA9IGF3YWl0IGZpeHR1cmUuYXdzLnNlY3JldHNNYW5hZ2VyLnNlbmQobmV3IENyZWF0ZVNlY3JldENvbW1hbmQoe1xuICAgICAgTmFtZTogYG91ci1zZWNyZXQtJHtmaXh0dXJlLnJhbmRvbVN0cmluZ31gLFxuICAgICAgU2VjcmV0U3RyaW5nOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHVzZXJuYW1lOiAndGVzdC11c2VyJyxcbiAgICAgICAgcGFzc3dvcmQ6ICd0ZXN0LXBhc3N3b3JkJyxcbiAgICAgIH0pLFxuICAgIH0pKTtcbiAgICBmaXh0dXJlLmF3cy5hZGRDbGVhbnVwKCgpID0+IGZpeHR1cmUuYXdzLnNlY3JldHNNYW5hZ2VyLnNlbmQobmV3IERlbGV0ZVNlY3JldENvbW1hbmQoe1xuICAgICAgU2VjcmV0SWQ6IHNlY3JldC5BUk4sXG4gICAgfSkpKTtcblxuICAgIGF3YWl0IHRlc3REb2NrZXJDcmVkZW50aWFsKGZpeHR1cmUsIHtcbiAgICAgIHNlY3JldHNNYW5hZ2VyU2VjcmV0SWQ6IHNlY3JldC5BUk4sXG4gICAgICBzZWNyZXRzVXNlcm5hbWVGaWVsZDogJ3VzZXJuYW1lJyxcbiAgICAgIHNlY3JldHNQYXNzd29yZEZpZWxkOiAncGFzc3dvcmQnLFxuICAgIH0pO1xuICB9KSxcbik7XG5cbiovXG5cbmFzeW5jIGZ1bmN0aW9uIHRlc3REb2NrZXJDcmVkZW50aWFsKGZpeHR1cmU6IFRlc3RGaXh0dXJlLCBjcmVkU291cmNlOiBEb2NrZXJEb21haW5DcmVkZW50aWFsU291cmNlKSB7XG4gIGNvbnN0IGRvbWFpbiA9ICdpbnRlZy50ZXN0LmRvbWFpbic7XG4gIGNvbnN0IGNyZWRzRmlsZVBhdGggPSBwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGstZG9ja2VyLWNyZWRzLmpzb24nKTtcblxuICBmcy53cml0ZUZpbGVTeW5jKGNyZWRzRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHtcbiAgICB2ZXJzaW9uOiAnMS4wJyxcbiAgICBkb21haW5DcmVkZW50aWFsczoge1xuICAgICAgW2RvbWFpbl06IGNyZWRTb3VyY2UsXG4gICAgfSxcbiAgfSkpO1xuXG4gIGNvbnN0IGlucHV0ID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnaW5wdXQudHh0Jyk7XG4gIGZzLndyaXRlRmlsZVN5bmMoaW5wdXQsIGAke2RvbWFpbn1cXG5gKTtcblxuICBhd2FpdCBmaXh0dXJlLmNka0Fzc2V0cy5tYWtlQ2xpQXZhaWxhYmxlKCk7XG4gIGxldCBvdXRwdXQ6IHN0cmluZyA9ICcnO1xuXG4gIGF3YWl0IHJldHJ5KHByb2Nlc3Muc3Rkb3V0LCAnR2V0dGluZyBkb2NrZXIgY3JlZGVudGlhbHMnLCByZXRyeS5mb3JTZWNvbmRzKDYwKSwgYXN5bmMgKCkgPT4ge1xuICAgIG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuc2hlbGwoWydkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzJywgJ2dldCddLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgLi4uZml4dHVyZS5jZGtTaGVsbEVudigpLFxuICAgICAgICBDREtfRE9DS0VSX0NSRURTX0ZJTEU6IGNyZWRzRmlsZVBhdGgsXG4gICAgICB9LFxuICAgICAgc3RkaW86IFtmcy5vcGVuU3luYyhpbnB1dCwgJ3InKV0sXG4gICAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZWdpc3RlclNlY3JldHMoSlNPTi5wYXJzZShvdXRwdXQpLlNlY3JldCk7XG4gIH0pO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gSlNPTi5wYXJzZShvdXRwdXQpO1xuICBleHBlY3QocmVzcG9uc2UpLnRvTWF0Y2hPYmplY3Qoe1xuICAgIFVzZXJuYW1lOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICBTZWNyZXQ6IGV4cGVjdC5hbnl0aGluZygpLFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
const fs_1 = require("fs");
|
|
37
37
|
const os = __importStar(require("os"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
+
const aws_1 = require("../../../lib/aws");
|
|
39
40
|
const integ_test_1 = require("../../../lib/integ-test");
|
|
40
41
|
const proxy_1 = require("../../../lib/proxy");
|
|
41
42
|
const with_cdk_app_1 = require("../../../lib/with-cdk-app");
|
|
@@ -77,7 +78,8 @@ async function runInIsolatedContainer(fixture, pathsToMount, testCommands) {
|
|
|
77
78
|
await fixture.shell([
|
|
78
79
|
docker, 'run', '--net=bridge', '--rm',
|
|
79
80
|
...pathsToMount.flatMap(p => ['-v', `${p}:${p}`]),
|
|
80
|
-
|
|
81
|
+
// Pass credentials by name only
|
|
82
|
+
...['HOME', ...aws_1.CREDENTIAL_ENV_VARS].flatMap(e => ['-e', e]),
|
|
81
83
|
'-w', fixture.integTestDir,
|
|
82
84
|
'--cap-add=NET_ADMIN',
|
|
83
85
|
'public.ecr.aws/ubuntu/ubuntu:24.04_stable',
|
|
@@ -150,7 +152,10 @@ function isolatedDockerCommands(proxyPort, caBundlePath) {
|
|
|
150
152
|
];
|
|
151
153
|
}
|
|
152
154
|
function renderEnv(env) {
|
|
153
|
-
return Object.entries(env)
|
|
155
|
+
return Object.entries(env)
|
|
156
|
+
.filter(([k, v]) => v && !aws_1.CREDENTIAL_ENV_VARS.includes(k))
|
|
157
|
+
.map(([k, v]) => `${k}='${v}'`)
|
|
158
|
+
.join(' ');
|
|
154
159
|
}
|
|
155
160
|
/**
|
|
156
161
|
* Find a broadly mountable parent of the given directory
|
|
@@ -176,4 +181,4 @@ function findMountableParent(dir) {
|
|
|
176
181
|
}
|
|
177
182
|
return dir;
|
|
178
183
|
}
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJveHkuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkJBQW9DO0FBQ3BDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0Isd0RBQW9EO0FBQ3BELDhDQUFzRDtBQUV0RCw0REFBK0Q7QUFFL0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO0FBRWxELElBQUEsc0JBQVMsRUFDUCxvREFBb0QsRUFDcEQsSUFBQSxpQ0FBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsd0VBQXdFO0lBQ3hFLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRSxJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU5QywwQ0FBMEM7SUFDMUMsTUFBTSxRQUFRLEdBQUc7UUFDZixPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxXQUFXLElBQUksT0FBTyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztLQUNoSCxDQUFDO0lBRUYsTUFBTSxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBRUYsS0FBSyxVQUFVLHNCQUFzQixDQUFDLE9BQW9CLEVBQUUsWUFBc0IsRUFBRSxZQUFzQjtJQUN4RyxZQUFZLENBQUMsSUFBSSxDQUNmLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJ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QyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGludGVnVGVzdCB9IGZyb20gJy4uLy4uLy4uL2xpYi9pbnRlZy10ZXN0JztcbmltcG9ydCB7IHN0YXJ0UHJveHlTZXJ2ZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvcHJveHknO1xuaW1wb3J0IHR5cGUgeyBUZXN0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYi93aXRoLWNkay1hcHAnO1xuaW1wb3J0IHsgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3dpdGgtY2RrLWFwcCc7XG5cbmNvbnN0IGRvY2tlciA9IHByb2Nlc3MuZW52LkNES19ET0NLRVIgPz8gJ2RvY2tlcic7XG5cbmludGVnVGVzdChcbiAgJ2FsbCBjYWxscyBmcm9tIGlzb2xhdGVkIGNvbnRhaW5lciBnbyB0aHJvdWdoIHByb3h5JyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRmluZCB0aGUgJ2NkaycgY29tbWFuZCBhbmQgbWFrZSBzdXJlIGl0IGlzIG1vdW50ZWQgaW50byB0aGUgY29udGFpbmVyXG4gICAgY29uc3QgY2RrRnVsbHBhdGggPSAoYXdhaXQgZml4dHVyZS5zaGVsbChbJ3doaWNoJywgJ2NkayddKSkudHJpbSgpO1xuICAgIGxldCBjZGtUb3AgPSBmaW5kTW91bnRhYmxlUGFyZW50KGNka0Z1bGxwYXRoKTtcblxuICAgIC8vIFJ1biBhICdjZGsgZGVwbG95JyBpbnNpZGUgdGhlIGNvbnRhaW5lclxuICAgIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgICAgYGVudiAke3JlbmRlckVudihmaXh0dXJlLmNka1NoZWxsRW52KCkpfSAke2Nka0Z1bGxwYXRofSAke2ZpeHR1cmUuY2RrRGVwbG95Q29tbWFuZExpbmUoJ3Rlc3QtMicpLmpvaW4oJyAnKX0gLXZgLFxuICAgIF07XG5cbiAgICBhd2FpdCBydW5Jbklzb2xhdGVkQ29udGFpbmVyKGZpeHR1cmUsIFtjZGtUb3BdLCBjb21tYW5kcyk7XG4gIH0pLFxuKTtcblxuYXN5bmMgZnVuY3Rpb24gcnVuSW5Jc29sYXRlZENvbnRhaW5lcihmaXh0dXJlOiBUZXN0Rml4dHVyZSwgcGF0aHNUb01vdW50OiBzdHJpbmdbXSwgdGVzdENvbW1hbmRzOiBzdHJpbmdbXSkge1xuICBwYXRoc1RvTW91bnQucHVzaChcbiAgICBgJHtwcm9jZXNzLmVudi5IT01FfWAsXG4gICAgZml4dHVyZS5pbnRlZ1Rlc3REaXIsXG4gICk7XG5cbiAgLy8gUmVzb2x2ZSBjcmVkZW50aWFsIHByb3ZpZGVyIHRvIGFuIGFjY2VzcyBrZXkgdGhhdCB3ZSBjYW4gcGFzcyBpbnRvIHRoZSBjb250YWluZXJcbiAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBmaXh0dXJlLmF3cy5jcmVkZW50aWFscygpO1xuXG4gIGNvbnN0IHByb3h5ID0gYXdhaXQgc3RhcnRQcm94eVNlcnZlcihmaXh0dXJlLmludGVnVGVzdERpcik7XG4gIHRyeSB7XG4gICAgY29uc3QgcHJveHlQb3J0ID0gcHJveHkucG9ydDtcblxuICAgIGNvbnN0IHNldHVwQ29tbWFuZHMgPSBbXG4gICAgICAnYXB0LWdldCB1cGRhdGUgLXFxJyxcbiAgICAgICdhcHQtZ2V0IGluc3RhbGwgLXFxeSBub2RlanMgPiAvZGV2L251bGwnLFxuICAgICAgLi4uaXNvbGF0ZWREb2NrZXJDb21tYW5kcyhwcm94eVBvcnQsIHByb3h5LmNlcnRQYXRoKSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2NyaXB0TmFtZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ3NjcmlwdC5zaCcpO1xuXG4gICAgLy8gV3JpdGUgYSBzY3JpcHQgZmlsZVxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShzY3JpcHROYW1lLCBbXG4gICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgJ3NldCAteCcsXG4gICAgICAnc2V0IC1ldScsXG4gICAgICAuLi5zZXR1cENvbW1hbmRzLFxuICAgICAgLi4udGVzdENvbW1hbmRzLFxuICAgIF0uam9pbignXFxuJyksICd1dGYtOCcpO1xuXG4gICAgYXdhaXQgZnMuY2htb2Qoc2NyaXB0TmFtZSwgMG83NTUpO1xuXG4gICAgYXdhaXQgZml4dHVyZS5lY3JQdWJsaWNMb2dpbigpO1xuXG4gICAgLy8gUnVuIGNvbW1hbmRzIGluIGEgRG9ja2VyIHNoZWxsXG4gICAgYXdhaXQgZml4dHVyZS5zaGVsbChbXG4gICAgICBkb2NrZXIsICdydW4nLCAnLS1uZXQ9YnJpZGdlJywgJy0tcm0nLFxuICAgICAgLi4ucGF0aHNUb01vdW50LmZsYXRNYXAocCA9PiBbJy12JywgYCR7cH06JHtwfWBdKSxcbiAgICAgIC4uLlsnSE9NRScsICdBV1NfQUNDRVNTX0tFWV9JRCcsICdBV1NfU0VDUkVUX0FDQ0VTU19LRVknLCAnQVdTX1NFU1NJT05fVE9LRU4nXS5mbGF0TWFwKGUgPT4gWyctZScsIGVdKSxcbiAgICAgICctdycsIGZpeHR1cmUuaW50ZWdUZXN0RGlyLFxuICAgICAgJy0tY2FwLWFkZD1ORVRfQURNSU4nLFxuICAgICAgJ3B1YmxpYy5lY3IuYXdzL3VidW50dS91YnVudHU6MjQuMDRfc3RhYmxlJyxcbiAgICAgIGAke3NjcmlwdE5hbWV9YCxcbiAgICBdLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQVdTX0FDQ0VTU19LRVlfSUQ6IGNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkLFxuICAgICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6IGNyZWRlbnRpYWxzLnNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgQVdTX1NFU1NJT05fVE9LRU46IGNyZWRlbnRpYWxzLnNlc3Npb25Ub2tlbixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcHJveHkuc3RvcCgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBjb21tYW5kcyBuZWNlc3NhcnkgdG8gaXNvbGF0ZSB0aGUgaW5zaWRlIG9mIHRoZSBjb250YWluZXIgZnJvbSB0aGUgaW50ZXJuZXQsXG4gKiBleGNlcHQgYnkgZ29pbmcgdGhyb3VnaCB0aGUgcHJveHlcbiAqL1xuZnVuY3Rpb24gaXNvbGF0ZWREb2NrZXJDb21tYW5kcyhwcm94eVBvcnQ6IG51bWJlciwgY2FCdW5kbGVQYXRoOiBzdHJpbmcpIHtcbiAgbGV0IGRlZmF1bHRCcmlkZ2VJcCA9ICcxNzIuMTcuMC4xJztcblxuICAvLyBUaGUgaG9zdCdzIGRlZmF1bHQgSVAgaXMgZGlmZmVyZW50IG9uIENvZGVCdWlsZCB0aGFuIGl0IGlzIG9uIG90aGVyIERvY2tlciBzeXN0ZW1zLlxuICBpZiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0JVSUxEX0FSTikge1xuICAgIGRlZmF1bHRCcmlkZ2VJcCA9ICcxNzIuMTguMC4xJztcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgJ2VjaG8gV29ya2luZy4uLicsXG4gICAgJ2FwdC1nZXQgaW5zdGFsbCAtcXF5IGN1cmwgbmV0LXRvb2xzIGlwdXRpbHMtcGluZyBkbnN1dGlscyBpcHRhYmxlcyA+IC9kZXYvbnVsbCcsXG4gICAgJycsXG4gICAgLy8gTG9va2luZyB1cCBgaG9zdC5kb2NrZXIuaW50ZXJuYWxgIGlzIG5lY2Vzc2FyeSBvbiBNYWNPUyBGaW5jaCBhbmQgRG9ja2VyIERlc2t0b3BcbiAgICAvLyBvbiBNYWMuIFRoZSBtYWdpYyBJUCBhZGRyZXNzIGlzIG5lY2Vzc2FyeSBvbiBDb2RlQnVpbGQgYW5kIEdpdEh1YiBBY3Rpb25zLlxuICAgIC8vXG4gICAgLy8gSSB0cmllZCBgLS1hZGQtaG9zdD1ob3N0LmRvY2tlci5pbnRlcm5hbDpob3N0LWdhdGV3YXlgIG9uIHRoZSBMaW51eGVzIGJ1dFxuICAgIC8vIGl0IGRvZXNuJ3QgY2hhbmdlIGFueXRoaW5nIG9uIGVpdGhlciBHSEEgb3IgQ29kZUJ1aWxkLCBzbyB3ZSdyZSBsZWZ0IHdpdGggdGhpc1xuICAgIC8vIGJhY2t1cCBzb2x1dGlvbi5cbiAgICAnZ2F0ZXdheT0kKGRpZyArc2hvcnQgaG9zdC5kb2NrZXIuaW50ZXJuYWwpJyxcbiAgICAnaWYgW1sgLXogXCIkZ2F0ZXdheVwiIF1dOyB0aGVuJyxcbiAgICBgICBnYXRld2F5PSR7ZGVmYXVsdEJyaWRnZUlwfWAsXG4gICAgJ2ZpJyxcbiAgICAnJyxcbiAgICAnIyBTb21lIGlwdGFibGVzIG1hbmlwdWxhdGlvbjsgdGhlcmUgbWlnaHQgYmUgdW5uZWNlc3NhcnkgY29tbWFuZHMgaW4gaGVyZSwgbm90IGFuIGV4cGVydCcsXG4gICAgJ2lwdGFibGVzIC1GJyxcbiAgICAnaXB0YWJsZXMgLVgnLFxuICAgICdpcHRhYmxlcyAtUCBJTlBVVCBEUk9QJyxcbiAgICAnaXB0YWJsZXMgLVAgT1VUUFVUIERST1AnLFxuICAgICdpcHRhYmxlcyAtUCBGT1JXQVJEIERST1AnLFxuICAgICdpcHRhYmxlcyAtQSBJTlBVVCAtaSBsbyAtaiBBQ0NFUFQnLFxuICAgICdpcHRhYmxlcyAtQSBPVVRQVVQgLW8gbG8gLWogQUNDRVBUJyxcbiAgICAnaXB0YWJsZXMgLUEgT1VUUFVUIC1kICRnYXRld2F5IC1qIEFDQ0VQVCcsXG4gICAgJ2lwdGFibGVzIC1BIElOUFVUIC1zICRnYXRld2F5IC1qIEFDQ0VQVCcsXG4gICAgJycsXG4gICAgJycsXG4gICAgYGlmIFtbICEgLWYgJHtjYUJ1bmRsZVBhdGh9IF1dOyB0aGVuYCxcbiAgICBgICAgIGVjaG8gXCJDb3VsZCBub3QgZmluZCAke2NhQnVuZGxlUGF0aH0sIHRoaXMgd2lsbCBwcm9iYWJseSBub3QgZ28gd2VsbC4gRXhpdGluZy5cIiA+JjJgLFxuICAgICcgICAgZXhpdCAxJyxcbiAgICAnZmknLFxuICAgICcnLFxuICAgICcjIENvbmZpZ3VyZSBhIGJ1bmNoIG9mIHRvb2xzIHRvIHdvcmsgd2l0aCB0aGUgcHJveHknLFxuICAgICdlY2hvIFwiKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXCInLFxuICAgICdlY2hvIFwifCAgRGlyZWN0IG5ldHdvcmsgdHJhZmZpYyBoYXMgYmVlbiBibG9ja2VkLCBldmVyeXRoaW5nIG11c3QgZ28gdGhyb3VnaCB0aGUgcHJveHkuICAgICB8XCInLFxuICAgICdlY2hvIFwiKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXCInLFxuICAgIGBleHBvcnQgSFRUUF9QUk9YWT1odHRwOi8vJGdhdGV3YXk6JHtwcm94eVBvcnR9L2AsXG4gICAgYGV4cG9ydCBIVFRQU19QUk9YWT1odHRwOi8vJGdhdGV3YXk6JHtwcm94eVBvcnR9L2AsXG4gICAgYGV4cG9ydCBOT0RFX0VYVFJBX0NBX0NFUlRTPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgYGV4cG9ydCBBV1NfQ0FfQlVORExFPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgYGV4cG9ydCBTU0xfQ0VSVF9GSUxFPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgJ2VjaG8gXCJBY3F1aXJlOjpodHRwOjpwcm94eSBcXFwiJEhUVFBfUFJPWFlcXFwiO1wiID4+IC9ldGMvYXB0L2FwdC5jb25mLmQvOTVwcm94aWVzJyxcbiAgICAnZWNobyBcIkFjcXVpcmU6Omh0dHBzOjpwcm94eSBcXFwiJEhUVFBTX1BST1hZXFxcIjtcIiA+PiAvZXRjL2FwdC9hcHQuY29uZi5kLzk1cHJveGllcycsXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlckVudihlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGVudikuZmlsdGVyKChbXywgdl0pID0+IHYpLm1hcCgoW2ssIHZdKSA9PiBgJHtrfT0nJHt2fSdgKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogRmluZCBhIGJyb2FkbHkgbW91bnRhYmxlIHBhcmVudCBvZiB0aGUgZ2l2ZW4gZGlyZWN0b3J5XG4gKlxuICogV2UgZG9uJ3Qgd2FudCB0byBqdXN0IG1vdW50IHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LCBiZWNhdXNlXG4gKiBpdCBjb3VsZCBlbmQgdXAgYmVpbmcgYC92YXJgICh0b3AtbGV2ZWwgZGlyIG9mIHRtcGRpciBvbiBNYWMpLlxuICovXG5mdW5jdGlvbiBmaW5kTW91bnRhYmxlUGFyZW50KGRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICBvcy50bXBkaXIoKSxcbiAgICBwcm9jZXNzLmVudi5UTVBESVIsXG4gICAgcHJvY2Vzcy5lbnYuSE9NRSxcbiAgXTtcbiAgZm9yIChjb25zdCBjYW5kIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoY2FuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyLnN0YXJ0c1dpdGgoY2FuZCkpIHtcbiAgICAgIGNvbnN0IHN1ZmZpeCA9IGRpci5zdWJzdHJpbmcoY2FuZC5sZW5ndGgpO1xuICAgICAgY29uc3QgZmlyc3RDaGlsZERpciA9IHN1ZmZpeC5zcGxpdCgnLycpWzBdO1xuXG4gICAgICByZXR1cm4gcGF0aC5qb2luKGNhbmQsIGZpcnN0Q2hpbGREaXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGlyO1xufVxuIl19
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJveHkuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkJBQW9DO0FBQ3BDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsMENBQXVEO0FBQ3ZELHdEQUFvRDtBQUNwRCw4Q0FBc0Q7QUFFdEQsNERBQStEO0FBRS9ELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQztBQUVsRCxJQUFBLHNCQUFTLEVBQ1Asb0RBQW9ELEVBQ3BELElBQUEsaUNBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLHdFQUF3RTtJQUN4RSxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFOUMsMENBQTBDO0lBQzFDLE1BQU0sUUFBUSxHQUFHO1FBQ2YsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksV0FBVyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7S0FDaEgsQ0FBQztJQUVGLE1BQU0sc0JBQXNCLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUVGLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQixFQUFFLFlBQXNCLEVBQUUsWUFBc0I7SUFDeEcsWUFBWSxDQUFDLElBQUksQ0FDZixHQUFHLE9BQU8sQ0FBQyxH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QyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENSRURFTlRJQUxfRU5WX1ZBUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvYXdzJztcbmltcG9ydCB7IGludGVnVGVzdCB9IGZyb20gJy4uLy4uLy4uL2xpYi9pbnRlZy10ZXN0JztcbmltcG9ydCB7IHN0YXJ0UHJveHlTZXJ2ZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvcHJveHknO1xuaW1wb3J0IHR5cGUgeyBUZXN0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYi93aXRoLWNkay1hcHAnO1xuaW1wb3J0IHsgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3dpdGgtY2RrLWFwcCc7XG5cbmNvbnN0IGRvY2tlciA9IHByb2Nlc3MuZW52LkNES19ET0NLRVIgPz8gJ2RvY2tlcic7XG5cbmludGVnVGVzdChcbiAgJ2FsbCBjYWxscyBmcm9tIGlzb2xhdGVkIGNvbnRhaW5lciBnbyB0aHJvdWdoIHByb3h5JyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRmluZCB0aGUgJ2NkaycgY29tbWFuZCBhbmQgbWFrZSBzdXJlIGl0IGlzIG1vdW50ZWQgaW50byB0aGUgY29udGFpbmVyXG4gICAgY29uc3QgY2RrRnVsbHBhdGggPSAoYXdhaXQgZml4dHVyZS5zaGVsbChbJ3doaWNoJywgJ2NkayddKSkudHJpbSgpO1xuICAgIGxldCBjZGtUb3AgPSBmaW5kTW91bnRhYmxlUGFyZW50KGNka0Z1bGxwYXRoKTtcblxuICAgIC8vIFJ1biBhICdjZGsgZGVwbG95JyBpbnNpZGUgdGhlIGNvbnRhaW5lclxuICAgIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgICAgYGVudiAke3JlbmRlckVudihmaXh0dXJlLmNka1NoZWxsRW52KCkpfSAke2Nka0Z1bGxwYXRofSAke2ZpeHR1cmUuY2RrRGVwbG95Q29tbWFuZExpbmUoJ3Rlc3QtMicpLmpvaW4oJyAnKX0gLXZgLFxuICAgIF07XG5cbiAgICBhd2FpdCBydW5Jbklzb2xhdGVkQ29udGFpbmVyKGZpeHR1cmUsIFtjZGtUb3BdLCBjb21tYW5kcyk7XG4gIH0pLFxuKTtcblxuYXN5bmMgZnVuY3Rpb24gcnVuSW5Jc29sYXRlZENvbnRhaW5lcihmaXh0dXJlOiBUZXN0Rml4dHVyZSwgcGF0aHNUb01vdW50OiBzdHJpbmdbXSwgdGVzdENvbW1hbmRzOiBzdHJpbmdbXSkge1xuICBwYXRoc1RvTW91bnQucHVzaChcbiAgICBgJHtwcm9jZXNzLmVudi5IT01FfWAsXG4gICAgZml4dHVyZS5pbnRlZ1Rlc3REaXIsXG4gICk7XG5cbiAgLy8gUmVzb2x2ZSBjcmVkZW50aWFsIHByb3ZpZGVyIHRvIGFuIGFjY2VzcyBrZXkgdGhhdCB3ZSBjYW4gcGFzcyBpbnRvIHRoZSBjb250YWluZXJcbiAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBmaXh0dXJlLmF3cy5jcmVkZW50aWFscygpO1xuXG4gIGNvbnN0IHByb3h5ID0gYXdhaXQgc3RhcnRQcm94eVNlcnZlcihmaXh0dXJlLmludGVnVGVzdERpcik7XG4gIHRyeSB7XG4gICAgY29uc3QgcHJveHlQb3J0ID0gcHJveHkucG9ydDtcblxuICAgIGNvbnN0IHNldHVwQ29tbWFuZHMgPSBbXG4gICAgICAnYXB0LWdldCB1cGRhdGUgLXFxJyxcbiAgICAgICdhcHQtZ2V0IGluc3RhbGwgLXFxeSBub2RlanMgPiAvZGV2L251bGwnLFxuICAgICAgLi4uaXNvbGF0ZWREb2NrZXJDb21tYW5kcyhwcm94eVBvcnQsIHByb3h5LmNlcnRQYXRoKSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2NyaXB0TmFtZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ3NjcmlwdC5zaCcpO1xuXG4gICAgLy8gV3JpdGUgYSBzY3JpcHQgZmlsZVxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShzY3JpcHROYW1lLCBbXG4gICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgJ3NldCAteCcsXG4gICAgICAnc2V0IC1ldScsXG4gICAgICAuLi5zZXR1cENvbW1hbmRzLFxuICAgICAgLi4udGVzdENvbW1hbmRzLFxuICAgIF0uam9pbignXFxuJyksICd1dGYtOCcpO1xuXG4gICAgYXdhaXQgZnMuY2htb2Qoc2NyaXB0TmFtZSwgMG83NTUpO1xuXG4gICAgYXdhaXQgZml4dHVyZS5lY3JQdWJsaWNMb2dpbigpO1xuXG4gICAgLy8gUnVuIGNvbW1hbmRzIGluIGEgRG9ja2VyIHNoZWxsXG4gICAgYXdhaXQgZml4dHVyZS5zaGVsbChbXG4gICAgICBkb2NrZXIsICdydW4nLCAnLS1uZXQ9YnJpZGdlJywgJy0tcm0nLFxuICAgICAgLi4ucGF0aHNUb01vdW50LmZsYXRNYXAocCA9PiBbJy12JywgYCR7cH06JHtwfWBdKSxcbiAgICAgIC8vIFBhc3MgY3JlZGVudGlhbHMgYnkgbmFtZSBvbmx5XG4gICAgICAuLi5bJ0hPTUUnLCAuLi5DUkVERU5USUFMX0VOVl9WQVJTXS5mbGF0TWFwKGUgPT4gWyctZScsIGVdKSxcbiAgICAgICctdycsIGZpeHR1cmUuaW50ZWdUZXN0RGlyLFxuICAgICAgJy0tY2FwLWFkZD1ORVRfQURNSU4nLFxuICAgICAgJ3B1YmxpYy5lY3IuYXdzL3VidW50dS91YnVudHU6MjQuMDRfc3RhYmxlJyxcbiAgICAgIGAke3NjcmlwdE5hbWV9YCxcbiAgICBdLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQVdTX0FDQ0VTU19LRVlfSUQ6IGNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkLFxuICAgICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6IGNyZWRlbnRpYWxzLnNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgQVdTX1NFU1NJT05fVE9LRU46IGNyZWRlbnRpYWxzLnNlc3Npb25Ub2tlbixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcHJveHkuc3RvcCgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBjb21tYW5kcyBuZWNlc3NhcnkgdG8gaXNvbGF0ZSB0aGUgaW5zaWRlIG9mIHRoZSBjb250YWluZXIgZnJvbSB0aGUgaW50ZXJuZXQsXG4gKiBleGNlcHQgYnkgZ29pbmcgdGhyb3VnaCB0aGUgcHJveHlcbiAqL1xuZnVuY3Rpb24gaXNvbGF0ZWREb2NrZXJDb21tYW5kcyhwcm94eVBvcnQ6IG51bWJlciwgY2FCdW5kbGVQYXRoOiBzdHJpbmcpIHtcbiAgbGV0IGRlZmF1bHRCcmlkZ2VJcCA9ICcxNzIuMTcuMC4xJztcblxuICAvLyBUaGUgaG9zdCdzIGRlZmF1bHQgSVAgaXMgZGlmZmVyZW50IG9uIENvZGVCdWlsZCB0aGFuIGl0IGlzIG9uIG90aGVyIERvY2tlciBzeXN0ZW1zLlxuICBpZiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0JVSUxEX0FSTikge1xuICAgIGRlZmF1bHRCcmlkZ2VJcCA9ICcxNzIuMTguMC4xJztcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgJ2VjaG8gV29ya2luZy4uLicsXG4gICAgJ2FwdC1nZXQgaW5zdGFsbCAtcXF5IGN1cmwgbmV0LXRvb2xzIGlwdXRpbHMtcGluZyBkbnN1dGlscyBpcHRhYmxlcyA+IC9kZXYvbnVsbCcsXG4gICAgJycsXG4gICAgLy8gTG9va2luZyB1cCBgaG9zdC5kb2NrZXIuaW50ZXJuYWxgIGlzIG5lY2Vzc2FyeSBvbiBNYWNPUyBGaW5jaCBhbmQgRG9ja2VyIERlc2t0b3BcbiAgICAvLyBvbiBNYWMuIFRoZSBtYWdpYyBJUCBhZGRyZXNzIGlzIG5lY2Vzc2FyeSBvbiBDb2RlQnVpbGQgYW5kIEdpdEh1YiBBY3Rpb25zLlxuICAgIC8vXG4gICAgLy8gSSB0cmllZCBgLS1hZGQtaG9zdD1ob3N0LmRvY2tlci5pbnRlcm5hbDpob3N0LWdhdGV3YXlgIG9uIHRoZSBMaW51eGVzIGJ1dFxuICAgIC8vIGl0IGRvZXNuJ3QgY2hhbmdlIGFueXRoaW5nIG9uIGVpdGhlciBHSEEgb3IgQ29kZUJ1aWxkLCBzbyB3ZSdyZSBsZWZ0IHdpdGggdGhpc1xuICAgIC8vIGJhY2t1cCBzb2x1dGlvbi5cbiAgICAnZ2F0ZXdheT0kKGRpZyArc2hvcnQgaG9zdC5kb2NrZXIuaW50ZXJuYWwpJyxcbiAgICAnaWYgW1sgLXogXCIkZ2F0ZXdheVwiIF1dOyB0aGVuJyxcbiAgICBgICBnYXRld2F5PSR7ZGVmYXVsdEJyaWRnZUlwfWAsXG4gICAgJ2ZpJyxcbiAgICAnJyxcbiAgICAnIyBTb21lIGlwdGFibGVzIG1hbmlwdWxhdGlvbjsgdGhlcmUgbWlnaHQgYmUgdW5uZWNlc3NhcnkgY29tbWFuZHMgaW4gaGVyZSwgbm90IGFuIGV4cGVydCcsXG4gICAgJ2lwdGFibGVzIC1GJyxcbiAgICAnaXB0YWJsZXMgLVgnLFxuICAgICdpcHRhYmxlcyAtUCBJTlBVVCBEUk9QJyxcbiAgICAnaXB0YWJsZXMgLVAgT1VUUFVUIERST1AnLFxuICAgICdpcHRhYmxlcyAtUCBGT1JXQVJEIERST1AnLFxuICAgICdpcHRhYmxlcyAtQSBJTlBVVCAtaSBsbyAtaiBBQ0NFUFQnLFxuICAgICdpcHRhYmxlcyAtQSBPVVRQVVQgLW8gbG8gLWogQUNDRVBUJyxcbiAgICAnaXB0YWJsZXMgLUEgT1VUUFVUIC1kICRnYXRld2F5IC1qIEFDQ0VQVCcsXG4gICAgJ2lwdGFibGVzIC1BIElOUFVUIC1zICRnYXRld2F5IC1qIEFDQ0VQVCcsXG4gICAgJycsXG4gICAgJycsXG4gICAgYGlmIFtbICEgLWYgJHtjYUJ1bmRsZVBhdGh9IF1dOyB0aGVuYCxcbiAgICBgICAgIGVjaG8gXCJDb3VsZCBub3QgZmluZCAke2NhQnVuZGxlUGF0aH0sIHRoaXMgd2lsbCBwcm9iYWJseSBub3QgZ28gd2VsbC4gRXhpdGluZy5cIiA+JjJgLFxuICAgICcgICAgZXhpdCAxJyxcbiAgICAnZmknLFxuICAgICcnLFxuICAgICcjIENvbmZpZ3VyZSBhIGJ1bmNoIG9mIHRvb2xzIHRvIHdvcmsgd2l0aCB0aGUgcHJveHknLFxuICAgICdlY2hvIFwiKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXCInLFxuICAgICdlY2hvIFwifCAgRGlyZWN0IG5ldHdvcmsgdHJhZmZpYyBoYXMgYmVlbiBibG9ja2VkLCBldmVyeXRoaW5nIG11c3QgZ28gdGhyb3VnaCB0aGUgcHJveHkuICAgICB8XCInLFxuICAgICdlY2hvIFwiKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXCInLFxuICAgIGBleHBvcnQgSFRUUF9QUk9YWT1odHRwOi8vJGdhdGV3YXk6JHtwcm94eVBvcnR9L2AsXG4gICAgYGV4cG9ydCBIVFRQU19QUk9YWT1odHRwOi8vJGdhdGV3YXk6JHtwcm94eVBvcnR9L2AsXG4gICAgYGV4cG9ydCBOT0RFX0VYVFJBX0NBX0NFUlRTPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgYGV4cG9ydCBBV1NfQ0FfQlVORExFPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgYGV4cG9ydCBTU0xfQ0VSVF9GSUxFPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgJ2VjaG8gXCJBY3F1aXJlOjpodHRwOjpwcm94eSBcXFwiJEhUVFBfUFJPWFlcXFwiO1wiID4+IC9ldGMvYXB0L2FwdC5jb25mLmQvOTVwcm94aWVzJyxcbiAgICAnZWNobyBcIkFjcXVpcmU6Omh0dHBzOjpwcm94eSBcXFwiJEhUVFBTX1BST1hZXFxcIjtcIiA+PiAvZXRjL2FwdC9hcHQuY29uZi5kLzk1cHJveGllcycsXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlckVudihlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGVudilcbiAgICAuZmlsdGVyKChbaywgdl0pID0+IHYgJiYgIUNSRURFTlRJQUxfRU5WX1ZBUlMuaW5jbHVkZXMoaykpXG4gICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfT0nJHt2fSdgKVxuICAgIC5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogRmluZCBhIGJyb2FkbHkgbW91bnRhYmxlIHBhcmVudCBvZiB0aGUgZ2l2ZW4gZGlyZWN0b3J5XG4gKlxuICogV2UgZG9uJ3Qgd2FudCB0byBqdXN0IG1vdW50IHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LCBiZWNhdXNlXG4gKiBpdCBjb3VsZCBlbmQgdXAgYmVpbmcgYC92YXJgICh0b3AtbGV2ZWwgZGlyIG9mIHRtcGRpciBvbiBNYWMpLlxuICovXG5mdW5jdGlvbiBmaW5kTW91bnRhYmxlUGFyZW50KGRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICBvcy50bXBkaXIoKSxcbiAgICBwcm9jZXNzLmVudi5UTVBESVIsXG4gICAgcHJvY2Vzcy5lbnYuSE9NRSxcbiAgXTtcbiAgZm9yIChjb25zdCBjYW5kIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoY2FuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyLnN0YXJ0c1dpdGgoY2FuZCkpIHtcbiAgICAgIGNvbnN0IHN1ZmZpeCA9IGRpci5zdWJzdHJpbmcoY2FuZC5sZW5ndGgpO1xuICAgICAgY29uc3QgZmlyc3RDaGlsZERpciA9IHN1ZmZpeC5zcGxpdCgnLycpWzBdO1xuXG4gICAgICByZXR1cm4gcGF0aC5qb2luKGNhbmQsIGZpcnN0Q2hpbGREaXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGlyO1xufVxuIl19
|