truemark-cdk-lib 0.0.21 → 0.0.23

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.
@@ -16,13 +16,13 @@ class DeployedFunction extends observed_function_1.ObservedFunction {
16
16
  function: this
17
17
  });
18
18
  if (((_b = props.deploymentOptions) === null || _b === void 0 ? void 0 : _b.includeCriticalAlarms) === undefined || props.deploymentOptions.includeCriticalAlarms) {
19
- this.deployment.addAlarms(...this.functionAlarms.criticalAlarms);
19
+ this.deployment.addAlarms(...this.functionAlarms.getCriticalAlarms());
20
20
  }
21
21
  if ((_c = props.deploymentOptions) === null || _c === void 0 ? void 0 : _c.includeWarningAlarms) {
22
- this.deployment.addAlarms(...this.functionAlarms.warningAlarms);
22
+ this.deployment.addAlarms(...this.functionAlarms.getWarningAlarms());
23
23
  }
24
24
  }
25
25
  }
26
26
  }
27
27
  exports.DeployedFunction = DeployedFunction;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95ZWQtZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3llZC1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBNEU7QUFDNUUsK0RBQW9GO0FBdUNwRjs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsb0NBQWdCO0lBSXBELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksT0FBQSxLQUFLLENBQUMsaUJBQWlCLDBDQUFFLGdCQUFnQixNQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUU7WUFFdkcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHdDQUFrQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQzNELEdBQUcsS0FBSyxDQUFDLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFFSCxJQUFJLE9BQUEsS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxxQkFBcUIsTUFBSyxTQUFTLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFO2dCQUNqSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDbEU7WUFDRCxVQUFJLEtBQUssQ0FBQyxpQkFBaUIsMENBQUUsb0JBQW9CLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNqRTtTQUNGO0lBQ0gsQ0FBQztDQUNGO0FBdEJELDRDQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtPYnNlcnZlZEZ1bmN0aW9uLCBPYnNlcnZlZEZ1bmN0aW9uUHJvcHN9IGZyb20gXCIuL29ic2VydmVkLWZ1bmN0aW9uXCI7XG5pbXBvcnQge0Z1bmN0aW9uRGVwbG95bWVudCwgRnVuY3Rpb25EZXBsb3ltZW50T3B0aW9uc30gZnJvbSBcIi4vZnVuY3Rpb24tZGVwbG95bWVudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveWVkRnVuY3Rpb25EZXBsb3ltZW50T3B0aW9ucyBleHRlbmRzIEZ1bmN0aW9uRGVwbG95bWVudE9wdGlvbnMge1xuICAvKipcbiAgICogSW5jbHVkZSBXYXJuaW5nIENsb3VkV2F0Y2ggYWxhcm1zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVdhcm5pbmdBbGFybXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIENyaXRpY2FsIENsb3VkV2F0Y2ggYWxhcm1zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQ3JpdGljYWxBbGFybXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCBwcmV2ZW50IHRoZSBjcmVhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYWxpYXMgYW5kXG4gICAqIGRlcGxveW1lbnQgZ3JvdXAgZm9yIHRoZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlRGVwbG95bWVudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRGdW5jdGlvbk9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBUaGUgZGVwbG95bWVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIHVzZS4gSWYgbm9uZSBhcmUgcHJvdmlkZWQgYSBkZWZhdWx0IHNldCBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudE9wdGlvbnM/OiBEZXBsb3llZEZ1bmN0aW9uRGVwbG95bWVudE9wdGlvbnM7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRGVwbG95ZWRGdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBsb3llZEZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBPYnNlcnZlZEZ1bmN0aW9uUHJvcHMsIERlcGxveWVkRnVuY3Rpb25PcHRpb25zIHt9XG5cbi8qKlxuICogTGFtYmRhIGZ1bmN0aW9uIHdpdGggQ29kZURlcGxveSBkZXBsb3ltZW50IGdyb3VwLlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95ZWRGdW5jdGlvbiBleHRlbmRzIE9ic2VydmVkRnVuY3Rpb24ge1xuXG4gIHJlYWRvbmx5IGRlcGxveW1lbnQ6IEZ1bmN0aW9uRGVwbG95bWVudDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGVwbG95ZWRGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuZGVwbG95bWVudE9wdGlvbnM/LmNyZWF0ZURlcGxveW1lbnQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5kZXBsb3ltZW50T3B0aW9ucy5jcmVhdGVEZXBsb3ltZW50KSB7XG5cbiAgICAgIHRoaXMuZGVwbG95bWVudCA9IG5ldyBGdW5jdGlvbkRlcGxveW1lbnQodGhpcywgJ0RlcGxveW1lbnQnLCB7XG4gICAgICAgIC4uLnByb3BzLmRlcGxveW1lbnRPcHRpb25zLFxuICAgICAgICBmdW5jdGlvbjogdGhpc1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9wcy5kZXBsb3ltZW50T3B0aW9ucz8uaW5jbHVkZUNyaXRpY2FsQWxhcm1zID09PSB1bmRlZmluZWQgfHwgcHJvcHMuZGVwbG95bWVudE9wdGlvbnMuaW5jbHVkZUNyaXRpY2FsQWxhcm1zKSB7XG4gICAgICAgIHRoaXMuZGVwbG95bWVudC5hZGRBbGFybXMoLi4udGhpcy5mdW5jdGlvbkFsYXJtcy5jcml0aWNhbEFsYXJtcyk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuZGVwbG95bWVudE9wdGlvbnM/LmluY2x1ZGVXYXJuaW5nQWxhcm1zKSB7XG4gICAgICAgIHRoaXMuZGVwbG95bWVudC5hZGRBbGFybXMoLi4udGhpcy5mdW5jdGlvbkFsYXJtcy53YXJuaW5nQWxhcm1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95ZWQtZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3llZC1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBNEU7QUFDNUUsK0RBQW9GO0FBdUNwRjs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsb0NBQWdCO0lBSXBELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksT0FBQSxLQUFLLENBQUMsaUJBQWlCLDBDQUFFLGdCQUFnQixNQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUU7WUFFdkcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHdDQUFrQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQzNELEdBQUcsS0FBSyxDQUFDLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFFSCxJQUFJLE9BQUEsS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxxQkFBcUIsTUFBSyxTQUFTLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFO2dCQUNqSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsVUFBSSxLQUFLLENBQUMsaUJBQWlCLDBDQUFFLG9CQUFvQixFQUFFO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUF0QkQsNENBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge09ic2VydmVkRnVuY3Rpb24sIE9ic2VydmVkRnVuY3Rpb25Qcm9wc30gZnJvbSBcIi4vb2JzZXJ2ZWQtZnVuY3Rpb25cIjtcbmltcG9ydCB7RnVuY3Rpb25EZXBsb3ltZW50LCBGdW5jdGlvbkRlcGxveW1lbnRPcHRpb25zfSBmcm9tIFwiLi9mdW5jdGlvbi1kZXBsb3ltZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRGdW5jdGlvbkRlcGxveW1lbnRPcHRpb25zIGV4dGVuZHMgRnVuY3Rpb25EZXBsb3ltZW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJbmNsdWRlIFdhcm5pbmcgQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlV2FybmluZ0FsYXJtcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluY2x1ZGUgQ3JpdGljYWwgQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDcml0aWNhbEFsYXJtcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHByZXZlbnQgdGhlIGNyZWF0aW9uIG9mIHRoZSBmdW5jdGlvbiBhbGlhcyBhbmRcbiAgICogZGVwbG95bWVudCBncm91cCBmb3IgdGhlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVEZXBsb3ltZW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3llZEZ1bmN0aW9uT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdG8gdXNlLiBJZiBub25lIGFyZSBwcm92aWRlZCBhIGRlZmF1bHQgc2V0IGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50T3B0aW9ucz86IERlcGxveWVkRnVuY3Rpb25EZXBsb3ltZW50T3B0aW9ucztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBEZXBsb3llZEZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveWVkRnVuY3Rpb25Qcm9wcyBleHRlbmRzIE9ic2VydmVkRnVuY3Rpb25Qcm9wcywgRGVwbG95ZWRGdW5jdGlvbk9wdGlvbnMge31cblxuLyoqXG4gKiBMYW1iZGEgZnVuY3Rpb24gd2l0aCBDb2RlRGVwbG95IGRlcGxveW1lbnQgZ3JvdXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBsb3llZEZ1bmN0aW9uIGV4dGVuZHMgT2JzZXJ2ZWRGdW5jdGlvbiB7XG5cbiAgcmVhZG9ubHkgZGVwbG95bWVudDogRnVuY3Rpb25EZXBsb3ltZW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEZXBsb3llZEZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5kZXBsb3ltZW50T3B0aW9ucz8uY3JlYXRlRGVwbG95bWVudCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmRlcGxveW1lbnRPcHRpb25zLmNyZWF0ZURlcGxveW1lbnQpIHtcblxuICAgICAgdGhpcy5kZXBsb3ltZW50ID0gbmV3IEZ1bmN0aW9uRGVwbG95bWVudCh0aGlzLCAnRGVwbG95bWVudCcsIHtcbiAgICAgICAgLi4ucHJvcHMuZGVwbG95bWVudE9wdGlvbnMsXG4gICAgICAgIGZ1bmN0aW9uOiB0aGlzXG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLmRlcGxveW1lbnRPcHRpb25zPy5pbmNsdWRlQ3JpdGljYWxBbGFybXMgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5kZXBsb3ltZW50T3B0aW9ucy5pbmNsdWRlQ3JpdGljYWxBbGFybXMpIHtcbiAgICAgICAgdGhpcy5kZXBsb3ltZW50LmFkZEFsYXJtcyguLi50aGlzLmZ1bmN0aW9uQWxhcm1zLmdldENyaXRpY2FsQWxhcm1zKCkpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRlcGxveW1lbnRPcHRpb25zPy5pbmNsdWRlV2FybmluZ0FsYXJtcykge1xuICAgICAgICB0aGlzLmRlcGxveW1lbnQuYWRkQWxhcm1zKC4uLnRoaXMuZnVuY3Rpb25BbGFybXMuZ2V0V2FybmluZ0FsYXJtcygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,14 +1,13 @@
1
1
  import { Duration } from "aws-cdk-lib";
2
- import { ITopic } from "aws-cdk-lib/aws-sns";
3
- import { Alarm, IAlarmAction } from "aws-cdk-lib/aws-cloudwatch";
4
- import { IDashboardFactory, MonitoringFacade } from "cdk-monitoring-constructs";
2
+ import { AlarmCategory, AlarmsBase, AlarmsCategoryOptions, AlarmsOptions } from "../../aws-monitoring";
5
3
  import { IFunction } from "aws-cdk-lib/aws-lambda";
6
4
  import { ILogGroup } from "aws-cdk-lib/aws-logs";
7
5
  import { Construct } from "constructs";
6
+ import { Alarm } from "aws-cdk-lib/aws-cloudwatch";
8
7
  /**
9
8
  * Category options for CloudWatch alarms for Lambda Functions.
10
9
  */
