aws-delivlib 13.7.10 → 14.0.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/cdk.out/asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1/__entrypoint__.js +119 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.d.ts +0 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.js +0 -0
- package/cdk.out/{asset.ca50c9b7760151d8e8ce6e39851032d4eff4836ea1ee806eaa944aaef110a353 → asset.7ada94e893d605ebbcf2f5b3bedc83bad3c704ab7892c1f2af45bfd79fb751e7}/index.js +20 -4
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/create-release.js +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package-lock.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/publish.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/sign-files.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/with-signing-key.sh +1 -7
- package/cdk.out/cdk.out +1 -1
- package/cdk.out/delivlib-test.assets.json +12 -12
- package/cdk.out/delivlib-test.template.json +7135 -7704
- package/cdk.out/manifest.json +152 -2498
- package/cdk.out/tree.json +1059 -1427
- package/lib/auto-build.d.ts +2 -1
- package/lib/auto-build.js +8 -7
- package/lib/auto-build.ts +3 -2
- package/lib/build-env.d.ts +1 -1
- package/lib/build-env.js +4 -4
- package/lib/build-env.ts +1 -1
- package/lib/canary.d.ts +2 -1
- package/lib/canary.js +7 -6
- package/lib/canary.ts +2 -2
- package/lib/change-controller.d.ts +2 -1
- package/lib/change-controller.js +20 -18
- package/lib/change-controller.ts +6 -5
- package/lib/chime-notifier/chime-notifier.d.ts +2 -1
- package/lib/chime-notifier/chime-notifier.js +12 -11
- package/lib/chime-notifier/chime-notifier.ts +3 -2
- package/lib/code-signing/certificate-signing-request.d.ts +1 -1
- package/lib/code-signing/certificate-signing-request.js +16 -14
- package/lib/code-signing/certificate-signing-request.ts +7 -5
- package/lib/code-signing/code-signing-certificate.d.ts +2 -1
- package/lib/code-signing/code-signing-certificate.js +12 -11
- package/lib/code-signing/code-signing-certificate.ts +5 -4
- package/lib/code-signing/private-key.d.ts +2 -1
- package/lib/code-signing/private-key.js +28 -26
- package/lib/code-signing/private-key.ts +10 -8
- package/lib/credential-pair.d.ts +1 -1
- package/lib/credential-pair.js +1 -1
- package/lib/credential-pair.ts +1 -1
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/open-pgp-key-pair.d.ts +2 -1
- package/lib/open-pgp-key-pair.js +28 -27
- package/lib/open-pgp-key-pair.ts +12 -10
- package/lib/package-integrity/handler/validate.bundle.js +814 -457
- package/lib/package-integrity/integrity.d.ts +2 -1
- package/lib/package-integrity/integrity.js +7 -6
- package/lib/package-integrity/integrity.ts +2 -2
- package/lib/permissions.d.ts +1 -1
- package/lib/permissions.js +5 -5
- package/lib/permissions.ts +4 -4
- package/lib/pipeline-notifications/slack.d.ts +1 -1
- package/lib/pipeline-notifications/slack.js +4 -4
- package/lib/pipeline-notifications/slack.ts +1 -1
- package/lib/pipeline-watcher/watcher.d.ts +2 -1
- package/lib/pipeline-watcher/watcher.js +16 -15
- package/lib/pipeline-watcher/watcher.ts +3 -3
- package/lib/pipeline.d.ts +2 -1
- package/lib/pipeline.js +19 -18
- package/lib/pipeline.ts +5 -4
- package/lib/publishing/github/with-signing-key.sh +1 -7
- package/lib/publishing.d.ts +2 -1
- package/lib/publishing.js +36 -35
- package/lib/publishing.ts +9 -8
- package/lib/pull-request/bump.d.ts +3 -3
- package/lib/pull-request/bump.js +3 -26
- package/lib/pull-request/bump.ts +3 -3
- package/lib/pull-request/merge-back.d.ts +3 -3
- package/lib/pull-request/merge-back.js +3 -3
- package/lib/pull-request/merge-back.ts +3 -3
- package/lib/pull-request/pr.d.ts +2 -1
- package/lib/pull-request/pr.js +11 -10
- package/lib/pull-request/pr.ts +3 -2
- package/lib/registry-sync/ecr-mirror.d.ts +2 -1
- package/lib/registry-sync/ecr-mirror.js +22 -21
- package/lib/registry-sync/ecr-mirror.ts +4 -3
- package/lib/registry-sync/mirror-source.d.ts +2 -1
- package/lib/registry-sync/mirror-source.js +3 -3
- package/lib/registry-sync/mirror-source.ts +2 -2
- package/lib/repo.d.ts +2 -1
- package/lib/repo.js +12 -12
- package/lib/repo.ts +3 -2
- package/lib/shellable.d.ts +2 -1
- package/lib/shellable.js +23 -22
- package/lib/shellable.ts +5 -4
- package/lib/signing-key.d.ts +2 -1
- package/lib/signing-key.js +6 -5
- package/lib/signing-key.ts +3 -2
- package/lib/util.d.ts +1 -1
- package/lib/util.js +1 -1
- package/lib/util.ts +1 -1
- package/package.json +12 -10
- package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/__entrypoint__.js +0 -119
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MirrorSource = void 0;
|
|
4
|
-
const
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
/**
|
|
6
6
|
* Source of the image.
|
|
7
7
|
*/
|
|
@@ -63,7 +63,7 @@ class MirrorSource {
|
|
|
63
63
|
}
|
|
64
64
|
bind(options) {
|
|
65
65
|
var _a;
|
|
66
|
-
const asset = new
|
|
66
|
+
const asset = new aws_cdk_lib_1.aws_s3_assets.Asset(options.scope, `BuildContext${this.directory}${JSON.stringify((_a = opts.buildArgs) !== null && _a !== void 0 ? _a : {})}`, { path: this.directory });
|
|
67
67
|
if (options.syncJob) {
|
|
68
68
|
asset.grantRead(options.syncJob);
|
|
69
69
|
}
|
|
@@ -92,4 +92,4 @@ class MirrorSource {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
exports.MirrorSource = MirrorSource;
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlycm9yLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1pcnJvci1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBR3FCO0FBc0RyQjs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUF3RmhDLFlBQXVDLGNBQXNCLEVBQXFCLEdBQVcsRUFBcUIsU0FBa0I7UUFBN0YsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFBcUIsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFxQixjQUFTLEdBQVQsU0FBUyxDQUFTO0lBQ3BJLENBQUM7SUF2RkQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWEsRUFBRSxNQUFjLFFBQVE7UUFDL0QsTUFBTSxxQkFBc0IsU0FBUSxZQUFZO1lBQzlDO2dCQUNFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCwrREFBK0Q7Z0JBQy9ELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQztnQkFDeEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVNLElBQUksQ0FBQyxPQUFnQztnQkFDMUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoRixPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixlQUFlLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDaEQsY0FBYyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFO3FCQUMvRDtvQkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDZCxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBRUQsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBaUIsRUFBRSxjQUFzQixFQUFFLEdBQVk7UUFDakYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsY0FBc0IsRUFBRSxPQUFxQyxFQUFFO1FBQ3RHLE1BQU0scUJBQXNCLFNBQVEsWUFBWTtZQUM5Qzs7Z0JBQ0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxNQUFBLElBQUksQ0FBQyxHQUFHLG1DQUFJLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRU0sSUFBSSxDQUFDLE9BQWdDOztnQkFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSwyQkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGVBQWUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQUEsSUFBSSxDQUFDLFNBQVMsbUNBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBVSxFQUFFLENBQUMsQ0FBQztnQkFDbkosSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNuQixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoRixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUVqQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQy9GO2dCQUVELE1BQU0sT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxDQUFDO2dCQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUVuQyxPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixVQUFVLE9BQU8sSUFBSSxNQUFNLEVBQUU7d0JBQzdCLGFBQWEsS0FBSyxDQUFDLFdBQVcsSUFBSSxPQUFPLEVBQUU7d0JBQzNDLFNBQVMsT0FBTyxPQUFPLE1BQU0sRUFBRTt3QkFDL0IsZ0JBQWdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxFQUFFO3FCQUMvQztvQkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDZCxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBQ0QsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDckMsQ0FBQztDQVNGO0FBL0ZELG9DQStGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19jb2RlYnVpbGQgYXMgY29kZWJ1aWxkLFxuICBhd3NfczNfYXNzZXRzIGFzIHMzQXNzZXRzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaXJyb3JTb3VyY2VCaW5kT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IEVDUiByZWdpc3RyeVxuICAgKi9cbiAgcmVhZG9ubHkgZWNyUmVnaXN0cnk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzY29wZSB0byBhdHRhY2ggYW55IGNvbnN0cnVjdHMgdGhhdCBtYXkgYWxzbyBiZSBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogQ29uc3RydWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHJ1biB0aGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gRG9ja2VySHViIGFuZCBFQ1IuXG4gICAqIEBkZWZhdWx0IC0gZWl0aGVyIG5vIHN5bmMgam9iIGlzIHByZXNlbnQgb3IgaXQncyBub3QgZGVmaW5lZCB5ZXQuXG4gICAqL1xuICByZWFkb25seSBzeW5jSm9iPzogY29kZWJ1aWxkLklQcm9qZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pcnJvclNvdXJjZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZHMgdG8gcnVuIHRvIHJldHJpZXZlIHRoZSBkb2NrZXIgaW1hZ2UuXG4gICAqIGUuZy4gWydkb2NrZXIgcHVsbCA8aW1hZ2UtaWQ+J11cbiAgICovXG4gIHJlYWRvbmx5IGNvbW1hbmRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhcmdldCBFQ1IgcmVwb3NpdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWcgdG8gYmUgdXNlIGZvciB0aGUgdGFyZ2V0IEVDUiBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xufVxuXG4vKiogQWRkaXRpb25hbCBvcHRpb25zIHdoZW4gY29uZmlndXJpbmcgYSBNaXJyb3IgU291cmNlIGZyb20gYSBsb2NhbCBkaXJlY3RvcnkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWlycm9yU291cmNlRGlyZWN0b3J5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUYWcgb2YgdGhlIGJ1aWx0IGltYWdlLlxuICAgKiBAZGVmYXVsdCAnbGF0ZXN0J1xuICAgKi9cbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdWlsZCBhcmdzIHRvIHBhc3MgdG8gdGhlIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYnVpbGQgYXJncyBhcmUgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZEFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFNvdXJjZSBvZiB0aGUgaW1hZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNaXJyb3JTb3VyY2Uge1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgYW4gaW1hZ2UgZnJvbSBEb2NrZXJIdWIuXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZSBlLmcganNpaS9zdXBlcmNoYWluXG4gICAqIEBwYXJhbSB0YWcgb3B0aW9uYWwsIGRlZmF1bHRzIHRvICdsYXRlc3QnXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Eb2NrZXJIdWIoaW1hZ2U6IHN0cmluZywgdGFnOiBzdHJpbmcgPSAnbGF0ZXN0Jyk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRG9ja2VySHViTWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaW1hZ2UuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW1hZ2UgbXVzdCBub3QgaW5jbHVkZSB0YWcnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzaW11bGF0ZXMgRG9ja2VySHViIGJ5IHBlcmZpeGluZyBsaWJyYXJ5LyB0byBvZmZpY2lhbCBpbWFnZXNcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSBpbWFnZS5pbmNsdWRlcygnLycpID8gaW1hZ2UgOiBgbGlicmFyeS8ke2ltYWdlfWA7XG4gICAgICAgIHN1cGVyKHJlcG9zaXRvcnlOYW1lLCB0YWcsIHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBiaW5kKG9wdGlvbnM6IE1pcnJvclNvdXJjZUJpbmRPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGVjckltYWdlVXJpID0gYCR7b3B0aW9ucy5lY3JSZWdpc3RyeX0vJHt0aGlzLnJlcG9zaXRvcnlOYW1lfToke3RoaXMudGFnfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgIGBkb2NrZXIgcHVsbCAke3RoaXMucmVwb3NpdG9yeU5hbWV9OiR7dGhpcy50YWd9YCxcbiAgICAgICAgICAgIGBkb2NrZXIgdGFnICR7dGhpcy5yZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ30gJHtlY3JJbWFnZVVyaX1gLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHRoaXMucmVwb3NpdG9yeU5hbWUsXG4gICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERvY2tlckh1Yk1pcnJvclNvdXJjZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURURcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21EaXIoKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nLCByZXBvc2l0b3J5TmFtZTogc3RyaW5nLCB0YWc/OiBzdHJpbmcpOiBNaXJyb3JTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21EaXIoZGlyZWN0b3J5LCByZXBvc2l0b3J5TmFtZSwgeyB0YWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gYSBsb2NhbCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgUGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyZmlsZS5cbiAgICogQHBhcmFtIHJlcG9zaXRvcnlOYW1lIFJlcG9zaXRvcnkgbmFtZSBvZiB0aGUgYnVpbHQgaW1hZ2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EaXIoZGlyZWN0b3J5OiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIG9wdHM6IE1pcnJvclNvdXJjZURpcmVjdG9yeU9wdGlvbnMgPSB7fSk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRGlyZWN0b3J5TWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihyZXBvc2l0b3J5TmFtZSwgb3B0cy50YWcgPz8gJ2xhdGVzdCcsIGRpcmVjdG9yeSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBiaW5kKG9wdGlvbnM6IE1pcnJvclNvdXJjZUJpbmRPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGFzc2V0ID0gbmV3IHMzQXNzZXRzLkFzc2V0KG9wdGlvbnMuc2NvcGUsIGBCdWlsZENvbnRleHQke3RoaXMuZGlyZWN0b3J5fSR7SlNPTi5zdHJpbmdpZnkob3B0cy5idWlsZEFyZ3MgPz8ge30pfWAsIHsgcGF0aDogdGhpcy5kaXJlY3RvcnkhIH0pO1xuICAgICAgICBpZiAob3B0aW9ucy5zeW5jSm9iKSB7XG4gICAgICAgICAgYXNzZXQuZ3JhbnRSZWFkKG9wdGlvbnMuc3luY0pvYik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWNySW1hZ2VVcmkgPSBgJHtvcHRpb25zLmVjclJlZ2lzdHJ5fS8ke3RoaXMucmVwb3NpdG9yeU5hbWV9OiR7dGhpcy50YWd9YDtcbiAgICAgICAgY29uc3QgY21kRmxhZ3MgPSBbXTtcbiAgICAgICAgY21kRmxhZ3MucHVzaCgnLS1wdWxsJyk7XG4gICAgICAgIGNtZEZsYWdzLnB1c2goJy10JywgZWNySW1hZ2VVcmkpO1xuXG4gICAgICAgIGlmIChvcHRzLmJ1aWxkQXJncykge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG9wdHMuYnVpbGRBcmdzKS5mb3JFYWNoKChbaywgdl0pID0+IGNtZEZsYWdzLnB1c2goJy0tYnVpbGQtYXJnJywgYCR7a309JHt2fWApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHppcEZpbGUgPSBgJHt0aGlzLnJlcG9zaXRvcnlOYW1lfS56aXBgO1xuICAgICAgICBjb25zdCB0bXBEaXIgPSB0aGlzLnJlcG9zaXRvcnlOYW1lO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgIGBybSAtcmYgJHt6aXBGaWxlfSAke3RtcERpcn1gLFxuICAgICAgICAgICAgYGF3cyBzMyBjcCAke2Fzc2V0LnMzT2JqZWN0VXJsfSAke3ppcEZpbGV9YCxcbiAgICAgICAgICAgIGB1bnppcCAke3ppcEZpbGV9IC1kICR7dG1wRGlyfWAsXG4gICAgICAgICAgICBgZG9ja2VyIGJ1aWxkICR7Y21kRmxhZ3Muam9pbignICcpfSAke3RtcERpcn1gLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHRoaXMucmVwb3NpdG9yeU5hbWUsXG4gICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEaXJlY3RvcnlNaXJyb3JTb3VyY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIHByb3RlY3RlZCByZWFkb25seSB0YWc6IHN0cmluZywgcHJvdGVjdGVkIHJlYWRvbmx5IGRpcmVjdG9yeT86IHN0cmluZykge1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgdGhlIHNvdXJjZSB3aXRoIHRoZSBFY3JNaXJyb3IgY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJpbmQob3B0aW9uczogTWlycm9yU291cmNlQmluZE9wdGlvbnMpOiBNaXJyb3JTb3VyY2VDb25maWc7XG59XG4iXX0=
|
package/lib/repo.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SecretsManagerSecretOptions, aws_codebuild as cbuild, aws_codecommit as ccommit, aws_codepipeline as cpipeline } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
2
3
|
import { ExternalSecret } from './permissions';
|
|
3
4
|
export interface IRepo {
|
|
4
5
|
repositoryUrlHttp: string;
|
package/lib/repo.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WritableGitHubRepo = exports.GitHubRepo = exports.CodeCommitRepo = void 0;
|
|
4
|
-
const
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
class CodeCommitRepo {
|
|
6
6
|
constructor(repository) {
|
|
7
7
|
this.repository = repository;
|
|
@@ -11,8 +11,8 @@ class CodeCommitRepo {
|
|
|
11
11
|
const stage = pipeline.addStage({
|
|
12
12
|
stageName: 'Source',
|
|
13
13
|
});
|
|
14
|
-
const sourceOutput = new
|
|
15
|
-
stage.addAction(new
|
|
14
|
+
const sourceOutput = new aws_cdk_lib_1.aws_codepipeline.Artifact('Source');
|
|
15
|
+
stage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.CodeCommitSourceAction({
|
|
16
16
|
actionName: 'Pull',
|
|
17
17
|
repository: this.repository,
|
|
18
18
|
branch,
|
|
@@ -27,7 +27,7 @@ class CodeCommitRepo {
|
|
|
27
27
|
return this.repository.repositoryCloneUrlSsh;
|
|
28
28
|
}
|
|
29
29
|
createBuildSource(_, _webhook, options = {}) {
|
|
30
|
-
return
|
|
30
|
+
return aws_cdk_lib_1.aws_codebuild.Source.codeCommit({
|
|
31
31
|
repository: this.repository,
|
|
32
32
|
cloneDepth: options.cloneDepth,
|
|
33
33
|
});
|
|
@@ -55,11 +55,11 @@ class GitHubRepo {
|
|
|
55
55
|
}
|
|
56
56
|
createSourceStage(pipeline, branch) {
|
|
57
57
|
const stage = pipeline.addStage({ stageName: 'Source' });
|
|
58
|
-
const sourceOutput = new
|
|
59
|
-
stage.addAction(new
|
|
58
|
+
const sourceOutput = new aws_cdk_lib_1.aws_codepipeline.Artifact('Source');
|
|
59
|
+
stage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.GitHubSourceAction({
|
|
60
60
|
actionName: 'Pull',
|
|
61
61
|
branch,
|
|
62
|
-
oauthToken:
|
|
62
|
+
oauthToken: aws_cdk_lib_1.SecretValue.secretsManager(this.tokenSecretArn, this.tokenSecretOptions),
|
|
63
63
|
owner: this.owner,
|
|
64
64
|
repo: this.repo,
|
|
65
65
|
output: sourceOutput,
|
|
@@ -72,7 +72,7 @@ class GitHubRepo {
|
|
|
72
72
|
throw new Error('Specify at most one of \'branch\' and \'branches\'');
|
|
73
73
|
}
|
|
74
74
|
const branches = (_a = options.branches) !== null && _a !== void 0 ? _a : (options.branch ? [options.branch] : []);
|
|
75
|
-
return
|
|
75
|
+
return aws_cdk_lib_1.aws_codebuild.Source.gitHub({
|
|
76
76
|
owner: this.owner,
|
|
77
77
|
repo: this.repo,
|
|
78
78
|
webhook,
|
|
@@ -91,14 +91,14 @@ class GitHubRepo {
|
|
|
91
91
|
// Turn the list of branches into a regex
|
|
92
92
|
const branchExpr = branches.map(b => `^refs/heads/${b}$`).join('|');
|
|
93
93
|
return [
|
|
94
|
-
|
|
94
|
+
aws_cdk_lib_1.aws_codebuild.FilterGroup.inEventOf(aws_cdk_lib_1.aws_codebuild.EventAction.PUSH)
|
|
95
95
|
.andHeadRefIs(branchExpr),
|
|
96
|
-
|
|
96
|
+
aws_cdk_lib_1.aws_codebuild.FilterGroup.inEventOf(aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_CREATED, aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_UPDATED)
|
|
97
97
|
.andBaseRefIs(branchExpr),
|
|
98
98
|
];
|
|
99
99
|
}
|
|
100
100
|
return [
|
|
101
|
-
|
|
101
|
+
aws_cdk_lib_1.aws_codebuild.FilterGroup.inEventOf(aws_cdk_lib_1.aws_codebuild.EventAction.PUSH, aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_CREATED, aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_UPDATED),
|
|
102
102
|
];
|
|
103
103
|
}
|
|
104
104
|
}
|
|
@@ -118,4 +118,4 @@ class WritableGitHubRepo extends GitHubRepo {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
exports.WritableGitHubRepo = WritableGitHubRepo;
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBSWlCO0FBbUNqQixNQUFhLGNBQWM7SUFJekIsWUFBNkIsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFINUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFLcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQTRCLEVBQUUsTUFBYztRQUNuRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzlCLFNBQVMsRUFBRSxRQUFRO1NBQ3BCLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLElBQUksMEJBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtDQUFpQixDQUFDLHNCQUFzQixDQUFDO1lBQzNELFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixNQUFNO1lBQ04sTUFBTSxFQUFFLFlBQVk7U0FDckIsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7SUFDL0MsQ0FBQztJQUVNLGlCQUFpQixDQUFDLENBQVksRUFBRSxRQUFpQixFQUFFLFVBQThCLEVBQUc7UUFDekYsT0FBTyx1QkFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtR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LElBQUksR0FBRyxDQUFDO0lBQy9CLENBQUM7Q0FhRjtBQXJCRCxnREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25zdHJ1Y3QsIFNlY3JldFZhbHVlLCBTZWNyZXRzTWFuYWdlclNlY3JldE9wdGlvbnMsXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLCBhd3NfY29kZWNvbW1pdCBhcyBjY29tbWl0LFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSwgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxufSBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IEV4dGVybmFsU2VjcmV0IH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlcG8ge1xuICByZXBvc2l0b3J5VXJsSHR0cDogc3RyaW5nO1xuICByZXBvc2l0b3J5VXJsU3NoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFsbG93c0JhZGdlOiBib29sZWFuO1xuICByZWFkb25seSB0b2tlblNlY3JldEFybj86IHN0cmluZztcbiAgY3JlYXRlQnVpbGRTb3VyY2UocGFyZW50OiBDb25zdHJ1Y3QsIHdlYmhvb2s6IGJvb2xlYW4sIG9wdGlvbnM/OiBCdWlsZFNvdXJjZU9wdGlvbnMpOiBjYnVpbGQuSVNvdXJjZTtcbiAgY3JlYXRlU291cmNlU3RhZ2UocGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZSwgYnJhbmNoOiBzdHJpbmcpOiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG4gIGRlc2NyaWJlKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNvdXJjZU9wdGlvbnMge1xuICAvKipcbiAgICogU2luZ2xlIGJyYW5jaFxuICAgKlxuICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYGJyYW5jaGVzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgYnJhbmNoZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBicmFuY2hlc2AgaW5zdGVhZC5cbiAgICovXG4gIGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogTXVsdGlwbGUgYnJhbmNoZXNcbiAgICpcbiAgICogQ2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBicmFuY2hgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFsbCBicmFuY2hlc1xuICAgKi9cbiAgYnJhbmNoZXM/OiBzdHJpbmdbXTtcbiAgY2xvbmVEZXB0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvZGVDb21taXRSZXBvIGltcGxlbWVudHMgSVJlcG8ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWxsb3dzQmFkZ2UgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2VjcmV0QXJuPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeTogY2NvbW1pdC5JUmVwb3NpdG9yeSkge1xuXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU291cmNlU3RhZ2UocGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZSwgYnJhbmNoOiBzdHJpbmcpOiBjcGlwZWxpbmUuQXJ0aWZhY3Qge1xuICAgIGNvbnN0IHN0YWdlID0gcGlwZWxpbmUuYWRkU3RhZ2Uoe1xuICAgICAgc3RhZ2VOYW1lOiAnU291cmNlJyxcbiAgICB9KTtcbiAgICBjb25zdCBzb3VyY2VPdXRwdXQgPSBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCdTb3VyY2UnKTtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVDb21taXRTb3VyY2VBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogJ1B1bGwnLFxuICAgICAgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3J5LFxuICAgICAgYnJhbmNoLFxuICAgICAgb3V0cHV0OiBzb3VyY2VPdXRwdXQsXG4gICAgfSkpO1xuICAgIHJldHVybiBzb3VyY2VPdXRwdXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxIdHRwKCkge1xuICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkucmVwb3NpdG9yeUNsb25lVXJsSHR0cDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeVVybFNzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlDbG9uZVVybFNzaDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVCdWlsZFNvdXJjZShfOiBDb25zdHJ1Y3QsIF93ZWJob29rOiBib29sZWFuLCBvcHRpb25zOiBCdWlsZFNvdXJjZU9wdGlvbnMgPSB7IH0pOiBjYnVpbGQuSVNvdXJjZSB7XG4gICAgcmV0dXJuIGNidWlsZC5Tb3VyY2UuY29kZUNvbW1pdCh7XG4gICAgICByZXBvc2l0b3J5OiB0aGlzLnJlcG9zaXRvcnksXG4gICAgICBjbG9uZURlcHRoOiBvcHRpb25zLmNsb25lRGVwdGgsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlOYW1lO1xuICB9XG59XG5cbmludGVyZmFjZSBHaXRIdWJSZXBvUHJvcHMge1xuICAvKipcbiAgICogU2VjcmV0cyBNYW5hZ2VyIEFSTiBvZiB0aGUgT0F1dGggdG9rZW4gc2VjcmV0IHRoYXQgYWxsb3dzIGFjY2VzcyB0byB5b3VyIGdpdGh1YiByZXBvLlxuICAgKi9cbiAgdG9rZW5TZWNyZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcmVmZXJlbmNpbmcgYSBzZWNyZXQgdmFsdWUgZnJvbSBTZWNyZXRzIE1hbmFnZXJcbiAgICovXG4gIHRva2VuU2VjcmV0T3B0aW9ucz86IFNlY3JldHNNYW5hZ2VyU2VjcmV0T3B0aW9ucztcblxuICAvKipcbiAgICogSW4gdGhlIGZvcm0gXCJhY2NvdW50L3JlcG9cIi5cbiAgICovXG4gIHJlcG9zaXRvcnk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEdpdEh1YlJlcG8gaW1wbGVtZW50cyBJUmVwbyB7XG4gIHB1YmxpYyByZWFkb25seSBhbGxvd3NCYWRnZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvd25lcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwbzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5TZWNyZXRBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2VjcmV0T3B0aW9ucz86IFNlY3JldHNNYW5hZ2VyU2VjcmV0T3B0aW9ucztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogR2l0SHViUmVwb1Byb3BzKSB7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IHByb3BzLnJlcG9zaXRvcnk7XG4gICAgY29uc3QgW293bmVyLCByZXBvXSA9IHJlcG9zaXRvcnkuc3BsaXQoJy8nKTtcblxuICAgIHRoaXMub3duZXIgPSBvd25lcjtcbiAgICB0aGlzLnJlcG8gPSByZXBvO1xuICAgIHRoaXMudG9rZW5TZWNyZXRBcm4gPSBwcm9wcy50b2tlblNlY3JldEFybjtcbiAgICB0aGlzLnRva2VuU2VjcmV0T3B0aW9ucyA9IHByb3BzLnRva2VuU2VjcmV0T3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeVVybEh0dHAoKSB7XG4gICAgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHt0aGlzLm93bmVyfS8ke3RoaXMucmVwb30uZ2l0YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeVVybFNzaCgpIHtcbiAgICByZXR1cm4gYGdpdEBnaXRodWIuY29tOiR7dGhpcy5vd25lcn0vJHt0aGlzLnJlcG99LmdpdGA7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU291cmNlU3RhZ2UocGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZSwgYnJhbmNoOiBzdHJpbmcpOiBjcGlwZWxpbmUuQXJ0aWZhY3Qge1xuICAgIGNvbnN0IHN0YWdlID0gcGlwZWxpbmUuYWRkU3RhZ2UoeyBzdGFnZU5hbWU6ICdTb3VyY2UnIH0pO1xuXG4gICAgY29uc3Qgc291cmNlT3V0cHV0ID0gbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgnU291cmNlJyk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5HaXRIdWJTb3VyY2VBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogJ1B1bGwnLFxuICAgICAgYnJhbmNoLFxuICAgICAgb2F1dGhUb2tlbjogU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIodGhpcy50b2tlblNlY3JldEFybiwgdGhpcy50b2tlblNlY3JldE9wdGlvbnMpLFxuICAgICAgb3duZXI6IHRoaXMub3duZXIsXG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICBvdXRwdXQ6IHNvdXJjZU91dHB1dCxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHNvdXJjZU91dHB1dDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVCdWlsZFNvdXJjZShfOiBDb25zdHJ1Y3QsIHdlYmhvb2s6IGJvb2xlYW4sIG9wdGlvbnM6IEJ1aWxkU291cmNlT3B0aW9ucyA9IHsgfSk6IGNidWlsZC5JU291cmNlIHtcbiAgICBpZiAob3B0aW9ucy5icmFuY2ggJiYgb3B0aW9ucy5icmFuY2hlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIFxcJ2JyYW5jaFxcJyBhbmQgXFwnYnJhbmNoZXNcXCcnKTtcbiAgICB9XG4gICAgY29uc3QgYnJhbmNoZXMgPSBvcHRpb25zLmJyYW5jaGVzID8/IChvcHRpb25zLmJyYW5jaCA/IFtvcHRpb25zLmJyYW5jaF0gOiBbXSk7XG5cbiAgICByZXR1cm4gY2J1aWxkLlNvdXJjZS5naXRIdWIoe1xuICAgICAgb3duZXI6IHRoaXMub3duZXIsXG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICB3ZWJob29rLFxuICAgICAgY2xvbmVEZXB0aDogb3B0aW9ucy5jbG9uZURlcHRoLFxuICAgICAgcmVwb3J0QnVpbGRTdGF0dXM6IHdlYmhvb2ssXG4gICAgICB3ZWJob29rRmlsdGVyczogd2ViaG9va1xuICAgICAgICA/IHRoaXMuY3JlYXRlV2ViaG9va0ZpbHRlcnMoYnJhbmNoZXMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlKCkge1xuICAgIHJldHVybiBgJHt0aGlzLm93bmVyfS8ke3RoaXMucmVwb31gO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVXZWJob29rRmlsdGVycyhicmFuY2hlczogc3RyaW5nW10pIHtcbiAgICBpZiAoYnJhbmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gVHVybiB0aGUgbGlzdCBvZiBicmFuY2hlcyBpbnRvIGEgcmVnZXhcbiAgICAgIGNvbnN0IGJyYW5jaEV4cHIgPSBicmFuY2hlcy5tYXAoYiA9PiBgXnJlZnMvaGVhZHMvJHtifSRgKS5qb2luKCd8Jyk7XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNidWlsZC5GaWx0ZXJHcm91cC5pbkV2ZW50T2YoY2J1aWxkLkV2ZW50QWN0aW9uLlBVU0gpXG4gICAgICAgICAgLmFuZEhlYWRSZWZJcyhicmFuY2hFeHByKSxcbiAgICAgICAgY2J1aWxkLkZpbHRlckdyb3VwLmluRXZlbnRPZihjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX0NSRUFURUQsIGNidWlsZC5FdmVudEFjdGlvbi5QVUxMX1JFUVVFU1RfVVBEQVRFRClcbiAgICAgICAgICAuYW5kQmFzZVJlZklzKGJyYW5jaEV4cHIpLFxuICAgICAgXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIGNidWlsZC5GaWx0ZXJHcm91cC5pbkV2ZW50T2YoXG4gICAgICAgIGNidWlsZC5FdmVudEFjdGlvbi5QVVNILFxuICAgICAgICBjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX0NSRUFURUQsXG4gICAgICAgIGNidWlsZC5FdmVudEFjdGlvbi5QVUxMX1JFUVVFU1RfVVBEQVRFRCxcbiAgICAgICksXG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRhYmxlR2l0SHViUmVwb1Byb3BzIGV4dGVuZHMgR2l0SHViUmVwb1Byb3BzIHtcbiAgLyoqXG4gICAqIFNTSCBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogVGhpcyBpcyByZXF1aXJlZCBpZiB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHVzZSBhY3Rpb25zIHRoYXQgd3JpdGUgdG8gdGhlIHJlcG9cbiAgICogc3VjaCBhcyBkb2NzIHB1Ymxpc2hpbmcgYW5kIGF1dG9tYXRpYyBidW1wcy5cbiAgICovXG4gIHNzaEtleVNlY3JldDogRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VybmFtZSB0byB1c2UgZm9yIHRoZSBwdWJsaXNoZWQgY29tbWl0c1xuICAgKi9cbiAgY29tbWl0VXNlcm5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdG8gdXNlIGZvciB0aGUgcHVibGlzaGVkIGNvbW1pdHNcbiAgICovXG4gIGNvbW1pdEVtYWlsOiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGNsYXNzIFdyaXRhYmxlR2l0SHViUmVwbyBleHRlbmRzIEdpdEh1YlJlcG8ge1xuXG4gIHB1YmxpYyBzdGF0aWMgaXNXcml0YWJsZUdpdEh1YlJlcG8ocmVwbzogSVJlcG8pOiByZXBvIGlzIFdyaXRhYmxlR2l0SHViUmVwbyB7XG4gICAgY29uc3Qgb2JqID0gcmVwbyBhcyBhbnk7XG5cbiAgICByZXR1cm4gJ3NzaEtleVNlY3JldCcgaW4gb2JqXG4gICAgICAmJiAnY29tbWl0RW1haWwnIGluIG9ialxuICAgICAgJiYgJ2NvbW1pdFVzZXJuYW1lJyBpbiBvYmo7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgc3NoS2V5U2VjcmV0OiBFeHRlcm5hbFNlY3JldDtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1pdEVtYWlsOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBjb21taXRVc2VybmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBXcml0YWJsZUdpdEh1YlJlcG9Qcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3NoS2V5U2VjcmV0ID0gcHJvcHMuc3NoS2V5U2VjcmV0O1xuICAgIHRoaXMuY29tbWl0RW1haWwgPSBwcm9wcy5jb21taXRFbWFpbDtcbiAgICB0aGlzLmNvbW1pdFVzZXJuYW1lID0gcHJvcHMuY29tbWl0VXNlcm5hbWU7XG4gIH1cbn1cbiJdfQ==
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBSXFCO0FBb0NyQixNQUFhLGNBQWM7SUFJekIsWUFBNkIsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFINUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFLcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQTRCLEVBQUUsTUFBYztRQUNuRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzlCLFNBQVMsRUFBRSxRQUFRO1NBQ3BCLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLElBQUksOEJBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLHNDQUFpQixDQUFDLHNCQUFzQixDQUFDO1lBQzNELFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixNQUFNO1lBQ04sTUFBTSxFQUFFLFlBQVk7U0FDckIsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7SUFDL0MsQ0FBQztJQUVNLGlCQUFpQixDQUFDLENBQVksRUFBRSxRQUFpQixFQUFFLFVBQThCLEVBQUc7UUFDekYsT0FBTywyQkFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBeENELHdDQXdDQztBQW1CRCxNQUFhLFVBQVU7SUFPckIsWUFBWSxLQUFzQjtRQU5sQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQU9qQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxzQkFBc0IsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sa0JBQWtCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxRQUE0QixFQUFFLE1BQWM7UUFDbkUsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXpELE1BQU0sWUFBWSxHQUFHLElBQUksOEJBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLHNDQUFpQixDQUFDLGtCQUFrQixDQUFDO1lBQ3ZELFVBQVUsRUFBRSxNQUFNO1lBQ2xCLE1BQU07WUFDTixVQUFVLEVBQUUseUJBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDcEYsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxZQUFZO1NBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLENBQVksRUFBRSxPQUFnQixFQUFFLFVBQThCLEVBQUc7O1FBQ3hGLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUN2RTtRQUNELE1BQU0sUUFBUSxHQUFHLE1BQUEsT0FBTyxDQUFDLFFBQVEsbUNBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFOUUsT0FBTywyQkFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU87WUFDUCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsaUJBQWlCLEVBQUUsT0FBTztZQUMxQixjQUFjLEVBQUUsT0FBTztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFFBQWtCO1FBQzdDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIseUNBQXlDO1lBQ3pDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBFLE9BQU87Z0JBQ0wsMkJBQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLDJCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztxQkFDbEQsWUFBWSxDQUFDLFVBQVUsQ0FBQztnQkFDM0IsMkJBQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLDJCQUFNLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLDJCQUFNLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDO3FCQUMzRyxZQUFZLENBQUMsVUFBVSxDQUFDO2FBQzVCLENBQUM7U0FDSDtRQUNELE9BQU87WUFDTCwyQkFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQzFCLDJCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFDdkIsMkJBQU0sQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQ3ZDLDJCQUFNLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUN4QztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsRkQsZ0NBa0ZDO0FBdUJELE1BQWEsa0JBQW1CLFNBQVEsVUFBVTtJQWNoRCxZQUFZLEtBQThCO1FBQ3hDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFsQk0sTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQVc7UUFDNUMsTUFBTSxHQUFHLEdBQUcsSUFBVyxDQUFDO1FBRXhCLE9BQU8sY0FBYyxJQUFJLEdBQUc7ZUFDdkIsYUFBYSxJQUFJLEdBQUc7ZUFDcEIsZ0JBQWdCLElBQUksR0FBRyxDQUFDO0lBQy9CLENBQUM7Q0FhRjtBQXJCRCxnREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZWNyZXRWYWx1ZSwgU2VjcmV0c01hbmFnZXJTZWNyZXRPcHRpb25zLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCwgYXdzX2NvZGVjb21taXQgYXMgY2NvbW1pdCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFeHRlcm5hbFNlY3JldCB9IGZyb20gJy4vcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXBvIHtcbiAgcmVwb3NpdG9yeVVybEh0dHA6IHN0cmluZztcbiAgcmVwb3NpdG9yeVVybFNzaDogc3RyaW5nO1xuICByZWFkb25seSBhbGxvd3NCYWRnZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdG9rZW5TZWNyZXRBcm4/OiBzdHJpbmc7XG4gIGNyZWF0ZUJ1aWxkU291cmNlKHBhcmVudDogQ29uc3RydWN0LCB3ZWJob29rOiBib29sZWFuLCBvcHRpb25zPzogQnVpbGRTb3VyY2VPcHRpb25zKTogY2J1aWxkLklTb3VyY2U7XG4gIGNyZWF0ZVNvdXJjZVN0YWdlKHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmUsIGJyYW5jaDogc3RyaW5nKTogY3BpcGVsaW5lLkFydGlmYWN0O1xuICBkZXNjcmliZSgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNpbmdsZSBicmFuY2hcbiAgICpcbiAgICogQ2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBicmFuY2hlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQWxsIGJyYW5jaGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYnJhbmNoZXNgIGluc3RlYWQuXG4gICAqL1xuICBicmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE11bHRpcGxlIGJyYW5jaGVzXG4gICAqXG4gICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgYnJhbmNoYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgYnJhbmNoZXNcbiAgICovXG4gIGJyYW5jaGVzPzogc3RyaW5nW107XG4gIGNsb25lRGVwdGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2RlQ29tbWl0UmVwbyBpbXBsZW1lbnRzIElSZXBvIHtcbiAgcHVibGljIHJlYWRvbmx5IGFsbG93c0JhZGdlID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlblNlY3JldEFybj86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IGNjb21taXQuSVJlcG9zaXRvcnkpIHtcblxuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNvdXJjZVN0YWdlKHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmUsIGJyYW5jaDogc3RyaW5nKTogY3BpcGVsaW5lLkFydGlmYWN0IHtcbiAgICBjb25zdCBzdGFnZSA9IHBpcGVsaW5lLmFkZFN0YWdlKHtcbiAgICAgIHN0YWdlTmFtZTogJ1NvdXJjZScsXG4gICAgfSk7XG4gICAgY29uc3Qgc291cmNlT3V0cHV0ID0gbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgnU291cmNlJyk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQ29tbWl0U291cmNlQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6ICdQdWxsJyxcbiAgICAgIHJlcG9zaXRvcnk6IHRoaXMucmVwb3NpdG9yeSxcbiAgICAgIGJyYW5jaCxcbiAgICAgIG91dHB1dDogc291cmNlT3V0cHV0LFxuICAgIH0pKTtcbiAgICByZXR1cm4gc291cmNlT3V0cHV0O1xuICB9XG5cbiAgcHVibGljIGdldCByZXBvc2l0b3J5VXJsSHR0cCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlDbG9uZVVybEh0dHA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxTc2goKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5yZXBvc2l0b3J5Q2xvbmVVcmxTc2g7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQnVpbGRTb3VyY2UoXzogQ29uc3RydWN0LCBfd2ViaG9vazogYm9vbGVhbiwgb3B0aW9uczogQnVpbGRTb3VyY2VPcHRpb25zID0geyB9KTogY2J1aWxkLklTb3VyY2Uge1xuICAgIHJldHVybiBjYnVpbGQuU291cmNlLmNvZGVDb21taXQoe1xuICAgICAgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3J5LFxuICAgICAgY2xvbmVEZXB0aDogb3B0aW9ucy5jbG9uZURlcHRoLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgR2l0SHViUmVwb1Byb3BzIHtcbiAgLyoqXG4gICAqIFNlY3JldHMgTWFuYWdlciBBUk4gb2YgdGhlIE9BdXRoIHRva2VuIHNlY3JldCB0aGF0IGFsbG93cyBhY2Nlc3MgdG8geW91ciBnaXRodWIgcmVwby5cbiAgICovXG4gIHRva2VuU2VjcmV0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHJlZmVyZW5jaW5nIGEgc2VjcmV0IHZhbHVlIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gICAqL1xuICB0b2tlblNlY3JldE9wdGlvbnM/OiBTZWNyZXRzTWFuYWdlclNlY3JldE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEluIHRoZSBmb3JtIFwiYWNjb3VudC9yZXBvXCIuXG4gICAqL1xuICByZXBvc2l0b3J5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRIdWJSZXBvIGltcGxlbWVudHMgSVJlcG8ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWxsb3dzQmFkZ2UgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2VjcmV0QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlblNlY3JldE9wdGlvbnM/OiBTZWNyZXRzTWFuYWdlclNlY3JldE9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEdpdEh1YlJlcG9Qcm9wcykge1xuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBwcm9wcy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IFtvd25lciwgcmVwb10gPSByZXBvc2l0b3J5LnNwbGl0KCcvJyk7XG5cbiAgICB0aGlzLm93bmVyID0gb3duZXI7XG4gICAgdGhpcy5yZXBvID0gcmVwbztcbiAgICB0aGlzLnRva2VuU2VjcmV0QXJuID0gcHJvcHMudG9rZW5TZWNyZXRBcm47XG4gICAgdGhpcy50b2tlblNlY3JldE9wdGlvbnMgPSBwcm9wcy50b2tlblNlY3JldE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxIdHRwKCkge1xuICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7dGhpcy5vd25lcn0vJHt0aGlzLnJlcG99LmdpdGA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxTc2goKSB7XG4gICAgcmV0dXJuIGBnaXRAZ2l0aHViLmNvbToke3RoaXMub3duZXJ9LyR7dGhpcy5yZXBvfS5naXRgO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNvdXJjZVN0YWdlKHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmUsIGJyYW5jaDogc3RyaW5nKTogY3BpcGVsaW5lLkFydGlmYWN0IHtcbiAgICBjb25zdCBzdGFnZSA9IHBpcGVsaW5lLmFkZFN0YWdlKHsgc3RhZ2VOYW1lOiAnU291cmNlJyB9KTtcblxuICAgIGNvbnN0IHNvdXJjZU91dHB1dCA9IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoJ1NvdXJjZScpO1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuR2l0SHViU291cmNlQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6ICdQdWxsJyxcbiAgICAgIGJyYW5jaCxcbiAgICAgIG9hdXRoVG9rZW46IFNlY3JldFZhbHVlLnNlY3JldHNNYW5hZ2VyKHRoaXMudG9rZW5TZWNyZXRBcm4sIHRoaXMudG9rZW5TZWNyZXRPcHRpb25zKSxcbiAgICAgIG93bmVyOiB0aGlzLm93bmVyLFxuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgb3V0cHV0OiBzb3VyY2VPdXRwdXQsXG4gICAgfSkpO1xuICAgIHJldHVybiBzb3VyY2VPdXRwdXQ7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQnVpbGRTb3VyY2UoXzogQ29uc3RydWN0LCB3ZWJob29rOiBib29sZWFuLCBvcHRpb25zOiBCdWlsZFNvdXJjZU9wdGlvbnMgPSB7IH0pOiBjYnVpbGQuSVNvdXJjZSB7XG4gICAgaWYgKG9wdGlvbnMuYnJhbmNoICYmIG9wdGlvbnMuYnJhbmNoZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3BlY2lmeSBhdCBtb3N0IG9uZSBvZiBcXCdicmFuY2hcXCcgYW5kIFxcJ2JyYW5jaGVzXFwnJyk7XG4gICAgfVxuICAgIGNvbnN0IGJyYW5jaGVzID0gb3B0aW9ucy5icmFuY2hlcyA/PyAob3B0aW9ucy5icmFuY2ggPyBbb3B0aW9ucy5icmFuY2hdIDogW10pO1xuXG4gICAgcmV0dXJuIGNidWlsZC5Tb3VyY2UuZ2l0SHViKHtcbiAgICAgIG93bmVyOiB0aGlzLm93bmVyLFxuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgd2ViaG9vayxcbiAgICAgIGNsb25lRGVwdGg6IG9wdGlvbnMuY2xvbmVEZXB0aCxcbiAgICAgIHJlcG9ydEJ1aWxkU3RhdHVzOiB3ZWJob29rLFxuICAgICAgd2ViaG9va0ZpbHRlcnM6IHdlYmhvb2tcbiAgICAgICAgPyB0aGlzLmNyZWF0ZVdlYmhvb2tGaWx0ZXJzKGJyYW5jaGVzKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZXNjcmliZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5vd25lcn0vJHt0aGlzLnJlcG99YDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV2ViaG9va0ZpbHRlcnMoYnJhbmNoZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGJyYW5jaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIFR1cm4gdGhlIGxpc3Qgb2YgYnJhbmNoZXMgaW50byBhIHJlZ2V4XG4gICAgICBjb25zdCBicmFuY2hFeHByID0gYnJhbmNoZXMubWFwKGIgPT4gYF5yZWZzL2hlYWRzLyR7Yn0kYCkuam9pbignfCcpO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICBjYnVpbGQuRmlsdGVyR3JvdXAuaW5FdmVudE9mKGNidWlsZC5FdmVudEFjdGlvbi5QVVNIKVxuICAgICAgICAgIC5hbmRIZWFkUmVmSXMoYnJhbmNoRXhwciksXG4gICAgICAgIGNidWlsZC5GaWx0ZXJHcm91cC5pbkV2ZW50T2YoY2J1aWxkLkV2ZW50QWN0aW9uLlBVTExfUkVRVUVTVF9DUkVBVEVELCBjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX1VQREFURUQpXG4gICAgICAgICAgLmFuZEJhc2VSZWZJcyhicmFuY2hFeHByKSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICBjYnVpbGQuRmlsdGVyR3JvdXAuaW5FdmVudE9mKFxuICAgICAgICBjYnVpbGQuRXZlbnRBY3Rpb24uUFVTSCxcbiAgICAgICAgY2J1aWxkLkV2ZW50QWN0aW9uLlBVTExfUkVRVUVTVF9DUkVBVEVELFxuICAgICAgICBjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX1VQREFURUQsXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZUdpdEh1YlJlcG9Qcm9wcyBleHRlbmRzIEdpdEh1YlJlcG9Qcm9wcyB7XG4gIC8qKlxuICAgKiBTU0gga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgaWYgeW91IHdpc2ggdG8gYmUgYWJsZSB0byB1c2UgYWN0aW9ucyB0aGF0IHdyaXRlIHRvIHRoZSByZXBvXG4gICAqIHN1Y2ggYXMgZG9jcyBwdWJsaXNoaW5nIGFuZCBhdXRvbWF0aWMgYnVtcHMuXG4gICAqL1xuICBzc2hLZXlTZWNyZXQ6IEV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlcm5hbWUgdG8gdXNlIGZvciB0aGUgcHVibGlzaGVkIGNvbW1pdHNcbiAgICovXG4gIGNvbW1pdFVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbWFpbCBhZGRyZXNzIHRvIHVzZSBmb3IgdGhlIHB1Ymxpc2hlZCBjb21taXRzXG4gICAqL1xuICBjb21taXRFbWFpbDogc3RyaW5nO1xuXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0YWJsZUdpdEh1YlJlcG8gZXh0ZW5kcyBHaXRIdWJSZXBvIHtcblxuICBwdWJsaWMgc3RhdGljIGlzV3JpdGFibGVHaXRIdWJSZXBvKHJlcG86IElSZXBvKTogcmVwbyBpcyBXcml0YWJsZUdpdEh1YlJlcG8ge1xuICAgIGNvbnN0IG9iaiA9IHJlcG8gYXMgYW55O1xuXG4gICAgcmV0dXJuICdzc2hLZXlTZWNyZXQnIGluIG9ialxuICAgICAgJiYgJ2NvbW1pdEVtYWlsJyBpbiBvYmpcbiAgICAgICYmICdjb21taXRVc2VybmFtZScgaW4gb2JqO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHNzaEtleVNlY3JldDogRXh0ZXJuYWxTZWNyZXQ7XG4gIHB1YmxpYyByZWFkb25seSBjb21taXRFbWFpbDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWl0VXNlcm5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogV3JpdGFibGVHaXRIdWJSZXBvUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnNzaEtleVNlY3JldCA9IHByb3BzLnNzaEtleVNlY3JldDtcbiAgICB0aGlzLmNvbW1pdEVtYWlsID0gcHJvcHMuY29tbWl0RW1haWw7XG4gICAgdGhpcy5jb21taXRVc2VybmFtZSA9IHByb3BzLmNvbW1pdFVzZXJuYW1lO1xuICB9XG59XG4iXX0=
|
package/lib/repo.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
SecretValue, SecretsManagerSecretOptions,
|
|
3
3
|
aws_codebuild as cbuild, aws_codecommit as ccommit,
|
|
4
4
|
aws_codepipeline as cpipeline, aws_codepipeline_actions as cpipeline_actions,
|
|
5
|
-
} from '
|
|
5
|
+
} from 'aws-cdk-lib';
|
|
6
|
+
import { Construct } from 'constructs';
|
|
6
7
|
import { ExternalSecret } from './permissions';
|
|
7
8
|
|
|
8
9
|
export interface IRepo {
|
package/lib/shellable.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Duration, aws_cloudwatch as cloudwatch, aws_codebuild as cbuild, aws_codepipeline as cpipeline, aws_codepipeline_actions as cpipeline_actions, aws_iam as iam } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
2
3
|
import { BuildSpec } from './build-spec';
|
|
3
4
|
export interface ShellableOptions {
|
|
4
5
|
/**
|
package/lib/shellable.js
CHANGED
|
@@ -26,7 +26,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.WindowsPlatform = exports.LinuxPlatform = exports.ShellPlatform = exports.PlatformType = exports.Shellable = void 0;
|
|
27
27
|
const fs = __importStar(require("fs"));
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
|
-
const
|
|
29
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
30
|
+
const constructs_1 = require("constructs");
|
|
30
31
|
const build_spec_1 = require("./build-spec");
|
|
31
32
|
const util_1 = require("./util");
|
|
32
33
|
const S3_BUCKET_ENV = 'SCRIPT_S3_BUCKET';
|
|
@@ -44,7 +45,7 @@ const S3_KEY_ENV = 'SCRIPT_S3_KEY';
|
|
|
44
45
|
*
|
|
45
46
|
* Supports both Windows and Linux computes.
|
|
46
47
|
*/
|
|
47
|
-
class Shellable extends
|
|
48
|
+
class Shellable extends constructs_1.Construct {
|
|
48
49
|
constructor(parent, id, props) {
|
|
49
50
|
var _a, _b;
|
|
50
51
|
super(parent, id);
|
|
@@ -53,10 +54,10 @@ class Shellable extends monocdk_1.Construct {
|
|
|
53
54
|
if (!fs.existsSync(entrypoint)) {
|
|
54
55
|
throw new Error(`Cannot find test entrypoint: ${entrypoint}`);
|
|
55
56
|
}
|
|
56
|
-
const asset = new
|
|
57
|
+
const asset = new aws_cdk_lib_1.aws_s3_assets.Asset(this, 'ScriptDirectory', {
|
|
57
58
|
path: props.scriptDirectory,
|
|
58
59
|
});
|
|
59
|
-
this.outputArtifactName = `Artifact_${this.node.
|
|
60
|
+
this.outputArtifactName = `Artifact_${this.node.addr}`;
|
|
60
61
|
if (this.outputArtifactName.length > 100) {
|
|
61
62
|
throw new Error(`Whoops, too long: ${this.outputArtifactName}`);
|
|
62
63
|
}
|
|
@@ -65,57 +66,57 @@ class Shellable extends monocdk_1.Construct {
|
|
|
65
66
|
build: this.platform.buildCommands(props.entrypoint),
|
|
66
67
|
}).merge(props.buildSpec || build_spec_1.BuildSpec.empty());
|
|
67
68
|
const environmentSecretsAsSecretNames = this.convertEnvironmentSecretArnsToSecretNames(props.environmentSecrets);
|
|
68
|
-
this.project = new
|
|
69
|
+
this.project = new aws_cdk_lib_1.aws_codebuild.Project(this, 'Resource', {
|
|
69
70
|
projectName: props.buildProjectName,
|
|
70
71
|
source: props.source,
|
|
71
72
|
environment: {
|
|
72
73
|
buildImage: this.platform.buildImage,
|
|
73
|
-
computeType: props.computeType ||
|
|
74
|
+
computeType: props.computeType || aws_cdk_lib_1.aws_codebuild.ComputeType.MEDIUM,
|
|
74
75
|
privileged: props.privileged,
|
|
75
76
|
},
|
|
76
77
|
environmentVariables: {
|
|
77
78
|
[S3_BUCKET_ENV]: { value: asset.s3BucketName },
|
|
78
79
|
[S3_KEY_ENV]: { value: asset.s3ObjectKey },
|
|
79
80
|
...(0, util_1.renderEnvironmentVariables)(props.environment),
|
|
80
|
-
...(0, util_1.renderEnvironmentVariables)(environmentSecretsAsSecretNames,
|
|
81
|
-
...(0, util_1.renderEnvironmentVariables)(props.environmentParameters,
|
|
81
|
+
...(0, util_1.renderEnvironmentVariables)(environmentSecretsAsSecretNames, aws_cdk_lib_1.aws_codebuild.BuildEnvironmentVariableType.SECRETS_MANAGER),
|
|
82
|
+
...(0, util_1.renderEnvironmentVariables)(props.environmentParameters, aws_cdk_lib_1.aws_codebuild.BuildEnvironmentVariableType.PARAMETER_STORE),
|
|
82
83
|
},
|
|
83
84
|
timeout: props.timeout,
|
|
84
|
-
buildSpec:
|
|
85
|
+
buildSpec: aws_cdk_lib_1.aws_codebuild.BuildSpec.fromObject(this.buildSpec.render({ primaryArtifactName: this.outputArtifactName })),
|
|
85
86
|
});
|
|
86
87
|
this.role = this.project.role; // not undefined, as it's a new Project
|
|
87
88
|
asset.grantRead(this.role);
|
|
88
89
|
// Grant read access to secrets
|
|
89
90
|
Object.entries((_a = props.environmentSecrets) !== null && _a !== void 0 ? _a : {}).forEach(([name, secretArn]) => {
|
|
90
|
-
const secret =
|
|
91
|
+
const secret = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretCompleteArn(this, `${name}Secret`, secretArn);
|
|
91
92
|
secret.grantRead(this.role);
|
|
92
93
|
});
|
|
93
94
|
// Grant read access to parameters
|
|
94
95
|
Object.entries((_b = props.environmentParameters) !== null && _b !== void 0 ? _b : {}).forEach(([name, parameterName]) => {
|
|
95
|
-
const parameter =
|
|
96
|
+
const parameter = aws_cdk_lib_1.aws_ssm.StringParameter.fromStringParameterName(this, `${name}Parameter`, parameterName);
|
|
96
97
|
parameter.grantRead(this.role);
|
|
97
98
|
});
|
|
98
99
|
if (props.assumeRole) {
|
|
99
|
-
this.role.
|
|
100
|
+
this.role.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
100
101
|
actions: ['sts:AssumeRole'],
|
|
101
102
|
resources: [props.assumeRole.roleArn],
|
|
102
103
|
}));
|
|
103
104
|
}
|
|
104
|
-
this.alarm = new
|
|
105
|
-
metric: this.project.metricFailedBuilds({ period: props.alarmPeriod ||
|
|
105
|
+
this.alarm = new aws_cdk_lib_1.aws_cloudwatch.Alarm(this, 'Alarm', {
|
|
106
|
+
metric: this.project.metricFailedBuilds({ period: props.alarmPeriod || aws_cdk_lib_1.Duration.seconds(300) }),
|
|
106
107
|
threshold: props.alarmThreshold || 1,
|
|
107
|
-
comparisonOperator:
|
|
108
|
+
comparisonOperator: aws_cdk_lib_1.aws_cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
|
|
108
109
|
evaluationPeriods: props.alarmEvaluationPeriods || 1,
|
|
109
|
-
treatMissingData:
|
|
110
|
+
treatMissingData: aws_cdk_lib_1.aws_cloudwatch.TreatMissingData.IGNORE,
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
113
|
addToPipeline(stage, name, inputArtifact, runOrder) {
|
|
113
|
-
const codeBuildAction = new
|
|
114
|
+
const codeBuildAction = new aws_cdk_lib_1.aws_codepipeline_actions.CodeBuildAction({
|
|
114
115
|
actionName: name,
|
|
115
116
|
project: this.project,
|
|
116
117
|
runOrder,
|
|
117
118
|
input: inputArtifact,
|
|
118
|
-
outputs: [new
|
|
119
|
+
outputs: [new aws_cdk_lib_1.aws_codepipeline.Artifact(this.outputArtifactName)].concat(this.buildSpec.additionalArtifactNames.map(artifactName => new aws_cdk_lib_1.aws_codepipeline.Artifact(artifactName))),
|
|
119
120
|
});
|
|
120
121
|
stage.addAction(codeBuildAction);
|
|
121
122
|
return codeBuildAction;
|
|
@@ -131,7 +132,7 @@ class Shellable extends monocdk_1.Construct {
|
|
|
131
132
|
}
|
|
132
133
|
const out = {};
|
|
133
134
|
Object.entries(environmentSecrets !== null && environmentSecrets !== void 0 ? environmentSecrets : {}).forEach(([name, secretArn]) => {
|
|
134
|
-
const secret =
|
|
135
|
+
const secret = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretCompleteArn(this, `${name}SecretFromArn`, secretArn);
|
|
135
136
|
out[name] = secret.secretName;
|
|
136
137
|
});
|
|
137
138
|
return out;
|
|
@@ -158,14 +159,14 @@ class ShellPlatform {
|
|
|
158
159
|
*/
|
|
159
160
|
static get LinuxUbuntu() {
|
|
160
161
|
// Cannot be static member because of initialization order
|
|
161
|
-
return new LinuxPlatform(
|
|
162
|
+
return new LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_4_0);
|
|
162
163
|
}
|
|
163
164
|
/**
|
|
164
165
|
* Return a default Windows platform
|
|
165
166
|
*/
|
|
166
167
|
static get Windows() {
|
|
167
168
|
// Cannot be static member because of initialization order
|
|
168
|
-
return new WindowsPlatform(
|
|
169
|
+
return new WindowsPlatform(aws_cdk_lib_1.aws_codebuild.WindowsBuildImage.WIN_SERVER_CORE_2019_BASE);
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
exports.ShellPlatform = ShellPlatform;
|
|
@@ -259,4 +260,4 @@ class WindowsPlatform extends ShellPlatform {
|
|
|
259
260
|
}
|
|
260
261
|
}
|
|
261
262
|
exports.WindowsPlatform = WindowsPlatform;
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixxQ0FLaUI7QUFDakIsNkNBQXlDO0FBQ3pDLGlDQUFvRDtBQUVwRCxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUErTW5DOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsU0FBVSxTQUFRLG1CQUFTO0lBY3RDLFlBQVksTUFBaUIsRUFBRSxFQUFVLEVBQUUsS0FBcUI7O1FBQzlELEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFFNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSx1QkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDdEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlO1NBQzVCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN4QyxNQUFNLElBQUksS0FB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b20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3QsIER1cmF0aW9uLFxuICBhd3NfY2xvdWR3YXRjaCBhcyBjbG91ZHdhdGNoLCBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbiAgYXdzX2lhbSBhcyBpYW0sIGF3c19zM19hc3NldHMgYXMgYXNzZXRzLCBhd3Nfc2VjcmV0c21hbmFnZXIsIGF3c19zc20sXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgQnVpbGRTcGVjIH0gZnJvbSAnLi9idWlsZC1zcGVjJztcbmltcG9ydCB7IHJlbmRlckVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgUzNfQlVDS0VUX0VOViA9ICdTQ1JJUFRfUzNfQlVDS0VUJztcbmNvbnN0IFMzX0tFWV9FTlYgPSAnU0NSSVBUX1MzX0tFWSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFNvdXJjZSBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNvdXJjZVxuICAgKi9cbiAgc291cmNlPzogY2J1aWxkLklTb3VyY2U7XG5cbiAgLyoqXG4gICAqIFdoYXQgcGxhdGZvcm0gdG8gdXMgdG8gcnVuIHRoZSBzY3JpcHRzIG9uXG4gICAqXG4gICAqIEBkZWZhdWx0IFNoZWxsUGxhdGZvcm0uTGludXhVYnVudHVcbiAgICovXG4gIHBsYXRmb3JtPzogU2hlbGxQbGF0Zm9ybTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBzZWNyZXRzIG1hbmFnZXIgdmFsdWVzLiBUaGUgdmFsdWVzIG11c3QgYmUgY29tcGxldGUgU2VjcmV0IE1hbmFnZXIgQVJOcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50U2VjcmV0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIFNTTSBwYXJhbWV0ZXIgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnRQYXJhbWV0ZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGNvbXB1dGUgdHlwZSB0byB1c2UgZm9yIHRoZSBidWlsZCBjb250YWluZXIuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBub3QgYWxsIGNvbWJpbmF0aW9ucyBhcmUgYXZhaWxhYmxlLiBGb3IgZXhhbXBsZSxcbiAgICogV2luZG93cyBpbWFnZXMgY2Fubm90IGJlIHJ1biBvbiBDb21wdXRlVHlwZS5TbWFsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29tcHV0ZVR5cGUuTWVkaXVtXG4gICAqL1xuICBjb21wdXRlVHlwZT86IGNidWlsZC5Db21wdXRlVHlwZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGhvdyB0aGUgcHJvamVjdCBidWlsZHMgRG9ja2VyIGltYWdlcy4gU3BlY2lmeSB0cnVlIHRvIGVuYWJsZVxuICAgKiBydW5uaW5nIHRoZSBEb2NrZXIgZGFlbW9uIGluc2lkZSBhIERvY2tlciBjb250YWluZXIuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBzZXQgdG8gdHJ1ZSBvbmx5IGlmIHRoaXMgYnVpbGQgcHJvamVjdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgRG9ja2VyXG4gICAqIGltYWdlcywgYW5kIHRoZSBzcGVjaWZpZWQgYnVpbGQgZW52aXJvbm1lbnQgaW1hZ2UgaXMgbm90IG9uZSBwcm92aWRlZCBieVxuICAgKiBBV1MgQ29kZUJ1aWxkIHdpdGggRG9ja2VyIHN1cHBvcnQuIE90aGVyd2lzZSwgYWxsIGFzc29jaWF0ZWQgYnVpbGRzIHRoYXRcbiAgICogYXR0ZW1wdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBEb2NrZXIgZGFlbW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIGJ1aWxkIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgbmFtZSBpcyBnZW5lcmF0ZWQgYnkgQ2xvdWRGb3JtYXRpb24uXG4gICAqL1xuICBidWlsZFByb2plY3ROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgUmVnaW9uYWwgQVdTIFNUUyBlbmRwb2ludHMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZFxuICAgKiBvZiB0aGUgZ2xvYmFsIGVuZHBvaW50LiBTcGVjaWZ5IHRydWUgdG8gdXNlIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBydW4gdGhpcyBidWlsZCB1c2luZyBhIHNwZWNpZmljIElBTSByb2xlLiBUaGlzIGNhbiBiZSB1c2VkLFxuICAgKiBmb3IgZXhhbXBsZSwgdG8gZXhlY3V0ZSBpbiB0aGUgY29udGV4dCBvZiBhbm90aGVyIGFjY291bnQgKGUuZy4gdG8gcnVuXG4gICAqIHRlc3RzIGluIGlzb2xhdGlvbikuXG4gICAqL1xuICBhc3N1bWVSb2xlPzogQXNzdW1lUm9sZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBidWlsZHNwZWMgKGZvciBhcnRpZmFjdHMgZXRjLilcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBidWlsZHNwZWNcbiAgICovXG4gIGJ1aWxkU3BlYz86IEJ1aWxkU3BlYztcblxuICAvKipcbiAgICogVGhlIHRpbWVvdXQgb2YgdGhlIGJ1aWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgQ29kZUJ1aWxkIGRlZmF1bHQgKDEgaG91cilcbiAgICovXG4gIHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQWxhcm0gcGVyaW9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAzMDAgc2Vjb25kcyAoNSBtaW51dGVzKVxuICAgKi9cbiAgYWxhcm1QZXJpb2Q/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBhbGFybVRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogQWxhcm0gZXZhbHVhdGlvbiBwZXJpb2RzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBhbGFybUV2YWx1YXRpb25QZXJpb2RzPzogbnVtYmVyO1xuXG4gIHNlY29uZGFyeUFydGlmYWN0TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHVzZWQgdG8gY3JlYXRlIGEgU2hlbGxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlUHJvcHMgZXh0ZW5kcyBTaGVsbGFibGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aXRoIHRoZSBzY3JpcHRzLlxuICAgKlxuICAgKiBUaGUgd2hvbGUgZGlyZWN0b3J5IHdpbGwgYmUgdXBsb2FkZWQuXG4gICAqL1xuICBzY3JpcHREaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIGluaXRpYWwgc2NyaXB0IHRvIHN0YXJ0LCByZWxhdGl2ZSB0byBzY3JpcHREaXJlY3RvcnkuXG4gICAqL1xuICBlbnRyeXBvaW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzdW1lUm9sZSB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHJvbGUgdG8gYXNzdW1lLlxuICAgKi9cbiAgcm9sZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgYXNzdW1lZCByb2xlIHNlc3Npb24uXG4gICAqXG4gICAqIFVzZSAgdGhlICByb2xlICBzZXNzaW9uIG5hbWUgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSBzZXNzaW9uIHdoZW4gdGhlIHNhbWVcbiAgICogcm9sZSBpcyBhc3N1bWVkIGJ5IGRpZmZlcmVudCBwcmluY2lwYWxzIG9yIGZvciBkaWZmZXJlbnQgcmVhc29ucy4gSW5cbiAgICogY3Jvc3MtYWNjb3VudCBzY2VuYXJpb3MsIHRoZSByb2xlIHNlc3Npb24gbmFtZSBpcyB2aXNpYmxlIHRvLCBhbmQgY2FuIGJlXG4gICAqIGxvZ2dlZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHJvbGUuICBUaGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgYWxzb1xuICAgKiB1c2VkIGluIHRoZSBBUk4gb2YgdGhlIGFzc3VtZWQgcm9sZSBwcmluY2lwYWwuIFRoaXMgbWVhbnMgdGhhdCBzdWJzZXF1ZW50XG4gICAqIGNyb3NzLWFjY291bnQgQVBJIHJlcXVlc3RzIHVzaW5nIHRoZSB0ZW0tIHBvcmFyeSBzZWN1cml0eSBjcmVkZW50aWFscyB3aWxsXG4gICAqIGV4cG9zZSB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgdG8gdGhlIGV4dGVybmFsIGFjY291bnQgaW4gdGhlaXIgQ2xvdWRUcmFpbFxuICAgKiBsb2dzLlxuICAgKlxuICAgKiBUaGUgcmVnZXggdXNlZCB0byB2YWxpZGF0ZSB0aGlzIHBhcmFtZXRlciBpcyBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzXG4gICAqIGNvbnNpc3RpbmcgIG9mIHVwcGVyLSBhbmQgbG93ZXItY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIG5vXG4gICAqIHNwYWNlcy4gWW91IGNhbiBhbHNvIGluY2x1ZGUgdW5kZXJzY29yZXMgb3IgYW55IG9mIHRoZSBmb2xsb3dpbmdcbiAgICogY2hhcmFjdGVyczogPSwuQC1cbiAgICovXG4gIHNlc3Npb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgIHVuaXF1ZSAgaWRlbnRpZmllciAgdGhhdCAgaXMgIHVzZWQgYnkgdGhpcmQgcGFydGllcyB3aGVuIGFzc3VtaW5nIHJvbGVzXG4gICAqIGluIHRoZWlyIGN1c3RvbWVycycgYWNjb3VudHMuIEZvciBlYWNoICByb2xlICB0aGF0ICB0aGUgIHRoaXJkIHBhcnR5IGNhblxuICAgKiBhc3N1bWUsIHRoZXkgc2hvdWxkIGluc3RydWN0IHRoZWlyIGN1c3RvbWVycyB0byBlbnN1cmUgdGhlIHJvbGUncyB0cnVzdFxuICAgKiBwb2xpY3kgY2hlY2tzIGZvciB0aGUgZXh0ZXJuYWwgSUQgdGhhdCB0aGUgdGhpcmQgIHBhcnR5IGdlbmVyYXRlZC4gIEVhY2hcbiAgICogdGltZSB0aGUgdGhpcmQgcGFydHkgYXNzdW1lcyB0aGUgcm9sZSwgdGhleSBzaG91bGQgcGFzcyB0aGUgY3VzdG9tZXInc1xuICAgKiBleHRlcm5hbCBJRC4gVGhlIGV4dGVybmFsIElEIGlzIHVzZWZ1bCBpbiAgb3JkZXIgdG8gIGhlbHAgIHRoaXJkICBwYXJ0aWVzXG4gICAqIGJpbmQgYSByb2xlIHRvIHRoZSBjdXN0b21lciB3aG8gY3JlYXRlZCBpdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAqIGV4dGVybmFsIElELCBzZWUgSG93IHRvIFVzZSBhbiBFeHRlci0gbmFsICBJRCAgV2hlbiBHcmFudGluZyBBY2Nlc3MgdG8gWW91clxuICAgKiBBV1MgUmVzb3VyY2VzIHRvIGEgVGhpcmQgUGFydHkgaW4gdGhlIElBTSBVc2VyIEd1aWRlIC5cbiAgICpcbiAgICogVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGNvbnNpc3RpbmcgIG9mIHVwcGVyLSBhbmRcbiAgICogbG93ZXItY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIG5vIHNwYWNlcy4gWW91IGNhbiBhbHNvIGluY2x1ZGVcbiAgICogdW5kZXJzY29yZXMgb3IgIGFueSAgb2YgIHRoZSAgZm9sbG93aW5nIGNoYXJhY3RlcnM6ID0sLkA6Ly1cbiAgICovXG4gIGV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBwcm9maWUgbmFtZSBpcyBjb25maWd1cmVkLCBhbiBhc3N1bWVkIHJvbGUgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWRcbiAgICogaW4gdGhlIHNoYXJlZCBhd3MgY29uZmlndXJhdGlvbiBmaWxlICh+Ly5hd3MvY29uZmlnKS4gVGhpcyBpcyBpbiBjb250cmFyeSBvZiBzaW1wbHkgaW52b2tpbmdcbiAgICogYW4gYHN0cyBhc3N1bWUtcm9sZWAgY29tbWFuZCB0aGF0IGNyZWF0ZXMgYSBzZXNzaW9uIHdpdGggYSBmaXhlZCBleHBpcnkgZGF0ZS5cbiAgICpcbiAgICogVXNpbmcgYSBwcm9maWxlIHdpbGwgZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJLlxuICAgKiBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IGxvbmcgcnVubmluZyBzZXNzaW9ucyB0aGF0IG5lZWRzIHNlc3Npb25zIHRoYXQgYXJlIGxvbmdlciB0aGFuXG4gICAqIHRoZSBzZXNzaW9uIGR1cmF0aW9uIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGBzdHMgYXNzdW1lLXJvbGVgLlxuICAgKlxuICAgKiBUaGUgYXBwbGljYXRpb24gY29kZSB3aWxsIGFjY2VzcyB0byB0aGlzIHByb2ZpbGUgaW4gdGhlIGBBV1NfUFJPRklMRWAgZW52IHZhcmlhYmxlLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IGlmIGByZWZyZXNoYCBpcyBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NsaS9sYXRlc3QvdXNlcmd1aWRlL2NsaS1jb25maWd1cmUtZmlsZXMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbG9uZy1ydW5uaW5nLXByb2ZpbGUnXG4gICAqL1xuICBwcm9maWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGlzIGlmIHlvdSBoYXZlIGEgbG9uZyBydW5uaW5nIGV4ZWN1dGlvbiB0aGF0IG5lZWRzIGxvbmcgcnVubmluZyBzZXNzaW9ucy5cbiAgICogVGhpcyB3aWxsIGNyZWF0ZSBhIHByb2ZpbGUgYW5kIHVzZSBpdCB0byBkZWxlZ2F0ZSBjcmVkZW50aWFsIHJlZnJlc2hpbmcgdG8gdGhlIFNESy9DTElcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlZnJlc2g/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQSBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHJ1bnMgYXJiaXRyYXJ5IHNjcmlwdHMuXG4gKlxuICogVGhlIHNjcmlwdHMgdG8gYmUgcnVuIGFyZSBzcGVjaWZpZWQgYnkgc3VwcGx5aW5nIGEgZGlyZWN0b3J5LlxuICogQWxsIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIHVwbG9hZGVkLCB0aGVuIHRoZSBzY3JpcHQgZGVzaWduYXRlZFxuICogYXMgdGhlIGVudHJ5IHBvaW50IGlzIHN0YXJ0ZWQuXG4gKlxuICogVGhlIHNjcmlwdCBpcyBleGVjdXRlZCBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBidWlsZCBwcm9qZWN0J3NcbiAqIGlucHV0IGlzIHN0b3JlZC4gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2NyaXB0IGZpbGVzIGFyZSBzdG9yZWRcbiAqIGlzIGluIHRoZSAkU0NSSVBUX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqXG4gKiBTdXBwb3J0cyBib3RoIFdpbmRvd3MgYW5kIExpbnV4IGNvbXB1dGVzLlxuICovXG5leHBvcnQgY2xhc3MgU2hlbGxhYmxlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBDbG91ZFdhdGNoIGFsYXJtIHRoYXQgd2lsbCBiZSB0cmlnZ2VyZWQgaWYgdGhpcyBhY3Rpb24gZmFpbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWxhcm06IGNsb3Vkd2F0Y2guQWxhcm07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybTogU2hlbGxQbGF0Zm9ybTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZFNwZWM6IEJ1aWxkU3BlYztcblxuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEFydGlmYWN0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2hlbGxhYmxlUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIHRoaXMucGxhdGZvcm0gPSBwcm9wcy5wbGF0Zm9ybSB8fCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1O1xuXG4gICAgY29uc3QgZW50cnlwb2ludCA9IHBhdGguam9pbihwcm9wcy5zY3JpcHREaXJlY3RvcnksIHByb3BzLmVudHJ5cG9pbnQpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhlbnRyeXBvaW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0ZXN0IGVudHJ5cG9pbnQ6ICR7ZW50cnlwb2ludH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc3NldCA9IG5ldyBhc3NldHMuQXNzZXQodGhpcywgJ1NjcmlwdERpcmVjdG9yeScsIHtcbiAgICAgIHBhdGg6IHByb3BzLnNjcmlwdERpcmVjdG9yeSxcbiAgICB9KTtcblxuICAgIHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lID0gYEFydGlmYWN0XyR7dGhpcy5ub2RlLnVuaXF1ZUlkfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBwcmVCdWlsZDogdGhpcy5wbGF0Zm9ybS5wcmVidWlsZENvbW1hbmRzKHByb3BzLmFzc3VtZVJvbGUsIHByb3BzLnVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzKSxcbiAgICAgIGJ1aWxkOiB0aGlzLnBsYXRmb3JtLmJ1aWxkQ29tbWFuZHMocHJvcHMuZW50cnlwb2ludCksXG4gICAgfSkubWVyZ2UocHJvcHMuYnVpbGRTcGVjIHx8IEJ1aWxkU3BlYy5lbXB0eSgpKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMgPSB0aGlzLmNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY2J1aWxkLlByb2plY3QodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLmJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBzb3VyY2U6IHByb3BzLnNvdXJjZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IHRoaXMucGxhdGZvcm0uYnVpbGRJbWFnZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5NRURJVU0sXG4gICAgICAgIHByaXZpbGVnZWQ6IHByb3BzLnByaXZpbGVnZWQsXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgW1MzX0JVQ0tFVF9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM0J1Y2tldE5hbWUgfSxcbiAgICAgICAgW1MzX0tFWV9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM09iamVjdEtleSB9LFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudCksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUiksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUEFSQU1FVEVSX1NUT1JFKSxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgYnVpbGRTcGVjOiBjYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QodGhpcy5idWlsZFNwZWMucmVuZGVyKHsgcHJpbWFyeUFydGlmYWN0TmFtZTogdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgfSkpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gdGhpcy5wcm9qZWN0LnJvbGUhOyAvLyBub3QgdW5kZWZpbmVkLCBhcyBpdCdzIGEgbmV3IFByb2plY3RcbiAgICBhc3NldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHNlY3JldHNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldGAsIHNlY3JldEFybik7XG4gICAgICBzZWNyZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBwYXJhbWV0ZXJzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgcGFyYW1ldGVyTmFtZV0pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsIGAke25hbWV9UGFyYW1ldGVyYCwgcGFyYW1ldGVyTmFtZSk7XG4gICAgICBwYXJhbWV0ZXIuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuYXNzdW1lUm9sZSkge1xuICAgICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5hc3N1bWVSb2xlLnJvbGVBcm5dLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBtZXRyaWM6IHRoaXMucHJvamVjdC5tZXRyaWNGYWlsZWRCdWlsZHMoeyBwZXJpb2Q6IHByb3BzLmFsYXJtUGVyaW9kIHx8IER1cmF0aW9uLnNlY29uZHMoMzAwKSB9KSxcbiAgICAgIHRocmVzaG9sZDogcHJvcHMuYWxhcm1UaHJlc2hvbGQgfHwgMSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5hbGFybUV2YWx1YXRpb25QZXJpb2RzIHx8IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIG5hbWU6IHN0cmluZywgaW5wdXRBcnRpZmFjdDogY3BpcGVsaW5lLkFydGlmYWN0LCBydW5PcmRlcj86IG51bWJlcik6XG4gIGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbiB7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uID0gbmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBuYW1lLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgICAgcnVuT3JkZXIsXG4gICAgICBpbnB1dDogaW5wdXRBcnRpZmFjdCxcbiAgICAgIG91dHB1dHM6IFtuZXcgY3BpcGVsaW5lLkFydGlmYWN0KHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lKV0uY29uY2F0KFxuICAgICAgICB0aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcy5tYXAoYXJ0aWZhY3ROYW1lID0+IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoYXJ0aWZhY3ROYW1lKSkpLFxuICAgIH0pO1xuICAgIHN0YWdlLmFkZEFjdGlvbihjb2RlQnVpbGRBY3Rpb24pO1xuICAgIHJldHVybiBjb2RlQnVpbGRBY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRyYWN0IG9mIGBlbnZpcm9ubWVudFNlY3JldHNgIGlzIHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgU2VjcmV0IEFSTnM7XG4gICAqIGhvd2V2ZXIsIHRoZSBDb2RlQnVpbGQgY29uc3RydWN0IGV4cGVjdHMgc2VjcmV0IG5hbWVzIGFzIHRoZSBpbnB1dHMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogVGhpcyBtZXRob2QgY29udmVydHMgdGhlIGVudmlyb25tZW50IHNlY3JldHMgZnJvbSBBUk5zIHRvIG5hbWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgaWYgKCFlbnZpcm9ubWVudFNlY3JldHMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0RnJvbUFybmAsIHNlY3JldEFybik7XG4gICAgICBvdXRbbmFtZV0gPSBzZWNyZXQuc2VjcmV0TmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbi8qKlxuICogUGxhdGZvcm0gYXJjaGV0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIFBsYXRmb3JtVHlwZSB7XG4gIExpbnV4ID0gJ0xpbnV4JyxcbiAgV2luZG93cyA9ICdXaW5kb3dzJ1xufVxuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybSB0eXBlIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2hlbGxQbGF0Zm9ybSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFVidW50dSBMaW51eCBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgTGludXhVYnVudHUoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzRfMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBXaW5kb3dzIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBXaW5kb3dzKCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IFdpbmRvd3NQbGF0Zm9ybShjYnVpbGQuV2luZG93c0J1aWxkSW1hZ2UuV0lOX1NFUlZFUl9DT1JFXzIwMTlfQkFTRSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYnVpbGRJbWFnZTogY2J1aWxkLklCdWlsZEltYWdlKSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHBsYXRmb3JtVHlwZSgpOiBQbGF0Zm9ybVR5cGU7XG59XG5cbi8qKlxuICogQSBMaW51eCBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgTGludXhQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLkxpbnV4O1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCBfdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGlmIChhc3N1bWVSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fzc3VtZVJvbGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzOiBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9hd3MtZGVsaXZsaWIvaXNzdWVzLzU3Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFdvdWxkIGxvdmUgdG8gZG8gZG93bmxvYWRpbmcgaGVyZSBhbmQgZXhlY3V0aW5nIGluIHRoZSBuZXh0IHN0ZXAsXG4gICAgICAvLyBidXQgSSBkb24ndCBrbm93IGhvdyB0byBwcm9wYWdhdGUgdGhlIHZhbHVlIG9mICRURU1QRElSLlxuICAgICAgLy9cbiAgICAgIC8vIFB1bnRpbmcgZm9yIHNvbWVvbmUgd2hvIGtub3dzIFBvd2VyU2hlbGwgd2VsbCBlbm91Z2guXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ1NldC1WYXJpYWJsZSAtTmFtZSBURU1QRElSIC1WYWx1ZSAoTmV3LVRlbXBvcmFyeUZpbGUpLkRpcmVjdG9yeU5hbWUnLFxuICAgICAgYGF3cyBzMyBjcCBzMzovLyRlbnY6JHtTM19CVUNLRVRfRU5WfS8kZW52OiR7UzNfS0VZX0VOVn0gJFRFTVBESVJcXFxcc2NyaXB0cy56aXBgLFxuICAgICAgJ05ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICdFeHBhbmQtQXJjaGl2ZSAtUGF0aCAkVEVNUERJUi9zY3JpcHRzLnppcCAtRGVzdGluYXRpb25QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnJGVudjpTQ1JJUFRfRElSID0gXCIkVEVNUERJUlxcXFxzY3JpcHRkaXJcIicsXG4gICAgICBgJiAkVEVNUERJUlxcXFxzY3JpcHRkaXJcXFxcJHtlbnRyeXBvaW50fWAsXG4gICAgXTtcbiAgfVxufVxuIl19
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBK01uQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQXFCOztRQUM5RCxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO1FBRTVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksMkJBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3RELElBQUksRUFBRSxLQUFLLENBQUMsZUFBZTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDeEMs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cG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCwgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLCBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczNfYXNzZXRzIGFzIGFzc2V0cywgYXdzX3NlY3JldHNtYW5hZ2VyLCBhd3Nfc3NtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJ1aWxkU3BlYyB9IGZyb20gJy4vYnVpbGQtc3BlYyc7XG5pbXBvcnQgeyByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFMzX0JVQ0tFVF9FTlYgPSAnU0NSSVBUX1MzX0JVQ0tFVCc7XG5jb25zdCBTM19LRVlfRU5WID0gJ1NDUklQVF9TM19LRVknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IGNidWlsZC5JU291cmNlO1xuXG4gIC8qKlxuICAgKiBXaGF0IHBsYXRmb3JtIHRvIHVzIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICAgKlxuICAgKiBAZGVmYXVsdCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1XG4gICAqL1xuICBwbGF0Zm9ybT86IFNoZWxsUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc2VjcmV0cyBtYW5hZ2VyIHZhbHVlcy4gVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBsZXRlIFNlY3JldCBNYW5hZ2VyIEFSTnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBTU00gcGFyYW1ldGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wdXRlIHR5cGUgdG8gdXNlIGZvciB0aGUgYnVpbGQgY29udGFpbmVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgbm90IGFsbCBjb21iaW5hdGlvbnMgYXJlIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsXG4gICAqIFdpbmRvd3MgaW1hZ2VzIGNhbm5vdCBiZSBydW4gb24gQ29tcHV0ZVR5cGUuU21hbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IENvbXB1dGVUeXBlLk1lZGl1bVxuICAgKi9cbiAgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBidWlsZCBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5hbWUgaXMgZ2VuZXJhdGVkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWRcbiAgICogb2YgdGhlIGdsb2JhbCBlbmRwb2ludC4gU3BlY2lmeSB0cnVlIHRvIHVzZSBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gcnVuIHRoaXMgYnVpbGQgdXNpbmcgYSBzcGVjaWZpYyBJQU0gcm9sZS4gVGhpcyBjYW4gYmUgdXNlZCxcbiAgICogZm9yIGV4YW1wbGUsIHRvIGV4ZWN1dGUgaW4gdGhlIGNvbnRleHQgb2YgYW5vdGhlciBhY2NvdW50IChlLmcuIHRvIHJ1blxuICAgKiB0ZXN0cyBpbiBpc29sYXRpb24pLlxuICAgKi9cbiAgYXNzdW1lUm9sZT86IEFzc3VtZVJvbGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGRzcGVjIChmb3IgYXJ0aWZhY3RzIGV0Yy4pXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgYnVpbGRzcGVjXG4gICAqL1xuICBidWlsZFNwZWM/OiBCdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIENvZGVCdWlsZCBkZWZhdWx0ICgxIGhvdXIpXG4gICAqL1xuICB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzAwIHNlY29uZHMgKDUgbWludXRlcylcbiAgICovXG4gIGFsYXJtUGVyaW9kPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFsYXJtIGV2YWx1YXRpb24gcGVyaW9kcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1FdmFsdWF0aW9uUGVyaW9kcz86IG51bWJlcjtcblxuICBzZWNvbmRhcnlBcnRpZmFjdE5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB1c2VkIHRvIGNyZWF0ZSBhIFNoZWxsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZVByb3BzIGV4dGVuZHMgU2hlbGxhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2l0aCB0aGUgc2NyaXB0cy5cbiAgICpcbiAgICogVGhlIHdob2xlIGRpcmVjdG9yeSB3aWxsIGJlIHVwbG9hZGVkLlxuICAgKi9cbiAgc2NyaXB0RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBpbml0aWFsIHNjcmlwdCB0byBzdGFydCwgcmVsYXRpdmUgdG8gc2NyaXB0RGlyZWN0b3J5LlxuICAgKi9cbiAgZW50cnlwb2ludDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc3VtZVJvbGUge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSByb2xlIHRvIGFzc3VtZS5cbiAgICovXG4gIHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGFzc3VtZWQgcm9sZSBzZXNzaW9uLlxuICAgKlxuICAgKiBVc2UgIHRoZSAgcm9sZSAgc2Vzc2lvbiBuYW1lIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgc2Vzc2lvbiB3aGVuIHRoZSBzYW1lXG4gICAqIHJvbGUgaXMgYXNzdW1lZCBieSBkaWZmZXJlbnQgcHJpbmNpcGFscyBvciBmb3IgZGlmZmVyZW50IHJlYXNvbnMuIEluXG4gICAqIGNyb3NzLWFjY291bnQgc2NlbmFyaW9zLCB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgdmlzaWJsZSB0bywgYW5kIGNhbiBiZVxuICAgKiBsb2dnZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSByb2xlLiAgVGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIGFsc29cbiAgICogdXNlZCBpbiB0aGUgQVJOIG9mIHRoZSBhc3N1bWVkIHJvbGUgcHJpbmNpcGFsLiBUaGlzIG1lYW5zIHRoYXQgc3Vic2VxdWVudFxuICAgKiBjcm9zcy1hY2NvdW50IEFQSSByZXF1ZXN0cyB1c2luZyB0aGUgdGVtLSBwb3Jhcnkgc2VjdXJpdHkgY3JlZGVudGlhbHMgd2lsbFxuICAgKiBleHBvc2UgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIHRvIHRoZSBleHRlcm5hbCBhY2NvdW50IGluIHRoZWlyIENsb3VkVHJhaWxcbiAgICogbG9ncy5cbiAgICpcbiAgICogVGhlIHJlZ2V4IHVzZWQgdG8gdmFsaWRhdGUgdGhpcyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgb2YgY2hhcmFjdGVyc1xuICAgKiBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBub1xuICAgKiBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlIHVuZGVyc2NvcmVzIG9yIGFueSBvZiB0aGUgZm9sbG93aW5nXG4gICAqIGNoYXJhY3RlcnM6ID0sLkAtXG4gICAqL1xuICBzZXNzaW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBICB1bmlxdWUgIGlkZW50aWZpZXIgIHRoYXQgIGlzICB1c2VkIGJ5IHRoaXJkIHBhcnRpZXMgd2hlbiBhc3N1bWluZyByb2xlc1xuICAgKiBpbiB0aGVpciBjdXN0b21lcnMnIGFjY291bnRzLiBGb3IgZWFjaCAgcm9sZSAgdGhhdCAgdGhlICB0aGlyZCBwYXJ0eSBjYW5cbiAgICogYXNzdW1lLCB0aGV5IHNob3VsZCBpbnN0cnVjdCB0aGVpciBjdXN0b21lcnMgdG8gZW5zdXJlIHRoZSByb2xlJ3MgdHJ1c3RcbiAgICogcG9saWN5IGNoZWNrcyBmb3IgdGhlIGV4dGVybmFsIElEIHRoYXQgdGhlIHRoaXJkICBwYXJ0eSBnZW5lcmF0ZWQuICBFYWNoXG4gICAqIHRpbWUgdGhlIHRoaXJkIHBhcnR5IGFzc3VtZXMgdGhlIHJvbGUsIHRoZXkgc2hvdWxkIHBhc3MgdGhlIGN1c3RvbWVyJ3NcbiAgICogZXh0ZXJuYWwgSUQuIFRoZSBleHRlcm5hbCBJRCBpcyB1c2VmdWwgaW4gIG9yZGVyIHRvICBoZWxwICB0aGlyZCAgcGFydGllc1xuICAgKiBiaW5kIGEgcm9sZSB0byB0aGUgY3VzdG9tZXIgd2hvIGNyZWF0ZWQgaXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgKiBleHRlcm5hbCBJRCwgc2VlIEhvdyB0byBVc2UgYW4gRXh0ZXItIG5hbCAgSUQgIFdoZW4gR3JhbnRpbmcgQWNjZXNzIHRvIFlvdXJcbiAgICogQVdTIFJlc291cmNlcyB0byBhIFRoaXJkIFBhcnR5IGluIHRoZSBJQU0gVXNlciBHdWlkZSAuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kXG4gICAqIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBubyBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlXG4gICAqIHVuZGVyc2NvcmVzIG9yICBhbnkgIG9mICB0aGUgIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiA9LC5AOi8tXG4gICAqL1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgcHJvZmllIG5hbWUgaXMgY29uZmlndXJlZCwgYW4gYXNzdW1lZCByb2xlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkXG4gICAqIGluIHRoZSBzaGFyZWQgYXdzIGNvbmZpZ3VyYXRpb24gZmlsZSAofi8uYXdzL2NvbmZpZykuIFRoaXMgaXMgaW4gY29udHJhcnkgb2Ygc2ltcGx5IGludm9raW5nXG4gICAqIGFuIGBzdHMgYXNzdW1lLXJvbGVgIGNvbW1hbmQgdGhhdCBjcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZml4ZWQgZXhwaXJ5IGRhdGUuXG4gICAqXG4gICAqIFVzaW5nIGEgcHJvZmlsZSB3aWxsIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSS5cbiAgICogVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMgdGhhdCBuZWVkcyBzZXNzaW9ucyB0aGF0IGFyZSBsb25nZXIgdGhhblxuICAgKiB0aGUgc2Vzc2lvbiBkdXJhdGlvbiB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBgc3RzIGFzc3VtZS1yb2xlYC5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCBhY2Nlc3MgdG8gdGhpcyBwcm9maWxlIGluIHRoZSBgQVdTX1BST0ZJTEVgIGVudiB2YXJpYWJsZS5cbiAgICpcbiAgICogT25seSByZWxldmFudCBpZiBgcmVmcmVzaGAgaXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLWZpbGVzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgJ2xvbmctcnVubmluZy1wcm9maWxlJ1xuICAgKi9cbiAgcHJvZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhpcyBpZiB5b3UgaGF2ZSBhIGxvbmcgcnVubmluZyBleGVjdXRpb24gdGhhdCBuZWVkcyBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMuXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBwcm9maWxlIGFuZCB1c2UgaXQgdG8gZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWZyZXNoPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEEgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCBydW5zIGFyYml0cmFyeSBzY3JpcHRzLlxuICpcbiAqIFRoZSBzY3JpcHRzIHRvIGJlIHJ1biBhcmUgc3BlY2lmaWVkIGJ5IHN1cHBseWluZyBhIGRpcmVjdG9yeS5cbiAqIEFsbCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IGFyZSB1cGxvYWRlZCwgdGhlbiB0aGUgc2NyaXB0IGRlc2lnbmF0ZWRcbiAqIGFzIHRoZSBlbnRyeSBwb2ludCBpcyBzdGFydGVkLlxuICpcbiAqIFRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYnVpbGQgcHJvamVjdCdzXG4gKiBpbnB1dCBpcyBzdG9yZWQuIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNjcmlwdCBmaWxlcyBhcmUgc3RvcmVkXG4gKiBpcyBpbiB0aGUgJFNDUklQVF9ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKlxuICogU3VwcG9ydHMgYm90aCBXaW5kb3dzIGFuZCBMaW51eCBjb21wdXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoZWxsYWJsZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogQ2xvdWRXYXRjaCBhbGFybSB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIGlmIHRoaXMgYWN0aW9uIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm06IFNoZWxsUGxhdGZvcm07XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjOiBCdWlsZFNwZWM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRBcnRpZmFjdE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICB0aGlzLnBsYXRmb3JtID0gcHJvcHMucGxhdGZvcm0gfHwgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBwYXRoLmpvaW4ocHJvcHMuc2NyaXB0RGlyZWN0b3J5LCBwcm9wcy5lbnRyeXBvaW50KTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlwb2ludCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGVzdCBlbnRyeXBvaW50OiAke2VudHJ5cG9pbnR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXQgPSBuZXcgYXNzZXRzLkFzc2V0KHRoaXMsICdTY3JpcHREaXJlY3RvcnknLCB7XG4gICAgICBwYXRoOiBwcm9wcy5zY3JpcHREaXJlY3RvcnksXG4gICAgfSk7XG5cbiAgICB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSA9IGBBcnRpZmFjdF8ke3RoaXMubm9kZS5hZGRyfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBwcmVCdWlsZDogdGhpcy5wbGF0Zm9ybS5wcmVidWlsZENvbW1hbmRzKHByb3BzLmFzc3VtZVJvbGUsIHByb3BzLnVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzKSxcbiAgICAgIGJ1aWxkOiB0aGlzLnBsYXRmb3JtLmJ1aWxkQ29tbWFuZHMocHJvcHMuZW50cnlwb2ludCksXG4gICAgfSkubWVyZ2UocHJvcHMuYnVpbGRTcGVjIHx8IEJ1aWxkU3BlYy5lbXB0eSgpKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMgPSB0aGlzLmNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY2J1aWxkLlByb2plY3QodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLmJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBzb3VyY2U6IHByb3BzLnNvdXJjZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IHRoaXMucGxhdGZvcm0uYnVpbGRJbWFnZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5NRURJVU0sXG4gICAgICAgIHByaXZpbGVnZWQ6IHByb3BzLnByaXZpbGVnZWQsXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgW1MzX0JVQ0tFVF9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM0J1Y2tldE5hbWUgfSxcbiAgICAgICAgW1MzX0tFWV9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM09iamVjdEtleSB9LFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudCksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUiksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUEFSQU1FVEVSX1NUT1JFKSxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgYnVpbGRTcGVjOiBjYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QodGhpcy5idWlsZFNwZWMucmVuZGVyKHsgcHJpbWFyeUFydGlmYWN0TmFtZTogdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgfSkpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gdGhpcy5wcm9qZWN0LnJvbGUhOyAvLyBub3QgdW5kZWZpbmVkLCBhcyBpdCdzIGEgbmV3IFByb2plY3RcbiAgICBhc3NldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHNlY3JldHNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldGAsIHNlY3JldEFybik7XG4gICAgICBzZWNyZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBwYXJhbWV0ZXJzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgcGFyYW1ldGVyTmFtZV0pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsIGAke25hbWV9UGFyYW1ldGVyYCwgcGFyYW1ldGVyTmFtZSk7XG4gICAgICBwYXJhbWV0ZXIuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuYXNzdW1lUm9sZSkge1xuICAgICAgdGhpcy5yb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5hc3N1bWVSb2xlLnJvbGVBcm5dLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBtZXRyaWM6IHRoaXMucHJvamVjdC5tZXRyaWNGYWlsZWRCdWlsZHMoeyBwZXJpb2Q6IHByb3BzLmFsYXJtUGVyaW9kIHx8IER1cmF0aW9uLnNlY29uZHMoMzAwKSB9KSxcbiAgICAgIHRocmVzaG9sZDogcHJvcHMuYWxhcm1UaHJlc2hvbGQgfHwgMSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5hbGFybUV2YWx1YXRpb25QZXJpb2RzIHx8IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIG5hbWU6IHN0cmluZywgaW5wdXRBcnRpZmFjdDogY3BpcGVsaW5lLkFydGlmYWN0LCBydW5PcmRlcj86IG51bWJlcik6XG4gIGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbiB7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uID0gbmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBuYW1lLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgICAgcnVuT3JkZXIsXG4gICAgICBpbnB1dDogaW5wdXRBcnRpZmFjdCxcbiAgICAgIG91dHB1dHM6IFtuZXcgY3BpcGVsaW5lLkFydGlmYWN0KHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lKV0uY29uY2F0KFxuICAgICAgICB0aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcy5tYXAoYXJ0aWZhY3ROYW1lID0+IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoYXJ0aWZhY3ROYW1lKSkpLFxuICAgIH0pO1xuICAgIHN0YWdlLmFkZEFjdGlvbihjb2RlQnVpbGRBY3Rpb24pO1xuICAgIHJldHVybiBjb2RlQnVpbGRBY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRyYWN0IG9mIGBlbnZpcm9ubWVudFNlY3JldHNgIGlzIHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgU2VjcmV0IEFSTnM7XG4gICAqIGhvd2V2ZXIsIHRoZSBDb2RlQnVpbGQgY29uc3RydWN0IGV4cGVjdHMgc2VjcmV0IG5hbWVzIGFzIHRoZSBpbnB1dHMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogVGhpcyBtZXRob2QgY29udmVydHMgdGhlIGVudmlyb25tZW50IHNlY3JldHMgZnJvbSBBUk5zIHRvIG5hbWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgaWYgKCFlbnZpcm9ubWVudFNlY3JldHMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0RnJvbUFybmAsIHNlY3JldEFybik7XG4gICAgICBvdXRbbmFtZV0gPSBzZWNyZXQuc2VjcmV0TmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbi8qKlxuICogUGxhdGZvcm0gYXJjaGV0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIFBsYXRmb3JtVHlwZSB7XG4gIExpbnV4ID0gJ0xpbnV4JyxcbiAgV2luZG93cyA9ICdXaW5kb3dzJ1xufVxuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybSB0eXBlIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2hlbGxQbGF0Zm9ybSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFVidW50dSBMaW51eCBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgTGludXhVYnVudHUoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzRfMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBXaW5kb3dzIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBXaW5kb3dzKCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IFdpbmRvd3NQbGF0Zm9ybShjYnVpbGQuV2luZG93c0J1aWxkSW1hZ2UuV0lOX1NFUlZFUl9DT1JFXzIwMTlfQkFTRSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYnVpbGRJbWFnZTogY2J1aWxkLklCdWlsZEltYWdlKSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHBsYXRmb3JtVHlwZSgpOiBQbGF0Zm9ybVR5cGU7XG59XG5cbi8qKlxuICogQSBMaW51eCBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgTGludXhQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLkxpbnV4O1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCBfdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGlmIChhc3N1bWVSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fzc3VtZVJvbGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzOiBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9hd3MtZGVsaXZsaWIvaXNzdWVzLzU3Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFdvdWxkIGxvdmUgdG8gZG8gZG93bmxvYWRpbmcgaGVyZSBhbmQgZXhlY3V0aW5nIGluIHRoZSBuZXh0IHN0ZXAsXG4gICAgICAvLyBidXQgSSBkb24ndCBrbm93IGhvdyB0byBwcm9wYWdhdGUgdGhlIHZhbHVlIG9mICRURU1QRElSLlxuICAgICAgLy9cbiAgICAgIC8vIFB1bnRpbmcgZm9yIHNvbWVvbmUgd2hvIGtub3dzIFBvd2VyU2hlbGwgd2VsbCBlbm91Z2guXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ1NldC1WYXJpYWJsZSAtTmFtZSBURU1QRElSIC1WYWx1ZSAoTmV3LVRlbXBvcmFyeUZpbGUpLkRpcmVjdG9yeU5hbWUnLFxuICAgICAgYGF3cyBzMyBjcCBzMzovLyRlbnY6JHtTM19CVUNLRVRfRU5WfS8kZW52OiR7UzNfS0VZX0VOVn0gJFRFTVBESVJcXFxcc2NyaXB0cy56aXBgLFxuICAgICAgJ05ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICdFeHBhbmQtQXJjaGl2ZSAtUGF0aCAkVEVNUERJUi9zY3JpcHRzLnppcCAtRGVzdGluYXRpb25QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnJGVudjpTQ1JJUFRfRElSID0gXCIkVEVNUERJUlxcXFxzY3JpcHRkaXJcIicsXG4gICAgICBgJiAkVEVNUERJUlxcXFxzY3JpcHRkaXJcXFxcJHtlbnRyeXBvaW50fWAsXG4gICAgXTtcbiAgfVxufVxuIl19
|
package/lib/shellable.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import {
|
|
4
|
-
|
|
4
|
+
Duration,
|
|
5
5
|
aws_cloudwatch as cloudwatch, aws_codebuild as cbuild,
|
|
6
6
|
aws_codepipeline as cpipeline, aws_codepipeline_actions as cpipeline_actions,
|
|
7
7
|
aws_iam as iam, aws_s3_assets as assets, aws_secretsmanager, aws_ssm,
|
|
8
|
-
} from '
|
|
8
|
+
} from 'aws-cdk-lib';
|
|
9
|
+
import { Construct } from 'constructs';
|
|
9
10
|
import { BuildSpec } from './build-spec';
|
|
10
11
|
import { renderEnvironmentVariables } from './util';
|
|
11
12
|
|
|
@@ -258,7 +259,7 @@ export class Shellable extends Construct {
|
|
|
258
259
|
path: props.scriptDirectory,
|
|
259
260
|
});
|
|
260
261
|
|
|
261
|
-
this.outputArtifactName = `Artifact_${this.node.
|
|
262
|
+
this.outputArtifactName = `Artifact_${this.node.addr}`;
|
|
262
263
|
if (this.outputArtifactName.length > 100) {
|
|
263
264
|
throw new Error(`Whoops, too long: ${this.outputArtifactName}`);
|
|
264
265
|
}
|
|
@@ -305,7 +306,7 @@ export class Shellable extends Construct {
|
|
|
305
306
|
});
|
|
306
307
|
|
|
307
308
|
if (props.assumeRole) {
|
|
308
|
-
this.role.
|
|
309
|
+
this.role.addToPrincipalPolicy(new iam.PolicyStatement({
|
|
309
310
|
actions: ['sts:AssumeRole'],
|
|
310
311
|
resources: [props.assumeRole.roleArn],
|
|
311
312
|
}));
|
package/lib/signing-key.d.ts
CHANGED