cdk-cost-analyzer 0.1.27 → 0.1.28

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.
@@ -2,35 +2,35 @@
2
2
  "entries": {
3
3
  "AmazonS3:US East (N. Virginia):storageClass:General Purpose|volumeType:Standard": {
4
4
  "price": 0.023,
5
- "timestamp": 1770924316536
5
+ "timestamp": 1770925460849
6
6
  },
7
7
  "AmazonDynamoDB:US East (N. Virginia):group:DDB-ReadUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
8
8
  "price": 0.023,
9
- "timestamp": 1770924316542
9
+ "timestamp": 1770925460854
10
10
  },
11
11
  "AmazonDynamoDB:US East (N. Virginia):group:DDB-WriteUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
12
12
  "price": 0.023,
13
- "timestamp": 1770924316542
13
+ "timestamp": 1770925460855
14
14
  },
15
15
  "AmazonEC2:US East (N. Virginia):capacitystatus:Used|instanceType:t3.micro|operatingSystem:Linux|preInstalledSw:NA|tenancy:Shared": {
16
16
  "price": 0.023,
17
- "timestamp": 1770924316555
17
+ "timestamp": 1770925460864
18
18
  },
19
19
  "AWSLambda:US East (N. Virginia):group:AWS-Lambda-Requests": {
20
20
  "price": 0.023,
21
- "timestamp": 1770924316560
21
+ "timestamp": 1770925460869
22
22
  },
23
23
  "AWSLambda:US East (N. Virginia):group:AWS-Lambda-Duration": {
24
24
  "price": 0.023,
25
- "timestamp": 1770924316560
25
+ "timestamp": 1770925460869
26
26
  },
27
27
  "AmazonS3:EU (Frankfurt):storageClass:General Purpose|volumeType:Standard": {
28
28
  "price": 0.023,
29
- "timestamp": 1770924325158
29
+ "timestamp": 1770925469548
30
30
  },
31
31
  "AmazonS3:invalid-region-123:storageClass:General Purpose|volumeType:Standard": {
32
32
  "price": 0.023,
33
- "timestamp": 1770924325200
33
+ "timestamp": 1770925469582
34
34
  }
35
35
  }
36
36
  }
@@ -3,3 +3,12 @@
3
3
  * Logs the normalization step when debug mode is enabled
4
4
  */
5
5
  export declare function normalizeRegion(region: string): string;
6
+ /**
7
+ * Get the AWS region prefix for pricing usagetype values.
8
+ * AWS uses region prefixes in usagetype values (e.g., USE1-ApiGatewayRequest).
9
+ * Reference: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html
10
+ *
11
+ * @param region - AWS region code (e.g., 'us-east-1', 'eu-west-1')
12
+ * @returns The usagetype prefix for the region, or empty string for unknown regions
13
+ */
14
+ export declare function getRegionPrefix(region: string): string;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeRegion = normalizeRegion;
4
+ exports.getRegionPrefix = getRegionPrefix;
4
5
  const Logger_1 = require("../utils/Logger");
5
6
  /**
6
7
  * Map of AWS region codes to Pricing API region names
@@ -24,6 +25,7 @@ const REGION_MAP = {
24
25
  'ap-southeast-2': 'Asia Pacific (Sydney)',
25
26
  'ap-southeast-3': 'Asia Pacific (Jakarta)',
26
27
  'ap-southeast-4': 'Asia Pacific (Melbourne)',
28
+ 'ap-southeast-5': 'Asia Pacific (Malaysia)',
27
29
  'ap-northeast-1': 'Asia Pacific (Tokyo)',
28
30
  'ap-northeast-2': 'Asia Pacific (Seoul)',
29
31
  'ap-northeast-3': 'Asia Pacific (Osaka)',
@@ -35,6 +37,58 @@ const REGION_MAP = {
35
37
  'me-central-1': 'Middle East (UAE)',
36
38
  'af-south-1': 'Africa (Cape Town)',
37
39
  'il-central-1': 'Israel (Tel Aviv)',
40
+ 'us-gov-west-1': 'AWS GovCloud (US-West)',
41
+ 'us-gov-east-1': 'AWS GovCloud (US-East)',
42
+ 'eu-isoe-west-1': 'EU ISOE West',
43
+ };
44
+ /**
45
+ * Map of AWS region codes to usagetype prefixes used in AWS Pricing API
46
+ * Reference: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html
47
+ */
48
+ const REGION_PREFIX_MAP = {
49
+ // US Regions
50
+ 'us-east-1': 'USE1',
51
+ 'us-east-2': 'USE2',
52
+ 'us-west-1': 'USW1',
53
+ 'us-west-2': 'USW2',
54
+ // EU Regions
55
+ 'eu-west-1': 'EUW1',
56
+ 'eu-west-2': 'EUW2',
57
+ 'eu-west-3': 'EUW3',
58
+ 'eu-central-1': 'EUC1',
59
+ 'eu-central-2': 'EUC2',
60
+ 'eu-north-1': 'EUN1',
61
+ 'eu-south-1': 'EUS1',
62
+ 'eu-south-2': 'EUS2',
63
+ // Asia Pacific Regions
64
+ 'ap-south-1': 'APS1', // Mumbai
65
+ 'ap-south-2': 'APS2', // Hyderabad
66
+ 'ap-southeast-1': 'APS3', // Singapore
67
+ 'ap-southeast-2': 'APS4', // Sydney
68
+ 'ap-southeast-3': 'APS5', // Jakarta
69
+ 'ap-southeast-4': 'APS6', // Melbourne
70
+ 'ap-southeast-5': 'APS7', // Malaysia
71
+ 'ap-northeast-1': 'APN1', // Tokyo
72
+ 'ap-northeast-2': 'APN2', // Seoul
73
+ 'ap-northeast-3': 'APN3', // Osaka
74
+ 'ap-east-1': 'APE1', // Hong Kong
75
+ // Canada Regions
76
+ 'ca-central-1': 'CAN1',
77
+ 'ca-west-1': 'CAW1',
78
+ // South America Regions
79
+ 'sa-east-1': 'SAE1',
80
+ // Middle East Regions
81
+ 'me-south-1': 'MES1',
82
+ 'me-central-1': 'MEC1',
83
+ // Africa Regions
84
+ 'af-south-1': 'AFS1',
85
+ // Israel Regions
86
+ 'il-central-1': 'ILC1',
87
+ // AWS GovCloud Regions
88
+ 'us-gov-west-1': 'UGW1',
89
+ 'us-gov-east-1': 'UGE1',
90
+ // EU Sovereign Cloud (ISOE)
91
+ 'eu-isoe-west-1': 'EIW1',
38
92
  };
39
93
  /**
40
94
  * Normalize AWS region code to Pricing API region name
@@ -45,4 +99,15 @@ function normalizeRegion(region) {
45
99
  Logger_1.Logger.logRegionNormalization(region, normalized);
46
100
  return normalized;
47
101
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaW9uTWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaWNpbmcvUmVnaW9uTWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeUNBLDBDQUlDO0FBN0NELDRDQUF5QztBQUV6Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUEyQjtJQUN6QyxXQUFXLEVBQUUsdUJBQXVCO0lBQ3BDLFdBQVcsRUFBRSxnQkFBZ0I7SUFDN0IsV0FBVyxFQUFFLHlCQUF5QjtJQUN0QyxXQUFXLEVBQUUsa0JBQWtCO0lBQy9CLFdBQVcsRUFBRSxjQUFjO0lBQzNCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsY0FBYyxFQUFFLGFBQWE7SUFDN0IsWUFBWSxFQUFFLGdCQUFnQjtJQUM5QixZQUFZLEVBQUUsWUFBWTtJQUMxQixZQUFZLEVBQUUsWUFBWTtJQUMxQixZQUFZLEVBQUUsdUJBQXVCO0lBQ3JDLFlBQVksRUFBRSwwQkFBMEI7SUFDeEMsZ0JBQWdCLEVBQUUsMEJBQTBCO0lBQzVDLGdCQUFnQixFQUFFLHVCQUF1QjtJQUN6QyxnQkFBZ0IsRUFBRSx3QkFBd0I7SUFDMUMsZ0JBQWdCLEVBQUUsMEJBQTBCO0lBQzVDLGdCQUFnQixFQUFFLHNCQUFzQjtJQUN4QyxnQkFBZ0IsRUFBRSxzQkFBc0I7SUFDeEMsZ0JBQWdCLEVBQUUsc0JBQXNCO0lBQ3hDLFdBQVcsRUFBRSwwQkFBMEI7SUFDdkMsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxXQUFXLEVBQUUsdUJBQXVCO0lBQ3BDLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsWUFBWSxFQUFFLHVCQUF1QjtJQUNyQyxjQUFjLEVBQUUsbUJBQW1CO0lBQ25DLFlBQVksRUFBRSxvQkFBb0I7SUFDbEMsY0FBYyxFQUFFLG1CQUFtQjtDQUNwQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE1BQWM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUNoRCxlQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuLi91dGlscy9Mb2dnZXInO1xuXG4vKipcbiAqIE1hcCBvZiBBV1MgcmVnaW9uIGNvZGVzIHRvIFByaWNpbmcgQVBJIHJlZ2lvbiBuYW1lc1xuICovXG5jb25zdCBSRUdJT05fTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAndXMtZWFzdC0xJzogJ1VTIEVhc3QgKE4uIFZpcmdpbmlhKScsXG4gICd1cy1lYXN0LTInOiAnVVMgRWFzdCAoT2hpbyknLFxuICAndXMtd2VzdC0xJzogJ1VTIFdlc3QgKE4uIENhbGlmb3JuaWEpJyxcbiAgJ3VzLXdlc3QtMic6ICdVUyBXZXN0IChPcmVnb24pJyxcbiAgJ2V1LXdlc3QtMSc6ICdFVSAoSXJlbGFuZCknLFxuICAnZXUtd2VzdC0yJzogJ0VVIChMb25kb24pJyxcbiAgJ2V1LXdlc3QtMyc6ICdFVSAoUGFyaXMpJyxcbiAgJ2V1LWNlbnRyYWwtMSc6ICdFVSAoRnJhbmtmdXJ0KScsXG4gICdldS1jZW50cmFsLTInOiAnRVUgKFp1cmljaCknLFxuICAnZXUtbm9ydGgtMSc6ICdFVSAoU3RvY2tob2xtKScsXG4gICdldS1zb3V0aC0xJzogJ0VVIChNaWxhbiknLFxuICAnZXUtc291dGgtMic6ICdFVSAoU3BhaW4pJyxcbiAgJ2FwLXNvdXRoLTEnOiAnQXNpYSBQYWNpZmljIChNdW1iYWkpJyxcbiAgJ2FwLXNvdXRoLTInOiAnQXNpYSBQYWNpZmljIChIeWRlcmFiYWQpJyxcbiAgJ2FwLXNvdXRoZWFzdC0xJzogJ0FzaWEgUGFjaWZpYyAoU2luZ2Fwb3JlKScsXG4gICdhcC1zb3V0aGVhc3QtMic6ICdBc2lhIFBhY2lmaWMgKFN5ZG5leSknLFxuICAnYXAtc291dGhlYXN0LTMnOiAnQXNpYSBQYWNpZmljIChKYWthcnRhKScsXG4gICdhcC1zb3V0aGVhc3QtNCc6ICdBc2lhIFBhY2lmaWMgKE1lbGJvdXJuZSknLFxuICAnYXAtbm9ydGhlYXN0LTEnOiAnQXNpYSBQYWNpZmljIChUb2t5byknLFxuICAnYXAtbm9ydGhlYXN0LTInOiAnQXNpYSBQYWNpZmljIChTZW91bCknLFxuICAnYXAtbm9ydGhlYXN0LTMnOiAnQXNpYSBQYWNpZmljIChPc2FrYSknLFxuICAnYXAtZWFzdC0xJzogJ0FzaWEgUGFjaWZpYyAoSG9uZyBLb25nKScsXG4gICdjYS1jZW50cmFsLTEnOiAnQ2FuYWRhIChDZW50cmFsKScsXG4gICdjYS13ZXN0LTEnOiAnQ2FuYWRhIFdlc3QgKENhbGdhcnkpJyxcbiAgJ3NhLWVhc3QtMSc6ICdTb3V0aCBBbWVyaWNhIChTYW8gUGF1bG8pJyxcbiAgJ21lLXNvdXRoLTEnOiAnTWlkZGxlIEVhc3QgKEJhaHJhaW4pJyxcbiAgJ21lLWNlbnRyYWwtMSc6ICdNaWRkbGUgRWFzdCAoVUFFKScsXG4gICdhZi1zb3V0aC0xJzogJ0FmcmljYSAoQ2FwZSBUb3duKScsXG4gICdpbC1jZW50cmFsLTEnOiAnSXNyYWVsIChUZWwgQXZpdiknLFxufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgQVdTIHJlZ2lvbiBjb2RlIHRvIFByaWNpbmcgQVBJIHJlZ2lvbiBuYW1lXG4gKiBMb2dzIHRoZSBub3JtYWxpemF0aW9uIHN0ZXAgd2hlbiBkZWJ1ZyBtb2RlIGlzIGVuYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlZ2lvbihyZWdpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBSRUdJT05fTUFQW3JlZ2lvbl0gfHwgcmVnaW9uO1xuICBMb2dnZXIubG9nUmVnaW9uTm9ybWFsaXphdGlvbihyZWdpb24sIG5vcm1hbGl6ZWQpO1xuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cbiJdfQ==
102
+ /**
103
+ * Get the AWS region prefix for pricing usagetype values.
104
+ * AWS uses region prefixes in usagetype values (e.g., USE1-ApiGatewayRequest).
105
+ * Reference: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html
106
+ *
107
+ * @param region - AWS region code (e.g., 'us-east-1', 'eu-west-1')
108
+ * @returns The usagetype prefix for the region, or empty string for unknown regions
109
+ */
110
+ function getRegionPrefix(region) {
111
+ return REGION_PREFIX_MAP[region] || '';
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaW9uTWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaWNpbmcvUmVnaW9uTWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0ZBLDBDQUlDO0FBVUQsMENBRUM7QUEvR0QsNENBQXlDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQTJCO0lBQ3pDLFdBQVcsRUFBRSx1QkFBdUI7SUFDcEMsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QixXQUFXLEVBQUUseUJBQXlCO0lBQ3RDLFdBQVcsRUFBRSxrQkFBa0I7SUFDL0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGFBQWE7SUFDMUIsV0FBVyxFQUFFLFlBQVk7SUFDekIsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxjQUFjLEVBQUUsYUFBYTtJQUM3QixZQUFZLEVBQUUsZ0JBQWdCO0lBQzlCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSx1QkFBdUI7SUFDckMsWUFBWSxFQUFFLDBCQUEwQjtJQUN4QyxnQkFBZ0IsRUFBRSwwQkFBMEI7SUFDNUMsZ0JBQWdCLEVBQUUsdUJBQXVCO0lBQ3pDLGdCQUFnQixFQUFFLHdCQUF3QjtJQUMxQyxnQkFBZ0IsRUFBRSwwQkFBMEI7SUFDNUMsZ0JBQWdCLEVBQUUseUJBQXlCO0lBQzNDLGdCQUFnQixFQUFFLHNCQUFzQjtJQUN4QyxnQkFBZ0IsRUFBRSxzQkFBc0I7SUFDeEMsZ0JBQWdCLEVBQUUsc0JBQXNCO0lBQ3hDLFdBQVcsRUFBRSwwQkFBMEI7SUFDdkMsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxXQUFXLEVBQUUsdUJBQXVCO0lBQ3BDLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsWUFBWSxFQUFFLHVCQUF1QjtJQUNyQyxjQUFjLEVBQUUsbUJBQW1CO0lBQ25DLFlBQVksRUFBRSxvQkFBb0I7SUFDbEMsY0FBYyxFQUFFLG1CQUFtQjtJQUNuQyxlQUFlLEVBQUUsd0JBQXdCO0lBQ3pDLGVBQWUsRUFBRSx3QkFBd0I7SUFDekMsZ0JBQWdCLEVBQUUsY0FBYztDQUNqQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBMkI7SUFDaEQsYUFBYTtJQUNiLFdBQVcsRUFBRSxNQUFNO0lBQ25CLFdBQVcsRUFBRSxNQUFNO0lBQ25CLFdBQVcsRUFBRSxNQUFNO0lBQ25CLFdBQVcsRUFBRSxNQUFNO0lBQ25CLGFBQWE7SUFDYixXQUFXLEVBQUUsTUFBTTtJQUNuQixXQUFXLEVBQUUsTUFBTTtJQUNuQixXQUFXLEVBQUUsTUFBTTtJQUNuQixjQUFjLEVBQUUsTUFBTTtJQUN0QixjQUFjLEVBQUUsTUFBTTtJQUN0QixZQUFZLEVBQUUsTUFBTTtJQUNwQixZQUFZLEVBQUUsTUFBTTtJQUNwQixZQUFZLEVBQUUsTUFBTTtJQUNwQix1QkFBdUI7SUFDdkIsWUFBWSxFQUFFLE1BQU0sRUFBUSxTQUFTO0lBQ3JDLFlBQVksRUFBRSxNQUFNLEVBQVEsWUFBWTtJQUN4QyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksWUFBWTtJQUN4QyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksU0FBUztJQUNyQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksVUFBVTtJQUN0QyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksWUFBWTtJQUN4QyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksV0FBVztJQUN2QyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksUUFBUTtJQUNwQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksUUFBUTtJQUNwQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUksUUFBUTtJQUNwQyxXQUFXLEVBQUUsTUFBTSxFQUFTLFlBQVk7SUFDeEMsaUJBQWlCO0lBQ2pCLGNBQWMsRUFBRSxNQUFNO0lBQ3RCLFdBQVcsRUFBRSxNQUFNO0lBQ25CLHdCQUF3QjtJQUN4QixXQUFXLEVBQUUsTUFBTTtJQUNuQixzQkFBc0I7SUFDdEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsY0FBYyxFQUFFLE1BQU07SUFDdEIsaUJBQWlCO0lBQ2pCLFlBQVksRUFBRSxNQUFNO0lBQ3BCLGlCQUFpQjtJQUNqQixjQUFjLEVBQUUsTUFBTTtJQUN0Qix1QkFBdUI7SUFDdkIsZUFBZSxFQUFFLE1BQU07SUFDdkIsZUFBZSxFQUFFLE1BQU07SUFDdkIsNEJBQTRCO0lBQzVCLGdCQUFnQixFQUFFLE1BQU07Q0FDekIsQ0FBQztBQUVGOzs7R0FHRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxNQUFjO0lBQzVDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUM7SUFDaEQsZUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNsRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxNQUFjO0lBQzVDLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuLi91dGlscy9Mb2dnZXInO1xuXG4vKipcbiAqIE1hcCBvZiBBV1MgcmVnaW9uIGNvZGVzIHRvIFByaWNpbmcgQVBJIHJlZ2lvbiBuYW1lc1xuICovXG5jb25zdCBSRUdJT05fTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAndXMtZWFzdC0xJzogJ1VTIEVhc3QgKE4uIFZpcmdpbmlhKScsXG4gICd1cy1lYXN0LTInOiAnVVMgRWFzdCAoT2hpbyknLFxuICAndXMtd2VzdC0xJzogJ1VTIFdlc3QgKE4uIENhbGlmb3JuaWEpJyxcbiAgJ3VzLXdlc3QtMic6ICdVUyBXZXN0IChPcmVnb24pJyxcbiAgJ2V1LXdlc3QtMSc6ICdFVSAoSXJlbGFuZCknLFxuICAnZXUtd2VzdC0yJzogJ0VVIChMb25kb24pJyxcbiAgJ2V1LXdlc3QtMyc6ICdFVSAoUGFyaXMpJyxcbiAgJ2V1LWNlbnRyYWwtMSc6ICdFVSAoRnJhbmtmdXJ0KScsXG4gICdldS1jZW50cmFsLTInOiAnRVUgKFp1cmljaCknLFxuICAnZXUtbm9ydGgtMSc6ICdFVSAoU3RvY2tob2xtKScsXG4gICdldS1zb3V0aC0xJzogJ0VVIChNaWxhbiknLFxuICAnZXUtc291dGgtMic6ICdFVSAoU3BhaW4pJyxcbiAgJ2FwLXNvdXRoLTEnOiAnQXNpYSBQYWNpZmljIChNdW1iYWkpJyxcbiAgJ2FwLXNvdXRoLTInOiAnQXNpYSBQYWNpZmljIChIeWRlcmFiYWQpJyxcbiAgJ2FwLXNvdXRoZWFzdC0xJzogJ0FzaWEgUGFjaWZpYyAoU2luZ2Fwb3JlKScsXG4gICdhcC1zb3V0aGVhc3QtMic6ICdBc2lhIFBhY2lmaWMgKFN5ZG5leSknLFxuICAnYXAtc291dGhlYXN0LTMnOiAnQXNpYSBQYWNpZmljIChKYWthcnRhKScsXG4gICdhcC1zb3V0aGVhc3QtNCc6ICdBc2lhIFBhY2lmaWMgKE1lbGJvdXJuZSknLFxuICAnYXAtc291dGhlYXN0LTUnOiAnQXNpYSBQYWNpZmljIChNYWxheXNpYSknLFxuICAnYXAtbm9ydGhlYXN0LTEnOiAnQXNpYSBQYWNpZmljIChUb2t5byknLFxuICAnYXAtbm9ydGhlYXN0LTInOiAnQXNpYSBQYWNpZmljIChTZW91bCknLFxuICAnYXAtbm9ydGhlYXN0LTMnOiAnQXNpYSBQYWNpZmljIChPc2FrYSknLFxuICAnYXAtZWFzdC0xJzogJ0FzaWEgUGFjaWZpYyAoSG9uZyBLb25nKScsXG4gICdjYS1jZW50cmFsLTEnOiAnQ2FuYWRhIChDZW50cmFsKScsXG4gICdjYS13ZXN0LTEnOiAnQ2FuYWRhIFdlc3QgKENhbGdhcnkpJyxcbiAgJ3NhLWVhc3QtMSc6ICdTb3V0aCBBbWVyaWNhIChTYW8gUGF1bG8pJyxcbiAgJ21lLXNvdXRoLTEnOiAnTWlkZGxlIEVhc3QgKEJhaHJhaW4pJyxcbiAgJ21lLWNlbnRyYWwtMSc6ICdNaWRkbGUgRWFzdCAoVUFFKScsXG4gICdhZi1zb3V0aC0xJzogJ0FmcmljYSAoQ2FwZSBUb3duKScsXG4gICdpbC1jZW50cmFsLTEnOiAnSXNyYWVsIChUZWwgQXZpdiknLFxuICAndXMtZ292LXdlc3QtMSc6ICdBV1MgR292Q2xvdWQgKFVTLVdlc3QpJyxcbiAgJ3VzLWdvdi1lYXN0LTEnOiAnQVdTIEdvdkNsb3VkIChVUy1FYXN0KScsXG4gICdldS1pc29lLXdlc3QtMSc6ICdFVSBJU09FIFdlc3QnLFxufTtcblxuLyoqXG4gKiBNYXAgb2YgQVdTIHJlZ2lvbiBjb2RlcyB0byB1c2FnZXR5cGUgcHJlZml4ZXMgdXNlZCBpbiBBV1MgUHJpY2luZyBBUElcbiAqIFJlZmVyZW5jZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsb2JhbC1pbmZyYXN0cnVjdHVyZS9sYXRlc3QvcmVnaW9ucy9hd3MtcmVnaW9uLWJpbGxpbmctY29kZXMuaHRtbFxuICovXG5jb25zdCBSRUdJT05fUFJFRklYX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgLy8gVVMgUmVnaW9uc1xuICAndXMtZWFzdC0xJzogJ1VTRTEnLFxuICAndXMtZWFzdC0yJzogJ1VTRTInLFxuICAndXMtd2VzdC0xJzogJ1VTVzEnLFxuICAndXMtd2VzdC0yJzogJ1VTVzInLFxuICAvLyBFVSBSZWdpb25zXG4gICdldS13ZXN0LTEnOiAnRVVXMScsXG4gICdldS13ZXN0LTInOiAnRVVXMicsXG4gICdldS13ZXN0LTMnOiAnRVVXMycsXG4gICdldS1jZW50cmFsLTEnOiAnRVVDMScsXG4gICdldS1jZW50cmFsLTInOiAnRVVDMicsXG4gICdldS1ub3J0aC0xJzogJ0VVTjEnLFxuICAnZXUtc291dGgtMSc6ICdFVVMxJyxcbiAgJ2V1LXNvdXRoLTInOiAnRVVTMicsXG4gIC8vIEFzaWEgUGFjaWZpYyBSZWdpb25zXG4gICdhcC1zb3V0aC0xJzogJ0FQUzEnLCAgICAgICAvLyBNdW1iYWlcbiAgJ2FwLXNvdXRoLTInOiAnQVBTMicsICAgICAgIC8vIEh5ZGVyYWJhZFxuICAnYXAtc291dGhlYXN0LTEnOiAnQVBTMycsICAgLy8gU2luZ2Fwb3JlXG4gICdhcC1zb3V0aGVhc3QtMic6ICdBUFM0JywgICAvLyBTeWRuZXlcbiAgJ2FwLXNvdXRoZWFzdC0zJzogJ0FQUzUnLCAgIC8vIEpha2FydGFcbiAgJ2FwLXNvdXRoZWFzdC00JzogJ0FQUzYnLCAgIC8vIE1lbGJvdXJuZVxuICAnYXAtc291dGhlYXN0LTUnOiAnQVBTNycsICAgLy8gTWFsYXlzaWFcbiAgJ2FwLW5vcnRoZWFzdC0xJzogJ0FQTjEnLCAgIC8vIFRva3lvXG4gICdhcC1ub3J0aGVhc3QtMic6ICdBUE4yJywgICAvLyBTZW91bFxuICAnYXAtbm9ydGhlYXN0LTMnOiAnQVBOMycsICAgLy8gT3Nha2FcbiAgJ2FwLWVhc3QtMSc6ICdBUEUxJywgICAgICAgIC8vIEhvbmcgS29uZ1xuICAvLyBDYW5hZGEgUmVnaW9uc1xuICAnY2EtY2VudHJhbC0xJzogJ0NBTjEnLFxuICAnY2Etd2VzdC0xJzogJ0NBVzEnLFxuICAvLyBTb3V0aCBBbWVyaWNhIFJlZ2lvbnNcbiAgJ3NhLWVhc3QtMSc6ICdTQUUxJyxcbiAgLy8gTWlkZGxlIEVhc3QgUmVnaW9uc1xuICAnbWUtc291dGgtMSc6ICdNRVMxJyxcbiAgJ21lLWNlbnRyYWwtMSc6ICdNRUMxJyxcbiAgLy8gQWZyaWNhIFJlZ2lvbnNcbiAgJ2FmLXNvdXRoLTEnOiAnQUZTMScsXG4gIC8vIElzcmFlbCBSZWdpb25zXG4gICdpbC1jZW50cmFsLTEnOiAnSUxDMScsXG4gIC8vIEFXUyBHb3ZDbG91ZCBSZWdpb25zXG4gICd1cy1nb3Ytd2VzdC0xJzogJ1VHVzEnLFxuICAndXMtZ292LWVhc3QtMSc6ICdVR0UxJyxcbiAgLy8gRVUgU292ZXJlaWduIENsb3VkIChJU09FKVxuICAnZXUtaXNvZS13ZXN0LTEnOiAnRUlXMScsXG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBBV1MgcmVnaW9uIGNvZGUgdG8gUHJpY2luZyBBUEkgcmVnaW9uIG5hbWVcbiAqIExvZ3MgdGhlIG5vcm1hbGl6YXRpb24gc3RlcCB3aGVuIGRlYnVnIG1vZGUgaXMgZW5hYmxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUmVnaW9uKHJlZ2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IFJFR0lPTl9NQVBbcmVnaW9uXSB8fCByZWdpb247XG4gIExvZ2dlci5sb2dSZWdpb25Ob3JtYWxpemF0aW9uKHJlZ2lvbiwgbm9ybWFsaXplZCk7XG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIEdldCB0aGUgQVdTIHJlZ2lvbiBwcmVmaXggZm9yIHByaWNpbmcgdXNhZ2V0eXBlIHZhbHVlcy5cbiAqIEFXUyB1c2VzIHJlZ2lvbiBwcmVmaXhlcyBpbiB1c2FnZXR5cGUgdmFsdWVzIChlLmcuLCBVU0UxLUFwaUdhdGV3YXlSZXF1ZXN0KS5cbiAqIFJlZmVyZW5jZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsb2JhbC1pbmZyYXN0cnVjdHVyZS9sYXRlc3QvcmVnaW9ucy9hd3MtcmVnaW9uLWJpbGxpbmctY29kZXMuaHRtbFxuICpcbiAqIEBwYXJhbSByZWdpb24gLSBBV1MgcmVnaW9uIGNvZGUgKGUuZy4sICd1cy1lYXN0LTEnLCAnZXUtd2VzdC0xJylcbiAqIEByZXR1cm5zIFRoZSB1c2FnZXR5cGUgcHJlZml4IGZvciB0aGUgcmVnaW9uLCBvciBlbXB0eSBzdHJpbmcgZm9yIHVua25vd24gcmVnaW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVnaW9uUHJlZml4KHJlZ2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFJFR0lPTl9QUkVGSVhfTUFQW3JlZ2lvbl0gfHwgJyc7XG59XG4iXX0=
@@ -12,5 +12,4 @@ export declare class ALBCalculator implements ResourceCostCalculator {
12
12
  supports(resourceType: string): boolean;
13
13
  canCalculate(resource: ResourceWithId): boolean;
14
14
  calculateCost(resource: ResourceWithId, region: string, pricingClient: PricingClient): Promise<MonthlyCost>;
15
- private getRegionPrefix;
16
15
  }
@@ -35,13 +35,14 @@ class ALBCalculator {
35
35
  };
36
36
  }