11
- export interface FunctionAlarmsCategoryOptions {
10
+ export interface FunctionAlarmsCategoryOptions extends AlarmsCategoryOptions {
12
11
  /**
13
12
  * Maximum 50th percentile latency
14
13
  */
@@ -112,80 +111,17 @@ export interface FunctionAlarmsCategoryOptions {
112
111
  * @default '"[ERROR]"'
113
112
  */
114
113
  readonly dashboardLogPattern?: string;
115
- /**
116
- * Topics to send alarm notifications
117
- */
118
- readonly notifyTopics?: ITopic[];
119
- /**
120
- * Actions to send alarm notifications
121
- */
122
- readonly notifyActions?: IAlarmAction[];
123
114
  }
124
115
  /**
125
116
  * Options for CloudWatch alarms for Lambda Functions
126
117
  */
127
- export interface FunctionAlarmsOptions {
128
- /**
129
- * Alarm thresholds for critical alarms.
130
- *
131
- * If no properties are provided, a set of default alarms are created.
132
- */
133
- readonly criticalAlarmOptions?: FunctionAlarmsCategoryOptions;
134
- /**
135
- * Alarm threshold for warning alarms.
136
- *
137
- * If no properties are provided, a set of default alarms are created.
138
- */
139
- readonly warningAlarmOptions?: FunctionAlarmsCategoryOptions;
140
- /**
141
- * Main entry point for monitoring.
142
- *
143
- * If no value is provided, a default facade will be created.
144
- */
145
- readonly monitoringFacade?: MonitoringFacade;
146
- /**
147
- * The DashboardFactory to use when generating CloudWatch dashboards.
148
- *
149
- * If not defined, dashboards are not generated.
150
- */
151
- readonly dashboardFactory?: IDashboardFactory;
118
+ export interface FunctionAlarmsOptions extends AlarmsOptions<FunctionAlarmsCategoryOptions> {
152
119
  /**
153
120
  * Generate dashboard charts for Lambda insights metrics.
154
121
  *
155
122
  * @default true
156
123
  */
157
124
  readonly lambdaInsightsEnabled?: boolean;
158
- /**
159
- * Add widgets to alarm dashboard.
160
- *
161
- * @default true
162
- */
163
- readonly addToAlarmDashboard?: boolean;
164
- /**
165
- * Add widgets to detailed dashboard.
166
- *
167
- * @default true
168
- */
169
- readonly addToDetailDashboard?: boolean;
170
- /**
171
- * Add widgets to summary dashboard.
172
- *
173
- * @default true
174
- */
175
- readonly addToSummaryDashboard?: boolean;
176
- /**
177
- * Prefix for generated alarms.
178
- *
179
- * @default Stack.of(this).stackName
180
- */
181
- readonly alarmNamePrefix?: string;
182
- }
183
- /**
184
- * Used to disambiguate warning and critical alarms.
185
- */
186
- export declare enum FunctionAlarmCategory {
187
- Critical = "Critical",
188
- Warning = "Warning"
189
125
  }
190
126
  /**
191
127
  * Properties for FunctionAlarms
@@ -203,7 +139,7 @@ export interface FunctionAlarmsProps extends FunctionAlarmsOptions {
203
139
  /**
204
140
  * Creates CloudWatch alarms for a Lambda Function.
205
141
  */
206
- export declare class FunctionAlarms extends Construct {
142
+ export declare class FunctionAlarms extends AlarmsBase<FunctionAlarmsCategoryOptions, FunctionAlarmsProps> {
207
143
  /**
208
144
  * Default pattern used for the critical log metric.
209
145
  */
@@ -216,24 +152,11 @@ export declare class FunctionAlarms extends Construct {
216
152
  * Default pattern used to show logs on the CloudWatch dashboard.
217
153
  */
218
154
  static readonly DEFAULT_LOG_INSIGHTS_PATTERN = "\\[ERROR\\]|\\[WARNING\\]";
219
- /**
220
- * The MonitoringFacade instance either passed in or generated.
221
- */
222
- readonly monitoringFacade: MonitoringFacade;
223
- /**
224
- * Generated critical alarms.
225
- */
226
- readonly criticalAlarms: Alarm[];
227
- /**
228
- * Generated warning alarms.
229
- */
230
- readonly warningAlarms: Alarm[];
231
- private readonly props;
232
- private addRecordValue;
233
- private toRecord;
234
- private addAlarm;
235
155
  private addFunctionMonitoring;
236
- private addLogMonitoringToDashboard;
156
+ private criticalLogAlarm;
157
+ private warningLogAlarm;
237
158
  private addLogAlarm;
159
+ private addLogMonitoringToDashboard;
238
160
  constructor(scope: Construct, id: string, props: FunctionAlarmsProps);
161
+ getAlarms(category: AlarmCategory): Alarm[];
239
162
  }
@@ -1,110 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionAlarms = exports.FunctionAlarmCategory = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const cdk_monitoring_constructs_1 = require("cdk-monitoring-constructs");
6
- const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
3
+ exports.FunctionAlarms = void 0;
7
4
  const aws_monitoring_1 = require("../../aws-monitoring");
8
- const constructs_1 = require("constructs");
9
5
  const aws_cloudwatch_1 = require("../../aws-cloudwatch");
10
- /**
11
- * Helper function to get the correct critical or warning options from FunctionAlarmsOptions dynamically.
12
- *
13
- * @param props the properties holding the values
14
- * @param category the alarm category
15
- */
16
- function getFunctionAlarmsCategoryOptions(props, category) {
17
- const fprop = category === 'Critical' ? 'criticalAlarmOptions' : 'warningAlarmOptions';
18
- return props[fprop];
19
- }
20
- /**
21
- * Helper function to combine an array if IAlarmAction and ITopic objects into a single IAlarmAction array.
22
- *
23
- * @param actions the actions
24
- * @param topics the topics
25
- */
26
- function combineActions(actions, topics) {
27
- const combined = [];
28
- actions === null || actions === void 0 ? void 0 : actions.forEach((action) => combined.push(action));
29
- topics === null || topics === void 0 ? void 0 : topics.forEach((topic) => combined.push(new aws_cloudwatch_actions_1.SnsAction(topic)));
30
- return combined;
31
- }
32
- /**
33
- * Used to disambiguate warning and critical alarms.
34
- */
35
- var FunctionAlarmCategory;
36
- (function (FunctionAlarmCategory) {
37
- FunctionAlarmCategory["Critical"] = "Critical";
38
- FunctionAlarmCategory["Warning"] = "Warning";
39
- })(FunctionAlarmCategory = exports.FunctionAlarmCategory || (exports.FunctionAlarmCategory = {}));
40
- /**
41
- * Internal class to assist in generating CustomAlarmThreshold instances.
42
- */
43
- class FunctionAlarmFacade {
44
- constructor(props) {
45
- this.props = props;
46
- this.actions = combineActions(props.actions, props.topics);
47
- }
48
- toCustomAlarmThreshold() {
49
- var _a;
50
- if (this.props.threshold !== undefined || this.props.defaultThreshold !== undefined) {
51
- return {
52
- [this.props.prop]: (_a = this.props.threshold) !== null && _a !== void 0 ? _a : this.props.defaultThreshold,
53
- actionsEnabled: true,
54
- actionOverride: new aws_monitoring_1.StandardAlarmActionsStrategy({ actions: this.actions }),
55
- };
56
- }
57
- return undefined;
58
- }
59
- addCustomAlarmThreshold(category, record) {
60
- const c = this.toCustomAlarmThreshold();
61
- if (c !== undefined) {
62
- record[category] = c;
63
- }
64
- }
65
- }
66
6
  /**
67
7
  * Creates CloudWatch alarms for a Lambda Function.
68
8
  */
69
- class FunctionAlarms extends constructs_1.Construct {
9
+ class FunctionAlarms extends aws_monitoring_1.AlarmsBase {
70
10
  constructor(scope, id, props) {
71
- var _a, _b;
72
- super(scope, id);
73
- this.props = props;
74
- this.criticalAlarms = [];
75
- this.warningAlarms = [];
76
- this.monitoringFacade = (_a = props.monitoringFacade) !== null && _a !== void 0 ? _a : new cdk_monitoring_constructs_1.MonitoringFacade(this, 'MonitoringFacade', {
77
- metricFactoryDefaults: {},
78
- alarmFactoryDefaults: {
79
- actionsEnabled: true,
80
- alarmNamePrefix: (_b = props.alarmNamePrefix) !== null && _b !== void 0 ? _b : aws_cdk_lib_1.Stack.of(this).stackName
81
- },
82
- dashboardFactory: props.dashboardFactory
83
- });
11
+ super(scope, id, props);
84
12
  this.addFunctionMonitoring();
85
13
  this.addLogMonitoringToDashboard();
86
- this.addLogAlarm(FunctionAlarmCategory.Critical, 1);
87
- this.addLogAlarm(FunctionAlarmCategory.Warning);
88
- }
89
- addRecordValue(record, category, sprop, tprop, defaultThreshold) {
90
- const fprops = getFunctionAlarmsCategoryOptions(this.props, category);
91
- new FunctionAlarmFacade({
92
- prop: tprop,
93
- threshold: fprops === null || fprops === void 0 ? void 0 : fprops[sprop],
94
- defaultThreshold,
95
- topics: fprops === null || fprops === void 0 ? void 0 : fprops.notifyTopics,
96
- actions: fprops === null || fprops === void 0 ? void 0 : fprops.notifyActions
97
- }).addCustomAlarmThreshold(category, record);
98
- }
99
- toRecord(sprop, tprop, defaultThreshold) {
100
- const record = {};
101
- this.addRecordValue(record, FunctionAlarmCategory.Critical, sprop, tprop, defaultThreshold);
102
- this.addRecordValue(record, FunctionAlarmCategory.Warning, sprop, tprop, defaultThreshold);
103
- return Object.keys(record).length > 0 ? record : undefined;
104
- }
105
- addAlarm(category, ...alarm) {
106
- const arr = category === FunctionAlarmCategory.Critical ? this.criticalAlarms : this.warningAlarms;
107
- arr.push(...alarm);
14
+ this.addLogAlarm(aws_monitoring_1.AlarmCategory.Critical, 1);
15
+ this.addLogAlarm(aws_monitoring_1.AlarmCategory.Warning);
108
16
  }
109
17
  addFunctionMonitoring() {
110
18
  var _a, _b, _c;
@@ -113,48 +21,30 @@ class FunctionAlarms extends constructs_1.Construct {
113
21
  addToAlarmDashboard: (_a = this.props.addToAlarmDashboard) !== null && _a !== void 0 ? _a : true,
114
22
  addToDetailDashboard: (_b = this.props.addToDetailDashboard) !== null && _b !== void 0 ? _b : true,
115
23
  addToSummaryDashboard: (_c = this.props.addToSummaryDashboard) !== null && _c !== void 0 ? _c : true,
116
- addLatencyP50Alarm: this.toRecord('p50Latency', 'maxLatency'),
117
- addLatencyP90Alarm: this.toRecord('p90Latency', 'maxLatency'),
118
- addLatencyP99Alarm: this.toRecord('p99Latency', 'maxLatency'),
119
- addFaultCountAlarm: this.toRecord('maxFaults', 'maxErrorCount', 0),
120
- addFaultRateAlarm: this.toRecord('avgFaults', 'maxErrorRate'),
121
- addLowTpsAlarm: this.toRecord('minTps', 'minTps'),
122
- addHighTpsAlarm: this.toRecord('maxTps', 'maxTps'),
123
- addThrottlesCountAlarm: this.toRecord('maxThrottles', 'maxErrorCount', 0),
124
- addThrottlesRateAlarm: this.toRecord('avgThrottles', 'maxErrorRate'),
125
- addConcurrentExecutionsCountAlarm: this.toRecord('maxConcurrentExecutions', 'maxRunningTasks'),
126
- addMaxIteratorAgeAlarm: this.toRecord('maxIteratorAge', 'maxAgeInMillis'),
127
- addEnhancedMonitoringMaxCpuTotalTimeAlarm: this.toRecord('maxCpuTime', 'maxDuration'),
128
- addEnhancedMonitoringP90CpuTotalTimeAlarm: this.toRecord('p90CpuTime', 'maxDuration'),
129
- addEnhancedMonitoringAvgCpuTotalTimeAlarm: this.toRecord('avgCpuTime', 'maxDuration'),
130
- addEnhancedMonitoringMaxMemoryUtilizationAlarm: this.toRecord('maxMemory', 'maxUsagePercent'),
131
- addEnhancedMonitoringP90MemoryUtilizationAlarm: this.toRecord('p90Memory', 'maxUsagePercent'),
132
- addEnhancedMonitoringAvgMemoryUtilizationAlarm: this.toRecord('avgMemory', 'maxUsagePercent')
24
+ addLatencyP50Alarm: this.toRecord("p50Latency", "maxLatency"),
25
+ addLatencyP90Alarm: this.toRecord("p90Latency", "maxLatency"),
26
+ addLatencyP99Alarm: this.toRecord("p99Latency", "maxLatency"),
27
+ addFaultCountAlarm: this.toRecord("maxFaults", "maxErrorCount", 0),
28
+ addFaultRateAlarm: this.toRecord("avgFaults", "maxErrorRate"),
29
+ addLowTpsAlarm: this.toRecord("minTps", "minTps"),
30
+ addHighTpsAlarm: this.toRecord("maxTps", "maxTps"),
31
+ addThrottlesCountAlarm: this.toRecord("maxThrottles", "maxErrorCount", 0),
32
+ addThrottlesRateAlarm: this.toRecord("avgThrottles", "maxErrorRate"),
33
+ addConcurrentExecutionsCountAlarm: this.toRecord("maxConcurrentExecutions", "maxRunningTasks"),
34
+ addMaxIteratorAgeAlarm: this.toRecord("maxIteratorAge", "maxAgeInMillis"),
35
+ addEnhancedMonitoringMaxCpuTotalTimeAlarm: this.toRecord("maxCpuTime", "maxDuration"),
36
+ addEnhancedMonitoringP90CpuTotalTimeAlarm: this.toRecord("p90CpuTime", "maxDuration"),
37
+ addEnhancedMonitoringAvgCpuTotalTimeAlarm: this.toRecord("avgCpuTime", "maxDuration"),
38
+ addEnhancedMonitoringMaxMemoryUtilizationAlarm: this.toRecord("maxMemory", "maxUsagePercent"),
39
+ addEnhancedMonitoringP90MemoryUtilizationAlarm: this.toRecord("p90Memory", "maxUsagePercent"),
40
+ addEnhancedMonitoringAvgMemoryUtilizationAlarm: this.toRecord("avgMemory", "maxUsagePercent")
133
41
  });
134
- // Add generated alarms to this object
135
- this.addAlarm(FunctionAlarmCategory.Critical, ...this.monitoringFacade.createdAlarmsWithDisambiguator(FunctionAlarmCategory.Critical).map((awa) => awa.alarm));
136
- this.addAlarm(FunctionAlarmCategory.Warning, ...this.monitoringFacade.createdAlarmsWithDisambiguator(FunctionAlarmCategory.Warning).map((awa) => awa.alarm));
137
- }
138
- addLogMonitoringToDashboard() {
139
- var _a, _b, _c, _d, _e, _f;
140
- let pattern = ((_a = this.props.criticalAlarmOptions) === null || _a === void 0 ? void 0 : _a.dashboardLogPattern) === undefined
141
- && ((_b = this.props.warningAlarmOptions) === null || _b === void 0 ? void 0 : _b.dashboardLogPattern) === undefined
142
- ? FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN
143
- : '';
144
- pattern += (_d = (_c = this.props.criticalAlarmOptions) === null || _c === void 0 ? void 0 : _c.dashboardLogPattern) !== null && _d !== void 0 ? _d : '';
145
- pattern += (_f = (pattern !== '' ? '|' : '') + ((_e = this.props.warningAlarmOptions) === null || _e === void 0 ? void 0 : _e.dashboardLogPattern)) !== null && _f !== void 0 ? _f : '';
146
- if (pattern !== '') {
147
- this.monitoringFacade.monitorLog({
148
- logGroupName: this.props.logGroup.logGroupName,
149
- pattern,
150
- });
151
- }
152
42
  }
153
43
  addLogAlarm(category, defaultThreshold) {
154
44
  var _a, _b, _c, _d;
155
- const fprops = getFunctionAlarmsCategoryOptions(this.props, category);
45
+ const fprops = category === aws_monitoring_1.AlarmCategory.Critical ? this.props.criticalAlarmOptions : this.props.warningAlarmOptions;
156
46
  const threshold = (_a = fprops === null || fprops === void 0 ? void 0 : fprops.maxLogCount) !== null && _a !== void 0 ? _a : defaultThreshold;
157
- const pattern = ((_b = fprops === null || fprops === void 0 ? void 0 : fprops.metricLogPattern) !== null && _b !== void 0 ? _b : category === FunctionAlarmCategory.Critical) ? FunctionAlarms.DEFAULT_CRITICAL_LOG_METRIC_PATTERN
47
+ const pattern = ((_b = fprops === null || fprops === void 0 ? void 0 : fprops.metricLogPattern) !== null && _b !== void 0 ? _b : category === aws_monitoring_1.AlarmCategory.Critical) ? FunctionAlarms.DEFAULT_CRITICAL_LOG_METRIC_PATTERN
158
48
  : FunctionAlarms.DEFAULT_WARNING_LOG_METRIC_PATTERN;
159
49
  const evaluationPeriods = (_c = fprops === null || fprops === void 0 ? void 0 : fprops.logEvaluationPeriods) !== null && _c !== void 0 ? _c : 2;
160
50
  const datapointsToAlarm = (_d = fprops === null || fprops === void 0 ? void 0 : fprops.logDataPointsToAlarm) !== null && _d !== void 0 ? _d : 1;
@@ -167,9 +57,37 @@ class FunctionAlarms extends constructs_1.Construct {
167
57
  datapointsToAlarm,
168
58
  metricName: category + 'LogCount',
169
59
  });
170
- // Add generated alarm to this object
171
- this.addAlarm(category, logAlarm.alarm);
60
+ if (category === aws_monitoring_1.AlarmCategory.Critical) {
61
+ this.criticalLogAlarm = logAlarm;
62
+ }
63
+ else {
64
+ this.warningLogAlarm = logAlarm;
65
+ }
66
+ }
67
+ }
68
+ addLogMonitoringToDashboard() {
69
+ var _a, _b, _c, _d, _e, _f;
70
+ let pattern = ((_a = this.props.criticalAlarmOptions) === null || _a === void 0 ? void 0 : _a.dashboardLogPattern) === undefined
71
+ && ((_b = this.props.warningAlarmOptions) === null || _b === void 0 ? void 0 : _b.dashboardLogPattern) === undefined
72
+ ? FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN
73
+ : '';
74
+ pattern += (_d = (_c = this.props.criticalAlarmOptions) === null || _c === void 0 ? void 0 : _c.dashboardLogPattern) !== null && _d !== void 0 ? _d : '';
75
+ pattern += (_f = (pattern !== '' ? '|' : '') + ((_e = this.props.warningAlarmOptions) === null || _e === void 0 ? void 0 : _e.dashboardLogPattern)) !== null && _f !== void 0 ? _f : '';
76
+ if (pattern !== '') {
77
+ this.monitoringFacade.monitorLog({
78
+ logGroupName: this.props.logGroup.logGroupName,
79
+ pattern,
80
+ });
81
+ }
82
+ }
83
+ getAlarms(category) {
84
+ var _a, _b;
85
+ const alarms = super.getAlarms(category);
86
+ const logAlarm = category === aws_monitoring_1.AlarmCategory.Critical ? (_a = this.criticalLogAlarm) === null || _a === void 0 ? void 0 : _a.alarm : (_b = this.warningLogAlarm) === null || _b === void 0 ? void 0 : _b.alarm;
87
+ if (logAlarm !== undefined) {
88
+ alarms.push(logAlarm);
172
89
  }
90
+ return alarms;
173
91
  }
174
92
  }
175
93
  exports.FunctionAlarms = FunctionAlarms;
@@ -185,4 +103,4 @@ FunctionAlarms.DEFAULT_WARNING_LOG_METRIC_PATTERN = '"[WARNING]"';
185
103
  * Default pattern used to show logs on the CloudWatch dashboard.
186
104
  */
187
105
  FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN = '\\\[ERROR\\\]|\\\[WARNING\\\]';
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxhcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb24tYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE0QztBQUc1Qyx5RUFNbUM7QUFDbkMsK0VBQTZEO0FBQzdELHlEQUFrRTtBQUdsRSwyQ0FBcUM7QUFDckMseURBQW9EO0FBb05wRDs7Ozs7R0FLRztBQUNILFNBQVMsZ0NBQWdDLENBQUMsS0FBNEIsRUFBRSxRQUErQjtJQUNyRyxNQUFNLEtBQUssR0FBZ0MsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQ3BILE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsY0FBYyxDQUFDLE9BQXdCLEVBQUUsTUFBaUI7SUFDakUsTUFBTSxRQUFRLEdBQW1CLEVBQUUsQ0FBQTtJQUNuQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3BELE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQ0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDaEUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFHWDtBQUhELFdBQVkscUJBQXFCO0lBQy9CLDhDQUFxQixDQUFBO0lBQ3JCLDRDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUdoQztBQWFEOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUI7SUFNdkIs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RSxRQUFRLEdBQUcsVUFBVTthQUNsQyxDQUFDLENBQUM7WUFDSCxxQ0FBcUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQzs7QUEvSEgsd0NBcUpDO0FBbkpDOztHQUVHO0FBQ2Esa0RBQW1DLEdBQUcsV0FBVyxDQUFDO0FBRWxFOztHQUVHO0FBQ2EsaURBQWtDLEdBQUcsYUFBYSxDQUFDO0FBRW5FOztHQUVHO0FBQ2EsMkNBQTRCLEdBQUcsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0R1cmF0aW9uLCBTdGFja30gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0lUb3BpY30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7QWxhcm0sIElBbGFybUFjdGlvbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQge1xuICBDdXN0b21BbGFybVRocmVzaG9sZCwgRHVyYXRpb25UaHJlc2hvbGQsXG4gIEVycm9yQ291bnRUaHJlc2hvbGQsIEVycm9yUmF0ZVRocmVzaG9sZCwgSGlnaFRwc1RocmVzaG9sZCxcbiAgSURhc2hib2FyZEZhY3RvcnksXG4gIExhdGVuY3lUaHJlc2hvbGQsIExvd1Rwc1RocmVzaG9sZCwgTWF4QWdlVGhyZXNob2xkLFxuICBNb25pdG9yaW5nRmFjYWRlLCBSdW5uaW5nVGFza0NvdW50VGhyZXNob2xkLCBVc2FnZVRocmVzaG9sZFxufSBmcm9tIFwiY2RrLW1vbml0b3JpbmctY29uc3RydWN0c1wiO1xuaW1wb3J0IHtTbnNBY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaC1hY3Rpb25zXCI7XG5pbXBvcnQge1N0YW5kYXJkQWxhcm1BY3Rpb25zU3RyYXRlZ3l9IGZyb20gXCIuLi8uLi9hd3MtbW9uaXRvcmluZ1wiO1xuaW1wb3J0IHtJRnVuY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge0lMb2dHcm91cH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7TG9nTWV0cmljQWxhcm19IGZyb20gXCIuLi8uLi9hd3MtY2xvdWR3YXRjaFwiO1xuXG4vKipcbiAqIENhdGVnb3J5IG9wdGlvbnMgZm9yIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBMYW1iZGEgRnVuY3Rpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIHtcblxuICAvKipcbiAgICogTWF4aW11bSA1MHRoIHBlcmNlbnRpbGUgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgcDUwTGF0ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIDkwdGggcGVyY2VudGlsZSBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBwOTBMYXRlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gOTl0aCBwZXJjZW50aWxlIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHA5OUxhdGVuY3k/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgZmF1bHRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEZhdWx0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSBudW1iZXIgb2YgZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBhdmdGYXVsdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtaW5UcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtYXhUcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBtYXhUaHJvdHRsZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZnVGhyb3R0bGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbmN1cnJlbnQgZXhlY3V0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIGRhdGEgd2FpdHMgYmVmb3JlIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24uXG4gICAqIFNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3ByZW1pdW1zdXBwb3J0L2tub3dsZWRnZS1jZW50ZXIvbGFtYmRhLWl0ZXJhdG9yLWFnZS9cbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZXJhdG9yQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiA5MHRoIHBlcmNlbnRpbGUgQ1BVIHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IHA5MENwdVRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQXZlcmFnZSBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnQ3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBtZW1vcnlcbiAgICovXG4gIHJlYWRvbmx5IG1heE1lbW9yeT86IG51bWJlcjtcblxuICAvKipcbiAgICogOTB0aCBwZXJjZW50aWxlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgcDkwTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMb2cgcGF0dGVybiB0byBtYXRjaCBmb3IgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1xcXFxcXFtFUlJPUlxcXFxcXF0nXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNMb2dQYXR0ZXJuPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGxvZyBldmVudHMgbWF0Y2hpbmcgdGhlIG1ldHJpY0xvZ1BhdHRlcm4uXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgZm9yIENyaXRpY2FsIEFsYXJtXG4gICAqL1xuICByZWFkb25seSBtYXhMb2dDb3VudD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIG92ZXIgd2hpY2ggZGF0YSBpcyBjb21wYXJlZCBmb3IgbG9nIGV2ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXJcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRhdGEgcG9pbnRzIHRoYXQgbXVzdCBiZSBicmVhY2hpbmcgdG8gdHJpZ2dlciB0aGUgYWxhcm0gZm9yIGxvZyBldmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0RhdGFQb2ludHNUb0FsYXJtPzogbnVtYmVyXG5cbiAgLyoqXG4gICAqIExvZyBwYXR0ZXJuIHRvIG1hdGNoIGZvciB0aGUgZGFzaGJvYXJkXG4gICAqXG4gICAqIEBkZWZhdWx0ICdcIltFUlJPUl1cIidcbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZExvZ1BhdHRlcm4/OiBzdHJpbmdcblxuICAvKipcbiAgICogVG9waWNzIHRvIHNlbmQgYWxhcm0gbm90aWZpY2F0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZ5VG9waWNzPzogSVRvcGljW107XG5cbiAgLyoqXG4gICAqIEFjdGlvbnMgdG8gc2VuZCBhbGFybSBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZnlBY3Rpb25zPzogSUFsYXJtQWN0aW9uW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgQ2xvdWRXYXRjaCBhbGFybXMgZm9yIExhbWJkYSBGdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFsYXJtc09wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aHJlc2hvbGRzIGZvciBjcml0aWNhbCBhbGFybXMuXG4gICAqXG4gICAqIElmIG5vIHByb3BlcnRpZXMgYXJlIHByb3ZpZGVkLCBhIHNldCBvZiBkZWZhdWx0IGFsYXJtcyBhcmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNyaXRpY2FsQWxhcm1PcHRpb25zPzogRnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZCBmb3Igd2FybmluZyBhbGFybXMuXG4gICAqXG4gICAqIElmIG5vIHByb3BlcnRpZXMgYXJlIHByb3ZpZGVkLCBhIHNldCBvZiBkZWZhdWx0IGFsYXJtcyBhcmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHdhcm5pbmdBbGFybU9wdGlvbnM/OiBGdW5jdGlvbkFsYXJtc0NhdGVnb3J5T3B0aW9ucztcblxuICAvKipcbiAgICogTWFpbiBlbnRyeSBwb2ludCBmb3IgbW9uaXRvcmluZy5cbiAgICpcbiAgICogSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGEgZGVmYXVsdCBmYWNhZGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZ0ZhY2FkZT86IE1vbml0b3JpbmdGYWNhZGVcblxuICAvKipcbiAgICogVGhlIERhc2hib2FyZEZhY3RvcnkgdG8gdXNlIHdoZW4gZ2VuZXJhdGluZyBDbG91ZFdhdGNoIGRhc2hib2FyZHMuXG4gICAqXG4gICAqIElmIG5vdCBkZWZpbmVkLCBkYXNoYm9hcmRzIGFyZSBub3QgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkRmFjdG9yeT86IElEYXNoYm9hcmRGYWN0b3J5O1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBkYXNoYm9hcmQgY2hhcnRzIGZvciBMYW1iZGEgaW5zaWdodHMgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhSW5zaWdodHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gYWxhcm0gZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0FsYXJtRGFzaGJvYXJkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gZGV0YWlsZWQgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0RldGFpbERhc2hib2FyZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB3aWRnZXRzIHRvIHN1bW1hcnkgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb1N1bW1hcnlEYXNoYm9hcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIGdlbmVyYXRlZCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1OYW1lUHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgY3JpdGljYWwgb3Igd2FybmluZyBvcHRpb25zIGZyb20gRnVuY3Rpb25BbGFybXNPcHRpb25zIGR5bmFtaWNhbGx5LlxuICpcbiAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyBob2xkaW5nIHRoZSB2YWx1ZXNcbiAqIEBwYXJhbSBjYXRlZ29yeSB0aGUgYWxhcm0gY2F0ZWdvcnlcbiAqL1xuZnVuY3Rpb24gZ2V0RnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnMocHJvcHM6IEZ1bmN0aW9uQWxhcm1zT3B0aW9ucywgY2F0ZWdvcnk6IEZ1bmN0aW9uQWxhcm1DYXRlZ29yeSk6IEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZnByb3A6IGtleW9mIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucyA9IGNhdGVnb3J5ID09PSAnQ3JpdGljYWwnID8gJ2NyaXRpY2FsQWxhcm1PcHRpb25zJyA6ICd3YXJuaW5nQWxhcm1PcHRpb25zJztcbiAgcmV0dXJuIHByb3BzW2Zwcm9wXTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY29tYmluZSBhbiBhcnJheSBpZiBJQWxhcm1BY3Rpb24gYW5kIElUb3BpYyBvYmplY3RzIGludG8gYSBzaW5nbGUgSUFsYXJtQWN0aW9uIGFycmF5LlxuICpcbiAqIEBwYXJhbSBhY3Rpb25zIHRoZSBhY3Rpb25zXG4gKiBAcGFyYW0gdG9waWNzIHRoZSB0b3BpY3NcbiAqL1xuZnVuY3Rpb24gY29tYmluZUFjdGlvbnMoYWN0aW9ucz86IElBbGFybUFjdGlvbltdLCB0b3BpY3M/OiBJVG9waWNbXSk6IElBbGFybUFjdGlvbltdIHtcbiAgY29uc3QgY29tYmluZWQ6IElBbGFybUFjdGlvbltdID0gW11cbiAgYWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiBjb21iaW5lZC5wdXNoKGFjdGlvbikpO1xuICB0b3BpY3M/LmZvckVhY2goKHRvcGljKSA9PiBjb21iaW5lZC5wdXNoKG5ldyBTbnNBY3Rpb24odG9waWMpKSk7XG4gIHJldHVybiBjb21iaW5lZDtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YXJuaW5nIGFuZCBjcml0aWNhbCBhbGFybXMuXG4gKi9cbmV4cG9ydCBlbnVtIEZ1bmN0aW9uQWxhcm1DYXRlZ29yeSB7XG4gIENyaXRpY2FsID0gJ0NyaXRpY2FsJyxcbiAgV2FybmluZyA9ICdXYXJuaW5nJ1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEZ1bmN0aW9uQWxhcm1GYWNhZGUuXG4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkFsYXJtRmFjYWRlUHJvcHMge1xuICBwcm9wOiBzdHJpbmc7XG4gIHRocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uO1xuICBkZWZhdWx0VGhyZXNob2xkPzogbnVtYmVyIHwgRHVyYXRpb247XG4gIHRvcGljcz86IElUb3BpY1tdO1xuICBhY3Rpb25zPzogSUFsYXJtQWN0aW9uW107XG59XG5cbi8qKlxuICogSW50ZXJuYWwgY2xhc3MgdG8gYXNzaXN0IGluIGdlbmVyYXRpbmcgQ3VzdG9tQWxhcm1UaHJlc2hvbGQgaW5zdGFuY2VzLlxuICovXG5jbGFzcyBGdW5jdGlvbkFsYXJtRmFjYWRlIHtcblxuICByZWFkb25seSBhY3Rpb25zOiBJQWxhcm1BY3Rpb25bXTtcblxuICBwcml2YXRlIHByb3BzOiBGdW5jdGlvbkFsYXJtRmFjYWRlUHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEZ1bmN0aW9uQWxhcm1GYWNhZGVQcm9wcykge1xuICAgIHRoaXMucHJvcHMgPSBwcm9wc1xuICAgIHRoaXMuYWN0aW9ucyA9IGNvbWJpbmVBY3Rpb25zKHByb3BzLmFjdGlvbnMsIHByb3BzLnRvcGljcyk7XG4gIH1cblxuICB0b0N1c3RvbUFsYXJtVGhyZXNob2xkKCk6IEN1c3RvbUFsYXJtVGhyZXNob2xkIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50aHJlc2hvbGQgIT09IHVuZGVmaW5lZCB8fCB0aGlzLnByb3BzLmRlZmF1bHRUaHJlc2hvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3RoaXMucHJvcHMucHJvcF06IHRoaXMucHJvcHMudGhyZXNob2xkPz90aGlzLnByb3BzLmRlZmF1bHRUaHJlc2hvbGQsXG4gICAgICAgIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBhY3Rpb25PdmVycmlkZTogbmV3IFN0YW5kYXJkQWxhcm1BY3Rpb25zU3RyYXRlZ3koe2FjdGlvbnM6IHRoaXMuYWN0aW9uc30pLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFkZEN1c3RvbUFsYXJtVGhyZXNob2xkKGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksIHJlY29yZDogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWxhcm1UaHJlc2hvbGQ+KSB7XG4gICAgY29uc3QgYyA9IHRoaXMudG9DdXN0b21BbGFybVRocmVzaG9sZCgpO1xuICAgIGlmIChjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlY29yZFtjYXRlZ29yeV0gPSBjO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEZ1bmN0aW9uQWxhcm1zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BbGFybXNQcm9wcyBleHRlbmRzIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0byBvYnNlcnZlLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvblxuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIGF0dGFjaGVkIHRvIHRoZSBmdW5jdGlvbiB0byBiZSBvYnNlcnZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBJTG9nR3JvdXBcbn1cblxuLyoqXG4gKiBDcmVhdGVzIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBhIExhbWJkYSBGdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uQWxhcm1zIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogRGVmYXVsdCBwYXR0ZXJuIHVzZWQgZm9yIHRoZSBjcml0aWNhbCBsb2cgbWV0cmljLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ1JJVElDQUxfTE9HX01FVFJJQ19QQVRURVJOID0gJ1wiW0VSUk9SXVwiJztcblxuICAvKipcbiAgICogRGVmYXVsdCBwYXR0ZXJuIHVzZWQgZm9yIHRoZSB3YXJuaW5nIGxvZyBtZXRyaWMuXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9XQVJOSU5HX0xPR19NRVRSSUNfUEFUVEVSTiA9ICdcIltXQVJOSU5HXVwiJztcblxuICAvKipcbiAgICogRGVmYXVsdCBwYXR0ZXJuIHVzZWQgdG8gc2hvdyBsb2dzIG9uIHRoZSBDbG91ZFdhdGNoIGRhc2hib2FyZC5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPR19JTlNJR0hUU19QQVRURVJOID0gJ1xcXFxcXFtFUlJPUlxcXFxcXF18XFxcXFxcW1dBUk5JTkdcXFxcXFxdJztcblxuICAvKipcbiAgICogVGhlIE1vbml0b3JpbmdGYWNhZGUgaW5zdGFuY2UgZWl0aGVyIHBhc3NlZCBpbiBvciBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nRmFjYWRlOiBNb25pdG9yaW5nRmFjYWRlO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgY3JpdGljYWwgYWxhcm1zLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JpdGljYWxBbGFybXM6IEFsYXJtW107XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlZCB3YXJuaW5nIGFsYXJtcy5cbiAgICovXG4gIHJlYWRvbmx5IHdhcm5pbmdBbGFybXM6IEFsYXJtW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogRnVuY3Rpb25BbGFybXNQcm9wcztcblxuICBwcml2YXRlIGFkZFJlY29yZFZhbHVlKHJlY29yZDogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWxhcm1UaHJlc2hvbGQ+LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgc3Byb3A6IGtleW9mIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRwcm9wOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFRocmVzaG9sZD86IG51bWJlcnxEdXJhdGlvbikge1xuICAgIGNvbnN0IGZwcm9wcyA9IGdldEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zKHRoaXMucHJvcHMsIGNhdGVnb3J5KTtcbiAgICBuZXcgRnVuY3Rpb25BbGFybUZhY2FkZSh7XG4gICAgICBwcm9wOiB0cHJvcCxcbiAgICAgIHRocmVzaG9sZDogZnByb3BzPy5bc3Byb3BdIGFzIG51bWJlciB8IER1cmF0aW9uLFxuICAgICAgZGVmYXVsdFRocmVzaG9sZCxcbiAgICAgIHRvcGljczogZnByb3BzPy5ub3RpZnlUb3BpY3MsXG4gICAgICBhY3Rpb25zOiBmcHJvcHM/Lm5vdGlmeUFjdGlvbnNcbiAgICB9KS5hZGRDdXN0b21BbGFybVRocmVzaG9sZChjYXRlZ29yeSwgcmVjb3JkKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9SZWNvcmQoc3Byb3A6IGtleW9mIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCB0cHJvcDogc3RyaW5nLCBkZWZhdWx0VGhyZXNob2xkPzogbnVtYmVyfER1cmF0aW9uKTogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWxhcm1UaHJlc2hvbGQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFsYXJtVGhyZXNob2xkPiA9IHt9O1xuICAgIHRoaXMuYWRkUmVjb3JkVmFsdWUocmVjb3JkLCBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwsIHNwcm9wLCB0cHJvcCwgZGVmYXVsdFRocmVzaG9sZCk7XG4gICAgdGhpcy5hZGRSZWNvcmRWYWx1ZShyZWNvcmQsIEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5XYXJuaW5nLCBzcHJvcCwgdHByb3AsIGRlZmF1bHRUaHJlc2hvbGQpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhyZWNvcmQpLmxlbmd0aCA+IDAgPyByZWNvcmQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFkZEFsYXJtKGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksIC4uLmFsYXJtOiBBbGFybVtdKSB7XG4gICAgY29uc3QgYXJyID0gY2F0ZWdvcnkgPT09IEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCA/IHRoaXMuY3JpdGljYWxBbGFybXMgOiB0aGlzLndhcm5pbmdBbGFybXM7XG4gICAgYXJyLnB1c2goLi4uYWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGdW5jdGlvbk1vbml0b3JpbmcoKSB7XG4gICAgdGhpcy5tb25pdG9yaW5nRmFjYWRlLm1vbml0b3JMYW1iZGFGdW5jdGlvbih7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9wcy5mdW5jdGlvbixcbiAgICAgIGFkZFRvQWxhcm1EYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9BbGFybURhc2hib2FyZCA/PyB0cnVlLFxuICAgICAgYWRkVG9EZXRhaWxEYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9EZXRhaWxEYXNoYm9hcmQgPz8gdHJ1ZSxcbiAgICAgIGFkZFRvU3VtbWFyeURhc2hib2FyZDogdGhpcy5wcm9wcy5hZGRUb1N1bW1hcnlEYXNoYm9hcmQgPz8gdHJ1ZSxcbiAgICAgIGFkZExhdGVuY3lQNTBBbGFybTogdGhpcy50b1JlY29yZCgncDUwTGF0ZW5jeScsICdtYXhMYXRlbmN5JykgYXMgUmVjb3JkPHN0cmluZywgTGF0ZW5jeVRocmVzaG9sZD4sXG4gICAgICBhZGRMYXRlbmN5UDkwQWxhcm06IHRoaXMudG9SZWNvcmQoJ3A5MExhdGVuY3knLCAnbWF4TGF0ZW5jeScpIGFzIFJlY29yZDxzdHJpbmcsIExhdGVuY3lUaHJlc2hvbGQ+LFxuICAgICAgYWRkTGF0ZW5jeVA5OUFsYXJtOiB0aGlzLnRvUmVjb3JkKCdwOTlMYXRlbmN5JywgJ21heExhdGVuY3knKSBhcyBSZWNvcmQ8c3RyaW5nLCBMYXRlbmN5VGhyZXNob2xkPixcbiAgICAgIGFkZEZhdWx0Q291bnRBbGFybTogdGhpcy50b1JlY29yZCgnbWF4RmF1bHRzJywgJ21heEVycm9yQ291bnQnLCAwKSBhcyBSZWNvcmQ8c3RyaW5nLCBFcnJvckNvdW50VGhyZXNob2xkPixcbiAgICAgIGFkZEZhdWx0UmF0ZUFsYXJtOiB0aGlzLnRvUmVjb3JkKCdhdmdGYXVsdHMnLCAnbWF4RXJyb3JSYXRlJykgYXMgUmVjb3JkPHN0cmluZywgRXJyb3JSYXRlVGhyZXNob2xkPixcbiAgICAgIGFkZExvd1Rwc0FsYXJtOiB0aGlzLnRvUmVjb3JkKCdtaW5UcHMnLCAnbWluVHBzJykgYXMgUmVjb3JkPHN0cmluZywgTG93VHBzVGhyZXNob2xkPixcbiAgICAgIGFkZEhpZ2hUcHNBbGFybTogdGhpcy50b1JlY29yZCgnbWF4VHBzJywgJ21heFRwcycpIGFzIFJlY29yZDxzdHJpbmcsIEhpZ2hUcHNUaHJlc2hvbGQ+LFxuICAgICAgYWRkVGhyb3R0bGVzQ291bnRBbGFybTogdGhpcy50b1JlY29yZCgnbWF4VGhyb3R0bGVzJywgJ21heEVycm9yQ291bnQnLCAwKSBhcyBSZWNvcmQ8c3RyaW5nLCBFcnJvckNvdW50VGhyZXNob2xkPixcbiAgICAgIGFkZFRocm90dGxlc1JhdGVBbGFybTogdGhpcy50b1JlY29yZCgnYXZnVGhyb3R0bGVzJywgJ21heEVycm9yUmF0ZScpIGFzIFJlY29yZDxzdHJpbmcsIEVycm9yUmF0ZVRocmVzaG9sZD4sXG4gICAgICBhZGRDb25jdXJyZW50RXhlY3V0aW9uc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQoJ21heENvbmN1cnJlbnRFeGVjdXRpb25zJywgJ21heFJ1bm5pbmdUYXNrcycpIGFzIFJlY29yZDxzdHJpbmcsIFJ1bm5pbmdUYXNrQ291bnRUaHJlc2hvbGQ+LFxuICAgICAgYWRkTWF4SXRlcmF0b3JBZ2VBbGFybTogdGhpcy50b1JlY29yZCgnbWF4SXRlcmF0b3JBZ2UnLCAnbWF4QWdlSW5NaWxsaXMnKSBhcyBSZWNvcmQ8c3RyaW5nLCBNYXhBZ2VUaHJlc2hvbGQ+LFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nTWF4Q3B1VG90YWxUaW1lQWxhcm06IHRoaXMudG9SZWNvcmQoJ21heENwdVRpbWUnLCAnbWF4RHVyYXRpb24nKSBhcyBSZWNvcmQ8c3RyaW5nLCBEdXJhdGlvblRocmVzaG9sZD4sXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdQOTBDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZCgncDkwQ3B1VGltZScsICdtYXhEdXJhdGlvbicpIGFzIFJlY29yZDxzdHJpbmcsIER1cmF0aW9uVGhyZXNob2xkPixcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ0F2Z0NwdVRvdGFsVGltZUFsYXJtOiB0aGlzLnRvUmVjb3JkKCdhdmdDcHVUaW1lJywgJ21heER1cmF0aW9uJykgYXMgUmVjb3JkPHN0cmluZywgRHVyYXRpb25UaHJlc2hvbGQ+LFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nTWF4TWVtb3J5VXRpbGl6YXRpb25BbGFybTogdGhpcy50b1JlY29yZCgnbWF4TWVtb3J5JywgJ21heFVzYWdlUGVyY2VudCcpIGFzIFJlY29yZDxzdHJpbmcsIFVzYWdlVGhyZXNob2xkPixcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ1A5ME1lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRoaXMudG9SZWNvcmQoJ3A5ME1lbW9yeScsICdtYXhVc2FnZVBlcmNlbnQnKSBhcyBSZWNvcmQ8c3RyaW5nLCBVc2FnZVRocmVzaG9sZD4sXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdBdmdNZW1vcnlVdGlsaXphdGlvbkFsYXJtOiB0aGlzLnRvUmVjb3JkKCdhdmdNZW1vcnknLCAnbWF4VXNhZ2VQZXJjZW50JykgYXMgUmVjb3JkPHN0cmluZywgVXNhZ2VUaHJlc2hvbGQ+XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgZ2VuZXJhdGVkIGFsYXJtcyB0byB0aGlzIG9iamVjdFxuICAgIHRoaXMuYWRkQWxhcm0oRnVuY3Rpb25BbGFybUNhdGVnb3J5LkNyaXRpY2FsLCAuLi50aGlzLm1vbml0b3JpbmdGYWNhZGUuY3JlYXRlZEFsYXJtc1dpdGhEaXNhbWJpZ3VhdG9yKEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCkubWFwKChhd2EpID0+IGF3YS5hbGFybSkpO1xuICAgIHRoaXMuYWRkQWxhcm0oRnVuY3Rpb25BbGFybUNhdGVnb3J5Lldhcm5pbmcsIC4uLnRoaXMubW9uaXRvcmluZ0ZhY2FkZS5jcmVhdGVkQWxhcm1zV2l0aERpc2FtYmlndWF0b3IoRnVuY3Rpb25BbGFybUNhdGVnb3J5Lldhcm5pbmcpLm1hcCgoYXdhKSA9PiBhd2EuYWxhcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTG9nTW9uaXRvcmluZ1RvRGFzaGJvYXJkKCkge1xuICAgIGxldCBwYXR0ZXJuID0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybiA9PT0gdW5kZWZpbmVkXG4gICAgJiYgdGhpcy5wcm9wcy53YXJuaW5nQWxhcm1PcHRpb25zPy5kYXNoYm9hcmRMb2dQYXR0ZXJuID09PSB1bmRlZmluZWRcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTlxuICAgICAgOiAnJ1xuICAgIHBhdHRlcm4gKz0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgcGF0dGVybiArPSAocGF0dGVybiAhPT0gJyc/ICd8JyA6ICcnKSArIHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgaWYgKHBhdHRlcm4gIT09ICcnKSB7XG4gICAgICB0aGlzLm1vbml0b3JpbmdGYWNhZGUubW9uaXRvckxvZyh7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5wcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIHBhdHRlcm4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZExvZ0FsYXJtKGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksIGRlZmF1bHRUaHJlc2hvbGQ/OiBudW1iZXIpIHtcbiAgICBjb25zdCBmcHJvcHMgPSBnZXRGdW5jdGlvbkFsYXJtc0NhdGVnb3J5T3B0aW9ucyh0aGlzLnByb3BzLCBjYXRlZ29yeSk7XG4gICAgY29uc3QgdGhyZXNob2xkID0gZnByb3BzPy5tYXhMb2dDb3VudD8/ZGVmYXVsdFRocmVzaG9sZFxuICAgIGNvbnN0IHBhdHRlcm4gPSBmcHJvcHM/Lm1ldHJpY0xvZ1BhdHRlcm4/P1xuICAgIGNhdGVnb3J5ID09PSBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWxcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9DUklUSUNBTF9MT0dfTUVUUklDX1BBVFRFUk5cbiAgICAgIDogRnVuY3Rpb25BbGFybXMuREVGQVVMVF9XQVJOSU5HX0xPR19NRVRSSUNfUEFUVEVSTjtcbiAgICBjb25zdCBldmFsdWF0aW9uUGVyaW9kcyA9IGZwcm9wcz8ubG9nRXZhbHVhdGlvblBlcmlvZHM/PzJcbiAgICBjb25zdCBkYXRhcG9pbnRzVG9BbGFybSA9IGZwcm9wcz8ubG9nRGF0YVBvaW50c1RvQWxhcm0/PzFcbiAgICBpZiAodGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgdGhyZXNob2xkID4gMCkge1xuICAgICAgY29uc3QgbG9nQWxhcm0gPSBuZXcgTG9nTWV0cmljQWxhcm0odGhpcywgY2F0ZWdvcnkgKyAnTG9nQ291bnQnLCB7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3BzLmxvZ0dyb3VwLFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgbWV0cmljTmFtZTogY2F0ZWdvcnkgKyAnTG9nQ291bnQnLFxuICAgICAgfSk7XG4gICAgICAvLyBBZGQgZ2VuZXJhdGVkIGFsYXJtIHRvIHRoaXMgb2JqZWN0XG4gICAgICB0aGlzLmFkZEFsYXJtKGNhdGVnb3J5LCBsb2dBbGFybS5hbGFybSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZ1bmN0aW9uQWxhcm1zUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmNyaXRpY2FsQWxhcm1zID0gW107XG4gICAgdGhpcy53YXJuaW5nQWxhcm1zID0gW107XG5cbiAgICB0aGlzLm1vbml0b3JpbmdGYWNhZGUgPSBwcm9wcy5tb25pdG9yaW5nRmFjYWRlPz9uZXcgTW9uaXRvcmluZ0ZhY2FkZSh0aGlzLCAnTW9uaXRvcmluZ0ZhY2FkZScsIHtcbiAgICAgIG1ldHJpY0ZhY3RvcnlEZWZhdWx0czoge30sXG4gICAgICBhbGFybUZhY3RvcnlEZWZhdWx0czoge1xuICAgICAgICBhY3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgYWxhcm1OYW1lUHJlZml4OiBwcm9wcy5hbGFybU5hbWVQcmVmaXg/P1N0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgICAgfSxcbiAgICAgIGRhc2hib2FyZEZhY3Rvcnk6IHByb3BzLmRhc2hib2FyZEZhY3RvcnlcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRnVuY3Rpb25Nb25pdG9yaW5nKCk7XG4gICAgdGhpcy5hZGRMb2dNb25pdG9yaW5nVG9EYXNoYm9hcmQoKTtcbiAgICB0aGlzLmFkZExvZ0FsYXJtKEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCwgMSk7XG4gICAgdGhpcy5hZGRMb2dBbGFybShGdW5jdGlvbkFsYXJtQ2F0ZWdvcnkuV2FybmluZyk7XG4gIH1cbn1cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxhcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb24tYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBLHlEQUFxRztBQUlyRyx5REFBb0Q7QUFtS3BEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsMkJBQThEO0lBeUZoRyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUE5RU8scUJBQXFCOztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7WUFDMUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNuQyxtQkFBbUIsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixtQ0FBRSxJQUFJO1lBQ3pELG9CQUFvQixRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLG1DQUFFLElBQUk7WUFDM0QscUJBQXFCLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsbUNBQUUsSUFBSTtZQUM3RCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFtQixZQUFZLEVBQUUsWUFBWSxDQUFDO1lBQy9FLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQW1CLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDL0Usa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBbUIsWUFBWSxFQUFFLFlBQVksQ0FBQztZQUMvRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFzQixXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUN2RixpQkFBaUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFxQixXQUFXLEVBQUUsY0FBYyxDQUFDO1lBQ2pGLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFrQixRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ2xFLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFtQixRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ3BFLHNCQUFzQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQXNCLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLHFCQUFxQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQXFCLGNBQWMsRUFBRSxjQUFjLENBQUM7WUFDeEYsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBNEIseUJBQXlCLEVBQUUsaUJBQWlCLENBQUM7WUFDekgsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBa0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7WUFDMUYseUNBQXlDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBb0IsWUFBWSxFQUFFLGFBQWEsQ0FBQztZQUN4Ryx5Q0FBeUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFvQixZQUFZLEVBQUUsYUFBYSxDQUFDO1lBQ3hHLHlDQUF5QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQW9CLFlBQVksRUFBRSxhQUFhLENBQUM7WUFDeEcsOENBQThDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBaUIsV0FBVyxFQUFFLGlCQUFpQixDQUFDO1lBQzdHLDhDQUE4QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQWlCLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQztZQUM3Ryw4Q0FBOEMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFpQixXQUFXLEVBQUUsaUJBQWlCLENBQUM7U0FDOUcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQU9PLFdBQVcsQ0FBQyxRQUF1QixFQUFFLGdCQUF5Qjs7UUFDcEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxLQUFLLDhCQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQ3RILE1BQU0sU0FBUyxTQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxXQUFXLG1DQUFFLGdCQUFnQixDQUFBO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLE9BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGdCQUFnQixtQ0FDeEMsUUFBUSxLQUFLLDhCQUFhLENBQUMsUUFBUSxFQUNqQyxDQUFDLENBQUMsY0FBYyxDQUFDLG1DQUFtQztZQUNwRCxDQUFDLENBQUMsY0FBYyxDQUFDLGtDQUFrQyxDQUFDO1FBQ3RELE1BQU0saUJBQWlCLFNBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLG9CQUFvQixtQ0FBRSxDQUFDLENBQUE7UUFDekQsTUFBTSxpQkFBaUIsU0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsb0JBQW9CLG1DQUFFLENBQUMsQ0FBQTtRQUN6RCxJQUFJLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtZQUM1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLCtCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxVQUFVLEVBQUU7Z0JBQy9ELFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7Z0JBQzdCLE9BQU87Z0JBQ1AsU0FBUztnQkFDVCxpQkFBaUI7Z0JBQ2pCLGlCQUFpQjtnQkFDakIsVUFBVSxFQUFFLFFBQVEsR0FBRyxVQUFVO2FBQ2xDLENBQUMsQ0FBQztZQUNILElBQUksUUFBUSxLQUFLLDhCQUFhLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sMkJBQTJCOztRQUNqQyxJQUFJLE9BQU8sR0FBRyxPQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLDBDQUFFLG1CQUFtQixNQUFLLFNBQVM7ZUFDN0UsT0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQiwwQ0FBRSxtQkFBbUIsTUFBSyxTQUFTO1lBQ2xFLENBQUMsQ0FBQyxjQUFjLENBQUMsNEJBQTRCO1lBQzdDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDTixPQUFPLGdCQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLDBDQUFFLG1CQUFtQixtQ0FBRSxFQUFFLENBQUM7UUFDcEUsT0FBTyxVQUFJLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQiwwQ0FBRSxtQkFBbUIsQ0FBQSxtQ0FBRSxFQUFFLENBQUM7UUFDaEcsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7Z0JBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO2dCQUM5QyxPQUFPO2FBQ1IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBVUQsU0FBUyxDQUFDLFFBQXVCOztRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsS0FBSyw4QkFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQUMsSUFBSSxDQUFDLGdCQUFnQiwwQ0FBRSxLQUFLLENBQUMsQ0FBQyxPQUFDLElBQUksQ0FBQyxlQUFlLDBDQUFFLEtBQUssQ0FBQztRQUNsSCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBeEdILHdDQXlHQztBQXZHQzs7R0FFRztBQUNhLGtEQUFtQyxHQUFHLFdBQVcsQ0FBQztBQUVsRTs7R0FFRztBQUNhLGlEQUFrQyxHQUFHLGFBQWEsQ0FBQztBQUVuRTs7R0FFRztBQUNhLDJDQUE0QixHQUFHLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBEdXJhdGlvblRocmVzaG9sZCxcbiAgRXJyb3JDb3VudFRocmVzaG9sZCxcbiAgRXJyb3JSYXRlVGhyZXNob2xkLFxuICBIaWdoVHBzVGhyZXNob2xkLFxuICBMYXRlbmN5VGhyZXNob2xkLFxuICBMb3dUcHNUaHJlc2hvbGQsXG4gIE1heEFnZVRocmVzaG9sZCxcbiAgUnVubmluZ1Rhc2tDb3VudFRocmVzaG9sZCxcbiAgVXNhZ2VUaHJlc2hvbGRcbn0gZnJvbSBcImNkay1tb25pdG9yaW5nLWNvbnN0cnVjdHNcIjtcbmltcG9ydCB7QWxhcm1DYXRlZ29yeSwgQWxhcm1zQmFzZSwgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCBBbGFybXNPcHRpb25zfSBmcm9tIFwiLi4vLi4vYXdzLW1vbml0b3JpbmdcIjtcbmltcG9ydCB7SUZ1bmN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtJTG9nR3JvdXB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0xvZ01ldHJpY0FsYXJtfSBmcm9tIFwiLi4vLi4vYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7QWxhcm19IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuXG4vKipcbiAqIENhdGVnb3J5IG9wdGlvbnMgZm9yIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBMYW1iZGEgRnVuY3Rpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIGV4dGVuZHMgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIHtcblxuICAvKipcbiAgICogTWF4aW11bSA1MHRoIHBlcmNlbnRpbGUgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgcDUwTGF0ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIDkwdGggcGVyY2VudGlsZSBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBwOTBMYXRlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gOTl0aCBwZXJjZW50aWxlIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHA5OUxhdGVuY3k/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgZmF1bHRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEZhdWx0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSBudW1iZXIgb2YgZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBhdmdGYXVsdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtaW5UcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtYXhUcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBtYXhUaHJvdHRsZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZnVGhyb3R0bGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbmN1cnJlbnQgZXhlY3V0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIGRhdGEgd2FpdHMgYmVmb3JlIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24uXG4gICAqIFNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3ByZW1pdW1zdXBwb3J0L2tub3dsZWRnZS1jZW50ZXIvbGFtYmRhLWl0ZXJhdG9yLWFnZS9cbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZXJhdG9yQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiA5MHRoIHBlcmNlbnRpbGUgQ1BVIHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IHA5MENwdVRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQXZlcmFnZSBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnQ3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBtZW1vcnlcbiAgICovXG4gIHJlYWRvbmx5IG1heE1lbW9yeT86IG51bWJlcjtcblxuICAvKipcbiAgICogOTB0aCBwZXJjZW50aWxlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgcDkwTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMb2cgcGF0dGVybiB0byBtYXRjaCBmb3IgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1xcXFxcXFtFUlJPUlxcXFxcXF0nXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNMb2dQYXR0ZXJuPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGxvZyBldmVudHMgbWF0Y2hpbmcgdGhlIG1ldHJpY0xvZ1BhdHRlcm4uXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgZm9yIENyaXRpY2FsIEFsYXJtXG4gICAqL1xuICByZWFkb25seSBtYXhMb2dDb3VudD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIG92ZXIgd2hpY2ggZGF0YSBpcyBjb21wYXJlZCBmb3IgbG9nIGV2ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXJcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRhdGEgcG9pbnRzIHRoYXQgbXVzdCBiZSBicmVhY2hpbmcgdG8gdHJpZ2dlciB0aGUgYWxhcm0gZm9yIGxvZyBldmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0RhdGFQb2ludHNUb0FsYXJtPzogbnVtYmVyXG5cbiAgLyoqXG4gICAqIExvZyBwYXR0ZXJuIHRvIG1hdGNoIGZvciB0aGUgZGFzaGJvYXJkXG4gICAqXG4gICAqIEBkZWZhdWx0ICdcIltFUlJPUl1cIidcbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZExvZ1BhdHRlcm4/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBDbG91ZFdhdGNoIGFsYXJtcyBmb3IgTGFtYmRhIEZ1bmN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucyBleHRlbmRzIEFsYXJtc09wdGlvbnM8RnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnM+IHtcblxuICAvKipcbiAgICogR2VuZXJhdGUgZGFzaGJvYXJkIGNoYXJ0cyBmb3IgTGFtYmRhIGluc2lnaHRzIG1ldHJpY3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUluc2lnaHRzRW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRnVuY3Rpb25BbGFybXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFsYXJtc1Byb3BzIGV4dGVuZHMgRnVuY3Rpb25BbGFybXNPcHRpb25zIHtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIG9ic2VydmUuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uXG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgYXR0YWNoZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIGJlIG9ic2VydmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA6IElMb2dHcm91cFxufVxuXG4vKipcbiAqIENyZWF0ZXMgQ2xvdWRXYXRjaCBhbGFybXMgZm9yIGEgTGFtYmRhIEZ1bmN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25BbGFybXMgZXh0ZW5kcyBBbGFybXNCYXNlPEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCBGdW5jdGlvbkFsYXJtc1Byb3BzPiB7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIGZvciB0aGUgY3JpdGljYWwgbG9nIG1ldHJpYy5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0NSSVRJQ0FMX0xPR19NRVRSSUNfUEFUVEVSTiA9ICdcIltFUlJPUl1cIic7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIGZvciB0aGUgd2FybmluZyBsb2cgbWV0cmljLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfV0FSTklOR19MT0dfTUVUUklDX1BBVFRFUk4gPSAnXCJbV0FSTklOR11cIic7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIHRvIHNob3cgbG9ncyBvbiB0aGUgQ2xvdWRXYXRjaCBkYXNoYm9hcmQuXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTiA9ICdcXFxcXFxbRVJST1JcXFxcXFxdfFxcXFxcXFtXQVJOSU5HXFxcXFxcXSc7XG5cbiAgcHJpdmF0ZSBhZGRGdW5jdGlvbk1vbml0b3JpbmcoKSB7XG4gICAgdGhpcy5tb25pdG9yaW5nRmFjYWRlLm1vbml0b3JMYW1iZGFGdW5jdGlvbih7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9wcy5mdW5jdGlvbixcbiAgICAgIGFkZFRvQWxhcm1EYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9BbGFybURhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZFRvRGV0YWlsRGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvRGV0YWlsRGFzaGJvYXJkPz90cnVlLFxuICAgICAgYWRkVG9TdW1tYXJ5RGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvU3VtbWFyeURhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZExhdGVuY3lQNTBBbGFybTogdGhpcy50b1JlY29yZDxMYXRlbmN5VGhyZXNob2xkPihcInA1MExhdGVuY3lcIiwgXCJtYXhMYXRlbmN5XCIpLFxuICAgICAgYWRkTGF0ZW5jeVA5MEFsYXJtOiB0aGlzLnRvUmVjb3JkPExhdGVuY3lUaHJlc2hvbGQ+KFwicDkwTGF0ZW5jeVwiLCBcIm1heExhdGVuY3lcIiksXG4gICAgICBhZGRMYXRlbmN5UDk5QWxhcm06IHRoaXMudG9SZWNvcmQ8TGF0ZW5jeVRocmVzaG9sZD4oXCJwOTlMYXRlbmN5XCIsIFwibWF4TGF0ZW5jeVwiKSxcbiAgICAgIGFkZEZhdWx0Q291bnRBbGFybTogdGhpcy50b1JlY29yZDxFcnJvckNvdW50VGhyZXNob2xkPihcIm1heEZhdWx0c1wiLCBcIm1heEVycm9yQ291bnRcIiwgMCksXG4gICAgICBhZGRGYXVsdFJhdGVBbGFybTogdGhpcy50b1JlY29yZDxFcnJvclJhdGVUaHJlc2hvbGQ+KFwiYXZnRmF1bHRzXCIsIFwibWF4RXJyb3JSYXRlXCIpLFxuICAgICAgYWRkTG93VHBzQWxhcm06IHRoaXMudG9SZWNvcmQ8TG93VHBzVGhyZXNob2xkPihcIm1pblRwc1wiLCBcIm1pblRwc1wiKSxcbiAgICAgIGFkZEhpZ2hUcHNBbGFybTogdGhpcy50b1JlY29yZDxIaWdoVHBzVGhyZXNob2xkPihcIm1heFRwc1wiLCBcIm1heFRwc1wiKSxcbiAgICAgIGFkZFRocm90dGxlc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQ8RXJyb3JDb3VudFRocmVzaG9sZD4oXCJtYXhUaHJvdHRsZXNcIiwgXCJtYXhFcnJvckNvdW50XCIsIDApLFxuICAgICAgYWRkVGhyb3R0bGVzUmF0ZUFsYXJtOiB0aGlzLnRvUmVjb3JkPEVycm9yUmF0ZVRocmVzaG9sZD4oXCJhdmdUaHJvdHRsZXNcIiwgXCJtYXhFcnJvclJhdGVcIiksXG4gICAgICBhZGRDb25jdXJyZW50RXhlY3V0aW9uc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQ8UnVubmluZ1Rhc2tDb3VudFRocmVzaG9sZD4oXCJtYXhDb25jdXJyZW50RXhlY3V0aW9uc1wiLCBcIm1heFJ1bm5pbmdUYXNrc1wiKSxcbiAgICAgIGFkZE1heEl0ZXJhdG9yQWdlQWxhcm06IHRoaXMudG9SZWNvcmQ8TWF4QWdlVGhyZXNob2xkPihcIm1heEl0ZXJhdG9yQWdlXCIsIFwibWF4QWdlSW5NaWxsaXNcIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdNYXhDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJtYXhDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdQOTBDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJwOTBDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdBdmdDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJhdmdDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdNYXhNZW1vcnlVdGlsaXphdGlvbkFsYXJtOiB0aGlzLnRvUmVjb3JkPFVzYWdlVGhyZXNob2xkPihcIm1heE1lbW9yeVwiLCBcIm1heFVzYWdlUGVyY2VudFwiKSxcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ1A5ME1lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRoaXMudG9SZWNvcmQ8VXNhZ2VUaHJlc2hvbGQ+KFwicDkwTWVtb3J5XCIsIFwibWF4VXNhZ2VQZXJjZW50XCIpLFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nQXZnTWVtb3J5VXRpbGl6YXRpb25BbGFybTogdGhpcy50b1JlY29yZDxVc2FnZVRocmVzaG9sZD4oXCJhdmdNZW1vcnlcIiwgXCJtYXhVc2FnZVBlcmNlbnRcIilcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE8gV2UgbmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGV4dGVuZCBtb25pdG9yaW5nRmFjYWRlIHRvIHN1cHBvcnQgY3JlYXRpbmcgdGhlc2UgYWxhcm1zLiBNYXliZSBleHRlbmQgTW9ub3RvcmluZ0ZhY2FkZS5tb25pdG9yTG9nKClcblxuICBwcml2YXRlIGNyaXRpY2FsTG9nQWxhcm06IExvZ01ldHJpY0FsYXJtIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHdhcm5pbmdMb2dBbGFybTogTG9nTWV0cmljQWxhcm0gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhZGRMb2dBbGFybShjYXRlZ29yeTogQWxhcm1DYXRlZ29yeSwgZGVmYXVsdFRocmVzaG9sZD86IG51bWJlcikge1xuICAgIGNvbnN0IGZwcm9wcyA9IGNhdGVnb3J5ID09PSBBbGFybUNhdGVnb3J5LkNyaXRpY2FsID8gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucyA6IHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucztcbiAgICBjb25zdCB0aHJlc2hvbGQgPSBmcHJvcHM/Lm1heExvZ0NvdW50Pz9kZWZhdWx0VGhyZXNob2xkXG4gICAgY29uc3QgcGF0dGVybiA9IGZwcm9wcz8ubWV0cmljTG9nUGF0dGVybj8/XG4gICAgY2F0ZWdvcnkgPT09IEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWxcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9DUklUSUNBTF9MT0dfTUVUUklDX1BBVFRFUk5cbiAgICAgIDogRnVuY3Rpb25BbGFybXMuREVGQVVMVF9XQVJOSU5HX0xPR19NRVRSSUNfUEFUVEVSTjtcbiAgICBjb25zdCBldmFsdWF0aW9uUGVyaW9kcyA9IGZwcm9wcz8ubG9nRXZhbHVhdGlvblBlcmlvZHM/PzJcbiAgICBjb25zdCBkYXRhcG9pbnRzVG9BbGFybSA9IGZwcm9wcz8ubG9nRGF0YVBvaW50c1RvQWxhcm0/PzFcbiAgICBpZiAodGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgdGhyZXNob2xkID4gMCkge1xuICAgICAgY29uc3QgbG9nQWxhcm0gPSBuZXcgTG9nTWV0cmljQWxhcm0odGhpcywgY2F0ZWdvcnkgKyAnTG9nQ291bnQnLCB7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3BzLmxvZ0dyb3VwLFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgbWV0cmljTmFtZTogY2F0ZWdvcnkgKyAnTG9nQ291bnQnLFxuICAgICAgfSk7XG4gICAgICBpZiAoY2F0ZWdvcnkgPT09IEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwpIHtcbiAgICAgICAgdGhpcy5jcml0aWNhbExvZ0FsYXJtID0gbG9nQWxhcm07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndhcm5pbmdMb2dBbGFybSA9IGxvZ0FsYXJtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkTG9nTW9uaXRvcmluZ1RvRGFzaGJvYXJkKCkge1xuICAgIGxldCBwYXR0ZXJuID0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybiA9PT0gdW5kZWZpbmVkXG4gICAgJiYgdGhpcy5wcm9wcy53YXJuaW5nQWxhcm1PcHRpb25zPy5kYXNoYm9hcmRMb2dQYXR0ZXJuID09PSB1bmRlZmluZWRcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTlxuICAgICAgOiAnJ1xuICAgIHBhdHRlcm4gKz0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgcGF0dGVybiArPSAocGF0dGVybiAhPT0gJyc/ICd8JyA6ICcnKSArIHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgaWYgKHBhdHRlcm4gIT09ICcnKSB7XG4gICAgICB0aGlzLm1vbml0b3JpbmdGYWNhZGUubW9uaXRvckxvZyh7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5wcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIHBhdHRlcm4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRnVuY3Rpb25BbGFybXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMuYWRkRnVuY3Rpb25Nb25pdG9yaW5nKCk7XG4gICAgdGhpcy5hZGRMb2dNb25pdG9yaW5nVG9EYXNoYm9hcmQoKTtcbiAgICB0aGlzLmFkZExvZ0FsYXJtKEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwsIDEpO1xuICAgIHRoaXMuYWRkTG9nQWxhcm0oQWxhcm1DYXRlZ29yeS5XYXJuaW5nKTtcbiAgfVxuXG4gIGdldEFsYXJtcyhjYXRlZ29yeTogQWxhcm1DYXRlZ29yeSk6IEFsYXJtW10ge1xuICAgIGNvbnN0IGFsYXJtcyA9IHN1cGVyLmdldEFsYXJtcyhjYXRlZ29yeSk7XG4gICAgY29uc3QgbG9nQWxhcm0gPSBjYXRlZ29yeSA9PT0gQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCA/IHRoaXMuY3JpdGljYWxMb2dBbGFybT8uYWxhcm0gOiB0aGlzLndhcm5pbmdMb2dBbGFybT8uYWxhcm07XG4gICAgaWYgKGxvZ0FsYXJtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFsYXJtcy5wdXNoKGxvZ0FsYXJtKTtcbiAgICB9XG4gICAgcmV0dXJuIGFsYXJtcztcbiAgfVxufVxuIl19
@@ -40,7 +40,7 @@ class AlarmsBase extends constructs_1.Construct {
40
40
  return alarm_helper_1.AlarmHelper.toRecord(this.props, oprop, tprop, defaultCriticalThreshold, defaultWarningThreshold);
41
41
  }
42
42
  getAlarms(category) {
43
- return this.monitoringFacade.createdAlarmsWithDisambiguator(category).map((awa) => awa.alarm);
43
+ return [...this.monitoringFacade.createdAlarmsWithDisambiguator(category).map((awa) => awa.alarm).values()];
44
44
  }
45
45
  getCriticalAlarms() {
46
46
  return this.getAlarms(AlarmCategory.Critical);
@@ -50,4 +50,4 @@ class AlarmsBase extends constructs_1.Construct {
50
50
  }
51
51
  }
52
52
  exports.AlarmsBase = AlarmsBase;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbGFybXMtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFFckMseUVBQW9HO0FBRXBHLDZDQUE0QztBQUM1QyxpREFBMkM7QUFFM0MsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHNDQUFxQixDQUFBO0lBQ3JCLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUd4QjtBQXlFRDs7R0FFRztBQUNILE1BQXNCLFVBQXdFLFNBQVEsc0JBQVM7SUFnQzdHLFlBQXNCLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQVE7O1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixTQUFHLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUUsSUFBSSw0Q0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDN0YscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixvQkFBb0IsRUFBRTtnQkFDcEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGVBQWUsUUFBRSxLQUFLLENBQUMsZUFBZSxtQ0FBRSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTO2FBQ2pFO1lBQ0QsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBN0JEOzs7Ozs7OztPQVFHO0lBQ08sUUFBUSxDQUNoQixLQUFjLEVBQ2QsS0FBYyxFQUNkLHdCQUE0QyxFQUM1Qyx1QkFBMkM7UUFDM0MsT0FBTywwQkFBVyxDQUFDLFFBQVEsQ0FDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDakYsQ0FBQztJQWVELFNBQVMsQ0FBQyxRQUF1QjtRQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUF4REQsZ0NBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0FsYXJtLCBJQWxhcm1BY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHtDdXN0b21BbGFybVRocmVzaG9sZCwgSURhc2hib2FyZEZhY3RvcnksIE1vbml0b3JpbmdGYWNhZGV9IGZyb20gXCJjZGstbW9uaXRvcmluZy1jb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0lUb3BpY30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7RHVyYXRpb24sIFN0YWNrfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7QWxhcm1IZWxwZXJ9IGZyb20gXCIuL2FsYXJtLWhlbHBlclwiO1xuXG5leHBvcnQgZW51bSBBbGFybUNhdGVnb3J5IHtcbiAgQ3JpdGljYWwgPSBcIkNyaXRpY2FsXCIsXG4gIFdhcm5pbmcgPSBcIldhcm5pbmdcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtc0NhdGVnb3J5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUb3BpY3MgdG8gc2VuZCBhbGFybSBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZnlUb3BpY3M/OiBJVG9waWNbXTtcblxuICAvKipcbiAgICogQWN0aW9ucyB0byBzZW5kIGFsYXJtIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmeUFjdGlvbnM/OiBJQWxhcm1BY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGFybXNPcHRpb25zPFQgZXh0ZW5kcyBBbGFybXNDYXRlZ29yeU9wdGlvbnM+IHtcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkcyBmb3IgY3JpdGljYWwgYWxhcm1zLlxuICAgKlxuICAgKiBJZiBubyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCwgYSBzZXQgb2YgZGVmYXVsdCBhbGFybXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBjcml0aWNhbEFsYXJtT3B0aW9ucz86IFQ7XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZHMgZm9yIHdhcm5pbmcgYWxhcm1zLlxuICAgKlxuICAgKiBJZiBubyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCwgYSBzZXQgb2YgZGVmYXVsdCBhbGFybXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSB3YXJuaW5nQWxhcm1PcHRpb25zPzogVDtcblxuICAvKipcbiAgICogTWFpbiBlbnRyeSBwb2ludCBmb3IgbW9uaXRvcmluZy5cbiAgICpcbiAgICogSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGEgZGVmYXVsdCBmYWNhZGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZ0ZhY2FkZT86IE1vbml0b3JpbmdGYWNhZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXNoYm9hcmRGYWN0b3J5IHRvIHVzZSB3aGVuIGdlbmVyYXRpbmcgQ2xvdWRXYXRjaCBkYXNoYm9hcmRzLlxuICAgKlxuICAgKiBJZiBub3QgZGVmaW5lZCwgZGFzaGJvYXJkcyBhcmUgbm90IGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZEZhY3Rvcnk/OiBJRGFzaGJvYXJkRmFjdG9yeTtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gYWxhcm0gZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0FsYXJtRGFzaGJvYXJkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gZGV0YWlsZWQgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0RldGFpbERhc2hib2FyZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB3aWRnZXRzIHRvIHN1bW1hcnkgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb1N1bW1hcnlEYXNoYm9hcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIGdlbmVyYXRlZCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1OYW1lUHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBBbGFybXMgY29uc3RydWN0cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFsYXJtc0Jhc2U8QyBleHRlbmRzIEFsYXJtc0NhdGVnb3J5T3B0aW9ucywgUCBleHRlbmRzIEFsYXJtc09wdGlvbnM8Qz4+IGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogVGhlIE1vbml0b3JpbmdGYWNhZGUgaW5zdGFuY2UgZWl0aGVyIHBhc3NlZCBpbiBvciBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nRmFjYWRlOiBNb25pdG9yaW5nRmFjYWRlO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwcm9wczogUDtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBnZW5lcmF0ZSBhbGFybSByZWNvcmRzLlxuICAgKlxuICAgKiBAcGFyYW0gb3Byb3AgcHJvcGVydHkgZnJvbSB0aGUgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIGluc3RhbmNlXG4gICAqIEBwYXJhbSB0cHJvcCBwcm9wZXJ0eSBmcm9tIHRoZSBDdXN0b21BbGFybVRocmVzaG9sZCBpbnN0YW5jZVxuICAgKiBAcGFyYW0gZGVmYXVsdENyaXRpY2FsVGhyZXNob2xkIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjcml0aWNhbCB0aHJlc2hvbGRcbiAgICogQHBhcmFtIGRlZmF1bHRXYXJuaW5nVGhyZXNob2xkIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSB3YXJuaW5nIHRocmVzaG9sZFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9SZWNvcmQ8VCBleHRlbmRzIEN1c3RvbUFsYXJtVGhyZXNob2xkPihcbiAgICBvcHJvcDoga2V5b2YgQyxcbiAgICB0cHJvcDoga2V5b2YgVCxcbiAgICBkZWZhdWx0Q3JpdGljYWxUaHJlc2hvbGQ/OiBudW1iZXIgfCBEdXJhdGlvbixcbiAgICBkZWZhdWx0V2FybmluZ1RocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uKSB7XG4gICAgcmV0dXJuIEFsYXJtSGVscGVyLnRvUmVjb3JkPEMsIFQ+KFxuICAgICAgdGhpcy5wcm9wcywgb3Byb3AsIHRwcm9wLCBkZWZhdWx0Q3JpdGljYWxUaHJlc2hvbGQsIGRlZmF1bHRXYXJuaW5nVGhyZXNob2xkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUCkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMubW9uaXRvcmluZ0ZhY2FkZSA9IHByb3BzLm1vbml0b3JpbmdGYWNhZGU/P25ldyBNb25pdG9yaW5nRmFjYWRlKHRoaXMsICdNb25pdG9yaW5nRmFjYWRlJywge1xuICAgICAgbWV0cmljRmFjdG9yeURlZmF1bHRzOiB7fSxcbiAgICAgIGFsYXJtRmFjdG9yeURlZmF1bHRzOiB7XG4gICAgICAgIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBhbGFybU5hbWVQcmVmaXg6IHByb3BzLmFsYXJtTmFtZVByZWZpeD8/U3RhY2sub2YodGhpcykuc3RhY2tOYW1lXG4gICAgICB9LFxuICAgICAgZGFzaGJvYXJkRmFjdG9yeTogcHJvcHMuZGFzaGJvYXJkRmFjdG9yeVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QWxhcm1zKGNhdGVnb3J5OiBBbGFybUNhdGVnb3J5KTogQWxhcm1bXSB7XG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZ0ZhY2FkZS5jcmVhdGVkQWxhcm1zV2l0aERpc2FtYmlndWF0b3IoY2F0ZWdvcnkpLm1hcCgoYXdhKSA9PiBhd2EuYWxhcm0pO1xuICB9XG5cbiAgZ2V0Q3JpdGljYWxBbGFybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxhcm1zKEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwpO1xuICB9XG5cbiAgZ2V0V2FybmluZ0FsYXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGFybXMoQWxhcm1DYXRlZ29yeS5XYXJuaW5nKTtcbiAgfVxufVxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbGFybXMtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFFckMseUVBQW9HO0FBRXBHLDZDQUE0QztBQUM1QyxpREFBMkM7QUFFM0MsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHNDQUFxQixDQUFBO0lBQ3JCLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUd4QjtBQXlFRDs7R0FFRztBQUNILE1BQXNCLFVBQXdFLFNBQVEsc0JBQVM7SUFnQzdHLFlBQXNCLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQVE7O1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixTQUFHLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUUsSUFBSSw0Q0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDN0YscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixvQkFBb0IsRUFBRTtnQkFDcEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGVBQWUsUUFBRSxLQUFLLENBQUMsZUFBZSxtQ0FBRSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTO2FBQ2pFO1lBQ0QsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBN0JEOzs7Ozs7OztPQVFHO0lBQ08sUUFBUSxDQUNoQixLQUFjLEVBQ2QsS0FBYyxFQUNkLHdCQUE0QyxFQUM1Qyx1QkFBMkM7UUFDM0MsT0FBTywwQkFBVyxDQUFDLFFBQVEsQ0FDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDakYsQ0FBQztJQWVELFNBQVMsQ0FBQyxRQUF1QjtRQUMvQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUF4REQsZ0NBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0FsYXJtLCBJQWxhcm1BY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHtDdXN0b21BbGFybVRocmVzaG9sZCwgSURhc2hib2FyZEZhY3RvcnksIE1vbml0b3JpbmdGYWNhZGV9IGZyb20gXCJjZGstbW9uaXRvcmluZy1jb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0lUb3BpY30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7RHVyYXRpb24sIFN0YWNrfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7QWxhcm1IZWxwZXJ9IGZyb20gXCIuL2FsYXJtLWhlbHBlclwiO1xuXG5leHBvcnQgZW51bSBBbGFybUNhdGVnb3J5IHtcbiAgQ3JpdGljYWwgPSBcIkNyaXRpY2FsXCIsXG4gIFdhcm5pbmcgPSBcIldhcm5pbmdcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtc0NhdGVnb3J5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUb3BpY3MgdG8gc2VuZCBhbGFybSBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZnlUb3BpY3M/OiBJVG9waWNbXTtcblxuICAvKipcbiAgICogQWN0aW9ucyB0byBzZW5kIGFsYXJtIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmeUFjdGlvbnM/OiBJQWxhcm1BY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGFybXNPcHRpb25zPFQgZXh0ZW5kcyBBbGFybXNDYXRlZ29yeU9wdGlvbnM+IHtcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkcyBmb3IgY3JpdGljYWwgYWxhcm1zLlxuICAgKlxuICAgKiBJZiBubyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCwgYSBzZXQgb2YgZGVmYXVsdCBhbGFybXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBjcml0aWNhbEFsYXJtT3B0aW9ucz86IFQ7XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZHMgZm9yIHdhcm5pbmcgYWxhcm1zLlxuICAgKlxuICAgKiBJZiBubyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCwgYSBzZXQgb2YgZGVmYXVsdCBhbGFybXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSB3YXJuaW5nQWxhcm1PcHRpb25zPzogVDtcblxuICAvKipcbiAgICogTWFpbiBlbnRyeSBwb2ludCBmb3IgbW9uaXRvcmluZy5cbiAgICpcbiAgICogSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGEgZGVmYXVsdCBmYWNhZGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZ0ZhY2FkZT86IE1vbml0b3JpbmdGYWNhZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXNoYm9hcmRGYWN0b3J5IHRvIHVzZSB3aGVuIGdlbmVyYXRpbmcgQ2xvdWRXYXRjaCBkYXNoYm9hcmRzLlxuICAgKlxuICAgKiBJZiBub3QgZGVmaW5lZCwgZGFzaGJvYXJkcyBhcmUgbm90IGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZEZhY3Rvcnk/OiBJRGFzaGJvYXJkRmFjdG9yeTtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gYWxhcm0gZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0FsYXJtRGFzaGJvYXJkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gZGV0YWlsZWQgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0RldGFpbERhc2hib2FyZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB3aWRnZXRzIHRvIHN1bW1hcnkgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb1N1bW1hcnlEYXNoYm9hcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIGdlbmVyYXRlZCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1OYW1lUHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBBbGFybXMgY29uc3RydWN0cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFsYXJtc0Jhc2U8QyBleHRlbmRzIEFsYXJtc0NhdGVnb3J5T3B0aW9ucywgUCBleHRlbmRzIEFsYXJtc09wdGlvbnM8Qz4+IGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogVGhlIE1vbml0b3JpbmdGYWNhZGUgaW5zdGFuY2UgZWl0aGVyIHBhc3NlZCBpbiBvciBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nRmFjYWRlOiBNb25pdG9yaW5nRmFjYWRlO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwcm9wczogUDtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBnZW5lcmF0ZSBhbGFybSByZWNvcmRzLlxuICAgKlxuICAgKiBAcGFyYW0gb3Byb3AgcHJvcGVydHkgZnJvbSB0aGUgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIGluc3RhbmNlXG4gICAqIEBwYXJhbSB0cHJvcCBwcm9wZXJ0eSBmcm9tIHRoZSBDdXN0b21BbGFybVRocmVzaG9sZCBpbnN0YW5jZVxuICAgKiBAcGFyYW0gZGVmYXVsdENyaXRpY2FsVGhyZXNob2xkIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjcml0aWNhbCB0aHJlc2hvbGRcbiAgICogQHBhcmFtIGRlZmF1bHRXYXJuaW5nVGhyZXNob2xkIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSB3YXJuaW5nIHRocmVzaG9sZFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9SZWNvcmQ8VCBleHRlbmRzIEN1c3RvbUFsYXJtVGhyZXNob2xkPihcbiAgICBvcHJvcDoga2V5b2YgQyxcbiAgICB0cHJvcDoga2V5b2YgVCxcbiAgICBkZWZhdWx0Q3JpdGljYWxUaHJlc2hvbGQ/OiBudW1iZXIgfCBEdXJhdGlvbixcbiAgICBkZWZhdWx0V2FybmluZ1RocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uKSB7XG4gICAgcmV0dXJuIEFsYXJtSGVscGVyLnRvUmVjb3JkPEMsIFQ+KFxuICAgICAgdGhpcy5wcm9wcywgb3Byb3AsIHRwcm9wLCBkZWZhdWx0Q3JpdGljYWxUaHJlc2hvbGQsIGRlZmF1bHRXYXJuaW5nVGhyZXNob2xkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUCkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMubW9uaXRvcmluZ0ZhY2FkZSA9IHByb3BzLm1vbml0b3JpbmdGYWNhZGU/P25ldyBNb25pdG9yaW5nRmFjYWRlKHRoaXMsICdNb25pdG9yaW5nRmFjYWRlJywge1xuICAgICAgbWV0cmljRmFjdG9yeURlZmF1bHRzOiB7fSxcbiAgICAgIGFsYXJtRmFjdG9yeURlZmF1bHRzOiB7XG4gICAgICAgIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBhbGFybU5hbWVQcmVmaXg6IHByb3BzLmFsYXJtTmFtZVByZWZpeD8/U3RhY2sub2YodGhpcykuc3RhY2tOYW1lXG4gICAgICB9LFxuICAgICAgZGFzaGJvYXJkRmFjdG9yeTogcHJvcHMuZGFzaGJvYXJkRmFjdG9yeVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QWxhcm1zKGNhdGVnb3J5OiBBbGFybUNhdGVnb3J5KTogQWxhcm1bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLm1vbml0b3JpbmdGYWNhZGUuY3JlYXRlZEFsYXJtc1dpdGhEaXNhbWJpZ3VhdG9yKGNhdGVnb3J5KS5tYXAoKGF3YSkgPT4gYXdhLmFsYXJtKS52YWx1ZXMoKV07XG4gIH1cblxuICBnZXRDcml0aWNhbEFsYXJtcygpOiBBbGFybVtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGFybXMoQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCk7XG4gIH1cblxuICBnZXRXYXJuaW5nQWxhcm1zKCk6IEFsYXJtW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsYXJtcyhBbGFybUNhdGVnb3J5Lldhcm5pbmcpO1xuICB9XG59XG4iXX0=
@@ -33,4 +33,4 @@ class ParameterReader extends custom_resources_1.AwsCustomResource {
33
33
  }
34
34
  }
35
35
  exports.ParameterReader = ParameterReader;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXJlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcmFtZXRlci1yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQTJFO0FBRTNFLGlEQUE0RDtBQVU1RDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxvQ0FBaUI7SUFFcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxNQUFNLElBQUksR0FBZTtZQUN2QixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWE7YUFDMUI7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFDO1NBQ2pELENBQUM7UUFFRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxDQUFDLElBQUkseUJBQWUsQ0FBQzt3QkFDL0IsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3dCQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt3QkFDN0IsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztxQkFDckIsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBNUJELDBDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXdzQ3VzdG9tUmVzb3VyY2UsIEF3c1Nka0NhbGx9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7RWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgUGFyYW1ldGVyUmVhZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyUmVhZGVyUHJvcHMge1xuICByZWFkb25seSBwYXJhbWV0ZXJOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEN1c3RvbSByZXNvdXJjZSBhbGxvd2luZyBTU00gcGFyYW1ldGVyIHN0cmluZ3MgdG8gYmUgcmVhZCBhY3Jvc3MgcmVnaW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclJlYWRlciBleHRlbmRzIEF3c0N1c3RvbVJlc291cmNlIHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGFyYW1ldGVyUmVhZGVyUHJvcHMpIHtcbiAgICBjb25zdCBjYWxsOiBBd3NTZGtDYWxsID0ge1xuICAgICAgc2VydmljZTogXCJTU01cIixcbiAgICAgIGFjdGlvbjogXCJnZXRQYXJhbWV0ZXJcIixcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgTmFtZTogcHJvcHMucGFyYW1ldGVyTmFtZVxuICAgICAgfSxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiB7IGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCl9XG4gICAgfTtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgb25VcGRhdGU6IGNhbGwsXG4gICAgICBwb2xpY3k6IHtcbiAgICAgICAgc3RhdGVtZW50czogW25ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3RyaW5nVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNwb25zZUZpZWxkKFwiUGFyYW1ldGVyLlZhbHVlXCIpLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXJlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcmFtZXRlci1yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQTJFO0FBRTNFLGlEQUE0RDtBQVU1RDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxvQ0FBaUI7SUFFcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxNQUFNLElBQUksR0FBZTtZQUN2QixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWE7YUFDMUI7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1NBQ2xELENBQUM7UUFFRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxDQUFDLElBQUkseUJBQWUsQ0FBQzt3QkFDL0IsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3dCQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt3QkFDN0IsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztxQkFDckIsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBNUJELDBDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXdzQ3VzdG9tUmVzb3VyY2UsIEF3c1Nka0NhbGx9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7RWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgUGFyYW1ldGVyUmVhZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyUmVhZGVyUHJvcHMge1xuICByZWFkb25seSBwYXJhbWV0ZXJOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEN1c3RvbSByZXNvdXJjZSBhbGxvd2luZyBTU00gcGFyYW1ldGVyIHN0cmluZ3MgdG8gYmUgcmVhZCBhY3Jvc3MgcmVnaW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclJlYWRlciBleHRlbmRzIEF3c0N1c3RvbVJlc291cmNlIHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGFyYW1ldGVyUmVhZGVyUHJvcHMpIHtcbiAgICBjb25zdCBjYWxsOiBBd3NTZGtDYWxsID0ge1xuICAgICAgc2VydmljZTogXCJTU01cIixcbiAgICAgIGFjdGlvbjogXCJnZXRQYXJhbWV0ZXJcIixcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgTmFtZTogcHJvcHMucGFyYW1ldGVyTmFtZVxuICAgICAgfSxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiB7IGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCkgfVxuICAgIH07XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIG9uVXBkYXRlOiBjYWxsLFxuICAgICAgcG9saWN5OiB7XG4gICAgICAgIHN0YXRlbWVudHM6IFtuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgYWN0aW9uczogW1wic3NtOkdldFBhcmFtZXRlclwiXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPV1xuICAgICAgICB9KV1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFN0cmluZ1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzcG9uc2VGaWVsZChcIlBhcmFtZXRlci5WYWx1ZVwiKS50b1N0cmluZygpO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truemark-cdk-lib",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "scripts": {
@@ -47,5 +47,5 @@
47
47
  "@aws-cdk/aws-synthetics-alpha": "^2.18.0-alpha.0",
48
48
  "cdk-monitoring-constructs": "^1.6.4"
49
49
  },
50
- "gitHead": "346af1631f8300c3e50f57f7f9779270500272d6"
50
+ "gitHead": "87c4d87c8c3b9449f28e762f415bf6c6487b3a09"
51
51
  }
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const cdk = require("aws-cdk-lib");
4
3
  const path = require("path");
