@aws-solutions-constructs/core 2.98.0 → 2.100.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 (46) hide show
  1. package/.jsii +423 -19
  2. package/index.d.ts +2 -0
  3. package/index.js +3 -1
  4. package/lib/constructs-feature-flags.d.ts +2 -0
  5. package/lib/constructs-feature-flags.js +12 -6
  6. package/lib/polly-helper.d.ts +50 -0
  7. package/lib/polly-helper.js +138 -0
  8. package/lib/step-function-helper.js +12 -2
  9. package/lib/validation.d.ts +60 -0
  10. package/lib/validation.js +594 -0
  11. package/lib/vpc-helper.d.ts +2 -1
  12. package/lib/vpc-helper.js +7 -1
  13. package/nohoist.sh +6 -1
  14. package/package.json +4 -5
  15. package/test/alb-helper.test.js +14 -14
  16. package/test/apigateway-helper.test.js +4 -4
  17. package/test/bedrock-inference-helper.test.js +2 -2
  18. package/test/cloudfront-distribution-s3-helper.test.js +8 -8
  19. package/test/constructs-feature-flags.test.js +10 -3
  20. package/test/dynamo-table.test.js +4 -4
  21. package/test/elasticsearch-helper.test.js +2 -2
  22. package/test/eventbridge-helper.test.js +2 -2
  23. package/test/fargate-helper.test.js +9 -9
  24. package/test/glue-job-helper.test.js +4 -4
  25. package/test/kendra-helper.test.js +6 -6
  26. package/test/kinesis-streams-helper.test.js +2 -2
  27. package/test/lambda-helper.test.js +5 -5
  28. package/test/opensearch-helper.test.js +2 -2
  29. package/test/override-warning-service.test.js +13 -13
  30. package/test/pipes-helper.test.js +12 -12
  31. package/test/polly-helper.test.d.ts +13 -0
  32. package/test/polly-helper.test.js +495 -0
  33. package/test/s3-bucket.test.js +5 -5
  34. package/test/sagemaker-helper.test.js +7 -7
  35. package/test/secretsmanager-helper.test.js +2 -2
  36. package/test/sns-helper.test.js +7 -7
  37. package/test/sqs-helper.test.js +13 -13
  38. package/test/step-function-helper.test.js +6 -6
  39. package/test/test-helper.d.ts +1 -1
  40. package/test/test-helper.js +1 -1
  41. package/test/utils.test.js +9 -9
  42. package/test/validation.test.d.ts +13 -0
  43. package/test/validation.test.js +218 -0
  44. package/test/vpc-helper.test.js +33 -6
  45. package/test/waf-helper.test.js +2 -2
  46. package/test/websocket-api-helper.test.js +4 -4
@@ -12,7 +12,7 @@
12
12
  * and limitations under the License.
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ConstructsFeatureFlagsReport = void 0;
15
+ exports.ConstructsFeatureFlagsReport = exports.DISABLE_PROPERTY_VALIDATION = exports.QUEUE_USE_SSE = void 0;
16
16
  /*
17
17
  * The functions found here in the core library are for internal use and can be changed
18
18
  * or removed outside of a major release. We recommend against calling them directly from client code.
@@ -20,7 +20,8 @@ exports.ConstructsFeatureFlagsReport = void 0;
20
20
  const constructs_1 = require("constructs");
21
21
  const aws_cdk_lib_1 = require("aws-cdk-lib");
22
22
  const cloud_assembly_schema_1 = require("@aws-cdk/cloud-assembly-schema");
23
- const QUEUE_USE_SSE = "@aws-solutions-constructs/aws-sqs:QueueUseSse";
23
+ exports.QUEUE_USE_SSE = "@aws-solutions-constructs/aws-sqs:QueueUseSse";
24
+ exports.DISABLE_PROPERTY_VALIDATION = "@aws-solutions-constructs/core:DisablePropertyValidation";
24
25
  /**
25
26
  * A CDK L3 construct that creates resources for Solutions Feature Flags reporting
26
27
  */
@@ -51,13 +52,18 @@ class ConstructsFeatureFlagsReport extends constructs_1.Construct {
51
52
  }
52
53
  GetFlagDefinitions() {
53
54
  return {
54
- [QUEUE_USE_SSE]: {
55
+ [exports.QUEUE_USE_SSE]: {
55
56
  recommendedValue: true,
56
57
  explanation: "Change the default behavior for the construct to encrypt the queue using Server Side Encryption (SSE)",
57
- userValue: this.node.tryGetContext(QUEUE_USE_SSE)
58
- }
58
+ userValue: this.node.tryGetContext(exports.QUEUE_USE_SSE)
59
+ },
60
+ [exports.DISABLE_PROPERTY_VALIDATION]: {
61
+ recommendedValue: false,
62
+ explanation: "Suppress the validation of property names on incoming arguments of type any (suppress runtime type validation)",
63
+ userValue: this.node.tryGetContext(exports.DISABLE_PROPERTY_VALIDATION)
64
+ },
59
65
  };
60
66
  }
61
67
  }