37
37
  try {
38
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
38
39
  // Get hourly rate
39
40
  const hourlyRate = await pricingClient.getPrice({
40
41
  serviceCode: 'AWSELB',
41
42
  region: (0, RegionMapper_1.normalizeRegion)(region),
42
43
  filters: [
43
44
  { field: 'productFamily', value: 'Load Balancer-Application' },
44
- { field: 'usagetype', value: `${this.getRegionPrefix(region)}-LoadBalancerUsage` },
45
+ { field: 'usagetype', value: `${regionPrefix}-LoadBalancerUsage` },
45
46
  ],
46
47
  });
47
48
  // Get LCU rate
@@ -50,7 +51,7 @@ class ALBCalculator {
50
51
  region: (0, RegionMapper_1.normalizeRegion)(region),
51
52
  filters: [
52
53
  { field: 'productFamily', value: 'Load Balancer-Application' },
53
- { field: 'usagetype', value: `${this.getRegionPrefix(region)}-LCUUsage` },
54
+ { field: 'usagetype', value: `${regionPrefix}-LCUUsage` },
54
55
  ],
55
56
  });
56
57
  const newConnectionsPerSecond = this.customNewConnectionsPerSecond || this.DEFAULT_NEW_CONNECTIONS_PER_SECOND;
@@ -126,25 +127,6 @@ class ALBCalculator {
126
127
  };
127
128
  }
128
129
  }
129
- getRegionPrefix(region) {
130
- const prefixMap = {
131
- 'us-east-1': 'USE1',
132
- 'us-east-2': 'USE2',
133
- 'us-west-1': 'USW1',
134
- 'us-west-2': 'USW2',
135
- 'eu-west-1': 'EUW1',
136
- 'eu-west-2': 'EUW2',
137
- 'eu-west-3': 'EUW3',
138
- 'eu-central-1': 'EUC1',
139
- 'eu-north-1': 'EUN1',
140
- 'ap-south-1': 'APS1',
141
- 'ap-southeast-1': 'APS2',
142
- 'ap-southeast-2': 'APS3',
143
- 'ap-northeast-1': 'APN1',
144
- 'ap-northeast-2': 'APN2',
145
- };
146
- return prefixMap[region] || '';
147
- }
148
130
  }
