@mavogel/awscdk-rootmail 0.0.336 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.codegraph/.gitignore +5 -0
  2. package/.jsii +460 -8
  3. package/CLAUDE.md +1 -1
  4. package/README.md +6 -1
  5. package/docs/plans/2026-08-09-bump-mvc-projen-cdk-nag-v3.md +199 -0
  6. package/integ-tests/integ.rootmail-custom-santa.ts +2 -2
  7. package/integ-tests/integ.rootmail-filter-subject.ts +2 -2
  8. package/integ-tests/integ.rootmail.ts +2 -2
  9. package/lib/hosted-zone-dkim-propagation.js +46 -15
  10. package/lib/hosted-zone-dkim-verification-records.js +47 -12
  11. package/lib/rootmail-autowire-dns.js +47 -15
  12. package/lib/rootmail.js +13 -16
  13. package/lib/ses-receipt-ruleset-activation.js +53 -15
  14. package/lib/ses-receive.js +12 -12
  15. package/node_modules/cdk-nag/.jsii +6331 -2945
  16. package/node_modules/cdk-nag/.jsii.tabl.json +1 -1
  17. package/node_modules/cdk-nag/API.md +490 -1778
  18. package/node_modules/cdk-nag/MIGRATION.md +239 -0
  19. package/node_modules/cdk-nag/README.md +88 -513
  20. package/node_modules/cdk-nag/lib/index.d.ts +0 -3
  21. package/node_modules/cdk-nag/lib/index.js +1 -4
  22. package/node_modules/cdk-nag/lib/nag-logger.d.ts +5 -145
  23. package/node_modules/cdk-nag/lib/nag-logger.js +4 -199
  24. package/node_modules/cdk-nag/lib/nag-pack.d.ts +57 -44
  25. package/node_modules/cdk-nag/lib/nag-pack.js +140 -114
  26. package/node_modules/cdk-nag/lib/nag-rules.d.ts +0 -2
  27. package/node_modules/cdk-nag/lib/nag-rules.js +3 -5
  28. package/node_modules/cdk-nag/lib/packs/aws-solutions.d.ts +4 -15
  29. package/node_modules/cdk-nag/lib/packs/aws-solutions.js +21 -40
  30. package/node_modules/cdk-nag/lib/packs/hipaa-security.d.ts +4 -2
  31. package/node_modules/cdk-nag/lib/packs/hipaa-security.js +31 -37
  32. package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.d.ts +4 -2
  33. package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.js +29 -35
  34. package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.d.ts +4 -2
  35. package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.js +30 -36
  36. package/node_modules/cdk-nag/lib/packs/pci-dss-321.d.ts +4 -2
  37. package/node_modules/cdk-nag/lib/packs/pci-dss-321.js +29 -35
  38. package/node_modules/cdk-nag/lib/packs/serverless.d.ts +4 -2
  39. package/node_modules/cdk-nag/lib/packs/serverless.js +14 -20
  40. package/node_modules/cdk-nag/lib/rules/ec2/EC2IMDSv2Enabled.js +5 -1
  41. package/node_modules/cdk-nag/package.json +5 -5
  42. package/package.json +16 -17
  43. package/node_modules/cdk-nag/lib/ignore-suppression-conditions.d.ts +0 -59
  44. package/node_modules/cdk-nag/lib/ignore-suppression-conditions.js +0 -97
  45. package/node_modules/cdk-nag/lib/models/nag-suppression.d.ts +0 -30
  46. package/node_modules/cdk-nag/lib/models/nag-suppression.js +0 -7
  47. package/node_modules/cdk-nag/lib/nag-suppressions.d.ts +0 -30
  48. package/node_modules/cdk-nag/lib/nag-suppressions.js +0 -96
  49. package/node_modules/cdk-nag/lib/utils/nag-suppression-helper.d.ts +0 -20
  50. package/node_modules/cdk-nag/lib/utils/nag-suppression-helper.js +0 -119
@@ -1,10 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.RootmailAutowireDns = void 0;
4
37
  const aws_cdk_lib_1 = require("aws-cdk-lib");
5
38
  const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
6
- const cr = require("aws-cdk-lib/custom-resources");
7
- const cdk_nag_1 = require("cdk-nag");
39
+ const cr = __importStar(require("aws-cdk-lib/custom-resources"));
8
40
  const constructs_1 = require("constructs");
9
41
  const rootmail_autowire_dns_on_event_handler_1 = require("./rootmail-autowire-dns.on-event-handler");
10
42
  class RootmailAutowireDns extends constructs_1.Construct {
@@ -46,10 +78,11 @@ class RootmailAutowireDnsProvider extends constructs_1.Construct {
46
78
  || new RootmailAutowireDnsProvider(stack, id, props);
47
79
  return x.provider.serviceToken;
48
80
  }
81
+ provider;
49
82
  constructor(scope, id, props) {
50
83
  super(scope, id);
51
84
  const isCompleteHandlerFunc = new aws_lambda_nodejs_1.NodejsFunction(this, 'is-complete-handler', {
52
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_18_X,
85
+ runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_24_X,
53
86
  timeout: aws_cdk_lib_1.Duration.seconds(120),
54
87
  logRetention: 1,
55
88
  });
@@ -63,7 +96,7 @@ class RootmailAutowireDnsProvider extends constructs_1.Construct {
63
96
  }));
64
97
  props.autoWireR53ChangeInfoIdParameter.grantRead(isCompleteHandlerFunc);
65
98
  const onEventHandlerFunc = new aws_lambda_nodejs_1.NodejsFunction(this, 'on-event-handler', {
66
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_18_X,
99
+ runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_24_X,
67
100
  timeout: aws_cdk_lib_1.Duration.seconds(160), // 2m40s
68
101
  logRetention: 1,
69
102
  environment: {},
@@ -109,17 +142,16 @@ class RootmailAutowireDnsProvider extends constructs_1.Construct {
109
142
  onEventHandler: onEventHandlerFunc,
110
143
  logRetention: 1,
111
144
  });
112
- cdk_nag_1.NagSuppressions.addResourceSuppressions([
113
- this.provider,
114
- this.provider.onEventHandler,
115
- this.provider.onEventHandler.role,
116
- this.provider.isCompleteHandler,
117
- this.provider.isCompleteHandler.role,
118
- ], [
119
- { id: 'AwsSolutions-IAM4', reason: 'no service role restriction needed' },
120
- { id: 'AwsSolutions-IAM5', reason: 'wildcards are ok for the provider as the function has restrictions' },
121
- ], true);
145
+ // Granular findings only. Portable IDs only: Resource::* is constant across any deployment,
146
+ // Resource::<logical-id> findings are not. AwsSolutions-IAM4[Policy::...] cannot be
147
+ // acknowledged at all right now - aws-cdk-lib's Validations.acknowledge() rejects any id with
148
+ // more than one '::', and AWS managed policy ARNs always contain one (cdklabs/cdk-nag#2359,
149
+ // #2351, both open upstream). See docs/plans/2026-08-09-bump-mvc-projen-cdk-nag-v3.md Task 3.
150
+ const iam5ResourceStar = 'AwsSolutions-IAM5[Resource::*]';
151
+ const reasonIam5 = 'wildcards are ok for the provider as the function has restrictions';
152
+ aws_cdk_lib_1.Validations.of(this.provider.onEventHandler).acknowledge({ id: iam5ResourceStar, reason: reasonIam5 });
153
+ aws_cdk_lib_1.Validations.of(this.provider.isCompleteHandler).acknowledge({ id: iam5ResourceStar, reason: reasonIam5 });
122
154
  }
123
155
  ;
