@liflig/cdk 2.6.1 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceAlarms = void 0;
4
- const constructs = require("constructs");
4
+ const cdk = require("aws-cdk-lib");
5
5
  const cloudwatch = require("aws-cdk-lib/aws-cloudwatch");
6
6
  const logs = require("aws-cdk-lib/aws-logs");
7
- const cdk = require("aws-cdk-lib");
7
+ const constructs = require("constructs");
8
8
  /**
9
9
  * Various alarms and monitoring.
10
10
  *
@@ -25,7 +25,7 @@ class ServiceAlarms extends constructs.Construct {
25
25
  * that causes 500 for logging with liflig-logging.
26
26
  */
27
27
  addJsonErrorAlarm(props) {
28
- var _a, _b;
28
+ var _a, _b, _c, _d;
29
29
  const errorMetricFilter = props.logGroup.addMetricFilter("ErrorMetricFilter", {
30
30
  filterPattern: logs.FilterPattern.any(logs.FilterPattern.stringValue("$.level", "=", "ERROR"),
31
31
  // FATAL covers some applications we run that uses log4j or
@@ -48,52 +48,102 @@ class ServiceAlarms extends constructs.Construct {
48
48
  threshold: 1,
49
49
  treatMissingData: cloudwatch.TreatMissingData.NOT_BREACHING,
50
50
  });
51
- errorAlarm.addAlarmAction(this.action);
52
- if ((_b = props.enableOkAction) !== null && _b !== void 0 ? _b : true) {
53
- errorAlarm.addOkAction(this.action);
51
+ errorAlarm.addAlarmAction((_b = props.action) !== null && _b !== void 0 ? _b : this.action);
52
+ if ((_c = props.enableOkAction) !== null && _c !== void 0 ? _c : true) {
53
+ errorAlarm.addOkAction((_d = props.action) !== null && _d !== void 0 ? _d : this.action);
54
54
  }
55
55
  }
56
56
  /**
57
- * Monitor healthy host count and connection errors from load balancer.
57
+ * Sets up three CloudWatch Alarms for monitoring an ECS service behind a target group:
58
+ * 1) one that triggers if the target is responding with too many 5xx errors.
59
+ * 2) one that triggers if the 95% percentile of response times from the target is too high.
60
+ * 3) one that triggers if there are no healthy targets or if the load balancer fails to connect to targets.
58
61
  */
59
- addTargetGroupAlarm(props) {
62
+ addTargetGroupAlarms(props) {
63
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19;
64
+ const targetConnectionErrorAlarm = new cloudwatch.Metric({
65
+ metricName: "TargetConnectionErrorCount",
66
+ namespace: "AWS/ApplicationELB",
67
+ statistic: "Sum",
68
+ period: (_b = (_a = props.targetHealthAlarm) === null || _a === void 0 ? void 0 : _a.period) !== null && _b !== void 0 ? _b : cdk.Duration.seconds(60),
69
+ dimensionsMap: {
70
+ TargetGroup: props.targetGroupFullName,
71
+ LoadBalancer: props.loadBalancerFullName,
72
+ },
73
+ }).createAlarm(this, "ConnectionAlarm", {
74
+ actionsEnabled: true,
75
+ alarmDescription: `Load balancer is failing to connect to target(s) in ECS service '${this.serviceName}'.`,
76
+ evaluationPeriods: (_d = (_c = props.targetHealthAlarm) === null || _c === void 0 ? void 0 : _c.evaluationPeriods) !== null && _d !== void 0 ? _d : 1,
77
+ threshold: 1,
78
+ treatMissingData: cloudwatch.TreatMissingData.NOT_BREACHING,
79
+ });
60
80
  const healthAlarm = new cloudwatch.Metric({
61
81
  metricName: "HealthyHostCount",
62
82
  namespace: "AWS/ApplicationELB",
63
- statistic: "Average",
64
- period: cdk.Duration.seconds(60),
83
+ statistic: "Minimum",
84
+ period: (_f = (_e = props.targetHealthAlarm) === null || _e === void 0 ? void 0 : _e.period) !== null && _f !== void 0 ? _f : cdk.Duration.seconds(60),
65
85
  dimensionsMap: {
66
86
  TargetGroup: props.targetGroupFullName,
67
87
  LoadBalancer: props.loadBalancerFullName,
68
88
  },
69
89
  }).createAlarm(this, "HealthAlarm", {
70
- alarmDescription: "Service might be unavailable! It is not responding to health checks.",
90
+ alarmDescription: `There are no healthy target(s) in ECS service '${this.serviceName}'.`,
71
91
  comparisonOperator: cloudwatch.ComparisonOperator.LESS_THAN_THRESHOLD,
72
- evaluationPeriods: 1,
92
+ evaluationPeriods: (_h = (_g = props.targetHealthAlarm) === null || _g === void 0 ? void 0 : _g.evaluationPeriods) !== null && _h !== void 0 ? _h : 1,
73
93
  threshold: 1,
74
94
  treatMissingData: cloudwatch.TreatMissingData.BREACHING,
75
95
  });
76
- healthAlarm.addAlarmAction(this.action);
77
- healthAlarm.addOkAction(this.action);
78
- const connectionAlarm = new cloudwatch.Metric({
79
- metricName: "TargetConnectionErrorCount",
96
+ const targetHealthAlarm = new cloudwatch.CompositeAlarm(this, "TargetHealthAlarm", {
97
+ alarmRule: cdk.aws_cloudwatch.AlarmRule.anyOf(cdk.aws_cloudwatch.AlarmRule.fromAlarm(targetConnectionErrorAlarm, cloudwatch.AlarmState.ALARM), cdk.aws_cloudwatch.AlarmRule.fromAlarm(healthAlarm, cloudwatch.AlarmState.ALARM)),
98
+ alarmDescription: (_k = (_j = props.targetHealthAlarm) === null || _j === void 0 ? void 0 : _j.description) !== null && _k !== void 0 ? _k : `The load balancer is either receiving bad health checks from or is unable to connect to target(s) in ECS service '${this.serviceName}'`,
99
+ actionsEnabled: false,
100
+ });
101
+ if ((_m = (_l = props.targetHealthAlarm) === null || _l === void 0 ? void 0 : _l.enabled) !== null && _m !== void 0 ? _m : true) {
102
+ targetHealthAlarm.addAlarmAction((_p = (_o = props.targetHealthAlarm) === null || _o === void 0 ? void 0 : _o.action) !== null && _p !== void 0 ? _p : this.action);
103
+ targetHealthAlarm.addOkAction((_r = (_q = props.targetHealthAlarm) === null || _q === void 0 ? void 0 : _q.action) !== null && _r !== void 0 ? _r : this.action);
104
+ }
105
+ const tooMany5xxResponsesFromTargetsAlarm = new cloudwatch.Metric({
106
+ metricName: "HTTPCode_Target_5XX_Count",
80
107
  namespace: "AWS/ApplicationELB",
81
108
  statistic: "Sum",
82
- period: cdk.Duration.seconds(60),
109
+ period: (_t = (_s = props.tooMany5xxResponsesFromTargetsAlarm) === null || _s === void 0 ? void 0 : _s.period) !== null && _t !== void 0 ? _t : cdk.Duration.seconds(60),
83
110
  dimensionsMap: {
84
111
  TargetGroup: props.targetGroupFullName,
85
112
  LoadBalancer: props.loadBalancerFullName,
86
113
  },
87
- }).createAlarm(this, "ConnectionAlarm", {
114
+ }).createAlarm(this, "AlbTargets5xxAlarm", {
88
115
  actionsEnabled: true,
89
- alarmDescription: "Load balancer could not connect to target",
90
- evaluationPeriods: 1,
91
- threshold: 1,
116
+ alarmDescription: (_v = (_u = props.tooMany5xxResponsesFromTargetsAlarm) === null || _u === void 0 ? void 0 : _u.description) !== null && _v !== void 0 ? _v : `Load balancer received too many 5XX responses from target(s) in ECS service '${this.serviceName}'.`,
117
+ evaluationPeriods: (_x = (_w = props.tooMany5xxResponsesFromTargetsAlarm) === null || _w === void 0 ? void 0 : _w.evaluationPeriods) !== null && _x !== void 0 ? _x : 3,
118
+ threshold: (_z = (_y = props.tooMany5xxResponsesFromTargetsAlarm) === null || _y === void 0 ? void 0 : _y.threshold) !== null && _z !== void 0 ? _z : 10,
92
119
  treatMissingData: cloudwatch.TreatMissingData.NOT_BREACHING,
93
120
  });
94
- connectionAlarm.addAlarmAction(this.action);
95
- connectionAlarm.addOkAction(this.action);
121
+ if ((_1 = (_0 = props.tooMany5xxResponsesFromTargetsAlarm) === null || _0 === void 0 ? void 0 : _0.enabled) !== null && _1 !== void 0 ? _1 : true) {
122
+ tooMany5xxResponsesFromTargetsAlarm.addAlarmAction((_3 = (_2 = props.tooMany5xxResponsesFromTargetsAlarm) === null || _2 === void 0 ? void 0 : _2.action) !== null && _3 !== void 0 ? _3 : this.action);
123
+ tooMany5xxResponsesFromTargetsAlarm.addOkAction((_5 = (_4 = props.tooMany5xxResponsesFromTargetsAlarm) === null || _4 === void 0 ? void 0 : _4.action) !== null && _5 !== void 0 ? _5 : this.action);
124
+ }
125
+ const targetResponseTimeAlarm = new cloudwatch.Metric({
126
+ metricName: "TargetResponseTime",
127
+ namespace: "AWS/ApplicationELB",
128
+ statistic: "p(95)",
129
+ period: (_7 = (_6 = props.targetResponseTimeAlarm) === null || _6 === void 0 ? void 0 : _6.period) !== null && _7 !== void 0 ? _7 : cdk.Duration.minutes(5),
130
+ unit: cloudwatch.Unit.MILLISECONDS,
131
+ dimensionsMap: {
132
+ LoadBalancer: props.loadBalancerFullName,
133
+ TargetGroup: props.targetGroupFullName,
134
+ },
135
+ }).createAlarm(this, "TargetResponseTimeAlarm", {
136
+ alarmDescription: (_9 = (_8 = props.targetResponseTimeAlarm) === null || _8 === void 0 ? void 0 : _8.description) !== null && _9 !== void 0 ? _9 : `5% of responses from ECS service '${this.serviceName}' are taking longer than expected.`,
137
+ comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
138
+ evaluationPeriods: (_11 = (_10 = props.targetResponseTimeAlarm) === null || _10 === void 0 ? void 0 : _10.evaluationPeriods) !== null && _11 !== void 0 ? _11 : 1,
139
+ threshold: ((_13 = (_12 = props.targetResponseTimeAlarm) === null || _12 === void 0 ? void 0 : _12.threshold) !== null && _13 !== void 0 ? _13 : cdk.Duration.millis(500)).toMilliseconds(),
140
+ treatMissingData: cloudwatch.TreatMissingData.IGNORE,
141
+ });
142
+ if ((_15 = (_14 = props.targetResponseTimeAlarm) === null || _14 === void 0 ? void 0 : _14.enabled) !== null && _15 !== void 0 ? _15 : true) {
143
+ targetResponseTimeAlarm.addAlarmAction((_17 = (_16 = props.targetResponseTimeAlarm) === null || _16 === void 0 ? void 0 : _16.action) !== null && _17 !== void 0 ? _17 : this.action);
144
+ targetResponseTimeAlarm.addOkAction((_19 = (_18 = props.targetResponseTimeAlarm) === null || _18 === void 0 ? void 0 : _18.action) !== null && _19 !== void 0 ? _19 : this.action);
145
+ }
96
146
  }
97
147
  }
98
148
  exports.ServiceAlarms = ServiceAlarms;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1hbGFybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zL3NlcnZpY2UtYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUN4Qyx5REFBd0Q7QUFDeEQsNkNBQTRDO0FBQzVDLG1DQUFrQztBQU9sQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxhQUFjLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFJckQsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBeUI7UUFFekIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsS0FNakI7O1FBQ0MsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDdEQsbUJBQW1CLEVBQ25CO1lBQ0UsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztZQUN2RCwyREFBMkQ7WUFDM0QsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVztZQUM1QixzQkFBc0I7WUFDdEIsMkJBQTJCLEVBQzNCLEdBQUcsRUFDSCx1QkFBdUIsQ0FDeEIsQ0FDRjtZQUNELFVBQVUsRUFBRSxRQUFRO1lBQ3BCLGVBQWUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMs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dHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIlxuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUFsYXJtc1Byb3BzIGV4dGVuZHMgY2RrLlN0YWNrUHJvcHMge1xuICBhY3Rpb246IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBWYXJpb3VzIGFsYXJtcyBhbmQgbW9uaXRvcmluZy5cbiAqXG4gKiBCeSBpdHNlbGYgbm8gYWxhcm1zIGlzIGNyZWF0ZWQuIFVzZSB0aGUgbWV0aG9kcyBhdmFpbGFibGVcbiAqIHRvIGFkZCBhbGFybXMuXG4gKlxuICogU2VlIFNsYWNrQWxhcm0gY29uc3RydWN0IGZvciBTTlMgQWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUFsYXJtcyBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb246IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTZXJ2aWNlQWxhcm1zUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMuYWN0aW9uID0gcHJvcHMuYWN0aW9uXG4gICAgdGhpcy5zZXJ2aWNlTmFtZSA9IHByb3BzLnNlcnZpY2VOYW1lXG4gIH1cblxuICAvKipcbiAgICogRm9yIGxvZ3Mgc3RvcmVkIGFzIEpTT04sIG1vbml0b3IgbG9nIGVudHJpZXMgbG9nZ2VkXG4gICAqIHdpdGggbGV2ZWwgRVJST1Igb3IgaGlnaGVyLCBhcyB3ZWxsIGFzIGFueSByZXF1ZXN0c1xuICAgKiB0aGF0IGNhdXNlcyA1MDAgZm9yIGxvZ2dpbmcgd2l0aCBsaWZsaWctbG9nZ2luZy5cbiAgICovXG4gIGFkZEpzb25FcnJvckFsYXJtKHByb3BzOiB7XG4gICAgbG9nR3JvdXA6IGxvZ3MuSUxvZ0dyb3VwXG4gICAgYWxhcm1EZXNjcmlwdGlvbj86IHN0cmluZ1xuICAgIC8qKiBTZXQgdG8gYGZhbHNlYCB0byBzdG9wIHRoZSBhbGFybSBmcm9tIHNlbmRpbmcgT0sgZXZlbnRzLlxuICAgICAqIEBkZWZhdWx0IHRydWUgKi9cbiAgICBlbmFibGVPa0FjdGlvbj86IGJvb2xlYW5cbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yTWV0cmljRmlsdGVyID0gcHJvcHMubG9nR3JvdXAuYWRkTWV0cmljRmlsdGVyKFxuICAgICAgXCJFcnJvck1ldHJpY0ZpbHRlclwiLFxuICAgICAge1xuICAgICAgICBmaWx0ZXJQYXR0ZXJuOiBsb2dzLkZpbHRlclBhdHRlcm4uYW55KFxuICAgICAgICAgIGxvZ3MuRmlsdGVyUGF0dGVybi5zdHJpbmdWYWx1ZShcIiQubGV2ZWxcIiwgXCI9XCIsIFwiRVJST1JcIiksXG4gICAgICAgICAgLy8gRkFUQUwgY292ZXJzIHNvbWUgYXBwbGljYXRpb25zIHdlIHJ1biB0aGF0IHVzZXMgbG9nNGogb3JcbiAgICAgICAgICAvLyBvdGhlciBsaWJyYXJpZXMuIEl0IGlzIG5vdCBleGlzdGVudCBpbiBzbGY0ai5cbiAgICAgICAgICBsb2dzLkZpbHRlclBhdHRlcm4uc3RyaW5nVmFsdWUoXCIkLmxldmVsXCIsIFwiPVwiLCBcIkZBVEFMXCIpLFxuICAgICAgICAgIGxvZ3MuRmlsdGVyUGF0dGVybi5zdHJpbmdWYWx1ZShcbiAgICAgICAgICAgIC8vIEZvciBsaWZsaWctbG9nZ2luZy5cbiAgICAgICAgICAgIFwiJC5yZXF1ZXN0SW5mby5zdGF0dXMuY29kZVwiLFxuICAgICAgICAgICAgXCI9XCIsXG4gICAgICAgICAgICBcIklOVEVSTkFMX1NFUlZFUl9FUlJPUlwiLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICAgIG1ldHJpY05hbWU6IFwiRXJyb3JzXCIsXG4gICAgICAgIG1ldHJpY05hbWVzcGFjZTogYHN0YWNrLyR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0vJHtcbiAgICAgICAgICB0aGlzLnNlcnZpY2VOYW1lXG4gICAgICAgIH0vRXJyb3JzYCxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgZXJyb3JBbGFybSA9IGVycm9yTWV0cmljRmlsdGVyXG4gICAgICAubWV0cmljKClcbiAgICAgIC53aXRoKHtcbiAgICAgICAgc3RhdGlzdGljOiBcIlN1bVwiLFxuICAgICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIH0pXG4gICAgICAuY3JlYXRlQWxhcm0odGhpcywgXCJFcnJvckxvZ0FsYXJtXCIsIHtcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICBwcm9wcy5hbGFybURlc2NyaXB0aW9uID8/IGAke3RoaXMuc2VydmljZU5hbWV9IGxvZ2dlZCBhbiBlcnJvcmAsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgfSlcblxuICAgIGVycm9yQWxhcm0uYWRkQWxhcm1BY3Rpb24odGhpcy5hY3Rpb24pXG4gICAgaWYgKHByb3BzLmVuYWJsZU9rQWN0aW9uID8/IHRydWUpIHtcbiAgICAgIGVycm9yQWxhcm0uYWRkT2tBY3Rpb24odGhpcy5hY3Rpb24pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vbml0b3IgaGVhbHRoeSBob3N0IGNvdW50IGFuZCBjb25uZWN0aW9uIGVycm9ycyBmcm9tIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICBhZGRUYXJnZXRHcm91cEFsYXJtKHByb3BzOiB7XG4gICAgdGFyZ2V0R3JvdXBGdWxsTmFtZTogc3RyaW5nXG4gICAgbG9hZEJhbGFuY2VyRnVsbE5hbWU6IHN0cmluZ1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgaGVhbHRoQWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbWV0cmljTmFtZTogXCJIZWFsdGh5SG9zdENvdW50XCIsXG4gICAgICBuYW1lc3BhY2U6IFwiQVdTL0FwcGxpY2F0aW9uRUxCXCIsXG4gICAgICBzdGF0aXN0aWM6IFwiQXZlcmFnZVwiLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFRhcmdldEdyb3VwOiBwcm9wcy50YXJnZXRHcm91cEZ1bGxOYW1lLFxuICAgICAgICBMb2FkQmFsYW5jZXI6IHByb3BzLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybSh0aGlzLCBcIkhlYWx0aEFsYXJtXCIsIHtcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgIFwiU2VydmljZSBtaWdodCBiZSB1bmF2YWlsYWJsZSEgSXQgaXMgbm90IHJlc3BvbmRpbmcgdG8gaGVhbHRoIGNoZWNrcy5cIixcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICB9KVxuXG4gICAgaGVhbHRoQWxhcm0uYWRkQWxhcm1BY3Rpb24odGhpcy5hY3Rpb24pXG4gICAgaGVhbHRoQWxhcm0uYWRkT2tBY3Rpb24odGhpcy5hY3Rpb24pXG5cbiAgICBjb25zdCBjb25uZWN0aW9uQWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbWV0cmljTmFtZTogXCJUYXJnZXRDb25uZWN0aW9uRXJyb3JDb3VudFwiLFxuICAgICAgbmFtZXNwYWNlOiBcIkFXUy9BcHBsaWNhdGlvbkVMQlwiLFxuICAgICAgc3RhdGlzdGljOiBcIlN1bVwiLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFRhcmdldEdyb3VwOiBwcm9wcy50YXJnZXRHcm91cEZ1bGxOYW1lLFxuICAgICAgICBMb2FkQmFsYW5jZXI6IHByb3BzLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybSh0aGlzLCBcIkNvbm5lY3Rpb25BbGFybVwiLCB7XG4gICAgICBhY3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFwiTG9hZCBiYWxhbmNlciBjb3VsZCBub3QgY29ubmVjdCB0byB0YXJnZXRcIixcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgfSlcblxuICAgIGNvbm5lY3Rpb25BbGFybS5hZGRBbGFybUFjdGlvbih0aGlzLmFjdGlvbilcbiAgICBjb25uZWN0aW9uQWxhcm0uYWRkT2tBY3Rpb24odGhpcy5hY3Rpb24pXG4gIH1cbn1cbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1hbGFybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zL3NlcnZpY2UtYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFrQztBQUNsQyx5REFBd0Q7QUFDeEQsNkNBQTRDO0FBQzVDLHlDQUF3QztBQWF4Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxhQUFjLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFJckQsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBeUI7UUFFekIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsS0FZakI7O1FBQ0MsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDdEQsbUJBQW1CLEVBQ25CO1lBQ0UsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztZQUN2RCwyREFBMkQ7WUFDM0QsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVztZQUM1QixzQkFBc0I7WUFDdEIsMkJBQTJCLEVBQzNCLEdBQUcsRUFDSCx1QkFBdUIsQ0FDeEIsQ0FDRjtZQUNELFVBQVUsRUFBRSxRQUFRO1lBQ3BCLGVBQWUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMs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Q0EwU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCJcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCJcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VBbGFybXNQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGFjdGlvbiB0byB1c2UgZm9yIENsb3VkV2F0Y2ggYWxhcm0gc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYWN0aW9uOiBjbG91ZHdhdGNoLklBbGFybUFjdGlvblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEVDUyBzZXJ2aWNlLlxuICAgKi9cbiAgc2VydmljZU5hbWU6IHN0cmluZ1xufVxuXG4vKipcbiAqIFZhcmlvdXMgYWxhcm1zIGFuZCBtb25pdG9yaW5nLlxuICpcbiAqIEJ5IGl0c2VsZiBubyBhbGFybXMgaXMgY3JlYXRlZC4gVXNlIHRoZSBtZXRob2RzIGF2YWlsYWJsZVxuICogdG8gYWRkIGFsYXJtcy5cbiAqXG4gKiBTZWUgU2xhY2tBbGFybSBjb25zdHJ1Y3QgZm9yIFNOUyBBY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQWxhcm1zIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbjogY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb25cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFNlcnZpY2VBbGFybXNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5hY3Rpb24gPSBwcm9wcy5hY3Rpb25cbiAgICB0aGlzLnNlcnZpY2VOYW1lID0gcHJvcHMuc2VydmljZU5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgbG9ncyBzdG9yZWQgYXMgSlNPTiwgbW9uaXRvciBsb2cgZW50cmllcyBsb2dnZWRcbiAgICogd2l0aCBsZXZlbCBFUlJPUiBvciBoaWdoZXIsIGFzIHdlbGwgYXMgYW55IHJlcXVlc3RzXG4gICAqIHRoYXQgY2F1c2VzIDUwMCBmb3IgbG9nZ2luZyB3aXRoIGxpZmxpZy1sb2dnaW5nLlxuICAgKi9cbiAgYWRkSnNvbkVycm9yQWxhcm0ocHJvcHM6IHtcbiAgICBsb2dHcm91cDogbG9ncy5JTG9nR3JvdXBcbiAgICBhbGFybURlc2NyaXB0aW9uPzogc3RyaW5nXG4gICAgLyoqXG4gICAgICogU2V0IHRvIGBmYWxzZWAgdG8gc3RvcCB0aGUgYWxhcm0gZnJvbSBzZW5kaW5nIE9LIGV2ZW50cy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICogKi9cbiAgICBlbmFibGVPa0FjdGlvbj86IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBBbiBhY3Rpb24gdG8gdXNlIGZvciBDbG91ZFdhdGNoIGFsYXJtIHN0YXRlIGNoYW5nZXMgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBhY3Rpb25cbiAgICAgKi9cbiAgICBhY3Rpb24/OiBjbG91ZHdhdGNoLklBbGFybUFjdGlvblxuICB9KTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JNZXRyaWNGaWx0ZXIgPSBwcm9wcy5sb2dHcm91cC5hZGRNZXRyaWNGaWx0ZXIoXG4gICAgICBcIkVycm9yTWV0cmljRmlsdGVyXCIsXG4gICAgICB7XG4gICAgICAgIGZpbHRlclBhdHRlcm46IGxvZ3MuRmlsdGVyUGF0dGVybi5hbnkoXG4gICAgICAgICAgbG9ncy5GaWx0ZXJQYXR0ZXJuLnN0cmluZ1ZhbHVlKFwiJC5sZXZlbFwiLCBcIj1cIiwgXCJFUlJPUlwiKSxcbiAgICAgICAgICAvLyBGQVRBTCBjb3ZlcnMgc29tZSBhcHBsaWNhdGlvbnMgd2UgcnVuIHRoYXQgdXNlcyBsb2c0aiBvclxuICAgICAgICAgIC8vIG90aGVyIGxpYnJhcmllcy4gSXQgaXMgbm90IGV4aXN0ZW50IGluIHNsZjRqLlxuICAgICAgICAgIGxvZ3MuRmlsdGVyUGF0dGVybi5zdHJpbmdWYWx1ZShcIiQubGV2ZWxcIiwgXCI9XCIsIFwiRkFUQUxcIiksXG4gICAgICAgICAgbG9ncy5GaWx0ZXJQYXR0ZXJuLnN0cmluZ1ZhbHVlKFxuICAgICAgICAgICAgLy8gRm9yIGxpZmxpZy1sb2dnaW5nLlxuICAgICAgICAgICAgXCIkLnJlcXVlc3RJbmZvLnN0YXR1cy5jb2RlXCIsXG4gICAgICAgICAgICBcIj1cIixcbiAgICAgICAgICAgIFwiSU5URVJOQUxfU0VSVkVSX0VSUk9SXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWV0cmljTmFtZTogXCJFcnJvcnNcIixcbiAgICAgICAgbWV0cmljTmFtZXNwYWNlOiBgc3RhY2svJHtjZGsuU3RhY2sub2YodGhpcykuc3RhY2tOYW1lfS8ke1xuICAgICAgICAgIHRoaXMuc2VydmljZU5hbWVcbiAgICAgICAgfS9FcnJvcnNgLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBlcnJvckFsYXJtID0gZXJyb3JNZXRyaWNGaWx0ZXJcbiAgICAgIC5tZXRyaWMoKVxuICAgICAgLndpdGgoe1xuICAgICAgICBzdGF0aXN0aWM6IFwiU3VtXCIsXG4gICAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgfSlcbiAgICAgIC5jcmVhdGVBbGFybSh0aGlzLCBcIkVycm9yTG9nQWxhcm1cIiwge1xuICAgICAgICBhbGFybURlc2NyaXB0aW9uOlxuICAgICAgICAgIHByb3BzLmFsYXJtRGVzY3JpcHRpb24gPz8gYCR7dGhpcy5zZXJ2aWNlTmFtZX0gbG9nZ2VkIGFuIGVycm9yYCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICB9KVxuXG4gICAgZXJyb3JBbGFybS5hZGRBbGFybUFjdGlvbihwcm9wcy5hY3Rpb24gPz8gdGhpcy5hY3Rpb24pXG4gICAgaWYgKHByb3BzLmVuYWJsZU9rQWN0aW9uID8/IHRydWUpIHtcbiAgICAgIGVycm9yQWxhcm0uYWRkT2tBY3Rpb24ocHJvcHMuYWN0aW9uID8/IHRoaXMuYWN0aW9uKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRocmVlIENsb3VkV2F0Y2ggQWxhcm1zIGZvciBtb25pdG9yaW5nIGFuIEVDUyBzZXJ2aWNlIGJlaGluZCBhIHRhcmdldCBncm91cDpcbiAgICogMSkgb25lIHRoYXQgdHJpZ2dlcnMgaWYgdGhlIHRhcmdldCBpcyByZXNwb25kaW5nIHdpdGggdG9vIG1hbnkgNXh4IGVycm9ycy5cbiAgICogMikgb25lIHRoYXQgdHJpZ2dlcnMgaWYgdGhlIDk1JSBwZXJjZW50aWxlIG9mIHJlc3BvbnNlIHRpbWVzIGZyb20gdGhlIHRhcmdldCBpcyB0b28gaGlnaC5cbiAgICogMykgb25lIHRoYXQgdHJpZ2dlcnMgaWYgdGhlcmUgYXJlIG5vIGhlYWx0aHkgdGFyZ2V0cyBvciBpZiB0aGUgbG9hZCBiYWxhbmNlciBmYWlscyB0byBjb25uZWN0IHRvIHRhcmdldHMuXG4gICAqL1xuICBhZGRUYXJnZXRHcm91cEFsYXJtcyhwcm9wczoge1xuICAgIC8qKlxuICAgICAqIFRoZSBmdWxsIG5hbWUgb2YgdGhlIHRhcmdldCBncm91cC5cbiAgICAgKi9cbiAgICB0YXJnZXRHcm91cEZ1bGxOYW1lOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiBsb2FkIGJhbGFuY2VyLlxuICAgICAqL1xuICAgIGxvYWRCYWxhbmNlckZ1bGxOYW1lOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBhIGNvbXBvc2l0ZSBhbGFybS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IENvbmZpZ3VyZWQgd2l0aCBzYW5lIGRlZmF1bHRzLlxuICAgICAqL1xuICAgIHRhcmdldEhlYWx0aEFsYXJtPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIEFuIGFjdGlvbiB0byB1c2UgZm9yIENsb3VkV2F0Y2ggYWxhcm0gc3RhdGUgY2hhbmdlcyBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGFjdGlvblxuICAgICAgICovXG4gICAgICBhY3Rpb24/OiBjbG91ZHdhdGNoLklBbGFybUFjdGlvblxuICAgICAgLyoqXG4gICAgICAgKiBAZGVmYXVsdCA2MCBzZWNvbmRzXG4gICAgICAgKi9cbiAgICAgIHBlcmlvZD86IGNkay5EdXJhdGlvblxuICAgICAgLyoqXG4gICAgICAgKiBAZGVmYXVsdCAxXG4gICAgICAgKi9cbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzPzogbnVtYmVyXG4gICAgICAvKipcbiAgICAgICAqIEBkZWZhdWx0IDFcbiAgICAgICAqL1xuICAgICAgdGhyZXNob2xkPzogbnVtYmVyXG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBhbiBhbGFybS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IENvbmZpZ3VyZWQgd2l0aCBzYW5lIGRlZmF1bHRzLlxuICAgICAqL1xuICAgIHRvb01hbnk1eHhSZXNwb25zZXNGcm9tVGFyZ2V0c0FsYXJtPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIEFuIGFjdGlvbiB0byB1c2UgZm9yIENsb3VkV2F0Y2ggYWxhcm0gc3RhdGUgY2hhbmdlcyBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGFjdGlvblxuICAgICAgICovXG4gICAgICBhY3Rpb24/OiBjbG91ZHdhdGNoLklBbGFybUFjdGlvblxuICAgICAgLyoqXG4gICAgICAgKiBAZGVmYXVsdCA2MCBzZWNvbmRzXG4gICAgICAgKi9cbiAgICAgIHBlcmlvZD86IGNkay5EdXJhdGlvblxuICAgICAgLyoqXG4gICAgICAgKiBAZGVmYXVsdCAzXG4gICAgICAgKi9cbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzPzogbnVtYmVyXG4gICAgICAvKipcbiAgICAgICAqIEBkZWZhdWx0IDEwXG4gICAgICAgKi9cbiAgICAgIHRocmVzaG9sZD86IG51bWJlclxuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBmb3IgYW4gYWxhcm0uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBDb25maWd1cmVkIHdpdGggc2FuZSBkZWZhdWx0cy5cbiAgICAgKi9cbiAgICB0YXJnZXRSZXNwb25zZVRpbWVBbGFybT86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhblxuICAgICAgLyoqXG4gICAgICAgKiBBbiBhY3Rpb24gdG8gdXNlIGZvciBDbG91ZFdhdGNoIGFsYXJtIHN0YXRlIGNoYW5nZXMgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBhY3Rpb25cbiAgICAgICAqL1xuICAgICAgYWN0aW9uPzogY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb25cbiAgICAgIC8qKlxuICAgICAgICogQGRlZmF1bHQgNSBtaW51dGVzXG4gICAgICAgKi9cbiAgICAgIHBlcmlvZD86IGNkay5EdXJhdGlvblxuICAgICAgLyoqXG4gICAgICAgKiBAZGVmYXVsdCAxXG4gICAgICAgKi9cbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzPzogbnVtYmVyXG4gICAgICAvKipcbiAgICAgICAqIEBkZWZhdWx0IDUwMCBtaWxsaXNlY29uZHNcbiAgICAgICAqL1xuICAgICAgdGhyZXNob2xkPzogY2RrLkR1cmF0aW9uXG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAgIH1cbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldENvbm5lY3Rpb25FcnJvckFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG1ldHJpY05hbWU6IFwiVGFyZ2V0Q29ubmVjdGlvbkVycm9yQ291bnRcIixcbiAgICAgIG5hbWVzcGFjZTogXCJBV1MvQXBwbGljYXRpb25FTEJcIixcbiAgICAgIHN0YXRpc3RpYzogXCJTdW1cIixcbiAgICAgIHBlcmlvZDogcHJvcHMudGFyZ2V0SGVhbHRoQWxhcm0/LnBlcmlvZCA/PyBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFRhcmdldEdyb3VwOiBwcm9wcy50YXJnZXRHcm91cEZ1bGxOYW1lLFxuICAgICAgICBMb2FkQmFsYW5jZXI6IHByb3BzLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybSh0aGlzLCBcIkNvbm5lY3Rpb25BbGFybVwiLCB7XG4gICAgICBhY3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IGBMb2FkIGJhbGFuY2VyIGlzIGZhaWxpbmcgdG8gY29ubmVjdCB0byB0YXJnZXQocykgaW4gRUNTIHNlcnZpY2UgJyR7dGhpcy5zZXJ2aWNlTmFtZX0nLmAsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogcHJvcHMudGFyZ2V0SGVhbHRoQWxhcm0/LmV2YWx1YXRpb25QZXJpb2RzID8/IDEsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICB9KVxuXG4gICAgY29uc3QgaGVhbHRoQWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbWV0cmljTmFtZTogXCJIZWFsdGh5SG9zdENvdW50XCIsXG4gICAgICBuYW1lc3BhY2U6IFwiQVdTL0FwcGxpY2F0aW9uRUxCXCIsXG4gICAgICBzdGF0aXN0aWM6IFwiTWluaW11bVwiLFxuICAgICAgcGVyaW9kOiBwcm9wcy50YXJnZXRIZWFsdGhBbGFybT8ucGVyaW9kID8/IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgVGFyZ2V0R3JvdXA6IHByb3BzLnRhcmdldEdyb3VwRnVsbE5hbWUsXG4gICAgICAgIExvYWRCYWxhbmNlcjogcHJvcHMubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICB9LFxuICAgIH0pLmNyZWF0ZUFsYXJtKHRoaXMsIFwiSGVhbHRoQWxhcm1cIiwge1xuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYFRoZXJlIGFyZSBubyBoZWFsdGh5IHRhcmdldChzKSBpbiBFQ1Mgc2VydmljZSAnJHt0aGlzLnNlcnZpY2VOYW1lfScuYCxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy50YXJnZXRIZWFsdGhBbGFybT8uZXZhbHVhdGlvblBlcmlvZHMgPz8gMSxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgfSlcblxuICAgIGNvbnN0IHRhcmdldEhlYWx0aEFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guQ29tcG9zaXRlQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgXCJUYXJnZXRIZWFsdGhBbGFybVwiLFxuICAgICAge1xuICAgICAgICBhbGFybVJ1bGU6IGNkay5hd3NfY2xvdWR3YXRjaC5BbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgY2RrLmF3c19jbG91ZHdhdGNoLkFsYXJtUnVsZS5mcm9tQWxhcm0oXG4gICAgICAgICAgICB0YXJnZXRDb25uZWN0aW9uRXJyb3JBbGFybSxcbiAgICAgICAgICAgIGNsb3Vkd2F0Y2guQWxhcm1TdGF0ZS5BTEFSTSxcbiAgICAgICAgICApLFxuICAgICAgICAgIGNkay5hd3NfY2xvdWR3YXRjaC5BbGFybVJ1bGUuZnJvbUFsYXJtKFxuICAgICAgICAgICAgaGVhbHRoQWxhcm0sXG4gICAgICAgICAgICBjbG91ZHdhdGNoLkFsYXJtU3RhdGUuQUxBUk0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICBwcm9wcy50YXJnZXRIZWFsdGhBbGFybT8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICBgVGhlIGxvYWQgYmFsYW5jZXIgaXMgZWl0aGVyIHJlY2VpdmluZyBiYWQgaGVhbHRoIGNoZWNrcyBmcm9tIG9yIGlzIHVuYWJsZSB0byBjb25uZWN0IHRvIHRhcmdldChzKSBpbiBFQ1Mgc2VydmljZSAnJHt0aGlzLnNlcnZpY2VOYW1lfSdgLFxuICAgICAgICBhY3Rpb25zRW5hYmxlZDogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgICBpZiAocHJvcHMudGFyZ2V0SGVhbHRoQWxhcm0/LmVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgdGFyZ2V0SGVhbHRoQWxhcm0uYWRkQWxhcm1BY3Rpb24oXG4gICAgICAgIHByb3BzLnRhcmdldEhlYWx0aEFsYXJtPy5hY3Rpb24gPz8gdGhpcy5hY3Rpb24sXG4gICAgICApXG4gICAgICB0YXJnZXRIZWFsdGhBbGFybS5hZGRPa0FjdGlvbihcbiAgICAgICAgcHJvcHMudGFyZ2V0SGVhbHRoQWxhcm0/LmFjdGlvbiA/PyB0aGlzLmFjdGlvbixcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCB0b29NYW55NXh4UmVzcG9uc2VzRnJvbVRhcmdldHNBbGFybSA9IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBtZXRyaWNOYW1lOiBcIkhUVFBDb2RlX1RhcmdldF81WFhfQ291bnRcIixcbiAgICAgIG5hbWVzcGFjZTogXCJBV1MvQXBwbGljYXRpb25FTEJcIixcbiAgICAgIHN0YXRpc3RpYzogXCJTdW1cIixcbiAgICAgIHBlcmlvZDpcbiAgICAgICAgcHJvcHMudG9vTWFueTV4eFJlc3BvbnNlc0Zyb21UYXJnZXRzQWxhcm0/LnBlcmlvZCA/P1xuICAgICAgICBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFRhcmdldEdyb3VwOiBwcm9wcy50YXJnZXRHcm91cEZ1bGxOYW1lLFxuICAgICAgICBMb2FkQmFsYW5jZXI6IHByb3BzLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybSh0aGlzLCBcIkFsYlRhcmdldHM1eHhBbGFybVwiLCB7XG4gICAgICBhY3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgIHByb3BzLnRvb01hbnk1eHhSZXNwb25zZXNGcm9tVGFyZ2V0c0FsYXJtPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICBgTG9hZCBiYWxhbmNlciByZWNlaXZlZCB0b28gbWFueSA1WFggcmVzcG9uc2VzIGZyb20gdGFyZ2V0KHMpIGluIEVDUyBzZXJ2aWNlICcke3RoaXMuc2VydmljZU5hbWV9Jy5gLFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6XG4gICAgICAgIHByb3BzLnRvb01hbnk1eHhSZXNwb25zZXNGcm9tVGFyZ2V0c0FsYXJtPy5ldmFsdWF0aW9uUGVyaW9kcyA/PyAzLFxuICAgICAgdGhyZXNob2xkOiBwcm9wcy50b29NYW55NXh4UmVzcG9uc2VzRnJvbVRhcmdldHNBbGFybT8udGhyZXNob2xkID8/IDEwLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgfSlcbiAgICBpZiAocHJvcHMudG9vTWFueTV4eFJlc3BvbnNlc0Zyb21UYXJnZXRzQWxhcm0/LmVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgdG9vTWFueTV4eFJlc3BvbnNlc0Zyb21UYXJnZXRzQWxhcm0uYWRkQWxhcm1BY3Rpb24oXG4gICAgICAgIHByb3BzLnRvb01hbnk1eHhSZXNwb25zZXNGcm9tVGFyZ2V0c0FsYXJtPy5hY3Rpb24gPz8gdGhpcy5hY3Rpb24sXG4gICAgICApXG4gICAgICB0b29NYW55NXh4UmVzcG9uc2VzRnJvbVRhcmdldHNBbGFybS5hZGRPa0FjdGlvbihcbiAgICAgICAgcHJvcHMudG9vTWFueTV4eFJlc3BvbnNlc0Zyb21UYXJnZXRzQWxhcm0/LmFjdGlvbiA/PyB0aGlzLmFjdGlvbixcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRSZXNwb25zZVRpbWVBbGFybSA9IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBtZXRyaWNOYW1lOiBcIlRhcmdldFJlc3BvbnNlVGltZVwiLFxuICAgICAgbmFtZXNwYWNlOiBcIkFXUy9BcHBsaWNhdGlvbkVMQlwiLFxuICAgICAgc3RhdGlzdGljOiBcInAoOTUpXCIsXG4gICAgICBwZXJpb2Q6IHByb3BzLnRhcmdldFJlc3BvbnNlVGltZUFsYXJtPy5wZXJpb2QgPz8gY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICB1bml0OiBjbG91ZHdhdGNoLlVuaXQuTUlMTElTRUNPTkRTLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBMb2FkQmFsYW5jZXI6IHByb3BzLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICBUYXJnZXRHcm91cDogcHJvcHMudGFyZ2V0R3JvdXBGdWxsTmFtZSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0odGhpcywgXCJUYXJnZXRSZXNwb25zZVRpbWVBbGFybVwiLCB7XG4gICAgICBhbGFybURlc2NyaXB0aW9uOlxuICAgICAgICBwcm9wcy50YXJnZXRSZXNwb25zZVRpbWVBbGFybT8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgYDUlIG9mIHJlc3BvbnNlcyBmcm9tIEVDUyBzZXJ2aWNlICcke3RoaXMuc2VydmljZU5hbWV9JyBhcmUgdGFraW5nIGxvbmdlciB0aGFuIGV4cGVjdGVkLmAsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogcHJvcHMudGFyZ2V0UmVzcG9uc2VUaW1lQWxhcm0/LmV2YWx1YXRpb25QZXJpb2RzID8/IDEsXG4gICAgICB0aHJlc2hvbGQ6IChcbiAgICAgICAgcHJvcHMudGFyZ2V0UmVzcG9uc2VUaW1lQWxhcm0/LnRocmVzaG9sZCA/PyBjZGsuRHVyYXRpb24ubWlsbGlzKDUwMClcbiAgICAgICkudG9NaWxsaXNlY29uZHMoKSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkUsXG4gICAgfSlcbiAgICBpZiAocHJvcHMudGFyZ2V0UmVzcG9uc2VUaW1lQWxhcm0/LmVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgdGFyZ2V0UmVzcG9uc2VUaW1lQWxhcm0uYWRkQWxhcm1BY3Rpb24oXG4gICAgICAgIHByb3BzLnRhcmdldFJlc3BvbnNlVGltZUFsYXJtPy5hY3Rpb24gPz8gdGhpcy5hY3Rpb24sXG4gICAgICApXG4gICAgICB0YXJnZXRSZXNwb25zZVRpbWVBbGFybS5hZGRPa0FjdGlvbihcbiAgICAgICAgcHJvcHMudGFyZ2V0UmVzcG9uc2VUaW1lQWxhcm0/LmFjdGlvbiA/PyB0aGlzLmFjdGlvbixcbiAgICAgIClcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -64,8 +64,8 @@ class CdkDeploy extends constructs.Construct {
64
64
  const codebuildProject = new codebuild.Project(this, "CodebuildProject", {
65
65
  environment: {
66
66
  buildImage: props.dockerCredentialsSecretName == null
67
- ? codebuild.LinuxBuildImage.fromDockerRegistry("node:12")
68
- : codebuild.LinuxBuildImage.fromDockerRegistry("node:12", {
67
+ ? codebuild.LinuxBuildImage.fromDockerRegistry("node:16")
68
+ : codebuild.LinuxBuildImage.fromDockerRegistry("node:16", {
69
69
  secretsManagerCredentials: secretsmanager.Secret.fromSecretNameV2(this, "dockerCredentialsSecretName", props.dockerCredentialsSecretName),
70
70
  }),
71
71
  },
@@ -123,7 +123,7 @@ class CdkDeploy extends constructs.Construct {
123
123
  codebuildBucket.grantReadWrite(codebuildProject);
124
124
  const startDeployFn = new lambda.Function(this, "StartDeployFunction", {
125
125
  code: new lambda.InlineCode(`exports.handler = ${start_deploy_handler_1.startDeployHandler.toString()};`),
126
- runtime: lambda.Runtime.NODEJS_12_X,
126
+ runtime: lambda.Runtime.NODEJS_16_X,
127
127
  handler: "index.handler",
128
128
  functionName: props.startDeployFunctionName,
129
129
  environment: {
@@ -141,7 +141,7 @@ class CdkDeploy extends constructs.Construct {
141
141
  }));
142
142
  const statusFn = new lambda.Function(this, "StatusFunction", {
143
143
  code: new lambda.InlineCode(`exports.handler = ${status_handler_1.statusHandler.toString()};`),
144
- runtime: lambda.Runtime.NODEJS_12_X,
144
+ runtime: lambda.Runtime.NODEJS_16_X,
145
145
  handler: "index.handler",
146
146
  functionName: props.statusFunctionName,
147
147
  environment: {
@@ -172,4 +172,4 @@ class CdkDeploy extends constructs.Construct {
172
172
  }
173
173
  }
174
174
  exports.CdkDeploy = CdkDeploy;
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstZGVwbG95L2Nkay1kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLHVEQUFzRDtBQUN0RCwyQ0FBMEM7QUFDMUMsaURBQWdEO0FBQ2hELHlDQUF3QztBQUN4QyxtQ0FBa0M7QUFDbEMsaUVBQWdFO0FBQ2hFLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUF5Q2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVUsU0FBUSxVQUFVLENBQUMsU0FBUztJQUNqRCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQVk7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXhDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM5QyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLEtBQUssQ0FBQyxtQkFBbUIsQ0FDMUIsQ0FBQTtRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckQsQ0FBQyxDQUFBO1FBRUYsc0NBQXNDO1FBQ3RDLGdEQUFnRDtRQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLHVCQUF1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LENBQUM7Q0FDRjtBQXhMRCw4QkF3TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVidWlsZCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZFwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCB7IHN0YXJ0RGVwbG95SGFuZGxlciB9IGZyb20gXCIuL3N0YXJ0LWRlcGxveS1oYW5kbGVyXCJcbmltcG9ydCB7IHN0YXR1c0hhbmRsZXIgfSBmcm9tIFwiLi9zdGF0dXMtaGFuZGxlclwiXG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHVzZWQgZm9yIHN0b3JpbmcgYXJ0aWZhY3RzLiBUaGlzIGlzIHVzZWQgdG8gZ3JhbnRcbiAgICogcGVybWlzc2lvbiB0byB0aGUgcm9sZSB0byByZWFkIGFydGlmYWN0LiBJZiB0aGUgYnVja2V0IGlzIGluXG4gICAqIGFub3RoZXIgYWNjb3VudCwgaXQgbXVzdCBoYXZlIGEgcG9saWN5IHdoaWNoIGFsbG93cyB0aGUgdGFyZ2V0XG4gICAqIGFjY291bnQgdG8gdXNlIElBTSBwZXJtaXNzaW9ucyBmcm9tIHRhcmdldCBhY2NvdW50LlxuICAgKi9cbiAgYXJ0aWZhY3RzQnVja2V0TmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIHN0YWNrIG5hbWUgdXNlZCB3aXRoIGBjZGsgYm9vdHN0cmFwYCBhbmQgY2FuIGVcbiAgICogZm91bmQgaW4gY2RrLmpzb24gYXMgXCJ0b29sa2l0U3RhY2tOYW1lXCIuXG4gICAqL1xuICBjZGtUb29sa2l0U3RhY2tOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFdlIHBhc3MgdGhlIENESyBjb250ZXh0IHZhbHVlcyBhcyB0aGV5IGNvbnRhaW4gZmVhdHVyZSBmbGFnc1xuICAgKiB1c2VkIGJ5IHRoZSBDREsgQ0xJLlxuICAgKi9cbiAgY2RrQ29udGV4dDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIChvciBhY2Nlc3MgdG9rZW4pXG4gICAqIGZvciBhIHZhbGlkIGRvY2tlciB1c2VyLiBUaGlzIGlzIHVzZWQgdG8gYWNjZXNzIHByaXZhdGVcbiAgICogcmVwb3NpdG9yaWVzIG9yIHRvIGhhbmRsZSBkb2NrZXIgaHViJ3MgcHVsbCByYXRlIGxpbWl0aW5nLlxuICAgKi9cbiAgZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lPzogc3RyaW5nXG59XG5cbi8qKlxuICogVGhpcyBjb25zdHJ1Y3QgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBwcml2aWxlZ2VzIGFuZCBsb2dpYyBvZlxuICogYXV0b21hdGljYWxseSBkZXBsb3lpbmcgc3RhY2sgcmVzb3VyY2VzIGluIGFuIGFjY291bnQuXG4gKiBJdHMgcmVzb3VyY2VzIGFyZSB1c2VkIGZyb20gYSBkZXBsb3ltZW50IHBpcGVsaW5lLlxuICpcbiAqIFRoZSBkZXBsb3ltZW50IGlzIHBlcmZvcm1lZCBieSBpbnZva2luZyB0aGUgXCJzdGFydCBkZXBsb3lcIlxuICogbGFtYmRhIHdpdGggZGV0YWlscyBvZiB3aGF0IHNob3VsZCBiZSBkZXBsb3llZC4gQXMgdGhpcyBpc1xuICogcmVzcG9uc2libGUgZm9yIGRlcGxveWluZyBpbmZyYXN0cnVjdHVyZSwgdGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogbWlnaHQgYmUgYWJsZSB0byBjYXVzZSBwcml2aWxlZ2UgZXNjYWxhdGlvbi4gVGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogc2hvdWxkIGJlIGFzc3VtZWQgdG8gaGF2ZSBmdWxsIGFkbWluaXN0cmF0b3IgYWNjZXNzLlxuICpcbiAqIFRoZSBwcm9jZXNzIGRlcGxveWluZyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaXMgbG9ja2VkIGRvd24gc28gdGhpc1xuICogaXMgb25seSBwb3NzaWJseSBieSBkZXBsb3ltZW50IHRocm91Z2ggQ2xvdWRGb3JtYXRpb24sIGFuZCBhc1xuICogc3VjaCByZW1vdmVzIGEgbG90IG9mIHBvc3NpYmxlIGVzY2FsYXRpb24gcGF0aHMgKGUuZy4gbm8gcm9sZVxuICogY2FuIGJlIGNyZWF0ZWQgYnkgZGlyZWN0IEFQSSBjYWxsKS5cbiAqXG4gKiBUaGUgXCJzdGF0dXNcIiBsYW1iZGEgY2FuIGJlIHVzZWQgdG8gcG9sbCBmb3IgY29tcGxldGlvbiwgYW5kIHdpbGxcbiAqIGFsc28gcmV0dXJuIGxvZ3MgZnJvbSB0aGUgam9iIHVwb24gY29tcGxldGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RlcGxveSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2YodGhpcykucmVnaW9uXG5cbiAgICBjb25zdCBhcnRpZmFjdHNCdWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgXCJBcnRpZmFjdHNCdWNrZXRcIixcbiAgICAgIHByb3BzLmFydGlmYWN0c0J1Y2tldE5hbWUsXG4gICAgKVxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICAvLyBCdWNrZWQgdXNlZCBmb3IgaW5wdXQgdG8gQ29kZUJ1aWxkLlxuICAgIC8vIFdlIGxldCBDbG91ZEZvcm1hdGlvbiBtYW5hZ2UgdGhlIGJ1Y2tldCBuYW1lLlxuICAgIGNvbnN0IGNvZGVidWlsZEJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgXCJDb2RlYnVpbGRTb3VyY2VCdWNrZXRcIiwge1xuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleHBpcmF0aW9uOiBjZGsuRHVyYXRpb24uZGF5cyg1KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFRoZSByb2xlIHVzZWQgZm9yIENsb3VkRm9ybWF0aW9uIGRlcGxveW1lbnQuXG4gICAgY29uc3QgY2xvdWRGb3JtYXRpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2xvdWRGb3JtYXRpb25Sb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAvLyBUT0RPOiBDYW4gd2UgcmVzdHJpY3QgdGhpcyBhIGJpdCBtb3JlPyBFLmcuIGxvb2sgaW50byBob3cgR3JpaWQgaGFzXG4gICAgICAgIC8vICBsaW1pdGVkIHdoYXQgdGhlIGluZGl2aWR1YWwgc3RhY2sgZGVwbG95bWVudHMgaGF2ZSBwZXJtaXNzaW9ucyB0byBkby5cbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQWRtaW5pc3RyYXRvckFjY2Vzc1wiKSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFJlcGxhY2UgQ29kZUJ1aWxkIHdpdGggRUNTIHRhc2s/XG4gICAgLy8gU2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vYmxvZ3MvZGV2b3BzL3VzaW5nLWF3cy1jb2RlYnVpbGQtdG8tZXhlY3V0ZS1hZG1pbmlzdHJhdGl2ZS10YXNrcy9cbiAgICBjb25zdCBjb2RlYnVpbGRQcm9qZWN0ID0gbmV3IGNvZGVidWlsZC5Qcm9qZWN0KHRoaXMsIFwiQ29kZWJ1aWxkUHJvamVjdFwiLCB7XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOlxuICAgICAgICAgIHByb3BzLmRvY2tlckNyZWRlbnRpYWxzU2VjcmV0TmFtZSA9PSBudWxsXG4gICAgICAgICAgICA/IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KFwibm9kZToxMlwiKVxuICAgICAgICAgICAgOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShcIm5vZGU6MTJcIiwge1xuICAgICAgICAgICAgICAgIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHM6XG4gICAgICAgICAgICAgICAgICBzZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgXCJkb2NrZXJDcmVkZW50aWFsc1NlY3JldE5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3Qoe1xuICAgICAgICB2ZXJzaW9uOiBcIjAuMlwiLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIENES19ERVBMT1lfUk9MRV9BUk46IGNsb3VkRm9ybWF0aW9uUm9sZS5yb2xlQXJuLFxuICAgICAgICAgICAgQ0RLX1RPT0xLSVRfU1RBQ0tfTkFNRTogcHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgXCJucG0gaW5zdGFsbCAtZyBhd3MtY2RrXCIsXG4gICAgICAgICAgICAgICdjZGsgLS1hcHAgXCIkQ09ERUJVSUxEX1NSQ19ESVJfQ0xPVURBU1NFTUJMWVwiIC0tcm9sZS1hcm4gXCIkQ0RLX0RFUExPWV9ST0xFX0FSTlwiIC0tdG9vbGtpdC1zdGFjay1uYW1lIFwiJENES19UT09MS0lUX1NUQUNLX05BTUVcIiAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgZGVwbG95IC0tZXhjbHVzaXZlbHkgJChjYXQgc3RhY2stbmFtZXMudHh0KScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5ob3Vycyg0KSxcbiAgICB9KVxuXG4gICAgLy8gR3JhbnQgYWNjZXNzIHRvIENsb3VkRm9ybWF0aW9uLlxuICAgIGNvZGVidWlsZFByb2plY3QuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgLy8gRm9yIGRpZmYuXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrc1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246R2V0VGVtcGxhdGVcIixcbiAgICAgICAgICAvLyBGb3IgZGVwbG95LlxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0XCIsXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFja1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkV4ZWN1dGVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tFdmVudHNcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldFwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICAvLyBHcmFudCBhY2Nlc3MgdG8gdGhlIENESyBUb29sa2l0IGJ1Y2tldC5cbiAgICBjb2RlYnVpbGRQcm9qZWN0LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiczM6R2V0T2JqZWN0KlwiLFxuICAgICAgICAgIFwiczM6R2V0QnVja2V0KlwiLFxuICAgICAgICAgIFwiczM6TGlzdCpcIixcbiAgICAgICAgICBcInMzOlB1dE9iamVjdCpcIixcbiAgICAgICAgICBcInMzOkFib3J0KlwiLFxuICAgICAgICAgIFwiczM6RGVsZXRlT2JqZWN0KlwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBgYXJuOmF3czpzMzo6OiR7cHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZS50b0xvd2VyQ2FzZSgpfS1zdGFnaW5nYnVja2V0LSpgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgYXJ0aWZhY3RzQnVja2V0LmdyYW50UmVhZChjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY2xvdWRGb3JtYXRpb25Sb2xlLmdyYW50UGFzc1JvbGUoY29kZWJ1aWxkUHJvamVjdC5yb2xlISlcblxuICAgIGNvZGVidWlsZEJ1Y2tldC5ncmFudFJlYWRXcml0ZShjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY29uc3Qgc3RhcnREZXBsb3lGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uXCIsIHtcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhcnREZXBsb3lIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHMuc3RhcnREZXBsb3lGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBjb2RlYnVpbGRCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgQ0RLX0NPTlRFWFQ6IEpTT04uc3RyaW5naWZ5KHByb3BzLmNka0NvbnRleHQpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICB9KVxuXG4gICAgc3RhcnREZXBsb3lGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG4gICAgY29kZWJ1aWxkQnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YXJ0RGVwbG95Rm4pXG5cbiAgICBzdGFydERlcGxveUZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wiY29kZWJ1aWxkOlN0YXJ0QnVpbGRcIiwgXCJjb2RlYnVpbGQ6QmF0Y2hHZXRCdWlsZHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW2NvZGVidWlsZFByb2plY3QucHJvamVjdEFybl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjb25zdCBzdGF0dXNGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke3N0YXR1c0hhbmRsZXIudG9TdHJpbmcoKX07YCxcbiAgICAgICksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5zdGF0dXNGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICB9LFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgIH0pXG5cbiAgICBzdGF0dXNGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG5cbiAgICBzdGF0dXNGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcImNvZGVidWlsZDpCYXRjaEdldEJ1aWxkc1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbY29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0QXJuXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIHN0YXR1c0ZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wibG9nczpHZXRMb2dFdmVudHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46YXdzOmxvZ3M6JHtyZWdpb259OiR7YWNjb3VudH06bG9nLWdyb3VwOi9hd3MvY29kZWJ1aWxkLyR7Y29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0TmFtZX06bG9nLXN0cmVhbToqYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiUm9sZVRvQmVBc3N1bWVkQXJuXCIsIHtcbiAgICAgIHZhbHVlOiByb2xlVG9CZUFzc3VtZWQucm9sZUFybixcbiAgICB9KVxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiU3RhdHVzRnVuY3Rpb25Bcm5cIiwge1xuICAgICAgdmFsdWU6IHN0YXR1c0ZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uQXJuXCIsIHtcbiAgICAgIHZhbHVlOiBzdGFydERlcGxveUZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstZGVwbG95L2Nkay1kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLHVEQUFzRDtBQUN0RCwyQ0FBMEM7QUFDMUMsaURBQWdEO0FBQ2hELHlDQUF3QztBQUN4QyxtQ0FBa0M7QUFDbEMsaUVBQWdFO0FBQ2hFLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUF5Q2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVUsU0FBUSxVQUFVLENBQUMsU0FBUztJQUNqRCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQVk7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXhDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM5QyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLEtBQUssQ0FBQyxtQkFBbUIsQ0FDMUIsQ0FBQTtRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckQsQ0FBQyxDQUFBO1FBRUYsc0NBQXNDO1FBQ3RDLGdEQUFnRDtRQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQ25FLFVBQVUsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtZQUMxQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUztZQUNqRCxjQUFjLEVBQUU7Z0JBQ2Q7b0JBQ0UsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDakM7YUFDRjtTQUNGLENBQUMsQ0FBQTtRQUVGLCtDQUErQztRQUMvQyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDbEUsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLDhCQUE4QixDQUFDO1lBQ25FLGVBQWUsRUFBRTtnQkFDZixzRUFBc0U7Z0JBQ3RFLHlFQUF5RTtnQkFDekUsR0FBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQzthQUNsRTtTQUNGLENBQUMsQ0FBQTtRQUVGLG1DQUFtQztRQUNuQywrRkFBK0Y7UUFDL0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3ZFLFdBQVcsRUFBRTtnQkFDWCxVQUFVLEVBQ1IsS0FBSyxDQUFDLDJCQUEyQixJQUFJLElBQUk7b0JBQ3ZDLENBQUMsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztvQkFDekQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFO3dCQUN0RCx5QkFBeUIsRUFDdkIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDcEMsSUFBSSxFQUNKLDZCQUE2QixFQUM3QixLQUFLLENBQUMsMkJBQTJCLENBQ2xDO3FCQUNKLENBQUM7YUFDVDtZQUNELFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztnQkFDeEMsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsR0FBRyxFQUFFO29CQUNILFNBQVMsRUFBRTt3QkFDVCxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO3dCQUMvQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsbUJBQW1CO3FCQUNsRDtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFO3dCQUNMLFFBQVEsRUFBRTs0QkFDUix3QkFBd0I7NEJBQ3hCLG9NQUFvTTt5QkFDck07cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO1lBQ0YsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMvQixDQUFDLENBQUE7UUFFRixrQ0FBa0M7UUFDbEMsZ0JBQWdCLENBQUMsZUFBZSxDQUM5QixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLFlBQVk7Z0JBQ1osK0JBQStCO2dCQUMvQiw0QkFBNEI7Z0JBQzVCLGNBQWM7Z0JBQ2QsZ0NBQWdDO2dCQUNoQyw0QkFBNEI7Z0JBQzVCLGtDQUFrQztnQkFDbEMsaUNBQWlDO2dCQUNqQyxvQ0FBb0M7Z0JBQ3BDLGdDQUFnQzthQUNqQztZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQTtRQUVELDBDQUEwQztRQUMxQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQzlCLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUU7Z0JBQ1AsZUFBZTtnQkFDZixlQUFlO2dCQUNmLFVBQVU7Z0JBQ1YsZUFBZTtnQkFDZixXQUFXO2dCQUNYLGtCQUFrQjthQUNuQjtZQUNELFNBQVMsRUFBRTtnQkFDVCxnQkFBZ0IsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxrQkFBa0I7YUFDMUU7U0FDRixDQUFDLENBQ0gsQ0FBQTtRQUVELGVBQWUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUUzQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSyxDQUFDLENBQUE7UUFFeEQsZUFBZSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRWhELE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDckUsSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FDekIscUJBQXFCLHlDQUFrQixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQ3REO1lBQ0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxPQUFPLEVBQUUsZUFBZTtZQUN4QixZQUFZLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtZQUMzQyxXQUFXLEVBQUU7Z0JBQ1gsWUFBWSxFQUFFLGdCQUFnQixDQUFDLFdBQVc7Z0JBQzFDLFdBQVcsRUFBRSxlQUFlLENBQUMsVUFBVTtnQkFDdkMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUM5QztZQUNELE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDbEMsQ0FBQyxDQUFBO1FBRUYsYUFBYSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUMxQyxlQUFlLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTdDLGFBQWEsQ0FBQyxlQUFlLENBQzNCLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSwwQkFBMEIsQ0FBQztZQUM3RCxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7U0FDekMsQ0FBQyxDQUNILENBQUE7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQzNELElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQ3pCLHFCQUFxQiw4QkFBYSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQ2pEO1lBQ0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxPQUFPLEVBQUUsZUFBZTtZQUN4QixZQUFZLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUN0QyxXQUFXLEVBQUU7Z0JBQ1gsWUFBWSxFQUFFLGdCQUFnQixDQUFDLFdBQVc7YUFDM0M7WUFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ2xDLENBQUMsQ0FBQTtRQUVGLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFckMsUUFBUSxDQUFDLGVBQWUsQ0FDdEIsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO1lBQ3JDLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztTQUN6QyxDQUFDLENBQ0gsQ0FBQTtRQUVELFFBQVEsQ0FBQyxlQUFlLENBQ3RCLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUM5QixTQUFTLEVBQUU7Z0JBQ1QsZ0JBQWdCLE1BQU0sSUFBSSxPQUFPLDZCQUE2QixnQkFBZ0IsQ0FBQyxXQUFXLGVBQWU7YUFDMUc7U0FDRixDQUFDLENBQ0gsQ0FBQTtRQUVELElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDNUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1NBQy9CLENBQUMsQ0FBQTtRQUNGLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDM0MsS0FBSyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1NBQzVCLENBQUMsQ0FBQTtRQUNGLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDaEQsS0FBSyxFQUFFLGFBQWEsQ0FBQyxXQUFXO1NBQ2pDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQXhMRCw4QkF3TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVidWlsZCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZFwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCB7IHN0YXJ0RGVwbG95SGFuZGxlciB9IGZyb20gXCIuL3N0YXJ0LWRlcGxveS1oYW5kbGVyXCJcbmltcG9ydCB7IHN0YXR1c0hhbmRsZXIgfSBmcm9tIFwiLi9zdGF0dXMtaGFuZGxlclwiXG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHVzZWQgZm9yIHN0b3JpbmcgYXJ0aWZhY3RzLiBUaGlzIGlzIHVzZWQgdG8gZ3JhbnRcbiAgICogcGVybWlzc2lvbiB0byB0aGUgcm9sZSB0byByZWFkIGFydGlmYWN0LiBJZiB0aGUgYnVja2V0IGlzIGluXG4gICAqIGFub3RoZXIgYWNjb3VudCwgaXQgbXVzdCBoYXZlIGEgcG9saWN5IHdoaWNoIGFsbG93cyB0aGUgdGFyZ2V0XG4gICAqIGFjY291bnQgdG8gdXNlIElBTSBwZXJtaXNzaW9ucyBmcm9tIHRhcmdldCBhY2NvdW50LlxuICAgKi9cbiAgYXJ0aWZhY3RzQnVja2V0TmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIHN0YWNrIG5hbWUgdXNlZCB3aXRoIGBjZGsgYm9vdHN0cmFwYCBhbmQgY2FuIGVcbiAgICogZm91bmQgaW4gY2RrLmpzb24gYXMgXCJ0b29sa2l0U3RhY2tOYW1lXCIuXG4gICAqL1xuICBjZGtUb29sa2l0U3RhY2tOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFdlIHBhc3MgdGhlIENESyBjb250ZXh0IHZhbHVlcyBhcyB0aGV5IGNvbnRhaW4gZmVhdHVyZSBmbGFnc1xuICAgKiB1c2VkIGJ5IHRoZSBDREsgQ0xJLlxuICAgKi9cbiAgY2RrQ29udGV4dDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIChvciBhY2Nlc3MgdG9rZW4pXG4gICAqIGZvciBhIHZhbGlkIGRvY2tlciB1c2VyLiBUaGlzIGlzIHVzZWQgdG8gYWNjZXNzIHByaXZhdGVcbiAgICogcmVwb3NpdG9yaWVzIG9yIHRvIGhhbmRsZSBkb2NrZXIgaHViJ3MgcHVsbCByYXRlIGxpbWl0aW5nLlxuICAgKi9cbiAgZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lPzogc3RyaW5nXG59XG5cbi8qKlxuICogVGhpcyBjb25zdHJ1Y3QgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBwcml2aWxlZ2VzIGFuZCBsb2dpYyBvZlxuICogYXV0b21hdGljYWxseSBkZXBsb3lpbmcgc3RhY2sgcmVzb3VyY2VzIGluIGFuIGFjY291bnQuXG4gKiBJdHMgcmVzb3VyY2VzIGFyZSB1c2VkIGZyb20gYSBkZXBsb3ltZW50IHBpcGVsaW5lLlxuICpcbiAqIFRoZSBkZXBsb3ltZW50IGlzIHBlcmZvcm1lZCBieSBpbnZva2luZyB0aGUgXCJzdGFydCBkZXBsb3lcIlxuICogbGFtYmRhIHdpdGggZGV0YWlscyBvZiB3aGF0IHNob3VsZCBiZSBkZXBsb3llZC4gQXMgdGhpcyBpc1xuICogcmVzcG9uc2libGUgZm9yIGRlcGxveWluZyBpbmZyYXN0cnVjdHVyZSwgdGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogbWlnaHQgYmUgYWJsZSB0byBjYXVzZSBwcml2aWxlZ2UgZXNjYWxhdGlvbi4gVGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogc2hvdWxkIGJlIGFzc3VtZWQgdG8gaGF2ZSBmdWxsIGFkbWluaXN0cmF0b3IgYWNjZXNzLlxuICpcbiAqIFRoZSBwcm9jZXNzIGRlcGxveWluZyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaXMgbG9ja2VkIGRvd24gc28gdGhpc1xuICogaXMgb25seSBwb3NzaWJseSBieSBkZXBsb3ltZW50IHRocm91Z2ggQ2xvdWRGb3JtYXRpb24sIGFuZCBhc1xuICogc3VjaCByZW1vdmVzIGEgbG90IG9mIHBvc3NpYmxlIGVzY2FsYXRpb24gcGF0aHMgKGUuZy4gbm8gcm9sZVxuICogY2FuIGJlIGNyZWF0ZWQgYnkgZGlyZWN0IEFQSSBjYWxsKS5cbiAqXG4gKiBUaGUgXCJzdGF0dXNcIiBsYW1iZGEgY2FuIGJlIHVzZWQgdG8gcG9sbCBmb3IgY29tcGxldGlvbiwgYW5kIHdpbGxcbiAqIGFsc28gcmV0dXJuIGxvZ3MgZnJvbSB0aGUgam9iIHVwb24gY29tcGxldGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RlcGxveSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2YodGhpcykucmVnaW9uXG5cbiAgICBjb25zdCBhcnRpZmFjdHNCdWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgXCJBcnRpZmFjdHNCdWNrZXRcIixcbiAgICAgIHByb3BzLmFydGlmYWN0c0J1Y2tldE5hbWUsXG4gICAgKVxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICAvLyBCdWNrZWQgdXNlZCBmb3IgaW5wdXQgdG8gQ29kZUJ1aWxkLlxuICAgIC8vIFdlIGxldCBDbG91ZEZvcm1hdGlvbiBtYW5hZ2UgdGhlIGJ1Y2tldCBuYW1lLlxuICAgIGNvbnN0IGNvZGVidWlsZEJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgXCJDb2RlYnVpbGRTb3VyY2VCdWNrZXRcIiwge1xuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleHBpcmF0aW9uOiBjZGsuRHVyYXRpb24uZGF5cyg1KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFRoZSByb2xlIHVzZWQgZm9yIENsb3VkRm9ybWF0aW9uIGRlcGxveW1lbnQuXG4gICAgY29uc3QgY2xvdWRGb3JtYXRpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2xvdWRGb3JtYXRpb25Sb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAvLyBUT0RPOiBDYW4gd2UgcmVzdHJpY3QgdGhpcyBhIGJpdCBtb3JlPyBFLmcuIGxvb2sgaW50byBob3cgR3JpaWQgaGFzXG4gICAgICAgIC8vICBsaW1pdGVkIHdoYXQgdGhlIGluZGl2aWR1YWwgc3RhY2sgZGVwbG95bWVudHMgaGF2ZSBwZXJtaXNzaW9ucyB0byBkby5cbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQWRtaW5pc3RyYXRvckFjY2Vzc1wiKSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFJlcGxhY2UgQ29kZUJ1aWxkIHdpdGggRUNTIHRhc2s/XG4gICAgLy8gU2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vYmxvZ3MvZGV2b3BzL3VzaW5nLWF3cy1jb2RlYnVpbGQtdG8tZXhlY3V0ZS1hZG1pbmlzdHJhdGl2ZS10YXNrcy9cbiAgICBjb25zdCBjb2RlYnVpbGRQcm9qZWN0ID0gbmV3IGNvZGVidWlsZC5Qcm9qZWN0KHRoaXMsIFwiQ29kZWJ1aWxkUHJvamVjdFwiLCB7XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOlxuICAgICAgICAgIHByb3BzLmRvY2tlckNyZWRlbnRpYWxzU2VjcmV0TmFtZSA9PSBudWxsXG4gICAgICAgICAgICA/IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KFwibm9kZToxNlwiKVxuICAgICAgICAgICAgOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShcIm5vZGU6MTZcIiwge1xuICAgICAgICAgICAgICAgIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHM6XG4gICAgICAgICAgICAgICAgICBzZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgXCJkb2NrZXJDcmVkZW50aWFsc1NlY3JldE5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3Qoe1xuICAgICAgICB2ZXJzaW9uOiBcIjAuMlwiLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIENES19ERVBMT1lfUk9MRV9BUk46IGNsb3VkRm9ybWF0aW9uUm9sZS5yb2xlQXJuLFxuICAgICAgICAgICAgQ0RLX1RPT0xLSVRfU1RBQ0tfTkFNRTogcHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgXCJucG0gaW5zdGFsbCAtZyBhd3MtY2RrXCIsXG4gICAgICAgICAgICAgICdjZGsgLS1hcHAgXCIkQ09ERUJVSUxEX1NSQ19ESVJfQ0xPVURBU1NFTUJMWVwiIC0tcm9sZS1hcm4gXCIkQ0RLX0RFUExPWV9ST0xFX0FSTlwiIC0tdG9vbGtpdC1zdGFjay1uYW1lIFwiJENES19UT09MS0lUX1NUQUNLX05BTUVcIiAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgZGVwbG95IC0tZXhjbHVzaXZlbHkgJChjYXQgc3RhY2stbmFtZXMudHh0KScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5ob3Vycyg0KSxcbiAgICB9KVxuXG4gICAgLy8gR3JhbnQgYWNjZXNzIHRvIENsb3VkRm9ybWF0aW9uLlxuICAgIGNvZGVidWlsZFByb2plY3QuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgLy8gRm9yIGRpZmYuXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrc1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246R2V0VGVtcGxhdGVcIixcbiAgICAgICAgICAvLyBGb3IgZGVwbG95LlxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0XCIsXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFja1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkV4ZWN1dGVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tFdmVudHNcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldFwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICAvLyBHcmFudCBhY2Nlc3MgdG8gdGhlIENESyBUb29sa2l0IGJ1Y2tldC5cbiAgICBjb2RlYnVpbGRQcm9qZWN0LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiczM6R2V0T2JqZWN0KlwiLFxuICAgICAgICAgIFwiczM6R2V0QnVja2V0KlwiLFxuICAgICAgICAgIFwiczM6TGlzdCpcIixcbiAgICAgICAgICBcInMzOlB1dE9iamVjdCpcIixcbiAgICAgICAgICBcInMzOkFib3J0KlwiLFxuICAgICAgICAgIFwiczM6RGVsZXRlT2JqZWN0KlwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBgYXJuOmF3czpzMzo6OiR7cHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZS50b0xvd2VyQ2FzZSgpfS1zdGFnaW5nYnVja2V0LSpgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgYXJ0aWZhY3RzQnVja2V0LmdyYW50UmVhZChjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY2xvdWRGb3JtYXRpb25Sb2xlLmdyYW50UGFzc1JvbGUoY29kZWJ1aWxkUHJvamVjdC5yb2xlISlcblxuICAgIGNvZGVidWlsZEJ1Y2tldC5ncmFudFJlYWRXcml0ZShjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY29uc3Qgc3RhcnREZXBsb3lGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uXCIsIHtcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhcnREZXBsb3lIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHMuc3RhcnREZXBsb3lGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBjb2RlYnVpbGRCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgQ0RLX0NPTlRFWFQ6IEpTT04uc3RyaW5naWZ5KHByb3BzLmNka0NvbnRleHQpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICB9KVxuXG4gICAgc3RhcnREZXBsb3lGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG4gICAgY29kZWJ1aWxkQnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YXJ0RGVwbG95Rm4pXG5cbiAgICBzdGFydERlcGxveUZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wiY29kZWJ1aWxkOlN0YXJ0QnVpbGRcIiwgXCJjb2RlYnVpbGQ6QmF0Y2hHZXRCdWlsZHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW2NvZGVidWlsZFByb2plY3QucHJvamVjdEFybl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjb25zdCBzdGF0dXNGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke3N0YXR1c0hhbmRsZXIudG9TdHJpbmcoKX07YCxcbiAgICAgICksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5zdGF0dXNGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICB9LFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgIH0pXG5cbiAgICBzdGF0dXNGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG5cbiAgICBzdGF0dXNGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcImNvZGVidWlsZDpCYXRjaEdldEJ1aWxkc1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbY29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0QXJuXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIHN0YXR1c0ZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wibG9nczpHZXRMb2dFdmVudHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46YXdzOmxvZ3M6JHtyZWdpb259OiR7YWNjb3VudH06bG9nLWdyb3VwOi9hd3MvY29kZWJ1aWxkLyR7Y29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0TmFtZX06bG9nLXN0cmVhbToqYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiUm9sZVRvQmVBc3N1bWVkQXJuXCIsIHtcbiAgICAgIHZhbHVlOiByb2xlVG9CZUFzc3VtZWQucm9sZUFybixcbiAgICB9KVxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiU3RhdHVzRnVuY3Rpb25Bcm5cIiwge1xuICAgICAgdmFsdWU6IHN0YXR1c0ZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uQXJuXCIsIHtcbiAgICAgIHZhbHVlOiBzdGFydERlcGxveUZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
@@ -130,7 +130,7 @@ class LifligCdkPipeline extends constructs.Construct {
130
130
  const cloudAssemblyLookupFn = new lambda.Function(this, "CloudAssemblyLookupFn", {
131
131
  code: new lambda.InlineCode(`exports.handler = ${cloud_assembly_lookup_handler_1.cloudAssemblyLookupHandler.toString()};`),
132
132
  handler: "index.handler",
133
- runtime: lambda.Runtime.NODEJS_12_X,
133
+ runtime: lambda.Runtime.NODEJS_16_X,
134
134
  timeout: cdk.Duration.minutes(1),
135
135
  memorySize: 512,
136
136
  });
@@ -207,4 +207,4 @@ class LifligCdkPipeline extends constructs.Construct {
207
207
  }
208
208
  }
209
209
  exports.LifligCdkPipeline = LifligCdkPipeline;
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLDZEQUE0RDtBQUM1RCw0RUFBMkU7QUFDM0UsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUVoRCxtQ0FBa0M7QUFDbEMsbURBQWtEO0FBQ2xELHlCQUF3QjtBQUN4Qiw2QkFBNEI7QUFDNUIsOERBQWlFO0FBQ2pFLG1GQUd3QztBQUN4Qyw2REFBZ0Y7QUErQ2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7QUFDSCxNQUFhLGlCQUFrQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBb0J6RCxZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUE2Qjs7UUFFN0IsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLGVBQWUsR0FDbkIsTUFBQSxLQUFLLENBQUMsZUFBZSxtQ0FBSSxJQUFBLHdDQUFzQixFQUFDLElBQUksQ0FBQyxDQUFBO1FBRXZELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFekQsSUFBSSxLQUFpQyxDQUFBO1FBQ3JDLElBQUksTUFBaUMsQ0FBQTtRQUVyQyxRQUFRLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDeEIsS0FBSyxnQkFBZ0I7Z0JBQ25CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0MscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFBO2dCQUNELEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFBO2dCQUMzQixNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQTtnQkFDN0IsTUFBSztZQUNQLEtBQUssWUFBWTtnQkFDZixN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QUM1QixjQUFjO3FCQUNmLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUE7UUFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUErQztRQUNsRSxJQUFJLHNDQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzNCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQXhORCw4Q0F3TkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiXG5pbXBvcnQgKiBhcyBjb2RlcGlwZWxpbmVBY3Rpb25zIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgcGlwZWxpbmVzIGZyb20gXCJhd3MtY2RrLWxpYi9waXBlbGluZXNcIlxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHsgZ2V0R3JpaWRBcnRlZmFjdEJ1Y2tldCB9IGZyb20gXCIuLi9ncmlpZC9hcnRlZmFjdC1idWNrZXRcIlxuaW1wb3J0IHtcbiAgY2xvdWRBc3NlbWJseUxvb2t1cEhhbmRsZXIsXG4gIENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyxcbn0gZnJvbSBcIi4vY2xvdWQtYXNzZW1ibHktbG9va3VwLWhhbmRsZXJcIlxuaW1wb3J0IHsgU2xhY2tOb3RpZmljYXRpb24sIFNsYWNrTm90aWZpY2F0aW9uUHJvcHMgfSBmcm9tIFwiLi9zbGFjay1ub3RpZmljYXRpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIExpZmxpZ0Nka1BpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogQnVja2V0IGhvbGRpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbiBhbmQgdHJpZ2dlciBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBleGlzdGluZyBidWNrZXQgYmFzZWQgb24gR3JpaWQgY29udmVudGlvbnNcbiAgICovXG4gIGFydGlmYWN0c0J1Y2tldD86IHMzLklCdWNrZXRcbiAgLyoqXG4gICAqIE5hbWUgb2YgcGlwZWxpbmUuIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHBhdGggd2hlcmUgY29uZmlndXJhdGlvblxuICAgKiBpcyBzdG9yZWQgaW4gUzMuXG4gICAqL1xuICBwaXBlbGluZU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogVHlwZSBvZiB1cGxvYWRlZCBhcnRpZmFjdC4gVGhpcyBjaGFuZ2VzIHRoZSBiZWhhdmlvdXIgb2YgdGhlXG4gICAqIHBpcGVsaW5lIGFuZCB3aGF0IGtpbmQgb2YgcHJvY2VzcyBpdCBwZXJmb3Jtcy5cbiAgICpcbiAgICogVHdvIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICAqXG4gICAqICAgLSBjZGstc291cmNlOiBUaGUgdXBsb2FkZWQgYXJ0aWZhY3QgcmVwcmVzZW50cyBhIENESyBhcHBsaWNhdGlvblxuICAgKiAgICAgYXMgc291cmNlIGNvZGUuIEEgYnVpbGQgc3RlcCB3aWxsIGNvbXBpbGUgdGhpcyBpbnRvIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogICAgIEFzIHBhcnQgb2Ygc3ludGhlc2l6aW5nIHRoaXMgaW50byBhIENESyBDbG91ZCBBc3NlbWJseSxcbiAgICogICAgIGEgZmlsZSBcInZhcmlhYmxlcy5qc29uXCIgd2lsbCBiZSB3cml0dGVuIGZvciB0aGVcbiAgICogICAgIENESyBhcHBsaWNhdGlvbiB0byBwYXJhbWV0ZXJpemUgdGhlIGJ1aWxkIGlmIGFueVxuICAgKiAgICAgdmFyaWFibGVzIGFyZSBmb3VuZCBpbiB0aGUgcGlwZWxpbmUgc291cmNlLlxuICAgKlxuICAgKiAgIC0gY2xvdWQtYXNzZW1ibHk6IFRoZSB1cGxvYWRlZCBhcnRpZmFjdCByZXByZXNlbnRzIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseSB3aGljaCBpcyByZWFkeSBmb3IgZGVwbG95bWVudC5cbiAgICpcbiAgICogICAgIFRoaXMgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIHZhcmlhYmxlcyBhdCB0aGUgY3VycmVudCB0aW1lXG4gICAqICAgICBzaW5jZSBDREsgUGlwZWxpbmVzIGRvbid0IHN1cHBvcnQgcGFyYW1ldGVyaXplZCBkZXBsb3lzLlxuICAgKiAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvOTU2MFxuICAgKi9cbiAgc291cmNlVHlwZTogXCJjZGstc291cmNlXCIgfCBcImNsb3VkLWFzc2VtYmx5XCJcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdXNlZCBmb3IgcGFyYW1ldGVycyBpbiBQYXJhbWV0ZXIgU3RvcmUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgZm9yIHNvdXJjZVR5cGUgb2YgXCJjZGstc29ydWNlXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlZmF1bHRcbiAgICovXG4gIHBhcmFtZXRlcnNOYW1lc3BhY2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBDREsgUGlwZWxpbmUgZm9yIExpZmxpZy5cbiAqXG4gKiBBdm9pZCBwdXR0aW5nIG11bHRpcGxlIHBpcGVsaW5lcyBpbiBhIHN0YWNrLCBzaW5jZSB0aGUgcGlwZWxpbmVcbiAqIHdpbGwgYWxzbyBrZWVwIHRoZSBob3N0aW5nIHN0YWNrIHVwLXRvLWRhdGUuXG4gKlxuICogVGhlIHBpcGVsaW5lIGlzIGV4ZWN1dGVkIGJ5IHdyaXRpbmcgYW4gZW1wdHkgZmlsZSB0b1xuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi90cmlnZ2VyXG4gKlxuICogQ29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcmVhZCBmcm9tIFMzIGF0IHRoZSBwYXRoXG4gKiBzMzovLzxhcnRpZmFjdHMtYnVja2V0Pi9waXBlbGluZXMvPHBpcGVsaW5lLW5hbWU+L1xuICpcbiAqIEZvciB1cGxvYWQgdHlwZSBcImNkay1zb3VyY2VcIjpcbiAqXG4gKiAgIC0gY2RrLXNvdXJjZS5qc29uIGhvbGRpbmcgYSBwb2ludGVyIHRvIHRoZSBhY3RpdmUgQ0RLIHNvdXJjZVxuICogICAgIHRoYXQgc2hvdWxkIGJlIHVzZWQuIFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgYnVja2V0TmFtZTogc3RyaW5nXG4gKiAgICAgICBidWNrZXRLZXk6IHN0cmluZ1xuICogICAgIH1cbiAqXG4gKiAgIC0gdmFyaWFibGVzKi5qc29uIHdoaWNoIGNhbiBiZSB6ZXJvIG9yIG1vcmUgZmlsZXNcbiAqICAgICB3aXRoIHN0cmluZy1zdHJpbmcgbWFwIGhvbGRpbmcgdmFyaWFibGVzIHRoYXQgd2lsbFxuICogICAgIGJlIHdyaXR0ZW4gdG8gdmFyaWFibGVzLmpzb24gYW5kIGNhbiBiZSByZWFkIGJ5IHRoZVxuICogICAgIHRoZSBDREsgYXBwbGljYXRpb24gZHVyaW5nIHN5bnRoZXNpemUuXG4gKlxuICogRm9yIHVwbG9hZCB0eXBlIFwiY2xvdWQtYXNzZW1ibHlcIjpcbiAqXG4gKiAgIC0gY2xvdWQtYXNzZW1ibHkuanNvbiBob2xkaW5nIGEgcG9pbnRlciB0byB0aGUgYWN0aXZlXG4gKiAgICAgQ0RLIENsb3VkIEFzc2VtYmx5IHRoYXQgc2hvdWxkIGJlIHVzZWQ6IFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldE5hbWU6IHN0cmluZ1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldEtleTogc3RyaW5nXG4gKiAgICAgfVxuICpcbiAqIFZhcmlhYmxlcyBlbmFibGVzIHNlcGFyYXRpb24gb2YgSWFDIGNvZGUgYW5kIGFwcGxpY2F0aW9uIGNvZGUgaWZcbiAqIHRoZXkgYXJlIG5vdCBjb2xvY2F0ZWQgaW4gdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIExpZmxpZ0Nka1BpcGVsaW5lIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUGF0aCBvbiBTMyBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyBwaXBlbGluZVMzUHJlZml4KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vYFxuICB9XG5cbiAgLyoqXG4gICAqIEtleSBpbiBTMyBidWNrZXQgdXNlZCB0byB0cmlnZ2VyIHBpcGVsaW5lLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGVtcHR5IGZpbGUgd2l0aGluIHRoZSBwaXBlbGluZSBwYXRoLlxuICAgKi9cbiAgc3RhdGljIHBpcGVsaW5lUzNUcmlnZ2VyS2V5KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vdHJpZ2dlcmBcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjZGtQaXBlbGluZTogcGlwZWxpbmVzLkNvZGVQaXBlbGluZVxuICBwdWJsaWMgcmVhZG9ubHkgY29kZVBpcGVsaW5lOiBjb2RlcGlwZWxpbmUuUGlwZWxpbmVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgYXJ0aWZhY3RzQnVja2V0ID1cbiAgICAgIHByb3BzLmFydGlmYWN0c0J1Y2tldCA/PyBnZXRHcmlpZEFydGVmYWN0QnVja2V0KHRoaXMpXG5cbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIGxldCBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXJcbiAgICBsZXQgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdXG5cbiAgICBzd2l0Y2ggKHByb3BzLnNvdXJjZVR5cGUpIHtcbiAgICAgIGNhc2UgXCJjbG91ZC1hc3NlbWJseVwiOlxuICAgICAgICBjb25zdCBjbG91ZEFzc2VtYmx5ID0gdGhpcy5jbG91ZEFzc2VtYmx5U3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIGFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICAgIClcbiAgICAgICAgc3ludGggPSBjbG91ZEFzc2VtYmx5LnN5bnRoXG4gICAgICAgIHN0YWdlcyA9IGNsb3VkQXNzZW1ibHkuc3RhZ2VzXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwiY2RrLXNvdXJjZVwiOlxuICAgICAgICBjb25zdCBjZGtTb3VyY2UgPSB0aGlzLmNka1NvdXJjZVN0YWdlKFxuICAgICAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICAgICAgICBhcnRpZmFjdHNCdWNrZXQsXG4gICAgICAgICAgcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgICAgIHByb3BzLnBhcmFtZXRlcnNOYW1lc3BhY2UgPz8gXCJkZWZhdWx0XCIsXG4gICAgICAgIClcbiAgICAgICAgc3ludGggPSBjZGtTb3VyY2Uuc3ludGhcbiAgICAgICAgc3RhZ2VzID0gY2RrU291cmNlLnN0YWdlc1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnN0IGR1bW15QXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIHRoaXMuY29kZVBpcGVsaW5lID0gbmV3IGNvZGVwaXBlbGluZS5QaXBlbGluZSh0aGlzLCBcIkNvZGVQaXBlbGluZVwiLCB7XG4gICAgICBwaXBlbGluZU5hbWU6IHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgIHN0YWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBcIlNvdXJjZVwiLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIG5ldyBjb2RlcGlwZWxpbmVBY3Rpb25zLlMzU291cmNlQWN0aW9uKHtcbiAgICAgICAgICAgICAgYWN0aW9uTmFtZTogXCJzb3VyY2VcIixcbiAgICAgICAgICAgICAgYnVja2V0OiBhcnRpZmFjdHNCdWNrZXQsXG4gICAgICAgICAgICAgIGJ1Y2tldEtleTogTGlmbGlnQ2RrUGlwZWxpbmUucGlwZWxpbmVTM1RyaWdnZXJLZXkoXG4gICAgICAgICAgICAgICAgcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBvdXRwdXQ6IGR1bW15QXJ0aWZhY3QsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGFnZXMsXG4gICAgICBdLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pXG5cbiAgICB0aGlzLmNka1BpcGVsaW5lID0gbmV3IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmUodGhpcywgXCJDZGtQaXBlbGluZVwiLCB7XG4gICAgICBzeW50aCxcbiAgICAgIGNvZGVQaXBlbGluZTogdGhpcy5jb2RlUGlwZWxpbmUsXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldEF3c0Nka1BhY2thZ2VKc29uRmlsZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIEFsc28gbG9vayB1cCB0aGUgdHJlZSBhIGJpdCB0byBoYW5kbGUgeWFybiB3b3Jrc3BhY2VzLlxuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuLi9ub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuLi8uLi9ub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgXVxuXG4gICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykge1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY2FuZGlkYXRlKSkge1xuICAgICAgICByZXR1cm4gY2FuZGlkYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgcHJpdmF0ZSBjbG91ZEFzc2VtYmx5U3RhZ2UoXG4gICAgY2xvdWRBc3NlbWJseUFydGlmYWN0OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QsXG4gICAgY2RrQnVja2V0OiBzMy5JQnVja2V0LFxuICAgIHBpcGVsaW5lTmFtZTogc3RyaW5nLFxuICApOiB7IHN0YWdlczogY29kZXBpcGVsaW5lLlN0YWdlUHJvcHNbXTsgc3ludGg6IHBpcGVsaW5lcy5JRmlsZVNldFByb2R1Y2VyIH0ge1xuICAgIGNvbnN0IGNsb3VkQXNzZW1ibHlMb29rdXBGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJDbG91ZEFzc2VtYmx5TG9va3VwRm5cIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogbmV3IGxhbWJkYS5JbmxpbmVDb2RlKFxuICAgICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke2Nsb3VkQXNzZW1ibHlMb29rdXBIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICAgICksXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKGNsb3VkQXNzZW1ibHlMb29rdXBGbilcblxuICAgIGNvbnN0IHVzZXJQYXJhbWV0ZXJzOiBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMgPSB7XG4gICAgICBidWNrZXROYW1lOiBjZGtCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIG9iamVjdEtleTogYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vY2xvdWQtYXNzZW1ibHkuanNvbmAsXG4gICAgfVxuXG4gICAgY29uc3Qgc3ludGggPSBwaXBlbGluZXMuQ29kZVBpcGVsaW5lRmlsZVNldC5mcm9tQXJ0aWZhY3QoXG4gICAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QsXG4gICAgKVxuXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNsb3VkQXNzZW1ibHlcIixcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIG5ldyBjb2RlcGlwZWxpbmVBY3Rpb25zLkxhbWJkYUludm9rZUFjdGlvbih7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcImNsb3VkLWFzc2VtYmx5LWxvb2t1cFwiLFxuICAgICAgICAgICAgbGFtYmRhOiBjbG91ZEFzc2VtYmx5TG9va3VwRm4sXG4gICAgICAgICAgICBvdXRwdXRzOiBbY2xvdWRBc3NlbWJseUFydGlmYWN0XSxcbiAgICAgICAgICAgIHVzZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdXG4gICAgcmV0dXJuIHsgc3RhZ2VzLCBzeW50aCB9XG4gIH1cblxuICBwcml2YXRlIGNka1NvdXJjZVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmcsXG4gICk6IHsgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdOyBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXIgfSB7XG4gICAgY29uc3QgcHJlcGFyZUNka1NvdXJjZUZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlByZXBhcmVDZGtTb3VyY2VGblwiLCB7XG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vYXNzZXRzL3ByZXBhcmUtY2RrLXNvdXJjZS1sYW1iZGFcIiksXG4gICAgICApLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAvLyBVc2luZyBweXRob24gaW5zdGVhZCBpZiBOb2RlSlMgZHVlIHRvIHppcC1zdXBwb3J0IGluIHN0ZGxpYi5cbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzgsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICB9KVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgcHJlcGFyZUNka1NvdXJjZUZuLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyc0J5UGF0aFwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjphd3M6c3NtOiR7cmVnaW9ufToke2FjY291bnR9OnBhcmFtZXRlci9saWZsaWctY2RrLyovcGlwZWxpbmUtdmFyaWFibGVzLypgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKHByZXBhcmVDZGtTb3VyY2VGbilcblxuICAgIGNvbnN0IGNka1NvdXJjZUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICBjb25zdCB1c2VyUGFyYW1ldGVyczogUHJlcGFyZUNka1NvdXJjZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgYnVja2V0TmFtZTogY2RrQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICBwcmVmaXg6IGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L2AsXG4gICAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBwYXJhbWV0ZXJzTmFtZXNwYWNlLFxuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoID0gbmV3IHBpcGVsaW5lcy5TaGVsbFN0ZXAoXCJHZW5lcmF0ZUNsb3VkQXNzZW1ibHlcIiwge1xuICAgICAgaW5wdXQ6IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChjZGtTb3VyY2VBcnRpZmFjdCksXG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcIm5wbSBjaVwiXSxcbiAgICAgIGNvbW1hbmRzOiBbXCJucHggY2RrIHN5bnRoXCJdLFxuICAgIH0pXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNka1NvdXJjZVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwicHJlcGFyZS1jZGstc291cmNlXCIsXG4gICAgICAgICAgICBsYW1iZGE6IHByZXBhcmVDZGtTb3VyY2VGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjZGtTb3VyY2VBcnRpZmFjdF0sXG4gICAgICAgICAgICB1c2VyUGFyYW1ldGVycyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICAgIHJldHVybiB7IHN0YWdlcywgc3ludGggfVxuICB9XG5cbiAgYWRkU2xhY2tOb3RpZmljYXRpb24ocHJvcHM6IE9taXQ8U2xhY2tOb3RpZmljYXRpb25Qcm9wcywgXCJwaXBlbGluZVwiPik6IHZvaWQge1xuICAgIG5ldyBTbGFja05vdGlmaWNhdGlvbih0aGlzLCBcIlNsYWNrXCIsIHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLmNvZGVQaXBlbGluZSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pXG4gIH1cbn1cblxuaW50ZXJmYWNlIFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICBwcmVmaXg6IHN0cmluZ1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmdcbn1cbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLDZEQUE0RDtBQUM1RCw0RUFBMkU7QUFDM0UsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUVoRCxtQ0FBa0M7QUFDbEMsbURBQWtEO0FBQ2xELHlCQUF3QjtBQUN4Qiw2QkFBNEI7QUFDNUIsOERBQWlFO0FBQ2pFLG1GQUd3QztBQUN4Qyw2REFBZ0Y7QUErQ2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7QUFDSCxNQUFhLGlCQUFrQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBb0J6RCxZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUE2Qjs7UUFFN0IsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLGVBQWUsR0FDbkIsTUFBQSxLQUFLLENBQUMsZUFBZSxtQ0FBSSxJQUFBLHdDQUFzQixFQUFDLElBQUksQ0FBQyxDQUFBO1FBRXZELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFekQsSUFBSSxLQUFpQyxDQUFBO1FBQ3JDLElBQUksTUFBaUMsQ0FBQTtRQUVyQyxRQUFRLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDeEIsS0FBSyxnQkFBZ0I7Z0JBQ25CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0MscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFBO2dCQUNELEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFBO2dCQUMzQixNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQTtnQkFDN0IsTUFBSztZQUNQLEtBQUssWUFBWTtnQkFDZixN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QUM1QixjQUFjO3FCQUNmLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUE7UUFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUErQztRQUNsRSxJQUFJLHNDQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzNCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQXhORCw4Q0F3TkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiXG5pbXBvcnQgKiBhcyBjb2RlcGlwZWxpbmVBY3Rpb25zIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgcGlwZWxpbmVzIGZyb20gXCJhd3MtY2RrLWxpYi9waXBlbGluZXNcIlxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHsgZ2V0R3JpaWRBcnRlZmFjdEJ1Y2tldCB9IGZyb20gXCIuLi9ncmlpZC9hcnRlZmFjdC1idWNrZXRcIlxuaW1wb3J0IHtcbiAgY2xvdWRBc3NlbWJseUxvb2t1cEhhbmRsZXIsXG4gIENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyxcbn0gZnJvbSBcIi4vY2xvdWQtYXNzZW1ibHktbG9va3VwLWhhbmRsZXJcIlxuaW1wb3J0IHsgU2xhY2tOb3RpZmljYXRpb24sIFNsYWNrTm90aWZpY2F0aW9uUHJvcHMgfSBmcm9tIFwiLi9zbGFjay1ub3RpZmljYXRpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIExpZmxpZ0Nka1BpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogQnVja2V0IGhvbGRpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbiBhbmQgdHJpZ2dlciBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBleGlzdGluZyBidWNrZXQgYmFzZWQgb24gR3JpaWQgY29udmVudGlvbnNcbiAgICovXG4gIGFydGlmYWN0c0J1Y2tldD86IHMzLklCdWNrZXRcbiAgLyoqXG4gICAqIE5hbWUgb2YgcGlwZWxpbmUuIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHBhdGggd2hlcmUgY29uZmlndXJhdGlvblxuICAgKiBpcyBzdG9yZWQgaW4gUzMuXG4gICAqL1xuICBwaXBlbGluZU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogVHlwZSBvZiB1cGxvYWRlZCBhcnRpZmFjdC4gVGhpcyBjaGFuZ2VzIHRoZSBiZWhhdmlvdXIgb2YgdGhlXG4gICAqIHBpcGVsaW5lIGFuZCB3aGF0IGtpbmQgb2YgcHJvY2VzcyBpdCBwZXJmb3Jtcy5cbiAgICpcbiAgICogVHdvIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICAqXG4gICAqICAgLSBjZGstc291cmNlOiBUaGUgdXBsb2FkZWQgYXJ0aWZhY3QgcmVwcmVzZW50cyBhIENESyBhcHBsaWNhdGlvblxuICAgKiAgICAgYXMgc291cmNlIGNvZGUuIEEgYnVpbGQgc3RlcCB3aWxsIGNvbXBpbGUgdGhpcyBpbnRvIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogICAgIEFzIHBhcnQgb2Ygc3ludGhlc2l6aW5nIHRoaXMgaW50byBhIENESyBDbG91ZCBBc3NlbWJseSxcbiAgICogICAgIGEgZmlsZSBcInZhcmlhYmxlcy5qc29uXCIgd2lsbCBiZSB3cml0dGVuIGZvciB0aGVcbiAgICogICAgIENESyBhcHBsaWNhdGlvbiB0byBwYXJhbWV0ZXJpemUgdGhlIGJ1aWxkIGlmIGFueVxuICAgKiAgICAgdmFyaWFibGVzIGFyZSBmb3VuZCBpbiB0aGUgcGlwZWxpbmUgc291cmNlLlxuICAgKlxuICAgKiAgIC0gY2xvdWQtYXNzZW1ibHk6IFRoZSB1cGxvYWRlZCBhcnRpZmFjdCByZXByZXNlbnRzIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseSB3aGljaCBpcyByZWFkeSBmb3IgZGVwbG95bWVudC5cbiAgICpcbiAgICogICAgIFRoaXMgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIHZhcmlhYmxlcyBhdCB0aGUgY3VycmVudCB0aW1lXG4gICAqICAgICBzaW5jZSBDREsgUGlwZWxpbmVzIGRvbid0IHN1cHBvcnQgcGFyYW1ldGVyaXplZCBkZXBsb3lzLlxuICAgKiAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvOTU2MFxuICAgKi9cbiAgc291cmNlVHlwZTogXCJjZGstc291cmNlXCIgfCBcImNsb3VkLWFzc2VtYmx5XCJcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdXNlZCBmb3IgcGFyYW1ldGVycyBpbiBQYXJhbWV0ZXIgU3RvcmUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgZm9yIHNvdXJjZVR5cGUgb2YgXCJjZGstc29ydWNlXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlZmF1bHRcbiAgICovXG4gIHBhcmFtZXRlcnNOYW1lc3BhY2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBDREsgUGlwZWxpbmUgZm9yIExpZmxpZy5cbiAqXG4gKiBBdm9pZCBwdXR0aW5nIG11bHRpcGxlIHBpcGVsaW5lcyBpbiBhIHN0YWNrLCBzaW5jZSB0aGUgcGlwZWxpbmVcbiAqIHdpbGwgYWxzbyBrZWVwIHRoZSBob3N0aW5nIHN0YWNrIHVwLXRvLWRhdGUuXG4gKlxuICogVGhlIHBpcGVsaW5lIGlzIGV4ZWN1dGVkIGJ5IHdyaXRpbmcgYW4gZW1wdHkgZmlsZSB0b1xuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi90cmlnZ2VyXG4gKlxuICogQ29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcmVhZCBmcm9tIFMzIGF0IHRoZSBwYXRoXG4gKiBzMzovLzxhcnRpZmFjdHMtYnVja2V0Pi9waXBlbGluZXMvPHBpcGVsaW5lLW5hbWU+L1xuICpcbiAqIEZvciB1cGxvYWQgdHlwZSBcImNkay1zb3VyY2VcIjpcbiAqXG4gKiAgIC0gY2RrLXNvdXJjZS5qc29uIGhvbGRpbmcgYSBwb2ludGVyIHRvIHRoZSBhY3RpdmUgQ0RLIHNvdXJjZVxuICogICAgIHRoYXQgc2hvdWxkIGJlIHVzZWQuIFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgYnVja2V0TmFtZTogc3RyaW5nXG4gKiAgICAgICBidWNrZXRLZXk6IHN0cmluZ1xuICogICAgIH1cbiAqXG4gKiAgIC0gdmFyaWFibGVzKi5qc29uIHdoaWNoIGNhbiBiZSB6ZXJvIG9yIG1vcmUgZmlsZXNcbiAqICAgICB3aXRoIHN0cmluZy1zdHJpbmcgbWFwIGhvbGRpbmcgdmFyaWFibGVzIHRoYXQgd2lsbFxuICogICAgIGJlIHdyaXR0ZW4gdG8gdmFyaWFibGVzLmpzb24gYW5kIGNhbiBiZSByZWFkIGJ5IHRoZVxuICogICAgIHRoZSBDREsgYXBwbGljYXRpb24gZHVyaW5nIHN5bnRoZXNpemUuXG4gKlxuICogRm9yIHVwbG9hZCB0eXBlIFwiY2xvdWQtYXNzZW1ibHlcIjpcbiAqXG4gKiAgIC0gY2xvdWQtYXNzZW1ibHkuanNvbiBob2xkaW5nIGEgcG9pbnRlciB0byB0aGUgYWN0aXZlXG4gKiAgICAgQ0RLIENsb3VkIEFzc2VtYmx5IHRoYXQgc2hvdWxkIGJlIHVzZWQ6IFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldE5hbWU6IHN0cmluZ1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldEtleTogc3RyaW5nXG4gKiAgICAgfVxuICpcbiAqIFZhcmlhYmxlcyBlbmFibGVzIHNlcGFyYXRpb24gb2YgSWFDIGNvZGUgYW5kIGFwcGxpY2F0aW9uIGNvZGUgaWZcbiAqIHRoZXkgYXJlIG5vdCBjb2xvY2F0ZWQgaW4gdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIExpZmxpZ0Nka1BpcGVsaW5lIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUGF0aCBvbiBTMyBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyBwaXBlbGluZVMzUHJlZml4KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vYFxuICB9XG5cbiAgLyoqXG4gICAqIEtleSBpbiBTMyBidWNrZXQgdXNlZCB0byB0cmlnZ2VyIHBpcGVsaW5lLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGVtcHR5IGZpbGUgd2l0aGluIHRoZSBwaXBlbGluZSBwYXRoLlxuICAgKi9cbiAgc3RhdGljIHBpcGVsaW5lUzNUcmlnZ2VyS2V5KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vdHJpZ2dlcmBcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjZGtQaXBlbGluZTogcGlwZWxpbmVzLkNvZGVQaXBlbGluZVxuICBwdWJsaWMgcmVhZG9ubHkgY29kZVBpcGVsaW5lOiBjb2RlcGlwZWxpbmUuUGlwZWxpbmVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgYXJ0aWZhY3RzQnVja2V0ID1cbiAgICAgIHByb3BzLmFydGlmYWN0c0J1Y2tldCA/PyBnZXRHcmlpZEFydGVmYWN0QnVja2V0KHRoaXMpXG5cbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIGxldCBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXJcbiAgICBsZXQgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdXG5cbiAgICBzd2l0Y2ggKHByb3BzLnNvdXJjZVR5cGUpIHtcbiAgICAgIGNhc2UgXCJjbG91ZC1hc3NlbWJseVwiOlxuICAgICAgICBjb25zdCBjbG91ZEFzc2VtYmx5ID0gdGhpcy5jbG91ZEFzc2VtYmx5U3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIGFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICAgIClcbiAgICAgICAgc3ludGggPSBjbG91ZEFzc2VtYmx5LnN5bnRoXG4gICAgICAgIHN0YWdlcyA9IGNsb3VkQXNzZW1ibHkuc3RhZ2VzXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwiY2RrLXNvdXJjZVwiOlxuICAgICAgICBjb25zdCBjZGtTb3VyY2UgPSB0aGlzLmNka1NvdXJjZVN0YWdlKFxuICAgICAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICAgICAgICBhcnRpZmFjdHNCdWNrZXQsXG4gICAgICAgICAgcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgICAgIHByb3BzLnBhcmFtZXRlcnNOYW1lc3BhY2UgPz8gXCJkZWZhdWx0XCIsXG4gICAgICAgIClcbiAgICAgICAgc3ludGggPSBjZGtTb3VyY2Uuc3ludGhcbiAgICAgICAgc3RhZ2VzID0gY2RrU291cmNlLnN0YWdlc1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnN0IGR1bW15QXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIHRoaXMuY29kZVBpcGVsaW5lID0gbmV3IGNvZGVwaXBlbGluZS5QaXBlbGluZSh0aGlzLCBcIkNvZGVQaXBlbGluZVwiLCB7XG4gICAgICBwaXBlbGluZU5hbWU6IHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgIHN0YWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBcIlNvdXJjZVwiLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIG5ldyBjb2RlcGlwZWxpbmVBY3Rpb25zLlMzU291cmNlQWN0aW9uKHtcbiAgICAgICAgICAgICAgYWN0aW9uTmFtZTogXCJzb3VyY2VcIixcbiAgICAgICAgICAgICAgYnVja2V0OiBhcnRpZmFjdHNCdWNrZXQsXG4gICAgICAgICAgICAgIGJ1Y2tldEtleTogTGlmbGlnQ2RrUGlwZWxpbmUucGlwZWxpbmVTM1RyaWdnZXJLZXkoXG4gICAgICAgICAgICAgICAgcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBvdXRwdXQ6IGR1bW15QXJ0aWZhY3QsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGFnZXMsXG4gICAgICBdLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pXG5cbiAgICB0aGlzLmNka1BpcGVsaW5lID0gbmV3IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmUodGhpcywgXCJDZGtQaXBlbGluZVwiLCB7XG4gICAgICBzeW50aCxcbiAgICAgIGNvZGVQaXBlbGluZTogdGhpcy5jb2RlUGlwZWxpbmUsXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldEF3c0Nka1BhY2thZ2VKc29uRmlsZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIEFsc28gbG9vayB1cCB0aGUgdHJlZSBhIGJpdCB0byBoYW5kbGUgeWFybiB3b3Jrc3BhY2VzLlxuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuLi9ub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuLi8uLi9ub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXdzLWNkay9wYWNrYWdlLmpzb25cIiksXG4gICAgXVxuXG4gICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykge1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY2FuZGlkYXRlKSkge1xuICAgICAgICByZXR1cm4gY2FuZGlkYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgcHJpdmF0ZSBjbG91ZEFzc2VtYmx5U3RhZ2UoXG4gICAgY2xvdWRBc3NlbWJseUFydGlmYWN0OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QsXG4gICAgY2RrQnVja2V0OiBzMy5JQnVja2V0LFxuICAgIHBpcGVsaW5lTmFtZTogc3RyaW5nLFxuICApOiB7IHN0YWdlczogY29kZXBpcGVsaW5lLlN0YWdlUHJvcHNbXTsgc3ludGg6IHBpcGVsaW5lcy5JRmlsZVNldFByb2R1Y2VyIH0ge1xuICAgIGNvbnN0IGNsb3VkQXNzZW1ibHlMb29rdXBGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJDbG91ZEFzc2VtYmx5TG9va3VwRm5cIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogbmV3IGxhbWJkYS5JbmxpbmVDb2RlKFxuICAgICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke2Nsb3VkQXNzZW1ibHlMb29rdXBIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICAgICksXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKGNsb3VkQXNzZW1ibHlMb29rdXBGbilcblxuICAgIGNvbnN0IHVzZXJQYXJhbWV0ZXJzOiBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMgPSB7XG4gICAgICBidWNrZXROYW1lOiBjZGtCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIG9iamVjdEtleTogYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vY2xvdWQtYXNzZW1ibHkuanNvbmAsXG4gICAgfVxuXG4gICAgY29uc3Qgc3ludGggPSBwaXBlbGluZXMuQ29kZVBpcGVsaW5lRmlsZVNldC5mcm9tQXJ0aWZhY3QoXG4gICAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QsXG4gICAgKVxuXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNsb3VkQXNzZW1ibHlcIixcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIG5ldyBjb2RlcGlwZWxpbmVBY3Rpb25zLkxhbWJkYUludm9rZUFjdGlvbih7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcImNsb3VkLWFzc2VtYmx5LWxvb2t1cFwiLFxuICAgICAgICAgICAgbGFtYmRhOiBjbG91ZEFzc2VtYmx5TG9va3VwRm4sXG4gICAgICAgICAgICBvdXRwdXRzOiBbY2xvdWRBc3NlbWJseUFydGlmYWN0XSxcbiAgICAgICAgICAgIHVzZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdXG4gICAgcmV0dXJuIHsgc3RhZ2VzLCBzeW50aCB9XG4gIH1cblxuICBwcml2YXRlIGNka1NvdXJjZVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmcsXG4gICk6IHsgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdOyBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXIgfSB7XG4gICAgY29uc3QgcHJlcGFyZUNka1NvdXJjZUZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlByZXBhcmVDZGtTb3VyY2VGblwiLCB7XG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vYXNzZXRzL3ByZXBhcmUtY2RrLXNvdXJjZS1sYW1iZGFcIiksXG4gICAgICApLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAvLyBVc2luZyBweXRob24gaW5zdGVhZCBpZiBOb2RlSlMgZHVlIHRvIHppcC1zdXBwb3J0IGluIHN0ZGxpYi5cbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzgsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICB9KVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgcHJlcGFyZUNka1NvdXJjZUZuLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyc0J5UGF0aFwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjphd3M6c3NtOiR7cmVnaW9ufToke2FjY291bnR9OnBhcmFtZXRlci9saWZsaWctY2RrLyovcGlwZWxpbmUtdmFyaWFibGVzLypgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKHByZXBhcmVDZGtTb3VyY2VGbilcblxuICAgIGNvbnN0IGNka1NvdXJjZUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICBjb25zdCB1c2VyUGFyYW1ldGVyczogUHJlcGFyZUNka1NvdXJjZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgYnVja2V0TmFtZTogY2RrQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICBwcmVmaXg6IGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L2AsXG4gICAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBwYXJhbWV0ZXJzTmFtZXNwYWNlLFxuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoID0gbmV3IHBpcGVsaW5lcy5TaGVsbFN0ZXAoXCJHZW5lcmF0ZUNsb3VkQXNzZW1ibHlcIiwge1xuICAgICAgaW5wdXQ6IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChjZGtTb3VyY2VBcnRpZmFjdCksXG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcIm5wbSBjaVwiXSxcbiAgICAgIGNvbW1hbmRzOiBbXCJucHggY2RrIHN5bnRoXCJdLFxuICAgIH0pXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNka1NvdXJjZVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwicHJlcGFyZS1jZGstc291cmNlXCIsXG4gICAgICAgICAgICBsYW1iZGE6IHByZXBhcmVDZGtTb3VyY2VGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjZGtTb3VyY2VBcnRpZmFjdF0sXG4gICAgICAgICAgICB1c2VyUGFyYW1ldGVycyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICAgIHJldHVybiB7IHN0YWdlcywgc3ludGggfVxuICB9XG5cbiAgYWRkU2xhY2tOb3RpZmljYXRpb24ocHJvcHM6IE9taXQ8U2xhY2tOb3RpZmljYXRpb25Qcm9wcywgXCJwaXBlbGluZVwiPik6IHZvaWQge1xuICAgIG5ldyBTbGFja05vdGlmaWNhdGlvbih0aGlzLCBcIlNsYWNrXCIsIHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLmNvZGVQaXBlbGluZSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pXG4gIH1cbn1cblxuaW50ZXJmYWNlIFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICBwcmVmaXg6IHN0cmluZ1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmdcbn1cbiJdfQ==
@@ -30,7 +30,7 @@ class EcsUpdateImage extends constructs.Construct {
30
30
  const startDeployFn = new lambda.Function(this, "StartDeployFunction", {
31
31
  functionName: props.startDeployFunctionName,
32
32
  code: new lambda.InlineCode(`exports.handler = ${start_deploy_handler_1.startDeployHandler.toString()};`),
33
- runtime: lambda.Runtime.NODEJS_12_X,
33
+ runtime: lambda.Runtime.NODEJS_16_X,
34
34
  handler: "index.handler",
35
35
  timeout: cdk.Duration.seconds(60),
36
36
  environment: {
@@ -72,7 +72,7 @@ class EcsUpdateImage extends constructs.Construct {
72
72
  const statusFn = new lambda.Function(this, "StatusFunction", {
73
73
  functionName: props.statusFunctionName,
74
74
  code: new lambda.InlineCode(`exports.handler = ${status_handler_1.statusHandler.toString()};`),
75
- runtime: lambda.Runtime.NODEJS_12_X,
75
+ runtime: lambda.Runtime.NODEJS_16_X,
76
76
  handler: "index.handler",
77
77
  timeout: cdk.Duration.seconds(60),
78
78
  environment: {
@@ -95,4 +95,4 @@ class EcsUpdateImage extends constructs.Construct {
95
95
  }
96
96
  }
97
97
  exports.EcsUpdateImage = EcsUpdateImage;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLXVwZGF0ZS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lY3MtdXBkYXRlLWltYWdlL2Vjcy11cGRhdGUtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBR3hDLDJDQUEwQztBQUMxQyxpREFBZ0Q7QUFDaEQsbUNBQWtDO0FBQ2xDLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUF5QmhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxVQUFVLENBQUMsU0FBUztJQUN0RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQVk7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXhDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckQsQ0FBQyxDQUFBO1FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNyRSxZQUFZLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtZQUMzQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUN6QixxQkFBcUIseUNBQWtCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FDdEQ7WUFDRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxX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QW1CO2dCQUNuQixlQUFlO2dCQUNmLHlCQUF5QjthQUMxQjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQWhHRCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGVjciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiXG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB7IHN0YXJ0RGVwbG95SGFuZGxlciB9IGZyb20gXCIuL3N0YXJ0LWRlcGxveS1oYW5kbGVyXCJcbmltcG9ydCB7IHN0YXR1c0hhbmRsZXIgfSBmcm9tIFwiLi9zdGF0dXMtaGFuZGxlclwiXG5pbXBvcnQgeyBFY3NVcGRhdGVJbWFnZVRhZyB9IGZyb20gXCIuL3RhZ1wiXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsdXN0ZXI6IGVjcy5JQ2x1c3RlclxuICBzZXJ2aWNlPzogZWNzLklTZXJ2aWNlXG4gIHRhc2tSb2xlPzogaWFtLklSb2xlXG4gIGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGVcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgdGFnQ29udGFpbmVyOiBFY3NVcGRhdGVJbWFnZVRhZ1xuICBlY3JSZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnlcbn1cblxuLyoqXG4gKiBEeW5hbWljYWxseSB1cGRhdGUgaW1hZ2Ugb2YgYW4gRUNTIFNlcnZpY2Ugb3V0c2lkZSBDREsuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3Qgc2V0cyB1cCBhIExhbWJkYSBGdW5jdGlvbiB0aGF0IGNhbiBiZSBpbnZva2VkXG4gKiBmcm9tIHRoZSBDRCBwaXBlbGluZSB0byB1cGRhdGUgdGhlIEVDUyBTZXJ2aWNlIHRvIGEgbmV3IGltYWdlLlxuICpcbiAqIFRvIGtlZXAgcmVzb3VyY2VzIGluIHN5bmMsIGEgU2VjcmV0IGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZlxuICogdGhlIGN1cnJlbnQgaW1hZ2UsIHdoaWNoIGlzIGR5bmFtaWNhbGx5IHJlc29sdmVkIGluIHRoZSBDbG91ZEZvcm1hdGlvblxuICogdGVtcGxhdGVzIHRvIGF2b2lkIGluZnJhc3RydWN0dXJlIGNoYW5nZXMgdG8gY2F1c2UgYW4gb2xkZXIvZGlmZmVyZW50XG4gKiBpbWFnZSB0byBiZSB1c2VkLlxuICovXG5leHBvcnQgY2xhc3MgRWNzVXBkYXRlSW1hZ2UgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICBjb25zdCBzdGFydERlcGxveUZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlN0YXJ0RGVwbG95RnVuY3Rpb25cIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5zdGFydERlcGxveUZ1bmN0aW9uTmFtZSxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhcnREZXBsb3lIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIENMVVNURVJfTkFNRTogcHJvcHMuY2x1c3Rlci5jbHVzdGVyTmFtZSxcbiAgICAgICAgU0VSVklDRV9OQU1FOiBwcm9wcy5zZXJ2aWNlID09IG51bGwgPyBcIlwiIDogcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZSxcbiAgICAgICAgUkVQT1NJVE9SWV9VUkw6IHByb3BzLmVjclJlcG9zaXRvcnkucmVwb3NpdG9yeVVyaSxcbiAgICAgICAgRUNSX1RBR19TRUNSRVRfQVJOOiBwcm9wcy50YWdDb250YWluZXIuc2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IDEsXG4gICAgfSlcblxuICAgIHN0YXJ0RGVwbG95Rm4uZ3JhbnRJbnZva2Uocm9sZVRvQmVBc3N1bWVkKVxuICAgIHByb3BzLnRhZ0NvbnRhaW5lci5ncmFudFVwZGF0ZShzdGFydERlcGxveUZuKVxuXG4gICAgaWYgKHByb3BzLnNlcnZpY2UgIT0gbnVsbCkge1xuICAgICAgc3RhcnREZXBsb3lGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImVjczpEZXJlZ2lzdGVyVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlU2VydmljZXNcIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICAgIFwiZWNzOkxpc3RUYXNrc1wiLFxuICAgICAgICAgICAgXCJlY3M6TGlzdFRhc2tEZWZpbml0aW9uc1wiLFxuICAgICAgICAgICAgXCJlY3M6UmVnaXN0ZXJUYXNrRGVmaW5pdGlvblwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgc3RhcnREZXBsb3lGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJlY3M6VXBkYXRlU2VydmljZVwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmVjczoke3JlZ2lvbn06JHthY2NvdW50fTpzZXJ2aWNlLyR7cHJvcHMuY2x1c3Rlci5jbHVzdGVyTmFtZX0vJHtwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRhc2tSb2xlICE9IG51bGwpIHtcbiAgICAgIHByb3BzLnRhc2tSb2xlLmdyYW50UGFzc1JvbGUoc3RhcnREZXBsb3lGbi5yb2xlISlcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZXhlY3V0aW9uUm9sZSAhPSBudWxsKSB7XG4gICAgICBwcm9wcy5leGVjdXRpb25Sb2xlLmdyYW50UGFzc1JvbGUoc3RhcnREZXBsb3lGbi5yb2xlISlcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXNGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLnN0YXR1c0Z1bmN0aW9uTmFtZSxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhdHVzSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgKSxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBDTFVTVEVSX05BTUU6IHByb3BzLmNsdXN0ZXIuY2x1c3Rlck5hbWUsXG4gICAgICAgIFNFUlZJQ0VfTkFNRTogcHJvcHMuc2VydmljZSA9PSBudWxsID8gXCJcIiA6IHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBzdGF0dXNGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG5cbiAgICBzdGF0dXNGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcImVjczpEZXJlZ2lzdGVyVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICBcImVjczpEZXNjcmliZVNlcnZpY2VzXCIsXG4gICAgICAgICAgXCJlY3M6RGVzY3JpYmVUYXNrRGVmaW5pdGlvblwiLFxuICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICBcImVjczpMaXN0VGFza3NcIixcbiAgICAgICAgICBcImVjczpMaXN0VGFza0RlZmluaXRpb25zXCIsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgIH0pLFxuICAgIClcbiAgfVxufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLXVwZGF0ZS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lY3MtdXBkYXRlLWltYWdlL2Vjcy11cGRhdGUtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBR3hDLDJDQUEwQztBQUMxQyxpREFBZ0Q7QUFDaEQsbUNBQWtDO0FBQ2xDLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUF5QmhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxVQUFVLENBQUMsU0FBUztJQUN0RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQVk7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXhDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckQsQ0FBQyxDQUFBO1FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNyRSxZQUFZLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtZQUMzQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUN6QixxQkFBcUIseUNBQWtCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FDdEQ7WUFDRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxX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QW1CO2dCQUNuQixlQUFlO2dCQUNmLHlCQUF5QjthQUMxQjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQWhHRCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGVjciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiXG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB7IHN0YXJ0RGVwbG95SGFuZGxlciB9IGZyb20gXCIuL3N0YXJ0LWRlcGxveS1oYW5kbGVyXCJcbmltcG9ydCB7IHN0YXR1c0hhbmRsZXIgfSBmcm9tIFwiLi9zdGF0dXMtaGFuZGxlclwiXG5pbXBvcnQgeyBFY3NVcGRhdGVJbWFnZVRhZyB9IGZyb20gXCIuL3RhZ1wiXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsdXN0ZXI6IGVjcy5JQ2x1c3RlclxuICBzZXJ2aWNlPzogZWNzLklTZXJ2aWNlXG4gIHRhc2tSb2xlPzogaWFtLklSb2xlXG4gIGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGVcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgdGFnQ29udGFpbmVyOiBFY3NVcGRhdGVJbWFnZVRhZ1xuICBlY3JSZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnlcbn1cblxuLyoqXG4gKiBEeW5hbWljYWxseSB1cGRhdGUgaW1hZ2Ugb2YgYW4gRUNTIFNlcnZpY2Ugb3V0c2lkZSBDREsuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3Qgc2V0cyB1cCBhIExhbWJkYSBGdW5jdGlvbiB0aGF0IGNhbiBiZSBpbnZva2VkXG4gKiBmcm9tIHRoZSBDRCBwaXBlbGluZSB0byB1cGRhdGUgdGhlIEVDUyBTZXJ2aWNlIHRvIGEgbmV3IGltYWdlLlxuICpcbiAqIFRvIGtlZXAgcmVzb3VyY2VzIGluIHN5bmMsIGEgU2VjcmV0IGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZlxuICogdGhlIGN1cnJlbnQgaW1hZ2UsIHdoaWNoIGlzIGR5bmFtaWNhbGx5IHJlc29sdmVkIGluIHRoZSBDbG91ZEZvcm1hdGlvblxuICogdGVtcGxhdGVzIHRvIGF2b2lkIGluZnJhc3RydWN0dXJlIGNoYW5nZXMgdG8gY2F1c2UgYW4gb2xkZXIvZGlmZmVyZW50XG4gKiBpbWFnZSB0byBiZSB1c2VkLlxuICovXG5leHBvcnQgY2xhc3MgRWNzVXBkYXRlSW1hZ2UgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICBjb25zdCBzdGFydERlcGxveUZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlN0YXJ0RGVwbG95RnVuY3Rpb25cIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5zdGFydERlcGxveUZ1bmN0aW9uTmFtZSxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhcnREZXBsb3lIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIENMVVNURVJfTkFNRTogcHJvcHMuY2x1c3Rlci5jbHVzdGVyTmFtZSxcbiAgICAgICAgU0VSVklDRV9OQU1FOiBwcm9wcy5zZXJ2aWNlID09IG51bGwgPyBcIlwiIDogcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZSxcbiAgICAgICAgUkVQT1NJVE9SWV9VUkw6IHByb3BzLmVjclJlcG9zaXRvcnkucmVwb3NpdG9yeVVyaSxcbiAgICAgICAgRUNSX1RBR19TRUNSRVRfQVJOOiBwcm9wcy50YWdDb250YWluZXIuc2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IDEsXG4gICAgfSlcblxuICAgIHN0YXJ0RGVwbG95Rm4uZ3JhbnRJbnZva2Uocm9sZVRvQmVBc3N1bWVkKVxuICAgIHByb3BzLnRhZ0NvbnRhaW5lci5ncmFudFVwZGF0ZShzdGFydERlcGxveUZuKVxuXG4gICAgaWYgKHByb3BzLnNlcnZpY2UgIT0gbnVsbCkge1xuICAgICAgc3RhcnREZXBsb3lGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImVjczpEZXJlZ2lzdGVyVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlU2VydmljZXNcIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICAgIFwiZWNzOkxpc3RUYXNrc1wiLFxuICAgICAgICAgICAgXCJlY3M6TGlzdFRhc2tEZWZpbml0aW9uc1wiLFxuICAgICAgICAgICAgXCJlY3M6UmVnaXN0ZXJUYXNrRGVmaW5pdGlvblwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgc3RhcnREZXBsb3lGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJlY3M6VXBkYXRlU2VydmljZVwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmVjczoke3JlZ2lvbn06JHthY2NvdW50fTpzZXJ2aWNlLyR7cHJvcHMuY2x1c3Rlci5jbHVzdGVyTmFtZX0vJHtwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRhc2tSb2xlICE9IG51bGwpIHtcbiAgICAgIHByb3BzLnRhc2tSb2xlLmdyYW50UGFzc1JvbGUoc3RhcnREZXBsb3lGbi5yb2xlISlcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZXhlY3V0aW9uUm9sZSAhPSBudWxsKSB7XG4gICAgICBwcm9wcy5leGVjdXRpb25Sb2xlLmdyYW50UGFzc1JvbGUoc3RhcnREZXBsb3lGbi5yb2xlISlcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXNGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLnN0YXR1c0Z1bmN0aW9uTmFtZSxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhdHVzSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgKSxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBDTFVTVEVSX05BTUU6IHByb3BzLmNsdXN0ZXIuY2x1c3Rlck5hbWUsXG4gICAgICAgIFNFUlZJQ0VfTkFNRTogcHJvcHMuc2VydmljZSA9PSBudWxsID8gXCJcIiA6IHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBzdGF0dXNGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG5cbiAgICBzdGF0dXNGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcImVjczpEZXJlZ2lzdGVyVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICBcImVjczpEZXNjcmliZVNlcnZpY2VzXCIsXG4gICAgICAgICAgXCJlY3M6RGVzY3JpYmVUYXNrRGVmaW5pdGlvblwiLFxuICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICBcImVjczpMaXN0VGFza3NcIixcbiAgICAgICAgICBcImVjczpMaXN0VGFza0RlZmluaXRpb25zXCIsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgIH0pLFxuICAgIClcbiAgfVxufVxuIl19