149
131
  exports.ALBCalculator = ALBCalculator;
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQUxCQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcmljaW5nL2NhbGN1bGF0b3JzL0FMQkNhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQWtEO0FBRWxELE1BQWEsYUFBYTtJQU9kO0lBQ0E7SUFDQTtJQVJPLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztJQUN4QyxxQ0FBcUMsR0FBRyxJQUFJLENBQUM7SUFDN0MsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFFdkMsWUFDVSw2QkFBc0MsRUFDdEMsZ0NBQXlDLEVBQ3pDLHNCQUErQjtRQUYvQixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQVM7UUFDdEMscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFTO1FBQ3pDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztJQUN0QyxDQUFDO0lBRUosUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDJDQUEyQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBd0I7UUFDbkMseUNBQXlDO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsS0FBSyxhQUFhLENBQUM7SUFDNUUsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1Qiw0RUFBNEU7UUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztRQUNuRCxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQzNELE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxDQUFDLDBEQUEwRCxDQUFDO2FBQzFFLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsa0JBQWtCO1lBQ2xCLE1BQU0sVUFBVSxHQUFHLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFDOUMsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLE1BQU0sRUFBRSxJQUFBLDhCQUFlLEVBQUMsTUFBTSxDQUFDO2dCQUMvQixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRTtvQkFDOUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFO2lCQUNuRjthQUNGLENBQUMsQ0FBQztZQUVILGVBQWU7WUFDZixNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLFdBQVcsRUFBRSxRQUFRO2dCQUNyQixNQUFNLEVBQUUsSUFBQSw4QkFBZSxFQUFDLE1BQU0sQ0FBQztnQkFDL0IsT0FBTyxFQUFFO29CQUNQLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUU7b0JBQzlELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7aUJBQzFFO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSx1QkFBdUIsR0FDM0IsSUFBSSxDQUFDLDZCQUE2QixJQUFJLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQztZQUNoRixNQUFNLDBCQUEwQixHQUM5QixJQUFJLENBQUMsZ0NBQWdDLElBQUksSUFBSSxDQUFDLHFDQUFxQyxDQUFDO1lBQ3RGLE1BQU0sZ0JBQWdCLEdBQ3BCLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUM7WUFFakUsSUFBSSxVQUFVLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDNUMsb0VBQW9FO2dCQUNwRSxNQUFNLHFCQUFxQixHQUFHLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztnQkFDM0QsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsR0FBRyxJQUFJLENBQUM7Z0JBQ25FLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQzFELE1BQU0scUJBQXFCLEdBQUcsU0FBUyxDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN6QixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLHFCQUFxQixDQUN0QixDQUFDO2dCQUVGLE9BQU87b0JBQ0wsTUFBTSxFQUFFLENBQUM7b0JBQ1QsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsVUFBVSxFQUFFLFNBQVM7b0JBQ3JCLFdBQVcsRUFBRTt3QkFDWCxzRUFBc0UsTUFBTSxFQUFFO3dCQUM5RSw4QkFBOEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMscUJBQXFCO3dCQUN4RSx3QkFBd0IsdUJBQXVCLFVBQVUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNO3dCQUMvRiwyQkFBMkIsMEJBQTBCLFVBQVUsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNO3dCQUN4Ryx1QkFBdUIsZ0JBQWdCLGVBQWUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNO3FCQUM3RjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELDRCQUE0QjtZQUM1QixzSEFBc0g7WUFDdEgsTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUIsR0FBRyxFQUFFLENBQUM7WUFDM0QsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsR0FBRyxJQUFJLENBQUM7WUFDbkUsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMxRCxNQUFNLHFCQUFxQixHQUFHLFNBQVMsQ0FBQztZQUV4QyxrQ0FBa0M7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDekIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixxQkFBcUIsQ0FDdEIsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3JELE1BQU0sT0FBTyxHQUFHLE9BQU8sR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1RCxNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBRXZDLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixXQUFXLEVBQUU7b0JBQ1gsaUJBQWlCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLGVBQWUsYUFBYSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRO29CQUMvRyxvQkFBb0IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMscUJBQXFCO29CQUM5RCx3QkFBd0IsdUJBQXVCLFVBQVUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNO29CQUMvRiwyQkFBMkIsMEJBQTBCLFVBQVUsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNO29CQUN4Ryx1QkFBdUIsZ0JBQWdCLGVBQWUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNO29CQUM1RixjQUFjLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsZUFBZSxhQUFhLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVE7b0JBQ3pJLFdBQVcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUTtpQkFDeEM7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLHVCQUF1QixHQUMzQixJQUFJLENBQUMsNkJBQTZCLElBQUksSUFBSSxDQUFDLGtDQUFrQyxDQUFDO1lBQ2hGLE1BQU0sMEJBQTBCLEdBQzlCLElBQUksQ0FBQyxnQ0FBZ0MsSUFBSSxJQUFJLENBQUMscUNBQXFDLENBQUM7WUFDdEYsTUFBTSxnQkFBZ0IsR0FDcEIsSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQztZQUVqRSxtRUFBbUU7WUFDbkUsTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUIsR0FBRyxFQUFFLENBQUM7WUFDM0QsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsR0FBRyxJQUFJLENBQUM7WUFDbkUsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMxRCxNQUFNLHFCQUFxQixHQUFHLFNBQVMsQ0FBQztZQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN6QixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLHFCQUFxQixDQUN0QixDQUFDO1lBRUYsT0FBTztnQkFDTCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxRQUFRLEVBQUUsS0FBSztnQkFDZixVQUFVLEVBQUUsU0FBUztnQkFDckIsV0FBVyxFQUFFO29CQUNYLDRCQUE0QixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3BGLDhCQUE4QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7b0JBQ3hFLHdCQUF3Qix1QkFBdUIsVUFBVSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU07b0JBQy9GLDJCQUEyQiwwQkFBMEIsVUFBVSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU07b0JBQ3hHLHVCQUF1QixnQkFBZ0IsZUFBZSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU07aUJBQzdGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBR08sZUFBZSxDQUFDLE1BQWM7UUFDcEMsTUFBTSxTQUFTLEdBQTJCO1lBQ3hDLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLGdCQUFnQixFQUFFLE1BQU07U0FDekIsQ0FBQztRQUVGLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFuTEQsc0NBbUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2VXaXRoSWQgfSBmcm9tICcuLi8uLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IFJlc291cmNlQ29zdENhbGN1bGF0b3IsIE1vbnRobHlDb3N0LCBQcmljaW5nQ2xpZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUmVnaW9uIH0gZnJvbSAnLi4vUmVnaW9uTWFwcGVyJztcblxuZXhwb3J0IGNsYXNzIEFMQkNhbGN1bGF0b3IgaW1wbGVtZW50cyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX05FV19DT05ORUNUSU9OU19QRVJfU0VDT05EID0gMjU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9BQ1RJVkVfQ09OTkVDVElPTlNfUEVSX01JTlVURSA9IDMwMDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QUk9DRVNTRURfQllURVNfR0IgPSAxMDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgSE9VUlNfUEVSX01PTlRIID0gNzMwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY3VzdG9tTmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQ/OiBudW1iZXIsXG4gICAgcHJpdmF0ZSBjdXN0b21BY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZT86IG51bWJlcixcbiAgICBwcml2YXRlIGN1c3RvbVByb2Nlc3NlZEJ5dGVzR0I/OiBudW1iZXIsXG4gICkge31cblxuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6OkxvYWRCYWxhbmNlcic7XG4gIH1cblxuICBjYW5DYWxjdWxhdGUocmVzb3VyY2U6IFJlc291cmNlV2l0aElkKTogYm9vbGVhbiB7XG4gICAgLy8gT25seSBoYW5kbGUgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcnNcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJUeXBlID0gcmVzb3VyY2UucHJvcGVydGllcz8uVHlwZTtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3J0cyhyZXNvdXJjZS50eXBlKSAmJiBsb2FkQmFsYW5jZXJUeXBlID09PSAnYXBwbGljYXRpb24nO1xuICB9XG5cbiAgYXN5bmMgY2FsY3VsYXRlQ29zdChcbiAgICByZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYW4gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlciAobm90IE5ldHdvcmsgTG9hZCBCYWxhbmNlcilcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJUeXBlID0gcmVzb3VyY2UucHJvcGVydGllcz8uVHlwZTtcbiAgICBpZiAobG9hZEJhbGFuY2VyVHlwZSAmJiBsb2FkQmFsYW5jZXJUeXBlICE9PSAnYXBwbGljYXRpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogWydUaGlzIGNhbGN1bGF0b3Igb25seSBzdXBwb3J0cyBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycyddLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gR2V0IGhvdXJseSByYXRlXG4gICAgICBjb25zdCBob3VybHlSYXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQVdTRUxCJyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdMb2FkIEJhbGFuY2VyLUFwcGxpY2F0aW9uJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogYCR7dGhpcy5nZXRSZWdpb25QcmVmaXgocmVnaW9uKX0tTG9hZEJhbGFuY2VyVXNhZ2VgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgLy8gR2V0IExDVSByYXRlXG4gICAgICBjb25zdCBsY3VSYXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQVdTRUxCJyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdMb2FkIEJhbGFuY2VyLUFwcGxpY2F0aW9uJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogYCR7dGhpcy5nZXRSZWdpb25QcmVmaXgocmVnaW9uKX0tTENVVXNhZ2VgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQgPVxuICAgICAgICB0aGlzLmN1c3RvbU5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kIHx8IHRoaXMuREVGQVVMVF9ORVdfQ09OTkVDVElPTlNfUEVSX1NFQ09ORDtcbiAgICAgIGNvbnN0IGFjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlID1cbiAgICAgICAgdGhpcy5jdXN0b21BY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSB8fCB0aGlzLkRFRkFVTFRfQUNUSVZFX0NPTk5FQ1RJT05TX1BFUl9NSU5VVEU7XG4gICAgICBjb25zdCBwcm9jZXNzZWRCeXRlc0dCID1cbiAgICAgICAgdGhpcy5jdXN0b21Qcm9jZXNzZWRCeXRlc0dCIHx8IHRoaXMuREVGQVVMVF9QUk9DRVNTRURfQllURVNfR0I7XG5cbiAgICAgIGlmIChob3VybHlSYXRlID09PSBudWxsIHx8IGxjdVJhdGUgPT09IG51bGwpIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIExDVSBjb25zdW1wdGlvbiBmb3IgYXNzdW1wdGlvbnMgZXZlbiB3aGVuIHByaWNpbmcgZmFpbHNcbiAgICAgICAgY29uc3QgbGN1RnJvbU5ld0Nvbm5lY3Rpb25zID0gbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQgLyAyNTtcbiAgICAgICAgY29uc3QgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zID0gYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgLyAzMDAwO1xuICAgICAgICBjb25zdCBnYlBlckhvdXIgPSBwcm9jZXNzZWRCeXRlc0dCIC8gdGhpcy5IT1VSU19QRVJfTU9OVEg7XG4gICAgICAgIGNvbnN0IGxjdUZyb21Qcm9jZXNzZWRCeXRlcyA9IGdiUGVySG91cjtcbiAgICAgICAgY29uc3QgbGN1UGVySG91ciA9IE1hdGgubWF4KFxuICAgICAgICAgIGxjdUZyb21OZXdDb25uZWN0aW9ucyxcbiAgICAgICAgICBsY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMsXG4gICAgICAgICAgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAgIGBQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlciBpbiByZWdpb24gJHtyZWdpb259YCxcbiAgICAgICAgICAgIGBXb3VsZCB1c2UgTENVIGNvbnN1bXB0aW9uOiAke2xjdVBlckhvdXIudG9GaXhlZCgyKX0gTENVL2hvdXIgYmFzZWQgb246YCxcbiAgICAgICAgICAgIGAgIC0gTmV3IGNvbm5lY3Rpb25zOiAke25ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kfS9zZWMg4oaSICR7bGN1RnJvbU5ld0Nvbm5lY3Rpb25zLnRvRml4ZWQoMil9IExDVWAsXG4gICAgICAgICAgICBgICAtIEFjdGl2ZSBjb25uZWN0aW9uczogJHthY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZX0vbWluIOKGkiAke2xjdUZyb21BY3RpdmVDb25uZWN0aW9ucy50b0ZpeGVkKDIpfSBMQ1VgLFxuICAgICAgICAgICAgYCAgLSBQcm9jZXNzZWQgZGF0YTogJHtwcm9jZXNzZWRCeXRlc0dCfSBHQi9tb250aCDihpIgJHtsY3VGcm9tUHJvY2Vzc2VkQnl0ZXMudG9GaXhlZCgyKX0gTENVYCxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBDYWxjdWxhdGUgTENVIGNvbnN1bXB0aW9uXG4gICAgICAvLyAxIExDVSBwcm92aWRlczogMjUgbmV3IGNvbm5lY3Rpb25zL3NlYywgMzAwMCBhY3RpdmUgY29ubmVjdGlvbnMvbWluLCAxIEdCIHByb2Nlc3NlZC9ob3VyLCAxMDAwIHJ1bGUgZXZhbHVhdGlvbnMvc2VjXG4gICAgICBjb25zdCBsY3VGcm9tTmV3Q29ubmVjdGlvbnMgPSBuZXdDb25uZWN0aW9uc1BlclNlY29uZCAvIDI1O1xuICAgICAgY29uc3QgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zID0gYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgLyAzMDAwO1xuICAgICAgY29uc3QgZ2JQZXJIb3VyID0gcHJvY2Vzc2VkQnl0ZXNHQiAvIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzID0gZ2JQZXJIb3VyO1xuXG4gICAgICAvLyBVc2UgdGhlIGhpZ2hlc3QgTENVIGNvbnN1bXB0aW9uXG4gICAgICBjb25zdCBsY3VQZXJIb3VyID0gTWF0aC5tYXgoXG4gICAgICAgIGxjdUZyb21OZXdDb25uZWN0aW9ucyxcbiAgICAgICAgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zLFxuICAgICAgICBsY3VGcm9tUHJvY2Vzc2VkQnl0ZXMsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBob3VybHlDb3N0ID0gaG91cmx5UmF0ZSAqIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgbGN1Q29zdCA9IGxjdVJhdGUgKiBsY3VQZXJIb3VyICogdGhpcy5IT1VSU19QRVJfTU9OVEg7XG4gICAgICBjb25zdCB0b3RhbENvc3QgPSBob3VybHlDb3N0ICsgbGN1Q29zdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiB0b3RhbENvc3QsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ21lZGl1bScsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgYEhvdXJseSByYXRlOiAkJHtob3VybHlSYXRlLnRvRml4ZWQoNCl9L2hvdXIgw5cgJHt0aGlzLkhPVVJTX1BFUl9NT05USH0gaG91cnMgPSAkJHtob3VybHlDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgICBgTENVIGNvbnN1bXB0aW9uOiAke2xjdVBlckhvdXIudG9GaXhlZCgyKX0gTENVL2hvdXIgYmFzZWQgb246YCxcbiAgICAgICAgICBgICAtIE5ldyBjb25uZWN0aW9uczogJHtuZXdDb25uZWN0aW9uc1BlclNlY29uZH0vc2VjIOKGkiAke2xjdUZyb21OZXdDb25uZWN0aW9ucy50b0ZpeGVkKDIpfSBMQ1VgLFxuICAgICAgICAgIGAgIC0gQWN0aXZlIGNvbm5lY3Rpb25zOiAke2FjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlfS9taW4g4oaSICR7bGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zLnRvRml4ZWQoMil9IExDVWAsXG4gICAgICAgICAgYCAgLSBQcm9jZXNzZWQgZGF0YTogJHtwcm9jZXNzZWRCeXRlc0dCfSBHQi9tb250aCDihpIgJHtsY3VGcm9tUHJvY2Vzc2VkQnl0ZXMudG9GaXhlZCgyKX0gTENVYCxcbiAgICAgICAgICBgTENVIGNvc3Q6ICQke2xjdVJhdGUudG9GaXhlZCg0KX0vTENVL2hvdXIgw5cgJHtsY3VQZXJIb3VyLnRvRml4ZWQoMil9IExDVSDDlyAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyA9ICQke2xjdUNvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBUb3RhbDogJCR7dG90YWxDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IG5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kID1cbiAgICAgICAgdGhpcy5jdXN0b21OZXdDb25uZWN0aW9uc1BlclNlY29uZCB8fCB0aGlzLkRFRkFVTFRfTkVXX0NPTk5FQ1RJT05TX1BFUl9TRUNPTkQ7XG4gICAgICBjb25zdCBhY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSA9XG4gICAgICAgIHRoaXMuY3VzdG9tQWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgfHwgdGhpcy5ERUZBVUxUX0FDVElWRV9DT05ORUNUSU9OU19QRVJfTUlOVVRFO1xuICAgICAgY29uc3QgcHJvY2Vzc2VkQnl0ZXNHQiA9XG4gICAgICAgIHRoaXMuY3VzdG9tUHJvY2Vzc2VkQnl0ZXNHQiB8fCB0aGlzLkRFRkFVTFRfUFJPQ0VTU0VEX0JZVEVTX0dCO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgTENVIGNvbnN1bXB0aW9uIGZvciBhc3N1bXB0aW9ucyBldmVuIHdoZW4gZXJyb3Igb2NjdXJzXG4gICAgICBjb25zdCBsY3VGcm9tTmV3Q29ubmVjdGlvbnMgPSBuZXdDb25uZWN0aW9uc1BlclNlY29uZCAvIDI1O1xuICAgICAgY29uc3QgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zID0gYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgLyAzMDAwO1xuICAgICAgY29uc3QgZ2JQZXJIb3VyID0gcHJvY2Vzc2VkQnl0ZXNHQiAvIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzID0gZ2JQZXJIb3VyO1xuICAgICAgY29uc3QgbGN1UGVySG91ciA9IE1hdGgubWF4KFxuICAgICAgICBsY3VGcm9tTmV3Q29ubmVjdGlvbnMsXG4gICAgICAgIGxjdUZyb21BY3RpdmVDb25uZWN0aW9ucyxcbiAgICAgICAgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoIHByaWNpbmc6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXG4gICAgICAgICAgYFdvdWxkIHVzZSBMQ1UgY29uc3VtcHRpb246ICR7bGN1UGVySG91ci50b0ZpeGVkKDIpfSBMQ1UvaG91ciBiYXNlZCBvbjpgLFxuICAgICAgICAgIGAgIC0gTmV3IGNvbm5lY3Rpb25zOiAke25ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kfS9zZWMg4oaSICR7bGN1RnJvbU5ld0Nvbm5lY3Rpb25zLnRvRml4ZWQoMil9IExDVWAsXG4gICAgICAgICAgYCAgLSBBY3RpdmUgY29ubmVjdGlvbnM6ICR7YWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGV9L21pbiDihpIgJHtsY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMudG9GaXhlZCgyKX0gTENVYCxcbiAgICAgICAgICBgICAtIFByb2Nlc3NlZCBkYXRhOiAke3Byb2Nlc3NlZEJ5dGVzR0J9IEdCL21vbnRoIOKGkiAke2xjdUZyb21Qcm9jZXNzZWRCeXRlcy50b0ZpeGVkKDIpfSBMQ1VgLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgZ2V0UmVnaW9uUHJlZml4KHJlZ2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAndXMtZWFzdC0xJzogJ1VTRTEnLFxuICAgICAgJ3VzLWVhc3QtMic6ICdVU0UyJyxcbiAgICAgICd1cy13ZXN0LTEnOiAnVVNXMScsXG4gICAgICAndXMtd2VzdC0yJzogJ1VTVzInLFxuICAgICAgJ2V1LXdlc3QtMSc6ICdFVVcxJyxcbiAgICAgICdldS13ZXN0LTInOiAnRVVXMicsXG4gICAgICAnZXUtd2VzdC0zJzogJ0VVVzMnLFxuICAgICAgJ2V1LWNlbnRyYWwtMSc6ICdFVUMxJyxcbiAgICAgICdldS1ub3J0aC0xJzogJ0VVTjEnLFxuICAgICAgJ2FwLXNvdXRoLTEnOiAnQVBTMScsXG4gICAgICAnYXAtc291dGhlYXN0LTEnOiAnQVBTMicsXG4gICAgICAnYXAtc291dGhlYXN0LTInOiAnQVBTMycsXG4gICAgICAnYXAtbm9ydGhlYXN0LTEnOiAnQVBOMScsXG4gICAgICAnYXAtbm9ydGhlYXN0LTInOiAnQVBOMicsXG4gICAgfTtcblxuICAgIHJldHVybiBwcmVmaXhNYXBbcmVnaW9uXSB8fCAnJztcbiAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQUxCQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcmljaW5nL2NhbGN1bGF0b3JzL0FMQkNhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQW1FO0FBRW5FLE1BQWEsYUFBYTtJQU9kO0lBQ0E7SUFDQTtJQVJPLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztJQUN4QyxxQ0FBcUMsR0FBRyxJQUFJLENBQUM7SUFDN0MsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFFdkMsWUFDVSw2QkFBc0MsRUFDdEMsZ0NBQXlDLEVBQ3pDLHNCQUErQjtRQUYvQixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQVM7UUFDdEMscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFTO1FBQ3pDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztJQUN0QyxDQUFDO0lBRUosUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDJDQUEyQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBd0I7UUFDbkMseUNBQXlDO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsS0FBSyxhQUFhLENBQUM7SUFDNUUsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1Qiw0RUFBNEU7UUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztRQUNuRCxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQzNELE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxF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dUJBQXVCLGdCQUFnQixlQUFlLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTTtpQkFDN0Y7YUFDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQS9KRCxzQ0ErSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZVdpdGhJZCB9IGZyb20gJy4uLy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciwgTW9udGhseUNvc3QsIFByaWNpbmdDbGllbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVSZWdpb24sIGdldFJlZ2lvblByZWZpeCB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBBTEJDYWxjdWxhdG9yIGltcGxlbWVudHMgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9ORVdfQ09OTkVDVElPTlNfUEVSX1NFQ09ORCA9IDI1O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQUNUSVZFX0NPTk5FQ1RJT05TX1BFUl9NSU5VVEUgPSAzMDAwO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfUFJPQ0VTU0VEX0JZVEVTX0dCID0gMTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IEhPVVJTX1BFUl9NT05USCA9IDczMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGN1c3RvbU5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kPzogbnVtYmVyLFxuICAgIHByaXZhdGUgY3VzdG9tQWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGU/OiBudW1iZXIsXG4gICAgcHJpdmF0ZSBjdXN0b21Qcm9jZXNzZWRCeXRlc0dCPzogbnVtYmVyLFxuICApIHt9XG5cbiAgc3VwcG9ydHMocmVzb3VyY2VUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVzb3VyY2VUeXBlID09PSAnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXInO1xuICB9XG5cbiAgY2FuQ2FsY3VsYXRlKHJlc291cmNlOiBSZXNvdXJjZVdpdGhJZCk6IGJvb2xlYW4ge1xuICAgIC8vIE9ubHkgaGFuZGxlIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJzXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyVHlwZSA9IHJlc291cmNlLnByb3BlcnRpZXM/LlR5cGU7XG4gICAgcmV0dXJuIHRoaXMuc3VwcG9ydHMocmVzb3VyY2UudHlwZSkgJiYgbG9hZEJhbGFuY2VyVHlwZSA9PT0gJ2FwcGxpY2F0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNhbGN1bGF0ZUNvc3QoXG4gICAgcmVzb3VyY2U6IFJlc291cmNlV2l0aElkLFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIHByaWNpbmdDbGllbnQ6IFByaWNpbmdDbGllbnQsXG4gICk6IFByb21pc2U8TW9udGhseUNvc3Q+IHtcbiAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIgKG5vdCBOZXR3b3JrIExvYWQgQmFsYW5jZXIpXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyVHlwZSA9IHJlc291cmNlLnByb3BlcnRpZXM/LlR5cGU7XG4gICAgaWYgKGxvYWRCYWxhbmNlclR5cGUgJiYgbG9hZEJhbGFuY2VyVHlwZSAhPT0gJ2FwcGxpY2F0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFsnVGhpcyBjYWxjdWxhdG9yIG9ubHkgc3VwcG9ydHMgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcnMnXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlZ2lvblByZWZpeCA9IGdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgXG4gICAgICAvLyBHZXQgaG91cmx5IHJhdGVcbiAgICAgIGNvbnN0IGhvdXJseVJhdGUgPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBV1NFTEInLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ0xvYWQgQmFsYW5jZXItQXBwbGljYXRpb24nIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiBgJHtyZWdpb25QcmVmaXh9LUxvYWRCYWxhbmNlclVzYWdlYCB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCBMQ1UgcmF0ZVxuICAgICAgY29uc3QgbGN1UmF0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FXU0VMQicsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnTG9hZCBCYWxhbmNlci1BcHBsaWNhdGlvbicgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH0tTENVVXNhZ2VgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQgPVxuICAgICAgICB0aGlzLmN1c3RvbU5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kIHx8IHRoaXMuREVGQVVMVF9ORVdfQ09OTkVDVElPTlNfUEVSX1NFQ09ORDtcbiAgICAgIGNvbnN0IGFjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlID1cbiAgICAgICAgdGhpcy5jdXN0b21BY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSB8fCB0aGlzLkRFRkFVTFRfQUNUSVZFX0NPTk5FQ1RJT05TX1BFUl9NSU5VVEU7XG4gICAgICBjb25zdCBwcm9jZXNzZWRCeXRlc0dCID1cbiAgICAgICAgdGhpcy5jdXN0b21Qcm9jZXNzZWRCeXRlc0dCIHx8IHRoaXMuREVGQVVMVF9QUk9DRVNTRURfQllURVNfR0I7XG5cbiAgICAgIGlmIChob3VybHlSYXRlID09PSBudWxsIHx8IGxjdVJhdGUgPT09IG51bGwpIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIExDVSBjb25zdW1wdGlvbiBmb3IgYXNzdW1wdGlvbnMgZXZlbiB3aGVuIHByaWNpbmcgZmFpbHNcbiAgICAgICAgY29uc3QgbGN1RnJvbU5ld0Nvbm5lY3Rpb25zID0gbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQgLyAyNTtcbiAgICAgICAgY29uc3QgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zID0gYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgLyAzMDAwO1xuICAgICAgICBjb25zdCBnYlBlckhvdXIgPSBwcm9jZXNzZWRCeXRlc0dCIC8gdGhpcy5IT1VSU19QRVJfTU9OVEg7XG4gICAgICAgIGNvbnN0IGxjdUZyb21Qcm9jZXNzZWRCeXRlcyA9IGdiUGVySG91cjtcbiAgICAgICAgY29uc3QgbGN1UGVySG91ciA9IE1hdGgubWF4KFxuICAgICAgICAgIGxjdUZyb21OZXdDb25uZWN0aW9ucyxcbiAgICAgICAgICBsY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMsXG4gICAgICAgICAgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAgIGBQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlciBpbiByZWdpb24gJHtyZWdpb259YCxcbiAgICAgICAgICAgIGBXb3VsZCB1c2UgTENVIGNvbnN1bXB0aW9uOiAke2xjdVBlckhvdXIudG9GaXhlZCgyKX0gTENVL2hvdXIgYmFzZWQgb246YCxcbiAgICAgICAgICAgIGAgIC0gTmV3IGNvbm5lY3Rpb25zOiAke25ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kfS9zZWMg4oaSICR7bGN1RnJvbU5ld0Nvbm5lY3Rpb25zLnRvRml4ZWQoMil9IExDVWAsXG4gICAgICAgICAgICBgICAtIEFjdGl2ZSBjb25uZWN0aW9uczogJHthY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZX0vbWluIOKGkiAke2xjdUZyb21BY3RpdmVDb25uZWN0aW9ucy50b0ZpeGVkKDIpfSBMQ1VgLFxuICAgICAgICAgICAgYCAgLSBQcm9jZXNzZWQgZGF0YTogJHtwcm9jZXNzZWRCeXRlc0dCfSBHQi9tb250aCDihpIgJHtsY3VGcm9tUHJvY2Vzc2VkQnl0ZXMudG9GaXhlZCgyKX0gTENVYCxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBDYWxjdWxhdGUgTENVIGNvbnN1bXB0aW9uXG4gICAgICAvLyAxIExDVSBwcm92aWRlczogMjUgbmV3IGNvbm5lY3Rpb25zL3NlYywgMzAwMCBhY3RpdmUgY29ubmVjdGlvbnMvbWluLCAxIEdCIHByb2Nlc3NlZC9ob3VyLCAxMDAwIHJ1bGUgZXZhbHVhdGlvbnMvc2VjXG4gICAgICBjb25zdCBsY3VGcm9tTmV3Q29ubmVjdGlvbnMgPSBuZXdDb25uZWN0aW9uc1BlclNlY29uZCAvIDI1O1xuICAgICAgY29uc3QgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zID0gYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgLyAzMDAwO1xuICAgICAgY29uc3QgZ2JQZXJIb3VyID0gcHJvY2Vzc2VkQnl0ZXNHQiAvIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzID0gZ2JQZXJIb3VyO1xuXG4gICAgICAvLyBVc2UgdGhlIGhpZ2hlc3QgTENVIGNvbnN1bXB0aW9uXG4gICAgICBjb25zdCBsY3VQZXJIb3VyID0gTWF0aC5tYXgoXG4gICAgICAgIGxjdUZyb21OZXdDb25uZWN0aW9ucyxcbiAgICAgICAgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zLFxuICAgICAgICBsY3VGcm9tUHJvY2Vzc2VkQnl0ZXMsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBob3VybHlDb3N0ID0gaG91cmx5UmF0ZSAqIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgbGN1Q29zdCA9IGxjdVJhdGUgKiBsY3VQZXJIb3VyICogdGhpcy5IT1VSU19QRVJfTU9OVEg7XG4gICAgICBjb25zdCB0b3RhbENvc3QgPSBob3VybHlDb3N0ICsgbGN1Q29zdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiB0b3RhbENvc3QsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ21lZGl1bScsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgYEhvdXJseSByYXRlOiAkJHtob3VybHlSYXRlLnRvRml4ZWQoNCl9L2hvdXIgw5cgJHt0aGlzLkhPVVJTX1BFUl9NT05USH0gaG91cnMgPSAkJHtob3VybHlDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgICBgTENVIGNvbnN1bXB0aW9uOiAke2xjdVBlckhvdXIudG9GaXhlZCgyKX0gTENVL2hvdXIgYmFzZWQgb246YCxcbiAgICAgICAgICBgICAtIE5ldyBjb25uZWN0aW9uczogJHtuZXdDb25uZWN0aW9uc1BlclNlY29uZH0vc2VjIOKGkiAke2xjdUZyb21OZXdDb25uZWN0aW9ucy50b0ZpeGVkKDIpfSBMQ1VgLFxuICAgICAgICAgIGAgIC0gQWN0aXZlIGNvbm5lY3Rpb25zOiAke2FjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlfS9taW4g4oaSICR7bGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zLnRvRml4ZWQoMil9IExDVWAsXG4gICAgICAgICAgYCAgLSBQcm9jZXNzZWQgZGF0YTogJHtwcm9jZXNzZWRCeXRlc0dCfSBHQi9tb250aCDihpIgJHtsY3VGcm9tUHJvY2Vzc2VkQnl0ZXMudG9GaXhlZCgyKX0gTENVYCxcbiAgICAgICAgICBgTENVIGNvc3Q6ICQke2xjdVJhdGUudG9GaXhlZCg0KX0vTENVL2hvdXIgw5cgJHtsY3VQZXJIb3VyLnRvRml4ZWQoMil9IExDVSDDlyAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyA9ICQke2xjdUNvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBUb3RhbDogJCR7dG90YWxDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IG5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kID1cbiAgICAgICAgdGhpcy5jdXN0b21OZXdDb25uZWN0aW9uc1BlclNlY29uZCB8fCB0aGlzLkRFRkFVTFRfTkVXX0NPTk5FQ1RJT05TX1BFUl9TRUNPTkQ7XG4gICAgICBjb25zdCBhY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSA9XG4gICAgICAgIHRoaXMuY3VzdG9tQWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgfHwgdGhpcy5ERUZBVUxUX0FDVElWRV9DT05ORUNUSU9OU19QRVJfTUlOVVRFO1xuICAgICAgY29uc3QgcHJvY2Vzc2VkQnl0ZXNHQiA9XG4gICAgICAgIHRoaXMuY3VzdG9tUHJvY2Vzc2VkQnl0ZXNHQiB8fCB0aGlzLkRFRkFVTFRfUFJPQ0VTU0VEX0JZVEVTX0dCO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgTENVIGNvbnN1bXB0aW9uIGZvciBhc3N1bXB0aW9ucyBldmVuIHdoZW4gZXJyb3Igb2NjdXJzXG4gICAgICBjb25zdCBsY3VGcm9tTmV3Q29ubmVjdGlvbnMgPSBuZXdDb25uZWN0aW9uc1BlclNlY29uZCAvIDI1O1xuICAgICAgY29uc3QgbGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zID0gYWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGUgLyAzMDAwO1xuICAgICAgY29uc3QgZ2JQZXJIb3VyID0gcHJvY2Vzc2VkQnl0ZXNHQiAvIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzID0gZ2JQZXJIb3VyO1xuICAgICAgY29uc3QgbGN1UGVySG91ciA9IE1hdGgubWF4KFxuICAgICAgICBsY3VGcm9tTmV3Q29ubmVjdGlvbnMsXG4gICAgICAgIGxjdUZyb21BY3RpdmVDb25uZWN0aW9ucyxcbiAgICAgICAgbGN1RnJvbVByb2Nlc3NlZEJ5dGVzLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoIHByaWNpbmc6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXG4gICAgICAgICAgYFdvdWxkIHVzZSBMQ1UgY29uc3VtcHRpb246ICR7bGN1UGVySG91ci50b0ZpeGVkKDIpfSBMQ1UvaG91ciBiYXNlZCBvbjpgLFxuICAgICAgICAgIGAgIC0gTmV3IGNvbm5lY3Rpb25zOiAke25ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kfS9zZWMg4oaSICR7bGN1RnJvbU5ld0Nvbm5lY3Rpb25zLnRvRml4ZWQoMil9IExDVWAsXG4gICAgICAgICAgYCAgLSBBY3RpdmUgY29ubmVjdGlvbnM6ICR7YWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGV9L21pbiDihpIgJHtsY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMudG9GaXhlZCgyKX0gTENVYCxcbiAgICAgICAgICBgICAtIFByb2Nlc3NlZCBkYXRhOiAke3Byb2Nlc3NlZEJ5dGVzR0J9IEdCL21vbnRoIOKGkiAke2xjdUZyb21Qcm9jZXNzZWRCeXRlcy50b0ZpeGVkKDIpfSBMQ1VgLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -6,10 +6,4 @@ export declare class APIGatewayCalculator implements ResourceCostCalculator {
6
6
  private calculateRestApiCost;
7
7
  private calculateHttpApiCost;
8
8
  private calculateWebSocketCost;
9
- /**
10
- * Get the AWS region prefix for API Gateway pricing usagetype.
11
- * AWS uses region prefixes in usagetype values (e.g., USE1-ApiGatewayRequest).
12
- * Reference: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html
13
- */
14
- private getRegionPrefix;
15
9
  }