124
156
  }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdG1haWwtYXV0b3dpcmUtZG5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jvb3RtYWlsLWF1dG93aXJlLWRucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FTcUI7QUFDckIscUVBQStEO0FBQy9ELG1EQUFtRDtBQUNuRCxxQ0FBMEM7QUFDMUMsMkNBQTZDO0FBQzdDLHFHQU1rRDtBQWtDbEQsTUFBYSxtQkFBb0IsU0FBUSxzQkFBUztJQUVoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7UUFDM0MsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLElBQUksU0FBUyxDQUFDO1FBQ3ZFLE1BQU0sb0NBQW9DLEdBQUcsdUNBQXVDLENBQUM7UUFHckYsMkRBQTJEO1FBQzNELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUU7WUFDdkYsYUFBYSxFQUFFLG9DQUFvQztZQUNuRCxXQUFXLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUM7UUFFSCxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNuQyxZQUFZLEVBQUUsMkJBQTJCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtnQkFDMUQsZ0NBQWdDLEVBQUUsdUJBQXVCO2dCQUN6RCxHQUFHLEtBQUs7YUFDVCxDQUFDO1lBQ0YsWUFBWSxFQUFFLHFDQUFxQztZQUNuRCxVQUFVLEVBQUU7Z0JBQ1YsQ0FBQyxvREFBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQzNCLENBQUMsd0RBQWUsQ0FBQyxFQUFFLFNBQVM7Z0JBQzVCLENBQUMsbUVBQTBCLENBQUMsRUFBRSxxQkFBcUI7Z0JB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QW1CLEVBQUUsTUFBTSxFQUFFLG9FQUFvRSxFQUFFO1NBQzFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0lBQUEsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXJuLFxuICBBcm5Gb3JtYXQsXG4gIEN1c3RvbVJlc291cmNlLFxuICBEdXJhdGlvbixcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3Nfc3NtIGFzIHNzbSxcbiAgU3RhY2ssXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBOYWdTdXBwcmVzc2lvbnMgfSBmcm9tICdjZGstbmFnJztcbmltcG9ydCB7IENvbnN0cnVjdCwgTm9kZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgUFJPUF9ET01BSU4sXG4gIFBST1BfU1VCX0RPTUFJTixcbiAgUFJPUF9IT1NURURfWk9ORV9QQVJBTUVURVJfTkFNRSxcbiAgUFJPUF9SNTNfQ0hBTkdFSU5GT19JRF9QQVJBTUVURVJfTkFNRSxcbiAgUFJPUF9QQVJFTlRfSE9TVEVEX1pPTkVfSUQsXG59IGZyb20gJy4vcm9vdG1haWwtYXV0b3dpcmUtZG5zLm9uLWV2ZW50LWhhbmRsZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RtYWlsQXV0b3dpcmVEbnNQcm9wcyB7XG4gIC8qKlxuICAgKiBEb21haW4gdXNlZCBmb3Igcm9vdCBtYWlsIGZlYXR1cmUuXG4gICAqL1xuICByZWFkb25seSBkb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogU3ViZG9tYWluIHVzZWQgZm9yIHJvb3QgbWFpbCBmZWF0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXdzJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3ViZG9tYWluPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdGVkIHpvbmUgSUQgb2YgdGhlIGRvbWFpbiB0aGF0IGlzIHJlZ2lzdGVyZWQgUm91dGU1MyBBTkQgaW4gdGhlIHNhbWUgQVdTIGFjY291bnRcbiAgICogdG8gZW5hYmxlIGF1dG93aXJpbmcgb2YgdGhlIEROUyByZWNvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHdpcmVETlNUb0hvc3RlZFpvbmVJRD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEhvc3RlZCBab25lIFNTTSBQYXJhbWV0ZXIgTmFtZSBmb3IgdGhlIE5TIHJlY29yZHMuXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lU1NNUGFyYW1ldGVyOiBzc20uU3RyaW5nTGlzdFBhcmFtZXRlcjtcblxuICAvKipcbiAgICogVGhlIHRvdGFsIHRpbWUgdG8gd2FpdCBmb3IgdGhlIEROUyByZWNvcmRzIHRvIGJlIGF2YWlsYWJsZS93aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsVGltZVRvV2lyZUROUzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBSb290bWFpbEF1dG93aXJlRG5zIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm9vdG1haWxBdXRvd2lyZURuc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHN1YmRvbWFpbiA9IHByb3BzLnN1YmRvbWFpbiA/PyAnYXdzJztcbiAgICBjb25zdCB3aXJlRE5TVG9Ib3N0ZWRab25lSUQgPSBwcm9wcy53aXJlRE5TVG9Ib3N0ZWRab25lSUQgPz8gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyTmFtZSA9ICcvcm9vdG1haWwvYXV0b193aXJlX3I1M19jaGFuZ2VpbmZvX2lkJztcblxuXG4gICAgLy8gVE9ETzogY3JlYXRlIGl0IGluIHRoZSBmdW5jdGlvbiB0byBhdm9pZCB0aGUgZHVtbXkgdmFsdWVcbiAgICBjb25zdCBhdXRvV2lyZVI1M0NoYW5nZUluZm9JZCA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdBdXRvV2lyZVI1M0NoYW5nZUluZm9JZCcsIHtcbiAgICAgIHBhcmFtZXRlck5hbWU6IGF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyTmFtZSxcbiAgICAgIHN0cmluZ1ZhbHVlOiAnZHVtbXknLFxuICAgIH0pO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMsIHtcbiAgICAgICAgYXV0b1dpcmVSNTNDaGFuZ2VJbmZvSWRQYXJhbWV0ZXI6IGF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgIH0pLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpSb290bWFpbEF1dG93aXJlRG5zUHJvdmlkZXInLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBbUFJPUF9ET01BSU5dOiBwcm9wcy5kb21haW4sXG4gICAgICAgIFtQUk9QX1NVQl9ET01BSU5dOiBzdWJkb21haW4sXG4gICAgICAgIFtQUk9QX1BBUkVOVF9IT1NURURfWk9ORV9JRF06IHdpcmVETlNUb0hvc3RlZFpvbmVJRCxcbiAgICAgICAgW1BST1BfSE9TVEVEX1pPTkVfUEFSQU1FVEVSX05BTUVdOiBwcm9wcy5ob3N0ZWRab25lU1NNUGFyYW1ldGVyLnBhcmFtZXRlck5hbWUsXG4gICAgICAgIFtQUk9QX1I1M19DSEFOR0VJTkZPX0lEX1BBUkFNRVRFUl9OQU1FXTogYXV0b1dpcmVSNTNDaGFuZ2VJbmZvSWQucGFyYW1ldGVyTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxufVxuXG5pbnRlcmZhY2UgUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyUHJvcHMgZXh0ZW5kcyBSb290bWFpbEF1dG93aXJlRG5zUHJvcHMge1xuICByZWFkb25seSBhdXRvV2lyZVI1M0NoYW5nZUluZm9JZFBhcmFtZXRlcjogc3NtLlN0cmluZ1BhcmFtZXRlcjtcbiAgcmVhZG9ubHkgd2lyZUROU1RvSG9zdGVkWm9uZUlEPzogc3RyaW5nO1xuICByZWFkb25seSB0b3RhbFRpbWVUb1dpcmVETlM6IER1cmF0aW9uO1xufVxuXG5jbGFzcyBSb290bWFpbEF1dG93aXJlRG5zUHJvdmlkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogQ29uc3RydWN0LCBwcm9wczogUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyUHJvcHMpIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgICBjb25zdCBpZCA9ICdyb290bWFpbC5hdXRvd2lyZS1kbnMtcHJvdmlkZXInO1xuICAgIGNvbnN0IHggPSBOb2RlLm9mKHN0YWNrKS50cnlGaW5kQ2hpbGQoaWQpIGFzIFJvb3RtYWlsQXV0b3dpcmVEbnNQcm92aWRlclxuICAgICAgfHwgbmV3IFJvb3RtYWlsQXV0b3dpcmVEbnNQcm92aWRlcihzdGFjaywgaWQsIHByb3BzKTtcbiAgICByZXR1cm4geC5wcm92aWRlci5zZXJ2aWNlVG9rZW47XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaXNDb21wbGV0ZUhhbmRsZXJGdW5jID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHRoaXMsICdpcy1jb21wbGV0ZS1oYW5kbGVyJywge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDEyMCksXG4gICAgICBsb2dSZXRlbnRpb246IDEsXG4gICAgfSk7XG5cbiAgICBpc0NvbXBsZXRlSGFuZGxlckZ1bmMuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3JvdXRlNTM6TGlzdEhvc3RlZFpvbmVzQnlOYW1lJyxcbiAgICAgICAgICAncm91dGU1MzpHZXRDaGFuZ2UnLFxuICAgICAgICBdLFxuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcHJvcHMuYXV0b1dpcmVSNTNDaGFuZ2VJbmZvSWRQYXJhbWV0ZXIuZ3JhbnRSZWFkKGlzQ29tcGxldGVIYW5kbGVyRnVuYyk7XG5cbiAgICBjb25zdCBvbkV2ZW50SGFuZGxlckZ1bmMgPSBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgJ29uLWV2ZW50LWhhbmRsZXInLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTYwKSwgLy8gMm00MHNcbiAgICAgIGxvZ1JldGVudGlvbjogMSxcbiAgICAgIGVudmlyb25tZW50OiB7fSxcbiAgICB9KTtcblxuICAgIHByb3BzLmhvc3RlZFpvbmVTU01QYXJhbWV0ZXIuZ3JhbnRSZWFkKG9uRXZlbnRIYW5kbGVyRnVuYyk7XG4gICAgaWYgKHByb3BzLmF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BzLmF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyLmdyYW50V3JpdGUob25FdmVudEhhbmRsZXJGdW5jKTtcbiAgICB9XG5cbiAgICBvbkV2ZW50SGFuZGxlckZ1bmMuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3JvdXRlNTM6TGlzdEhvc3RlZFpvbmVzQnlOYW1lJyxcbiAgICAgICAgICAncm91dGU1MzpHZXRDaGFuZ2UnLFxuICAgICAgICBdLFxuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLndpcmVETlNUb0hvc3RlZFpvbmVJRCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLndpcmVETlNUb0hvc3RlZFpvbmVJRC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgb25FdmVudEhhbmRsZXJGdW5jLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdyb3V0ZTUzOkxpc3RSZXNvdXJjZVJlY29yZFNldHMnLFxuICAgICAgICAgICAgJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIC8vIGFybjphd3M6cm91dGU1Mzo6Omhvc3RlZHpvbmUvSDEyMzQ1XG4gICAgICAgICAgICAvLyBhcm46e3BhcnRpdGlvbn06e3NlcnZpY2V9OntyZWdpb259OnthY2NvdW50fTp7cmVzb3VyY2V9e3NlcH17cmVzb3VyY2UtbmFtZX1cbiAgICAgICAgICAgIEFybi5mb3JtYXQoe1xuICAgICAgICAgICAgICBwYXJ0aXRpb246ICdhd3MnLFxuICAgICAgICAgICAgICBzZXJ2aWNlOiAncm91dGU1MycsXG4gICAgICAgICAgICAgIHJlZ2lvbjogJycsXG4gICAgICAgICAgICAgIGFjY291bnQ6ICcnLFxuICAgICAgICAgICAgICByZXNvdXJjZTogJ2hvc3RlZHpvbmUnLFxuICAgICAgICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6IHByb3BzLndpcmVETlNUb0hvc3RlZFpvbmVJRCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdyb290bWFpbC1hdXRvd2lyZS1kbnMtcHJvdmlkZXInLCB7XG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZUhhbmRsZXJGdW5jLFxuICAgICAgcXVlcnlJbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgIHRvdGFsVGltZW91dDogRHVyYXRpb24uaG91cnMoMiksIC8vIHByb3BzLnRvdGFsVGltZVRvV2lyZUROUywgVE9ETyBkb2VzIG5vdCB3b3JrXG4gICAgICBvbkV2ZW50SGFuZGxlcjogb25FdmVudEhhbmRsZXJGdW5jLFxuICAgICAgbG9nUmV0ZW50aW9uOiAxLFxuICAgIH0pO1xuICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIFtcbiAgICAgICAgdGhpcy5wcm92aWRlcixcbiAgICAgICAgdGhpcy5wcm92aWRlci5vbkV2ZW50SGFuZGxlciEsXG4gICAgICAgIHRoaXMucHJvdmlkZXIub25FdmVudEhhbmRsZXIucm9sZSEsXG4gICAgICAgIHRoaXMucHJvdmlkZXIuaXNDb21wbGV0ZUhhbmRsZXIhLFxuICAgICAgICB0aGlzLnByb3ZpZGVyLmlzQ29tcGxldGVIYW5kbGVyIS5yb2xlISxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsIHJlYXNvbjogJ25vIHNlcnZpY2Ugcm9sZSByZXN0cmljdGlvbiBuZWVkZWQnIH0sXG4gICAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsIHJlYXNvbjogJ3dpbGRjYXJkcyBhcmUgb2sgZm9yIHRoZSBwcm92aWRlciBhcyB0aGUgZnVuY3Rpb24gaGFzIHJlc3RyaWN0aW9ucycgfSxcbiAgICAgIF0sIHRydWUpO1xuICB9O1xufSJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdG1haWwtYXV0b3dpcmUtZG5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jvb3RtYWlsLWF1dG93aXJlLWRucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FVcUI7QUFDckIscUVBQStEO0FBQy9ELGlFQUFtRDtBQUNuRCwyQ0FBNkM7QUFDN0MscUdBTWtEO0FBa0NsRCxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBRWhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztRQUMzQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxTQUFTLENBQUM7UUFDdkUsTUFBTSxvQ0FBb0MsR0FBRyx1Q0FBdUMsQ0FBQztRQUdyRiwyREFBMkQ7UUFDM0QsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUN2RixhQUFhLEVBQUUsb0NBQW9DO1lBQ25ELFdBQVcsRUFBRSxPQUFPO1NBQ3JCLENBQUMsQ0FBQztRQUVILElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25DLFlBQVksRUFBRSwyQkFBMkIsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFO2dCQUMxRCxnQ0FBZ0MsRUFBRSx1QkFBdUI7Z0JBQ3pELEdBQUcsS0FBSzthQUNULENBQUM7WUFDRixZQUFZLEVBQUUscUNBQXFDO1lBQ25ELFVBQVUsRUFBRTtnQkFDVixDQUFDLG9EQUFXLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDM0IsQ0FBQyx3REFBZSxDQUFDLEVBQUUsU0FBUztnQkFDNUIsQ0FBQyxtRUFBMEIs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QUUsQ0FBQyxDQUFDO1FBQ3hHLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWtCLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUFBLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFybixcbiAgQXJuRm9ybWF0LFxuICBDdXN0b21SZXNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3NzbSBhcyBzc20sXG4gIFN0YWNrLFxuICBWYWxpZGF0aW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgTm9kZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgUFJPUF9ET01BSU4sXG4gIFBST1BfU1VCX0RPTUFJTixcbiAgUFJPUF9IT1NURURfWk9ORV9QQVJBTUVURVJfTkFNRSxcbiAgUFJPUF9SNTNfQ0hBTkdFSU5GT19JRF9QQVJBTUVURVJfTkFNRSxcbiAgUFJPUF9QQVJFTlRfSE9TVEVEX1pPTkVfSUQsXG59IGZyb20gJy4vcm9vdG1haWwtYXV0b3dpcmUtZG5zLm9uLWV2ZW50LWhhbmRsZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RtYWlsQXV0b3dpcmVEbnNQcm9wcyB7XG4gIC8qKlxuICAgKiBEb21haW4gdXNlZCBmb3Igcm9vdCBtYWlsIGZlYXR1cmUuXG4gICAqL1xuICByZWFkb25seSBkb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogU3ViZG9tYWluIHVzZWQgZm9yIHJvb3QgbWFpbCBmZWF0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXdzJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3ViZG9tYWluPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdGVkIHpvbmUgSUQgb2YgdGhlIGRvbWFpbiB0aGF0IGlzIHJlZ2lzdGVyZWQgUm91dGU1MyBBTkQgaW4gdGhlIHNhbWUgQVdTIGFjY291bnRcbiAgICogdG8gZW5hYmxlIGF1dG93aXJpbmcgb2YgdGhlIEROUyByZWNvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHdpcmVETlNUb0hvc3RlZFpvbmVJRD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEhvc3RlZCBab25lIFNTTSBQYXJhbWV0ZXIgTmFtZSBmb3IgdGhlIE5TIHJlY29yZHMuXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lU1NNUGFyYW1ldGVyOiBzc20uU3RyaW5nTGlzdFBhcmFtZXRlcjtcblxuICAvKipcbiAgICogVGhlIHRvdGFsIHRpbWUgdG8gd2FpdCBmb3IgdGhlIEROUyByZWNvcmRzIHRvIGJlIGF2YWlsYWJsZS93aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsVGltZVRvV2lyZUROUzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBSb290bWFpbEF1dG93aXJlRG5zIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm9vdG1haWxBdXRvd2lyZURuc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHN1YmRvbWFpbiA9IHByb3BzLnN1YmRvbWFpbiA/PyAnYXdzJztcbiAgICBjb25zdCB3aXJlRE5TVG9Ib3N0ZWRab25lSUQgPSBwcm9wcy53aXJlRE5TVG9Ib3N0ZWRab25lSUQgPz8gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyTmFtZSA9ICcvcm9vdG1haWwvYXV0b193aXJlX3I1M19jaGFuZ2VpbmZvX2lkJztcblxuXG4gICAgLy8gVE9ETzogY3JlYXRlIGl0IGluIHRoZSBmdW5jdGlvbiB0byBhdm9pZCB0aGUgZHVtbXkgdmFsdWVcbiAgICBjb25zdCBhdXRvV2lyZVI1M0NoYW5nZUluZm9JZCA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdBdXRvV2lyZVI1M0NoYW5nZUluZm9JZCcsIHtcbiAgICAgIHBhcmFtZXRlck5hbWU6IGF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyTmFtZSxcbiAgICAgIHN0cmluZ1ZhbHVlOiAnZHVtbXknLFxuICAgIH0pO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMsIHtcbiAgICAgICAgYXV0b1dpcmVSNTNDaGFuZ2VJbmZvSWRQYXJhbWV0ZXI6IGF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgIH0pLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpSb290bWFpbEF1dG93aXJlRG5zUHJvdmlkZXInLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBbUFJPUF9ET01BSU5dOiBwcm9wcy5kb21haW4sXG4gICAgICAgIFtQUk9QX1NVQl9ET01BSU5dOiBzdWJkb21haW4sXG4gICAgICAgIFtQUk9QX1BBUkVOVF9IT1NURURfWk9ORV9JRF06IHdpcmVETlNUb0hvc3RlZFpvbmVJRCxcbiAgICAgICAgW1BST1BfSE9TVEVEX1pPTkVfUEFSQU1FVEVSX05BTUVdOiBwcm9wcy5ob3N0ZWRab25lU1NNUGFyYW1ldGVyLnBhcmFtZXRlck5hbWUsXG4gICAgICAgIFtQUk9QX1I1M19DSEFOR0VJTkZPX0lEX1BBUkFNRVRFUl9OQU1FXTogYXV0b1dpcmVSNTNDaGFuZ2VJbmZvSWQucGFyYW1ldGVyTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxufVxuXG5pbnRlcmZhY2UgUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyUHJvcHMgZXh0ZW5kcyBSb290bWFpbEF1dG93aXJlRG5zUHJvcHMge1xuICByZWFkb25seSBhdXRvV2lyZVI1M0NoYW5nZUluZm9JZFBhcmFtZXRlcjogc3NtLlN0cmluZ1BhcmFtZXRlcjtcbiAgcmVhZG9ubHkgd2lyZUROU1RvSG9zdGVkWm9uZUlEPzogc3RyaW5nO1xuICByZWFkb25seSB0b3RhbFRpbWVUb1dpcmVETlM6IER1cmF0aW9uO1xufVxuXG5jbGFzcyBSb290bWFpbEF1dG93aXJlRG5zUHJvdmlkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogQ29uc3RydWN0LCBwcm9wczogUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyUHJvcHMpIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgICBjb25zdCBpZCA9ICdyb290bWFpbC5hdXRvd2lyZS1kbnMtcHJvdmlkZXInO1xuICAgIGNvbnN0IHggPSBOb2RlLm9mKHN0YWNrKS50cnlGaW5kQ2hpbGQoaWQpIGFzIFJvb3RtYWlsQXV0b3dpcmVEbnNQcm92aWRlclxuICAgICAgfHwgbmV3IFJvb3RtYWlsQXV0b3dpcmVEbnNQcm92aWRlcihzdGFjaywgaWQsIHByb3BzKTtcbiAgICByZXR1cm4geC5wcm92aWRlci5zZXJ2aWNlVG9rZW47XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm9vdG1haWxBdXRvd2lyZURuc1Byb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaXNDb21wbGV0ZUhhbmRsZXJGdW5jID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHRoaXMsICdpcy1jb21wbGV0ZS1oYW5kbGVyJywge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzI0X1gsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDEyMCksXG4gICAgICBsb2dSZXRlbnRpb246IDEsXG4gICAgfSk7XG5cbiAgICBpc0NvbXBsZXRlSGFuZGxlckZ1bmMuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3JvdXRlNTM6TGlzdEhvc3RlZFpvbmVzQnlOYW1lJyxcbiAgICAgICAgICAncm91dGU1MzpHZXRDaGFuZ2UnLFxuICAgICAgICBdLFxuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcHJvcHMuYXV0b1dpcmVSNTNDaGFuZ2VJbmZvSWRQYXJhbWV0ZXIuZ3JhbnRSZWFkKGlzQ29tcGxldGVIYW5kbGVyRnVuYyk7XG5cbiAgICBjb25zdCBvbkV2ZW50SGFuZGxlckZ1bmMgPSBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgJ29uLWV2ZW50LWhhbmRsZXInLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTYwKSwgLy8gMm00MHNcbiAgICAgIGxvZ1JldGVudGlvbjogMSxcbiAgICAgIGVudmlyb25tZW50OiB7fSxcbiAgICB9KTtcblxuICAgIHByb3BzLmhvc3RlZFpvbmVTU01QYXJhbWV0ZXIuZ3JhbnRSZWFkKG9uRXZlbnRIYW5kbGVyRnVuYyk7XG4gICAgaWYgKHByb3BzLmF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BzLmF1dG9XaXJlUjUzQ2hhbmdlSW5mb0lkUGFyYW1ldGVyLmdyYW50V3JpdGUob25FdmVudEhhbmRsZXJGdW5jKTtcbiAgICB9XG5cbiAgICBvbkV2ZW50SGFuZGxlckZ1bmMuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3JvdXRlNTM6TGlzdEhvc3RlZFpvbmVzQnlOYW1lJyxcbiAgICAgICAgICAncm91dGU1MzpHZXRDaGFuZ2UnLFxuICAgICAgICBdLFxuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLndpcmVETlNUb0hvc3RlZFpvbmVJRCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLndpcmVETlNUb0hvc3RlZFpvbmVJRC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgb25FdmVudEhhbmRsZXJGdW5jLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdyb3V0ZTUzOkxpc3RSZXNvdXJjZVJlY29yZFNldHMnLFxuICAgICAgICAgICAgJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIC8vIGFybjphd3M6cm91dGU1Mzo6Omhvc3RlZHpvbmUvSDEyMzQ1XG4gICAgICAgICAgICAvLyBhcm46e3BhcnRpdGlvbn06e3NlcnZpY2V9OntyZWdpb259OnthY2NvdW50fTp7cmVzb3VyY2V9e3NlcH17cmVzb3VyY2UtbmFtZX1cbiAgICAgICAgICAgIEFybi5mb3JtYXQoe1xuICAgICAgICAgICAgICBwYXJ0aXRpb246ICdhd3MnLFxuICAgICAgICAgICAgICBzZXJ2aWNlOiAncm91dGU1MycsXG4gICAgICAgICAgICAgIHJlZ2lvbjogJycsXG4gICAgICAgICAgICAgIGFjY291bnQ6ICcnLFxuICAgICAgICAgICAgICByZXNvdXJjZTogJ2hvc3RlZHpvbmUnLFxuICAgICAgICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6IHByb3BzLndpcmVETlNUb0hvc3RlZFpvbmVJRCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdyb290bWFpbC1hdXRvd2lyZS1kbnMtcHJvdmlkZXInLCB7XG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZUhhbmRsZXJGdW5jLFxuICAgICAgcXVlcnlJbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgIHRvdGFsVGltZW91dDogRHVyYXRpb24uaG91cnMoMiksIC8vIHByb3BzLnRvdGFsVGltZVRvV2lyZUROUywgVE9ETyBkb2VzIG5vdCB3b3JrXG4gICAgICBvbkV2ZW50SGFuZGxlcjogb25FdmVudEhhbmRsZXJGdW5jLFxuICAgICAgbG9nUmV0ZW50aW9uOiAxLFxuICAgIH0pO1xuICAgIC8vIEdyYW51bGFyIGZpbmRpbmdzIG9ubHkuIFBvcnRhYmxlIElEcyBvbmx5OiBSZXNvdXJjZTo6KiBpcyBjb25zdGFudCBhY3Jvc3MgYW55IGRlcGxveW1lbnQsXG4gICAgLy8gUmVzb3VyY2U6Ojxsb2dpY2FsLWlkPiBmaW5kaW5ncyBhcmUgbm90LiBBd3NTb2x1dGlvbnMtSUFNNFtQb2xpY3k6Oi4uLl0gY2Fubm90IGJlXG4gICAgLy8gYWNrbm93bGVkZ2VkIGF0IGFsbCByaWdodCBub3cgLSBhd3MtY2RrLWxpYidzIFZhbGlkYXRpb25zLmFja25vd2xlZGdlKCkgcmVqZWN0cyBhbnkgaWQgd2l0aFxuICAgIC8vIG1vcmUgdGhhbiBvbmUgJzo6JywgYW5kIEFXUyBtYW5hZ2VkIHBvbGljeSBBUk5zIGFsd2F5cyBjb250YWluIG9uZSAoY2RrbGFicy9jZGstbmFnIzIzNTksXG4gICAgLy8gIzIzNTEsIGJvdGggb3BlbiB1cHN0cmVhbSkuIFNlZSBkb2NzL3BsYW5zLzIwMjYtMDgtMDktYnVtcC1tdmMtcHJvamVuLWNkay1uYWctdjMubWQgVGFzayAzLlxuICAgIGNvbnN0IGlhbTVSZXNvdXJjZVN0YXIgPSAnQXdzU29sdXRpb25zLUlBTTVbUmVzb3VyY2U6OipdJztcbiAgICBjb25zdCByZWFzb25JYW01ID0gJ3dpbGRjYXJkcyBhcmUgb2sgZm9yIHRoZSBwcm92aWRlciBhcyB0aGUgZnVuY3Rpb24gaGFzIHJlc3RyaWN0aW9ucyc7XG5cbiAgICBWYWxpZGF0aW9ucy5vZih0aGlzLnByb3ZpZGVyLm9uRXZlbnRIYW5kbGVyISkuYWNrbm93bGVkZ2UoeyBpZDogaWFtNVJlc291cmNlU3RhciwgcmVhc29uOiByZWFzb25JYW01IH0pO1xuICAgIFZhbGlkYXRpb25zLm9mKHRoaXMucHJvdmlkZXIuaXNDb21wbGV0ZUhhbmRsZXIhKS5hY2tub3dsZWRnZSh7IGlkOiBpYW01UmVzb3VyY2VTdGFyLCByZWFzb246IHJlYXNvbklhbTUgfSk7XG4gIH07XG59Il19
