@aws-solutions-constructs/core 2.3.0 → 2.6.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 +257 -40
  2. package/index.d.ts +2 -0
  3. package/index.js +3 -1
  4. package/lib/alb-helper.js +9 -27
  5. package/lib/apigateway-helper.js +8 -25
  6. package/lib/cloudfront-distribution-helper.js +4 -9
  7. package/lib/cloudwatch-log-group-helper.js +2 -7
  8. package/lib/cognito-helper.js +4 -16
  9. package/lib/dynamodb-table-helper.d.ts +9 -1
  10. package/lib/dynamodb-table-helper.js +34 -21
  11. package/lib/elasticache-defaults.d.ts +21 -0
  12. package/lib/elasticache-defaults.js +32 -0
  13. package/lib/elasticache-helper.d.ts +25 -0
  14. package/lib/elasticache-helper.js +70 -0
  15. package/lib/elasticsearch-helper.js +2 -4
  16. package/lib/glue-job-defaults.d.ts +2 -1
  17. package/lib/glue-job-defaults.js +5 -2
  18. package/lib/glue-job-helper.d.ts +8 -1
  19. package/lib/glue-job-helper.js +27 -18
  20. package/lib/input-validation.d.ts +1 -0
  21. package/lib/input-validation.js +10 -2
  22. package/lib/kinesis-streams-helper.js +4 -10
  23. package/lib/kms-helper.js +3 -9
  24. package/lib/lambda-event-source-mapping-defaults.js +4 -19
  25. package/lib/lambda-helper.js +11 -2
  26. package/lib/mediastore-helper.js +2 -7
  27. package/lib/sagemaker-helper.js +5 -17
  28. package/lib/secretsmanager-helper.js +2 -7
  29. package/lib/security-group-helper.d.ts +1 -0
  30. package/lib/security-group-helper.js +29 -2
  31. package/lib/sns-helper.js +2 -10
  32. package/lib/utils.d.ts +1 -1
  33. package/lib/utils.js +4 -4
  34. package/lib/vpc-helper.js +57 -46
  35. package/lib/waf-helper.js +2 -7
  36. package/package.json +7 -7
  37. package/test/dynamo-table.test.js +85 -1
  38. package/test/elasticache-defaults.test.d.ts +13 -0
  39. package/test/elasticache-defaults.test.js +32 -0
  40. package/test/elasticache-helper.test.d.ts +13 -0
  41. package/test/elasticache-helper.test.js +92 -0
  42. package/test/glue-job-helper.test.js +4 -2
  43. package/test/input-validation.test.js +10 -9
  44. package/test/security-group-helper.test.js +26 -1
  45. package/test/test-helper.d.ts +5 -1
  46. package/test/test-helper.js +43 -2
@@ -26,6 +26,13 @@ export interface BuildDynamoDBTableProps {
26
26
  * @default - None
27
27
  */
28
28
  readonly existingTableObj?: dynamodb.Table;
29
+ /**
30
+ * Existing instance of dynamodb interface.
31
+ * Providing both this and `dynamoTableProps` will cause an error.
32
+ *
33
+ * @default - None
34
+ */
35
+ readonly existingTableInterface?: dynamodb.ITable;
29
36
  }
30
37
  export interface BuildDynamoDBTableWithStreamProps {
31
38
  /**
@@ -42,6 +49,7 @@ export interface BuildDynamoDBTableWithStreamProps {
42
49
  */
43
50
  readonly existingTableInterface?: dynamodb.ITable;
44
51
  }
45
- export declare function buildDynamoDBTable(scope: Construct, props: BuildDynamoDBTableProps): dynamodb.Table;
52
+ export declare function buildDynamoDBTable(scope: Construct, props: BuildDynamoDBTableProps): [dynamodb.ITable, dynamodb.Table?];
53
+ export declare function checkTableProps(props: BuildDynamoDBTableProps): void;
46
54
  export declare function buildDynamoDBTableWithStream(scope: Construct, props: BuildDynamoDBTableWithStreamProps): [dynamodb.ITable, dynamodb.Table?];
47
55
  export declare function getPartitionKeyNameFromTable(table: dynamodb.Table): string;
@@ -12,40 +12,53 @@
12
12
  * and limitations under the License.
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getPartitionKeyNameFromTable = exports.buildDynamoDBTableWithStream = exports.buildDynamoDBTable = void 0;
15
+ exports.getPartitionKeyNameFromTable = exports.buildDynamoDBTableWithStream = exports.checkTableProps = exports.buildDynamoDBTable = void 0;
16
16
  const dynamodb = require("aws-cdk-lib/aws-dynamodb");
17
17
  const dynamodb_table_defaults_1 = require("./dynamodb-table-defaults");
18
18
  const utils_1 = require("./utils");