62
68
  exports.ConstructsFeatureFlagsReport = ConstructsFeatureFlagsReport;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUg7OztHQUdHO0FBRUgsMkNBQXVDO0FBQ3ZDLDZDQUE0RTtBQUM1RSwwRUFBMkU7QUFFM0UsTUFBTSxhQUFhLEdBQUcsK0NBQStDLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBRWxELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBZ0I7UUFDbkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxnQ0FBZ0MsQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEtBQWdCLEVBQUUsRUFBVTtRQUM5QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUEsbUNBQXFCLEVBQUMsSUFBSSxFQUFFO1lBQzFCLFlBQVksRUFBRSxDQUFDLE9BQTBCLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsK0NBQStDLEVBQUU7b0JBQzVFLElBQUksRUFBRSxvQ0FBWSxDQUFDLG1CQUFtQjtvQkFDdEMsVUFBVSxFQUFFO3dCQUNWLE1BQU0sRUFBRSwyQkFBMkI7d0JBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7cUJBQ2pDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU87WUFDTCxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNmLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLFdBQVcsRUFBRSx1R0FBdUc7Z0JBQ3BILFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7YUFDbEQ7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNKO0FBdENELG9FQXNDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBcHAsIGF0dGFjaEN1c3RvbVN5bnRoZXNpcywgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBcnRpZmFjdFR5cGUsIEZlYXR1cmVGbGFnIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcblxuY29uc3QgUVVFVUVfVVNFX1NTRSA9IFwiQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9hd3Mtc3FzOlF1ZXVlVXNlU3NlXCI7XG5cbi8qKlxuICogQSBDREsgTDMgY29uc3RydWN0IHRoYXQgY3JlYXRlcyByZXNvdXJjZXMgZm9yIFNvbHV0aW9ucyBGZWF0dXJlIEZsYWdzIHJlcG9ydGluZ1xuICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0c0ZlYXR1cmVGbGFnc1JlcG9ydCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHVibGljIHN0YXRpYyBlbnN1cmUoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgIGNvbnN0IGFwcCA9IHNjb3BlLm5vZGUucm9vdDtcbiAgICBpZiAoIWFwcCB8fCAhQXBwLmlzQXBwKGFwcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzY29wZSBwcm92aWRlZCB0byBDb25zdHJ1Y3RzRmVhdHVyZUZsYWdzUmVwb3J0Jyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gJ0F3c1NvbHV0aW9uc0ZlYXR1cmVGbGFnc1JlcG9ydCc7XG4gICAgaWYgKCFhcHAubm9kZS50cnlGaW5kQ2hpbGQoaWQpKSB7XG4gICAgICBuZXcgQ29uc3RydWN0c0ZlYXR1cmVGbGFnc1JlcG9ydChhcHAsIGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgYXR0YWNoQ3VzdG9tU3ludGhlc2lzKHRoaXMsIHtcbiAgICAgIG9uU3ludGhlc2l6ZTogKHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKSA9PiB7XG4gICAgICAgIHNlc3Npb24uYXNzZW1ibHkuYWRkQXJ0aWZhY3QoXCJAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2ZlYXR1cmUtZmxhZy1yZXBvcnRcIiwge1xuICAgICAgICAgIHR5cGU6IEFydGlmYWN0VHlwZS5GRUFUVVJFX0ZMQUdfUkVQT1JULFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG1vZHVsZTogJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMnLFxuICAgICAgICAgICAgZmxhZ3M6IHRoaXMuR2V0RmxhZ0RlZmluaXRpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBHZXRGbGFnRGVmaW5pdGlvbnMoKTogUmVjb3JkIDwgc3RyaW5nLCBGZWF0dXJlRmxhZyA+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtRVUVVRV9VU0VfU1NFXToge1xuICAgICAgICAgIHJlY29tbWVuZGVkVmFsdWU6IHRydWUsXG4gICAgICAgICAgZXhwbGFuYXRpb246IFwiQ2hhbmdlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGUgY29uc3RydWN0IHRvIGVuY3J5cHQgdGhlIHF1ZXVlIHVzaW5nIFNlcnZlciBTaWRlIEVuY3J5cHRpb24gKFNTRSlcIixcbiAgICAgICAgICB1c2VyVmFsdWU6IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFFVRVVFX1VTRV9TU0UpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxufVxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUg7OztHQUdHO0FBRUgsMkNBQXVDO0FBQ3ZDLDZDQUE0RTtBQUM1RSwwRUFBMkU7QUFFOUQsUUFBQSxhQUFhLEdBQUcsK0NBQStDLENBQUM7QUFDaEUsUUFBQSwyQkFBMkIsR0FBRywwREFBMEQsQ0FBQztBQUV0Rzs7R0FFRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFFbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFnQjtRQUNuQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLGdDQUFnQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksNEJBQTRCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBb0IsS0FBZ0IsRUFBRSxFQUFVO1FBQzlDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBQSxtQ0FBcUIsRUFBQyxJQUFJLEVBQUU7WUFDMUIsWUFBWSxFQUFFLENBQUMsT0FBMEIsRUFBRSxFQUFFO2dCQUMzQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQywrQ0FBK0MsRUFBRTtvQkFDNUUsSUFBSSxFQUFFLG9DQUFZLENBQUMsbUJBQW1CO29CQUN0QyxVQUFVLEVBQUU7d0JBQ1YsTUFBTSxFQUFFLDJCQUEyQjt3QkFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtxQkFDakM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsT0FBTztZQUNMLENBQUMscUJBQWEsQ0FBQyxFQUFFO2dCQUNmLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLFdBQVcsRUFBRSx1R0FBdUc7Z0JBQ3BILFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBYSxDQUFDO2FBQ2xEO1lBQ0QsQ0FBQyxtQ0FBMkIsQ0FBQyxFQUFFO2dCQUM3QixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixXQUFXLEVBQUUsZ0hBQWdIO2dCQUM3SCxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUNBQTJCLENBQUM7YUFDaEU7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNKO0FBM0NELG9FQTJDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBcHAsIGF0dGFjaEN1c3RvbVN5bnRoZXNpcywgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBcnRpZmFjdFR5cGUsIEZlYXR1cmVGbGFnIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcblxuZXhwb3J0IGNvbnN0IFFVRVVFX1VTRV9TU0UgPSBcIkBhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvYXdzLXNxczpRdWV1ZVVzZVNzZVwiO1xuZXhwb3J0IGNvbnN0IERJU0FCTEVfUFJPUEVSVFlfVkFMSURBVElPTiA9IFwiQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlOkRpc2FibGVQcm9wZXJ0eVZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBBIENESyBMMyBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIHJlc291cmNlcyBmb3IgU29sdXRpb25zIEZlYXR1cmUgRmxhZ3MgcmVwb3J0aW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25zdHJ1Y3RzRmVhdHVyZUZsYWdzUmVwb3J0IGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBwdWJsaWMgc3RhdGljIGVuc3VyZShzY29wZTogQ29uc3RydWN0KSB7XG4gICAgY29uc3QgYXBwID0gc2NvcGUubm9kZS5yb290O1xuICAgIGlmICghYXBwIHx8ICFBcHAuaXNBcHAoYXBwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNjb3BlIHByb3ZpZGVkIHRvIENvbnN0cnVjdHNGZWF0dXJlRmxhZ3NSZXBvcnQnKTtcbiAgICB9XG4gICAgY29uc3QgaWQgPSAnQXdzU29sdXRpb25zRmVhdHVyZUZsYWdzUmVwb3J0JztcbiAgICBpZiAoIWFwcC5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIHtcbiAgICAgIG5ldyBDb25zdHJ1Y3RzRmVhdHVyZUZsYWdzUmVwb3J0KGFwcCwgaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBhdHRhY2hDdXN0b21TeW50aGVzaXModGhpcywge1xuICAgICAgb25TeW50aGVzaXplOiAoc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24pID0+IHtcbiAgICAgICAgc2Vzc2lvbi5hc3NlbWJseS5hZGRBcnRpZmFjdChcIkBhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvZmVhdHVyZS1mbGFnLXJlcG9ydFwiLCB7XG4gICAgICAgICAgdHlwZTogQXJ0aWZhY3RUeXBlLkZFQVRVUkVfRkxBR19SRVBPUlQsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgbW9kdWxlOiAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cycsXG4gICAgICAgICAgICBmbGFnczogdGhpcy5HZXRGbGFnRGVmaW5pdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIEdldEZsYWdEZWZpbml0aW9ucygpOiBSZWNvcmQgPCBzdHJpbmcsIEZlYXR1cmVGbGFnID4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW1FVRVVFX1VTRV9TU0VdOiB7XG4gICAgICAgICAgcmVjb21tZW5kZWRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICBleHBsYW5hdGlvbjogXCJDaGFuZ2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIHRoZSBjb25zdHJ1Y3QgdG8gZW5jcnlwdCB0aGUgcXVldWUgdXNpbmcgU2VydmVyIFNpZGUgRW5jcnlwdGlvbiAoU1NFKVwiLFxuICAgICAgICAgIHVzZXJWYWx1ZTogdGhpcy5ub2RlLnRyeUdldENvbnRleHQoUVVFVUVfVVNFX1NTRSlcbiAgICAgICAgfSxcbiAgICAgICAgW0RJU0FCTEVfUFJPUEVSVFlfVkFMSURBVElPTl06IHtcbiAgICAgICAgICByZWNvbW1lbmRlZFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICBleHBsYW5hdGlvbjogXCJTdXBwcmVzcyB0aGUgdmFsaWRhdGlvbiBvZiBwcm9wZXJ0eSBuYW1lcyBvbiBpbmNvbWluZyBhcmd1bWVudHMgb2YgdHlwZSBhbnkgKHN1cHByZXNzIHJ1bnRpbWUgdHlwZSB2YWxpZGF0aW9uKVwiLFxuICAgICAgICAgIHVzZXJWYWx1ZTogdGhpcy5ub2RlLnRyeUdldENvbnRleHQoRElTQUJMRV9QUk9QRVJUWV9WQUxJREFUSU9OKVxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