package/lib/rootmail.js CHANGED
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.Rootmail = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
5
  const aws_cdk_lib_1 = require("aws-cdk-lib");
7
- const cdk_nag_1 = require("cdk-nag");
8
6
  const constructs_1 = require("constructs");
9
7
  const common_1 = require("./common");
10
8
  const hosted_zone_dkim_1 = require("./hosted-zone-dkim");
@@ -13,6 +11,15 @@ const ses_receive_1 = require("./ses-receive");
13
11
  * Rootmail construct
14
12
  */
15
13
  class Rootmail extends constructs_1.Construct {
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@mavogel/awscdk-rootmail.Rootmail", version: "0.1.0" };
15
+ /**
16
+ * The name parameter in SSM to store the domain name server.
17
+ */
18
+ hostedZoneParameterName;
19
+ /**
20
+ * S3 bucket to store the root mails in
21
+ */
22
+ emailBucket;
16
23
  constructor(scope, id, props) {
17
24
  super(scope, id);
18
25
  this.hostedZoneParameterName = '/rootmail/domain_name_servers';
@@ -37,18 +44,10 @@ class Rootmail extends constructs_1.Construct {
37
44
  removalPolicy: emailBucketDeletePolicy,
38
45
  autoDeleteObjects: emailBucketDeletePolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY,
39
46
  });
40
- cdk_nag_1.NagSuppressions.addResourceSuppressions([
41
- this.emailBucket,
42
- ], [
43
- { id: 'AwsSolutions-S1', reason: 'no server access logs needed' },
44
- { id: 'AwsSolutions-S10', reason: 'no SSL access needed' },
45
- ], true);
47
+ aws_cdk_lib_1.Validations.of(this.emailBucket).acknowledge({ id: 'AwsSolutions-S1', reason: 'no server access logs needed' });
48
+ aws_cdk_lib_1.Validations.of(this.emailBucket).acknowledge({ id: 'AwsSolutions-S10', reason: 'no SSL access needed' });
46
49
  this.emailBucket.grantPut(new aws_cdk_lib_1.aws_iam.ServicePrincipal('ses.amazonaws.com'), 'RootMail/*');
47
- cdk_nag_1.NagSuppressions.addResourceSuppressions([
48
- this.emailBucket.policy,
49
- ], [
50
- { id: 'AwsSolutions-S10', reason: 'no SSL access needed' },
51
- ], true);
50
+ aws_cdk_lib_1.Validations.of(this.emailBucket.policy).acknowledge({ id: 'AwsSolutions-S10', reason: 'no SSL access needed' });
52
51
  /**
53
52
  * HOSTED ZONE
54
53
  */
@@ -81,8 +80,6 @@ class Rootmail extends constructs_1.Construct {
81
80
  }
82
81
  }
83
82
  exports.Rootmail = Rootmail;
84
- _a = JSII_RTTI_SYMBOL_1;
85
- Rootmail[_a] = { fqn: "@mavogel/awscdk-rootmail.Rootmail", version: "0.0.336" };
86
83
  /**
87
84
  * Aspect for setting all removal policies to DESTROY
88
85
  */
@@ -93,4 +90,4 @@ class ApplyDestroyPolicyAspect {
93
90
  }
94
91
  }