19
19
  function buildDynamoDBTable(scope, props) {
20
+ checkTableProps(props);
20
21
  // Conditional DynamoDB Table creation
21
- if (!props.existingTableObj) {
22
- // Set the default props for DynamoDB table
23
- if (props.dynamoTableProps) {
24
- const dynamoTableProps = utils_1.overrideProps(dynamodb_table_defaults_1.DefaultTableProps, props.dynamoTableProps);
25
- return new dynamodb.Table(scope, 'DynamoTable', dynamoTableProps);
26
- }
27
- else {
28
- return new dynamodb.Table(scope, 'DynamoTable', dynamodb_table_defaults_1.DefaultTableProps);
29
- }
22
+ if (props.existingTableObj) {
23
+ return [props.existingTableObj, props.existingTableObj];
24
+ }
25
+ else if (props.existingTableInterface) {
26
+ return [props.existingTableInterface, undefined];
30
27
  }
31
28
  else {
32
- return props.existingTableObj;
29
+ const consolidatedTableProps = utils_1.consolidateProps(dynamodb_table_defaults_1.DefaultTableProps, props.dynamoTableProps);
30
+ const newTable = new dynamodb.Table(scope, 'DynamoTable', consolidatedTableProps);
31
+ return [newTable, newTable];
33
32
  }
34
33
  }
35
34
  exports.buildDynamoDBTable = buildDynamoDBTable;
35
+ function checkTableProps(props) {
36
+ let errorMessages = '';
37
+ let errorFound = false;
38
+ if (props.dynamoTableProps && props.existingTableObj) {
39
+ errorMessages += 'Error - Either provide existingTableObj or dynamoTableProps, but not both.\n';
40
+ errorFound = true;
41
+ }
42
+ if (props.dynamoTableProps && props.existingTableInterface) {
43
+ errorMessages += 'Error - Either provide existingTableInterface or dynamoTableProps, but not both.\n';
44
+ errorFound = true;
45
+ }
46
+ if (props.existingTableObj && props.existingTableInterface) {
47
+ errorMessages += 'Error - Either provide existingTableInterface or existingTableObj, but not both.\n';
48
+ errorFound = true;
49
+ }
50
+ if (errorFound) {
51
+ throw new Error(errorMessages);
52
+ }
53
+ }
54
+ exports.checkTableProps = checkTableProps;
36
55
  function buildDynamoDBTableWithStream(scope, props) {
37
56
  // Conditional DynamoDB Table creation
38
57
  if (!props.existingTableInterface) {
39
58
  // Set the default props for DynamoDB table
40
- if (props.dynamoTableProps) {
41
- const dynamoTableProps = utils_1.overrideProps(dynamodb_table_defaults_1.DefaultTableWithStreamProps, props.dynamoTableProps);
42
- const dynamoTable = new dynamodb.Table(scope, 'DynamoTable', dynamoTableProps);
43
- return [dynamoTable, dynamoTable];
44
- }
45
- else {
46
- const dynamoTable = new dynamodb.Table(scope, 'DynamoTable', dynamodb_table_defaults_1.DefaultTableWithStreamProps);
47
- return [dynamoTable, dynamoTable];
48
- }
59
+ const dynamoTableProps = utils_1.consolidateProps(dynamodb_table_defaults_1.DefaultTableWithStreamProps, props.dynamoTableProps);
60
+ const dynamoTable = new dynamodb.Table(scope, 'DynamoTable', dynamoTableProps);
61
+ return [dynamoTable, dynamoTable];
49
62
  }
50
63
  else {
51
64
  return [props.existingTableInterface, undefined];
@@ -62,4 +75,4 @@ function getPartitionKeyNameFromTable(table) {
62
75
  return partitionKey.attributeName;
63
76
  }
64
77
  exports.getPartitionKeyNameFromTable = getPartitionKeyNameFromTable;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vZGItdGFibGUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZHluYW1vZGItdGFibGUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUgscURBQXFEO0FBQ3JELHVFQUEyRjtBQUMzRixtQ0FBd0M7QUFvQ3hDLFNBQWdCLGtCQUFrQixDQUFDLEtBQWdCLEVBQUUsS0FBOEI7SUFDakYsc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7UUFDM0IsMkNBQTJDO1FBQzNDLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLE1BQU0sZ0JBQWdCLEdBQUcscUJBQWEsQ0FBQywyQ0FBaUIsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRixPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDbkU7YUFBTTtZQUNMLE9BQU8sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsMkNBQWlCLENBQUMsQ0FBQztTQUNwRTtLQUNGO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztLQUMvQjtBQUNILENBQUM7QUFiRCxnREFhQztBQUVELFNBQWdCLDRCQUE0QixDQUFDLEtBQWdCLEVBQUUsS0FBd0M7SUFDckcsc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUU7UUFDakMsMkNBQTJDO1FBQzNDLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLE1BQU0sZ0JBQWdCLEdBQUcscUJBQWEsQ0FBQyxxREFBMkIsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RixNQUFNLFdBQVcsR0FBbUIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRixPQUFPLENBQUMsV0FBOEIsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0wsTUFBTSxXQUFXLEdBQW1CLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLHFEQUEyQixDQUFDLENBQUM7WUFDMUcsT0FBTyxDQUFDLFdBQThCLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDdEQ7S0FDRjtTQUFNO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNsRDtBQUNILENBQUM7QUFmRCxvRUFlQztBQUVELFNBQWdCLDRCQUE0QixDQUFDLEtBQXFCO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBc0IsQ0FBQztJQUN2RSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBa0QsQ0FBQztJQUM5RSxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFFLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ25GLElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0tBQ3hEO0lBQ0QsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDO0FBQ3BDLENBQUM7QUFSRCxvRUFRQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAyMDIyIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0ICogYXMgZHluYW1vZGIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCB7IERlZmF1bHRUYWJsZVByb3BzLCBEZWZhdWx0VGFibGVXaXRoU3RyZWFtUHJvcHMgfSBmcm9tICcuL2R5bmFtb2RiLXRhYmxlLWRlZmF1bHRzJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRHluYW1vREJUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBkeW5hbW9UYWJsZVByb3BzPzogZHluYW1vZGIuVGFibGVQcm9wcyxcbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIGR5bmFtb2RiIHRhYmxlIG9iamVjdC5cbiAgICogUHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgYGR5bmFtb1RhYmxlUHJvcHNgIHdpbGwgY2F1c2UgYW4gZXJyb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdUYWJsZU9iaj86IGR5bmFtb2RiLlRhYmxlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGREeW5hbW9EQlRhYmxlV2l0aFN0cmVhbVByb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBkeW5hbW9UYWJsZVByb3BzPzogZHluYW1vZGIuVGFibGVQcm9wcyxcbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIGR5bmFtb2RiIHRhYmxlIG9iamVjdC5cbiAgICogUHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgYGR5bmFtb1RhYmxlUHJvcHNgIHdpbGwgY2F1c2UgYW4gZXJyb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdUYWJsZUludGVyZmFjZT86IGR5bmFtb2RiLklUYWJsZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREeW5hbW9EQlRhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBCdWlsZER5bmFtb0RCVGFibGVQcm9wcyk6IGR5bmFtb2RiLlRhYmxlIHtcbiAgLy8gQ29uZGl0aW9uYWwgRHluYW1vREIgVGFibGUgY3JlYXRpb25cbiAgaWYgKCFwcm9wcy5leGlzdGluZ1RhYmxlT2JqKSB7XG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IHByb3BzIGZvciBEeW5hbW9EQiB0YWJsZVxuICAgIGlmIChwcm9wcy5keW5hbW9UYWJsZVByb3BzKSB7XG4gICAgICBjb25zdCBkeW5hbW9UYWJsZVByb3BzID0gb3ZlcnJpZGVQcm9wcyhEZWZhdWx0VGFibGVQcm9wcywgcHJvcHMuZHluYW1vVGFibGVQcm9wcyk7XG4gICAgICByZXR1cm4gbmV3IGR5bmFtb2RiLlRhYmxlKHNjb3BlLCAnRHluYW1vVGFibGUnLCBkeW5hbW9UYWJsZVByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBkeW5hbW9kYi5UYWJsZShzY29wZSwgJ0R5bmFtb1RhYmxlJywgRGVmYXVsdFRhYmxlUHJvcHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcHJvcHMuZXhpc3RpbmdUYWJsZU9iajtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREeW5hbW9EQlRhYmxlV2l0aFN0cmVhbShzY29wZTogQ29uc3RydWN0LCBwcm9wczogQnVpbGREeW5hbW9EQlRhYmxlV2l0aFN0cmVhbVByb3BzKTogW2R5bmFtb2RiLklUYWJsZSwgZHluYW1vZGIuVGFibGU/XSB7XG4gIC8vIENvbmRpdGlvbmFsIER5bmFtb0RCIFRhYmxlIGNyZWF0aW9uXG4gIGlmICghcHJvcHMuZXhpc3RpbmdUYWJsZUludGVyZmFjZSkge1xuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgRHluYW1vREIgdGFibGVcbiAgICBpZiAocHJvcHMuZHluYW1vVGFibGVQcm9wcykge1xuICAgICAgY29uc3QgZHluYW1vVGFibGVQcm9wcyA9IG92ZXJyaWRlUHJvcHMoRGVmYXVsdFRhYmxlV2l0aFN0cmVhbVByb3BzLCBwcm9wcy5keW5hbW9UYWJsZVByb3BzKTtcbiAgICAgIGNvbnN0IGR5bmFtb1RhYmxlOiBkeW5hbW9kYi5UYWJsZSA9IG5ldyBkeW5hbW9kYi5UYWJsZShzY29wZSwgJ0R5bmFtb1RhYmxlJywgZHluYW1vVGFibGVQcm9wcyk7XG4gICAgICByZXR1cm4gW2R5bmFtb1RhYmxlIGFzIGR5bmFtb2RiLklUYWJsZSwgZHluYW1vVGFibGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkeW5hbW9UYWJsZTogZHluYW1vZGIuVGFibGUgPSBuZXcgZHluYW1vZGIuVGFibGUoc2NvcGUsICdEeW5hbW9UYWJsZScsIERlZmF1bHRUYWJsZVdpdGhTdHJlYW1Qcm9wcyk7XG4gICAgICByZXR1cm4gW2R5bmFtb1RhYmxlIGFzIGR5bmFtb2RiLklUYWJsZSwgZHluYW1vVGFibGVdO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW3Byb3BzLmV4aXN0aW5nVGFibGVJbnRlcmZhY2UsIHVuZGVmaW5lZF07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnRpdGlvbktleU5hbWVGcm9tVGFibGUodGFibGU6IGR5bmFtb2RiLlRhYmxlKTogc3RyaW5nIHtcbiAgY29uc3QgY2ZuVGFibGUgPSB0YWJsZS5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBkeW5hbW9kYi5DZm5UYWJsZTtcbiAgY29uc3Qga2V5U2NoZW1hID0gY2ZuVGFibGUua2V5U2NoZW1hIGFzIGR5bmFtb2RiLkNmblRhYmxlLktleVNjaGVtYVByb3BlcnR5W107XG4gIGNvbnN0IHBhcnRpdGlvbktleSA9IGtleVNjaGVtYS5maW5kKCAoa2V5UGFydDogYW55KSA9PiBrZXlQYXJ0LmtleVR5cGUgPT09ICdIQVNIJyk7XG4gIGlmICghcGFydGl0aW9uS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQYXJ0aXRpb24ga2V5IGZvciB0YWJsZSBub3QgZGVmaW5lZCcpO1xuICB9XG4gIHJldHVybiBwYXJ0aXRpb25LZXkuYXR0cmlidXRlTmFtZTtcbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vZGItdGFibGUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZHluYW1vZGItdGFibGUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUgscURBQXFEO0FBQ3JELHVFQUEyRjtBQUMzRixtQ0FBMkM7QUEyQzNDLFNBQWdCLGtCQUFrQixDQUFDLEtBQWdCLEVBQUUsS0FBOEI7SUFDakYsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXZCLHNDQUFzQztJQUN0QyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtRQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ3pEO1NBQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEVBQUU7UUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNsRDtTQUFNO1FBQ0wsTUFBTSxzQkFBc0IsR0FBRyx3QkFBZ0IsQ0FBQywyQ0FBaUIsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDN0I7QUFDSCxDQUFDO0FBYkQsZ0RBYUM7QUFFRCxTQUFnQixlQUFlLENBQUMsS0FBOEI7SUFDNUQsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7UUFDcEQsYUFBYSxJQUFJLDhFQUE4RSxDQUFDO1FBQ2hHLFVBQVUsR0FBRyxJQUFJLENBQUM7S0FDbkI7SUFFRCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsc0JBQXNCLEVBQUU7UUFDMUQsYUFBYSxJQUFJLG9GQUFvRixDQUFDO1FBQ3RHLFVBQVUsR0FBRyxJQUFJLENBQUM7S0FDbkI7SUFFRCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsc0JBQXNCLEVBQUU7UUFDMUQsYUFBYSxJQUFJLG9GQUFvRixDQUFDO1FBQ3RHLFVBQVUsR0FBRyxJQUFJLENBQUM7S0FDbkI7SUFFRCxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDaEM7QUFDSCxDQUFDO0FBdEJELDBDQXNCQztBQUVELFNBQWdCLDRCQUE0QixDQUFDLEtBQWdCLEVBQUUsS0FBd0M7SUFDckcsc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUU7UUFDakMsMkNBQTJDO1FBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsd0JBQWdCLENBQUMscURBQTJCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0YsTUFBTSxXQUFXLEdBQW1CLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDL0YsT0FBTyxDQUFDLFdBQThCLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDbEQ7QUFDSCxDQUFDO0FBVkQsb0VBVUM7QUFFRCxTQUFnQiw0QkFBNEIsQ0FBQyxLQUFxQjtJQUNoRSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQXNCLENBQUM7SUFDdkUsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQWtELENBQUM7SUFDOUUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNsRixJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztLQUN4RDtJQUNELE9BQU8sWUFBWSxDQUFDLGFBQWEsQ0FBQztBQUNwQyxDQUFDO0FBUkQsb0VBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgMjAyMiBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgeyBEZWZhdWx0VGFibGVQcm9wcywgRGVmYXVsdFRhYmxlV2l0aFN0cmVhbVByb3BzIH0gZnJvbSAnLi9keW5hbW9kYi10YWJsZS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBjb25zb2xpZGF0ZVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZER5bmFtb0RCVGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgZHluYW1vVGFibGVQcm9wcz86IGR5bmFtb2RiLlRhYmxlUHJvcHMsXG4gIC8qKlxuICAgKiBFeGlzdGluZyBpbnN0YW5jZSBvZiBkeW5hbW9kYiB0YWJsZSBvYmplY3QuXG4gICAqIFByb3ZpZGluZyBib3RoIHRoaXMgYW5kIGBkeW5hbW9UYWJsZVByb3BzYCB3aWxsIGNhdXNlIGFuIGVycm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nVGFibGVPYmo/OiBkeW5hbW9kYi5UYWJsZVxuICAvKipcbiAgICogRXhpc3RpbmcgaW5zdGFuY2Ugb2YgZHluYW1vZGIgaW50ZXJmYWNlLlxuICAgKiBQcm92aWRpbmcgYm90aCB0aGlzIGFuZCBgZHluYW1vVGFibGVQcm9wc2Agd2lsbCBjYXVzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1RhYmxlSW50ZXJmYWNlPzogZHluYW1vZGIuSVRhYmxlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGREeW5hbW9EQlRhYmxlV2l0aFN0cmVhbVByb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBkeW5hbW9UYWJsZVByb3BzPzogZHluYW1vZGIuVGFibGVQcm9wcyxcbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIGR5bmFtb2RiIHRhYmxlIG9iamVjdC5cbiAgICogUHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgYGR5bmFtb1RhYmxlUHJvcHNgIHdpbGwgY2F1c2UgYW4gZXJyb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdUYWJsZUludGVyZmFjZT86IGR5bmFtb2RiLklUYWJsZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREeW5hbW9EQlRhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBCdWlsZER5bmFtb0RCVGFibGVQcm9wcyk6IFtkeW5hbW9kYi5JVGFibGUsIGR5bmFtb2RiLlRhYmxlP10ge1xuICBjaGVja1RhYmxlUHJvcHMocHJvcHMpO1xuXG4gIC8vIENvbmRpdGlvbmFsIER5bmFtb0RCIFRhYmxlIGNyZWF0aW9uXG4gIGlmIChwcm9wcy5leGlzdGluZ1RhYmxlT2JqKSB7XG4gICAgcmV0dXJuIFtwcm9wcy5leGlzdGluZ1RhYmxlT2JqLCBwcm9wcy5leGlzdGluZ1RhYmxlT2JqXTtcbiAgfSBlbHNlIGlmIChwcm9wcy5leGlzdGluZ1RhYmxlSW50ZXJmYWNlKSB7XG4gICAgcmV0dXJuIFtwcm9wcy5leGlzdGluZ1RhYmxlSW50ZXJmYWNlLCB1bmRlZmluZWRdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnNvbGlkYXRlZFRhYmxlUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRUYWJsZVByb3BzLCBwcm9wcy5keW5hbW9UYWJsZVByb3BzKTtcbiAgICBjb25zdCBuZXdUYWJsZSA9IG5ldyBkeW5hbW9kYi5UYWJsZShzY29wZSwgJ0R5bmFtb1RhYmxlJywgY29uc29saWRhdGVkVGFibGVQcm9wcyk7XG4gICAgcmV0dXJuIFtuZXdUYWJsZSwgbmV3VGFibGVdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1RhYmxlUHJvcHMocHJvcHM6IEJ1aWxkRHluYW1vREJUYWJsZVByb3BzKSB7XG4gIGxldCBlcnJvck1lc3NhZ2VzID0gJyc7XG4gIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgaWYgKHByb3BzLmR5bmFtb1RhYmxlUHJvcHMgJiYgcHJvcHMuZXhpc3RpbmdUYWJsZU9iaikge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgZXhpc3RpbmdUYWJsZU9iaiBvciBkeW5hbW9UYWJsZVByb3BzLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wcy5keW5hbW9UYWJsZVByb3BzICYmIHByb3BzLmV4aXN0aW5nVGFibGVJbnRlcmZhY2UpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGV4aXN0aW5nVGFibGVJbnRlcmZhY2Ugb3IgZHluYW1vVGFibGVQcm9wcywgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHMuZXhpc3RpbmdUYWJsZU9iaiAmJiBwcm9wcy5leGlzdGluZ1RhYmxlSW50ZXJmYWNlKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBleGlzdGluZ1RhYmxlSW50ZXJmYWNlIG9yIGV4aXN0aW5nVGFibGVPYmosIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRHluYW1vREJUYWJsZVdpdGhTdHJlYW0oc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IEJ1aWxkRHluYW1vREJUYWJsZVdpdGhTdHJlYW1Qcm9wcyk6IFtkeW5hbW9kYi5JVGFibGUsIGR5bmFtb2RiLlRhYmxlP10ge1xuICAvLyBDb25kaXRpb25hbCBEeW5hbW9EQiBUYWJsZSBjcmVhdGlvblxuICBpZiAoIXByb3BzLmV4aXN0aW5nVGFibGVJbnRlcmZhY2UpIHtcbiAgICAvLyBTZXQgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIER5bmFtb0RCIHRhYmxlXG4gICAgY29uc3QgZHluYW1vVGFibGVQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFRhYmxlV2l0aFN0cmVhbVByb3BzLCBwcm9wcy5keW5hbW9UYWJsZVByb3BzKTtcbiAgICBjb25zdCBkeW5hbW9UYWJsZTogZHluYW1vZGIuVGFibGUgPSBuZXcgZHluYW1vZGIuVGFibGUoc2NvcGUsICdEeW5hbW9UYWJsZScsIGR5bmFtb1RhYmxlUHJvcHMpO1xuICAgIHJldHVybiBbZHluYW1vVGFibGUgYXMgZHluYW1vZGIuSVRhYmxlLCBkeW5hbW9UYWJsZV07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtwcm9wcy5leGlzdGluZ1RhYmxlSW50ZXJmYWNlLCB1bmRlZmluZWRdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJ0aXRpb25LZXlOYW1lRnJvbVRhYmxlKHRhYmxlOiBkeW5hbW9kYi5UYWJsZSk6IHN0cmluZyB7XG4gIGNvbnN0IGNmblRhYmxlID0gdGFibGUubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgZHluYW1vZGIuQ2ZuVGFibGU7XG4gIGNvbnN0IGtleVNjaGVtYSA9IGNmblRhYmxlLmtleVNjaGVtYSBhcyBkeW5hbW9kYi5DZm5UYWJsZS5LZXlTY2hlbWFQcm9wZXJ0eVtdO1xuICBjb25zdCBwYXJ0aXRpb25LZXkgPSBrZXlTY2hlbWEuZmluZCgoa2V5UGFydDogYW55KSA9PiBrZXlQYXJ0LmtleVR5cGUgPT09ICdIQVNIJyk7XG4gIGlmICghcGFydGl0aW9uS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQYXJ0aXRpb24ga2V5IGZvciB0YWJsZSBub3QgZGVmaW5lZCcpO1xuICB9XG4gIHJldHVybiBwYXJ0aXRpb25LZXkuYXR0cmlidXRlTmFtZTtcbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright 2022 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
+ export declare function GetDefaultCachePort(): number;
14
+ export declare function GetMemcachedDefaults(id: string, port: number): {
15
+ clusterName: string;
16
+ cacheNodeType: string;
17
+ engine: string;
18
+ numCacheNodes: number;
19
+ port: number;
20
+ azMode: string;
21
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2022 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.GetMemcachedDefaults = exports.GetDefaultCachePort = void 0;
16
+ function GetDefaultCachePort() {
17
+ // Best practice not to use default port 11211
18
+ return 11222;
19
+ }
20
+ exports.GetDefaultCachePort = GetDefaultCachePort;
21
+ function GetMemcachedDefaults(id, port) {
22
+ return {
23
+ clusterName: `${id}-cdk-cluster`,
24
+ cacheNodeType: "cache.t3.medium",
25
+ engine: "memcached",
26
+ numCacheNodes: 2,
27
+ port,
28
+ azMode: 'cross-az'
29
+ };
30
+ }
31
+ exports.GetMemcachedDefaults = GetMemcachedDefaults;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY2FjaGUtZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbGFzdGljYWNoZS1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILFNBQWdCLG1CQUFtQjtJQUNqQyw4Q0FBOEM7SUFDOUMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBSEQsa0RBR0M7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxFQUFVLEVBQUUsSUFBWTtJQUMzRCxPQUFPO1FBQ0wsV0FBVyxFQUFFLEdBQUcsRUFBRSxjQUFjO1FBQ2hDLGFBQWEsRUFBRSxpQkFBaUI7UUFDaEMsTUFBTSxFQUFFLFdBQVc7UUFDbkIsYUFBYSxFQUFFLENBQUM7UUFDaEIsSUFBSTtRQUNKLE1BQU0sRUFBRSxVQUFVO0tBQ25CLENBQUM7QUFDSixDQUFDO0FBVEQsb0RBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgMjAyMiBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBHZXREZWZhdWx0Q2FjaGVQb3J0KCkge1xuICAvLyBCZXN0IHByYWN0aWNlIG5vdCB0byB1c2UgZGVmYXVsdCBwb3J0IDExMjExXG4gIHJldHVybiAxMTIyMjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEdldE1lbWNhY2hlZERlZmF1bHRzKGlkOiBzdHJpbmcsIHBvcnQ6IG51bWJlcikge1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJOYW1lOiBgJHtpZH0tY2RrLWNsdXN0ZXJgLFxuICAgIGNhY2hlTm9kZVR5cGU6IFwiY2FjaGUudDMubWVkaXVtXCIsXG4gICAgZW5naW5lOiBcIm1lbWNhY2hlZFwiLFxuICAgIG51bUNhY2hlTm9kZXM6IDIsXG4gICAgcG9ydCxcbiAgICBhek1vZGU6ICdjcm9zcy1heidcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright 2022 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 ec2 from "aws-cdk-lib/aws-ec2";
14
+ import * as cache from "aws-cdk-lib/aws-elasticache";
15
+ import { Construct } from "constructs";
16
+ export interface ObtainMemcachedClusterProps {
17
+ readonly cachePort?: any;
18
+ readonly cacheSecurityGroupId: string;
19
+ readonly cacheProps?: cache.CfnCacheClusterProps | any;
20
+ readonly existingCache?: cache.CfnCacheCluster;
21
+ readonly vpc?: ec2.IVpc;
22
+ }
23
+ export declare function obtainMemcachedCluster(scope: Construct, id: string, props: ObtainMemcachedClusterProps): cache.CfnCacheCluster;
24
+ export declare function createCacheSubnetGroup(construct: Construct, vpc: ec2.IVpc, id: string): cache.CfnSubnetGroup;
25
+ export declare function getCachePort(clientCacheProps?: cache.CfnCacheClusterProps | any, existingCache?: cache.CfnCacheCluster): any;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2022 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.getCachePort = exports.createCacheSubnetGroup = exports.obtainMemcachedCluster = void 0;
16
+ const cache = require("aws-cdk-lib/aws-elasticache");
17
+ const elasticache_defaults_1 = require("./elasticache-defaults");
18
+ const utils_1 = require("./utils");
19
+ function obtainMemcachedCluster(scope, id, props) {
20
+ var _a;
21
+ if (props.existingCache) {
22
+ (_a = props.existingCache.vpcSecurityGroupIds) === null || _a === void 0 ? void 0 : _a.push(props.cacheSecurityGroupId);
23
+ return props.existingCache;
24
+ }
25
+ else {
26
+ if (!props.cachePort) {
27
+ throw Error('props.cachePort required for new caches');
28
+ }
29
+ // Create the subnet group from all the isolated subnets in the VPC
30
+ const subnetGroup = createCacheSubnetGroup(scope, props.vpc, id);
31
+ const defaultProps = elasticache_defaults_1.GetMemcachedDefaults(id, props.cachePort);
32
+ const requiredConstructProps = {
33
+ vpcSecurityGroupIds: [props.cacheSecurityGroupId],
34
+ cacheSubnetGroupName: subnetGroup.cacheSubnetGroupName,
35
+ };
36
+ const consolidatedProps = utils_1.consolidateProps(defaultProps, props.cacheProps, requiredConstructProps, true);
37
+ const newCache = new cache.CfnCacheCluster(scope, `${id}-cluster`, consolidatedProps);
38
+ newCache.addDependsOn(subnetGroup);
39
+ return newCache;
40
+ }
41
+ }
42
+ exports.obtainMemcachedCluster = obtainMemcachedCluster;
43
+ function createCacheSubnetGroup(construct, vpc, id) {
44
+ // Memcached has no auth, all access control is
45
+ // network based, so, at least initially, we will
46
+ // only launch it in isolated subnets.
47
+ const subnetIds = [];
48
+ vpc.isolatedSubnets.forEach((subnet) => {
49
+ subnetIds.push(subnet.subnetId);
50
+ });
51
+ return new cache.CfnSubnetGroup(construct, `ec-subnetgroup-${id}`, {
52
+ description: "Solutions Constructs generated Cache Subnet Group",
53
+ subnetIds,
54
+ cacheSubnetGroupName: `${id}-subnet-group`,
55
+ });
56
+ }
57
+ exports.createCacheSubnetGroup = createCacheSubnetGroup;
58
+ function getCachePort(clientCacheProps, existingCache) {
59
+ if (existingCache) {
60
+ return existingCache.attrConfigurationEndpointPort;
61
+ }
62
+ else if (clientCacheProps === null || clientCacheProps === void 0 ? void 0 : clientCacheProps.port) {
63
+ return clientCacheProps.port;
64
+ }
65
+ else {
66
+ return elasticache_defaults_1.GetDefaultCachePort();
67
+ }
68
+ }
69
+ exports.getCachePort = getCachePort;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY2FjaGUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWxhc3RpY2FjaGUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBR0gscURBQXFEO0FBRXJELGlFQUFtRjtBQUNuRixtQ0FBMkM7QUFVM0MsU0FBZ0Isc0JBQXNCLENBQ3BDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQzs7SUFHbEMsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO1FBQ3ZCLE1BQUEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsMENBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRTtRQUMxRSxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUM7S0FDNUI7U0FBTTtRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxtRUFBbUU7UUFDbkUsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEUsTUFBTSxZQUFZLEdBQUcsMkNBQW9CLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxNQUFNLHNCQUFzQixHQUFHO1lBQzdCLG1CQUFtQixFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1lBQ2pELG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxvQkFBb0I7U0FDdkQsQ0FBQztRQUNGLE1BQU0saUJBQWlCLEdBQUcsd0JBQWdCLENBQ3hDLFlBQVksRUFDWixLQUFLLENBQUMsVUFBVSxFQUNoQixzQkFBc0IsRUFDdEIsSUFBSSxDQUNMLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQ3hDLEtBQUssRUFDTCxHQUFHLEVBQUUsVUFBVSxFQUNmLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQyxPQUFPLFFBQVEsQ0FBQztLQUNqQjtBQUVILENBQUM7QUF0Q0Qsd0RBc0NDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQ3BDLFNBQW9CLEVBQ3BCLEdBQWEsRUFDYixFQUFVO0lBR1YsK0NBQStDO0lBQy9DLGlEQUFpRDtJQUNqRCxzQ0FBc0M7SUFDdEMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQy9CLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDckMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFO1FBQ2pFLFdBQVcsRUFBRSxtREFBbUQ7UUFDaEUsU0FBUztRQUNULG9CQUFvQixFQUFFLEdBQUcsRUFBRSxlQUFlO0tBQzNDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFuQkQsd0RBbUJDO0FBRUQsU0FBZ0IsWUFBWSxDQUMxQixnQkFBbUQsRUFDbkQsYUFBcUM7SUFFckMsSUFBSSxhQUFhLEVBQUU7UUFDakIsT0FBTyxhQUFhLENBQUMsNkJBQThCLENBQUM7S0FDckQ7U0FBTSxJQUFJLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLElBQUksRUFBRTtRQUNqQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQztLQUM5QjtTQUFNO1FBQ0wsT0FBTywwQ0FBbUIsRUFBRSxDQUFDO0tBQzlCO0FBQ0gsQ0FBQztBQVhELG9DQVdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IDIwMjIgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIGNhY2hlIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGVcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBHZXREZWZhdWx0Q2FjaGVQb3J0LCBHZXRNZW1jYWNoZWREZWZhdWx0cyB9IGZyb20gJy4vZWxhc3RpY2FjaGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgY29uc29saWRhdGVQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9idGFpbk1lbWNhY2hlZENsdXN0ZXJQcm9wcyB7XG4gIHJlYWRvbmx5IGNhY2hlUG9ydD86IGFueSxcbiAgcmVhZG9ubHkgY2FjaGVTZWN1cml0eUdyb3VwSWQ6IHN0cmluZyxcbiAgcmVhZG9ubHkgY2FjaGVQcm9wcz86IGNhY2hlLkNmbkNhY2hlQ2x1c3RlclByb3BzIHwgYW55LFxuICByZWFkb25seSBleGlzdGluZ0NhY2hlPzogY2FjaGUuQ2ZuQ2FjaGVDbHVzdGVyLFxuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9idGFpbk1lbWNhY2hlZENsdXN0ZXIoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIHByb3BzOiBPYnRhaW5NZW1jYWNoZWRDbHVzdGVyUHJvcHNcbikge1xuXG4gIGlmIChwcm9wcy5leGlzdGluZ0NhY2hlKSB7XG4gICAgcHJvcHMuZXhpc3RpbmdDYWNoZS52cGNTZWN1cml0eUdyb3VwSWRzPy5wdXNoKHByb3BzLmNhY2hlU2VjdXJpdHlHcm91cElkKTtcbiAgICByZXR1cm4gcHJvcHMuZXhpc3RpbmdDYWNoZTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXByb3BzLmNhY2hlUG9ydCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ3Byb3BzLmNhY2hlUG9ydCByZXF1aXJlZCBmb3IgbmV3IGNhY2hlcycpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgc3VibmV0IGdyb3VwIGZyb20gYWxsIHRoZSBpc29sYXRlZCBzdWJuZXRzIGluIHRoZSBWUENcbiAgICBjb25zdCBzdWJuZXRHcm91cCA9IGNyZWF0ZUNhY2hlU3VibmV0R3JvdXAoc2NvcGUsIHByb3BzLnZwYyEsIGlkKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IEdldE1lbWNhY2hlZERlZmF1bHRzKGlkLCBwcm9wcy5jYWNoZVBvcnQpO1xuICAgIGNvbnN0IHJlcXVpcmVkQ29uc3RydWN0UHJvcHMgPSB7XG4gICAgICB2cGNTZWN1cml0eUdyb3VwSWRzOiBbcHJvcHMuY2FjaGVTZWN1cml0eUdyb3VwSWRdLFxuICAgICAgY2FjaGVTdWJuZXRHcm91cE5hbWU6IHN1Ym5ldEdyb3VwLmNhY2hlU3VibmV0R3JvdXBOYW1lLFxuICAgIH07XG4gICAgY29uc3QgY29uc29saWRhdGVkUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKFxuICAgICAgZGVmYXVsdFByb3BzLFxuICAgICAgcHJvcHMuY2FjaGVQcm9wcyxcbiAgICAgIHJlcXVpcmVkQ29uc3RydWN0UHJvcHMsXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIGNvbnN0IG5ld0NhY2hlID0gbmV3IGNhY2hlLkNmbkNhY2hlQ2x1c3RlcihcbiAgICAgIHNjb3BlLFxuICAgICAgYCR7aWR9LWNsdXN0ZXJgLFxuICAgICAgY29uc29saWRhdGVkUHJvcHNcbiAgICApO1xuICAgIG5ld0NhY2hlLmFkZERlcGVuZHNPbihzdWJuZXRHcm91cCk7XG4gICAgcmV0dXJuIG5ld0NhY2hlO1xuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNhY2hlU3VibmV0R3JvdXAoXG4gIGNvbnN0cnVjdDogQ29uc3RydWN0LFxuICB2cGM6IGVjMi5JVnBjLFxuICBpZDogc3RyaW5nXG4pOiBjYWNoZS5DZm5TdWJuZXRHcm91cCB7XG5cbiAgLy8gTWVtY2FjaGVkIGhhcyBubyBhdXRoLCBhbGwgYWNjZXNzIGNvbnRyb2wgaXNcbiAgLy8gbmV0d29yayBiYXNlZCwgc28sIGF0IGxlYXN0IGluaXRpYWxseSwgd2Ugd2lsbFxuICAvLyBvbmx5IGxhdW5jaCBpdCBpbiBpc29sYXRlZCBzdWJuZXRzLlxuICBjb25zdCBzdWJuZXRJZHM6IHN0cmluZ1tdID0gW107XG4gIHZwYy5pc29sYXRlZFN1Ym5ldHMuZm9yRWFjaCgoc3VibmV0KSA9PiB7XG4gICAgc3VibmV0SWRzLnB1c2goc3VibmV0LnN1Ym5ldElkKTtcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBjYWNoZS5DZm5TdWJuZXRHcm91cChjb25zdHJ1Y3QsIGBlYy1zdWJuZXRncm91cC0ke2lkfWAsIHtcbiAgICBkZXNjcmlwdGlvbjogXCJTb2x1dGlvbnMgQ29uc3RydWN0cyBnZW5lcmF0ZWQgQ2FjaGUgU3VibmV0IEdyb3VwXCIsXG4gICAgc3VibmV0SWRzLFxuICAgIGNhY2hlU3VibmV0R3JvdXBOYW1lOiBgJHtpZH0tc3VibmV0LWdyb3VwYCxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZVBvcnQoXG4gIGNsaWVudENhY2hlUHJvcHM/OiBjYWNoZS5DZm5DYWNoZUNsdXN0ZXJQcm9wcyB8IGFueSxcbiAgZXhpc3RpbmdDYWNoZT86IGNhY2hlLkNmbkNhY2hlQ2x1c3RlclxuKTogYW55IHtcbiAgaWYgKGV4aXN0aW5nQ2FjaGUpIHtcbiAgICByZXR1cm4gZXhpc3RpbmdDYWNoZS5hdHRyQ29uZmlndXJhdGlvbkVuZHBvaW50UG9ydCE7XG4gIH0gZWxzZSBpZiAoY2xpZW50Q2FjaGVQcm9wcz8ucG9ydCkge1xuICAgIHJldHVybiBjbGllbnRDYWNoZVByb3BzLnBvcnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEdldERlZmF1bHRDYWNoZVBvcnQoKTtcbiAgfVxufVxuIl19
@@ -62,9 +62,7 @@ function buildElasticSearch(scope, domainName, options, cfnDomainProps) {
62
62
  });
63
63
  cognitoKibanaConfigureRolePolicy.attachToRole(cognitoKibanaConfigureRole);
64
64
  let _cfnDomainProps = elasticsearch_defaults_1.DefaultCfnDomainProps(domainName, cognitoKibanaConfigureRole, options);
65
- if (cfnDomainProps) {
66
- _cfnDomainProps = utils_1.overrideProps(_cfnDomainProps, cfnDomainProps);
67
- }
65
+ _cfnDomainProps = utils_1.consolidateProps(_cfnDomainProps, cfnDomainProps);
68
66
  const esDomain = new elasticsearch.CfnDomain(scope, "ElasticsearchDomain", _cfnDomainProps);
69
67
  utils_1.addCfnSuppressRules(esDomain, [
70
68
  {
@@ -202,4 +200,4 @@ function buildElasticSearchCWAlarms(scope) {
202
200
  return alarms;
203
201
  }
204
202
  exports.buildElasticSearchCWAlarms = buildElasticSearchCWAlarms;
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY3NlYXJjaC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbGFzdGljc2VhcmNoLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILCtEQUErRDtBQUMvRCxxRUFBbUY7QUFDbkYsbUNBQTZEO0FBQzdELDJDQUEyQztBQUMzQyxtQ0FBbUM7QUFDbkMseURBQXlEO0FBSXpELFNBQWdCLGtCQUFrQixDQUFDLEtBQWdCLEVBQUUsVUFBa0IsRUFDckUsT0FBeUIsRUFBRSxjQUE2QztJQUV4RSxzRkFBc0Y7SUFDdEYsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLDRCQUE0QixFQUFFO1FBQ25GLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztLQUN4RCxDQUFDLENBQUM7SUFFSCxNQUFNLGdDQUFnQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsa0NBQWtDLEVBQUU7UUFDakcsVUFBVSxFQUFFO1lBQ1YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUN0QixPQUFPLEVBQUU7b0JBQ1AsOEJBQThCO29CQUM5QixrQ0FBa0M7b0JBQ2xDLGtDQUFrQztvQkFDbEMsb0NBQW9DO29CQUNwQywrQkFBK0I7b0JBQy9CLG9DQUFvQztvQkFDcEMsaUNBQWlDO29CQUNqQyx1Q0FBdUM7b0JBQ3ZDLHFDQUFxQztvQkFDckMsdUNBQXVDO29CQUN2Qyx1Q0FBdUM7b0JBQ3ZDLG9DQUFvQztpQkFDckM7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztvQkFDNUIsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxpQkFBaUIsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7b0JBQzNHLGNBQWMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLFdBQVcsVUFBVSxFQUFFO2lCQUMxRTthQUNGLENBQUM7WUFDRixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRTtvQkFDUCxjQUFjO2lCQUNmO2dCQUNELFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUUsRUFBQyxxQkFBcUIsRUFBRSxnQ0FBZ0MsRUFBQztpQkFDdEU7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULDBCQUEwQixDQUFDLE9BQU87aUJBQ25DO2FBQ0YsQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsZ0NBQWdDLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFMUUsSUFBSSxlQUFlLEdBQUcsOENBQXFCLENBQUMsVUFBVSxFQUFFLDBCQUEwQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTdGLElBQUksY0FBYyxFQUFFO1FBQ2xCLGVBQWUsR0FBRyxxQkFBYSxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQztLQUNsRTtJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUYsMkJBQW1CLENBQUMsUUFBUSxFQUFFO1FBQzVCO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsOEtBQThLO1NBQ3ZMO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFBRSxpRkFBaUY7U0FDMUY7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsUUFBUSxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFDaEQsQ0FBQztBQWpFRCxnREFpRUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FBQyxLQUFnQjtJQUN6RCx5QkFBeUI7SUFDekIsTUFBTSxNQUFNLEdBQXVCLElBQUksS0FBSyxFQUFFLENBQUM7SUFFL0MscUVBQXFFO0lBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtRQUN4RCxNQUFNLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsU0FBUyxFQUFFLFNBQVM7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFDO1FBQ0YsU0FBUyxFQUFFLENBQUM7UUFDWixpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxrQ0FBa0M7UUFDcEYsZ0JBQWdCLEVBQUUsMkVBQTJFO0tBQzlGLENBQUMsQ0FBQyxDQUFDO0lBRUosd0VBQXdFO0lBQ3hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtRQUMzRCxNQUFNLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFVBQVUsRUFBRSxzQkFBc0I7WUFDbEMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFDO1FBQ0YsU0FBUyxFQUFFLENBQUM7UUFDWixpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxrQ0FBa0M7UUFDcEYsZ0JBQWdCLEVBQUUsd0RBQXdEO0tBQzNFLENBQUMsQ0FBQyxDQUFDO0lBRUosd0VBQXdFO0lBQ3hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSw2QkFBNkIsRUFBRTtRQUNyRSxNQUFNLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFVBQVUsRUFBRSxrQkFBa0I7WUFDOUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFDO1FBQ0YsU0FBUyxFQUFFLEtBQUs7UUFDaEIsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsK0JBQStCO1FBQ2pGLGdCQUFnQixFQUFFLGlFQUFpRTtLQUNwRixDQUFDLENBQUMsQ0FBQztJQUVKLHNFQUFzRTtJQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUU7UUFDeEUsTUFBTSxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM1QixTQUFTLEVBQUUsUUFBUTtZQUNuQixVQUFVLEVBQUUsMkJBQTJCO1lBQ3ZDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDbEMsQ0FBQztRQUNGLFNBQVMsRUFBRSxDQUFDO1FBQ1osaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDO1FBQ3BGLGdCQUFnQixFQUFFLDBDQUEwQztLQUM3RCxDQUFDLENBQUMsQ0FBQztJQUVKLDRFQUE0RTtJQUM1RSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsc0NBQXNDLEVBQUU7UUFDOUUsTUFBTSxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM1QixTQUFTLEVBQUUsUUFBUTtZQUNuQixVQUFVLEVBQUUsMEJBQTBCO1lBQ3RDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDakMsQ0FBQztRQUNGLFNBQVMsRUFBRSxDQUFDO1FBQ1osaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDO1FBQ3BGLGdCQUFnQixFQUFFLGdHQUFnRztLQUNuSCxDQUFDLENBQUMsQ0FBQztJQUVKLHVFQUF1RTtJQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsNEJBQTRCLEVBQUU7UUFDcEUsTUFBTSxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM1QixTQUFTLEVBQUUsUUFBUTtZQUNuQixVQUFVLEVBQUUsZ0JBQWdCO1lBQzVCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDbEMsQ0FBQztRQUNGLFNBQVMsRUFBRSxFQUFFO1FBQ2IsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDO1FBQ3BGLGdCQUFnQixFQUFFLDBJQUEwSTtLQUM3SixDQUFDLENBQUMsQ0FBQztJQUVKLHlFQUF5RTtJQUN6RSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsK0JBQStCLEVBQUU7UUFDdkUsTUFBTSxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM1QixTQUFTLEVBQUUsUUFBUTtZQUNuQixVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDbEMsQ0FBQztRQUNGLFNBQVMsRUFBRSxFQUFFO1FBQ2IsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDO1FBQ3BGLGdCQUFnQixFQUFFLHlGQUF5RjtLQUM1RyxDQUFDLENBQUMsQ0FBQztJQUVKLDZFQUE2RTtJQUM3RSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsa0NBQWtDLEVBQUU7UUFDMUUsTUFBTSxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM1QixTQUFTLEVBQUUsUUFBUTtZQUNuQixVQUFVLEVBQUUsc0JBQXNCO1lBQ2xDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDbEMsQ0FBQztRQUNGLFNBQVMsRUFBRSxFQUFFO1FBQ2IsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDO1FBQ3BGLGdCQUFnQixFQUFFLDhIQUE4SDtLQUNqSixDQUFDLENBQUMsQ0FBQztJQUVKLCtFQUErRTtJQUMvRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUscUNBQXFDLEVBQUU7UUFDN0UsTUFBTSxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM1QixTQUFTLEVBQUUsUUFBUTtZQUNuQixVQUFVLEVBQUUseUJBQXlCO1lBQ3JDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDbEMsQ0FBQztRQUNGLFNBQVMsRUFBRSxFQUFFO1FBQ2IsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDO1FBQ3BGLGdCQUFnQixFQUFFLHlGQUF5RjtLQUM1RyxDQUFDLENBQUMsQ0FBQztJQUVKLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFuSUQsZ0VBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IDIwMjIgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBlbGFzdGljc2VhcmNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljc2VhcmNoJztcbmltcG9ydCB7IENmbkRvbWFpbk9wdGlvbnMsIERlZmF1bHRDZm5Eb21haW5Qcm9wcyB9IGZyb20gJy4vZWxhc3RpY3NlYXJjaC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRWxhc3RpY1NlYXJjaChzY29wZTogQ29uc3RydWN0LCBkb21haW5OYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENmbkRvbWFpbk9wdGlvbnMsIGNmbkRvbWFpblByb3BzPzogZWxhc3RpY3NlYXJjaC5DZm5Eb21haW5Qcm9wcyk6IFtlbGFzdGljc2VhcmNoLkNmbkRvbWFpbiwgaWFtLlJvbGVdIHtcblxuICAvLyBTZXR1cCB0aGUgSUFNIFJvbGUgJiBwb2xpY3kgZm9yIEVTIHRvIGNvbmZpZ3VyZSBDb2duaXRvIFVzZXIgcG9vbCBhbmQgSWRlbnRpdHkgcG9vbFxuICBjb25zdCBjb2duaXRvS2liYW5hQ29uZmlndXJlUm9sZSA9IG5ldyBpYW0uUm9sZShzY29wZSwgJ0NvZ25pdG9LaWJhbmFDb25maWd1cmVSb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlcy5hbWF6b25hd3MuY29tJylcbiAgfSk7XG5cbiAgY29uc3QgY29nbml0b0tpYmFuYUNvbmZpZ3VyZVJvbGVQb2xpY3kgPSBuZXcgaWFtLlBvbGljeShzY29wZSwgJ0NvZ25pdG9LaWJhbmFDb25maWd1cmVSb2xlUG9saWN5Jywge1xuICAgIHN0YXRlbWVudHM6IFtcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiY29nbml0by1pZHA6RGVzY3JpYmVVc2VyUG9vbFwiLFxuICAgICAgICAgIFwiY29nbml0by1pZHA6Q3JlYXRlVXNlclBvb2xDbGllbnRcIixcbiAgICAgICAgICBcImNvZ25pdG8taWRwOkRlbGV0ZVVzZXJQb29sQ2xpZW50XCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkcDpEZXNjcmliZVVzZXJQb29sQ2xpZW50XCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkcDpBZG1pbkluaXRpYXRlQXV0aFwiLFxuICAgICAgICAgIFwiY29nbml0by1pZHA6QWRtaW5Vc2VyR2xvYmFsU2lnbk91dFwiLFxuICAgICAgICAgIFwiY29nbml0by1pZHA6TGlzdFVzZXJQb29sQ2xpZW50c1wiLFxuICAgICAgICAgIFwiY29nbml0by1pZGVudGl0eTpEZXNjcmliZUlkZW50aXR5UG9vbFwiLFxuICAgICAgICAgIFwiY29nbml0by1pZGVudGl0eTpVcGRhdGVJZGVudGl0eVBvb2xcIixcbiAgICAgICAgICBcImNvZ25pdG8taWRlbnRpdHk6U2V0SWRlbnRpdHlQb29sUm9sZXNcIixcbiAgICAgICAgICBcImNvZ25pdG8taWRlbnRpdHk6R2V0SWRlbnRpdHlQb29sUm9sZXNcIixcbiAgICAgICAgICBcImVzOlVwZGF0ZUVsYXN0aWNzZWFyY2hEb21haW5Db25maWdcIlxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBvcHRpb25zLnVzZXJwb29sLnVzZXJQb29sQXJuLFxuICAgICAgICAgIGBhcm46YXdzOmNvZ25pdG8taWRlbnRpdHk6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OmlkZW50aXR5cG9vbC8ke29wdGlvbnMuaWRlbnRpdHlwb29sLnJlZn1gLFxuICAgICAgICAgIGBhcm46YXdzOmVzOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTpkb21haW4vJHtkb21haW5OYW1lfWBcbiAgICAgICAgXVxuICAgICAgfSksXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcImlhbTpQYXNzUm9sZVwiXG4gICAgICAgIF0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdMaWtlOiB7J2lhbTpQYXNzZWRUb1NlcnZpY2UnOiAnY29nbml0by1pZGVudGl0eS5hbWF6b25hd3MuY29tJ31cbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgY29nbml0b0tpYmFuYUNvbmZpZ3VyZVJvbGUucm9sZUFyblxuICAgICAgICBdXG4gICAgICB9KVxuICAgIF1cbiAgfSk7XG4gIGNvZ25pdG9LaWJhbmFDb25maWd1cmVSb2xlUG9saWN5LmF0dGFjaFRvUm9sZShjb2duaXRvS2liYW5hQ29uZmlndXJlUm9sZSk7XG5cbiAgbGV0IF9jZm5Eb21haW5Qcm9wcyA9IERlZmF1bHRDZm5Eb21haW5Qcm9wcyhkb21haW5OYW1lLCBjb2duaXRvS2liYW5hQ29uZmlndXJlUm9sZSwgb3B0aW9ucyk7XG5cbiAgaWYgKGNmbkRvbWFpblByb3BzKSB7XG4gICAgX2NmbkRvbWFpblByb3BzID0gb3ZlcnJpZGVQcm9wcyhfY2ZuRG9tYWluUHJvcHMsIGNmbkRvbWFpblByb3BzKTtcbiAgfVxuXG4gIGNvbnN0IGVzRG9tYWluID0gbmV3IGVsYXN0aWNzZWFyY2guQ2ZuRG9tYWluKHNjb3BlLCBcIkVsYXN0aWNzZWFyY2hEb21haW5cIiwgX2NmbkRvbWFpblByb3BzKTtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhlc0RvbWFpbiwgW1xuICAgIHtcbiAgICAgIGlkOiBcIlcyOFwiLFxuICAgICAgcmVhc29uOiBgVGhlIEVTIERvbWFpbiBpcyBwYXNzZWQgZHluYW1pY2FsbHkgYXMgYXMgcGFyYW1ldGVyIGFuZCBleHBsaWNpdGx5IHNwZWNpZmllZCB0byBlbnN1cmUgdGhhdCBJQU0gcG9saWNpZXMgYXJlIGNvbmZpZ3VyZWQgdG8gbG9ja2Rvd24gYWNjZXNzIHRvIHRoaXMgc3BlY2lmaWMgRVMgaW5zdGFuY2Ugb25seWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogXCJXOTBcIixcbiAgICAgIHJlYXNvbjogYFRoaXMgaXMgbm90IGEgcnVsZSBmb3IgdGhlIGdlbmVyYWwgY2FzZSwganVzdCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzL2luZHVzdHJpZXNgLFxuICAgIH0sXG4gIF0pO1xuXG4gIHJldHVybiBbZXNEb21haW4sIGNvZ25pdG9LaWJhbmFDb25maWd1cmVSb2xlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRWxhc3RpY1NlYXJjaENXQWxhcm1zKHNjb3BlOiBDb25zdHJ1Y3QpOiBjbG91ZHdhdGNoLkFsYXJtW10ge1xuICAvLyBTZXR1cCBDVyBBbGFybXMgZm9yIEVTXG4gIGNvbnN0IGFsYXJtczogY2xvdWR3YXRjaC5BbGFybVtdID0gbmV3IEFycmF5KCk7XG5cbiAgLy8gQ2x1c3RlclN0YXR1cy5yZWQgbWF4aW11bSBpcyA+PSAxIGZvciAxIG1pbnV0ZSwgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCAnU3RhdHVzUmVkQWxhcm0nLCB7XG4gICAgbWV0cmljOiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0VTJyxcbiAgICAgIG1ldHJpY05hbWU6ICdDbHVzdGVyU3RhdHVzLnJlZCcsXG4gICAgICBzdGF0aXN0aWM6ICdNYXhpbXVtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMSxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0F0IGxlYXN0IG9uZSBwcmltYXJ5IHNoYXJkIGFuZCBpdHMgcmVwbGljYXMgYXJlIG5vdCBhbGxvY2F0ZWQgdG8gYSBub2RlLiAnXG4gIH0pKTtcblxuICAvLyBDbHVzdGVyU3RhdHVzLnllbGxvdyBtYXhpbXVtIGlzID49IDEgZm9yIDEgbWludXRlLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsICdTdGF0dXNZZWxsb3dBbGFybScsIHtcbiAgICBtZXRyaWM6IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRVMnLFxuICAgICAgbWV0cmljTmFtZTogJ0NsdXN0ZXJTdGF0dXMueWVsbG93JyxcbiAgICAgIHN0YXRpc3RpYzogJ01heGltdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAxLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQXQgbGVhc3Qgb25lIHJlcGxpY2Egc2hhcmQgaXMgbm90IGFsbG9jYXRlZCB0byBhIG5vZGUuJ1xuICB9KSk7XG5cbiAgLy8gRnJlZVN0b3JhZ2VTcGFjZSBtaW5pbXVtIGlzIDw9IDIwNDgwIGZvciAxIG1pbnV0ZSwgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCAnRnJlZVN0b3JhZ2VTcGFjZVRvb0xvd0FsYXJtJywge1xuICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FUycsXG4gICAgICBtZXRyaWNOYW1lOiAnRnJlZVN0b3JhZ2VTcGFjZScsXG4gICAgICBzdGF0aXN0aWM6ICdNaW5pbXVtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMjAwMDAsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBIG5vZGUgaW4geW91ciBjbHVzdGVyIGlzIGRvd24gdG8gMjAgR2lCIG9mIGZyZWUgc3RvcmFnZSBzcGFjZS4nXG4gIH0pKTtcblxuICAvLyBDbHVzdGVySW5kZXhXcml0ZXNCbG9ja2VkIGlzID49IDEgZm9yIDUgbWludXRlcywgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCAnSW5kZXhXcml0ZXNCbG9ja2VkVG9vSGlnaEFsYXJtJywge1xuICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FUycsXG4gICAgICBtZXRyaWNOYW1lOiAnQ2x1c3RlckluZGV4V3JpdGVzQmxvY2tlZCcsXG4gICAgICBzdGF0aXN0aWM6ICdNYXhpbXVtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDEsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdZb3VyIGNsdXN0ZXIgaXMgYmxvY2tpbmcgd3JpdGUgcmVxdWVzdHMuJ1xuICB9KSk7XG5cbiAgLy8gQXV0b21hdGVkU25hcHNob3RGYWlsdXJlIG1heGltdW0gaXMgPj0gMSBmb3IgMSBtaW51dGUsIDEgY29uc2VjdXRpdmUgdGltZVxuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgJ0F1dG9tYXRlZFNuYXBzaG90RmFpbHVyZVRvb0hpZ2hBbGFybScsIHtcbiAgICBtZXRyaWM6IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRVMnLFxuICAgICAgbWV0cmljTmFtZTogJ0F1dG9tYXRlZFNuYXBzaG90RmFpbHVyZScsXG4gICAgICBzdGF0aXN0aWM6ICdNYXhpbXVtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMSxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0FuIGF1dG9tYXRlZCBzbmFwc2hvdCBmYWlsZWQuIFRoaXMgZmFpbHVyZSBpcyBvZnRlbiB0aGUgcmVzdWx0IG9mIGEgcmVkIGNsdXN0ZXIgaGVhbHRoIHN0YXR1cy4nXG4gIH0pKTtcblxuICAvLyBDUFVVdGlsaXphdGlvbiBtYXhpbXVtIGlzID49IDgwJSBmb3IgMTUgbWludXRlcywgMyBjb25zZWN1dGl2ZSB0aW1lc1xuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgJ0NQVVV0aWxpemF0aW9uVG9vSGlnaEFsYXJtJywge1xuICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FUycsXG4gICAgICBtZXRyaWNOYW1lOiAnQ1BVVXRpbGl6YXRpb24nLFxuICAgICAgc3RhdGlzdGljOiAnQXZlcmFnZScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDkwMCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiA4MCxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJzEwMCUgQ1BVIHV0aWxpemF0aW9uIGlzIG5vdCB1bmNvbW1vbiwgYnV0IHN1c3RhaW5lZCBoaWdoIHVzYWdlIGlzIHByb2JsZW1hdGljLiBDb25zaWRlciB1c2luZyBsYXJnZXIgaW5zdGFuY2UgdHlwZXMgb3IgYWRkaW5nIGluc3RhbmNlcy4nXG4gIH0pKTtcblxuICAvLyBKVk1NZW1vcnlQcmVzc3VyZSBtYXhpbXVtIGlzID49IDgwJSBmb3IgNSBtaW51dGVzLCAzIGNvbnNlY3V0aXZlIHRpbWVzXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCAnSlZNTWVtb3J5UHJlc3N1cmVUb29IaWdoQWxhcm0nLCB7XG4gICAgbWV0cmljOiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0VTJyxcbiAgICAgIG1ldHJpY05hbWU6ICdKVk1NZW1vcnlQcmVzc3VyZScsXG4gICAgICBzdGF0aXN0aWM6ICdBdmVyYWdlJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoOTAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDgwLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQXZlcmFnZSBKVk0gbWVtb3J5IHByZXNzdXJlIG92ZXIgbGFzdCAxNSBtaW51dGVzIHRvbyBoaWdoLiBDb25zaWRlciBzY2FsaW5nIHZlcnRpY2FsbHkuJ1xuICB9KSk7XG5cbiAgLy8gTWFzdGVyQ1BVVXRpbGl6YXRpb24gbWF4aW11bSBpcyA+PSA1MCUgZm9yIDE1IG1pbnV0ZXMsIDMgY29uc2VjdXRpdmUgdGltZXNcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsICdNYXN0ZXJDUFVVdGlsaXphdGlvblRvb0hpZ2hBbGFybScsIHtcbiAgICBtZXRyaWM6IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRVMnLFxuICAgICAgbWV0cmljTmFtZTogJ01hc3RlckNQVVV0aWxpemF0aW9uJyxcbiAgICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg5MDApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogNTAsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBdmVyYWdlIENQVSB1dGlsaXphdGlvbiBvdmVyIGxhc3QgNDUgbWludXRlcyB0b28gaGlnaC4gQ29uc2lkZXIgdXNpbmcgbGFyZ2VyIGluc3RhbmNlIHR5cGVzIGZvciB5b3VyIGRlZGljYXRlZCBtYXN0ZXIgbm9kZXMuJ1xuICB9KSk7XG5cbiAgLy8gTWFzdGVySlZNTWVtb3J5UHJlc3N1cmUgbWF4aW11bSBpcyA+PSA4MCUgZm9yIDE1IG1pbnV0ZXMsIDEgY29uc2VjdXRpdmUgdGltZVxuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgJ01hc3RlckpWTU1lbW9yeVByZXNzdXJlVG9vSGlnaEFsYXJtJywge1xuICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FUycsXG4gICAgICBtZXRyaWNOYW1lOiAnTWFzdGVySlZNTWVtb3J5UHJlc3N1cmUnLFxuICAgICAgc3RhdGlzdGljOiAnQXZlcmFnZScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDkwMCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiA1MCxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0F2ZXJhZ2UgSlZNIG1lbW9yeSBwcmVzc3VyZSBvdmVyIGxhc3QgMTUgbWludXRlcyB0b28gaGlnaC4gQ29uc2lkZXIgc2NhbGluZyB2ZXJ0aWNhbGx5LidcbiAgfSkpO1xuXG4gIHJldHVybiBhbGFybXM7XG59XG4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY3NlYXJjaC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbGFzdGljc2VhcmNoLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILCtEQUErRDtBQUMvRCxxRUFBbUY7QUFDbkYsbUNBQWdFO0FBQ2hFLDJDQUEyQztBQUMzQyxtQ0FBbUM7QUFDbkMseURBQXlEO0FBSXpELFNBQWdCLGtCQUFrQixDQUFDLEtBQWdCLEVBQUUsVUFBa0IsRUFDckUsT0FBeUIsRUFBRSxjQUE2QztJQUV4RSxzRkFBc0Y7SUFDdEYsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLDRCQUE0QixFQUFFO1FBQ25GLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztLQUN4RCxDQUFDLENBQUM7SUFFSCxNQUFNLGdDQUFnQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsa0NBQWtDLEVBQUU7UUFDakcsVUFBVSxFQUFFO1lBQ1YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUN0QixPQUFPLEVBQUU7b0JBQ1AsOEJBQThCO29CQUM5QixrQ0FBa0M7b0JBQ2xDLGtDQUFrQztvQkFDbEMsb0NBQW9DO29CQUNwQywrQkFBK0I7b0JBQy9CLG9DQUFvQztvQkFDcEMsaUNBQWlDO29CQUNqQyx1Q0FBdUM7b0JBQ3ZDLHFDQUFxQztvQkFDckMsdUNBQXVDO29CQUN2Qyx1Q0FBdUM7b0JBQ3ZDLG9DQUFvQztpQkFDckM7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztvQkFDNUIsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxpQkFBaUIsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7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IG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGVsYXN0aWNzZWFyY2ggZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNzZWFyY2gnO1xuaW1wb3J0IHsgQ2ZuRG9tYWluT3B0aW9ucywgRGVmYXVsdENmbkRvbWFpblByb3BzIH0gZnJvbSAnLi9lbGFzdGljc2VhcmNoLWRlZmF1bHRzJztcbmltcG9ydCB7IGNvbnNvbGlkYXRlUHJvcHMsIGFkZENmblN1cHByZXNzUnVsZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFbGFzdGljU2VhcmNoKHNjb3BlOiBDb25zdHJ1Y3QsIGRvbWFpbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogQ2ZuRG9tYWluT3B0aW9ucywgY2ZuRG9tYWluUHJvcHM/OiBlbGFzdGljc2VhcmNoLkNmbkRvbWFpblByb3BzKTogW2VsYXN0aWNzZWFyY2guQ2ZuRG9tYWluLCBpYW0uUm9sZV0ge1xuXG4gIC8vIFNldHVwIHRoZSBJQU0gUm9sZSAmIHBvbGljeSBmb3IgRVMgdG8gY29uZmlndXJlIENvZ25pdG8gVXNlciBwb29sIGFuZCBJZGVudGl0eSBwb29sXG4gIGNvbnN0IGNvZ25pdG9LaWJhbmFDb25maWd1cmVSb2xlID0gbmV3IGlhbS5Sb2xlKHNjb3BlLCAnQ29nbml0b0tpYmFuYUNvbmZpZ3VyZVJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VzLmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICBjb25zdCBjb2duaXRvS2liYW5hQ29uZmlndXJlUm9sZVBvbGljeSA9IG5ldyBpYW0uUG9saWN5KHNjb3BlLCAnQ29nbml0b0tpYmFuYUNvbmZpZ3VyZVJvbGVQb2xpY3knLCB7XG4gICAgc3RhdGVtZW50czogW1xuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJjb2duaXRvLWlkcDpEZXNjcmliZVVzZXJQb29sXCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkcDpDcmVhdGVVc2VyUG9vbENsaWVudFwiLFxuICAgICAgICAgIFwiY29nbml0by1pZHA6RGVsZXRlVXNlclBvb2xDbGllbnRcIixcbiAgICAgICAgICBcImNvZ25pdG8taWRwOkRlc2NyaWJlVXNlclBvb2xDbGllbnRcIixcbiAgICAgICAgICBcImNvZ25pdG8taWRwOkFkbWluSW5pdGlhdGVBdXRoXCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkcDpBZG1pblVzZXJHbG9iYWxTaWduT3V0XCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkcDpMaXN0VXNlclBvb2xDbGllbnRzXCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkZW50aXR5OkRlc2NyaWJlSWRlbnRpdHlQb29sXCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkZW50aXR5OlVwZGF0ZUlkZW50aXR5UG9vbFwiLFxuICAgICAgICAgIFwiY29nbml0by1pZGVudGl0eTpTZXRJZGVudGl0eVBvb2xSb2xlc1wiLFxuICAgICAgICAgIFwiY29nbml0by1pZGVudGl0eTpHZXRJZGVudGl0eVBvb2xSb2xlc1wiLFxuICAgICAgICAgIFwiZXM6VXBkYXRlRWxhc3RpY3NlYXJjaERvbWFpbkNvbmZpZ1wiXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIG9wdGlvbnMudXNlcnBvb2wudXNlclBvb2xBcm4sXG4gICAgICAgICAgYGFybjphd3M6Y29nbml0by1pZGVudGl0eToke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06aWRlbnRpdHlwb29sLyR7b3B0aW9ucy5pZGVudGl0eXBvb2wucmVmfWAsXG4gICAgICAgICAgYGFybjphd3M6ZXM6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OmRvbWFpbi8ke2RvbWFpbk5hbWV9YFxuICAgICAgICBdXG4gICAgICB9KSxcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiaWFtOlBhc3NSb2xlXCJcbiAgICAgICAgXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0xpa2U6IHsgJ2lhbTpQYXNzZWRUb1NlcnZpY2UnOiAnY29nbml0by1pZGVudGl0eS5hbWF6b25hd3MuY29tJyB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGNvZ25pdG9LaWJhbmFDb25maWd1cmVSb2xlLnJvbGVBcm5cbiAgICAgICAgXVxuICAgICAgfSlcbiAgICBdXG4gIH0pO1xuICBjb2duaXRvS2liYW5hQ29uZmlndXJlUm9sZVBvbGljeS5hdHRhY2hUb1JvbGUoY29nbml0b0tpYmFuYUNvbmZpZ3VyZVJvbGUpO1xuXG4gIGxldCBfY2ZuRG9tYWluUHJvcHMgPSBEZWZhdWx0Q2ZuRG9tYWluUHJvcHMoZG9tYWluTmFtZSwgY29nbml0b0tpYmFuYUNvbmZpZ3VyZVJvbGUsIG9wdGlvbnMpO1xuXG4gIF9jZm5Eb21haW5Qcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoX2NmbkRvbWFpblByb3BzLCBjZm5Eb21haW5Qcm9wcyk7XG5cbiAgY29uc3QgZXNEb21haW4gPSBuZXcgZWxhc3RpY3NlYXJjaC5DZm5Eb21haW4oc2NvcGUsIFwiRWxhc3RpY3NlYXJjaERvbWFpblwiLCBfY2ZuRG9tYWluUHJvcHMpO1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGVzRG9tYWluLCBbXG4gICAge1xuICAgICAgaWQ6IFwiVzI4XCIsXG4gICAgICByZWFzb246IGBUaGUgRVMgRG9tYWluIGlzIHBhc3NlZCBkeW5hbWljYWxseSBhcyBhcyBwYXJhbWV0ZXIgYW5kIGV4cGxpY2l0bHkgc3BlY2lmaWVkIHRvIGVuc3VyZSB0aGF0IElBTSBwb2xpY2llcyBhcmUgY29uZmlndXJlZCB0byBsb2NrZG93biBhY2Nlc3MgdG8gdGhpcyBzcGVjaWZpYyBFUyBpbnN0YW5jZSBvbmx5YCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBcIlc5MFwiLFxuICAgICAgcmVhc29uOiBgVGhpcyBpcyBub3QgYSBydWxlIGZvciB0aGUgZ2VuZXJhbCBjYXNlLCBqdXN0IGZvciBzcGVjaWZpYyB1c2UgY2FzZXMvaW5kdXN0cmllc2AsXG4gICAgfSxcbiAgXSk7XG5cbiAgcmV0dXJuIFtlc0RvbWFpbiwgY29nbml0b0tpYmFuYUNvbmZpZ3VyZVJvbGVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFbGFzdGljU2VhcmNoQ1dBbGFybXMoc2NvcGU6IENvbnN0cnVjdCk6IGNsb3Vkd2F0Y2guQWxhcm1bXSB7XG4gIC8vIFNldHVwIENXIEFsYXJtcyBmb3IgRVNcbiAgY29uc3QgYWxhcm1zOiBjbG91ZHdhdGNoLkFsYXJtW10gPSBuZXcgQXJyYXkoKTtcblxuICAvLyBDbHVzdGVyU3RhdHVzLnJlZCBtYXhpbXVtIGlzID49IDEgZm9yIDEgbWludXRlLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsICdTdGF0dXNSZWRBbGFybScsIHtcbiAgICBtZXRyaWM6IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRVMnLFxuICAgICAgbWV0cmljTmFtZTogJ0NsdXN0ZXJTdGF0dXMucmVkJyxcbiAgICAgIHN0YXRpc3RpYzogJ01heGltdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAxLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQXQgbGVhc3Qgb25lIHByaW1hcnkgc2hhcmQgYW5kIGl0cyByZXBsaWNhcyBhcmUgbm90IGFsbG9jYXRlZCB0byBhIG5vZGUuICdcbiAgfSkpO1xuXG4gIC8vIENsdXN0ZXJTdGF0dXMueWVsbG93IG1heGltdW0gaXMgPj0gMSBmb3IgMSBtaW51dGUsIDEgY29uc2VjdXRpdmUgdGltZVxuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgJ1N0YXR1c1llbGxvd0FsYXJtJywge1xuICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FUycsXG4gICAgICBtZXRyaWNOYW1lOiAnQ2x1c3RlclN0YXR1cy55ZWxsb3cnLFxuICAgICAgc3RhdGlzdGljOiAnTWF4aW11bScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDEsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBdCBsZWFzdCBvbmUgcmVwbGljYSBzaGFyZCBpcyBub3QgYWxsb2NhdGVkIHRvIGEgbm9kZS4nXG4gIH0pKTtcblxuICAvLyBGcmVlU3RvcmFnZVNwYWNlIG1pbmltdW0gaXMgPD0gMjA0ODAgZm9yIDEgbWludXRlLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsICdGcmVlU3RvcmFnZVNwYWNlVG9vTG93QWxhcm0nLCB7XG4gICAgbWV0cmljOiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0VTJyxcbiAgICAgIG1ldHJpY05hbWU6ICdGcmVlU3RvcmFnZVNwYWNlJyxcbiAgICAgIHN0YXRpc3RpYzogJ01pbmltdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAyMDAwMCxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0Egbm9kZSBpbiB5b3VyIGNsdXN0ZXIgaXMgZG93biB0byAyMCBHaUIgb2YgZnJlZSBzdG9yYWdlIHNwYWNlLidcbiAgfSkpO1xuXG4gIC8vIENsdXN0ZXJJbmRleFdyaXRlc0Jsb2NrZWQgaXMgPj0gMSBmb3IgNSBtaW51dGVzLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsICdJbmRleFdyaXRlc0Jsb2NrZWRUb29IaWdoQWxhcm0nLCB7XG4gICAgbWV0cmljOiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0VTJyxcbiAgICAgIG1ldHJpY05hbWU6ICdDbHVzdGVySW5kZXhXcml0ZXNCbG9ja2VkJyxcbiAgICAgIHN0YXRpc3RpYzogJ01heGltdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMSxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ1lvdXIgY2x1c3RlciBpcyBibG9ja2luZyB3cml0ZSByZXF1ZXN0cy4nXG4gIH0pKTtcblxuICAvLyBBdXRvbWF0ZWRTbmFwc2hvdEZhaWx1cmUgbWF4aW11bSBpcyA+PSAxIGZvciAxIG1pbnV0ZSwgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCAnQXV0b21hdGVkU25hcHNob3RGYWlsdXJlVG9vSGlnaEFsYXJtJywge1xuICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FUycsXG4gICAgICBtZXRyaWNOYW1lOiAnQXV0b21hdGVkU25hcHNob3RGYWlsdXJlJyxcbiAgICAgIHN0YXRpc3RpYzogJ01heGltdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAxLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQW4gYXV0b21hdGVkIHNuYXBzaG90IGZhaWxlZC4gVGhpcyBmYWlsdXJlIGlzIG9mdGVuIHRoZSByZXN1bHQgb2YgYSByZWQgY2x1c3RlciBoZWFsdGggc3RhdHVzLidcbiAgfSkpO1xuXG4gIC8vIENQVVV0aWxpemF0aW9uIG1heGltdW0gaXMgPj0gODAlIGZvciAxNSBtaW51dGVzLCAzIGNvbnNlY3V0aXZlIHRpbWVzXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCAnQ1BVVXRpbGl6YXRpb25Ub29IaWdoQWxhcm0nLCB7XG4gICAgbWV0cmljOiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0VTJyxcbiAgICAgIG1ldHJpY05hbWU6ICdDUFVVdGlsaXphdGlvbicsXG4gICAgICBzdGF0aXN0aWM6ICdBdmVyYWdlJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoOTAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDgwLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnMTAwJSBDUFUgdXRpbGl6YXRpb24gaXMgbm90IHVuY29tbW9uLCBidXQgc3VzdGFpbmVkIGhpZ2ggdXNhZ2UgaXMgcHJvYmxlbWF0aWMuIENvbnNpZGVyIHVzaW5nIGxhcmdlciBpbnN0YW5jZSB0eXBlcyBvciBhZGRpbmcgaW5zdGFuY2VzLidcbiAgfSkpO1xuXG4gIC8vIEpWTU1lbW9yeVByZXNzdXJlIG1heGltdW0gaXMgPj0gODAlIGZvciA1IG1pbnV0ZXMsIDMgY29uc2VjdXRpdmUgdGltZXNcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsICdKVk1NZW1vcnlQcmVzc3VyZVRvb0hpZ2hBbGFybScsIHtcbiAgICBtZXRyaWM6IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRVMnLFxuICAgICAgbWV0cmljTmFtZTogJ0pWTU1lbW9yeVByZXNzdXJlJyxcbiAgICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg5MDApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogODAsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBdmVyYWdlIEpWTSBtZW1vcnkgcHJlc3N1cmUgb3ZlciBsYXN0IDE1IG1pbnV0ZXMgdG9vIGhpZ2guIENvbnNpZGVyIHNjYWxpbmcgdmVydGljYWxseS4nXG4gIH0pKTtcblxuICAvLyBNYXN0ZXJDUFVVdGlsaXphdGlvbiBtYXhpbXVtIGlzID49IDUwJSBmb3IgMTUgbWludXRlcywgMyBjb25zZWN1dGl2ZSB0aW1lc1xuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgJ01hc3RlckNQVVV0aWxpemF0aW9uVG9vSGlnaEFsYXJtJywge1xuICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FUycsXG4gICAgICBtZXRyaWNOYW1lOiAnTWFzdGVyQ1BVVXRpbGl6YXRpb24nLFxuICAgICAgc3RhdGlzdGljOiAnQXZlcmFnZScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDkwMCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiA1MCxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0F2ZXJhZ2UgQ1BVIHV0aWxpemF0aW9uIG92ZXIgbGFzdCA0NSBtaW51dGVzIHRvbyBoaWdoLiBDb25zaWRlciB1c2luZyBsYXJnZXIgaW5zdGFuY2UgdHlwZXMgZm9yIHlvdXIgZGVkaWNhdGVkIG1hc3RlciBub2Rlcy4nXG4gIH0pKTtcblxuICAvLyBNYXN0ZXJKVk1NZW1vcnlQcmVzc3VyZSBtYXhpbXVtIGlzID49IDgwJSBmb3IgMTUgbWludXRlcywgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCAnTWFzdGVySlZNTWVtb3J5UHJlc3N1cmVUb29IaWdoQWxhcm0nLCB7XG4gICAgbWV0cmljOiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0VTJyxcbiAgICAgIG1ldHJpY05hbWU6ICdNYXN0ZXJKVk1NZW1vcnlQcmVzc3VyZScsXG4gICAgICBzdGF0aXN0aWM6ICdBdmVyYWdlJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoOTAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDUwLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQXZlcmFnZSBKVk0gbWVtb3J5IHByZXNzdXJlIG92ZXIgbGFzdCAxNSBtaW51dGVzIHRvbyBoaWdoLiBDb25zaWRlciBzY2FsaW5nIHZlcnRpY2FsbHkuJ1xuICB9KSk7XG5cbiAgcmV0dXJuIGFsYXJtcztcbn1cbiJdfQ==
@@ -12,4 +12,5 @@
12
12
  */
13
13
  import { CfnJobProps } from 'aws-cdk-lib/aws-glue';
14
14
  import { IRole } from 'aws-cdk-lib/aws-iam';
15
- export declare function DefaultGlueJobProps(jobRole: IRole, userProvidedGlueJobProps: CfnJobProps, glueSecurityConfigName: string, defaultArguments: {}): CfnJobProps;
15
+ import * as s3assets from "aws-cdk-lib/aws-s3-assets";
16
+ export declare function DefaultGlueJobProps(jobRole: IRole, userProvidedGlueJobProps: CfnJobProps | any, glueSecurityConfigName: string, defaultArguments: {}, etlCodeAsset?: s3assets.Asset): CfnJobProps;
@@ -13,11 +13,14 @@
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DefaultGlueJobProps = void 0;
16
- function DefaultGlueJobProps(jobRole, userProvidedGlueJobProps, glueSecurityConfigName, defaultArguments) {
16
+ function DefaultGlueJobProps(jobRole, userProvidedGlueJobProps, glueSecurityConfigName, defaultArguments, etlCodeAsset) {
17
17
  const glueVersion = userProvidedGlueJobProps.glueVersion;
18
18
  // setting default to 2 to reduce cost
19
19
  const maxCapacity = glueVersion === "1.0" && !(userProvidedGlueJobProps.workerType
20
20
  || userProvidedGlueJobProps.numberOfWorkers) ? 2 : undefined;
21
+ if (etlCodeAsset) {
22
+ userProvidedGlueJobProps.command.scriptLocation = etlCodeAsset.s3ObjectUrl;
23
+ }
21
24
  const defaultGlueJobProps = {
22
25
  command: userProvidedGlueJobProps.command,
23
26
  role: jobRole.roleArn,
@@ -32,4 +35,4 @@ function DefaultGlueJobProps(jobRole, userProvidedGlueJobProps, glueSecurityConf
32
35
  return defaultGlueJobProps;
33
36
  }
34
37
  exports.DefaultGlueJobProps = DefaultGlueJobProps;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x1ZS1qb2ItZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnbHVlLWpvYi1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUtILFNBQWdCLG1CQUFtQixDQUFDLE9BQWMsRUFBRSx3QkFBcUMsRUFDdkYsc0JBQThCLEVBQUUsZ0JBQW9CO0lBQ3BELE1BQU0sV0FBVyxHQUF1Qix3QkFBd0IsQ0FBQyxXQUFXLENBQUM7SUFFN0Usc0NBQXNDO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLFdBQVcsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLHdCQUF3QixDQUFDLFVBQVU7V0FDN0Usd0JBQXdCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRS9ELE1BQU0sbUJBQW1CLEdBQWdCO1FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxPQUFRO1FBQzFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTztRQUNyQixxQkFBcUIsRUFBRSxzQkFBc0I7UUFDN0MsZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxlQUFlLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUN4RSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztRQUN4RSx3SEFBd0g7UUFDeEgsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLO0tBQy9DLENBQUM7SUFFRixPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUM7QUFyQkQsa0RBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IDIwMjIgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDZm5Kb2JQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nbHVlJztcbmltcG9ydCB7IElSb2xlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBEZWZhdWx0R2x1ZUpvYlByb3BzKGpvYlJvbGU6IElSb2xlLCB1c2VyUHJvdmlkZWRHbHVlSm9iUHJvcHM6IENmbkpvYlByb3BzLFxuICBnbHVlU2VjdXJpdHlDb25maWdOYW1lOiBzdHJpbmcsIGRlZmF1bHRBcmd1bWVudHM6IHt9KTogQ2ZuSm9iUHJvcHMge1xuICBjb25zdCBnbHVlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdXNlclByb3ZpZGVkR2x1ZUpvYlByb3BzLmdsdWVWZXJzaW9uO1xuXG4gIC8vIHNldHRpbmcgZGVmYXVsdCB0byAyIHRvIHJlZHVjZSBjb3N0XG4gIGNvbnN0IG1heENhcGFjaXR5ID0gZ2x1ZVZlcnNpb24gPT09IFwiMS4wXCIgJiYgISh1c2VyUHJvdmlkZWRHbHVlSm9iUHJvcHMud29ya2VyVHlwZVxuICAgIHx8IHVzZXJQcm92aWRlZEdsdWVKb2JQcm9wcy5udW1iZXJPZldvcmtlcnMpID8gMiA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBkZWZhdWx0R2x1ZUpvYlByb3BzOiBDZm5Kb2JQcm9wcyA9IHtcbiAgICBjb21tYW5kOiB1c2VyUHJvdmlkZWRHbHVlSm9iUHJvcHMuY29tbWFuZCEsXG4gICAgcm9sZTogam9iUm9sZS5yb2xlQXJuLFxuICAgIHNlY3VyaXR5Q29uZmlndXJhdGlvbjogZ2x1ZVNlY3VyaXR5Q29uZmlnTmFtZSxcbiAgICBkZWZhdWx0QXJndW1lbnRzLFxuICAgIG1heENhcGFjaXR5LFxuICAgIG51bWJlck9mV29ya2VyczogKCFnbHVlVmVyc2lvbiB8fCBnbHVlVmVyc2lvbiA9PT0gXCIyLjBcIikgPyAyIDogdW5kZWZpbmVkLCAvLyBkZWZhdWx0aW5nIHRvIDIgd29ya2VycyxcbiAgICB3b3JrZXJUeXBlOiAoIWdsdWVWZXJzaW9uIHx8IGdsdWVWZXJzaW9uID09PSBcIjIuMFwiKSA/ICdHLjFYJyA6IHVuZGVmaW5lZCwgLy8gZGVmYXVsdGluZyB0byBHLjFYIGFzIGl0IGlzIHByZWZlcnJlZCB3aXRoIGdsdWUgdmVyc2lvbiAyLjBcbiAgICAvLyBnbHVlIHZlcnNpb24gdGhvdWdoIG9wdGlvbmFsIGlzIHJlcXVpcmVkIGZvciBzdHJlYW1pbmcgZXRsIGpvYnMgb3RoZXJ3aXNlIGl0IHRocm93cyBhbiBlcnJvciB0aGF0ICdjb21tYW5kIG5vdCBmb3VuZCdcbiAgICBnbHVlVmVyc2lvbjogZ2x1ZVZlcnNpb24gPyBnbHVlVmVyc2lvbiA6ICcyLjAnXG4gIH07XG5cbiAgcmV0dXJuIGRlZmF1bHRHbHVlSm9iUHJvcHM7XG59Il19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x1ZS1qb2ItZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnbHVlLWpvYi1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQU1ILFNBQWdCLG1CQUFtQixDQUFDLE9BQWMsRUFBRSx3QkFBMkMsRUFDN0Ysc0JBQThCLEVBQUUsZ0JBQW9CLEVBQUUsWUFBNkI7SUFDbkYsTUFBTSxXQUFXLEdBQXVCLHdCQUF3QixDQUFDLFdBQVcsQ0FBQztJQUU3RSxzQ0FBc0M7SUFDdEMsTUFBTSxXQUFXLEdBQUcsV0FBVyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsd0JBQXdCLENBQUMsVUFBVTtXQUM3RSx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFL0QsSUFBSSxZQUFZLEVBQUU7UUFDaEIsd0JBQXdCLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO0tBQzVFO0lBRUQsTUFBTSxtQkFBbUIsR0FBZ0I7UUFDdkMsT0FBTyxFQUFFLHdCQUF3QixDQUFDLE9BQVE7UUFDMUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3JCLHFCQUFxQixFQUFFLHNCQUFzQjtRQUM3QyxnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLGVBQWUsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3hFLFVBQVUsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3hFLHdIQUF3SDtRQUN4SCxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUs7S0FDL0MsQ0FBQztJQUVGLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQXpCRCxrREF5QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgMjAyMiBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENmbkpvYlByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0IHsgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIHMzYXNzZXRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBEZWZhdWx0R2x1ZUpvYlByb3BzKGpvYlJvbGU6IElSb2xlLCB1c2VyUHJvdmlkZWRHbHVlSm9iUHJvcHM6IENmbkpvYlByb3BzIHwgYW55LFxuICBnbHVlU2VjdXJpdHlDb25maWdOYW1lOiBzdHJpbmcsIGRlZmF1bHRBcmd1bWVudHM6IHt9LCBldGxDb2RlQXNzZXQ/OiBzM2Fzc2V0cy5Bc3NldCk6IENmbkpvYlByb3BzIHtcbiAgY29uc3QgZ2x1ZVZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVzZXJQcm92aWRlZEdsdWVKb2JQcm9wcy5nbHVlVmVyc2lvbjtcblxuICAvLyBzZXR0aW5nIGRlZmF1bHQgdG8gMiB0byByZWR1Y2UgY29zdFxuICBjb25zdCBtYXhDYXBhY2l0eSA9IGdsdWVWZXJzaW9uID09PSBcIjEuMFwiICYmICEodXNlclByb3ZpZGVkR2x1ZUpvYlByb3BzLndvcmtlclR5cGVcbiAgICB8fCB1c2VyUHJvdmlkZWRHbHVlSm9iUHJvcHMubnVtYmVyT2ZXb3JrZXJzKSA/IDIgOiB1bmRlZmluZWQ7XG5cbiAgaWYgKGV0bENvZGVBc3NldCkge1xuICAgIHVzZXJQcm92aWRlZEdsdWVKb2JQcm9wcy5jb21tYW5kLnNjcmlwdExvY2F0aW9uID0gZXRsQ29kZUFzc2V0LnMzT2JqZWN0VXJsO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdEdsdWVKb2JQcm9wczogQ2ZuSm9iUHJvcHMgPSB7XG4gICAgY29tbWFuZDogdXNlclByb3ZpZGVkR2x1ZUpvYlByb3BzLmNvbW1hbmQhLFxuICAgIHJvbGU6IGpvYlJvbGUucm9sZUFybixcbiAgICBzZWN1cml0eUNvbmZpZ3VyYXRpb246IGdsdWVTZWN1cml0eUNvbmZpZ05hbWUsXG4gICAgZGVmYXVsdEFyZ3VtZW50cyxcbiAgICBtYXhDYXBhY2l0eSxcbiAgICBudW1iZXJPZldvcmtlcnM6ICghZ2x1ZVZlcnNpb24gfHwgZ2x1ZVZlcnNpb24gPT09IFwiMi4wXCIpID8gMiA6IHVuZGVmaW5lZCwgLy8gZGVmYXVsdGluZyB0byAyIHdvcmtlcnMsXG4gICAgd29ya2VyVHlwZTogKCFnbHVlVmVyc2lvbiB8fCBnbHVlVmVyc2lvbiA9PT0gXCIyLjBcIikgPyAnRy4xWCcgOiB1bmRlZmluZWQsIC8vIGRlZmF1bHRpbmcgdG8gRy4xWCBhcyBpdCBpcyBwcmVmZXJyZWQgd2l0aCBnbHVlIHZlcnNpb24gMi4wXG4gICAgLy8gZ2x1ZSB2ZXJzaW9uIHRob3VnaCBvcHRpb25hbCBpcyByZXF1aXJlZCBmb3Igc3RyZWFtaW5nIGV0bCBqb2JzIG90aGVyd2lzZSBpdCB0aHJvd3MgYW4gZXJyb3IgdGhhdCAnY29tbWFuZCBub3QgZm91bmQnXG4gICAgZ2x1ZVZlcnNpb246IGdsdWVWZXJzaW9uID8gZ2x1ZVZlcnNpb24gOiAnMi4wJ1xuICB9O1xuXG4gIHJldHVybiBkZWZhdWx0R2x1ZUpvYlByb3BzO1xufSJdfQ==
@@ -14,6 +14,7 @@ import { Construct } from 'constructs';
14
14
  import * as glue from 'aws-cdk-lib/aws-glue';
15
15
  import { IRole, Role } from 'aws-cdk-lib/aws-iam';
16
16
  import { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';
17
+ import * as s3assets from "aws-cdk-lib/aws-s3-assets";
17
18
  /**
18
19
  * Enumeration of data store types that could include S3, DynamoDB, DocumentDB, RDS or Redshift. Current
19
20
  * construct implementation only supports S3, but potential to add other output types in the future
@@ -70,9 +71,15 @@ export interface BuildGlueJobProps {
70
71
  * Output storage options
71
72
  */
72
73
  readonly outputDataStore?: SinkDataStoreProps;
74
+ /**
75
+ * Asset instance for the ETL code that performs Glue Job transformation
76
+ *
77
+ * @default - None
78
+ */
79
+ readonly etlCodeAsset?: s3assets.Asset;
73
80
  }
74
81
  export declare function buildGlueJob(scope: Construct, props: BuildGlueJobProps): [glue.CfnJob, IRole, [Bucket, (Bucket | undefined)?]?];
75
- export declare function deployGlueJob(scope: Construct, glueJobProps: glue.CfnJobProps, database: glue.CfnDatabase, table: glue.CfnTable, outputDataStore: SinkDataStoreProps): [glue.CfnJob, IRole, [Bucket, (Bucket | undefined)?]];
82
+ export declare function deployGlueJob(scope: Construct, glueJobProps: glue.CfnJobProps, database: glue.CfnDatabase, table: glue.CfnTable, outputDataStore: SinkDataStoreProps, etlCodeAsset?: s3assets.Asset): [glue.CfnJob, IRole, [Bucket, (Bucket | undefined)?]];
76
83
  /**
77
84
  * This is a helper method to create the Role required for the Glue Job. If a role is already created then this
78
85
  * method is not required to be called.