@@ -23,7 +23,7 @@ class APIGatewayCalculator {
23
23
  async calculateRestApiCost(region, pricingClient) {
24
24
  try {
25
25
  const assumedRequests = 1_000_000; // 1M requests per month
26
- const regionPrefix = this.getRegionPrefix(region);
26
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
27
27
  const usageType = regionPrefix ? `${regionPrefix}-ApiGatewayRequest` : 'ApiGatewayRequest';
28
28
  const costPerMillion = await pricingClient.getPrice({
29
29
  serviceCode: 'AmazonApiGateway',
@@ -66,7 +66,7 @@ class APIGatewayCalculator {
66
66
  async calculateHttpApiCost(region, pricingClient) {
67
67
  try {
68
68
  const assumedRequests = 1_000_000; // 1M requests per month
69
- const regionPrefix = this.getRegionPrefix(region);
69
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
70
70
  const usageType = regionPrefix ? `${regionPrefix}-ApiGatewayHttpRequest` : 'ApiGatewayHttpRequest';
71
71
  const costPerMillion = await pricingClient.getPrice({
72
72
  serviceCode: 'AmazonApiGateway',
@@ -110,7 +110,7 @@ class APIGatewayCalculator {
110
110
  try {
111
111
  const assumedMessages = 1_000_000; // 1M messages per month
112
112
  const assumedConnectionMinutes = 100_000; // 100K connection minutes
113
- const regionPrefix = this.getRegionPrefix(region);
113
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
114
114
  const messageUsageType = regionPrefix ? `${regionPrefix}-ApiGatewayMessage` : 'ApiGatewayMessage';
115
115
  const minuteUsageType = regionPrefix ? `${regionPrefix}-ApiGatewayMinute` : 'ApiGatewayMinute';
116
116
  const messageCostPerMillion = await pricingClient.getPrice({
@@ -161,56 +161,6 @@ class APIGatewayCalculator {
161
161
  };
162
162
  }
163
163
  }
164
- /**
165
- * Get the AWS region prefix for API Gateway pricing usagetype.
166
- * AWS uses region prefixes in usagetype values (e.g., USE1-ApiGatewayRequest).
167
- * Reference: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html
168
- */
169
- getRegionPrefix(region) {
170
- const prefixMap = {
171
- // US Regions
172
- 'us-east-1': 'USE1',
173
- 'us-east-2': 'USE2',
174
- 'us-west-1': 'USW1',
175
- 'us-west-2': 'USW2',
176
- // EU Regions
177
- 'eu-west-1': 'EUW1',
178
- 'eu-west-2': 'EUW2',
179
- 'eu-west-3': 'EUW3',
180
- 'eu-central-1': 'EUC1',
181
- 'eu-central-2': 'EUC2',
182
- 'eu-north-1': 'EUN1',
183
- 'eu-south-1': 'EUS1',
184
- 'eu-south-2': 'EUS2',
185
- // Asia Pacific Regions
186
- 'ap-south-1': 'APS3', // Mumbai
187
- 'ap-south-2': 'APS5', // Hyderabad
188
- 'ap-southeast-1': 'APS1', // Singapore
189
- 'ap-southeast-2': 'APS2', // Sydney
190
- 'ap-southeast-3': 'APS6', // Jakarta
191
- 'ap-southeast-4': 'APS7', // Melbourne
192
- 'ap-northeast-1': 'APN1', // Tokyo
193
- 'ap-northeast-2': 'APN2', // Seoul
194
- 'ap-northeast-3': 'APN3', // Osaka
195
- 'ap-east-1': 'APE1', // Hong Kong
196
- // Canada Regions
197
- 'ca-central-1': 'CAN1',
198
- 'ca-west-1': 'CAW1',
199
- // South America Regions
200
- 'sa-east-1': 'SAE1',
201
- // Middle East Regions
202
- 'me-south-1': 'MES1',
203
- 'me-central-1': 'MEC1',
204
- // Africa Regions
205
- 'af-south-1': 'AFS1',
206
- // Israel Regions
207
- 'il-central-1': 'ILC1',
208
- // GovCloud Regions
209
- 'us-gov-west-1': 'UGW1',
210
- 'us-gov-east-1': 'UGE1',
211
- };
212
- return prefixMap[region] || '';
213
- }
214
164
  }
215
165
  exports.APIGatewayCalculator = APIGatewayCalculator;
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVBJR2F0ZXdheUNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJpY2luZy9jYWxjdWxhdG9ycy9BUElHYXRld2F5Q2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxrREFBa0Q7QUFFbEQsTUFBYSxvQkFBb0I7SUFDL0IsUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDBCQUEwQjtZQUMzQyxZQUFZLEtBQUssd0JBQXdCLENBQUM7SUFDbkQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUF1QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbEYsSUFBSSxZQUFZLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQ2hDLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyx3QkFBd0I7WUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFB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TSxFQUFJLFFBQVE7WUFDcEMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFJLFFBQVE7WUFDcEMsV0FBVyxFQUFFLE1BQU0sRUFBUyxZQUFZO1lBQ3hDLGlCQUFpQjtZQUNqQixjQUFjLEVBQUUsTUFBTTtZQUN0QixXQUFXLEVBQUUsTUFBTTtZQUNuQix3QkFBd0I7WUFDeEIsV0FBVyxFQUFFLE1BQU07WUFDbkIsc0JBQXNCO1lBQ3RCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLGlCQUFpQjtZQUNqQixZQUFZLEVBQUUsTUFBTTtZQUNwQixpQkFBaUI7WUFDakIsY0FBYyxFQUFFLE1BQU07WUFDdEIsbUJBQW1CO1lBQ25CLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLGVBQWUsRUFBRSxNQUFNO1NBQ3hCLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBN09ELG9EQTZPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlV2l0aElkIH0gZnJvbSAnLi4vLi4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yLCBNb250aGx5Q29zdCwgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVJlZ2lvbiB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBBUElHYXRld2F5Q2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknIHx8XG4gICAgICAgICAgIHJlc291cmNlVHlwZSA9PT0gJ0FXUzo6QXBpR2F0ZXdheVYyOjpBcGknO1xuICB9XG5cbiAgYXN5bmMgY2FsY3VsYXRlQ29zdChcbiAgICByZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIGNvbnN0IGlzVjIgPSByZXNvdXJjZS50eXBlID09PSAnQVdTOjpBcGlHYXRld2F5VjI6OkFwaSc7XG4gICAgY29uc3QgcHJvdG9jb2xUeXBlID0gaXNWMiA/IChyZXNvdXJjZS5wcm9wZXJ0aWVzLlByb3RvY29sVHlwZSBhcyBzdHJpbmcpIDogJ1JFU1QnO1xuXG4gICAgaWYgKHByb3RvY29sVHlwZSA9PT0gJ1dFQlNPQ0tFVCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZVdlYlNvY2tldENvc3QocmVnaW9uLCBwcmljaW5nQ2xpZW50KTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sVHlwZSA9PT0gJ0hUVFAnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVIdHRwQXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVSZXN0QXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlUmVzdEFwaUNvc3QoXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3N1bWVkUmVxdWVzdHMgPSAxXzAwMF8wMDA7IC8vIDFNIHJlcXVlc3RzIHBlciBtb250aFxuICAgICAgY29uc3QgcmVnaW9uUHJlZml4ID0gdGhpcy5nZXRSZWdpb25QcmVmaXgocmVnaW9uKTtcbiAgICAgIGNvbnN0IHVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheVJlcXVlc3RgIDogJ0FwaUdhdGV3YXlSZXF1ZXN0JztcblxuICAgICAgY29uc3QgY29zdFBlck1pbGxpb24gPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBbWF6b25BcGlHYXRld2F5JyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdBUEkgQ2FsbHMnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiB1c2FnZVR5cGUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY29zdFBlck1pbGxpb24gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogWydQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQVBJIEdhdGV3YXkgUkVTVCBBUEknXSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbW9udGhseUNvc3QgPSAoYXNzdW1lZFJlcXVlc3RzIC8gMV8wMDBfMDAwKSAqIGNvc3RQZXJNaWxsaW9uO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IG1vbnRobHlDb3N0LFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICdtZWRpdW0nLFxuICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgIGBBc3N1bWVzICR7YXNzdW1lZFJlcXVlc3RzLnRvTG9jYWxlU3RyaW5nKCl9IFJFU1QgQVBJIHJlcXVlc3RzIHBlciBtb250aGAsXG4gICAgICAgICAgJ1JFU1QgQVBJIHR5cGUnLFxuICAgICAgICAgICdEb2VzIG5vdCBpbmNsdWRlIGRhdGEgdHJhbnNmZXIsIGNhY2hpbmcsIG9yIG90aGVyIGZlYXR1cmVzJyxcbiAgICAgICAgICAnRmlyc3QgMzMzTSByZXF1ZXN0cyBtYXkgaGF2ZSB0aWVyZWQgcHJpY2luZyAobm90IGNhbGN1bGF0ZWQpJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWxjdWxhdGVIdHRwQXBpQ29zdChcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50LFxuICApOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFzc3VtZWRSZXF1ZXN0cyA9IDFfMDAwXzAwMDsgLy8gMU0gcmVxdWVzdHMgcGVyIG1vbnRoXG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSB0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgY29uc3QgdXNhZ2VUeXBlID0gcmVnaW9uUHJlZml4ID8gYCR7cmVnaW9uUHJlZml4fS1BcGlHYXRld2F5SHR0cFJlcXVlc3RgIDogJ0FwaUdhdGV3YXlIdHRwUmVxdWVzdCc7XG5cbiAgICAgIGNvbnN0IGNvc3RQZXJNaWxsaW9uID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uQXBpR2F0ZXdheScsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnQVBJIENhbGxzJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogdXNhZ2VUeXBlIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGNvc3RQZXJNaWxsaW9uID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFsnUHJpY2luZyBkYXRhIG5vdCBhdmFpbGFibGUgZm9yIEFQSSBHYXRld2F5IEhUVFAgQVBJJ10sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gKGFzc3VtZWRSZXF1ZXN0cyAvIDFfMDAwXzAwMCkgKiBjb3N0UGVyTWlsbGlvbjtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRSZXF1ZXN0cy50b0xvY2FsZVN0cmluZygpfSBIVFRQIEFQSSByZXF1ZXN0cyBwZXIgbW9udGhgLFxuICAgICAgICAgICdIVFRQIEFQSSB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyIGNvc3RzJyxcbiAgICAgICAgICAnRmlyc3QgMzAwTSByZXF1ZXN0cyBtYXkgaGF2ZSB0aWVyZWQgcHJpY2luZyAobm90IGNhbGN1bGF0ZWQpJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWxjdWxhdGVXZWJTb2NrZXRDb3N0KFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIHByaWNpbmdDbGllbnQ6IFByaWNpbmdDbGllbnQsXG4gICk6IFByb21pc2U8TW9udGhseUNvc3Q+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXNzdW1lZE1lc3NhZ2VzID0gMV8wMDBfMDAwOyAvLyAxTSBtZXNzYWdlcyBwZXIgbW9udGhcbiAgICAgIGNvbnN0IGFzc3VtZWRDb25uZWN0aW9uTWludXRlcyA9IDEwMF8wMDA7IC8vIDEwMEsgY29ubmVjdGlvbiBtaW51dGVzXG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSB0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgY29uc3QgbWVzc2FnZVVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheU1lc3NhZ2VgIDogJ0FwaUdhdGV3YXlNZXNzYWdlJztcbiAgICAgIGNvbnN0IG1pbnV0ZVVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheU1pbnV0ZWAgOiAnQXBpR2F0ZXdheU1pbnV0ZSc7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VDb3N0UGVyTWlsbGlvbiA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ1dlYlNvY2tldCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IG1lc3NhZ2VVc2FnZVR5cGUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25uZWN0aW9uQ29zdFBlck1pbnV0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ1dlYlNvY2tldCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IG1pbnV0ZVVzYWdlVHlwZSB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZXNzYWdlQ29zdFBlck1pbGxpb24gPT09IG51bGwgfHwgY29ubmVjdGlvbkNvc3RQZXJNaW51dGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogWydQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQVBJIEdhdGV3YXkgV2ViU29ja2V0IEFQSSddLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlQ29zdCA9IChhc3N1bWVkTWVzc2FnZXMgLyAxXzAwMF8wMDApICogbWVzc2FnZUNvc3RQZXJNaWxsaW9uO1xuICAgICAgY29uc3QgY29ubmVjdGlvbkNvc3QgPSBhc3N1bWVkQ29ubmVjdGlvbk1pbnV0ZXMgKiBjb25uZWN0aW9uQ29zdFBlck1pbnV0ZTtcbiAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gbWVzc2FnZUNvc3QgKyBjb25uZWN0aW9uQ29zdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRNZXNzYWdlcy50b0xvY2FsZVN0cmluZygpfSBXZWJTb2NrZXQgbWVzc2FnZXMgcGVyIG1vbnRoYCxcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRDb25uZWN0aW9uTWludXRlcy50b0xvY2FsZVN0cmluZygpfSBjb25uZWN0aW9uIG1pbnV0ZXMgcGVyIG1vbnRoYCxcbiAgICAgICAgICAnV2ViU29ja2V0IEFQSSB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyIGNvc3RzJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQVdTIHJlZ2lvbiBwcmVmaXggZm9yIEFQSSBHYXRld2F5IHByaWNpbmcgdXNhZ2V0eXBlLlxuICAgKiBBV1MgdXNlcyByZWdpb24gcHJlZml4ZXMgaW4gdXNhZ2V0eXBlIHZhbHVlcyAoZS5nLiwgVVNFMS1BcGlHYXRld2F5UmVxdWVzdCkuXG4gICAqIFJlZmVyZW5jZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsb2JhbC1pbmZyYXN0cnVjdHVyZS9sYXRlc3QvcmVnaW9ucy9hd3MtcmVnaW9uLWJpbGxpbmctY29kZXMuaHRtbFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRSZWdpb25QcmVmaXgocmVnaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIC8vIFVTIFJlZ2lvbnNcbiAgICAgICd1cy1lYXN0LTEnOiAnVVNFMScsXG4gICAgICAndXMtZWFzdC0yJzogJ1VTRTInLFxuICAgICAgJ3VzLXdlc3QtMSc6ICdVU1cxJyxcbiAgICAgICd1cy13ZXN0LTInOiAnVVNXMicsXG4gICAgICAvLyBFVSBSZWdpb25zXG4gICAgICAnZXUtd2VzdC0xJzogJ0VVVzEnLFxuICAgICAgJ2V1LXdlc3QtMic6ICdFVVcyJyxcbiAgICAgICdldS13ZXN0LTMnOiAnRVVXMycsXG4gICAgICAnZXUtY2VudHJhbC0xJzogJ0VVQzEnLFxuICAgICAgJ2V1LWNlbnRyYWwtMic6ICdFVUMyJyxcbiAgICAgICdldS1ub3J0aC0xJzogJ0VVTjEnLFxuICAgICAgJ2V1LXNvdXRoLTEnOiAnRVVTMScsXG4gICAgICAnZXUtc291dGgtMic6ICdFVVMyJyxcbiAgICAgIC8vIEFzaWEgUGFjaWZpYyBSZWdpb25zXG4gICAgICAnYXAtc291dGgtMSc6ICdBUFMzJywgICAgICAgLy8gTXVtYmFpXG4gICAgICAnYXAtc291dGgtMic6ICdBUFM1JywgICAgICAgLy8gSHlkZXJhYmFkXG4gICAgICAnYXAtc291dGhlYXN0LTEnOiAnQVBTMScsICAgLy8gU2luZ2Fwb3JlXG4gICAgICAnYXAtc291dGhlYXN0LTInOiAnQVBTMicsICAgLy8gU3lkbmV5XG4gICAgICAnYXAtc291dGhlYXN0LTMnOiAnQVBTNicsICAgLy8gSmFrYXJ0YVxuICAgICAgJ2FwLXNvdXRoZWFzdC00JzogJ0FQUzcnLCAgIC8vIE1lbGJvdXJuZVxuICAgICAgJ2FwLW5vcnRoZWFzdC0xJzogJ0FQTjEnLCAgIC8vIFRva3lvXG4gICAgICAnYXAtbm9ydGhlYXN0LTInOiAnQVBOMicsICAgLy8gU2VvdWxcbiAgICAgICdhcC1ub3J0aGVhc3QtMyc6ICdBUE4zJywgICAvLyBPc2FrYVxuICAgICAgJ2FwLWVhc3QtMSc6ICdBUEUxJywgICAgICAgIC8vIEhvbmcgS29uZ1xuICAgICAgLy8gQ2FuYWRhIFJlZ2lvbnNcbiAgICAgICdjYS1jZW50cmFsLTEnOiAnQ0FOMScsXG4gICAgICAnY2Etd2VzdC0xJzogJ0NBVzEnLFxuICAgICAgLy8gU291dGggQW1lcmljYSBSZWdpb25zXG4gICAgICAnc2EtZWFzdC0xJzogJ1NBRTEnLFxuICAgICAgLy8gTWlkZGxlIEVhc3QgUmVnaW9uc1xuICAgICAgJ21lLXNvdXRoLTEnOiAnTUVTMScsXG4gICAgICAnbWUtY2VudHJhbC0xJzogJ01FQzEnLFxuICAgICAgLy8gQWZyaWNhIFJlZ2lvbnNcbiAgICAgICdhZi1zb3V0aC0xJzogJ0FGUzEnLFxuICAgICAgLy8gSXNyYWVsIFJlZ2lvbnNcbiAgICAgICdpbC1jZW50cmFsLTEnOiAnSUxDMScsXG4gICAgICAvLyBHb3ZDbG91ZCBSZWdpb25zXG4gICAgICAndXMtZ292LXdlc3QtMSc6ICdVR1cxJyxcbiAgICAgICd1cy1nb3YtZWFzdC0xJzogJ1VHRTEnLFxuICAgIH07XG5cbiAgICByZXR1cm4gcHJlZml4TWFwW3JlZ2lvbl0gfHwgJyc7XG4gIH1cbn1cbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVBJR2F0ZXdheUNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJpY2luZy9jYWxjdWxhdG9ycy9BUElHYXRld2F5Q2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxrREFBbUU7QUFFbkUsTUFBYSxvQkFBb0I7SUFDL0IsUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDBCQUEwQjtZQUMzQyxZQUFZLEtBQUssd0JBQXdCLENBQUM7SUFDbkQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUF1QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbEYsSUFBSSxZQUFZLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQ2hDLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyx3QkFBd0I7WUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFB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Q25GLG9CQUFvQjtvQkFDcEIsc0NBQXNDO2lCQUN2QzthQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxDQUFDLDRCQUE0QixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNwRyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpMRCxvREF5TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZVdpdGhJZCB9IGZyb20gJy4uLy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciwgTW9udGhseUNvc3QsIFByaWNpbmdDbGllbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVSZWdpb24sIGdldFJlZ2lvblByZWZpeCB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBBUElHYXRld2F5Q2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknIHx8XG4gICAgICAgICAgIHJlc291cmNlVHlwZSA9PT0gJ0FXUzo6QXBpR2F0ZXdheVYyOjpBcGknO1xuICB9XG5cbiAgYXN5bmMgY2FsY3VsYXRlQ29zdChcbiAgICByZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIGNvbnN0IGlzVjIgPSByZXNvdXJjZS50eXBlID09PSAnQVdTOjpBcGlHYXRld2F5VjI6OkFwaSc7XG4gICAgY29uc3QgcHJvdG9jb2xUeXBlID0gaXNWMiA/IChyZXNvdXJjZS5wcm9wZXJ0aWVzLlByb3RvY29sVHlwZSBhcyBzdHJpbmcpIDogJ1JFU1QnO1xuXG4gICAgaWYgKHByb3RvY29sVHlwZSA9PT0gJ1dFQlNPQ0tFVCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZVdlYlNvY2tldENvc3QocmVnaW9uLCBwcmljaW5nQ2xpZW50KTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sVHlwZSA9PT0gJ0hUVFAnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVIdHRwQXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVSZXN0QXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlUmVzdEFwaUNvc3QoXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3N1bWVkUmVxdWVzdHMgPSAxXzAwMF8wMDA7IC8vIDFNIHJlcXVlc3RzIHBlciBtb250aFxuICAgICAgY29uc3QgcmVnaW9uUHJlZml4ID0gZ2V0UmVnaW9uUHJlZml4KHJlZ2lvbik7XG4gICAgICBjb25zdCB1c2FnZVR5cGUgPSByZWdpb25QcmVmaXggPyBgJHtyZWdpb25QcmVmaXh9LUFwaUdhdGV3YXlSZXF1ZXN0YCA6ICdBcGlHYXRld2F5UmVxdWVzdCc7XG5cbiAgICAgIGNvbnN0IGNvc3RQZXJNaWxsaW9uID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uQXBpR2F0ZXdheScsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnQVBJIENhbGxzJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogdXNhZ2VUeXBlIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGNvc3RQZXJNaWxsaW9uID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFsnUHJpY2luZyBkYXRhIG5vdCBhdmFpbGFibGUgZm9yIEFQSSBHYXRld2F5IFJFU1QgQVBJJ10sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gKGFzc3VtZWRSZXF1ZXN0cyAvIDFfMDAwXzAwMCkgKiBjb3N0UGVyTWlsbGlvbjtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRSZXF1ZXN0cy50b0xvY2FsZVN0cmluZygpfSBSRVNUIEFQSSByZXF1ZXN0cyBwZXIgbW9udGhgLFxuICAgICAgICAgICdSRVNUIEFQSSB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyLCBjYWNoaW5nLCBvciBvdGhlciBmZWF0dXJlcycsXG4gICAgICAgICAgJ0ZpcnN0IDMzM00gcmVxdWVzdHMgbWF5IGhhdmUgdGllcmVkIHByaWNpbmcgKG5vdCBjYWxjdWxhdGVkKScsXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BGYWlsZWQgdG8gZmV0Y2ggcHJpY2luZzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlSHR0cEFwaUNvc3QoXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3N1bWVkUmVxdWVzdHMgPSAxXzAwMF8wMDA7IC8vIDFNIHJlcXVlc3RzIHBlciBtb250aFxuICAgICAgY29uc3QgcmVnaW9uUHJlZml4ID0gZ2V0UmVnaW9uUHJlZml4KHJlZ2lvbik7XG4gICAgICBjb25zdCB1c2FnZVR5cGUgPSByZWdpb25QcmVmaXggPyBgJHtyZWdpb25QcmVmaXh9LUFwaUdhdGV3YXlIdHRwUmVxdWVzdGAgOiAnQXBpR2F0ZXdheUh0dHBSZXF1ZXN0JztcblxuICAgICAgY29uc3QgY29zdFBlck1pbGxpb24gPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBbWF6b25BcGlHYXRld2F5JyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdBUEkgQ2FsbHMnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiB1c2FnZVR5cGUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY29zdFBlck1pbGxpb24gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogWydQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQVBJIEdhdGV3YXkgSFRUUCBBUEknXSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbW9udGhseUNvc3QgPSAoYXNzdW1lZFJlcXVlc3RzIC8gMV8wMDBfMDAwKSAqIGNvc3RQZXJNaWxsaW9uO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IG1vbnRobHlDb3N0LFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICdtZWRpdW0nLFxuICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgIGBBc3N1bWVzICR7YXNzdW1lZFJlcXVlc3RzLnRvTG9jYWxlU3RyaW5nKCl9IEhUVFAgQVBJIHJlcXVlc3RzIHBlciBtb250aGAsXG4gICAgICAgICAgJ0hUVFAgQVBJIHR5cGUnLFxuICAgICAgICAgICdEb2VzIG5vdCBpbmNsdWRlIGRhdGEgdHJhbnNmZXIgY29zdHMnLFxuICAgICAgICAgICdGaXJzdCAzMDBNIHJlcXVlc3RzIG1heSBoYXZlIHRpZXJlZCBwcmljaW5nIChub3QgY2FsY3VsYXRlZCknLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtgRmFpbGVkIHRvIGZldGNoIHByaWNpbmc6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGN1bGF0ZVdlYlNvY2tldENvc3QoXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3N1bWVkTWVzc2FnZXMgPSAxXzAwMF8wMDA7IC8vIDFNIG1lc3NhZ2VzIHBlciBtb250aFxuICAgICAgY29uc3QgYXNzdW1lZENvbm5lY3Rpb25NaW51dGVzID0gMTAwXzAwMDsgLy8gMTAwSyBjb25uZWN0aW9uIG1pbnV0ZXNcbiAgICAgIGNvbnN0IHJlZ2lvblByZWZpeCA9IGdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgY29uc3QgbWVzc2FnZVVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheU1lc3NhZ2VgIDogJ0FwaUdhdGV3YXlNZXNzYWdlJztcbiAgICAgIGNvbnN0IG1pbnV0ZVVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheU1pbnV0ZWAgOiAnQXBpR2F0ZXdheU1pbnV0ZSc7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VDb3N0UGVyTWlsbGlvbiA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ1dlYlNvY2tldCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IG1lc3NhZ2VVc2FnZVR5cGUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25uZWN0aW9uQ29zdFBlck1pbnV0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ1dlYlNvY2tldCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IG1pbnV0ZVVzYWdlVHlwZSB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZXNzYWdlQ29zdFBlck1pbGxpb24gPT09IG51bGwgfHwgY29ubmVjdGlvbkNvc3RQZXJNaW51dGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogWydQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQVBJIEdhdGV3YXkgV2ViU29ja2V0IEFQSSddLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlQ29zdCA9IChhc3N1bWVkTWVzc2FnZXMgLyAxXzAwMF8wMDApICogbWVzc2FnZUNvc3RQZXJNaWxsaW9uO1xuICAgICAgY29uc3QgY29ubmVjdGlvbkNvc3QgPSBhc3N1bWVkQ29ubmVjdGlvbk1pbnV0ZXMgKiBjb25uZWN0aW9uQ29zdFBlck1pbnV0ZTtcbiAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gbWVzc2FnZUNvc3QgKyBjb25uZWN0aW9uQ29zdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRNZXNzYWdlcy50b0xvY2FsZVN0cmluZygpfSBXZWJTb2NrZXQgbWVzc2FnZXMgcGVyIG1vbnRoYCxcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRDb25uZWN0aW9uTWludXRlcy50b0xvY2FsZVN0cmluZygpfSBjb25uZWN0aW9uIG1pbnV0ZXMgcGVyIG1vbnRoYCxcbiAgICAgICAgICAnV2ViU29ja2V0IEFQSSB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyIGNvc3RzJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -5,5 +5,4 @@ export declare class ECSCalculator implements ResourceCostCalculator {
5
5
  calculateCost(resource: ResourceWithId, region: string, pricingClient: PricingClient): Promise<MonthlyCost>;
6
6
  private calculateFargateCost;
7
7
  private calculateEC2Cost;
8
- private getRegionPrefix;
9
8
  }
@@ -29,7 +29,7 @@ class ECSCalculator {
29
29
  // Default assumptions for Fargate task
30
30
  const assumedVCpu = 0.25; // 0.25 vCPU
31
31
  const assumedMemoryGB = 0.5; // 0.5 GB
32
- const regionPrefix = this.getRegionPrefix(region);
32
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
33
33
  if (!regionPrefix) {
34
34
  return {
35
35
  amount: 0,
@@ -104,54 +104,6 @@ class ECSCalculator {
104
104
  ],
105
105
  };
106
106
  }
107
- getRegionPrefix(region) {
108
- // AWS uses region prefixes in usage types for ECS Fargate
109
- // Format: {PREFIX}-Fargate-vCPU-Hours:perCPU or {PREFIX}-Fargate-GB-Hours
110
- const prefixMap = {
111
- // US Regions
112
- 'us-east-1': 'USE1',
113
- 'us-east-2': 'USE2',
114
- 'us-west-1': 'USW1',
115
- 'us-west-2': 'USW2',
116
- // EU Regions
117
- 'eu-west-1': 'EUW1',
118
- 'eu-west-2': 'EUW2',
119
- 'eu-west-3': 'EUW3',
120
- 'eu-central-1': 'EUC1',
121
- 'eu-central-2': 'EUC2',
122
- 'eu-north-1': 'EUN1',
123
- 'eu-south-1': 'EUS1',
124
- 'eu-south-2': 'EUS2',
125
- // Asia Pacific Regions
126
- 'ap-south-1': 'APS1',
127
- 'ap-south-2': 'APS2',
128
- 'ap-southeast-1': 'APS3',
129
- 'ap-southeast-2': 'APS4',
130
- 'ap-southeast-3': 'APS5',
131
- 'ap-southeast-4': 'APS6',
132
- 'ap-northeast-1': 'APN1',
133
- 'ap-northeast-2': 'APN2',
134
- 'ap-northeast-3': 'APN3',
135
- 'ap-east-1': 'APE1',
136
- // Canada Regions
137
- 'ca-central-1': 'CAN1',
138
- 'ca-west-1': 'CAW1',
139
- // South America Regions
140
- 'sa-east-1': 'SAE1',
141
- // Middle East Regions
142
- 'me-south-1': 'MES1',
143
- 'me-central-1': 'MEC1',
144
- // Africa Regions
145
- 'af-south-1': 'AFS1',
146
- // Israel Regions
147
- 'il-central-1': 'ILC1',
148
- // Other Regions
149
- 'ap-southeast-5': 'APS7',
150
- 'us-gov-west-1': 'UGW1',
151
- 'us-gov-east-1': 'UGE1',
152
- };
153
- return prefixMap[region] || '';
154
- }
155
107
  }
156
108
  exports.ECSCalculator = ECSCalculator;
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRUNTQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcmljaW5nL2NhbGN1bGF0b3JzL0VDU0NhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQWtEO0FBRWxELE1BQWEsYUFBYTtJQUN4QixRQUFRLENBQUMsWUFBb0I7UUFDM0IsT0FBTyxZQUFZLEtBQUssbUJBQW1CLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixNQUFNLFlBQVksR0FBSSxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQXVCLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBcUIsSUFBSSxTQUFTLENBQUM7UUFFM0UsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbEYsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTztnQkFDTCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxRQUFRLEVBQUUsS0FBSztnQkFDZixVQUFVLEVBQUUsU0FBUztnQkFDckIsV0FBVyxFQUFFLENBQUMsNEJBQTRCLFVBQVUsRUFBRSxDQUFDO2FBQ3hELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxvQkFBb0IsQ0FDaEMsU0FBeUIsRUFDekIsWUFBb0IsRUFDcEIsTUFBYyxFQUNkLGFBQTRCO1FBRTVCLElBQUksQ0FBQztZQUNILHVDQUF1QztZQUN2QyxNQUFN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QUFlLEVBQUUsTUFBTTtZQUN2QixlQUFlLEVBQUUsTUFBTTtTQUN4QixDQUFDO1FBRUYsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQXhLRCxzQ0F3S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZVdpdGhJZCB9IGZyb20gJy4uLy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciwgTW9udGhseUNvc3QsIFByaWNpbmdDbGllbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVSZWdpb24gfSBmcm9tICcuLi9SZWdpb25NYXBwZXInO1xuXG5leHBvcnQgY2xhc3MgRUNTQ2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkVDUzo6U2VydmljZSc7XG4gIH1cblxuICBhc3luYyBjYWxjdWxhdGVDb3N0KFxuICAgIHJlc291cmNlOiBSZXNvdXJjZVdpdGhJZCxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50LFxuICApOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgY29uc3QgZGVzaXJlZENvdW50ID0gKHJlc291cmNlLnByb3BlcnRpZXMuRGVzaXJlZENvdW50IGFzIG51bWJlcikgfHwgMTtcbiAgICBjb25zdCBsYXVuY2hUeXBlID0gKHJlc291cmNlLnByb3BlcnRpZXMuTGF1bmNoVHlwZSBhcyBzdHJpbmcpIHx8ICdGQVJHQVRFJztcblxuICAgIGlmIChsYXVuY2hUeXBlID09PSAnRkFSR0FURScpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZUZhcmdhdGVDb3N0KHJlc291cmNlLCBkZXNpcmVkQ291bnQsIHJlZ2lvbiwgcHJpY2luZ0NsaWVudCk7XG4gICAgfSBlbHNlIGlmIChsYXVuY2hUeXBlID09PSAnRUMyJykge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRUMyQ29zdChkZXNpcmVkQ291bnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BVbnN1cHBvcnRlZCBsYXVuY2ggdHlwZTogJHtsYXVuY2hUeXBlfWBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGN1bGF0ZUZhcmdhdGVDb3N0KFxuICAgIF9yZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgZGVzaXJlZENvdW50OiBudW1iZXIsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBEZWZhdWx0IGFzc3VtcHRpb25zIGZvciBGYXJnYXRlIHRhc2tcbiAgICAgIGNvbnN0IGFzc3VtZWRWQ3B1ID0gMC4yNTsgLy8gMC4yNSB2Q1BVXG4gICAgICBjb25zdCBhc3N1bWVkTWVtb3J5R0IgPSAwLjU7IC8vIDAuNSBHQlxuXG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSB0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgaWYgKCFyZWdpb25QcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgICAgYFJlZ2lvbiBwcmVmaXggbm90IGZvdW5kIGZvciAke3JlZ2lvbn1gLFxuICAgICAgICAgICAgJ1VuYWJsZSB0byBxdWVyeSBGYXJnYXRlIHByaWNpbmcnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZDcHVDb3N0UGVySG91ciA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkVDUycsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnQ29tcHV0ZScgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH0tRmFyZ2F0ZS12Q1BVLUhvdXJzOnBlckNQVWAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBtZW1vcnlDb3N0UGVySG91ciA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkVDUycsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH0tRmFyZ2F0ZS1HQi1Ib3Vyc2AgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodkNwdUNvc3RQZXJIb3VyID09PSBudWxsIHx8IG1lbW9yeUNvc3RQZXJIb3VyID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFsnUHJpY2luZyBkYXRhIG5vdCBhdmFpbGFibGUgZm9yIEVDUyBGYXJnYXRlJ10sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhvdXJzUGVyTW9udGggPSA3MzA7XG4gICAgICBjb25zdCB2Q3B1Q29zdCA9IGFzc3VtZWRWQ3B1ICogdkNwdUNvc3RQZXJIb3VyICogaG91cnNQZXJNb250aCAqIGRlc2lyZWRDb3VudDtcbiAgICAgIGNvbnN0IG1lbW9yeUNvc3QgPSBhc3N1bWVkTWVtb3J5R0IgKiBtZW1vcnlDb3N0UGVySG91ciAqIGhvdXJzUGVyTW9udGggKiBkZXNpcmVkQ291bnQ7XG4gICAgICBjb25zdCBtb250aGx5Q29zdCA9IHZDcHVDb3N0ICsgbWVtb3J5Q29zdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgJHtkZXNpcmVkQ291bnR9IHRhc2socykgcnVubmluZ2AsXG4gICAgICAgICAgYEFzc3VtZXMgJHthc3N1bWVkVkNwdX0gdkNQVSBwZXIgdGFza2AsXG4gICAgICAgICAgYEFzc3VtZXMgJHthc3N1bWVkTWVtb3J5R0J9IEdCIG1lbW9yeSBwZXIgdGFza2AsXG4gICAgICAgICAgYEFzc3VtZXMgJHtob3Vyc1Blck1vbnRofSBob3VycyBwZXIgbW9udGggKDI0Lzcgb3BlcmF0aW9uKWAsXG4gICAgICAgICAgJ0ZhcmdhdGUgbGF1bmNoIHR5cGUnLFxuICAgICAgICAgICdEb2VzIG5vdCBpbmNsdWRlIGRhdGEgdHJhbnNmZXIgb3Igc3RvcmFnZSBjb3N0cycsXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BGYWlsZWQgdG8gZmV0Y2ggcHJpY2luZzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlRUMyQ29zdChkZXNpcmVkQ291bnQ6IG51bWJlcik6IE1vbnRobHlDb3N0IHtcbiAgICByZXR1cm4ge1xuICAgICAgYW1vdW50OiAwLFxuICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgY29uZmlkZW5jZTogJ2xvdycsXG4gICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICBgJHtkZXNpcmVkQ291bnR9IHRhc2socykgcnVubmluZyBvbiBFQzIgbGF1bmNoIHR5cGVgLFxuICAgICAgICAnRUMyIGxhdW5jaCB0eXBlIGNvc3RzIGRlcGVuZCBvbiB1bmRlcmx5aW5nIEVDMiBpbnN0YW5jZXMnLFxuICAgICAgICAnUmVmZXIgdG8gRUMyIGluc3RhbmNlIGNvc3RzIGZvciBhY3R1YWwgcHJpY2luZycsXG4gICAgICAgICdEb2VzIG5vdCBpbmNsdWRlIEVDUyB0YXNrLXNwZWNpZmljIGNvc3RzIChtaW5pbWFsIGZvciBFQzIgbGF1bmNoIHR5cGUpJyxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVnaW9uUHJlZml4KHJlZ2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBBV1MgdXNlcyByZWdpb24gcHJlZml4ZXMgaW4gdXNhZ2UgdHlwZXMgZm9yIEVDUyBGYXJnYXRlXG4gICAgLy8gRm9ybWF0OiB7UFJFRklYfS1GYXJnYXRlLXZDUFUtSG91cnM6cGVyQ1BVIG9yIHtQUkVGSVh9LUZhcmdhdGUtR0ItSG91cnNcbiAgICBjb25zdCBwcmVmaXhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAvLyBVUyBSZWdpb25zXG4gICAgICAndXMtZWFzdC0xJzogJ1VTRTEnLFxuICAgICAgJ3VzLWVhc3QtMic6ICdVU0UyJyxcbiAgICAgICd1cy13ZXN0LTEnOiAnVVNXMScsXG4gICAgICAndXMtd2VzdC0yJzogJ1VTVzInLFxuICAgICAgLy8gRVUgUmVnaW9uc1xuICAgICAgJ2V1LXdlc3QtMSc6ICdFVVcxJyxcbiAgICAgICdldS13ZXN0LTInOiAnRVVXMicsXG4gICAgICAnZXUtd2VzdC0zJzogJ0VVVzMnLFxuICAgICAgJ2V1LWNlbnRyYWwtMSc6ICdFVUMxJyxcbiAgICAgICdldS1jZW50cmFsLTInOiAnRVVDMicsXG4gICAgICAnZXUtbm9ydGgtMSc6ICdFVU4xJyxcbiAgICAgICdldS1zb3V0aC0xJzogJ0VVUzEnLFxuICAgICAgJ2V1LXNvdXRoLTInOiAnRVVTMicsXG4gICAgICAvLyBBc2lhIFBhY2lmaWMgUmVnaW9uc1xuICAgICAgJ2FwLXNvdXRoLTEnOiAnQVBTMScsXG4gICAgICAnYXAtc291dGgtMic6ICdBUFMyJyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMSc6ICdBUFMzJyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMic6ICdBUFM0JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMyc6ICdBUFM1JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtNCc6ICdBUFM2JyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMSc6ICdBUE4xJyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMic6ICdBUE4yJyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMyc6ICdBUE4zJyxcbiAgICAgICdhcC1lYXN0LTEnOiAnQVBFMScsXG4gICAgICAvLyBDYW5hZGEgUmVnaW9uc1xuICAgICAgJ2NhLWNlbnRyYWwtMSc6ICdDQU4xJyxcbiAgICAgICdjYS13ZXN0LTEnOiAnQ0FXMScsXG4gICAgICAvLyBTb3V0aCBBbWVyaWNhIFJlZ2lvbnNcbiAgICAgICdzYS1lYXN0LTEnOiAnU0FFMScsXG4gICAgICAvLyBNaWRkbGUgRWFzdCBSZWdpb25zXG4gICAgICAnbWUtc291dGgtMSc6ICdNRVMxJyxcbiAgICAgICdtZS1jZW50cmFsLTEnOiAnTUVDMScsXG4gICAgICAvLyBBZnJpY2EgUmVnaW9uc1xuICAgICAgJ2FmLXNvdXRoLTEnOiAnQUZTMScsXG4gICAgICAvLyBJc3JhZWwgUmVnaW9uc1xuICAgICAgJ2lsLWNlbnRyYWwtMSc6ICdJTEMxJyxcbiAgICAgIC8vIE90aGVyIFJlZ2lvbnNcbiAgICAgICdhcC1zb3V0aGVhc3QtNSc6ICdBUFM3JyxcbiAgICAgICd1cy1nb3Ytd2VzdC0xJzogJ1VHVzEnLFxuICAgICAgJ3VzLWdvdi1lYXN0LTEnOiAnVUdFMScsXG4gICAgfTtcblxuICAgIHJldHVybiBwcmVmaXhNYXBbcmVnaW9uXSB8fCAnJztcbiAgfVxufVxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRUNTQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcmljaW5nL2NhbGN1bGF0b3JzL0VDU0NhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQW1FO0FBRW5FLE1BQWEsYUFBYTtJQUN4QixRQUFRLENBQUMsWUFBb0I7UUFDM0IsT0FBTyxZQUFZLEtBQUssbUJBQW1CLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixNQUFNLFlBQVksR0FBSSxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQXVCLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBcUIsSUFBSSxTQUFTLENBQUM7UUFFM0UsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbEYsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTztnQkFDTCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxRQUFRLEVBQUUsS0FBSztnQkFDZixVQUFVLEVBQUUsU0FBUztnQkFDckIsV0FBVyxFQUFFLENBQUMsNEJBQTRCLFVBQVUsRUFBRSxDQUFDO2FBQ3hELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxvQkFBb0IsQ0FDaEMsU0FBeUIsRUFDekIsWUFBb0IsRUFDcEIsTUFBYyxFQUNkLGFBQTRCO1FBRTVCLElBQUksQ0FBQztZQUNILHVDQUF1QztZQUN2QyxNQUFN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cEQsMERBQTBEO2dCQUMxRCxnREFBZ0Q7Z0JBQ2hELHdFQUF3RTthQUN6RTtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0SEQsc0NBc0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2VXaXRoSWQgfSBmcm9tICcuLi8uLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IFJlc291cmNlQ29zdENhbGN1bGF0b3IsIE1vbnRobHlDb3N0LCBQcmljaW5nQ2xpZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUmVnaW9uLCBnZXRSZWdpb25QcmVmaXggfSBmcm9tICcuLi9SZWdpb25NYXBwZXInO1xuXG5leHBvcnQgY2xhc3MgRUNTQ2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkVDUzo6U2VydmljZSc7XG4gIH1cblxuICBhc3luYyBjYWxjdWxhdGVDb3N0KFxuICAgIHJlc291cmNlOiBSZXNvdXJjZVdpdGhJZCxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50LFxuICApOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgY29uc3QgZGVzaXJlZENvdW50ID0gKHJlc291cmNlLnByb3BlcnRpZXMuRGVzaXJlZENvdW50IGFzIG51bWJlcikgfHwgMTtcbiAgICBjb25zdCBsYXVuY2hUeXBlID0gKHJlc291cmNlLnByb3BlcnRpZXMuTGF1bmNoVHlwZSBhcyBzdHJpbmcpIHx8ICdGQVJHQVRFJztcblxuICAgIGlmIChsYXVuY2hUeXBlID09PSAnRkFSR0FURScpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZUZhcmdhdGVDb3N0KHJlc291cmNlLCBkZXNpcmVkQ291bnQsIHJlZ2lvbiwgcHJpY2luZ0NsaWVudCk7XG4gICAgfSBlbHNlIGlmIChsYXVuY2hUeXBlID09PSAnRUMyJykge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRUMyQ29zdChkZXNpcmVkQ291bnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BVbnN1cHBvcnRlZCBsYXVuY2ggdHlwZTogJHtsYXVuY2hUeXBlfWBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGN1bGF0ZUZhcmdhdGVDb3N0KFxuICAgIF9yZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgZGVzaXJlZENvdW50OiBudW1iZXIsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBEZWZhdWx0IGFzc3VtcHRpb25zIGZvciBGYXJnYXRlIHRhc2tcbiAgICAgIGNvbnN0IGFzc3VtZWRWQ3B1ID0gMC4yNTsgLy8gMC4yNSB2Q1BVXG4gICAgICBjb25zdCBhc3N1bWVkTWVtb3J5R0IgPSAwLjU7IC8vIDAuNSBHQlxuXG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSBnZXRSZWdpb25QcmVmaXgocmVnaW9uKTtcbiAgICAgIGlmICghcmVnaW9uUHJlZml4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAgIGBSZWdpb24gcHJlZml4IG5vdCBmb3VuZCBmb3IgJHtyZWdpb259YCxcbiAgICAgICAgICAgICdVbmFibGUgdG8gcXVlcnkgRmFyZ2F0ZSBwcmljaW5nJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2Q3B1Q29zdFBlckhvdXIgPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBbWF6b25FQ1MnLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ0NvbXB1dGUnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiBgJHtyZWdpb25QcmVmaXh9LUZhcmdhdGUtdkNQVS1Ib3VyczpwZXJDUFVgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbWVtb3J5Q29zdFBlckhvdXIgPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBbWF6b25FQ1MnLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiBgJHtyZWdpb25QcmVmaXh9LUZhcmdhdGUtR0ItSG91cnNgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHZDcHVDb3N0UGVySG91ciA9PT0gbnVsbCB8fCBtZW1vcnlDb3N0UGVySG91ciA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICAgIGFzc3VtcHRpb25zOiBbJ1ByaWNpbmcgZGF0YSBub3QgYXZhaWxhYmxlIGZvciBFQ1MgRmFyZ2F0ZSddLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBob3Vyc1Blck1vbnRoID0gNzMwO1xuICAgICAgY29uc3QgdkNwdUNvc3QgPSBhc3N1bWVkVkNwdSAqIHZDcHVDb3N0UGVySG91ciAqIGhvdXJzUGVyTW9udGggKiBkZXNpcmVkQ291bnQ7XG4gICAgICBjb25zdCBtZW1vcnlDb3N0ID0gYXNzdW1lZE1lbW9yeUdCICogbWVtb3J5Q29zdFBlckhvdXIgKiBob3Vyc1Blck1vbnRoICogZGVzaXJlZENvdW50O1xuICAgICAgY29uc3QgbW9udGhseUNvc3QgPSB2Q3B1Q29zdCArIG1lbW9yeUNvc3Q7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogbW9udGhseUNvc3QsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ21lZGl1bScsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgYCR7ZGVzaXJlZENvdW50fSB0YXNrKHMpIHJ1bm5pbmdgLFxuICAgICAgICAgIGBBc3N1bWVzICR7YXNzdW1lZFZDcHV9IHZDUFUgcGVyIHRhc2tgLFxuICAgICAgICAgIGBBc3N1bWVzICR7YXNzdW1lZE1lbW9yeUdCfSBHQiBtZW1vcnkgcGVyIHRhc2tgLFxuICAgICAgICAgIGBBc3N1bWVzICR7aG91cnNQZXJNb250aH0gaG91cnMgcGVyIG1vbnRoICgyNC83IG9wZXJhdGlvbilgLFxuICAgICAgICAgICdGYXJnYXRlIGxhdW5jaCB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyIG9yIHN0b3JhZ2UgY29zdHMnLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtgRmFpbGVkIHRvIGZldGNoIHByaWNpbmc6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUVDMkNvc3QoZGVzaXJlZENvdW50OiBudW1iZXIpOiBNb250aGx5Q29zdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFtb3VudDogMCxcbiAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgIGNvbmZpZGVuY2U6ICdsb3cnLFxuICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgYCR7ZGVzaXJlZENvdW50fSB0YXNrKHMpIHJ1bm5pbmcgb24gRUMyIGxhdW5jaCB0eXBlYCxcbiAgICAgICAgJ0VDMiBsYXVuY2ggdHlwZSBjb3N0cyBkZXBlbmQgb24gdW5kZXJseWluZyBFQzIgaW5zdGFuY2VzJyxcbiAgICAgICAgJ1JlZmVyIHRvIEVDMiBpbnN0YW5jZSBjb3N0cyBmb3IgYWN0dWFsIHByaWNpbmcnLFxuICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBFQ1MgdGFzay1zcGVjaWZpYyBjb3N0cyAobWluaW1hbCBmb3IgRUMyIGxhdW5jaCB0eXBlKScsXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -12,5 +12,4 @@ export declare class NLBCalculator implements ResourceCostCalculator {
12
12
  supports(resourceType: string): boolean;
13
13
  canCalculate(resource: ResourceWithId): boolean;
14
14
  calculateCost(resource: ResourceWithId, region: string, pricingClient: PricingClient): Promise<MonthlyCost>;
15
- private getRegionPrefix;
16
15
  }
@@ -35,13 +35,14 @@ class NLBCalculator {
35
35
  };
36
36
  }
37
37
  try {
38
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
38
39
  // Get hourly rate
39
40
  const hourlyRate = await pricingClient.getPrice({
40
41
  serviceCode: 'AWSELB',
41
42
  region: (0, RegionMapper_1.normalizeRegion)(region),
42
43
  filters: [
43
44
  { field: 'productFamily', value: 'Load Balancer-Network' },
44
- { field: 'usagetype', value: `${this.getRegionPrefix(region)}-LoadBalancerUsage` },
45
+ { field: 'usagetype', value: `${regionPrefix}-LoadBalancerUsage` },
45
46
  ],
46
47
  });
47
48
  // Get NLCU rate
@@ -50,7 +51,7 @@ class NLBCalculator {
50
51
  region: (0, RegionMapper_1.normalizeRegion)(region),
51
52
  filters: [
52
53
  { field: 'productFamily', value: 'Load Balancer-Network' },
53
- { field: 'usagetype', value: `${this.getRegionPrefix(region)}-LCUUsage` },
54
+ { field: 'usagetype', value: `${regionPrefix}-LCUUsage` },
54
55
  ],
55
56
  });
56
57
  if (hourlyRate === null || nlcuRate === null) {
@@ -101,25 +102,6 @@ class NLBCalculator {
101
102
  };
102
103
  }
103
104
  }
104
- getRegionPrefix(region) {
105
- const prefixMap = {
106
- 'us-east-1': 'USE1',
107
- 'us-east-2': 'USE2',
108
- 'us-west-1': 'USW1',
109
- 'us-west-2': 'USW2',
110
- 'eu-west-1': 'EUW1',
111
- 'eu-west-2': 'EUW2',
112
- 'eu-west-3': 'EUW3',
113
- 'eu-central-1': 'EUC1',
114
- 'eu-north-1': 'EUN1',
115
- 'ap-south-1': 'APS1',
116
- 'ap-southeast-1': 'APS2',
117
- 'ap-southeast-2': 'APS3',
118
- 'ap-northeast-1': 'APN1',
119
- 'ap-northeast-2': 'APN2',
120
- };
121
- return prefixMap[region] || '';
122
- }
123
105
  }
124
106
  exports.NLBCalculator = NLBCalculator;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkxCQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcmljaW5nL2NhbGN1bGF0b3JzL05MQkNhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQWtEO0FBRWxELE1BQWEsYUFBYTtJQU9kO0lBQ0E7SUFDQTtJQVJPLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztJQUN4QyxxQ0FBcUMsR0FBRyxJQUFJLENBQUM7SUFDN0MsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFFdkMsWUFDVSw2QkFBc0MsRUFDdEMsZ0NBQXlDLEVBQ3pDLHNCQUErQjtRQUYvQixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQVM7UUFDdEMscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFTO1FBQ3pDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztJQUN0QyxDQUFDO0lBRUosUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDJDQUEyQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBd0I7UUFDbkMscUNBQXFDO1FBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLENBQUM7SUFDeEUsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QiwyQ0FBMkM7UUFDM0MsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztRQUNuRCxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZELE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxF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QUUsTUFBTTtZQUNwQixnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxNQUFNO1NBQ3pCLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBNUlELHNDQTRJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlV2l0aElkIH0gZnJvbSAnLi4vLi4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yLCBNb250aGx5Q29zdCwgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVJlZ2lvbiB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBOTEJDYWxjdWxhdG9yIGltcGxlbWVudHMgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9ORVdfQ09OTkVDVElPTlNfUEVSX1NFQ09ORCA9IDI1O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQUNUSVZFX0NPTk5FQ1RJT05TX1BFUl9NSU5VVEUgPSAzMDAwO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfUFJPQ0VTU0VEX0JZVEVTX0dCID0gMTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IEhPVVJTX1BFUl9NT05USCA9IDczMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGN1c3RvbU5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kPzogbnVtYmVyLFxuICAgIHByaXZhdGUgY3VzdG9tQWN0aXZlQ29ubmVjdGlvbnNQZXJNaW51dGU/OiBudW1iZXIsXG4gICAgcHJpdmF0ZSBjdXN0b21Qcm9jZXNzZWRCeXRlc0dCPzogbnVtYmVyLFxuICApIHt9XG5cbiAgc3VwcG9ydHMocmVzb3VyY2VUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVzb3VyY2VUeXBlID09PSAnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXInO1xuICB9XG5cbiAgY2FuQ2FsY3VsYXRlKHJlc291cmNlOiBSZXNvdXJjZVdpdGhJZCk6IGJvb2xlYW4ge1xuICAgIC8vIE9ubHkgaGFuZGxlIE5ldHdvcmsgTG9hZCBCYWxhbmNlcnNcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJUeXBlID0gcmVzb3VyY2UucHJvcGVydGllcz8uVHlwZTtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3J0cyhyZXNvdXJjZS50eXBlKSAmJiBsb2FkQmFsYW5jZXJUeXBlID09PSAnbmV0d29yayc7XG4gIH1cblxuICBhc3luYyBjYWxjdWxhdGVDb3N0KFxuICAgIHJlc291cmNlOiBSZXNvdXJjZVdpdGhJZCxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50LFxuICApOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIE5ldHdvcmsgTG9hZCBCYWxhbmNlclxuICAgIGNvbnN0IGxvYWRCYWxhbmNlclR5cGUgPSByZXNvdXJjZS5wcm9wZXJ0aWVzPy5UeXBlO1xuICAgIGlmIChsb2FkQmFsYW5jZXJUeXBlICYmIGxvYWRCYWxhbmNlclR5cGUgIT09ICduZXR3b3JrJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFsnVGhpcyBjYWxjdWxhdG9yIG9ubHkgc3VwcG9ydHMgTmV0d29yayBMb2FkIEJhbGFuY2VycyddLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gR2V0IGhvdXJseSByYXRlXG4gICAgICBjb25zdCBob3VybHlSYXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQVdTRUxCJyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdMb2FkIEJhbGFuY2VyLU5ldHdvcmsnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiBgJHt0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pfS1Mb2FkQmFsYW5jZXJVc2FnZWAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgTkxDVSByYXRlXG4gICAgICBjb25zdCBubGN1UmF0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FXU0VMQicsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnTG9hZCBCYWxhbmNlci1OZXR3b3JrJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogYCR7dGhpcy5nZXRSZWdpb25QcmVmaXgocmVnaW9uKX0tTENVVXNhZ2VgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGhvdXJseVJhdGUgPT09IG51bGwgfHwgbmxjdVJhdGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgICAgYFByaWNpbmcgZGF0YSBub3QgYXZhaWxhYmxlIGZvciBOZXR3b3JrIExvYWQgQmFsYW5jZXIgaW4gcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQgPVxuICAgICAgICB0aGlzLmN1c3RvbU5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kIHx8IHRoaXMuREVGQVVMVF9ORVdfQ09OTkVDVElPTlNfUEVSX1NFQ09ORDtcbiAgICAgIGNvbnN0IGFjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlID1cbiAgICAgICAgdGhpcy5jdXN0b21BY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSB8fCB0aGlzLkRFRkFVTFRfQUNUSVZFX0NPTk5FQ1RJT05TX1BFUl9NSU5VVEU7XG4gICAgICBjb25zdCBwcm9jZXNzZWRCeXRlc0dCID1cbiAgICAgICAgdGhpcy5jdXN0b21Qcm9jZXNzZWRCeXRlc0dCIHx8IHRoaXMuREVGQVVMVF9QUk9DRVNTRURfQllURVNfR0I7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBOTENVIGNvbnN1bXB0aW9uXG4gICAgICAvLyAxIE5MQ1UgcHJvdmlkZXM6IDgwMCBuZXcgY29ubmVjdGlvbnMvc2VjLCAxMDAsMDAwIGFjdGl2ZSBjb25uZWN0aW9ucy9taW4sIDEgR0IgcHJvY2Vzc2VkL2hvdXJcbiAgICAgIGNvbnN0IG5sY3VGcm9tTmV3Q29ubmVjdGlvbnMgPSBuZXdDb25uZWN0aW9uc1BlclNlY29uZCAvIDgwMDtcbiAgICAgIGNvbnN0IG5sY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMgPSBhY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSAvIDEwMDAwMDtcbiAgICAgIGNvbnN0IGdiUGVySG91ciA9IHByb2Nlc3NlZEJ5dGVzR0IgLyB0aGlzLkhPVVJTX1BFUl9NT05USDtcbiAgICAgIGNvbnN0IG5sY3VGcm9tUHJvY2Vzc2VkQnl0ZXMgPSBnYlBlckhvdXI7XG5cbiAgICAgIC8vIFVzZSB0aGUgaGlnaGVzdCBOTENVIGNvbnN1bXB0aW9uXG4gICAgICBjb25zdCBubGN1UGVySG91ciA9IE1hdGgubWF4KFxuICAgICAgICBubGN1RnJvbU5ld0Nvbm5lY3Rpb25zLFxuICAgICAgICBubGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zLFxuICAgICAgICBubGN1RnJvbVByb2Nlc3NlZEJ5dGVzLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaG91cmx5Q29zdCA9IGhvdXJseVJhdGUgKiB0aGlzLkhPVVJTX1BFUl9NT05USDtcbiAgICAgIGNvbnN0IG5sY3VDb3N0ID0gbmxjdVJhdGUgKiBubGN1UGVySG91ciAqIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgdG90YWxDb3N0ID0gaG91cmx5Q29zdCArIG5sY3VDb3N0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IHRvdGFsQ29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgSG91cmx5IHJhdGU6ICQke2hvdXJseVJhdGUudG9GaXhlZCg0KX0vaG91ciDDlyAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyA9ICQke2hvdXJseUNvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBOTENVIGNvbnN1bXB0aW9uOiAke25sY3VQZXJIb3VyLnRvRml4ZWQoMil9IE5MQ1UvaG91ciBiYXNlZCBvbjpgLFxuICAgICAgICAgIGAgIC0gTmV3IGNvbm5lY3Rpb25zOiAke25ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kfS9zZWMg4oaSICR7bmxjdUZyb21OZXdDb25uZWN0aW9ucy50b0ZpeGVkKDIpfSBOTENVYCxcbiAgICAgICAgICBgICAtIEFjdGl2ZSBjb25uZWN0aW9uczogJHthY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZX0vbWluIOKGkiAke25sY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMudG9GaXhlZCgyKX0gTkxDVWAsXG4gICAgICAgICAgYCAgLSBQcm9jZXNzZWQgZGF0YTogJHtwcm9jZXNzZWRCeXRlc0dCfSBHQi9tb250aCDihpIgJHtubGN1RnJvbVByb2Nlc3NlZEJ5dGVzLnRvRml4ZWQoMil9IE5MQ1VgLFxuICAgICAgICAgIGBOTENVIGNvc3Q6ICQke25sY3VSYXRlLnRvRml4ZWQoNCl9L05MQ1UvaG91ciDDlyAke25sY3VQZXJIb3VyLnRvRml4ZWQoMil9IE5MQ1Ugw5cgJHt0aGlzLkhPVVJTX1BFUl9NT05USH0gaG91cnMgPSAkJHtubGN1Q29zdC50b0ZpeGVkKDIpfS9tb250aGAsXG4gICAgICAgICAgYFRvdGFsOiAkJHt0b3RhbENvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtgRmFpbGVkIHRvIGZldGNoIHByaWNpbmc6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgZ2V0UmVnaW9uUHJlZml4KHJlZ2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAndXMtZWFzdC0xJzogJ1VTRTEnLFxuICAgICAgJ3VzLWVhc3QtMic6ICdVU0UyJyxcbiAgICAgICd1cy13ZXN0LTEnOiAnVVNXMScsXG4gICAgICAndXMtd2VzdC0yJzogJ1VTVzInLFxuICAgICAgJ2V1LXdlc3QtMSc6ICdFVVcxJyxcbiAgICAgICdldS13ZXN0LTInOiAnRVVXMicsXG4gICAgICAnZXUtd2VzdC0zJzogJ0VVVzMnLFxuICAgICAgJ2V1LWNlbnRyYWwtMSc6ICdFVUMxJyxcbiAgICAgICdldS1ub3J0aC0xJzogJ0VVTjEnLFxuICAgICAgJ2FwLXNvdXRoLTEnOiAnQVBTMScsXG4gICAgICAnYXAtc291dGhlYXN0LTEnOiAnQVBTMicsXG4gICAgICAnYXAtc291dGhlYXN0LTInOiAnQVBTMycsXG4gICAgICAnYXAtbm9ydGhlYXN0LTEnOiAnQVBOMScsXG4gICAgICAnYXAtbm9ydGhlYXN0LTInOiAnQVBOMicsXG4gICAgfTtcblxuICAgIHJldHVybiBwcmVmaXhNYXBbcmVnaW9uXSB8fCAnJztcbiAgfVxufVxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkxCQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcmljaW5nL2NhbGN1bGF0b3JzL05MQkNhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQW1FO0FBRW5FLE1BQWEsYUFBYTtJQU9kO0lBQ0E7SUFDQTtJQVJPLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztJQUN4QyxxQ0FBcUMsR0FBRyxJQUFJLENBQUM7SUFDN0MsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFFdkMsWUFDVSw2QkFBc0MsRUFDdEMsZ0NBQXlDLEVBQ3pDLHNCQUErQjtRQUYvQixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQVM7UUFDdEMscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFTO1FBQ3pDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztJQUN0QyxDQUFDO0lBRUosUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDJDQUEyQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBd0I7UUFDbkMscUNBQXFDO1FBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLENBQUM7SUFDeEUsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QiwyQ0FBMkM7UUFDM0MsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztRQUNuRCxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZELE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxF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LHNCQUFzQjtvQkFDakUsd0JBQXdCLHVCQUF1QixVQUFVLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFDakcsMkJBQTJCLDBCQUEwQixVQUFVLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFDMUcsdUJBQXVCLGdCQUFnQixlQUFlLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFDOUYsZUFBZSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSxhQUFhLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVE7b0JBQy9JLFdBQVcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUTtpQkFDeEM7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2dCQUNULFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixXQUFXLEVBQUUsQ0FBQyw0QkFBNEIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDcEcsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF4SEQsc0NBd0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2VXaXRoSWQgfSBmcm9tICcuLi8uLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IFJlc291cmNlQ29zdENhbGN1bGF0b3IsIE1vbnRobHlDb3N0LCBQcmljaW5nQ2xpZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUmVnaW9uLCBnZXRSZWdpb25QcmVmaXggfSBmcm9tICcuLi9SZWdpb25NYXBwZXInO1xuXG5leHBvcnQgY2xhc3MgTkxCQ2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTkVXX0NPTk5FQ1RJT05TX1BFUl9TRUNPTkQgPSAyNTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FDVElWRV9DT05ORUNUSU9OU19QRVJfTUlOVVRFID0gMzAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1BST0NFU1NFRF9CWVRFU19HQiA9IDEwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBIT1VSU19QRVJfTU9OVEggPSA3MzA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjdXN0b21OZXdDb25uZWN0aW9uc1BlclNlY29uZD86IG51bWJlcixcbiAgICBwcml2YXRlIGN1c3RvbUFjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlPzogbnVtYmVyLFxuICAgIHByaXZhdGUgY3VzdG9tUHJvY2Vzc2VkQnl0ZXNHQj86IG51bWJlcixcbiAgKSB7fVxuXG4gIHN1cHBvcnRzKHJlc291cmNlVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc291cmNlVHlwZSA9PT0gJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TG9hZEJhbGFuY2VyJztcbiAgfVxuXG4gIGNhbkNhbGN1bGF0ZShyZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQpOiBib29sZWFuIHtcbiAgICAvLyBPbmx5IGhhbmRsZSBOZXR3b3JrIExvYWQgQmFsYW5jZXJzXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyVHlwZSA9IHJlc291cmNlLnByb3BlcnRpZXM/LlR5cGU7XG4gICAgcmV0dXJuIHRoaXMuc3VwcG9ydHMocmVzb3VyY2UudHlwZSkgJiYgbG9hZEJhbGFuY2VyVHlwZSA9PT0gJ25ldHdvcmsnO1xuICB9XG5cbiAgYXN5bmMgY2FsY3VsYXRlQ29zdChcbiAgICByZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBOZXR3b3JrIExvYWQgQmFsYW5jZXJcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJUeXBlID0gcmVzb3VyY2UucHJvcGVydGllcz8uVHlwZTtcbiAgICBpZiAobG9hZEJhbGFuY2VyVHlwZSAmJiBsb2FkQmFsYW5jZXJUeXBlICE9PSAnbmV0d29yaycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbJ1RoaXMgY2FsY3VsYXRvciBvbmx5IHN1cHBvcnRzIE5ldHdvcmsgTG9hZCBCYWxhbmNlcnMnXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlZ2lvblByZWZpeCA9IGdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgXG4gICAgICAvLyBHZXQgaG91cmx5IHJhdGVcbiAgICAgIGNvbnN0IGhvdXJseVJhdGUgPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBV1NFTEInLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ0xvYWQgQmFsYW5jZXItTmV0d29yaycgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH0tTG9hZEJhbGFuY2VyVXNhZ2VgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgLy8gR2V0IE5MQ1UgcmF0ZVxuICAgICAgY29uc3QgbmxjdVJhdGUgPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBV1NFTEInLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ0xvYWQgQmFsYW5jZXItTmV0d29yaycgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH0tTENVVXNhZ2VgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGhvdXJseVJhdGUgPT09IG51bGwgfHwgbmxjdVJhdGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgICAgYFByaWNpbmcgZGF0YSBub3QgYXZhaWxhYmxlIGZvciBOZXR3b3JrIExvYWQgQmFsYW5jZXIgaW4gcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Q29ubmVjdGlvbnNQZXJTZWNvbmQgPVxuICAgICAgICB0aGlzLmN1c3RvbU5ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kIHx8IHRoaXMuREVGQVVMVF9ORVdfQ09OTkVDVElPTlNfUEVSX1NFQ09ORDtcbiAgICAgIGNvbnN0IGFjdGl2ZUNvbm5lY3Rpb25zUGVyTWludXRlID1cbiAgICAgICAgdGhpcy5jdXN0b21BY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSB8fCB0aGlzLkRFRkFVTFRfQUNUSVZFX0NPTk5FQ1RJT05TX1BFUl9NSU5VVEU7XG4gICAgICBjb25zdCBwcm9jZXNzZWRCeXRlc0dCID1cbiAgICAgICAgdGhpcy5jdXN0b21Qcm9jZXNzZWRCeXRlc0dCIHx8IHRoaXMuREVGQVVMVF9QUk9DRVNTRURfQllURVNfR0I7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBOTENVIGNvbnN1bXB0aW9uXG4gICAgICAvLyAxIE5MQ1UgcHJvdmlkZXM6IDgwMCBuZXcgY29ubmVjdGlvbnMvc2VjLCAxMDAsMDAwIGFjdGl2ZSBjb25uZWN0aW9ucy9taW4sIDEgR0IgcHJvY2Vzc2VkL2hvdXJcbiAgICAgIGNvbnN0IG5sY3VGcm9tTmV3Q29ubmVjdGlvbnMgPSBuZXdDb25uZWN0aW9uc1BlclNlY29uZCAvIDgwMDtcbiAgICAgIGNvbnN0IG5sY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMgPSBhY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZSAvIDEwMDAwMDtcbiAgICAgIGNvbnN0IGdiUGVySG91ciA9IHByb2Nlc3NlZEJ5dGVzR0IgLyB0aGlzLkhPVVJTX1BFUl9NT05USDtcbiAgICAgIGNvbnN0IG5sY3VGcm9tUHJvY2Vzc2VkQnl0ZXMgPSBnYlBlckhvdXI7XG5cbiAgICAgIC8vIFVzZSB0aGUgaGlnaGVzdCBOTENVIGNvbnN1bXB0aW9uXG4gICAgICBjb25zdCBubGN1UGVySG91ciA9IE1hdGgubWF4KFxuICAgICAgICBubGN1RnJvbU5ld0Nvbm5lY3Rpb25zLFxuICAgICAgICBubGN1RnJvbUFjdGl2ZUNvbm5lY3Rpb25zLFxuICAgICAgICBubGN1RnJvbVByb2Nlc3NlZEJ5dGVzLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaG91cmx5Q29zdCA9IGhvdXJseVJhdGUgKiB0aGlzLkhPVVJTX1BFUl9NT05USDtcbiAgICAgIGNvbnN0IG5sY3VDb3N0ID0gbmxjdVJhdGUgKiBubGN1UGVySG91ciAqIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgdG90YWxDb3N0ID0gaG91cmx5Q29zdCArIG5sY3VDb3N0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IHRvdGFsQ29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgSG91cmx5IHJhdGU6ICQke2hvdXJseVJhdGUudG9GaXhlZCg0KX0vaG91ciDDlyAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyA9ICQke2hvdXJseUNvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBOTENVIGNvbnN1bXB0aW9uOiAke25sY3VQZXJIb3VyLnRvRml4ZWQoMil9IE5MQ1UvaG91ciBiYXNlZCBvbjpgLFxuICAgICAgICAgIGAgIC0gTmV3IGNvbm5lY3Rpb25zOiAke25ld0Nvbm5lY3Rpb25zUGVyU2Vjb25kfS9zZWMg4oaSICR7bmxjdUZyb21OZXdDb25uZWN0aW9ucy50b0ZpeGVkKDIpfSBOTENVYCxcbiAgICAgICAgICBgICAtIEFjdGl2ZSBjb25uZWN0aW9uczogJHthY3RpdmVDb25uZWN0aW9uc1Blck1pbnV0ZX0vbWluIOKGkiAke25sY3VGcm9tQWN0aXZlQ29ubmVjdGlvbnMudG9GaXhlZCgyKX0gTkxDVWAsXG4gICAgICAgICAgYCAgLSBQcm9jZXNzZWQgZGF0YTogJHtwcm9jZXNzZWRCeXRlc0dCfSBHQi9tb250aCDihpIgJHtubGN1RnJvbVByb2Nlc3NlZEJ5dGVzLnRvRml4ZWQoMil9IE5MQ1VgLFxuICAgICAgICAgIGBOTENVIGNvc3Q6ICQke25sY3VSYXRlLnRvRml4ZWQoNCl9L05MQ1UvaG91ciDDlyAke25sY3VQZXJIb3VyLnRvRml4ZWQoMil9IE5MQ1Ugw5cgJHt0aGlzLkhPVVJTX1BFUl9NT05USH0gaG91cnMgPSAkJHtubGN1Q29zdC50b0ZpeGVkKDIpfS9tb250aGAsXG4gICAgICAgICAgYFRvdGFsOiAkJHt0b3RhbENvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtgRmFpbGVkIHRvIGZldGNoIHByaWNpbmc6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -7,5 +7,4 @@ export declare class NatGatewayCalculator implements ResourceCostCalculator {
7
7
  constructor(customDataProcessedGB?: number | undefined);
8
8
  supports(resourceType: string): boolean;
9
9
  calculateCost(_resource: ResourceWithId, region: string, pricingClient: PricingClient): Promise<MonthlyCost>;
10
- private getRegionPrefix;
11
10
  }
@@ -15,7 +15,7 @@ class NatGatewayCalculator {
15
15
  }
16
16
  async calculateCost(_resource, region, pricingClient) {
17
17
  try {
18
- const regionPrefix = this.getRegionPrefix(region);
18
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
19
19
  Logger_1.Logger.debug('NAT Gateway pricing calculation started', {
20
20
  region,
21
21
  regionPrefix,
@@ -107,56 +107,6 @@ class NatGatewayCalculator {
107
107
  };
108
108
  }
109
109
  }
110
- getRegionPrefix(region) {
111
- // AWS uses region prefixes in usage types for NAT Gateway
112
- // Format: {PREFIX}NatGateway-Hours or {PREFIX}NatGateway-Bytes
113
- // Reference: https://cur.vantage.sh/aws/nat-gateways/
114
- const prefixMap = {
115
- // US Regions
116
- 'us-east-1': 'USE1',
117
- 'us-east-2': 'USE2',
118
- 'us-west-1': 'USW1',
119
- 'us-west-2': 'USW2',
120
- // EU Regions
121
- 'eu-west-1': 'EUW1',
122
- 'eu-west-2': 'EUW2',
123
- 'eu-west-3': 'EUW3',
124
- 'eu-central-1': 'EUC1',
125
- 'eu-central-2': 'EUC2',
126
- 'eu-north-1': 'EUN1',
127
- 'eu-south-1': 'EUS1',
128
- 'eu-south-2': 'EUS2',
129
- // Asia Pacific Regions
130
- 'ap-south-1': 'APS1',
131
- 'ap-south-2': 'APS2',
132
- 'ap-southeast-1': 'APS3',
133
- 'ap-southeast-2': 'APS4',
134
- 'ap-southeast-3': 'APS5',
135
- 'ap-southeast-4': 'APS6',
136
- 'ap-northeast-1': 'APN1',
137
- 'ap-northeast-2': 'APN2',
138
- 'ap-northeast-3': 'APN3',
139
- 'ap-east-1': 'APE1',
140
- // Canada Regions
141
- 'ca-central-1': 'CAN1',
142
- 'ca-west-1': 'CAW1',
143
- // South America Regions
144
- 'sa-east-1': 'SAE1',
145
- // Middle East Regions
146
- 'me-south-1': 'MES1',
147
- 'me-central-1': 'MEC1',
148
- // Africa Regions
149
- 'af-south-1': 'AFS1',
150
- // Israel Regions
151
- 'il-central-1': 'ILC1',
152
- // Other Regions
153
- 'ap-southeast-5': 'APS7',
154
- 'eu-isoe-west-1': 'EIW1',
155
- 'us-gov-west-1': 'UGW1',
156
- 'us-gov-east-1': 'UGE1',
157
- };
158
- return prefixMap[region] || '';
159
- }
160
110
  }
161
111
  exports.NatGatewayCalculator = NatGatewayCalculator;
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmF0R2F0ZXdheUNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJpY2luZy9jYWxjdWxhdG9ycy9OYXRHYXRld2F5Q2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxrREFBa0Q7QUFDbEQsK0NBQTRDO0FBRTVDLE1BQWEsb0JBQW9CO0lBSVg7SUFISCx5QkFBeUIsR0FBRyxHQUFHLENBQUM7SUFDaEMsZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUV2QyxZQUFvQixxQkFBOEI7UUFBOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFTO0lBQUcsQ0FBQztJQUV0RCxRQUFRLENBQUMsWUFBb0I7UUFDM0IsT0FBTyxZQUFZLEtBQUssc0JBQXNCLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFNBQXlCLEVBQ3pCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWxELGVBQU0sQ0FBQyxLQUFLLENBQUMseUNBQXlDLEVBQUU7Z0JBQ3RELE1BQU07Z0JBQ04sWUFBWTtnQkFDWixnQkFBZ0IsRUFBRSxJQUFBLDhCQUFlLEVBQUMsTUFBTSxDQUFDO2dCQUN6QyxlQUFlLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyx5QkFBeUI7YUFDOUUsQ0FBQyxDQUFDO1lBRUgsa0JBQWtCO1lBQ2xCLE1BQU0sVUFBVSxHQUFHLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFDOUMsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLE1BQU0sRUFBRSxJQUFBLDhCQUFlLEVBQUMsTUFBTSxDQUFDO2dCQUMvQixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7b0JBQ2hELEVBQUUsS0FBSyxFQUFF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TTtZQUN4QixnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsV0FBVyxFQUFFLE1BQU07WUFDbkIsaUJBQWlCO1lBQ2pCLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLHdCQUF3QjtZQUN4QixXQUFXLEVBQUUsTUFBTTtZQUNuQixzQkFBc0I7WUFDdEIsWUFBWSxFQUFFLE1BQU07WUFDcEIsY0FBYyxFQUFFLE1BQU07WUFDdEIsaUJBQWlCO1lBQ2pCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGlCQUFpQjtZQUNqQixjQUFjLEVBQUUsTUFBTTtZQUN0QixnQkFBZ0I7WUFDaEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLGVBQWUsRUFBRSxNQUFNO1NBQ3hCLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBN0tELG9EQTZLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlV2l0aElkIH0gZnJvbSAnLi4vLi4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yLCBNb250aGx5Q29zdCwgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVJlZ2lvbiB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9Mb2dnZXInO1xuXG5leHBvcnQgY2xhc3MgTmF0R2F0ZXdheUNhbGN1bGF0b3IgaW1wbGVtZW50cyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFfUFJPQ0VTU0VEX0dCID0gMTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IEhPVVJTX1BFUl9NT05USCA9IDczMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RvbURhdGFQcm9jZXNzZWRHQj86IG51bWJlcikge31cblxuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkVDMjo6TmF0R2F0ZXdheSc7XG4gIH1cblxuICBhc3luYyBjYWxjdWxhdGVDb3N0KFxuICAgIF9yZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSB0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgXG4gICAgICBMb2dnZXIuZGVidWcoJ05BVCBHYXRld2F5IHByaWNpbmcgY2FsY3VsYXRpb24gc3RhcnRlZCcsIHtcbiAgICAgICAgcmVnaW9uLFxuICAgICAgICByZWdpb25QcmVmaXgsXG4gICAgICAgIG5vcm1hbGl6ZWRSZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBkYXRhUHJvY2Vzc2VkR0I6IHRoaXMuY3VzdG9tRGF0YVByb2Nlc3NlZEdCIHx8IHRoaXMuREVGQVVMVF9EQVRBX1BST0NFU1NFRF9HQixcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBHZXQgaG91cmx5IHJhdGVcbiAgICAgIGNvbnN0IGhvdXJseVJhdGUgPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBbWF6b25FQzInLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ05BVCBHYXRld2F5JyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogYCR7cmVnaW9uUHJlZml4fS1SZWdpb25hbE5hdEdhdGV3YXktSG91cnNgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgTG9nZ2VyLmRlYnVnKCdOQVQgR2F0ZXdheSBob3VybHkgcmF0ZSByZXRyaWV2ZWQnLCB7XG4gICAgICAgIGhvdXJseVJhdGUsXG4gICAgICAgIHVzYWdlVHlwZTogYCR7cmVnaW9uUHJlZml4fS1SZWdpb25hbE5hdEdhdGV3YXktSG91cnNgLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCBkYXRhIHByb2Nlc3NpbmcgcmF0ZVxuICAgICAgY29uc3QgZGF0YVByb2Nlc3NpbmdSYXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uRUMyJyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdOQVQgR2F0ZXdheScgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH0tUmVnaW9uYWxOYXRHYXRld2F5LUJ5dGVzYCB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIExvZ2dlci5kZWJ1ZygnTkFUIEdhdGV3YXkgZGF0YSBwcm9jZXNzaW5nIHJhdGUgcmV0cmlldmVkJywge1xuICAgICAgICBkYXRhUHJvY2Vzc2luZ1JhdGUsXG4gICAgICAgIHVzYWdlVHlwZTogYCR7cmVnaW9uUHJlZml4fS1SZWdpb25hbE5hdEdhdGV3YXktQnl0ZXNgLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChob3VybHlSYXRlID09PSBudWxsIHx8IGRhdGFQcm9jZXNzaW5nUmF0ZSA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBkYXRhUHJvY2Vzc2VkR0IgPSB0aGlzLmN1c3RvbURhdGFQcm9jZXNzZWRHQiB8fCB0aGlzLkRFRkFVTFRfREFUQV9QUk9DRVNTRURfR0I7XG4gICAgICAgIGNvbnN0IGFzc3VtcHRpb25zID0gW1xuICAgICAgICAgIGBQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgTkFUIEdhdGV3YXkgaW4gcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgICAgYFdvdWxkIGFzc3VtZSAke2RhdGFQcm9jZXNzZWRHQn0gR0Igb2YgZGF0YSBwcm9jZXNzaW5nIHBlciBtb250aGAsXG4gICAgICAgICAgYFdvdWxkIGFzc3VtZSAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyBwZXIgbW9udGhgLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbURhdGFQcm9jZXNzZWRHQiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYXNzdW1wdGlvbnMucHVzaCgnVXNpbmcgY3VzdG9tIGRhdGEgcHJvY2Vzc2luZyBhc3N1bXB0aW9uIGZyb20gY29uZmlndXJhdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgTG9nZ2VyLmRlYnVnKCdOQVQgR2F0ZXdheSBwcmljaW5nIG5vdCBhdmFpbGFibGUnLCB7XG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIHJlZ2lvblByZWZpeCxcbiAgICAgICAgICBob3VybHlSYXRlQXZhaWxhYmxlOiBob3VybHlSYXRlICE9PSBudWxsLFxuICAgICAgICAgIGRhdGFQcm9jZXNzaW5nUmF0ZUF2YWlsYWJsZTogZGF0YVByb2Nlc3NpbmdSYXRlICE9PSBudWxsLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICAgIGFzc3VtcHRpb25zLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhUHJvY2Vzc2VkR0IgPSB0aGlzLmN1c3RvbURhdGFQcm9jZXNzZWRHQiB8fCB0aGlzLkRFRkFVTFRfREFUQV9QUk9DRVNTRURfR0I7XG4gICAgICBjb25zdCBob3VybHlDb3N0ID0gaG91cmx5UmF0ZSAqIHRoaXMuSE9VUlNfUEVSX01PTlRIO1xuICAgICAgY29uc3QgZGF0YVByb2Nlc3NpbmdDb3N0ID0gZGF0YVByb2Nlc3NpbmdSYXRlICogZGF0YVByb2Nlc3NlZEdCO1xuICAgICAgY29uc3QgdG90YWxDb3N0ID0gaG91cmx5Q29zdCArIGRhdGFQcm9jZXNzaW5nQ29zdDtcblxuICAgICAgTG9nZ2VyLmRlYnVnKCdOQVQgR2F0ZXdheSBjb3N0IGNhbGN1bGF0ZWQnLCB7XG4gICAgICAgIGhvdXJseVJhdGUsXG4gICAgICAgIGRhdGFQcm9jZXNzaW5nUmF0ZSxcbiAgICAgICAgZGF0YVByb2Nlc3NlZEdCLFxuICAgICAgICBob3VybHlDb3N0LFxuICAgICAgICBkYXRhUHJvY2Vzc2luZ0Nvc3QsXG4gICAgICAgIHRvdGFsQ29zdCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IHRvdGFsQ29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgSG91cmx5IHJhdGU6ICQke2hvdXJseVJhdGUudG9GaXhlZCg0KX0vaG91ciDDlyAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyA9ICQke2hvdXJseUNvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBEYXRhIHByb2Nlc3Npbmc6ICQke2RhdGFQcm9jZXNzaW5nUmF0ZS50b0ZpeGVkKDQpfS9HQiDDlyAke2RhdGFQcm9jZXNzZWRHQn0gR0IgPSAkJHtkYXRhUHJvY2Vzc2luZ0Nvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBUb3RhbDogJCR7dG90YWxDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIExvZ2dlci5kZWJ1ZygnTkFUIEdhdGV3YXkgcHJpY2luZyBjYWxjdWxhdGlvbiBmYWlsZWQnLCB7XG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgICAgIHJlZ2lvbixcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BGYWlsZWQgdG8gZmV0Y2ggcHJpY2luZzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBnZXRSZWdpb25QcmVmaXgocmVnaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEFXUyB1c2VzIHJlZ2lvbiBwcmVmaXhlcyBpbiB1c2FnZSB0eXBlcyBmb3IgTkFUIEdhdGV3YXlcbiAgICAvLyBGb3JtYXQ6IHtQUkVGSVh9TmF0R2F0ZXdheS1Ib3VycyBvciB7UFJFRklYfU5hdEdhdGV3YXktQnl0ZXNcbiAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vY3VyLnZhbnRhZ2Uuc2gvYXdzL25hdC1nYXRld2F5cy9cbiAgICBjb25zdCBwcmVmaXhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAvLyBVUyBSZWdpb25zXG4gICAgICAndXMtZWFzdC0xJzogJ1VTRTEnLFxuICAgICAgJ3VzLWVhc3QtMic6ICdVU0UyJyxcbiAgICAgICd1cy13ZXN0LTEnOiAnVVNXMScsXG4gICAgICAndXMtd2VzdC0yJzogJ1VTVzInLFxuICAgICAgLy8gRVUgUmVnaW9uc1xuICAgICAgJ2V1LXdlc3QtMSc6ICdFVVcxJyxcbiAgICAgICdldS13ZXN0LTInOiAnRVVXMicsXG4gICAgICAnZXUtd2VzdC0zJzogJ0VVVzMnLFxuICAgICAgJ2V1LWNlbnRyYWwtMSc6ICdFVUMxJyxcbiAgICAgICdldS1jZW50cmFsLTInOiAnRVVDMicsXG4gICAgICAnZXUtbm9ydGgtMSc6ICdFVU4xJyxcbiAgICAgICdldS1zb3V0aC0xJzogJ0VVUzEnLFxuICAgICAgJ2V1LXNvdXRoLTInOiAnRVVTMicsXG4gICAgICAvLyBBc2lhIFBhY2lmaWMgUmVnaW9uc1xuICAgICAgJ2FwLXNvdXRoLTEnOiAnQVBTMScsXG4gICAgICAnYXAtc291dGgtMic6ICdBUFMyJyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMSc6ICdBUFMzJyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMic6ICdBUFM0JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMyc6ICdBUFM1JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtNCc6ICdBUFM2JyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMSc6ICdBUE4xJyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMic6ICdBUE4yJyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMyc6ICdBUE4zJyxcbiAgICAgICdhcC1lYXN0LTEnOiAnQVBFMScsXG4gICAgICAvLyBDYW5hZGEgUmVnaW9uc1xuICAgICAgJ2NhLWNlbnRyYWwtMSc6ICdDQU4xJyxcbiAgICAgICdjYS13ZXN0LTEnOiAnQ0FXMScsXG4gICAgICAvLyBTb3V0aCBBbWVyaWNhIFJlZ2lvbnNcbiAgICAgICdzYS1lYXN0LTEnOiAnU0FFMScsXG4gICAgICAvLyBNaWRkbGUgRWFzdCBSZWdpb25zXG4gICAgICAnbWUtc291dGgtMSc6ICdNRVMxJyxcbiAgICAgICdtZS1jZW50cmFsLTEnOiAnTUVDMScsXG4gICAgICAvLyBBZnJpY2EgUmVnaW9uc1xuICAgICAgJ2FmLXNvdXRoLTEnOiAnQUZTMScsXG4gICAgICAvLyBJc3JhZWwgUmVnaW9uc1xuICAgICAgJ2lsLWNlbnRyYWwtMSc6ICdJTEMxJyxcbiAgICAgIC8vIE90aGVyIFJlZ2lvbnNcbiAgICAgICdhcC1zb3V0aGVhc3QtNSc6ICdBUFM3JyxcbiAgICAgICdldS1pc29lLXdlc3QtMSc6ICdFSVcxJyxcbiAgICAgICd1cy1nb3Ytd2VzdC0xJzogJ1VHVzEnLFxuICAgICAgJ3VzLWdvdi1lYXN0LTEnOiAnVUdFMScsXG4gICAgfTtcblxuICAgIHJldHVybiBwcmVmaXhNYXBbcmVnaW9uXSB8fCAnJztcbiAgfVxufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmF0R2F0ZXdheUNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJpY2luZy9jYWxjdWxhdG9ycy9OYXRHYXRld2F5Q2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxrREFBbUU7QUFDbkUsK0NBQTRDO0FBRTVDLE1BQWEsb0JBQW9CO0lBSVg7SUFISCx5QkFBeUIsR0FBRyxHQUFHLENBQUM7SUFDaEMsZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUV2QyxZQUFvQixxQkFBOEI7UUFBOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFTO0lBQUcsQ0FBQztJQUV0RCxRQUFRLENBQUMsWUFBb0I7UUFDM0IsT0FBTyxZQUFZLEtBQUssc0JBQXNCLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFNBQXlCLEVBQ3pCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxJQUFBLDhCQUFlLEVBQUMsTUFBTSxDQUFDLENBQUM7WUFFN0MsZUFBTSxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRTtnQkFDdEQsTUFBTTtnQkFDTixZQUFZO2dCQUNaLGdCQUFnQixFQUFFLElBQUEsOEJBQWUsRUFBQyxNQUFNLENBQUM7Z0JBQ3pDLGVBQWUsRUFBRSxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLHlCQUF5QjthQUM5RSxDQUFDLENBQUM7WUFFSCxrQkFBa0I7WUFDbEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDO2dCQUM5QyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsTUFBTSxFQUFFLElBQUEsOEJBQWUsRUFBQyxNQUFNLENBQUM7Z0JBQy9CLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtvQkFDaEQsRUFBRSxLQUFLLEVBQUUsV0FB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QUMsUUFBUTtpQkFDeEM7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixlQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFO2dCQUNyRCxLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDN0QsTUFBTTthQUNQLENBQUMsQ0FBQztZQUVILE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxDQUFDLDRCQUE0QixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNwRyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhIRCxvREF3SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZVdpdGhJZCB9IGZyb20gJy4uLy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciwgTW9udGhseUNvc3QsIFByaWNpbmdDbGllbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVSZWdpb24sIGdldFJlZ2lvblByZWZpeCB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9Mb2dnZXInO1xuXG5leHBvcnQgY2xhc3MgTmF0R2F0ZXdheUNhbGN1bGF0b3IgaW1wbGVtZW50cyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFfUFJPQ0VTU0VEX0dCID0gMTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IEhPVVJTX1BFUl9NT05USCA9IDczMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RvbURhdGFQcm9jZXNzZWRHQj86IG51bWJlcikge31cblxuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkVDMjo6TmF0R2F0ZXdheSc7XG4gIH1cblxuICBhc3luYyBjYWxjdWxhdGVDb3N0KFxuICAgIF9yZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSBnZXRSZWdpb25QcmVmaXgocmVnaW9uKTtcbiAgICAgIFxuICAgICAgTG9nZ2VyLmRlYnVnKCdOQVQgR2F0ZXdheSBwcmljaW5nIGNhbGN1bGF0aW9uIHN0YXJ0ZWQnLCB7XG4gICAgICAgIHJlZ2lvbixcbiAgICAgICAgcmVnaW9uUHJlZml4LFxuICAgICAgICBub3JtYWxpemVkUmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZGF0YVByb2Nlc3NlZEdCOiB0aGlzLmN1c3RvbURhdGFQcm9jZXNzZWRHQiB8fCB0aGlzLkRFRkFVTFRfREFUQV9QUk9DRVNTRURfR0IsXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gR2V0IGhvdXJseSByYXRlXG4gICAgICBjb25zdCBob3VybHlSYXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uRUMyJyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdOQVQgR2F0ZXdheScgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH0tUmVnaW9uYWxOYXRHYXRld2F5LUhvdXJzYCB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIExvZ2dlci5kZWJ1ZygnTkFUIEdhdGV3YXkgaG91cmx5IHJhdGUgcmV0cmlldmVkJywge1xuICAgICAgICBob3VybHlSYXRlLFxuICAgICAgICB1c2FnZVR5cGU6IGAke3JlZ2lvblByZWZpeH0tUmVnaW9uYWxOYXRHYXRld2F5LUhvdXJzYCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgZGF0YSBwcm9jZXNzaW5nIHJhdGVcbiAgICAgIGNvbnN0IGRhdGFQcm9jZXNzaW5nUmF0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkVDMicsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnTkFUIEdhdGV3YXknIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiBgJHtyZWdpb25QcmVmaXh9LVJlZ2lvbmFsTmF0R2F0ZXdheS1CeXRlc2AgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBMb2dnZXIuZGVidWcoJ05BVCBHYXRld2F5IGRhdGEgcHJvY2Vzc2luZyByYXRlIHJldHJpZXZlZCcsIHtcbiAgICAgICAgZGF0YVByb2Nlc3NpbmdSYXRlLFxuICAgICAgICB1c2FnZVR5cGU6IGAke3JlZ2lvblByZWZpeH0tUmVnaW9uYWxOYXRHYXRld2F5LUJ5dGVzYCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaG91cmx5UmF0ZSA9PT0gbnVsbCB8fCBkYXRhUHJvY2Vzc2luZ1JhdGUgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZGF0YVByb2Nlc3NlZEdCID0gdGhpcy5jdXN0b21EYXRhUHJvY2Vzc2VkR0IgfHwgdGhpcy5ERUZBVUxUX0RBVEFfUFJPQ0VTU0VEX0dCO1xuICAgICAgICBjb25zdCBhc3N1bXB0aW9ucyA9IFtcbiAgICAgICAgICBgUHJpY2luZyBkYXRhIG5vdCBhdmFpbGFibGUgZm9yIE5BVCBHYXRld2F5IGluIHJlZ2lvbiAke3JlZ2lvbn1gLFxuICAgICAgICAgIGBXb3VsZCBhc3N1bWUgJHtkYXRhUHJvY2Vzc2VkR0J9IEdCIG9mIGRhdGEgcHJvY2Vzc2luZyBwZXIgbW9udGhgLFxuICAgICAgICAgIGBXb3VsZCBhc3N1bWUgJHt0aGlzLkhPVVJTX1BFUl9NT05USH0gaG91cnMgcGVyIG1vbnRoYCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5jdXN0b21EYXRhUHJvY2Vzc2VkR0IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFzc3VtcHRpb25zLnB1c2goJ1VzaW5nIGN1c3RvbSBkYXRhIHByb2Nlc3NpbmcgYXNzdW1wdGlvbiBmcm9tIGNvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIExvZ2dlci5kZWJ1ZygnTkFUIEdhdGV3YXkgcHJpY2luZyBub3QgYXZhaWxhYmxlJywge1xuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICByZWdpb25QcmVmaXgsXG4gICAgICAgICAgaG91cmx5UmF0ZUF2YWlsYWJsZTogaG91cmx5UmF0ZSAhPT0gbnVsbCxcbiAgICAgICAgICBkYXRhUHJvY2Vzc2luZ1JhdGVBdmFpbGFibGU6IGRhdGFQcm9jZXNzaW5nUmF0ZSAhPT0gbnVsbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9ucyxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YVByb2Nlc3NlZEdCID0gdGhpcy5jdXN0b21EYXRhUHJvY2Vzc2VkR0IgfHwgdGhpcy5ERUZBVUxUX0RBVEFfUFJPQ0VTU0VEX0dCO1xuICAgICAgY29uc3QgaG91cmx5Q29zdCA9IGhvdXJseVJhdGUgKiB0aGlzLkhPVVJTX1BFUl9NT05USDtcbiAgICAgIGNvbnN0IGRhdGFQcm9jZXNzaW5nQ29zdCA9IGRhdGFQcm9jZXNzaW5nUmF0ZSAqIGRhdGFQcm9jZXNzZWRHQjtcbiAgICAgIGNvbnN0IHRvdGFsQ29zdCA9IGhvdXJseUNvc3QgKyBkYXRhUHJvY2Vzc2luZ0Nvc3Q7XG5cbiAgICAgIExvZ2dlci5kZWJ1ZygnTkFUIEdhdGV3YXkgY29zdCBjYWxjdWxhdGVkJywge1xuICAgICAgICBob3VybHlSYXRlLFxuICAgICAgICBkYXRhUHJvY2Vzc2luZ1JhdGUsXG4gICAgICAgIGRhdGFQcm9jZXNzZWRHQixcbiAgICAgICAgaG91cmx5Q29zdCxcbiAgICAgICAgZGF0YVByb2Nlc3NpbmdDb3N0LFxuICAgICAgICB0b3RhbENvc3QsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiB0b3RhbENvc3QsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ21lZGl1bScsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgYEhvdXJseSByYXRlOiAkJHtob3VybHlSYXRlLnRvRml4ZWQoNCl9L2hvdXIgw5cgJHt0aGlzLkhPVVJTX1BFUl9NT05USH0gaG91cnMgPSAkJHtob3VybHlDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgICBgRGF0YSBwcm9jZXNzaW5nOiAkJHtkYXRhUHJvY2Vzc2luZ1JhdGUudG9GaXhlZCg0KX0vR0Igw5cgJHtkYXRhUHJvY2Vzc2VkR0J9IEdCID0gJCR7ZGF0YVByb2Nlc3NpbmdDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgICBgVG90YWw6ICQke3RvdGFsQ29zdC50b0ZpeGVkKDIpfS9tb250aGAsXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBMb2dnZXIuZGVidWcoJ05BVCBHYXRld2F5IHByaWNpbmcgY2FsY3VsYXRpb24gZmFpbGVkJywge1xuICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICByZWdpb24sXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtgRmFpbGVkIHRvIGZldGNoIHByaWNpbmc6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -7,5 +7,4 @@ export declare class VPCEndpointCalculator implements ResourceCostCalculator {
7
7
  constructor(customDataProcessedGB?: number | undefined);
8
8
  supports(resourceType: string): boolean;
9
9
  calculateCost(resource: ResourceWithId, region: string, pricingClient: PricingClient): Promise<MonthlyCost>;
10
- private getRegionPrefix;
11
10
  }
@@ -34,13 +34,14 @@ class VPCEndpointCalculator {
34
34
  }
35
35
  // Interface endpoints have hourly and data processing costs
36
36
  try {
37
+ const regionPrefix = (0, RegionMapper_1.getRegionPrefix)(region);
37
38
  // Get hourly rate per endpoint
38
39
  const hourlyRate = await pricingClient.getPrice({
39
40
  serviceCode: 'AmazonVPC',
40
41
  region: (0, RegionMapper_1.normalizeRegion)(region),
41
42
  filters: [
42
43
  { field: 'productFamily', value: 'VpcEndpoint' },
43
- { field: 'usagetype', value: `${this.getRegionPrefix(region)}VpcEndpoint-Hours` },
44
+ { field: 'usagetype', value: `${regionPrefix}VpcEndpoint-Hours` },
44
45
  ],
45
46
  });
46
47
  // Get data processing rate
@@ -49,7 +50,7 @@ class VPCEndpointCalculator {
49
50
  region: (0, RegionMapper_1.normalizeRegion)(region),
50
51
  filters: [
51
52
  { field: 'productFamily', value: 'VpcEndpoint' },
52
- { field: 'usagetype', value: `${this.getRegionPrefix(region)}VpcEndpoint-Bytes` },
53
+ { field: 'usagetype', value: `${regionPrefix}VpcEndpoint-Bytes` },
53
54
  ],
54
55
  });
55
56
  if (hourlyRate === null || dataProcessingRate === null) {
@@ -87,25 +88,6 @@ class VPCEndpointCalculator {
87
88
  };
88
89
  }
89
90
  }
90
- getRegionPrefix(region) {
91
- const prefixMap = {
92
- 'us-east-1': 'USE1',
93
- 'us-east-2': 'USE2',
94
- 'us-west-1': 'USW1',
95
- 'us-west-2': 'USW2',
96
- 'eu-west-1': 'EUW1',
97
- 'eu-west-2': 'EUW2',
98
- 'eu-west-3': 'EUW3',
99
- 'eu-central-1': 'EUC1',
100
- 'eu-north-1': 'EUN1',
101
- 'ap-south-1': 'APS1',
102
- 'ap-southeast-1': 'APS2',
103
- 'ap-southeast-2': 'APS3',
104
- 'ap-northeast-1': 'APN1',
105
- 'ap-northeast-2': 'APN2',
106
- };
107
- return prefixMap[region] || '';
108
- }
109
91
  }
110
92
  exports.VPCEndpointCalculator = VPCEndpointCalculator;
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVlBDRW5kcG9pbnRDYWxjdWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ByaWNpbmcvY2FsY3VsYXRvcnMvVlBDRW5kcG9pbnRDYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGtEQUFrRDtBQUVsRCxNQUFhLHFCQUFxQjtJQUlaO0lBSEgseUJBQXlCLEdBQUcsR0FBRyxDQUFDO0lBQ2hDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFFdkMsWUFBb0IscUJBQThCO1FBQTlCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUztJQUFHLENBQUM7SUFFdEQsUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLHVCQUF1QixDQUFDO0lBQ2xELENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUNqQixRQUF3QixFQUN4QixNQUFjLEVBQ2QsYUFBNEI7UUFFNUIsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLGVBQXFDLENBQUM7UUFDeEYsTUFBTSxXQUFXLEdBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxXQUFrQyxJQUFJLEVBQUUsQ0FBQztRQUVuRiwwQ0FBMEM7UUFDMUMsdURBQXVEO1FBQ3ZELE1BQU0saUJBQWlCLEdBQ3JCLG9CQUFvQixLQUFLLFNBQVM7WUFDbEMsQ0FBQyxvQkFBb0IsS0FBSyxTQUFTO2dCQUNqQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEUsK0NBQStDO1FBQy9DLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixPQUFPO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2dCQUNULFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixXQUFXLEVBQUU7b0JBQ1gsb0RBQW9EO29CQUNwRCxrREFBa0Q7aUJBQ25EO2FB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RUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLGdCQUFnQixFQUFFLE1BQU07U0FDekIsQ0FBQztRQUVGLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUF0SEQsc0RBc0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2VXaXRoSWQgfSBmcm9tICcuLi8uLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IFJlc291cmNlQ29zdENhbGN1bGF0b3IsIE1vbnRobHlDb3N0LCBQcmljaW5nQ2xpZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUmVnaW9uIH0gZnJvbSAnLi4vUmVnaW9uTWFwcGVyJztcblxuZXhwb3J0IGNsYXNzIFZQQ0VuZHBvaW50Q2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQV9QUk9DRVNTRURfR0IgPSAxMDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgSE9VUlNfUEVSX01PTlRIID0gNzMwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3VzdG9tRGF0YVByb2Nlc3NlZEdCPzogbnVtYmVyKSB7fVxuXG4gIHN1cHBvcnRzKHJlc291cmNlVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc291cmNlVHlwZSA9PT0gJ0FXUzo6RUMyOjpWUENFbmRwb2ludCc7XG4gIH1cblxuICBhc3luYyBjYWxjdWxhdGVDb3N0KFxuICAgIHJlc291cmNlOiBSZXNvdXJjZVdpdGhJZCxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50LFxuICApOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgY29uc3QgZXhwbGljaXRFbmRwb2ludFR5cGUgPSByZXNvdXJjZS5wcm9wZXJ0aWVzPy5WcGNFbmRwb2ludFR5cGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gKHJlc291cmNlLnByb3BlcnRpZXM/LlNlcnZpY2VOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgfHwgJyc7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIEdhdGV3YXkgZW5kcG9pbnRcbiAgICAvLyBQcmlvcml0eTogZXhwbGljaXQgdHlwZSA+IGluZmVycmVkIGZyb20gc2VydmljZSBuYW1lXG4gICAgY29uc3QgaXNHYXRld2F5RW5kcG9pbnQgPVxuICAgICAgZXhwbGljaXRFbmRwb2ludFR5cGUgPT09ICdHYXRld2F5JyB8fFxuICAgICAgKGV4cGxpY2l0RW5kcG9pbnRUeXBlID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKHNlcnZpY2VOYW1lLmluY2x1ZGVzKCdzMycpIHx8IHNlcnZpY2VOYW1lLmluY2x1ZGVzKCdkeW5hbW9kYicpKSk7XG5cbiAgICAvLyBHYXRld2F5IGVuZHBvaW50cyAoUzMgYW5kIER5bmFtb0RCKSBhcmUgZnJlZVxuICAgIGlmIChpc0dhdGV3YXlFbmRwb2ludCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICdoaWdoJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAnR2F0ZXdheSBWUEMgZW5kcG9pbnRzIGZvciBTMyBhbmQgRHluYW1vREIgYXJlIGZyZWUnLFxuICAgICAgICAgICdObyBkYXRhIHByb2Nlc3NpbmcgY2hhcmdlcyBmb3IgZ2F0ZXdheSBlbmRwb2ludHMnLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJbnRlcmZhY2UgZW5kcG9pbnRzIGhhdmUgaG91cmx5IGFuZCBkYXRhIHByb2Nlc3NpbmcgY29zdHNcbiAgICB0cnkge1xuICAgICAgLy8gR2V0IGhvdXJseSByYXRlIHBlciBlbmRwb2ludFxuICAgICAgY29uc3QgaG91cmx5UmF0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvblZQQycsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnVnBjRW5kcG9pbnQnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiBgJHt0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pfVZwY0VuZHBvaW50LUhvdXJzYCB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCBkYXRhIHByb2Nlc3NpbmcgcmF0ZVxuICAgICAgY29uc3QgZGF0YVByb2Nlc3NpbmdSYXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uVlBDJyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdWcGNFbmRwb2ludCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3RoaXMuZ2V0UmVnaW9uUHJlZml4KHJlZ2lvbil9VnBjRW5kcG9pbnQtQnl0ZXNgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGhvdXJseVJhdGUgPT09IG51bGwgfHwgZGF0YVByb2Nlc3NpbmdSYXRlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAgIGBQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgVlBDIEVuZHBvaW50IGluIHJlZ2lvbiAke3JlZ2lvbn1gLFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFQcm9jZXNzZWRHQiA9IHRoaXMuY3VzdG9tRGF0YVByb2Nlc3NlZEdCIHx8IHRoaXMuREVGQVVMVF9EQVRBX1BST0NFU1NFRF9HQjtcbiAgICAgIGNvbnN0IGhvdXJseUNvc3QgPSBob3VybHlSYXRlICogdGhpcy5IT1VSU19QRVJfTU9OVEg7XG4gICAgICBjb25zdCBkYXRhUHJvY2Vzc2luZ0Nvc3QgPSBkYXRhUHJvY2Vzc2luZ1JhdGUgKiBkYXRhUHJvY2Vzc2VkR0I7XG4gICAgICBjb25zdCB0b3RhbENvc3QgPSBob3VybHlDb3N0ICsgZGF0YVByb2Nlc3NpbmdDb3N0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IHRvdGFsQ29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAnSW50ZXJmYWNlIFZQQyBFbmRwb2ludCB0eXBlJyxcbiAgICAgICAgICBgSG91cmx5IHJhdGU6ICQke2hvdXJseVJhdGUudG9GaXhlZCg0KX0vaG91ciDDlyAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyA9ICQke2hvdXJseUNvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBEYXRhIHByb2Nlc3Npbmc6ICQke2RhdGFQcm9jZXNzaW5nUmF0ZS50b0ZpeGVkKDQpfS9HQiDDlyAke2RhdGFQcm9jZXNzZWRHQn0gR0IgPSAkJHtkYXRhUHJvY2Vzc2luZ0Nvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBUb3RhbDogJCR7dG90YWxDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGdldFJlZ2lvblByZWZpeChyZWdpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3VzLWVhc3QtMSc6ICdVU0UxJyxcbiAgICAgICd1cy1lYXN0LTInOiAnVVNFMicsXG4gICAgICAndXMtd2VzdC0xJzogJ1VTVzEnLFxuICAgICAgJ3VzLXdlc3QtMic6ICdVU1cyJyxcbiAgICAgICdldS13ZXN0LTEnOiAnRVVXMScsXG4gICAgICAnZXUtd2VzdC0yJzogJ0VVVzInLFxuICAgICAgJ2V1LXdlc3QtMyc6ICdFVVczJyxcbiAgICAgICdldS1jZW50cmFsLTEnOiAnRVVDMScsXG4gICAgICAnZXUtbm9ydGgtMSc6ICdFVU4xJyxcbiAgICAgICdhcC1zb3V0aC0xJzogJ0FQUzEnLFxuICAgICAgJ2FwLXNvdXRoZWFzdC0xJzogJ0FQUzInLFxuICAgICAgJ2FwLXNvdXRoZWFzdC0yJzogJ0FQUzMnLFxuICAgICAgJ2FwLW5vcnRoZWFzdC0xJzogJ0FQTjEnLFxuICAgICAgJ2FwLW5vcnRoZWFzdC0yJzogJ0FQTjInLFxuICAgIH07XG5cbiAgICByZXR1cm4gcHJlZml4TWFwW3JlZ2lvbl0gfHwgJyc7XG4gIH1cbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVlBDRW5kcG9pbnRDYWxjdWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ByaWNpbmcvY2FsY3VsYXRvcnMvVlBDRW5kcG9pbnRDYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGtEQUFtRTtBQUVuRSxNQUFhLHFCQUFxQjtJQUlaO0lBSEgseUJBQXlCLEdBQUcsR0FBRyxDQUFDO0lBQ2hDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFFdkMsWUFBb0IscUJBQThCO1FBQTlCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUztJQUFHLENBQUM7SUFFdEQsUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLHVCQUF1QixDQUFDO0lBQ2xELENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUNqQixRQUF3QixFQUN4QixNQUFjLEVBQ2QsYUFBNEI7UUFFNUIsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLGVBQXFDLENBQUM7UUFDeEYsTUFBTSxXQUFXLEdBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxXQUFrQyxJQUFJLEVBQUUsQ0FBQztRQUVuRiwwQ0FBMEM7UUFDMUMsdURBQXVEO1FBQ3ZELE1BQU0saUJBQWlCLEdBQ3JCLG9CQUFvQixLQUFLLFNBQVM7WUFDbEMsQ0FBQyxvQkFBb0IsS0FBSyxTQUFTO2dCQUNqQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEUsK0NBQStDO1FBQy9DLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixPQUFPO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2dCQUNULFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixXQUFXLEVBQUU7b0JBQ1gsb0RBQW9EO29CQUNwRCxrREFBa0Q7aUJBQ25EO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBQSw4QkFBZSxFQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTdDLCtCQUErQjtZQUMvQixNQUFNLFVBQVUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQzlDLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixNQUFNLEVBQUUsSUFBQSw4QkFBZSxFQUFDLE1BQU0sQ0FBQztnQkFDL0IsT0FBTyxFQUFFO29CQUNQLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO29CQUNoRCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxtQkFBbUIsRUFBRTtpQkFDbEU7YUFDRixDQUFDLENBQUM7WUFFSCwyQkFBMkI7WUFDM0IsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RELFdBQVcsRUFBRSxXQUFXO2dCQUN4QixNQUFNLEVBQUUsSUFBQSw4QkFBZSxFQUFDLE1BQU0sQ0FBQztnQkFDL0IsT0FBTyxFQUFFO29CQUNQLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO29CQUNoRCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxtQkFBbUIsRUFBRTtpQkFDbEU7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLFVBQVUsS0FBSyxJQUFJLElBQUksa0JBQWtCLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELE9BQU87b0JBQ0wsTUFBTSxFQUFFLENBQUM7b0JBQ1QsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsVUFBVSxFQUFFLFNBQVM7b0JBQ3JCLFdBQVcsRUFBRTt3QkFDWCx5REFBeUQsTUFBTSxFQUFFO3FCQUNsRTtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUM7WUFDckYsTUFBTSxVQUFVLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDckQsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsR0FBRyxlQUFlLENBQUM7WUFDaEUsTUFBTSxTQUFTLEdBQUcsVUFBVSxHQUFHLGtCQUFrQixDQUFDO1lBRWxELE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixXQUFXLEVBQUU7b0JBQ1gsNkJBQTZCO29CQUM3QixpQkFBaUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSxhQUFhLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVE7b0JBQy9HLHFCQUFxQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsZUFBZSxVQUFVLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUTtvQkFDekgsV0FBVyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRO2lCQUN4QzthQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxDQUFDLDRCQUE0QixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNwRyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQWxHRCxzREFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZVdpdGhJZCB9IGZyb20gJy4uLy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VDb3N0Q2FsY3VsYXRvciwgTW9udGhseUNvc3QsIFByaWNpbmdDbGllbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVSZWdpb24sIGdldFJlZ2lvblByZWZpeCB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBWUENFbmRwb2ludENhbGN1bGF0b3IgaW1wbGVtZW50cyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFfUFJPQ0VTU0VEX0dCID0gMTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IEhPVVJTX1BFUl9NT05USCA9IDczMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RvbURhdGFQcm9jZXNzZWRHQj86IG51bWJlcikge31cblxuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkVDMjo6VlBDRW5kcG9pbnQnO1xuICB9XG5cbiAgYXN5bmMgY2FsY3VsYXRlQ29zdChcbiAgICByZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIGNvbnN0IGV4cGxpY2l0RW5kcG9pbnRUeXBlID0gcmVzb3VyY2UucHJvcGVydGllcz8uVnBjRW5kcG9pbnRUeXBlIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IChyZXNvdXJjZS5wcm9wZXJ0aWVzPy5TZXJ2aWNlTmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpIHx8ICcnO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBHYXRld2F5IGVuZHBvaW50XG4gICAgLy8gUHJpb3JpdHk6IGV4cGxpY2l0IHR5cGUgPiBpbmZlcnJlZCBmcm9tIHNlcnZpY2UgbmFtZVxuICAgIGNvbnN0IGlzR2F0ZXdheUVuZHBvaW50ID1cbiAgICAgIGV4cGxpY2l0RW5kcG9pbnRUeXBlID09PSAnR2F0ZXdheScgfHxcbiAgICAgIChleHBsaWNpdEVuZHBvaW50VHlwZSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgIChzZXJ2aWNlTmFtZS5pbmNsdWRlcygnczMnKSB8fCBzZXJ2aWNlTmFtZS5pbmNsdWRlcygnZHluYW1vZGInKSkpO1xuXG4gICAgLy8gR2F0ZXdheSBlbmRwb2ludHMgKFMzIGFuZCBEeW5hbW9EQikgYXJlIGZyZWVcbiAgICBpZiAoaXNHYXRld2F5RW5kcG9pbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnaGlnaCcsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgJ0dhdGV3YXkgVlBDIGVuZHBvaW50cyBmb3IgUzMgYW5kIER5bmFtb0RCIGFyZSBmcmVlJyxcbiAgICAgICAgICAnTm8gZGF0YSBwcm9jZXNzaW5nIGNoYXJnZXMgZm9yIGdhdGV3YXkgZW5kcG9pbnRzJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSW50ZXJmYWNlIGVuZHBvaW50cyBoYXZlIGhvdXJseSBhbmQgZGF0YSBwcm9jZXNzaW5nIGNvc3RzXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlZ2lvblByZWZpeCA9IGdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgXG4gICAgICAvLyBHZXQgaG91cmx5IHJhdGUgcGVyIGVuZHBvaW50XG4gICAgICBjb25zdCBob3VybHlSYXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uVlBDJyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdWcGNFbmRwb2ludCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IGAke3JlZ2lvblByZWZpeH1WcGNFbmRwb2ludC1Ib3Vyc2AgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgZGF0YSBwcm9jZXNzaW5nIHJhdGVcbiAgICAgIGNvbnN0IGRhdGFQcm9jZXNzaW5nUmF0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvblZQQycsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnVnBjRW5kcG9pbnQnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiBgJHtyZWdpb25QcmVmaXh9VnBjRW5kcG9pbnQtQnl0ZXNgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGhvdXJseVJhdGUgPT09IG51bGwgfHwgZGF0YVByb2Nlc3NpbmdSYXRlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAgIGBQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgVlBDIEVuZHBvaW50IGluIHJlZ2lvbiAke3JlZ2lvbn1gLFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFQcm9jZXNzZWRHQiA9IHRoaXMuY3VzdG9tRGF0YVByb2Nlc3NlZEdCIHx8IHRoaXMuREVGQVVMVF9EQVRBX1BST0NFU1NFRF9HQjtcbiAgICAgIGNvbnN0IGhvdXJseUNvc3QgPSBob3VybHlSYXRlICogdGhpcy5IT1VSU19QRVJfTU9OVEg7XG4gICAgICBjb25zdCBkYXRhUHJvY2Vzc2luZ0Nvc3QgPSBkYXRhUHJvY2Vzc2luZ1JhdGUgKiBkYXRhUHJvY2Vzc2VkR0I7XG4gICAgICBjb25zdCB0b3RhbENvc3QgPSBob3VybHlDb3N0ICsgZGF0YVByb2Nlc3NpbmdDb3N0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IHRvdGFsQ29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICAnSW50ZXJmYWNlIFZQQyBFbmRwb2ludCB0eXBlJyxcbiAgICAgICAgICBgSG91cmx5IHJhdGU6ICQke2hvdXJseVJhdGUudG9GaXhlZCg0KX0vaG91ciDDlyAke3RoaXMuSE9VUlNfUEVSX01PTlRIfSBob3VycyA9ICQke2hvdXJseUNvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBEYXRhIHByb2Nlc3Npbmc6ICQke2RhdGFQcm9jZXNzaW5nUmF0ZS50b0ZpeGVkKDQpfS9HQiDDlyAke2RhdGFQcm9jZXNzZWRHQn0gR0IgPSAkJHtkYXRhUHJvY2Vzc2luZ0Nvc3QudG9GaXhlZCgyKX0vbW9udGhgLFxuICAgICAgICAgIGBUb3RhbDogJCR7dG90YWxDb3N0LnRvRml4ZWQoMil9L21vbnRoYCxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- v0.1.27
1
+ v0.1.28
package/package.json CHANGED
@@ -82,7 +82,7 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "version": "0.1.27",
85
+ "version": "0.1.28",
86
86
  "bugs": {
87
87
  "url": "https://github.com/buildinginthecloud/cdk-cost-analyzer/issues"
88
88
  },