95
92
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm9vdG1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FZcUI7QUFDckIscUNBQTBDO0FBQzFDLDJDQUFtRDtBQUNuRCxxQ0FBaUU7QUFDakUseURBQW9EO0FBQ3BELCtDQUEyQztBQWdFM0M7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxzQkFBUztJQVdyQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLCtCQUErQixDQUFDO1FBRS9ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7UUFDM0MsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLElBQUksc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLElBQUksU0FBUyxDQUFDO1FBQ3ZFLE1BQU0sOEJBQThCLEdBQUcsS0FBSyxDQUFDLDhCQUE4QixJQUFJLEtBQUssQ0FBQztRQUNyRixNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSwyQkFBYSxDQUFDLE1BQU0sQ0FBQztRQUN0RixNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7UUFFaEUsTUFBTSxZQUFZLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUEsMkJBQWtCLEVB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QUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEdXJhdGlvbixcbiAgU3RhY2ssXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3JvdXRlNTMgYXMgcjUzLFxuICBhd3NfczMgYXMgczMsXG4gIGF3c19zc20gYXMgc3NtLFxuICBDZm5SZXNvdXJjZSxcbiAgSUFzcGVjdCxcbiAgUmVtb3ZhbFBvbGljeSxcbiAgQXNwZWN0cyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTmFnU3VwcHJlc3Npb25zIH0gZnJvbSAnY2RrLW5hZyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGlzU0VTRW5hYmxlZFJlZ2lvbiwgc2VzRW5hYmxlZFJlZ2lvbnMgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBIb3N0ZWRab25lRGtpbSB9IGZyb20gJy4vaG9zdGVkLXpvbmUtZGtpbSc7XG5pbXBvcnQgeyBTRVNSZWNlaXZlIH0gZnJvbSAnLi9zZXMtcmVjZWl2ZSc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIGNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RtYWlsUHJvcHMge1xuICAvKipcbiAgICogRG9tYWluIHVzZWQgZm9yIHJvb3QgbWFpbCBmZWF0dXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN1YmRvbWFpbiB1c2VkIGZvciByb290IG1haWwgZmVhdHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2F3cydcbiAgICovXG4gIHJlYWRvbmx5IHN1YmRvbWFpbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRvdGFsIHRpbWUgdG8gd2FpdCBmb3IgdGhlIEROUyByZWNvcmRzIHRvIGJlIGF2YWlsYWJsZS93aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uaG91cnMoMilcbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsVGltZVRvV2lyZUROUz86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdGVkIHpvbmUgSUQgb2YgdGhlIGRvbWFpbiB0aGF0IGlzIHJlZ2lzdGVyZWQgUm91dGU1MyBBTkQgaW4gdGhlIHNhbWUgQVdTIGFjY291bnRcbiAgICogdG8gZW5hYmxlIGF1dG93aXJpbmcgb2YgdGhlIEROUyByZWNvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBlbXRweSBzdHJpbmdcbiAgICovXG4gIHJlYWRvbmx5IHdpcmVETlNUb0hvc3RlZFpvbmVJRD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBTRVMgcmVjZWl2ZSBmdW5jdGlvbiB0byB1c2VcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIHByb3ZpZGVkIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tU2VzUmVjZWl2ZUZ1bmN0aW9uPzogbGFtYmRhLkZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJlZCBlbWFpbCBzdWJqZWN0cy4gTk9URTogbXVzdCBub3QgY29udGFpbiBjb21tYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJlZEVtYWlsU3ViamVjdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHJlbW92YWwgcG9saWN5IGZvciB0aGUgZW1haWwgYnVja2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZWFkb25seSBlbWFpbEJ1Y2tldERlbGV0ZVBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2V0IGFsbCByZW1vdmFsIHBvbGljaWVzIHRvIERFU1RST1kuIFRoaXMgaXMgdXNlZnVsIGZvciBpbnRlZ3JhdGlvbiB0ZXN0aW5nIHB1cnBvc2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RGVzdHJveVBvbGljeVRvQWxsUmVzb3VyY2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSb290bWFpbCBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGNsYXNzIFJvb3RtYWlsIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHBhcmFtZXRlciBpbiBTU00gdG8gc3RvcmUgdGhlIGRvbWFpbiBuYW1lIHNlcnZlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBob3N0ZWRab25lUGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBidWNrZXQgdG8gc3RvcmUgdGhlIHJvb3QgbWFpbHMgaW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbWFpbEJ1Y2tldDogczMuQnVja2V0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb290bWFpbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmhvc3RlZFpvbmVQYXJhbWV0ZXJOYW1lID0gJy9yb290bWFpbC9kb21haW5fbmFtZV9zZXJ2ZXJzJztcblxuICAgIGNvbnN0IGRvbWFpbiA9IHByb3BzLmRvbWFpbjtcbiAgICBjb25zdCBzdWJkb21haW4gPSBwcm9wcy5zdWJkb21haW4gPz8gJ2F3cyc7XG4gICAgY29uc3QgdG90YWxUaW1lVG9XaXJlRE5TID0gcHJvcHMudG90YWxUaW1lVG9XaXJlRE5TID8/IER1cmF0aW9uLmhvdXJzKDIpO1xuICAgIGNvbnN0IHdpcmVETlNUb0hvc3RlZFpvbmVJRCA9IHByb3BzLndpcmVETlNUb0hvc3RlZFpvbmVJRCA/PyB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2V0RGVzdHJveVBvbGljeVRvQWxsUmVzb3VyY2VzID0gcHJvcHMuc2V0RGVzdHJveVBvbGljeVRvQWxsUmVzb3VyY2VzID8/IGZhbHNlO1xuICAgIGNvbnN0IGVtYWlsQnVja2V0RGVsZXRlUG9saWN5ID0gcHJvcHMuZW1haWxCdWNrZXREZWxldGVQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5SRVRBSU47XG4gICAgY29uc3QgZmlsdGVyZWRFbWFpbFN1YmplY3RzID0gcHJvcHMuZmlsdGVyZWRFbWFpbFN1YmplY3RzIHx8IFtdO1xuXG4gICAgY29uc3QgZGVwbG95UmVnaW9uID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIGNvbnNvbGUubG9nKGBEZXBsb3kgcmVnaW9uIGlzICR7ZGVwbG95UmVnaW9ufWApO1xuICAgIGlmICghaXNTRVNFbmFibGVkUmVnaW9uKGRlcGxveVJlZ2lvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU0VTIGlzIG5vdCBhdmFpbGFibGUgaW4gcmVnaW9uICR7ZGVwbG95UmVnaW9ufS4gVXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlZ2lvbnM6ICR7c2VzRW5hYmxlZFJlZ2lvbnMuam9pbignLCAnKX1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFTUFJTCBCdWNrZXRcbiAgICAgKi9cbiAgICB0aGlzLmVtYWlsQnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnRW1haWxCdWNrZXQnLCB7XG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgcmVtb3ZhbFBvbGljeTogZW1haWxCdWNrZXREZWxldGVQb2xpY3ksXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogZW1haWxCdWNrZXREZWxldGVQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoW1xuICAgICAgdGhpcy5lbWFpbEJ1Y2tldCxcbiAgICBdLCBbXG4gICAgICB7IGlkOiAnQXdzU29sdXRpb25zLVMxJywgcmVhc29uOiAnbm8gc2VydmVyIGFjY2VzcyBsb2dzIG5lZWRlZCcgfSxcbiAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtUzEwJywgcmVhc29uOiAnbm8gU1NMIGFjY2VzcyBuZWVkZWQnIH0sXG4gICAgXSwgdHJ1ZSk7XG4gICAgdGhpcy5lbWFpbEJ1Y2tldC5ncmFudFB1dChuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3Nlcy5hbWF6b25hd3MuY29tJyksICdSb290TWFpbC8qJyk7XG5cbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoW1xuICAgICAgdGhpcy5lbWFpbEJ1Y2tldC5wb2xpY3khLFxuICAgIF0sIFtcbiAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtUzEwJywgcmVhc29uOiAnbm8gU1NMIGFjY2VzcyBuZWVkZWQnIH0sXG4gICAgXSwgdHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBIT1NURUQgWk9ORVxuICAgICAqL1xuICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBuZXcgcjUzLkhvc3RlZFpvbmUodGhpcywgJ0hvc3RlZFpvbmUnLCB7XG4gICAgICB6b25lTmFtZTogYCR7c3ViZG9tYWlufS4ke2RvbWFpbn1gLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZVNTTVBhcmFtZXRlciA9IG5ldyBzc20uU3RyaW5nTGlzdFBhcmFtZXRlcih0aGlzLCAnSG9zdGVkWm9uZVNTTVBhcmFtZXRlcicsIHtcbiAgICAgIHBhcmFtZXRlck5hbWU6IHRoaXMuaG9zdGVkWm9uZVBhcmFtZXRlck5hbWUsXG4gICAgICBzdHJpbmdMaXN0VmFsdWU6IGhvc3RlZFpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzIHx8IFtdLFxuICAgIH0pO1xuXG4gICAgbmV3IEhvc3RlZFpvbmVEa2ltKHRoaXMsICdIb3N0ZWRab25lRGtpbScsIHtcbiAgICAgIGRvbWFpbjogZG9tYWluLFxuICAgICAgc3ViZG9tYWluOiBzdWJkb21haW4sXG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICAgICAgd2lyZUROU1RvSG9zdGVkWm9uZUlEOiB3aXJlRE5TVG9Ib3N0ZWRab25lSUQsXG4gICAgICBob3N0ZWRab25lU1NNUGFyYW1ldGVyOiBob3N0ZWRab25lU1NNUGFyYW1ldGVyLFxuICAgICAgdG90YWxUaW1lVG9XaXJlRE5TOiB0b3RhbFRpbWVUb1dpcmVETlMsXG4gICAgfSk7XG5cbiAgICBuZXcgU0VTUmVjZWl2ZSh0aGlzLCAnU0VTUmVjZWl2ZScsIHtcbiAgICAgIGRvbWFpbjogZG9tYWluLFxuICAgICAgc3ViZG9tYWluOiBzdWJkb21haW4sXG4gICAgICBlbWFpbGJ1Y2tldDogdGhpcy5lbWFpbEJ1Y2tldCxcbiAgICAgIGN1c3RvbVNlc1JlY2VpdmVGdW5jdGlvbjogcHJvcHMuY3VzdG9tU2VzUmVjZWl2ZUZ1bmN0aW9uLFxuICAgICAgZmlsdGVyZWRFbWFpbFN1YmplY3RzOiBmaWx0ZXJlZEVtYWlsU3ViamVjdHMsXG4gICAgfSk7XG5cbiAgICAvLyBJZiBEZXN0cm95IFBvbGljeSBBc3BlY3QgaXMgcHJlc2VudDpcbiAgICBpZiAoc2V0RGVzdHJveVBvbGljeVRvQWxsUmVzb3VyY2VzKSB7XG4gICAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgQXBwbHlEZXN0cm95UG9saWN5QXNwZWN0KCkpO1xuICAgIH1cbiAgfVxuXG59XG5cbi8qKlxuICogQXNwZWN0IGZvciBzZXR0aW5nIGFsbCByZW1vdmFsIHBvbGljaWVzIHRvIERFU1RST1lcbiAqL1xuY2xhc3MgQXBwbHlEZXN0cm95UG9saWN5QXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHB1YmxpYyB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5SZXNvdXJjZSkge1xuICAgICAgbm9kZS5hcHBseVJlbW92YWxQb2xpY3koUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKTtcbiAgICB9XG4gIH1cbn0iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm9vdG1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQWFxQjtBQUNyQiwyQ0FBbUQ7QUFDbkQscUNBQWlFO0FBQ2pFLHlEQUFvRDtBQUNwRCwrQ0FBMkM7QUFnRTNDOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7O0lBQ3JDOztPQUVHO0lBQ2EsdUJBQXVCLENBQVM7SUFFaEQ7O09BRUc7SUFDYSxXQUFXLENBQVk7SUFFdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyx1QkFBdUIsR0FBRywrQkFBK0IsQ0FBQztRQUUvRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzVCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixJQUFJLHNCQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixJQUFJLFNBQVMsQ0FBQztRQUN2RSxNQUFNLDhCQUE4QixHQUFHLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxLQUFLLENBQUM7UUFDckYsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksMkJBQWEsQ0FBQyxNQUFNLENBQUM7UUFDdEYsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLElBQUksRUFBRSxDQUFDO1FBRWhFLE1BQU0sWUFBWSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixZQUFZLEVB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QVkseUJBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEdXJhdGlvbixcbiAgU3RhY2ssXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3JvdXRlNTMgYXMgcjUzLFxuICBhd3NfczMgYXMgczMsXG4gIGF3c19zc20gYXMgc3NtLFxuICBDZm5SZXNvdXJjZSxcbiAgSUFzcGVjdCxcbiAgUmVtb3ZhbFBvbGljeSxcbiAgQXNwZWN0cyxcbiAgVmFsaWRhdGlvbnMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgaXNTRVNFbmFibGVkUmVnaW9uLCBzZXNFbmFibGVkUmVnaW9ucyB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IEhvc3RlZFpvbmVEa2ltIH0gZnJvbSAnLi9ob3N0ZWQtem9uZS1ka2ltJztcbmltcG9ydCB7IFNFU1JlY2VpdmUgfSBmcm9tICcuL3Nlcy1yZWNlaXZlJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9vdG1haWxQcm9wcyB7XG4gIC8qKlxuICAgKiBEb21haW4gdXNlZCBmb3Igcm9vdCBtYWlsIGZlYXR1cmUuXG4gICAqL1xuICByZWFkb25seSBkb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogU3ViZG9tYWluIHVzZWQgZm9yIHJvb3QgbWFpbCBmZWF0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXdzJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3ViZG9tYWluPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgdGltZSB0byB3YWl0IGZvciB0aGUgRE5TIHJlY29yZHMgdG8gYmUgYXZhaWxhYmxlL3dpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5ob3VycygyKVxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxUaW1lVG9XaXJlRE5TPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBob3N0ZWQgem9uZSBJRCBvZiB0aGUgZG9tYWluIHRoYXQgaXMgcmVnaXN0ZXJlZCBSb3V0ZTUzIEFORCBpbiB0aGUgc2FtZSBBV1MgYWNjb3VudFxuICAgKiB0byBlbmFibGUgYXV0b3dpcmluZyBvZiB0aGUgRE5TIHJlY29yZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGVtdHB5IHN0cmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgd2lyZUROU1RvSG9zdGVkWm9uZUlEPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIFNFUyByZWNlaXZlIGZ1bmN0aW9uIHRvIHVzZVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXVxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgcHJvdmlkZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgY29uc3RydWN0XG4gICAqL1xuICByZWFkb25seSBjdXN0b21TZXNSZWNlaXZlRnVuY3Rpb24/OiBsYW1iZGEuRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEZpbHRlcmVkIGVtYWlsIHN1YmplY3RzLiBOT1RFOiBtdXN0IG5vdCBjb250YWluIGNvbW1hcy5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcmVkRW1haWxTdWJqZWN0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVtb3ZhbCBwb2xpY3kgZm9yIHRoZSBlbWFpbCBidWNrZXRcbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IGVtYWlsQnVja2V0RGVsZXRlUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzZXQgYWxsIHJlbW92YWwgcG9saWNpZXMgdG8gREVTVFJPWS4gVGhpcyBpcyB1c2VmdWwgZm9yIGludGVncmF0aW9uIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzZXREZXN0cm95UG9saWN5VG9BbGxSZXNvdXJjZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJvb3RtYWlsIGNvbnN0cnVjdFxuICovXG5leHBvcnQgY2xhc3MgUm9vdG1haWwgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIG5hbWUgcGFyYW1ldGVyIGluIFNTTSB0byBzdG9yZSB0aGUgZG9tYWluIG5hbWUgc2VydmVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGhvc3RlZFpvbmVQYXJhbWV0ZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIGJ1Y2tldCB0byBzdG9yZSB0aGUgcm9vdCBtYWlscyBpblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVtYWlsQnVja2V0OiBzMy5CdWNrZXQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvb3RtYWlsUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaG9zdGVkWm9uZVBhcmFtZXRlck5hbWUgPSAnL3Jvb3RtYWlsL2RvbWFpbl9uYW1lX3NlcnZlcnMnO1xuXG4gICAgY29uc3QgZG9tYWluID0gcHJvcHMuZG9tYWluO1xuICAgIGNvbnN0IHN1YmRvbWFpbiA9IHByb3BzLnN1YmRvbWFpbiA/PyAnYXdzJztcbiAgICBjb25zdCB0b3RhbFRpbWVUb1dpcmVETlMgPSBwcm9wcy50b3RhbFRpbWVUb1dpcmVETlMgPz8gRHVyYXRpb24uaG91cnMoMik7XG4gICAgY29uc3Qgd2lyZUROU1RvSG9zdGVkWm9uZUlEID0gcHJvcHMud2lyZUROU1RvSG9zdGVkWm9uZUlEID8/IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzZXREZXN0cm95UG9saWN5VG9BbGxSZXNvdXJjZXMgPSBwcm9wcy5zZXREZXN0cm95UG9saWN5VG9BbGxSZXNvdXJjZXMgPz8gZmFsc2U7XG4gICAgY29uc3QgZW1haWxCdWNrZXREZWxldGVQb2xpY3kgPSBwcm9wcy5lbWFpbEJ1Y2tldERlbGV0ZVBvbGljeSA/PyBSZW1vdmFsUG9saWN5LlJFVEFJTjtcbiAgICBjb25zdCBmaWx0ZXJlZEVtYWlsU3ViamVjdHMgPSBwcm9wcy5maWx0ZXJlZEVtYWlsU3ViamVjdHMgfHwgW107XG5cbiAgICBjb25zdCBkZXBsb3lSZWdpb24gPSBTdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgY29uc29sZS5sb2coYERlcGxveSByZWdpb24gaXMgJHtkZXBsb3lSZWdpb259YCk7XG4gICAgaWYgKCFpc1NFU0VuYWJsZWRSZWdpb24oZGVwbG95UmVnaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTRVMgaXMgbm90IGF2YWlsYWJsZSBpbiByZWdpb24gJHtkZXBsb3lSZWdpb259LiBVc2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgcmVnaW9uczogJHtzZXNFbmFibGVkUmVnaW9ucy5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVNQUlMIEJ1Y2tldFxuICAgICAqL1xuICAgIHRoaXMuZW1haWxCdWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsICdFbWFpbEJ1Y2tldCcsIHtcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICByZW1vdmFsUG9saWN5OiBlbWFpbEJ1Y2tldERlbGV0ZVBvbGljeSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiBlbWFpbEJ1Y2tldERlbGV0ZVBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuICAgIFZhbGlkYXRpb25zLm9mKHRoaXMuZW1haWxCdWNrZXQpLmFja25vd2xlZGdlKHsgaWQ6ICdBd3NTb2x1dGlvbnMtUzEnLCByZWFzb246ICdubyBzZXJ2ZXIgYWNjZXNzIGxvZ3MgbmVlZGVkJyB9KTtcbiAgICBWYWxpZGF0aW9ucy5vZih0aGlzLmVtYWlsQnVja2V0KS5hY2tub3dsZWRnZSh7IGlkOiAnQXdzU29sdXRpb25zLVMxMCcsIHJlYXNvbjogJ25vIFNTTCBhY2Nlc3MgbmVlZGVkJyB9KTtcbiAgICB0aGlzLmVtYWlsQnVja2V0LmdyYW50UHV0KG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnc2VzLmFtYXpvbmF3cy5jb20nKSwgJ1Jvb3RNYWlsLyonKTtcblxuICAgIFZhbGlkYXRpb25zLm9mKHRoaXMuZW1haWxCdWNrZXQucG9saWN5ISkuYWNrbm93bGVkZ2UoeyBpZDogJ0F3c1NvbHV0aW9ucy1TMTAnLCByZWFzb246ICdubyBTU0wgYWNjZXNzIG5lZWRlZCcgfSk7XG5cbiAgICAvKipcbiAgICAgKiBIT1NURUQgWk9ORVxuICAgICAqL1xuICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBuZXcgcjUzLkhvc3RlZFpvbmUodGhpcywgJ0hvc3RlZFpvbmUnLCB7XG4gICAgICB6b25lTmFtZTogYCR7c3ViZG9tYWlufS4ke2RvbWFpbn1gLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZVNTTVBhcmFtZXRlciA9IG5ldyBzc20uU3RyaW5nTGlzdFBhcmFtZXRlcih0aGlzLCAnSG9zdGVkWm9uZVNTTVBhcmFtZXRlcicsIHtcbiAgICAgIHBhcmFtZXRlck5hbWU6IHRoaXMuaG9zdGVkWm9uZVBhcmFtZXRlck5hbWUsXG4gICAgICBzdHJpbmdMaXN0VmFsdWU6IGhvc3RlZFpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzIHx8IFtdLFxuICAgIH0pO1xuXG4gICAgbmV3IEhvc3RlZFpvbmVEa2ltKHRoaXMsICdIb3N0ZWRab25lRGtpbScsIHtcbiAgICAgIGRvbWFpbjogZG9tYWluLFxuICAgICAgc3ViZG9tYWluOiBzdWJkb21haW4sXG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICAgICAgd2lyZUROU1RvSG9zdGVkWm9uZUlEOiB3aXJlRE5TVG9Ib3N0ZWRab25lSUQsXG4gICAgICBob3N0ZWRab25lU1NNUGFyYW1ldGVyOiBob3N0ZWRab25lU1NNUGFyYW1ldGVyLFxuICAgICAgdG90YWxUaW1lVG9XaXJlRE5TOiB0b3RhbFRpbWVUb1dpcmVETlMsXG4gICAgfSk7XG5cbiAgICBuZXcgU0VTUmVjZWl2ZSh0aGlzLCAnU0VTUmVjZWl2ZScsIHtcbiAgICAgIGRvbWFpbjogZG9tYWluLFxuICAgICAgc3ViZG9tYWluOiBzdWJkb21haW4sXG4gICAgICBlbWFpbGJ1Y2tldDogdGhpcy5lbWFpbEJ1Y2tldCxcbiAgICAgIGN1c3RvbVNlc1JlY2VpdmVGdW5jdGlvbjogcHJvcHMuY3VzdG9tU2VzUmVjZWl2ZUZ1bmN0aW9uLFxuICAgICAgZmlsdGVyZWRFbWFpbFN1YmplY3RzOiBmaWx0ZXJlZEVtYWlsU3ViamVjdHMsXG4gICAgfSk7XG5cbiAgICAvLyBJZiBEZXN0cm95IFBvbGljeSBBc3BlY3QgaXMgcHJlc2VudDpcbiAgICBpZiAoc2V0RGVzdHJveVBvbGljeVRvQWxsUmVzb3VyY2VzKSB7XG4gICAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgQXBwbHlEZXN0cm95UG9saWN5QXNwZWN0KCkpO1xuICAgIH1cbiAgfVxuXG59XG5cbi8qKlxuICogQXNwZWN0IGZvciBzZXR0aW5nIGFsbCByZW1vdmFsIHBvbGljaWVzIHRvIERFU1RST1lcbiAqL1xuY2xhc3MgQXBwbHlEZXN0cm95UG9saWN5QXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHB1YmxpYyB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5SZXNvdXJjZSkge1xuICAgICAgbm9kZS5hcHBseVJlbW92YWxQb2xpY3koUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKTtcbiAgICB9XG4gIH1cbn0iXX0=
@@ -1,10 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.SESReceiptRuleSetActivation = void 0;
4
37
  const aws_cdk_lib_1 = require("aws-cdk-lib");