5
4
  const assertions_1 = require("aws-cdk-lib/assertions");
6
5
  const aws_lambda_1 = require("../../aws-lambda");
6
+ const test_helper_1 = require("../test-helper");
7
7
  test('Python Lambda Test', () => {
8
- const app = new cdk.App();
9
- const stack = new cdk.Stack(app, 'TestStack');
8
+ const stack = test_helper_1.TestHelper.stack();
10
9
  new aws_lambda_1.PythonFunction(stack, 'TestFunction', {
11
10
  entry: path.join(__dirname, 'python-lambda')
12
11
  });
13
12
  const template = assertions_1.Template.fromStack(stack);
14
- template.hasResourceProperties("AWS::Lambda::Function", {});
15
- // console.log(template.findResources("AWS::CloudWatch::Alarm"));
16
- // console.log(template.findResources("AWS::Lambda::Function"));
13
+ template.hasResourceProperties("AWS::Lambda::Function", {
14
+ Runtime: "python3.9"
15
+ });
16
+ template.resourceCountIs(test_helper_1.ResourceType.CLOUDWATCH_ALARM, 3);
17
17
  });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHl0aG9uLWZ1bmN0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJweXRob24tZnVuY3Rpb24udGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFtQztBQUNuQyw2QkFBNkI7QUFDN0IsdURBQWdEO0FBQ2hELGlEQUFnRDtBQUVoRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUMsSUFBSSwyQkFBYyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7UUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztLQUM3QyxDQUFDLENBQUM7SUFDSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUQsaUVBQWlFO0lBQ2pFLGdFQUFnRTtBQUNsRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7VGVtcGxhdGV9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5pbXBvcnQge1B5dGhvbkZ1bmN0aW9ufSBmcm9tIFwiLi4vLi4vYXdzLWxhbWJkYVwiO1xuXG50ZXN0KCdQeXRob24gTGFtYmRhIFRlc3QnLCAoKSA9PiB7XG4gIGNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayhhcHAsICdUZXN0U3RhY2snKTtcbiAgbmV3IFB5dGhvbkZ1bmN0aW9uKHN0YWNrLCAnVGVzdEZ1bmN0aW9uJywge1xuICAgIGVudHJ5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHl0aG9uLWxhbWJkYScpXG4gIH0pO1xuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6TGFtYmRhOjpGdW5jdGlvblwiLCB7fSk7XG4gIC8vIGNvbnNvbGUubG9nKHRlbXBsYXRlLmZpbmRSZXNvdXJjZXMoXCJBV1M6OkNsb3VkV2F0Y2g6OkFsYXJtXCIpKTtcbiAgLy8gY29uc29sZS5sb2codGVtcGxhdGUuZmluZFJlc291cmNlcyhcIkFXUzo6TGFtYmRhOjpGdW5jdGlvblwiKSk7XG59KTtcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHl0aG9uLWZ1bmN0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJweXRob24tZnVuY3Rpb24udGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE2QjtBQUM3Qix1REFBZ0Q7QUFDaEQsaURBQWdEO0FBQ2hELGdEQUF3RDtBQUV4RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQzlCLE1BQU0sS0FBSyxHQUFHLHdCQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsSUFBSSwyQkFBYyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7UUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztLQUM3QyxDQUFDLENBQUM7SUFDSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUU7UUFDdEQsT0FBTyxFQUFFLFdBQVc7S0FDckIsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGVBQWUsQ0FBQywwQkFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHtUZW1wbGF0ZX0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCB7UHl0aG9uRnVuY3Rpb259IGZyb20gXCIuLi8uLi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge1Jlc291cmNlVHlwZSwgVGVzdEhlbHBlcn0gZnJvbSBcIi4uL3Rlc3QtaGVscGVyXCI7XG5cbnRlc3QoJ1B5dGhvbiBMYW1iZGEgVGVzdCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBUZXN0SGVscGVyLnN0YWNrKCk7XG4gIG5ldyBQeXRob25GdW5jdGlvbihzdGFjaywgJ1Rlc3RGdW5jdGlvbicsIHtcbiAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B5dGhvbi1sYW1iZGEnKVxuICB9KTtcbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkxhbWJkYTo6RnVuY3Rpb25cIiwge1xuICAgIFJ1bnRpbWU6IFwicHl0aG9uMy45XCJcbiAgfSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhSZXNvdXJjZVR5cGUuQ0xPVURXQVRDSF9BTEFSTSwgMyk7XG59KTtcbiJdfQ==