5
+ * with the License. A copy of the License is located at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
10
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
11
+ * and limitations under the License.
12
+ */
13
+ import * as s3 from 'aws-cdk-lib/aws-s3';
14
+ import { Construct } from 'constructs';
15
+ import * as kms from 'aws-cdk-lib/aws-kms';
16
+ import * as sns from 'aws-cdk-lib/aws-sns';
17
+ export interface PollyProps {
18
+ readonly asyncJobs?: boolean;
19
+ readonly existingBucketObj?: s3.IBucket;
20
+ readonly bucketProps?: s3.BucketProps;
21
+ readonly loggingBucketProps?: s3.BucketProps;
22
+ readonly logS3AccessLogs?: boolean;
23
+ readonly bucketEnvironmentVariableName?: string;
24
+ readonly existingTopicObj?: sns.Topic;
25
+ readonly existingTopicEncryptionKey?: kms.Key;
26
+ readonly topicProps?: sns.TopicProps;
27
+ readonly enableTopicEncryptionWithCustomerManagedKey?: boolean;
28
+ readonly topicEncryptionKey?: kms.Key;
29
+ readonly topicEncryptionKeyProps?: kms.KeyProps;
30
+ readonly topicEnvironmentVariableName?: string;
31
+ }
32
+ export interface PollyBucketDetails {
33
+ readonly bucket?: s3.Bucket;
34
+ readonly bucketInterface: s3.IBucket;
35
+ readonly loggingBucket?: s3.Bucket;
36
+ }
37
+ export interface EnvironmentVariableDefinition {
38
+ readonly defaultName: string;
39
+ readonly clientNameOverride?: string;
40
+ readonly value: string;
41
+ }
42
+ export interface PollyConfiguration {
43
+ readonly destinationBucket?: PollyBucketDetails;
44
+ readonly snsNotificationTopic?: sns.Topic;
45
+ readonly notificationTopicEncryptionKey?: kms.Key;
46
+ readonly lambdaIamActionsRequired: string[];
47
+ readonly environmentVariables: EnvironmentVariableDefinition[];
48
+ }
49
+ export declare function ConfigurePollySupport(scope: Construct, id: string, props: PollyProps): PollyConfiguration;
50
+ export declare function CheckPollyProps(props: PollyProps): void;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ConfigurePollySupport = ConfigurePollySupport;
16
+ exports.CheckPollyProps = CheckPollyProps;
17
+ const s3_bucket_helper_1 = require("./s3-bucket-helper");
18
+ const sns_helper_1 = require("./sns-helper");
19
+ const utils_1 = require("./utils");
20
+ const syncPermissions = [
21
+ 'polly:SynthesizeSpeech'
22
+ ];
23
+ const asyncPermissions = [
24
+ 'polly:StartSpeechSynthesisTask',
25
+ 'polly:GetSpeechSynthesisTask',
26
+ 'polly:ListSpeechSynthesisTasks'
27
+ ];
28
+ function ConfigurePollySupport(scope, id, props) {
29
+ let configuration = {
30
+ lambdaIamActionsRequired: [...syncPermissions],
31
+ environmentVariables: [],
32
+ };
33
+ if (props.asyncJobs) {
34
+ // Setup SNS notification topic
35
+ const buildTopicResponse = (0, sns_helper_1.buildTopic)(scope, id, {
36
+ existingTopicObj: props.existingTopicObj,
37
+ existingTopicEncryptionKey: props.existingTopicEncryptionKey,
38
+ topicProps: props.topicProps,
39
+ enableEncryptionWithCustomerManagedKey: props.enableTopicEncryptionWithCustomerManagedKey,
40
+ encryptionKey: props.topicEncryptionKey,
41
+ encryptionKeyProps: props.topicEncryptionKeyProps
42
+ });
43
+ configuration = (0, utils_1.overrideProps)(configuration, {
44
+ snsNotificationTopic: buildTopicResponse.topic,
45
+ });
46
+ if (buildTopicResponse.key) {
47
+ configuration = (0, utils_1.overrideProps)(configuration, { notificationTopicEncryptionKey: buildTopicResponse.key });
48
+ }
49
+ // Setup S3 Bucket for audio output
50
+ if (props.existingBucketObj) {
51
+ configuration = (0, utils_1.overrideProps)(configuration, {
52
+ destinationBucket: {
53
+ bucketInterface: props.existingBucketObj
54
+ }
55
+ }, false);
56
+ }
57
+ else {
58
+ const buildBucketResponse = (0, s3_bucket_helper_1.buildS3Bucket)(scope, {
59
+ bucketProps: props.bucketProps,
60
+ loggingBucketProps: props.loggingBucketProps,
61
+ logS3AccessLogs: props.logS3AccessLogs
62
+ }, `${id}-output-bucket`);
63
+ configuration = (0, utils_1.overrideProps)(configuration, {
64
+ destinationBucket: {
65
+ bucket: buildBucketResponse.bucket,
66
+ loggingBucket: buildBucketResponse.loggingBucket,
67
+ bucketInterface: buildBucketResponse.bucket,
68
+ }
69
+ }, false);
70
+ }
71
+ // Add async permissions
72
+ asyncPermissions.forEach((permission) => {
73
+ configuration.lambdaIamActionsRequired.push(permission);
74
+ });
75
+ // Build environment variables
76
+ configuration.environmentVariables.push({
77
+ defaultName: 'OUTPUT_BUCKET_NAME',
78
+ clientNameOverride: props.bucketEnvironmentVariableName,
79
+ value: configuration.destinationBucket.bucketInterface.bucketName
80
+ });
81
+ configuration.environmentVariables.push({
82
+ defaultName: 'SNS_TOPIC_ARN',
83
+ clientNameOverride: props.topicEnvironmentVariableName,
84
+ value: configuration.snsNotificationTopic.topicArn
85
+ });
86
+ }
87
+ return configuration;
88
+ }
89
+ function CheckPollyProps(props) {
90
+ let errorMessages = '';
91
+ let errorFound = false;
92
+ if (props.asyncJobs) {
93
+ // Check for conflicting bucket props
94
+ if (props.existingBucketObj && props.bucketProps) {
95
+ errorMessages += 'Error - Either provide bucketProps or existingBucketObj, but not both.\n';
96
+ errorFound = true;
97
+ }
98
+ // Check for conflicting topic props
99
+ if (props.existingTopicObj && props.topicProps) {
100
+ errorMessages += 'Error - Either provide topicProps or existingTopicObj, but not both.\n';
101
+ errorFound = true;
102
+ }
103
+ // Check SNS encryption props
104
+ if (props.topicProps?.masterKey && props.topicEncryptionKey) {
105
+ errorMessages += 'Error - Either provide topicProps.masterKey or topicEncryptionKey, but not both.\n';
106
+ errorFound = true;
107
+ }
108
+ if (props.topicProps?.masterKey && props.topicEncryptionKeyProps) {
109
+ errorMessages += 'Error - Either provide topicProps.masterKey or topicEncryptionKeyProps, but not both.\n';
110
+ errorFound = true;
111
+ }
112
+ if (props.topicEncryptionKey && props.topicEncryptionKeyProps) {
113
+ errorMessages += 'Error - Either provide topicEncryptionKey or topicEncryptionKeyProps, but not both.\n';
114
+ errorFound = true;
115
+ }
116
+ }
117
+ // If asyncJobs is false or undefined, no bucket or topic props should be provided
118
+ if (!props.asyncJobs) {
119
+ if (props.existingBucketObj || props.bucketProps ||
120
+ props.loggingBucketProps || props.logS3AccessLogs !== undefined ||
121
+ props.bucketEnvironmentVariableName) {
122
+ errorMessages += 'Error - Bucket properties can only be provided when asyncJobs is true.\n';
123
+ errorFound = true;
124
+ }
125
+ if (props.existingTopicObj || props.topicProps ||
126
+ props.existingTopicEncryptionKey || props.topicEncryptionKey ||
127
+ props.topicEncryptionKeyProps ||
128
+ props.enableTopicEncryptionWithCustomerManagedKey !== undefined ||
129
+ props.topicEnvironmentVariableName) {
130
+ errorMessages += 'Error - Topic properties can only be provided when asyncJobs is true.\n';
131
+ errorFound = true;
132
+ }
133
+ }
134
+ if (errorFound) {
135
+ throw new Error(errorMessages);
136
+ }
137
+ }
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbHktaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9sbHktaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUE2REgsc0RBcUVDO0FBRUQsMENBd0RDO0FBbExELHlEQUFtRDtBQUNuRCw2Q0FBMEM7QUFDMUMsbUNBQXdDO0FBdUN4QyxNQUFNLGVBQWUsR0FBRztJQUN0Qix3QkFBd0I7Q0FDekIsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsZ0NBQWdDO0lBQ2hDLDhCQUE4QjtJQUM5QixnQ0FBZ0M7Q0FDakMsQ0FBQztBQUVGLFNBQWdCLHFCQUFxQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlCO0lBRW5GLElBQUksYUFBYSxHQUF1QjtRQUN0Qyx3QkFBd0IsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQzlDLG9CQUFvQixFQUFFLEVBQUU7S0FDekIsQ0FBQztJQUVGLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLCtCQUErQjtRQUMvQixNQUFNLGtCQUFrQixHQUFHLElBQUEsdUJBQVUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQy9DLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLDBCQUEwQjtZQUM1RCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLDJDQUEyQztZQUN6RixhQUFhLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUN2QyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1NBQ2xELENBQUMsQ0FBQztRQUVILGFBQWEsR0FBRyxJQUFBLHFCQUFhLEVBQUMsYUFBYSxFQUFFO1lBQzNDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLEtBQUs7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMzQixhQUFhLEdBQUcsSUFBQSxxQkFBYSxFQUFDLGFBQWEsRUFBRSxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDM0csQ0FBQztRQUVELG1DQUFtQztRQUNuQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLGFBQWEsR0FBRyxJQUFBLHFCQUFhLEVBQUMsYUFBYSxFQUFFO2dCQUMzQyxpQkFBaUIsRUFBRTtvQkFDakIsZUFBZSxFQUFFLEtBQUssQ0FBQyxpQkFBaUI7aUJBQ3pDO2FBQ0YsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNaLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxtQkFBbUIsR0FBRyxJQUFBLGdDQUFhLEVBQUMsS0FBSyxFQUFFO2dCQUMvQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQzVDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTthQUN2QyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTFCLGFBQWEsR0FBRyxJQUFBLHFCQUFhLEVBQUMsYUFBYSxFQUFFO2dCQUMzQyxpQkFBaUIsRUFBRTtvQkFDakIsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE1BQU07b0JBQ2xDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxhQUFhO29CQUNoRCxlQUFlLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtpQkFDNUM7YUFDRixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ1osQ0FBQztRQUVELHdCQUF3QjtRQUN4QixnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0QyxhQUFhLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsOEJBQThCO1FBQzlCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7WUFDdEMsV0FBVyxFQUFFLG9CQUFvQjtZQUNqQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsNkJBQTZCO1lBQ3ZELEtBQUssRUFBRSxhQUFhLENBQUMsaUJBQWtCLENBQUMsZUFBZSxDQUFDLFVBQVU7U0FDbkUsQ0FBQyxDQUFDO1FBRUgsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztZQUN0QyxXQUFXLEVBQUUsZUFBZTtZQUM1QixrQkFBa0IsRUFBRSxLQUFLLENBQUMsNEJBQTRCO1lBQ3RELEtBQUssRUFBRSxhQUFhLENBQUMsb0JBQXFCLENBQUMsUUFBUTtTQUNwRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxLQUFpQjtJQUMvQyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRXZCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLHFDQUFxQztRQUNyQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakQsYUFBYSxJQUFJLDBFQUEwRSxDQUFDO1lBQzVGLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0MsYUFBYSxJQUFJLHdFQUF3RSxDQUFDO1lBQzFGLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsU0FBUyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVELGFBQWEsSUFBSSxvRkFBb0YsQ0FBQztZQUN0RyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsU0FBUyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pFLGFBQWEsSUFBSSx5RkFBeUYsQ0FBQztZQUMzRyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM5RCxhQUFhLElBQUksdUZBQXVGLENBQUM7WUFDekcsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELGtGQUFrRjtJQUNsRixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxXQUFXO1lBQzlDLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsZUFBZSxLQUFLLFNBQVM7WUFDL0QsS0FBSyxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDdEMsYUFBYSxJQUFJLDBFQUEwRSxDQUFDO1lBQzVGLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxVQUFVO1lBQzVDLEtBQUssQ0FBQywwQkFBMEIsSUFBSSxLQUFLLENBQUMsa0JBQWtCO1lBQzVELEtBQUssQ0FBQyx1QkFBdUI7WUFDN0IsS0FBSyxDQUFDLDJDQUEyQyxLQUFLLFNBQVM7WUFDL0QsS0FBSyxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDckMsYUFBYSxJQUFJLHlFQUF5RSxDQUFDO1lBQzNGLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgYnVpbGRTM0J1Y2tldCB9IGZyb20gJy4vczMtYnVja2V0LWhlbHBlcic7XG5pbXBvcnQgeyBidWlsZFRvcGljIH0gZnJvbSAnLi9zbnMtaGVscGVyJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcblxuZXhwb3J0IGludGVyZmFjZSBQb2xseVByb3BzIHtcbiAgcmVhZG9ubHkgYXN5bmNKb2JzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZXhpc3RpbmdCdWNrZXRPYmo/OiBzMy5JQnVja2V0O1xuICByZWFkb25seSBidWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSBsb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcztcbiAgcmVhZG9ubHkgbG9nUzNBY2Nlc3NMb2dzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4aXN0aW5nVG9waWNPYmo/OiBzbnMuVG9waWM7XG4gIHJlYWRvbmx5IGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgdG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzO1xuICByZWFkb25seSBlbmFibGVUb3BpY0VuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgdG9waWNFbmNyeXB0aW9uS2V5UHJvcHM/OiBrbXMuS2V5UHJvcHM7XG4gIHJlYWRvbmx5IHRvcGljRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9sbHlCdWNrZXREZXRhaWxzIHtcbiAgcmVhZG9ubHkgYnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBidWNrZXRJbnRlcmZhY2U6IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudFZhcmlhYmxlRGVmaW5pdGlvbiB7XG4gIHJlYWRvbmx5IGRlZmF1bHROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaWVudE5hbWVPdmVycmlkZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb2xseUNvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBkZXN0aW5hdGlvbkJ1Y2tldD86IFBvbGx5QnVja2V0RGV0YWlscyxcbiAgcmVhZG9ubHkgc25zTm90aWZpY2F0aW9uVG9waWM/OiBzbnMuVG9waWMsXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleT86IGttcy5LZXksXG4gIHJlYWRvbmx5IGxhbWJkYUlhbUFjdGlvbnNSZXF1aXJlZDogc3RyaW5nW10sXG4gIHJlYWRvbmx5IGVudmlyb25tZW50VmFyaWFibGVzOiBFbnZpcm9ubWVudFZhcmlhYmxlRGVmaW5pdGlvbltdLFxufVxuXG5jb25zdCBzeW5jUGVybWlzc2lvbnMgPSBbXG4gICdwb2xseTpTeW50aGVzaXplU3BlZWNoJ1xuXTtcblxuY29uc3QgYXN5bmNQZXJtaXNzaW9ucyA9IFtcbiAgJ3BvbGx5OlN0YXJ0U3BlZWNoU3ludGhlc2lzVGFzaycsXG4gICdwb2xseTpHZXRTcGVlY2hTeW50aGVzaXNUYXNrJyxcbiAgJ3BvbGx5Okxpc3RTcGVlY2hTeW50aGVzaXNUYXNrcydcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25maWd1cmVQb2xseVN1cHBvcnQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBvbGx5UHJvcHMpOiBQb2xseUNvbmZpZ3VyYXRpb24ge1xuXG4gIGxldCBjb25maWd1cmF0aW9uOiBQb2xseUNvbmZpZ3VyYXRpb24gPSB7XG4gICAgbGFtYmRhSWFtQWN0aW9uc1JlcXVpcmVkOiBbLi4uc3luY1Blcm1pc3Npb25zXSxcbiAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogW10sXG4gIH07XG5cbiAgaWYgKHByb3BzLmFzeW5jSm9icykge1xuICAgIC8vIFNldHVwIFNOUyBub3RpZmljYXRpb24gdG9waWNcbiAgICBjb25zdCBidWlsZFRvcGljUmVzcG9uc2UgPSBidWlsZFRvcGljKHNjb3BlLCBpZCwge1xuICAgICAgZXhpc3RpbmdUb3BpY09iajogcHJvcHMuZXhpc3RpbmdUb3BpY09iaixcbiAgICAgIGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5OiBwcm9wcy5leGlzdGluZ1RvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIHRvcGljUHJvcHM6IHByb3BzLnRvcGljUHJvcHMsXG4gICAgICBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleTogcHJvcHMuZW5hYmxlVG9waWNFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLnRvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIGVuY3J5cHRpb25LZXlQcm9wczogcHJvcHMudG9waWNFbmNyeXB0aW9uS2V5UHJvcHNcbiAgICB9KTtcblxuICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgIHNuc05vdGlmaWNhdGlvblRvcGljOiBidWlsZFRvcGljUmVzcG9uc2UudG9waWMsXG4gICAgfSk7XG5cbiAgICBpZiAoYnVpbGRUb3BpY1Jlc3BvbnNlLmtleSkge1xuICAgICAgY29uZmlndXJhdGlvbiA9IG92ZXJyaWRlUHJvcHMoY29uZmlndXJhdGlvbiwgeyBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXk6IGJ1aWxkVG9waWNSZXNwb25zZS5rZXkgfSk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgUzMgQnVja2V0IGZvciBhdWRpbyBvdXRwdXRcbiAgICBpZiAocHJvcHMuZXhpc3RpbmdCdWNrZXRPYmopIHtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHtcbiAgICAgICAgICBidWNrZXRJbnRlcmZhY2U6IHByb3BzLmV4aXN0aW5nQnVja2V0T2JqXG4gICAgICAgIH1cbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnVpbGRCdWNrZXRSZXNwb25zZSA9IGJ1aWxkUzNCdWNrZXQoc2NvcGUsIHtcbiAgICAgICAgYnVja2V0UHJvcHM6IHByb3BzLmJ1Y2tldFByb3BzLFxuICAgICAgICBsb2dnaW5nQnVja2V0UHJvcHM6IHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcyxcbiAgICAgICAgbG9nUzNBY2Nlc3NMb2dzOiBwcm9wcy5sb2dTM0FjY2Vzc0xvZ3NcbiAgICAgIH0sIGAke2lkfS1vdXRwdXQtYnVja2V0YCk7XG5cbiAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHtcbiAgICAgICAgICBidWNrZXQ6IGJ1aWxkQnVja2V0UmVzcG9uc2UuYnVja2V0LFxuICAgICAgICAgIGxvZ2dpbmdCdWNrZXQ6IGJ1aWxkQnVja2V0UmVzcG9uc2UubG9nZ2luZ0J1Y2tldCxcbiAgICAgICAgICBidWNrZXRJbnRlcmZhY2U6IGJ1aWxkQnVja2V0UmVzcG9uc2UuYnVja2V0LFxuICAgICAgICB9XG4gICAgICB9LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFzeW5jIHBlcm1pc3Npb25zXG4gICAgYXN5bmNQZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uKSA9PiB7XG4gICAgICBjb25maWd1cmF0aW9uLmxhbWJkYUlhbUFjdGlvbnNSZXF1aXJlZC5wdXNoKHBlcm1pc3Npb24pO1xuICAgIH0pO1xuXG4gICAgLy8gQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgY29uZmlndXJhdGlvbi5lbnZpcm9ubWVudFZhcmlhYmxlcy5wdXNoKHtcbiAgICAgIGRlZmF1bHROYW1lOiAnT1VUUFVUX0JVQ0tFVF9OQU1FJyxcbiAgICAgIGNsaWVudE5hbWVPdmVycmlkZTogcHJvcHMuYnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWUsXG4gICAgICB2YWx1ZTogY29uZmlndXJhdGlvbi5kZXN0aW5hdGlvbkJ1Y2tldCEuYnVja2V0SW50ZXJmYWNlLmJ1Y2tldE5hbWVcbiAgICB9KTtcblxuICAgIGNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnRWYXJpYWJsZXMucHVzaCh7XG4gICAgICBkZWZhdWx0TmFtZTogJ1NOU19UT1BJQ19BUk4nLFxuICAgICAgY2xpZW50TmFtZU92ZXJyaWRlOiBwcm9wcy50b3BpY0Vudmlyb25tZW50VmFyaWFibGVOYW1lLFxuICAgICAgdmFsdWU6IGNvbmZpZ3VyYXRpb24uc25zTm90aWZpY2F0aW9uVG9waWMhLnRvcGljQXJuXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29uZmlndXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrUG9sbHlQcm9wcyhwcm9wczogUG9sbHlQcm9wcyk6IHZvaWQge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wcy5hc3luY0pvYnMpIHtcbiAgICAvLyBDaGVjayBmb3IgY29uZmxpY3RpbmcgYnVja2V0IHByb3BzXG4gICAgaWYgKHByb3BzLmV4aXN0aW5nQnVja2V0T2JqICYmIHByb3BzLmJ1Y2tldFByb3BzKSB7XG4gICAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGJ1Y2tldFByb3BzIG9yIGV4aXN0aW5nQnVja2V0T2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBjb25mbGljdGluZyB0b3BpYyBwcm9wc1xuICAgIGlmIChwcm9wcy5leGlzdGluZ1RvcGljT2JqICYmIHByb3BzLnRvcGljUHJvcHMpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcyBvciBleGlzdGluZ1RvcGljT2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIFNOUyBlbmNyeXB0aW9uIHByb3BzXG4gICAgaWYgKHByb3BzLnRvcGljUHJvcHM/Lm1hc3RlcktleSAmJiBwcm9wcy50b3BpY0VuY3J5cHRpb25LZXkpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgdG9waWNFbmNyeXB0aW9uS2V5LCBidXQgbm90IGJvdGguXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy50b3BpY1Byb3BzPy5tYXN0ZXJLZXkgJiYgcHJvcHMudG9waWNFbmNyeXB0aW9uS2V5UHJvcHMpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgdG9waWNFbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRvcGljRW5jcnlwdGlvbktleSAmJiBwcm9wcy50b3BpY0VuY3J5cHRpb25LZXlQcm9wcykge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSB0b3BpY0VuY3J5cHRpb25LZXkgb3IgdG9waWNFbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgYXN5bmNKb2JzIGlzIGZhbHNlIG9yIHVuZGVmaW5lZCwgbm8gYnVja2V0IG9yIHRvcGljIHByb3BzIHNob3VsZCBiZSBwcm92aWRlZFxuICBpZiAoIXByb3BzLmFzeW5jSm9icykge1xuICAgIGlmIChwcm9wcy5leGlzdGluZ0J1Y2tldE9iaiB8fCBwcm9wcy5idWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMubG9nZ2luZ0J1Y2tldFByb3BzIHx8IHByb3BzLmxvZ1MzQWNjZXNzTG9ncyAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICBwcm9wcy5idWNrZXRFbnZpcm9ubWVudFZhcmlhYmxlTmFtZSkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBCdWNrZXQgcHJvcGVydGllcyBjYW4gb25seSBiZSBwcm92aWRlZCB3aGVuIGFzeW5jSm9icyBpcyB0cnVlLlxcbic7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZXhpc3RpbmdUb3BpY09iaiB8fCBwcm9wcy50b3BpY1Byb3BzIHx8XG4gICAgICBwcm9wcy5leGlzdGluZ1RvcGljRW5jcnlwdGlvbktleSB8fCBwcm9wcy50b3BpY0VuY3J5cHRpb25LZXkgfHxcbiAgICAgIHByb3BzLnRvcGljRW5jcnlwdGlvbktleVByb3BzIHx8XG4gICAgICBwcm9wcy5lbmFibGVUb3BpY0VuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5ICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLnRvcGljRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gVG9waWMgcHJvcGVydGllcyBjYW4gb25seSBiZSBwcm92aWRlZCB3aGVuIGFzeW5jSm9icyBpcyB0cnVlLlxcbic7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
@@ -41,7 +41,17 @@ function buildStateMachine(scope, id, props) {
41
41
  let consolidatedStateMachineProps;
42
42
  // If they sent a logGroup in stateMachineProps
43
43
  if (props.stateMachineProps.logs?.destination) {
44
- logGroup = props.stateMachineProps.logs?.destination;
44
+ // In CDK v2.235.0+, logs.destination is ILogGroupRef, but we need ILogGroup
45
+ // We need to verify it's actually an ILogGroup (has the full interface)
46
+ const destination = props.stateMachineProps.logs.destination;
47
+ // Type guard: Check if destination has ILogGroup methods
48
+ if ('addMetricFilter' in destination && 'grantWrite' in destination) {
49
+ logGroup = destination;
50
+ }
51
+ else {
52
+ throw new Error('The provided log group destination must be a full ILogGroup (not just ILogGroupRef). ' +
53
+ 'Please provide a LogGroup created with new LogGroup() or LogGroup.fromLogGroupArn().');
54
+ }
45
55
  consolidatedStateMachineProps = props.stateMachineProps;
46
56
  }
47
57
  else {
@@ -151,4 +161,4 @@ function CheckStateMachineProps(propsObject) {
151
161
  throw new Error(errorMessages);
152
162
  }
153
163
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGVwLWZ1bmN0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQThDSCw4Q0E4REM7QUFLRCw4REEwQ0M7QUFVRCx3REFzQkM7QUFsTEQsbUNBQW1DO0FBQ25DLHVEQUF1RDtBQUN2RCxxREFBcUQ7QUFDckQsbUNBQTJGO0FBRTNGLHlEQUF5RDtBQUN6RCwrRUFBOEQ7QUFJOUQ7Ozs7O0dBS0c7QUFDVSxRQUFBLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFjdkM7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsS0FBZ0IsRUFBRSxFQUFzQixFQUFFLEtBQTRCO0lBRXRHLElBQUksUUFBd0IsQ0FBQztJQUM3QixJQUFJLDZCQUE2QixDQUFDO0lBRWxDLCtDQUErQztJQUMvQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO1FBQ3JELDZCQUE2QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRCxDQUFDO1NBQU0sQ0FBQztRQUNOLHNCQUFzQjtRQUN0Qiw4RUFBOEU7UUFDOUUsdUZBQXVGO1FBQ3ZGLDZFQUE2RTtRQUM3RSxJQUFJLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFcEQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDL0IseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDN0MsTUFBTSxjQUFjLEdBQUcsb0NBQW9DLENBQUM7WUFDNUQsTUFBTSxTQUFTLEdBQWE7Z0JBQzFCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFB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QWEsSUFBSSxrRkFBa0YsQ0FBQztRQUNwRyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDO1FBQ3ZDLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtZQUM1QixDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsS0FBSyxTQUFTLENBQUM7WUFDbEQsV0FBVyxDQUFDLHNCQUFzQjtZQUNsQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUUvQixhQUFhLElBQUkseUZBQXlGLENBQUM7UUFDM0csVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHNtRGVmYXVsdHMgZnJvbSAnLi9zdGVwLWZ1bmN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIHNmbiBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzLCBnZW5lcmF0ZVBoeXNpY2FsTG9nR3JvdXBOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IGJ1aWxkTG9nR3JvdXAgfSBmcm9tICcuL2Nsb3Vkd2F0Y2gtbG9nLWdyb3VwLWhlbHBlcic7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLypcbiAqIHRoZSBpZCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIGJ1aWxkU3RhdGVNYWNoaW5lKCkgbG9uZyBhZnRlciB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sXG4gKiB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGZvciB0aGUgbmV3IHBhcmFtZXRlciBhbmQgZW5zdXJlIGJlaGF2aW9yIGlzIHRoZSBzYW1lLlxuICogKGlmIHdlIGp1c3QgcmVxdWlyZSBhbiBpZCwgdGhlIHN0YXRlIG1hY2hpbmUgbmFtZSB3aWxsIGJlIGNoYW5nZWQgYW5kIGl0IHdpbGwgYmUgYVxuICogZGVzdHJ1Y3RpdmUgY2hhbmdlKVxuICovXG5leHBvcnQgY29uc3QgaWRQbGFjZWhvbGRlciA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFN0YXRlTWFjaW5lUHJvcHMge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVQcm9wczogc2ZuLlN0YXRlTWFjaGluZVByb3BzLFxuICByZWFkb25seSBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzLFxuICByZWFkb25seSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtc1ByZWZpeD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmU6IHNmbi5TdGF0ZU1hY2hpbmUsXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cCxcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtcz86IGNsb3Vkd2F0Y2guQWxhcm1bXVxufVxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIFN0YXRlTWFjaGluZS5cbiAqIEBwYXJhbSBzY29wZSAtIHRoZSBjb25zdHJ1Y3QgdG8gd2hpY2ggdGhlIFN0YXRlTWFjaGluZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gc3RhdGVNYWNoaW5lUHJvcHMgLSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN0YXRlTWFjaGluZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBwcm9wczogQnVpbGRTdGF0ZU1hY2luZVByb3BzKTogQnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZSB7XG5cbiAgbGV0IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cDtcbiAgbGV0IGNvbnNvbGlkYXRlZFN0YXRlTWFjaGluZVByb3BzO1xuXG4gIC8vIElmIHRoZXkgc2VudCBhIGxvZ0dyb3VwIGluIHN0YXRlTWFjaGluZVByb3BzXG4gIGlmIChwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcy5sb2dzPy5kZXN0aW5hdGlvbikge1xuICAgIGxvZ0dyb3VwID0gcHJvcHMuc3RhdGVNYWNoaW5lUHJvcHMubG9ncz8uZGVzdGluYXRpb247XG4gICAgY29uc29saWRhdGVkU3RhdGVNYWNoaW5lUHJvcHMgPSBwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcztcbiAgfSBlbHNlIHtcbiAgICAvLyBUaHJlZSBwb3NzaWJpbGl0aWVzXG4gICAgLy8gMSkgbG9nR3JvdXBQcm9wcyBub3QgcHJvdmlkZWQgLSBjcmVhdGUgbG9nR3JvdXBQcm9wcyB3aXRoIGp1c3QgbG9nR3JvdXBOYW1lXG4gICAgLy8gMikgbG9nR3JvdXBQcm9wcyBwcm92aWRlZCB3aXRoIG5vIGxvZ0dyb3VwTmFtZSAtIG92ZXJyaWRlIGxvZ0dyb3VwUHJvcHMubG9nR3JvdXBOYW1lXG4gICAgLy8gMykgbG9nR3JvdXBQcm9wcyBwcm92aWRlZCB3aXRoIGxvZ0dyb3VwTmFtZSAtIHBhc3MgdW5hbHRlcmVkIGxvZ0dyb3VwUHJvcHNcbiAgICBsZXQgY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcyA9IHByb3BzLmxvZ0dyb3VwUHJvcHM7XG5cbiAgICBpZiAoIWNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMpIHtcbiAgICAgIGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHM/LmxvZ0dyb3VwTmFtZSkge1xuICAgICAgY29uc3QgbG9nR3JvdXBQcmVmaXggPSAnL2F3cy92ZW5kZWRsb2dzL3N0YXRlcy9jb25zdHJ1Y3RzLyc7XG4gICAgICBjb25zdCBuYW1lUGFydHM6IHN0cmluZ1tdID0gW1xuICAgICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLnN0YWNrTmFtZSwgLy8gTmFtZSBvZiB0aGUgc3RhY2tcbiAgICAgICAgaWQgPz8gc2NvcGUubm9kZS5pZCwgICAgICAgICAgIC8vIFVzZSB0aGUgSUQgZnJvbSBjbGllbnQgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgdGhlIGNvbnN0cnVjdCBJRFxuICAgICAgICAnU3RhdGVNYWNoaW5lTG9nJyAgICAgICAgICAgICAgLy8gTGl0ZXJhbCBzdHJpbmcgZm9yIGxvZyBncm91cCBuYW1lIHBvcnRpb25cbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGxvZ0dyb3VwTmFtZSA9IGdlbmVyYXRlUGh5c2ljYWxMb2dHcm91cE5hbWUobG9nR3JvdXBQcmVmaXgsIG5hbWVQYXJ0cyk7XG4gICAgICBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzID0gb3ZlcnJpZGVQcm9wcyhjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzLCB7IGxvZ0dyb3VwTmFtZSB9KTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgbmV3IENsb3Vkd2F0Y2ggbG9nIGdyb3VwIGZvciBTdGVwIGZ1bmN0aW9uIFN0YXRlIE1hY2hpbmVcbiAgICBsb2dHcm91cCA9IGJ1aWxkTG9nR3JvdXAoc2NvcGUsIGBTdGF0ZU1hY2hpbmVMb2dHcm91cCR7KGlkID8/ICcnKX1gLCBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzKTtcblxuICAgIC8vIE92ZXJyaWRlIHRoZSBkZWZhdWx0cyB3aXRoIHRoZSB1c2VyIHByb3ZpZGVkIHByb3BzXG4gICAgY29uc29saWRhdGVkU3RhdGVNYWNoaW5lUHJvcHMgPSBvdmVycmlkZVByb3BzKHNtRGVmYXVsdHMuRGVmYXVsdFN0YXRlTWFjaGluZVByb3BzKGxvZ0dyb3VwKSwgcHJvcHMuc3RhdGVNYWNoaW5lUHJvcHMpO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgdGhlIENsb3Vkd2F0Y2ggcGVybWlzc2lvbnMgdG8gbWFrZSBpdCBtb3JlIGZpbmUgZ3JhaW5lZFxuICBjb25zdCBuZXdTdGF0ZU1hY2hpbmUgPSBuZXcgc2ZuLlN0YXRlTWFjaGluZShzY29wZSwgYFN0YXRlTWFjaGluZSR7KGlkID8/ICcnKX1gLCBjb25zb2xpZGF0ZWRTdGF0ZU1hY2hpbmVQcm9wcyk7XG5cbiAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHBhc3MgYSByb2xlIHdlIGdvdCB0aGUgZGVmYXVsdCByb2xlIGFuZCB3aWxsIHRyaW0gdGhlIHByaXZpbGVnZXNcbiAgaWYgKCFwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcy5yb2xlKSB7XG4gICAgY29uc3Qgcm9sZSA9IG5ld1N0YXRlTWFjaGluZS5ub2RlLmZpbmRDaGlsZCgnUm9sZScpIGFzIGlhbS5Sb2xlO1xuICAgIGNvbnN0IGNmbkRlZmF1bHRQb2xpY3kgPSByb2xlLm5vZGUuZmluZENoaWxkKCdEZWZhdWx0UG9saWN5Jykubm9kZS5kZWZhdWx0Q2hpbGQgYXMgYW55O1xuICAgIC8vIE92ZXJyaWRlIENmbiBOYWcgd2FybmluZyBXMTI6IElBTSBwb2xpY3kgc2hvdWxkIG5vdCBhbGxvdyAqIHJlc291cmNlXG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5EZWZhdWx0UG9saWN5LCBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzEyJyxcbiAgICAgICAgcmVhc29uOiBgVGhlc2UgYXJlIENESyBkZWZhdWx0cy4gVGhlICdMb2dEZWxpdmVyeScgYWN0aW9ucyBkbyBub3Qgc3VwcG9ydCByZXNvdXJjZS1sZXZlbCBhdXRob3JpemF0aW9ucy4gQW55IGxvZ2dpbmcgaXMgZG9uZSBieSBTdGF0ZSBNYWNoaW5lIGNvZGVgXG4gICAgICB9XG4gICAgXSk7XG4gIH1cbiAgY29uc3QgY3JlYXRlQ2xvdWRXYXRjaEFsYXJtczogYm9vbGVhbiA9IChwcm9wcy5jcmVhdGVDbG91ZFdhdGNoQWxhcm1zID09PSB1bmRlZmluZWQgfHwgcHJvcHMuY3JlYXRlQ2xvdWRXYXRjaEFsYXJtcyk7XG4gIGNvbnN0IGNsb3VkV2F0Y2hBbGFybXMgPSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zID8gYnVpbGRTdGVwRnVuY3Rpb25DV0FsYXJtcyhzY29wZSwgcHJvcHMuY2xvdWRXYXRjaEFsYXJtc1ByZWZpeCwgbmV3U3RhdGVNYWNoaW5lKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHN0YXRlTWFjaGluZTogbmV3U3RhdGVNYWNoaW5lLFxuICAgIGxvZ0dyb3VwLFxuICAgIGNsb3VkV2F0Y2hBbGFybXNcbiAgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTdGVwRnVuY3Rpb25DV0FsYXJtcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBzbTogc2ZuLlN0YXRlTWFjaGluZSk6IGNsb3Vkd2F0Y2guQWxhcm1bXSB7XG4gIC8vIFNldHVwIENXIEFsYXJtcyBmb3IgU3RhdGUgTWFjaGluZVxuICBjb25zdCBhbGFybXM6IGNsb3Vkd2F0Y2guQWxhcm1bXSA9IG5ldyBBcnJheSgpO1xuICBjb25zdCBwcmVmaXggPSBpZCA/PyBcIlwiO1xuXG4gIC8vIFN1bSBvZiBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGZhaWxlZCBpcyA+PSAxIGZvciA1IG1pbnV0ZXMsIDEgY29uc2VjdXRpdmUgdGltZVxuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgYCR7cHJlZml4fUV4ZWN1dGlvbkZhaWxlZEFsYXJtYCwge1xuICAgIG1ldHJpYzogc20ubWV0cmljRmFpbGVkKHtcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAxLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQWxhcm0gZm9yIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGZhaWxlZCBleGNlZWRlZCB0aGUgdGhyZXNob2xkIG9mIDEuICdcbiAgfSkpO1xuXG4gIC8vIFN1bSBvZiBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGZhaWxlZCBtYXhpbXVtIGlzID49IDEgZm9yIDUgbWludXRlLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsIGAke3ByZWZpeH1FeGVjdXRpb25UaHJvdHRsZWRBbGFybWAsIHtcbiAgICBtZXRyaWM6IHNtLm1ldHJpY1Rocm90dGxlZCh7XG4gICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMSxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0FsYXJtIGZvciB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgdGhhdCB0aHJvdHRsZWQgZXhjZWVkZWQgdGhlIHRocmVzaG9sZCBvZiAxLiAnXG4gIH0pKTtcblxuICAvLyBOdW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGFib3J0ZWQgbWF4aW11bSBpcyA+PSAxIGZvciA1IG1pbnV0ZSwgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCBgJHtwcmVmaXh9RXhlY3V0aW9uQWJvcnRlZEFsYXJtYCwge1xuICAgIG1ldHJpYzogc20ubWV0cmljQWJvcnRlZCh7XG4gICAgICBzdGF0aXN0aWM6ICdNYXhpbXVtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDEsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBbGFybSBmb3IgdGhlIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgYWJvcnRlZCBleGNlZWRlZCB0aGUgdGhyZXNob2xkIG9mIDEuICdcbiAgfSkpO1xuXG4gIHJldHVybiBhbGFybXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVNYWNoaW5lUHJvcHMge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVQcm9wcz86IHNmbi5TdGF0ZU1hY2hpbmVQcm9wcztcbiAgcmVhZG9ubHkgZXhpc3RpbmdTdGF0ZU1hY2hpbmVPYmo/OiBzZm4uU3RhdGVNYWNoaW5lO1xuICByZWFkb25seSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtc1ByZWZpeD86IHN0cmluZ1xuICByZWFkb25seSBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tTdGF0ZU1hY2hpbmVQcm9wcyhwcm9wc09iamVjdDogU3RhdGVNYWNoaW5lUHJvcHMgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAoKHByb3BzT2JqZWN0LmNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgPT09IGZhbHNlKSAmJiBwcm9wc09iamVjdC5jbG91ZFdhdGNoQWxhcm1zUHJlZml4KSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBjbG91ZFdhdGNoQWxhcm1zUHJlZml4IGlzIGludmFsaWQgd2hlbiBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zIGlzIGZhbHNlXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICgocHJvcHNPYmplY3QuZXhpc3RpbmdTdGF0ZU1hY2hpbmVPYmopICYmXG4gICAgKHByb3BzT2JqZWN0LnN0YXRlTWFjaGluZVByb3BzIHx8XG4gICAgICAocHJvcHNPYmplY3QuY3JlYXRlQ2xvdWRXYXRjaEFsYXJtcyAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgcHJvcHNPYmplY3QuY2xvdWRXYXRjaEFsYXJtc1ByZWZpeCB8fFxuICAgICAgcHJvcHNPYmplY3QubG9nR3JvdXBQcm9wcykpIHtcblxuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0VSUk9SIC0gSWYgZXhpc3RpbmdTdGF0ZU1hY2hpbmUgaXMgcHJvdmlkZWQsIG5vIG90aGVyIHN0YXRlIG1hY2hpbmUgcHJvcHMgYXJlIGFsbG93ZWRcXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGVwLWZ1bmN0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQThDSCw4Q0F3RUM7QUFLRCw4REEwQ0M7QUFVRCx3REFzQkM7QUE1TEQsbUNBQW1DO0FBQ25DLHVEQUF1RDtBQUN2RCxxREFBcUQ7QUFDckQsbUNBQTJGO0FBRTNGLHlEQUF5RDtBQUN6RCwrRUFBOEQ7QUFJOUQ7Ozs7O0dBS0c7QUFDVSxRQUFBLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFjdkM7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsS0FBZ0IsRUFBRSxFQUFzQixFQUFFLEtBQTRCO0lBRXRHLElBQUksUUFBd0IsQ0FBQztJQUM3QixJQUFJLDZCQUE2QixDQUFDO0lBRWxDLCtDQUErQztJQUMvQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUMsNEVBQTRFO1FBQzVFLHdFQUF3RTtRQUN4RSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUU3RCx5REFBeUQ7UUFDekQsSUFBSSxpQkFBaUIsSUFBSSxXQUFXLElBQUksWUFBWSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3BFLFFBQVEsR0FBRyxXQUE2QixDQUFDO1FBQzNDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1RkFBdUY7Z0JBQ3JHLHNGQUFzRixDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELDZCQUE2QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRCxDQUFDO1NBQU0sQ0FBQztRQUNOLHNCQUFzQjtRQUN0Qiw4RUFBOEU7UUFDOUUsdUZBQXVGO1FBQ3ZGLDZFQUE2RTtRQUM3RSxJQUFJLHlCQUF5QixHQUFHLEtB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LENBQUM7SUFFSixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBVUQsU0FBZ0Isc0JBQXNCLENBQUMsV0FBb0M7SUFDekUsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixLQUFLLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pGLGFBQWEsSUFBSSxrRkFBa0YsQ0FBQztRQUNwRyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDO1FBQ3ZDLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtZQUM1QixDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsS0FBSyxTQUFTLENBQUM7WUFDbEQsV0FBVyxDQUFDLHNCQUFzQjtZQUNsQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUUvQixhQUFhLElBQUkseUZBQXlGLENBQUM7UUFDM0csVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHNtRGVmYXVsdHMgZnJvbSAnLi9zdGVwLWZ1bmN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIHNmbiBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzLCBnZW5lcmF0ZVBoeXNpY2FsTG9nR3JvdXBOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IGJ1aWxkTG9nR3JvdXAgfSBmcm9tICcuL2Nsb3Vkd2F0Y2gtbG9nLWdyb3VwLWhlbHBlcic7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLypcbiAqIHRoZSBpZCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIGJ1aWxkU3RhdGVNYWNoaW5lKCkgbG9uZyBhZnRlciB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sXG4gKiB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGZvciB0aGUgbmV3IHBhcmFtZXRlciBhbmQgZW5zdXJlIGJlaGF2aW9yIGlzIHRoZSBzYW1lLlxuICogKGlmIHdlIGp1c3QgcmVxdWlyZSBhbiBpZCwgdGhlIHN0YXRlIG1hY2hpbmUgbmFtZSB3aWxsIGJlIGNoYW5nZWQgYW5kIGl0IHdpbGwgYmUgYVxuICogZGVzdHJ1Y3RpdmUgY2hhbmdlKVxuICovXG5leHBvcnQgY29uc3QgaWRQbGFjZWhvbGRlciA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFN0YXRlTWFjaW5lUHJvcHMge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVQcm9wczogc2ZuLlN0YXRlTWFjaGluZVByb3BzLFxuICByZWFkb25seSBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzLFxuICByZWFkb25seSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtc1ByZWZpeD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmU6IHNmbi5TdGF0ZU1hY2hpbmUsXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cCxcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtcz86IGNsb3Vkd2F0Y2guQWxhcm1bXVxufVxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIFN0YXRlTWFjaGluZS5cbiAqIEBwYXJhbSBzY29wZSAtIHRoZSBjb25zdHJ1Y3QgdG8gd2hpY2ggdGhlIFN0YXRlTWFjaGluZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gc3RhdGVNYWNoaW5lUHJvcHMgLSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN0YXRlTWFjaGluZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBwcm9wczogQnVpbGRTdGF0ZU1hY2luZVByb3BzKTogQnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZSB7XG5cbiAgbGV0IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cDtcbiAgbGV0IGNvbnNvbGlkYXRlZFN0YXRlTWFjaGluZVByb3BzO1xuXG4gIC8vIElmIHRoZXkgc2VudCBhIGxvZ0dyb3VwIGluIHN0YXRlTWFjaGluZVByb3BzXG4gIGlmIChwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcy5sb2dzPy5kZXN0aW5hdGlvbikge1xuICAgIC8vIEluIENESyB2Mi4yMzUuMCssIGxvZ3MuZGVzdGluYXRpb24gaXMgSUxvZ0dyb3VwUmVmLCBidXQgd2UgbmVlZCBJTG9nR3JvdXBcbiAgICAvLyBXZSBuZWVkIHRvIHZlcmlmeSBpdCdzIGFjdHVhbGx5IGFuIElMb2dHcm91cCAoaGFzIHRoZSBmdWxsIGludGVyZmFjZSlcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHByb3BzLnN0YXRlTWFjaGluZVByb3BzLmxvZ3MuZGVzdGluYXRpb247XG5cbiAgICAvLyBUeXBlIGd1YXJkOiBDaGVjayBpZiBkZXN0aW5hdGlvbiBoYXMgSUxvZ0dyb3VwIG1ldGhvZHNcbiAgICBpZiAoJ2FkZE1ldHJpY0ZpbHRlcicgaW4gZGVzdGluYXRpb24gJiYgJ2dyYW50V3JpdGUnIGluIGRlc3RpbmF0aW9uKSB7XG4gICAgICBsb2dHcm91cCA9IGRlc3RpbmF0aW9uIGFzIGxvZ3MuSUxvZ0dyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBwcm92aWRlZCBsb2cgZ3JvdXAgZGVzdGluYXRpb24gbXVzdCBiZSBhIGZ1bGwgSUxvZ0dyb3VwIChub3QganVzdCBJTG9nR3JvdXBSZWYpLiAnICtcbiAgICAgICAgJ1BsZWFzZSBwcm92aWRlIGEgTG9nR3JvdXAgY3JlYXRlZCB3aXRoIG5ldyBMb2dHcm91cCgpIG9yIExvZ0dyb3VwLmZyb21Mb2dHcm91cEFybigpLicpO1xuICAgIH1cbiAgICBjb25zb2xpZGF0ZWRTdGF0ZU1hY2hpbmVQcm9wcyA9IHByb3BzLnN0YXRlTWFjaGluZVByb3BzO1xuICB9IGVsc2Uge1xuICAgIC8vIFRocmVlIHBvc3NpYmlsaXRpZXNcbiAgICAvLyAxKSBsb2dHcm91cFByb3BzIG5vdCBwcm92aWRlZCAtIGNyZWF0ZSBsb2dHcm91cFByb3BzIHdpdGgganVzdCBsb2dHcm91cE5hbWVcbiAgICAvLyAyKSBsb2dHcm91cFByb3BzIHByb3ZpZGVkIHdpdGggbm8gbG9nR3JvdXBOYW1lIC0gb3ZlcnJpZGUgbG9nR3JvdXBQcm9wcy5sb2dHcm91cE5hbWVcbiAgICAvLyAzKSBsb2dHcm91cFByb3BzIHByb3ZpZGVkIHdpdGggbG9nR3JvdXBOYW1lIC0gcGFzcyB1bmFsdGVyZWQgbG9nR3JvdXBQcm9wc1xuICAgIGxldCBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzID0gcHJvcHMubG9nR3JvdXBQcm9wcztcblxuICAgIGlmICghY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcykge1xuICAgICAgY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIGlmICghY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcz8ubG9nR3JvdXBOYW1lKSB7XG4gICAgICBjb25zdCBsb2dHcm91cFByZWZpeCA9ICcvYXdzL3ZlbmRlZGxvZ3Mvc3RhdGVzL2NvbnN0cnVjdHMvJztcbiAgICAgIGNvbnN0IG5hbWVQYXJ0czogc3RyaW5nW10gPSBbXG4gICAgICAgIGNkay5TdGFjay5vZihzY29wZSkuc3RhY2tOYW1lLCAvLyBOYW1lIG9mIHRoZSBzdGFja1xuICAgICAgICBpZCA/PyBzY29wZS5ub2RlLmlkLCAgICAgICAgICAgLy8gVXNlIHRoZSBJRCBmcm9tIGNsaWVudCBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHVzZSB0aGUgY29uc3RydWN0IElEXG4gICAgICAgICdTdGF0ZU1hY2hpbmVMb2cnICAgICAgICAgICAgICAvLyBMaXRlcmFsIHN0cmluZyBmb3IgbG9nIGdyb3VwIG5hbWUgcG9ydGlvblxuICAgICAgXTtcblxuICAgICAgY29uc3QgbG9nR3JvdXBOYW1lID0gZ2VuZXJhdGVQaHlzaWNhbExvZ0dyb3VwTmFtZShsb2dHcm91cFByZWZpeCwgbmFtZVBhcnRzKTtcbiAgICAgIGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMgPSBvdmVycmlkZVByb3BzKGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMsIHsgbG9nR3JvdXBOYW1lIH0pO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBuZXcgQ2xvdWR3YXRjaCBsb2cgZ3JvdXAgZm9yIFN0ZXAgZnVuY3Rpb24gU3RhdGUgTWFjaGluZVxuICAgIGxvZ0dyb3VwID0gYnVpbGRMb2dHcm91cChzY29wZSwgYFN0YXRlTWFjaGluZUxvZ0dyb3VwJHsoaWQgPz8gJycpfWAsIGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMpO1xuXG4gICAgLy8gT3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHdpdGggdGhlIHVzZXIgcHJvdmlkZWQgcHJvcHNcbiAgICBjb25zb2xpZGF0ZWRTdGF0ZU1hY2hpbmVQcm9wcyA9IG92ZXJyaWRlUHJvcHMoc21EZWZhdWx0cy5EZWZhdWx0U3RhdGVNYWNoaW5lUHJvcHMobG9nR3JvdXApLCBwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcyk7XG4gIH1cblxuICAvLyBPdmVycmlkZSB0aGUgQ2xvdWR3YXRjaCBwZXJtaXNzaW9ucyB0byBtYWtlIGl0IG1vcmUgZmluZSBncmFpbmVkXG4gIGNvbnN0IG5ld1N0YXRlTWFjaGluZSA9IG5ldyBzZm4uU3RhdGVNYWNoaW5lKHNjb3BlLCBgU3RhdGVNYWNoaW5lJHsoaWQgPz8gJycpfWAsIGNvbnNvbGlkYXRlZFN0YXRlTWFjaGluZVByb3BzKTtcblxuICAvLyBJZiB0aGUgY2xpZW50IGRpZCBub3QgcGFzcyBhIHJvbGUgd2UgZ290IHRoZSBkZWZhdWx0IHJvbGUgYW5kIHdpbGwgdHJpbSB0aGUgcHJpdmlsZWdlc1xuICBpZiAoIXByb3BzLnN0YXRlTWFjaGluZVByb3BzLnJvbGUpIHtcbiAgICBjb25zdCByb2xlID0gbmV3U3RhdGVNYWNoaW5lLm5vZGUuZmluZENoaWxkKCdSb2xlJykgYXMgaWFtLlJvbGU7XG4gICAgY29uc3QgY2ZuRGVmYXVsdFBvbGljeSA9IHJvbGUubm9kZS5maW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhbnk7XG4gICAgLy8gT3ZlcnJpZGUgQ2ZuIE5hZyB3YXJuaW5nIFcxMjogSUFNIHBvbGljeSBzaG91bGQgbm90IGFsbG93ICogcmVzb3VyY2VcbiAgICBhZGRDZm5TdXBwcmVzc1J1bGVzKGNmbkRlZmF1bHRQb2xpY3ksIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdXMTInLFxuICAgICAgICByZWFzb246IGBUaGVzZSBhcmUgQ0RLIGRlZmF1bHRzLiBUaGUgJ0xvZ0RlbGl2ZXJ5JyBhY3Rpb25zIGRvIG5vdCBzdXBwb3J0IHJlc291cmNlLWxldmVsIGF1dGhvcml6YXRpb25zLiBBbnkgbG9nZ2luZyBpcyBkb25lIGJ5IFN0YXRlIE1hY2hpbmUgY29kZWBcbiAgICAgIH1cbiAgICBdKTtcbiAgfVxuICBjb25zdCBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zOiBib29sZWFuID0gKHByb3BzLmNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5jcmVhdGVDbG91ZFdhdGNoQWxhcm1zKTtcbiAgY29uc3QgY2xvdWRXYXRjaEFsYXJtcyA9IGNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgPyBidWlsZFN0ZXBGdW5jdGlvbkNXQWxhcm1zKHNjb3BlLCBwcm9wcy5jbG91ZFdhdGNoQWxhcm1zUHJlZml4LCBuZXdTdGF0ZU1hY2hpbmUpIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGVNYWNoaW5lOiBuZXdTdGF0ZU1hY2hpbmUsXG4gICAgbG9nR3JvdXAsXG4gICAgY2xvdWRXYXRjaEFsYXJtc1xuICB9O1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN0ZXBGdW5jdGlvbkNXQWxhcm1zKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHNtOiBzZm4uU3RhdGVNYWNoaW5lKTogY2xvdWR3YXRjaC5BbGFybVtdIHtcbiAgLy8gU2V0dXAgQ1cgQWxhcm1zIGZvciBTdGF0ZSBNYWNoaW5lXG4gIGNvbnN0IGFsYXJtczogY2xvdWR3YXRjaC5BbGFybVtdID0gbmV3IEFycmF5KCk7XG4gIGNvbnN0IHByZWZpeCA9IGlkID8/IFwiXCI7XG5cbiAgLy8gU3VtIG9mIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgZmFpbGVkIGlzID49IDEgZm9yIDUgbWludXRlcywgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCBgJHtwcmVmaXh9RXhlY3V0aW9uRmFpbGVkQWxhcm1gLCB7XG4gICAgbWV0cmljOiBzbS5tZXRyaWNGYWlsZWQoe1xuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDEsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBbGFybSBmb3IgdGhlIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgZmFpbGVkIGV4Y2VlZGVkIHRoZSB0aHJlc2hvbGQgb2YgMS4gJ1xuICB9KSk7XG5cbiAgLy8gU3VtIG9mIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgZmFpbGVkIG1heGltdW0gaXMgPj0gMSBmb3IgNSBtaW51dGUsIDEgY29uc2VjdXRpdmUgdGltZVxuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgYCR7cHJlZml4fUV4ZWN1dGlvblRocm90dGxlZEFsYXJtYCwge1xuICAgIG1ldHJpYzogc20ubWV0cmljVGhyb3R0bGVkKHtcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAxLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQWxhcm0gZm9yIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IHRocm90dGxlZCBleGNlZWRlZCB0aGUgdGhyZXNob2xkIG9mIDEuICdcbiAgfSkpO1xuXG4gIC8vIE51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgYWJvcnRlZCBtYXhpbXVtIGlzID49IDEgZm9yIDUgbWludXRlLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsIGAke3ByZWZpeH1FeGVjdXRpb25BYm9ydGVkQWxhcm1gLCB7XG4gICAgbWV0cmljOiBzbS5tZXRyaWNBYm9ydGVkKHtcbiAgICAgIHN0YXRpc3RpYzogJ01heGltdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMSxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0FsYXJtIGZvciB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgdGhhdCBhYm9ydGVkIGV4Y2VlZGVkIHRoZSB0aHJlc2hvbGQgb2YgMS4gJ1xuICB9KSk7XG5cbiAgcmV0dXJuIGFsYXJtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZU1hY2hpbmVQcm9wcyB7XG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZVByb3BzPzogc2ZuLlN0YXRlTWFjaGluZVByb3BzO1xuICByZWFkb25seSBleGlzdGluZ1N0YXRlTWFjaGluZU9iaj86IHNmbi5TdGF0ZU1hY2hpbmU7XG4gIHJlYWRvbmx5IGNyZWF0ZUNsb3VkV2F0Y2hBbGFybXM/OiBib29sZWFuO1xuICByZWFkb25seSBjbG91ZFdhdGNoQWxhcm1zUHJlZml4Pzogc3RyaW5nXG4gIHJlYWRvbmx5IGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja1N0YXRlTWFjaGluZVByb3BzKHByb3BzT2JqZWN0OiBTdGF0ZU1hY2hpbmVQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmICgocHJvcHNPYmplY3QuY3JlYXRlQ2xvdWRXYXRjaEFsYXJtcyA9PT0gZmFsc2UpICYmIHByb3BzT2JqZWN0LmNsb3VkV2F0Y2hBbGFybXNQcmVmaXgpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIGNsb3VkV2F0Y2hBbGFybXNQcmVmaXggaXMgaW52YWxpZCB3aGVuIGNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgaXMgZmFsc2VcXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKChwcm9wc09iamVjdC5leGlzdGluZ1N0YXRlTWFjaGluZU9iaikgJiZcbiAgICAocHJvcHNPYmplY3Quc3RhdGVNYWNoaW5lUHJvcHMgfHxcbiAgICAgIChwcm9wc09iamVjdC5jcmVhdGVDbG91ZFdhdGNoQWxhcm1zICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICBwcm9wc09iamVjdC5jbG91ZFdhdGNoQWxhcm1zUHJlZml4IHx8XG4gICAgICBwcm9wc09iamVjdC5sb2dHcm91cFByb3BzKSkge1xuXG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRVJST1IgLSBJZiBleGlzdGluZ1N0YXRlTWFjaGluZSBpcyBwcm92aWRlZCwgbm8gb3RoZXIgc3RhdGUgbWFjaGluZSBwcm9wcyBhcmUgYWxsb3dlZFxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
5
+ * with the License. A copy of the License is located at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
10
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
11
+ * and limitations under the License.
12
+ */
13
+ import { Construct } from 'constructs';
14
+ export declare const validApplicationLoadBalancerProps: Set<string>;
15
+ export declare const validApplicationListenerProps: Set<string>;
16
+ export declare const validContainerDefinitionProps: Set<string>;
17
+ export declare const validFargateTaskDefinitionProps: Set<string>;
18
+ export declare const validFargateServiceProps: Set<string>;
19
+ export declare const validLambdaRestApiProps: Set<string>;
20
+ export declare const validRestApiProps: Set<string>;
21
+ export declare const validDistributionProps: Set<string>;
22
+ export declare const validUserPoolClientProps: Set<string>;
23
+ export declare const validDynamoEventSourceProps: Set<string>;
24
+ export declare const validCfnPipeProps: Set<string>;
25
+ export declare const validCfnDeliveryStreamProps: Set<string>;
26
+ export declare const validStreamProps: Set<string>;
27
+ export declare const validCfnJobProps: Set<string>;
28
+ export declare const validKinesisEventSourceProps: Set<string>;
29
+ export declare const validCfnCacheClusterProps: Set<string>;
30
+ export declare const validCfnIndexProps: Set<string>;
31
+ export declare const validCfnDataSourceProps: Set<string>;
32
+ export declare const validKeyProps: Set<string>;
33
+ export declare const validVpcProps: Set<string>;
34
+ export declare const validCfnModelProps: Set<string>;
35
+ export declare const validPrivateHostedZoneProps: Set<string>;
36
+ export declare const validCfnWebACLProps: Set<string>;
37
+ export declare function ValidateProps(scope: Construct, target: any | undefined, validProps: Set<string>, propsTypeName: string): void;
38
+ export declare function ValidateApplicationLoadBalancerProps(scope: Construct, target?: any): void;
39
+ export declare function ValidateApplicationListenerProps(scope: Construct, target?: any): void;
40
+ export declare function ValidateContainerDefinitionProps(scope: Construct, target?: any): void;
41
+ export declare function ValidateFargateTaskDefinitionProps(scope: Construct, target?: any): void;
42
+ export declare function ValidateFargateServiceProps(scope: Construct, target?: any): void;
43
+ export declare function ValidateLambdaRestApiProps(scope: Construct, target?: any): void;
44
+ export declare function ValidateRestApiProps(scope: Construct, target?: any): void;
45
+ export declare function ValidateDistributionProps(scope: Construct, target?: any): void;
46
+ export declare function ValidateUserPoolClientProps(scope: Construct, target?: any): void;
47
+ export declare function ValidateDynamoEventSourceProps(scope: Construct, target?: any): void;
48
+ export declare function ValidateCfnPipeProps(scope: Construct, target?: any): void;
49
+ export declare function ValidateCfnDeliveryStreamProps(scope: Construct, target?: any): void;
50
+ export declare function ValidateStreamProps(scope: Construct, target?: any): void;
51
+ export declare function ValidateCfnJobProps(scope: Construct, target?: any): void;
52
+ export declare function ValidateKinesisEventSourceProps(scope: Construct, target?: any): void;
53
+ export declare function ValidateCfnCacheClusterProps(scope: Construct, target?: any): void;
54
+ export declare function ValidateCfnIndexProps(scope: Construct, target?: any): void;
55
+ export declare function ValidateCfnDataSourceProps(scope: Construct, target?: any): void;
56
+ export declare function ValidateKeyProps(scope: Construct, target?: any): void;
57
+ export declare function ValidateVpcProps(scope: Construct, target?: any): void;
58
+ export declare function ValidateCfnModelProps(scope: Construct, target?: any): void;
59
+ export declare function ValidatePrivateHostedZoneProps(scope: Construct, target?: any): void;
60
+ export declare function ValidateCfnWebACLProps(scope: Construct, target?: any): void;