5
38
  const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
6
- const cr = require("aws-cdk-lib/custom-resources");
7
- const cdk_nag_1 = require("cdk-nag");
39
+ const cr = __importStar(require("aws-cdk-lib/custom-resources"));
8
40
  const constructs_1 = require("constructs");
9
41
  const ses_receipt_ruleset_activation_on_event_handler_1 = require("./ses-receipt-ruleset-activation.on-event-handler");
10
42
  class SESReceiptRuleSetActivation extends constructs_1.Construct {
@@ -35,6 +67,7 @@ class SESReceiptRuleSetActivationProvider extends constructs_1.Construct {
35
67
  || new SESReceiptRuleSetActivationProvider(stack, id, props);
36
68
  return x.provider.serviceToken;
37
69
  }
70
+ provider;
38
71
  constructor(scope, id, props) {
39
72
  super(scope, id);
40
73
  const onEventHandlerFuncRole = new aws_cdk_lib_1.aws_iam.Role(this, 'SesReceiptRuleSetActivationCustomResourceRole', {
@@ -52,7 +85,7 @@ class SESReceiptRuleSetActivationProvider extends constructs_1.Construct {
52
85
  resources: ['*'],
53
86
  }));
54
87
  const onEventHandlerFunc = new aws_lambda_nodejs_1.NodejsFunction(this, 'on-event-handler', {
55
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_18_X,
88
+ runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_24_X,
56
89
  logRetention: 1,
57
90
  role: onEventHandlerFuncRole,
58
91
  timeout: aws_cdk_lib_1.Duration.seconds(30),
@@ -60,7 +93,7 @@ class SESReceiptRuleSetActivationProvider extends constructs_1.Construct {
60
93
  environment: {},
61
94
  });
62
95
  const isCompleteHandlerFunc = new aws_lambda_nodejs_1.NodejsFunction(this, 'is-complete-handler', {
63
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_18_X,
96
+ runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_24_X,
64
97
  logRetention: 1,
65
98
  timeout: aws_cdk_lib_1.Duration.seconds(30),
66
99
  // Note: we use the resource properties from above as it is a CustomResource
@@ -74,16 +107,21 @@ class SESReceiptRuleSetActivationProvider extends constructs_1.Construct {
74
107
  totalTimeout: aws_cdk_lib_1.Duration.minutes(2), // TODO: make this configurable
75
108
  logRetention: 1,
76
109
  });
77
- cdk_nag_1.NagSuppressions.addResourceSuppressions([
78
- this.provider,
79
- this.provider.onEventHandler,
80
- this.provider.onEventHandler.role,
81
- this.provider.isCompleteHandler,
82
- this.provider.isCompleteHandler.role,
83
- ], [
84
- { id: 'AwsSolutions-IAM4', reason: 'no service role restriction needed' },
85
- { id: 'AwsSolutions-IAM5', reason: 'wildcards are ok for the provider as the function has restrictions' },
86
- ], true);
110
+ // Granular findings only. Portable IDs only: Resource::* is constant across any deployment,
111
+ // Resource::<logical-id> findings are not. AwsSolutions-IAM4[Policy::...] cannot be
112
+ // acknowledged at all right now - aws-cdk-lib's Validations.acknowledge() rejects any id with
113
+ // more than one '::', and AWS managed policy ARNs always contain one (cdklabs/cdk-nag#2359,
114
+ // #2351, both open upstream). See docs/plans/2026-08-09-bump-mvc-projen-cdk-nag-v3.md Task 3.
115
+ // onEventHandlerFuncRole is acknowledged directly (not via this.provider.onEventHandler) since
116
+ // it is passed in as an explicit role - a sibling construct, not a descendant of the Function.
117
+ const iam5ResourceStar = 'AwsSolutions-IAM5[Resource::*]';
118
+ const reasonIam5 = 'wildcards are ok for the provider as the function has restrictions';
119
+ aws_cdk_lib_1.Validations.of(onEventHandlerFuncRole).acknowledge({ id: iam5ResourceStar, reason: reasonIam5 });
120
+ // emailbucket.grantRead(isCompleteHandlerFunc, 'RootMail/*') generates wildcard-action findings
121
+ // (literal action strings, portable across any deployment).
122
+ for (const action of ['s3:GetBucket*', 's3:GetObject*', 's3:List*']) {
123
+ aws_cdk_lib_1.Validations.of(isCompleteHandlerFunc).acknowledge({ id: `AwsSolutions-IAM5[Action::${action}]`, reason: 'scoped read access to the RootMail prefix, wildcard is the S3 action-family suffix' });
124
+ }
87
125
  }
88
126
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLXJlY2VpcHQtcnVsZXNldC1hY3RpdmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Nlcy1yZWNlaXB0LXJ1bGVzZXQtYWN0aXZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FPcUI7QUFDckIscUVBQStEO0FBQy9ELG1EQUFtRDtBQUNuRCxxQ0FBMEM7QUFDMUMsMkNBQTZDO0FBQzdDLHVIQU0yRDtBQVUzRCxNQUFhLDJCQUE0QixTQUFRLHNCQUFTO0lBQ3hELFlBQVksS0FBZ0IsRUFDMUIsRUFBVSxFQUFFLEtBQXVDO1FBQ25ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDbkMsWUFBWSxFQUFFLG1DQUFtQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZHLFlBQVksRUFBRSxxQ0FBcUM7WUFDbkQsVUFBVSxFQUFFO2dCQUNWLENBQUMsNkRBQVcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUMzQixDQUFDLGdFQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsU0FBUztnQkFDakMsQ0FBQyx1RUFBcUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVTtnQkFDckQsQ0FBQyw2RUFBMkIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxtQkFBbUI7Z0JBQ3hELENBQUMseUVBQXVCLENBQUMsRUFBRSxLQUFLLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGlDQUFpQzthQUNwRztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpCRCxrRUFpQkM7QUFNRCxNQUFNLG1DQUFvQyxTQUFRLHNCQUFTO0lBRXpEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFnQixFQUFF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LG1CQUFtQixFQUFFLE1BQU0sRUFBRSxvQ0FBb0MsRUFBRTtZQUN6RSxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsb0VBQW9FLEVBQUU7U0FDMUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEN1c3RvbVJlc291cmNlLFxuICBEdXJhdGlvbixcbiAgU3RhY2ssXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgTmFnU3VwcHJlc3Npb25zIH0gZnJvbSAnY2RrLW5hZyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIE5vZGUgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIFBST1BfRE9NQUlOLFxuICBQUk9QX1NVQkRPTUFJTixcbiAgUFJPUF9FTUFJTEJVQ0tFVF9OQU1FLFxuICBQUk9QX09QU19TQU5UQV9GVU5DVElPTl9BUk4sXG4gIEZJTFRFUkVEX0VNQUlMX1NVQkpFQ1RTLFxufSBmcm9tICcuL3Nlcy1yZWNlaXB0LXJ1bGVzZXQtYWN0aXZhdGlvbi5vbi1ldmVudC1oYW5kbGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb25Qcm9wcyB7XG4gIHJlYWRvbmx5IGRvbWFpbjogc3RyaW5nO1xuICByZWFkb25seSBzdWJkb21haW46IHN0cmluZztcbiAgcmVhZG9ubHkgZW1haWxidWNrZXQ6IHMzLklCdWNrZXQ7XG4gIHJlYWRvbmx5IG9wc1NhbnRhRnVuY3Rpb25Bcm46IHN0cmluZztcbiAgcmVhZG9ubHkgZmlsdGVyZWRFbWFpbFN1YmplY3RzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZywgcHJvcHM6IFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMsIHsgZW1haWxidWNrZXQ6IHByb3BzLmVtYWlsYnVja2V0IH0pLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb24nLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBbUFJPUF9ET01BSU5dOiBwcm9wcy5kb21haW4sXG4gICAgICAgIFtQUk9QX1NVQkRPTUFJTl06IHByb3BzLnN1YmRvbWFpbixcbiAgICAgICAgW1BST1BfRU1BSUxCVUNLRVRfTkFNRV06IHByb3BzLmVtYWlsYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIFtQUk9QX09QU19TQU5UQV9GVU5DVElPTl9BUk5dOiBwcm9wcy5vcHNTYW50YUZ1bmN0aW9uQXJuLFxuICAgICAgICBbRklMVEVSRURfRU1BSUxfU1VCSkVDVFNdOiBwcm9wcy5maWx0ZXJlZEVtYWlsU3ViamVjdHMuam9pbignLCcpLCAvLyBhcyB3ZSBjYW4gb25seSBwYXNzIGluIHN0cmluZ3NcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3ZpZGVyUHJvcHMge1xuICByZWFkb25seSBlbWFpbGJ1Y2tldDogczMuSUJ1Y2tldDtcbn1cblxuY2xhc3MgU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uUHJvdmlkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gcHJvdmlkZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldE9yQ3JlYXRlKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb25Qcm92aWRlclByb3BzKSB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gICAgY29uc3QgaWQgPSAncm9vdG1haWwuc2VzLXJlY2VpcHQtcnVsZXNldC1hY3RpdmF0aW9uLXByb3ZpZGVyJztcbiAgICBjb25zdCB4ID0gTm9kZS5vZihzdGFjaykudHJ5RmluZENoaWxkKGlkKSBhcyBTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb25Qcm92aWRlclxuICAgICAgfHwgbmV3IFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3ZpZGVyKHN0YWNrLCBpZCwgcHJvcHMpO1xuICAgIHJldHVybiB4LnByb3ZpZGVyLnNlcnZpY2VUb2tlbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZXI6IGNyLlByb3ZpZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb25Qcm92aWRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG9uRXZlbnRIYW5kbGVyRnVuY1JvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ1Nlc1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvbkN1c3RvbVJlc291cmNlUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgIH0pO1xuXG4gICAgb25FdmVudEhhbmRsZXJGdW5jUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZScpKTtcbiAgICBvbkV2ZW50SGFuZGxlckZ1bmNSb2xlLmFkZFRvUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3NlczpDcmVhdGVSZWNlaXB0UnVsZVNldCcsXG4gICAgICAgICAgJ3NlczpDcmVhdGVSZWNlaXB0UnVsZScsXG4gICAgICAgICAgJ3NlczpTZXRBY3RpdmVSZWNlaXB0UnVsZVNldCcsXG4gICAgICAgICAgJ3NlczpEZWxldGVSZWNlaXB0UnVsZScsXG4gICAgICAgICAgJ3NlczpEZWxldGVSZWNlaXB0UnVsZVNldCcsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3Qgb25FdmVudEhhbmRsZXJGdW5jID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHRoaXMsICdvbi1ldmVudC1oYW5kbGVyJywge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBsb2dSZXRlbnRpb246IDEsXG4gICAgICByb2xlOiBvbkV2ZW50SGFuZGxlckZ1bmNSb2xlLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICAvLyAgTm90ZTogd2UgdXNlIHRoZSByZXNvdXJjZSBwcm9wZXJ0aWVzIGZyb20gYWJvdmUgYXMgaXQgaXMgYSBDdXN0b21SZXNvdXJjZVxuICAgICAgZW52aXJvbm1lbnQ6IHt9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgaXNDb21wbGV0ZUhhbmRsZXJGdW5jID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHRoaXMsICdpcy1jb21wbGV0ZS1oYW5kbGVyJywge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBsb2dSZXRlbnRpb246IDEsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICAgIC8vICBOb3RlOiB3ZSB1c2UgdGhlIHJlc291cmNlIHByb3BlcnRpZXMgZnJvbSBhYm92ZSBhcyBpdCBpcyBhIEN1c3RvbVJlc291cmNlXG4gICAgICBlbnZpcm9ubWVudDoge30sXG4gICAgfSk7XG4gICAgcHJvcHMuZW1haWxidWNrZXQuZ3JhbnRSZWFkKGlzQ29tcGxldGVIYW5kbGVyRnVuYywgJ1Jvb3RNYWlsLyonKTtcblxuICAgIHRoaXMucHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ3Nlcy1yZWNlaXB0LXJ1bGVzZXQtYWN0aXZhdGlvbi1wcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBvbkV2ZW50SGFuZGxlckZ1bmMsXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZUhhbmRsZXJGdW5jLFxuICAgICAgcXVlcnlJbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgICB0b3RhbFRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMiksIC8vIFRPRE86IG1ha2UgdGhpcyBjb25maWd1cmFibGVcbiAgICAgIGxvZ1JldGVudGlvbjogMSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbXG4gICAgICAgIHRoaXMucHJvdmlkZXIsXG4gICAgICAgIHRoaXMucHJvdmlkZXIub25FdmVudEhhbmRsZXIsXG4gICAgICAgIHRoaXMucHJvdmlkZXIub25FdmVudEhhbmRsZXIucm9sZSEsXG4gICAgICAgIHRoaXMucHJvdmlkZXIuaXNDb21wbGV0ZUhhbmRsZXIhLFxuICAgICAgICB0aGlzLnByb3ZpZGVyLmlzQ29tcGxldGVIYW5kbGVyIS5yb2xlISxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsIHJlYXNvbjogJ25vIHNlcnZpY2Ugcm9sZSByZXN0cmljdGlvbiBuZWVkZWQnIH0sXG4gICAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsIHJlYXNvbjogJ3dpbGRjYXJkcyBhcmUgb2sgZm9yIHRoZSBwcm92aWRlciBhcyB0aGUgZnVuY3Rpb24gaGFzIHJlc3RyaWN0aW9ucycgfSxcbiAgICAgIF0sIHRydWUpO1xuICB9XG59Il19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLXJlY2VpcHQtcnVsZXNldC1hY3RpdmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Nlcy1yZWNlaXB0LXJ1bGVzZXQtYWN0aXZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FRcUI7QUFDckIscUVBQStEO0FBQy9ELGlFQUFtRDtBQUNuRCwyQ0FBNkM7QUFDN0MsdUhBTTJEO0FBVTNELE1BQWEsMkJBQTRCLFNBQVEsc0JBQVM7SUFDeEQsWUFBWSxLQUFnQixFQUMxQixFQUFVLEVBQUUsS0FBdUM7UUFDbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNuQyxZQUFZLEVBQUUsbUNBQW1DLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkcsWUFBWSxFQUFFLHFDQUFxQztZQUNuRCxVQUFVLEVBQUU7Z0JBQ1YsQ0FBQyw2REFBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQzNCLENBQUMsZ0VBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxTQUFTO2dCQUNqQyxDQUFDLHVFQUFxQixDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVO2dCQUNyRCxDQUFDLDZFQUEyQixDQUFDLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtnQkFDeEQsQ0FBQyx5RUFBdUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsaUNBQWlDO2FBQ3BHO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakJELGtFQWlCQztBQU1ELE1BQU0sbUNBQW9DLFNBQVEsc0JBQVM7SUFFekQ7O09BRUc7SUFDSSxNQUFNLENBQUMs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c0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNqRyxnR0FBZ0c7UUFDaEcsNERBQTREO1FBQzVELEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEUseUJBQVcsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsNkJBQTZCLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxvRkFBb0YsRUFBRSxDQUFDLENBQUM7UUFDbE0sQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEN1c3RvbVJlc291cmNlLFxuICBEdXJhdGlvbixcbiAgU3RhY2ssXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3MzIGFzIHMzLFxuICBWYWxpZGF0aW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgTm9kZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgUFJPUF9ET01BSU4sXG4gIFBST1BfU1VCRE9NQUlOLFxuICBQUk9QX0VNQUlMQlVDS0VUX05BTUUsXG4gIFBST1BfT1BTX1NBTlRBX0ZVTkNUSU9OX0FSTixcbiAgRklMVEVSRURfRU1BSUxfU1VCSkVDVFMsXG59IGZyb20gJy4vc2VzLXJlY2VpcHQtcnVsZXNldC1hY3RpdmF0aW9uLm9uLWV2ZW50LWhhbmRsZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3BzIHtcbiAgcmVhZG9ubHkgZG9tYWluOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN1YmRvbWFpbjogc3RyaW5nO1xuICByZWFkb25seSBlbWFpbGJ1Y2tldDogczMuSUJ1Y2tldDtcbiAgcmVhZG9ubHkgb3BzU2FudGFGdW5jdGlvbkFybjogc3RyaW5nO1xuICByZWFkb25seSBmaWx0ZXJlZEVtYWlsU3ViamVjdHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLCBwcm9wczogU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uUHJvdmlkZXIuZ2V0T3JDcmVhdGUodGhpcywgeyBlbWFpbGJ1Y2tldDogcHJvcHMuZW1haWxidWNrZXQgfSksXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OlNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvbicsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFtQUk9QX0RPTUFJTl06IHByb3BzLmRvbWFpbixcbiAgICAgICAgW1BST1BfU1VCRE9NQUlOXTogcHJvcHMuc3ViZG9tYWluLFxuICAgICAgICBbUFJPUF9FTUFJTEJVQ0tFVF9OQU1FXTogcHJvcHMuZW1haWxidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgW1BST1BfT1BTX1NBTlRBX0ZVTkNUSU9OX0FSTl06IHByb3BzLm9wc1NhbnRhRnVuY3Rpb25Bcm4sXG4gICAgICAgIFtGSUxURVJFRF9FTUFJTF9TVUJKRUNUU106IHByb3BzLmZpbHRlcmVkRW1haWxTdWJqZWN0cy5qb2luKCcsJyksIC8vIGFzIHdlIGNhbiBvbmx5IHBhc3MgaW4gc3RyaW5nc1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uUHJvdmlkZXJQcm9wcyB7XG4gIHJlYWRvbmx5IGVtYWlsYnVja2V0OiBzMy5JQnVja2V0O1xufVxuXG5jbGFzcyBTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb25Qcm92aWRlciBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBwcm92aWRlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3ZpZGVyUHJvcHMpIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgICBjb25zdCBpZCA9ICdyb290bWFpbC5zZXMtcmVjZWlwdC1ydWxlc2V0LWFjdGl2YXRpb24tcHJvdmlkZXInO1xuICAgIGNvbnN0IHggPSBOb2RlLm9mKHN0YWNrKS50cnlGaW5kQ2hpbGQoaWQpIGFzIFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3ZpZGVyXG4gICAgICB8fCBuZXcgU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uUHJvdmlkZXIoc3RhY2ssIGlkLCBwcm9wcyk7XG4gICAgcmV0dXJuIHgucHJvdmlkZXIuc2VydmljZVRva2VuO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcjogY3IuUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNFU1JlY2VpcHRSdWxlU2V0QWN0aXZhdGlvblByb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qgb25FdmVudEhhbmRsZXJGdW5jUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnU2VzUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uQ3VzdG9tUmVzb3VyY2VSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG5cbiAgICBvbkV2ZW50SGFuZGxlckZ1bmNSb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJykpO1xuICAgIG9uRXZlbnRIYW5kbGVyRnVuY1JvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnc2VzOkNyZWF0ZVJlY2VpcHRSdWxlU2V0JyxcbiAgICAgICAgICAnc2VzOkNyZWF0ZVJlY2VpcHRSdWxlJyxcbiAgICAgICAgICAnc2VzOlNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0JyxcbiAgICAgICAgICAnc2VzOkRlbGV0ZVJlY2VpcHRSdWxlJyxcbiAgICAgICAgICAnc2VzOkRlbGV0ZVJlY2VpcHRSdWxlU2V0JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBvbkV2ZW50SGFuZGxlckZ1bmMgPSBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgJ29uLWV2ZW50LWhhbmRsZXInLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgICAgIGxvZ1JldGVudGlvbjogMSxcbiAgICAgIHJvbGU6IG9uRXZlbnRIYW5kbGVyRnVuY1JvbGUsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICAgIC8vICBOb3RlOiB3ZSB1c2UgdGhlIHJlc291cmNlIHByb3BlcnRpZXMgZnJvbSBhYm92ZSBhcyBpdCBpcyBhIEN1c3RvbVJlc291cmNlXG4gICAgICBlbnZpcm9ubWVudDoge30sXG4gICAgfSk7XG5cbiAgICBjb25zdCBpc0NvbXBsZXRlSGFuZGxlckZ1bmMgPSBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgJ2lzLWNvbXBsZXRlLWhhbmRsZXInLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgICAgIGxvZ1JldGVudGlvbjogMSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgLy8gIE5vdGU6IHdlIHVzZSB0aGUgcmVzb3VyY2UgcHJvcGVydGllcyBmcm9tIGFib3ZlIGFzIGl0IGlzIGEgQ3VzdG9tUmVzb3VyY2VcbiAgICAgIGVudmlyb25tZW50OiB7fSxcbiAgICB9KTtcbiAgICBwcm9wcy5lbWFpbGJ1Y2tldC5ncmFudFJlYWQoaXNDb21wbGV0ZUhhbmRsZXJGdW5jLCAnUm9vdE1haWwvKicpO1xuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnc2VzLXJlY2VpcHQtcnVsZXNldC1hY3RpdmF0aW9uLXByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnRIYW5kbGVyRnVuYyxcbiAgICAgIGlzQ29tcGxldGVIYW5kbGVyOiBpc0NvbXBsZXRlSGFuZGxlckZ1bmMsXG4gICAgICBxdWVyeUludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICAgIHRvdGFsVGltZW91dDogRHVyYXRpb24ubWludXRlcygyKSwgLy8gVE9ETzogbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZVxuICAgICAgbG9nUmV0ZW50aW9uOiAxLFxuICAgIH0pO1xuICAgIC8vIEdyYW51bGFyIGZpbmRpbmdzIG9ubHkuIFBvcnRhYmxlIElEcyBvbmx5OiBSZXNvdXJjZTo6KiBpcyBjb25zdGFudCBhY3Jvc3MgYW55IGRlcGxveW1lbnQsXG4gICAgLy8gUmVzb3VyY2U6Ojxsb2dpY2FsLWlkPiBmaW5kaW5ncyBhcmUgbm90LiBBd3NTb2x1dGlvbnMtSUFNNFtQb2xpY3k6Oi4uLl0gY2Fubm90IGJlXG4gICAgLy8gYWNrbm93bGVkZ2VkIGF0IGFsbCByaWdodCBub3cgLSBhd3MtY2RrLWxpYidzIFZhbGlkYXRpb25zLmFja25vd2xlZGdlKCkgcmVqZWN0cyBhbnkgaWQgd2l0aFxuICAgIC8vIG1vcmUgdGhhbiBvbmUgJzo6JywgYW5kIEFXUyBtYW5hZ2VkIHBvbGljeSBBUk5zIGFsd2F5cyBjb250YWluIG9uZSAoY2RrbGFicy9jZGstbmFnIzIzNTksXG4gICAgLy8gIzIzNTEsIGJvdGggb3BlbiB1cHN0cmVhbSkuIFNlZSBkb2NzL3BsYW5zLzIwMjYtMDgtMDktYnVtcC1tdmMtcHJvamVuLWNkay1uYWctdjMubWQgVGFzayAzLlxuICAgIC8vIG9uRXZlbnRIYW5kbGVyRnVuY1JvbGUgaXMgYWNrbm93bGVkZ2VkIGRpcmVjdGx5IChub3QgdmlhIHRoaXMucHJvdmlkZXIub25FdmVudEhhbmRsZXIpIHNpbmNlXG4gICAgLy8gaXQgaXMgcGFzc2VkIGluIGFzIGFuIGV4cGxpY2l0IHJvbGUgLSBhIHNpYmxpbmcgY29uc3RydWN0LCBub3QgYSBkZXNjZW5kYW50IG9mIHRoZSBGdW5jdGlvbi5cbiAgICBjb25zdCBpYW01UmVzb3VyY2VTdGFyID0gJ0F3c1NvbHV0aW9ucy1JQU01W1Jlc291cmNlOjoqXSc7XG4gICAgY29uc3QgcmVhc29uSWFtNSA9ICd3aWxkY2FyZHMgYXJlIG9rIGZvciB0aGUgcHJvdmlkZXIgYXMgdGhlIGZ1bmN0aW9uIGhhcyByZXN0cmljdGlvbnMnO1xuXG4gICAgVmFsaWRhdGlvbnMub2Yob25FdmVudEhhbmRsZXJGdW5jUm9sZSkuYWNrbm93bGVkZ2UoeyBpZDogaWFtNVJlc291cmNlU3RhciwgcmVhc29uOiByZWFzb25JYW01IH0pO1xuICAgIC8vIGVtYWlsYnVja2V0LmdyYW50UmVhZChpc0NvbXBsZXRlSGFuZGxlckZ1bmMsICdSb290TWFpbC8qJykgZ2VuZXJhdGVzIHdpbGRjYXJkLWFjdGlvbiBmaW5kaW5nc1xuICAgIC8vIChsaXRlcmFsIGFjdGlvbiBzdHJpbmdzLCBwb3J0YWJsZSBhY3Jvc3MgYW55IGRlcGxveW1lbnQpLlxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIFsnczM6R2V0QnVja2V0KicsICdzMzpHZXRPYmplY3QqJywgJ3MzOkxpc3QqJ10pIHtcbiAgICAgIFZhbGlkYXRpb25zLm9mKGlzQ29tcGxldGVIYW5kbGVyRnVuYykuYWNrbm93bGVkZ2UoeyBpZDogYEF3c1NvbHV0aW9ucy1JQU01W0FjdGlvbjo6JHthY3Rpb259XWAsIHJlYXNvbjogJ3Njb3BlZCByZWFkIGFjY2VzcyB0byB0aGUgUm9vdE1haWwgcHJlZml4LCB3aWxkY2FyZCBpcyB0aGUgUzMgYWN0aW9uLWZhbWlseSBzdWZmaXgnIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.SESReceive = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
5
  const aws_cdk_lib_1 = require("aws-cdk-lib");
7
6
  const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
8
- const cdk_nag_1 = require("cdk-nag");
9
7
  const constructs_1 = require("constructs");
10
8
  const common_1 = require("./common");
11
9
  const ses_receipt_ruleset_activation_1 = require("./ses-receipt-ruleset-activation");
@@ -13,6 +11,7 @@ const ses_receipt_ruleset_activation_1 = require("./ses-receipt-ruleset-activati
13
11
  * SES Receive construct
14
12
  */
15
13
  class SESReceive extends constructs_1.Construct {
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@mavogel/awscdk-rootmail.SESReceive", version: "0.1.0" };
16
15
  constructor(scope, id, props) {
17
16
  super(scope, id);
18
17
  const filteredEmailSubjects = props.filteredEmailSubjects || [];
@@ -68,12 +67,15 @@ class SESReceive extends constructs_1.Construct {
68
67
  }),
69
68
  },
70
69
  });
71
- cdk_nag_1.NagSuppressions.addResourceSuppressions([
72
- opsSantaFunctionRole,
73
- ], [
74
- { id: 'AwsSolutions-IAM4', reason: 'no service role restriction needed' },
75
- { id: 'AwsSolutions-IAM5', reason: 'wildcards are ok as we allow every opsitem to be created' },
76
- ], true);
70
+ // Portable findings only: Resource::* is constant across any deployment. Resource::<logical-id>
71
+ // findings (from the s3:GetObject and ssm:PutParameter statements above) are NOT acknowledged
72
+ // here - cdk-nag v3 matches those by exact string including a per-app-generated logical ID /
73
+ // literal account+region, so a value harvested from this test would not match a consumer's
74
+ // deployment. AwsSolutions-IAM4[Policy::...] cannot be acknowledged at all right now - aws-cdk-lib's
75
+ // Validations.acknowledge() rejects any id with more than one '::', and AWS managed policy ARNs
76
+ // always contain one (cdklabs/cdk-nag#2359, #2351, both open upstream). See
77
+ // docs/plans/2026-08-09-bump-mvc-projen-cdk-nag-v3.md Task 3.
78
+ aws_cdk_lib_1.Validations.of(opsSantaFunctionRole).acknowledge({ id: 'AwsSolutions-IAM5[Resource::*]', reason: 'wildcards are ok as we allow every opsitem to be created' });
77
79
  let opsSantaFunction;
78
80
  if (props.customSesReceiveFunction) {
79
81
  opsSantaFunction = props.customSesReceiveFunction;
@@ -97,7 +99,7 @@ class SESReceive extends constructs_1.Construct {
97
99
  opsSantaFunction = new aws_lambda_nodejs_1.NodejsFunction(this, 'ops-santa-handler', {
98
100
  handler: 'handler',
99
101
  role: opsSantaFunctionRole,
100
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_18_X,
102
+ runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_24_X,
101
103
  timeout: aws_cdk_lib_1.Duration.seconds(60),
102
104
  logRetention: 3,
103
105
  environment: {
@@ -129,8 +131,6 @@ class SESReceive extends constructs_1.Construct {
129
131
  }
130
132
  }
131
133
  exports.SESReceive = SESReceive;
132
- _a = JSII_RTTI_SYMBOL_1;
133
- SESReceive[_a] = { fqn: "@mavogel/awscdk-rootmail.SESReceive", version: "0.0.336" };
134
134
  /**
135
135
  * Aspect for setting all removal policies to DESTROY
136
136
  */
@@ -141,4 +141,4 @@ class ApplyDestroyPolicyAspect {
141
141
  }
142
142
  }
143
143
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLXJlY2VpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VzLXJlY2VpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FZcUI7QUFDckIscUVBQStEO0FBQy9ELHFDQUEwQztBQUMxQywyQ0FBbUQ7QUFDbkQscUNBQWlFO0FBQ2pFLHFGQUErRTtBQStDL0U7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQUN2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLElBQUksRUFBRSxDQUFDO1FBRWhFLE1BQU0sWUFBWSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBQSwyQkFBa0IsRUFBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLFlBQVksdUNBQXVDLDBCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkksQ0FBQztRQUVELE1BQU0sOEJBQThCLEdBQUcsSUFBSSxxQkFBRyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLHFCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUN0RSxTQUFTLEVBQUUsSUFBSSxxQkFBRyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQzNELGVBQWUsRUFBRSxDQUFDLHFCQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDekcsY0FBYyxFQUFFO2dCQUNkLDBCQUEwQixFQUFFLElBQUkscUJBQUcs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LENBQUM7SUFDSCxDQUFDOztBQXpISCxnQ0EwSEM7OztBQUVEOztHQUVHO0FBQ0gsTUFBTSx3QkFBd0I7SUFDckIsS0FBSyxDQUFDLElBQWdCO1FBQzNCLElBQUksSUFBSSxZQUFZLHlCQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXJuLFxuICBBcm5Gb3JtYXQsXG4gIEFzcGVjdHMsXG4gIENmblJlc291cmNlLFxuICBEdXJhdGlvbixcbiAgSUFzcGVjdCxcbiAgUmVtb3ZhbFBvbGljeSxcbiAgU3RhY2ssXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCB7IE5hZ1N1cHByZXNzaW9ucyB9IGZyb20gJ2Nkay1uYWcnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBpc1NFU0VuYWJsZWRSZWdpb24sIHNlc0VuYWJsZWRSZWdpb25zIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uIH0gZnJvbSAnLi9zZXMtcmVjZWlwdC1ydWxlc2V0LWFjdGl2YXRpb24nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBTRVNSZWNlaXZlIGNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNFU1JlY2VpdmVQcm9wcyB7XG4gIC8qKlxuICAgKiBEb21haW4gdXNlZCBmb3Igcm9vdCBtYWlsIGZlYXR1cmUuXG4gICAqL1xuICByZWFkb25seSBkb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogU3ViZG9tYWluIHVzZWQgZm9yIHJvb3QgbWFpbCBmZWF0dXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3ViZG9tYWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIGJ1Y2tldCB0byBzdG9yZSByZWNlaXZlZCBlbWFpbHNcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpwcmVmZXItcmVmLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IGVtYWlsYnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIFNFUyByZWNlaXZlIGZ1bmN0aW9uIHRvIHVzZVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXVxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgcHJvdmlkZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgY29uc3RydWN0XG4gICAqL1xuICByZWFkb25seSBjdXN0b21TZXNSZWNlaXZlRnVuY3Rpb24/OiBsYW1iZGEuRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEZpbHRlcmVkIGVtYWlsIHN1YmplY3RzLiBOT1RFOiBtdXN0IG5vdCBjb250YWluIGNvbW1hcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMiBzdWJqZWN0czogJ1lvdXIgQVdTIEFjY291bnQgaXMgUmVhZHkgLSBHZXQgU3RhcnRlZCBOb3cnIGFuZCAnV2VsY29tZSB0byBBbWF6b24gV2ViIFNlcnZpY2VzJ1xuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyZWRFbWFpbFN1YmplY3RzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2V0IGFsbCByZW1vdmFsIHBvbGljaWVzIHRvIERFU1RST1kuIFRoaXMgaXMgdXNlZnVsIGZvciBpbnRlZ3JhdGlvbiB0ZXN0aW5nIHB1cnBvc2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RGVzdHJveVBvbGljeVRvQWxsUmVzb3VyY2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTRVMgUmVjZWl2ZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGNsYXNzIFNFU1JlY2VpdmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU0VTUmVjZWl2ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGZpbHRlcmVkRW1haWxTdWJqZWN0cyA9IHByb3BzLmZpbHRlcmVkRW1haWxTdWJqZWN0cyB8fCBbXTtcblxuICAgIGNvbnN0IGRlcGxveVJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICBpZiAoIWlzU0VTRW5hYmxlZFJlZ2lvbihkZXBsb3lSZWdpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNFUyBpcyBub3QgYXZhaWxhYmxlIGluIHJlZ2lvbiAke2RlcGxveVJlZ2lvbn0uIFVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyByZWdpb25zOiAke3Nlc0VuYWJsZWRSZWdpb25zLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3BzU2FudGFGdW5jdGlvblNFU1Blcm1pc3Npb25zID0gbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzZXMuYW1hem9uYXdzLmNvbScpO1xuICAgIGNvbnN0IG9wc1NhbnRhRnVuY3Rpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdPcHNTYW50YUZ1bmN0aW9uUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJyldLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgT3BzU2FudGFGdW5jdGlvblJvbGVQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3MzOkdldE9iamVjdCcsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIHByb3BzLmVtYWlsYnVja2V0LmFybkZvck9iamVjdHMoJ1Jvb3RNYWlsLyonKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnc3NtOkNyZWF0ZU9wc0l0ZW0nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAnKicsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3NzbTpQdXRQYXJhbWV0ZXInLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAvLyBhcm46JHtBV1M6OlBhcnRpdGlvbn06c3NtOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9OnBhcmFtZXRlci9yb290bWFpbC8qXG4gICAgICAgICAgICAgICAgLy8gYXJuOntwYXJ0aXRpb259OntzZXJ2aWNlfTp7cmVnaW9ufTp7YWNjb3VudH06e3Jlc291cmNlfXtzZXB9e3Jlc291cmNlLW5hbWV9XG4gICAgICAgICAgICAgICAgQXJuLmZvcm1hdCh7XG4gICAgICAgICAgICAgICAgICBwYXJ0aXRpb246IFN0YWNrLm9mKHRoaXMpLnBhcnRpdGlvbixcbiAgICAgICAgICAgICAgICAgIHNlcnZpY2U6ICdzc20nLFxuICAgICAgICAgICAgICAgICAgcmVnaW9uOiBTdGFjay5vZih0aGlzKS5yZWdpb24sXG4gICAgICAgICAgICAgICAgICBhY2NvdW50OiBTdGFjay5vZih0aGlzKS5hY2NvdW50LFxuICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6ICdwYXJhbWV0ZXInLFxuICAgICAgICAgICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZTogJ3Jvb3RtYWlsLyonLFxuICAgICAgICAgICAgICAgIH0sIFN0YWNrLm9mKHRoaXMpKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbXG4gICAgICAgIG9wc1NhbnRhRnVuY3Rpb25Sb2xlLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgeyBpZDogJ0F3c1NvbHV0aW9ucy1JQU00JywgcmVhc29uOiAnbm8gc2VydmljZSByb2xlIHJlc3RyaWN0aW9uIG5lZWRlZCcgfSxcbiAgICAgICAgeyBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JywgcmVhc29uOiAnd2lsZGNhcmRzIGFyZSBvayBhcyB3ZSBhbGxvdyBldmVyeSBvcHNpdGVtIHRvIGJlIGNyZWF0ZWQnIH0sXG4gICAgICBdLCB0cnVlKTtcblxuICAgIGxldCBvcHNTYW50YUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb247XG4gICAgaWYgKHByb3BzLmN1c3RvbVNlc1JlY2VpdmVGdW5jdGlvbikge1xuICAgICAgb3BzU2FudGFGdW5jdGlvbiA9IHByb3BzLmN1c3RvbVNlc1JlY2VpdmVGdW5jdGlvbjtcbiAgICAgIG9wc1NhbnRhRnVuY3Rpb24ucm9sZT8uYXR0YWNoSW5saW5lUG9saWN5KG5ldyBpYW0uUG9saWN5KHRoaXMsICdDdXN0b21TZXNSZWNlaXZlRnVuY3Rpb25Qb2xpY3knLCB7XG4gICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICdzMzpHZXRPYmplY3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICBwcm9wcy5lbWFpbGJ1Y2tldC5hcm5Gb3JPYmplY3RzKCdSb290TWFpbC8qJyksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgb3BzU2FudGFGdW5jdGlvbi5hZGRFbnZpcm9ubWVudCgnRU1BSUxfQlVDS0VUJywgcHJvcHMuZW1haWxidWNrZXQuYnVja2V0TmFtZSk7XG4gICAgICBvcHNTYW50YUZ1bmN0aW9uLmFkZEVudmlyb25tZW50KCdFTUFJTF9CVUNLRVRfQVJOJywgcHJvcHMuZW1haWxidWNrZXQuYnVja2V0QXJuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3BzU2FudGFGdW5jdGlvbiA9IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCAnb3BzLXNhbnRhLWhhbmRsZXInLCB7XG4gICAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgICAgcm9sZTogb3BzU2FudGFGdW5jdGlvblJvbGUsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgICAgbG9nUmV0ZW50aW9uOiAzLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIEVNQUlMX0JVQ0tFVDogcHJvcHMuZW1haWxidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBFTUFJTF9CVUNLRVRfQVJOOiBwcm9wcy5lbWFpbGJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgICAgUk9PVE1BSUxfREVQTE9ZX1JFR0lPTjogU3RhY2sub2YodGhpcykucmVnaW9uLFxuICAgICAgICAgIEZJTFRFUkVEX0VNQUlMX1NVQkpFQ1RTOiBmaWx0ZXJlZEVtYWlsU3ViamVjdHMuam9pbignLCcpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIHdpbGwgYmUgYWRkZWQgaW4gYm90aCB3YXlzXG4gICAgb3BzU2FudGFGdW5jdGlvbi5hZGRQZXJtaXNzaW9uKCdPcHNTYW50YUZ1bmN0aW9uU0VTUGVybWlzc2lvbnMnLCB7XG4gICAgICBwcmluY2lwYWw6IG9wc1NhbnRhRnVuY3Rpb25TRVNQZXJtaXNzaW9ucyxcbiAgICAgIGFjdGlvbjogJ2xhbWJkYTpJbnZva2VGdW5jdGlvbicsXG4gICAgICBzb3VyY2VBY2NvdW50OiBTdGFjay5vZih0aGlzKS5hY2NvdW50LFxuICAgIH0pO1xuXG4gICAgLy8gQ1IgdG8gYWN0aXZhdGUgU0VTIHJlY2VpcHQgcnVsZSBzZXRcbiAgICBuZXcgU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uKHRoaXMsICdTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb24nLCB7XG4gICAgICBkb21haW46IHByb3BzLmRvbWFpbixcbiAgICAgIHN1YmRvbWFpbjogcHJvcHMuc3ViZG9tYWluLFxuICAgICAgZW1haWxidWNrZXQ6IHByb3BzLmVtYWlsYnVja2V0LFxuICAgICAgb3BzU2FudGFGdW5jdGlvbkFybjogb3BzU2FudGFGdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICAgIGZpbHRlcmVkRW1haWxTdWJqZWN0czogZmlsdGVyZWRFbWFpbFN1YmplY3RzLFxuICAgIH0pO1xuXG4gICAgLy8gSWYgRGVzdHJveSBQb2xpY3kgQXNwZWN0IGlzIHByZXNlbnQ6XG4gICAgaWYgKHByb3BzLnNldERlc3Ryb3lQb2xpY3lUb0FsbFJlc291cmNlcykge1xuICAgICAgQXNwZWN0cy5vZih0aGlzKS5hZGQobmV3IEFwcGx5RGVzdHJveVBvbGljeUFzcGVjdCgpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBc3BlY3QgZm9yIHNldHRpbmcgYWxsIHJlbW92YWwgcG9saWNpZXMgdG8gREVTVFJPWVxuICovXG5jbGFzcyBBcHBseURlc3Ryb3lQb2xpY3lBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENmblJlc291cmNlKSB7XG4gICAgICBub2RlLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgIH1cbiAgfVxufSJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLXJlY2VpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VzLXJlY2VpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQWFxQjtBQUNyQixxRUFBK0Q7QUFDL0QsMkNBQW1EO0FBQ25ELHFDQUFpRTtBQUNqRSxxRkFBK0U7QUErQy9FOztHQUVHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVM7O0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7UUFFaEUsTUFBTSxZQUFZLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFBLDJCQUFrQixFQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsWUFBWSx1Q0FBdUMsMEJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2SSxDQUFDO1FBRUQsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLHFCQUFHLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyRixNQUFNLG9CQUFvQixHQUFHLElBQUkscUJBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ3RFLFNBQVMsRUFBRSxJQUFJLHFCQUFHLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDM0QsZUFBZSxFQUFFLENBQUMscUJBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsMENBQTBDLENBQUMsQ0FBQztZQUN6RyxjQUFjLEVBQUU7Z0JBQ2QsMEJBQTBCLEVBQUUsSUFBSSxxQkFBRyxDQUFDLGNBQWMsQ0FBQztvQkFDakQsVUFBVSxFQUFFO3dCQUNWLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLOzRCQUN4QixPQUFPLEVBQUU7Z0NBQ1AsY0FBYzs2QkFDZjs0QkFDRCxTQUFTLEVBQUU7Z0NBQ1QsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDOzZCQUM5Qzt5QkFDRixDQUFDO3dCQUNGLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLOzRCQUN4QixPQUFPLEVBQUU7Z0NBQ1AsbUJBQW1COzZCQUNwQjs0QkFDRCxTQUFTLEVBQUU7Z0NBQ1QsR0FBRzs2QkFDSjt5QkFDRixDQUFDO3dCQUNGLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLOzRCQUN4QixPQUFPLEVBQUU7Z0NBQ1Asa0JBQWtCOzZCQUNuQjs0QkFDRCxTQUFTLEVBQUU7Z0NBQ1Qsa0ZBQWtGO2dDQUNsRiw4RUFBOEU7Z0NBQzlFLGlCQUFHLENBQUMsTUFBTSxDQUFDO29DQUNULFNBQVMsRUFBRSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTO29DQUNuQyxPQUFPLEVBQUUsS0FBSztvQ0FDZCxNQUFNLEVBQUUsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTTtvQ0FDN0IsT0FBTyxFQUFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87b0NBQy9CLFFBQVEsRUFBRSxXQUFXO29DQUNyQixTQUFTLEVBQUUsdUJBQVMsQ0FBQyxtQkFBbUI7b0NBQ3hDLFlBQVksRUFBRSxZQUFZO2lDQUMzQixFQUFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUNuQjt5QkFDRixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUNILGdHQUFnRztRQUNoRyw4RkFBOEY7UUFDOUYsNkZBQTZGO1FBQzdGLDJGQUEyRjtRQUMzRixxR0FBcUc7UUFDckcsZ0dBQWdHO1FBQ2hHLDRFQUE0RTtRQUM1RSw4REFBOEQ7UUFDOUQseUJBQVcsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxFQUFFLDBEQUEwRCxFQUFFLENBQUMsQ0FBQztRQUUvSixJQUFJLGdCQUFpQyxDQUFDO1FBQ3RDLElBQUksS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbkMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixDQUFDO1lBQ2xELGdCQUFnQixDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLHFCQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxnQ0FBZ0MsRUFBRTtnQkFDL0YsVUFBVSxFQUFFO29CQUNWLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO3dCQUN4QixPQUFPLEVBQUU7NEJBQ1AsY0FBYzt5QkFDZjt3QkFDRCxTQUFTLEVBQUU7NEJBQ1QsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO3lCQUM5QztxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQyxDQUFDLENBQUM7WUFDSixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUUsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkYsQ0FBQzthQUFNLENBQUM7WUFDTixnQkFBZ0IsR0FBRyxJQUFJLGtDQUFjLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO2dCQUMvRCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsT0FBTyxFQUFFLHdCQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQ25DLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLFlBQVksRUFBRSxDQUFDO2dCQUNmLFdBQVcsRUFBRTtvQkFDWCxZQUFZLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVO29CQUMxQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVM7b0JBQzdDLHNCQUFzQixFQUFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU07b0JBQzdDLHVCQUF1QixFQUFFLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ3pEO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELDZCQUE2QjtRQUM3QixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLEVBQUU7WUFDL0QsU0FBUyxFQUFFLDhCQUE4QjtZQUN6QyxNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLGFBQWEsRUFBRSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPO1NBQ3RDLENBQUMsQ0FBQztRQUVILHNDQUFzQztRQUN0QyxJQUFJLDREQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtZQUNuRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXO1lBQ2pELHFCQUFxQixFQUFFLHFCQUFxQjtTQUM3QyxDQUFDLENBQUM7UUFFSCx1Q0FBdUM7UUFDdkMsSUFBSSxLQUFLLENBQUMsOEJBQThCLEVBQUUsQ0FBQztZQUN6QyxxQkFBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7O0FBMUhILGdDQTJIQztBQUVEOztHQUVHO0FBQ0gsTUFBTSx3QkFBd0I7SUFDckIsS0FBSyxDQUFDLElBQWdCO1FBQzNCLElBQUksSUFBSSxZQUFZLHlCQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXJuLFxuICBBcm5Gb3JtYXQsXG4gIEFzcGVjdHMsXG4gIENmblJlc291cmNlLFxuICBEdXJhdGlvbixcbiAgSUFzcGVjdCxcbiAgUmVtb3ZhbFBvbGljeSxcbiAgU3RhY2ssXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3MzIGFzIHMzLFxuICBWYWxpZGF0aW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGlzU0VTRW5hYmxlZFJlZ2lvbiwgc2VzRW5hYmxlZFJlZ2lvbnMgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb24gfSBmcm9tICcuL3Nlcy1yZWNlaXB0LXJ1bGVzZXQtYWN0aXZhdGlvbic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIFNFU1JlY2VpdmUgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU0VTUmVjZWl2ZVByb3BzIHtcbiAgLyoqXG4gICAqIERvbWFpbiB1c2VkIGZvciByb290IG1haWwgZmVhdHVyZS5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdWJkb21haW4gdXNlZCBmb3Igcm9vdCBtYWlsIGZlYXR1cmUuXG4gICAqL1xuICByZWFkb25seSBzdWJkb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogUzMgYnVja2V0IHRvIHN0b3JlIHJlY2VpdmVkIGVtYWlsc1xuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OnByZWZlci1yZWYtaW50ZXJmYWNlXVxuICAgKi9cbiAgcmVhZG9ubHkgZW1haWxidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gU0VTIHJlY2VpdmUgZnVuY3Rpb24gdG8gdXNlXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6cmVmLXZpYS1pbnRlcmZhY2VdXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBwcm92aWRlZCBmdW5jdGlvbnMgd2l0aGluIHRoZSBjb25zdHJ1Y3RcbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbVNlc1JlY2VpdmVGdW5jdGlvbj86IGxhbWJkYS5GdW5jdGlvbjtcblxuICAvKipcbiAgICogRmlsdGVyZWQgZW1haWwgc3ViamVjdHMuIE5PVEU6IG11c3Qgbm90IGNvbnRhaW4gY29tbWFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyIHN1YmplY3RzOiAnWW91ciBBV1MgQWNjb3VudCBpcyBSZWFkeSAtIEdldCBTdGFydGVkIE5vdycgYW5kICdXZWxjb21lIHRvIEFtYXpvbiBXZWIgU2VydmljZXMnXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJlZEVtYWlsU3ViamVjdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzZXQgYWxsIHJlbW92YWwgcG9saWNpZXMgdG8gREVTVFJPWS4gVGhpcyBpcyB1c2VmdWwgZm9yIGludGVncmF0aW9uIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzZXREZXN0cm95UG9saWN5VG9BbGxSZXNvdXJjZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNFUyBSZWNlaXZlIGNvbnN0cnVjdFxuICovXG5leHBvcnQgY2xhc3MgU0VTUmVjZWl2ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTRVNSZWNlaXZlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZmlsdGVyZWRFbWFpbFN1YmplY3RzID0gcHJvcHMuZmlsdGVyZWRFbWFpbFN1YmplY3RzIHx8IFtdO1xuXG4gICAgY29uc3QgZGVwbG95UmVnaW9uID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIGlmICghaXNTRVNFbmFibGVkUmVnaW9uKGRlcGxveVJlZ2lvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU0VTIGlzIG5vdCBhdmFpbGFibGUgaW4gcmVnaW9uICR7ZGVwbG95UmVnaW9ufS4gVXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlZ2lvbnM6ICR7c2VzRW5hYmxlZFJlZ2lvbnMuam9pbignLCAnKX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHNTYW50YUZ1bmN0aW9uU0VTUGVybWlzc2lvbnMgPSBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3Nlcy5hbWF6b25hd3MuY29tJyk7XG4gICAgY29uc3Qgb3BzU2FudGFGdW5jdGlvblJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ09wc1NhbnRhRnVuY3Rpb25Sb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnKV0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBPcHNTYW50YUZ1bmN0aW9uUm9sZVBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnczM6R2V0T2JqZWN0JyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgcHJvcHMuZW1haWxidWNrZXQuYXJuRm9yT2JqZWN0cygnUm9vdE1haWwvKicpLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzc206Q3JlYXRlT3BzSXRlbScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgICcqJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnc3NtOlB1dFBhcmFtZXRlcicsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIC8vIGFybjoke0FXUzo6UGFydGl0aW9ufTpzc206JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06cGFyYW1ldGVyL3Jvb3RtYWlsLypcbiAgICAgICAgICAgICAgICAvLyBhcm46e3BhcnRpdGlvbn06e3NlcnZpY2V9OntyZWdpb259OnthY2NvdW50fTp7cmVzb3VyY2V9e3NlcH17cmVzb3VyY2UtbmFtZX1cbiAgICAgICAgICAgICAgICBBcm4uZm9ybWF0KHtcbiAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbjogU3RhY2sub2YodGhpcykucGFydGl0aW9uLFxuICAgICAgICAgICAgICAgICAgc2VydmljZTogJ3NzbScsXG4gICAgICAgICAgICAgICAgICByZWdpb246IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbixcbiAgICAgICAgICAgICAgICAgIGFjY291bnQ6IFN0YWNrLm9mKHRoaXMpLmFjY291bnQsXG4gICAgICAgICAgICAgICAgICByZXNvdXJjZTogJ3BhcmFtZXRlcicsXG4gICAgICAgICAgICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAncm9vdG1haWwvKicsXG4gICAgICAgICAgICAgICAgfSwgU3RhY2sub2YodGhpcykpLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIC8vIFBvcnRhYmxlIGZpbmRpbmdzIG9ubHk6IFJlc291cmNlOjoqIGlzIGNvbnN0YW50IGFjcm9zcyBhbnkgZGVwbG95bWVudC4gUmVzb3VyY2U6Ojxsb2dpY2FsLWlkPlxuICAgIC8vIGZpbmRpbmdzIChmcm9tIHRoZSBzMzpHZXRPYmplY3QgYW5kIHNzbTpQdXRQYXJhbWV0ZXIgc3RhdGVtZW50cyBhYm92ZSkgYXJlIE5PVCBhY2tub3dsZWRnZWRcbiAgICAvLyBoZXJlIC0gY2RrLW5hZyB2MyBtYXRjaGVzIHRob3NlIGJ5IGV4YWN0IHN0cmluZyBpbmNsdWRpbmcgYSBwZXItYXBwLWdlbmVyYXRlZCBsb2dpY2FsIElEIC9cbiAgICAvLyBsaXRlcmFsIGFjY291bnQrcmVnaW9uLCBzbyBhIHZhbHVlIGhhcnZlc3RlZCBmcm9tIHRoaXMgdGVzdCB3b3VsZCBub3QgbWF0Y2ggYSBjb25zdW1lcidzXG4gICAgLy8gZGVwbG95bWVudC4gQXdzU29sdXRpb25zLUlBTTRbUG9saWN5OjouLi5dIGNhbm5vdCBiZSBhY2tub3dsZWRnZWQgYXQgYWxsIHJpZ2h0IG5vdyAtIGF3cy1jZGstbGliJ3NcbiAgICAvLyBWYWxpZGF0aW9ucy5hY2tub3dsZWRnZSgpIHJlamVjdHMgYW55IGlkIHdpdGggbW9yZSB0aGFuIG9uZSAnOjonLCBhbmQgQVdTIG1hbmFnZWQgcG9saWN5IEFSTnNcbiAgICAvLyBhbHdheXMgY29udGFpbiBvbmUgKGNka2xhYnMvY2RrLW5hZyMyMzU5LCAjMjM1MSwgYm90aCBvcGVuIHVwc3RyZWFtKS4gU2VlXG4gICAgLy8gZG9jcy9wbGFucy8yMDI2LTA4LTA5LWJ1bXAtbXZjLXByb2plbi1jZGstbmFnLXYzLm1kIFRhc2sgMy5cbiAgICBWYWxpZGF0aW9ucy5vZihvcHNTYW50YUZ1bmN0aW9uUm9sZSkuYWNrbm93bGVkZ2UoeyBpZDogJ0F3c1NvbHV0aW9ucy1JQU01W1Jlc291cmNlOjoqXScsIHJlYXNvbjogJ3dpbGRjYXJkcyBhcmUgb2sgYXMgd2UgYWxsb3cgZXZlcnkgb3BzaXRlbSB0byBiZSBjcmVhdGVkJyB9KTtcblxuICAgIGxldCBvcHNTYW50YUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb247XG4gICAgaWYgKHByb3BzLmN1c3RvbVNlc1JlY2VpdmVGdW5jdGlvbikge1xuICAgICAgb3BzU2FudGFGdW5jdGlvbiA9IHByb3BzLmN1c3RvbVNlc1JlY2VpdmVGdW5jdGlvbjtcbiAgICAgIG9wc1NhbnRhRnVuY3Rpb24ucm9sZT8uYXR0YWNoSW5saW5lUG9saWN5KG5ldyBpYW0uUG9saWN5KHRoaXMsICdDdXN0b21TZXNSZWNlaXZlRnVuY3Rpb25Qb2xpY3knLCB7XG4gICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICdzMzpHZXRPYmplY3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICBwcm9wcy5lbWFpbGJ1Y2tldC5hcm5Gb3JPYmplY3RzKCdSb290TWFpbC8qJyksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgb3BzU2FudGFGdW5jdGlvbi5hZGRFbnZpcm9ubWVudCgnRU1BSUxfQlVDS0VUJywgcHJvcHMuZW1haWxidWNrZXQuYnVja2V0TmFtZSk7XG4gICAgICBvcHNTYW50YUZ1bmN0aW9uLmFkZEVudmlyb25tZW50KCdFTUFJTF9CVUNLRVRfQVJOJywgcHJvcHMuZW1haWxidWNrZXQuYnVja2V0QXJuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3BzU2FudGFGdW5jdGlvbiA9IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCAnb3BzLXNhbnRhLWhhbmRsZXInLCB7XG4gICAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgICAgcm9sZTogb3BzU2FudGFGdW5jdGlvblJvbGUsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yNF9YLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgICAgbG9nUmV0ZW50aW9uOiAzLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIEVNQUlMX0JVQ0tFVDogcHJvcHMuZW1haWxidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBFTUFJTF9CVUNLRVRfQVJOOiBwcm9wcy5lbWFpbGJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgICAgUk9PVE1BSUxfREVQTE9ZX1JFR0lPTjogU3RhY2sub2YodGhpcykucmVnaW9uLFxuICAgICAgICAgIEZJTFRFUkVEX0VNQUlMX1NVQkpFQ1RTOiBmaWx0ZXJlZEVtYWlsU3ViamVjdHMuam9pbignLCcpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIHdpbGwgYmUgYWRkZWQgaW4gYm90aCB3YXlzXG4gICAgb3BzU2FudGFGdW5jdGlvbi5hZGRQZXJtaXNzaW9uKCdPcHNTYW50YUZ1bmN0aW9uU0VTUGVybWlzc2lvbnMnLCB7XG4gICAgICBwcmluY2lwYWw6IG9wc1NhbnRhRnVuY3Rpb25TRVNQZXJtaXNzaW9ucyxcbiAgICAgIGFjdGlvbjogJ2xhbWJkYTpJbnZva2VGdW5jdGlvbicsXG4gICAgICBzb3VyY2VBY2NvdW50OiBTdGFjay5vZih0aGlzKS5hY2NvdW50LFxuICAgIH0pO1xuXG4gICAgLy8gQ1IgdG8gYWN0aXZhdGUgU0VTIHJlY2VpcHQgcnVsZSBzZXRcbiAgICBuZXcgU0VTUmVjZWlwdFJ1bGVTZXRBY3RpdmF0aW9uKHRoaXMsICdTRVNSZWNlaXB0UnVsZVNldEFjdGl2YXRpb24nLCB7XG4gICAgICBkb21haW46IHByb3BzLmRvbWFpbixcbiAgICAgIHN1YmRvbWFpbjogcHJvcHMuc3ViZG9tYWluLFxuICAgICAgZW1haWxidWNrZXQ6IHByb3BzLmVtYWlsYnVja2V0LFxuICAgICAgb3BzU2FudGFGdW5jdGlvbkFybjogb3BzU2FudGFGdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICAgIGZpbHRlcmVkRW1haWxTdWJqZWN0czogZmlsdGVyZWRFbWFpbFN1YmplY3RzLFxuICAgIH0pO1xuXG4gICAgLy8gSWYgRGVzdHJveSBQb2xpY3kgQXNwZWN0IGlzIHByZXNlbnQ6XG4gICAgaWYgKHByb3BzLnNldERlc3Ryb3lQb2xpY3lUb0FsbFJlc291cmNlcykge1xuICAgICAgQXNwZWN0cy5vZih0aGlzKS5hZGQobmV3IEFwcGx5RGVzdHJveVBvbGljeUFzcGVjdCgpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBc3BlY3QgZm9yIHNldHRpbmcgYWxsIHJlbW92YWwgcG9saWNpZXMgdG8gREVTVFJPWVxuICovXG5jbGFzcyBBcHBseURlc3Ryb3lQb2xpY3lBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENmblJlc291cmNlKSB7XG4gICAgICBub2RlLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgIH1cbiAgfVxufSJdfQ==