@aws-cdk/aws-elasticache-alpha 2.219.0-alpha.0 → 2.221.0-alpha.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.
package/lib/user-group.js CHANGED
@@ -1,12 +1,38 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
+ var useValue = arguments.length > 2;
4
+ for (var i = 0; i < initializers.length; i++) {
5
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
6
+ }
7
+ return useValue ? value : void 0;
8
+ };
9
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
10
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
11
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
12
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
13
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
14
+ var _, done = false;
15
+ for (var i = decorators.length - 1; i >= 0; i--) {
16
+ var context = {};
17
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
18
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
19
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
20
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
21
+ if (kind === "accessor") {
22
+ if (result === void 0) continue;
23
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
24
+ if (_ = accept(result.get)) descriptor.get = _;
25
+ if (_ = accept(result.set)) descriptor.set = _;
26
+ if (_ = accept(result.init)) initializers.unshift(_);
27
+ }
28
+ else if (_ = accept(result)) {
29
+ if (kind === "field") initializers.unshift(_);
30
+ else descriptor[key] = _;
31
+ }
32
+ }
33
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
34
+ done = true;
7
35
  };
8
- var _a, _b;
9
- var UserGroup_1;
10
36
  Object.defineProperty(exports, "__esModule", { value: true });
11
37
  exports.UserGroup = exports.UserGroupBase = void 0;
12
38
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
@@ -21,6 +47,7 @@ const ELASTICACHE_USERGROUP_SYMBOL = Symbol.for('@aws-cdk/aws-elasticache.UserGr
21
47
  * Base class for UserGroup constructs
22
48
  */
23
49
  class UserGroupBase extends core_1.Resource {
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.221.0-alpha.0" };
24
51
  /**
25
52
  * Add a user to this user group
26
53
  *
@@ -40,200 +67,232 @@ class UserGroupBase extends core_1.Resource {
40
67
  }
41
68
  }
42
69
  exports.UserGroupBase = UserGroupBase;
43
- _a = JSII_RTTI_SYMBOL_1;
44
- UserGroupBase[_a] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.219.0-alpha.0" };
45
70
  /**
46
71
  * An ElastiCache UserGroup
47
72
  *
48
73
  * @resource AWS::ElastiCache::UserGroup
49
74
  */
50
- let UserGroup = UserGroup_1 = class UserGroup extends UserGroupBase {
51
- /**
52
- * Return whether the given object is a `UserGroup`
53
- */
54
- static isUserGroup(x) {
55
- return x !== null && typeof (x) === 'object' && ELASTICACHE_USERGROUP_SYMBOL in x;
56
- }
57
- /**
58
- * Import an existing user group by name
59
- *
60
- * @param scope The parent creating construct (usually `this`)
61
- * @param id The construct's name
62
- * @param userGroupName The name of the existing user group
63
- */
64
- static fromUserGroupName(scope, id, userGroupName) {
65
- return UserGroup_1.fromUserGroupAttributes(scope, id, { userGroupName });
66
- }
67
- /**
68
- * Import an existing user group by ARN
69
- *
70
- * @param scope The parent creating construct (usually `this`)
71
- * @param id The construct's name
72
- * @param userGroupArn The ARN of the existing user group
73
- */
74
- static fromUserGroupArn(scope, id, userGroupArn) {
75
- return UserGroup_1.fromUserGroupAttributes(scope, id, { userGroupArn });
76
- }
77
- /**
78
- * Import an existing user group using attributes
79
- *
80
- * @param scope The parent creating construct (usually `this`)
81
- * @param id The construct's name
82
- * @param attrs A `UserGroupAttributes` object
83
- */
84
- static fromUserGroupAttributes(scope, id, attrs) {
85
- try {
86
- jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_UserGroupAttributes(attrs);
75
+ let UserGroup = (() => {
76
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
77
+ let _classDescriptor;
78
+ let _classExtraInitializers = [];
79
+ let _classThis;
80
+ let _classSuper = UserGroupBase;
81
+ let _instanceExtraInitializers = [];
82
+ let _addUser_decorators;
83
+ var UserGroup = class extends _classSuper {
84
+ static { _classThis = this; }
85
+ static {
86
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
87
+ _addUser_decorators = [(0, metadata_resource_1.MethodMetadata)()];
88
+ __esDecorate(this, null, _addUser_decorators, { kind: "method", name: "addUser", static: false, private: false, access: { has: obj => "addUser" in obj, get: obj => obj.addUser }, metadata: _metadata }, null, _instanceExtraInitializers);
89
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
90
+ UserGroup = _classThis = _classDescriptor.value;
91
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
87
92
  }
88
- catch (error) {
89
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
90
- Error.captureStackTrace(error, this.fromUserGroupAttributes);
91
- }
92
- throw error;
93
- }
94
- let userGroupName;
95
- let userGroupArn;
96
- const stack = core_1.Stack.of(scope);
97
- if (attrs.userGroupArn && attrs.userGroupName) {
98
- throw new core_1.ValidationError('Only one of userGroupArn or userGroupName can be provided.', scope);
93
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.221.0-alpha.0" };
94
+ /**
95
+ * Uniquely identifies this class
96
+ */
97
+ static PROPERTY_INJECTION_ID = 'aws-cdk-lib.aws-elasticache.UserGroup';
98
+ /**
99
+ * Return whether the given object is a `UserGroup`
100
+ */
101
+ static isUserGroup(x) {
102
+ return x !== null && typeof (x) === 'object' && ELASTICACHE_USERGROUP_SYMBOL in x;
99
103
  }
100
- if (attrs.userGroupArn) {
101
- userGroupArn = attrs.userGroupArn;
102
- const extractedUserGroupName = stack.splitArn(attrs.userGroupArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
103
- if (!extractedUserGroupName) {
104
- throw new core_1.ValidationError('Unable to extract user group name from ARN.', scope);
105
- }
106
- userGroupName = extractedUserGroupName;
107
- }
108
- else if (attrs.userGroupName) {
109
- userGroupName = attrs.userGroupName;
110
- userGroupArn = stack.formatArn({
111
- service: 'elasticache',
112
- resource: 'usergroup',
113
- resourceName: attrs.userGroupName,
114
- });
104
+ /**
105
+ * Import an existing user group by name
106
+ *
107
+ * @param scope The parent creating construct (usually `this`)
108
+ * @param id The construct's name
109
+ * @param userGroupName The name of the existing user group
110
+ */
111
+ static fromUserGroupName(scope, id, userGroupName) {
112
+ return UserGroup.fromUserGroupAttributes(scope, id, { userGroupName });
115
113
  }
116
- else {
117
- throw new core_1.ValidationError('One of userGroupName or userGroupArn is required.', scope);
114
+ /**
115
+ * Import an existing user group by ARN
116
+ *
117
+ * @param scope The parent creating construct (usually `this`)
118
+ * @param id The construct's name
119
+ * @param userGroupArn The ARN of the existing user group
120
+ */
121
+ static fromUserGroupArn(scope, id, userGroupArn) {
122
+ return UserGroup.fromUserGroupAttributes(scope, id, { userGroupArn });
118
123
  }
119
- class Import extends UserGroupBase {
120
- get users() {
121
- return attrs.users ? [...attrs.users] : undefined;
124
+ /**
125
+ * Import an existing user group using attributes
126
+ *
127
+ * @param scope The parent creating construct (usually `this`)
128
+ * @param id The construct's name
129
+ * @param attrs A `UserGroupAttributes` object
130
+ */
131
+ static fromUserGroupAttributes(scope, id, attrs) {
132
+ try {
133
+ jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_UserGroupAttributes(attrs);
122
134
  }
123
- constructor(_userGroupArn, _userGroupName) {
124
- super(scope, id);
125
- this.userGroupArn = _userGroupArn;
126
- this.userGroupName = _userGroupName;
127
- this.engine = attrs.engine;
135
+ catch (error) {
136
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
137
+ Error.captureStackTrace(error, this.fromUserGroupAttributes);
138
+ }
139
+ throw error;
128
140
  }
129
- }
130
- return new Import(userGroupArn, userGroupName);
131
- }
132
- constructor(scope, id, props = {}) {
133
- super(scope, id, {});
134
- this._users = [];
135
- try {
136
- jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_UserGroupProps(props);
137
- }
138
- catch (error) {
139
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
140
- Error.captureStackTrace(error, UserGroup);
141
+ let userGroupName;
142
+ let userGroupArn;
143
+ const stack = core_1.Stack.of(scope);
144
+ if (attrs.userGroupArn && attrs.userGroupName) {
145
+ throw new core_1.ValidationError('Only one of userGroupArn or userGroupName can be provided.', scope);
141
146
  }
142
- throw error;
147
+ if (attrs.userGroupArn) {
148
+ userGroupArn = attrs.userGroupArn;
149
+ const extractedUserGroupName = stack.splitArn(attrs.userGroupArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
150
+ if (!extractedUserGroupName) {
151
+ throw new core_1.ValidationError('Unable to extract user group name from ARN.', scope);
152
+ }
153
+ userGroupName = extractedUserGroupName;
154
+ }
155
+ else if (attrs.userGroupName) {
156
+ userGroupName = attrs.userGroupName;
157
+ userGroupArn = stack.formatArn({
158
+ service: 'elasticache',
159
+ resource: 'usergroup',
160
+ resourceName: attrs.userGroupName,
161
+ });
162
+ }
163
+ else {
164
+ throw new core_1.ValidationError('One of userGroupName or userGroupArn is required.', scope);
165
+ }
166
+ class Import extends UserGroupBase {
167
+ engine;
168
+ userGroupName;
169
+ userGroupArn;
170
+ get users() {
171
+ return attrs.users ? [...attrs.users] : undefined;
172
+ }
173
+ constructor(_userGroupArn, _userGroupName) {
174
+ super(scope, id);
175
+ this.userGroupArn = _userGroupArn;
176
+ this.userGroupName = _userGroupName;
177
+ this.engine = attrs.engine;
178
+ }
179
+ }
180
+ return new Import(userGroupArn, userGroupName);
143
181
  }
144
- // Enhanced CDK Analytics Telemetry
145
- (0, metadata_resource_1.addConstructMetadata)(this, props);
146
- this.engine = props.engine ?? common_1.UserEngine.VALKEY;
147
- this.userGroupName = props.userGroupName ?? core_1.Lazy.string({
148
- // Elasticache not allowing uppercase user group id
149
- produce: () => core_1.Names.uniqueId(this).toLocaleLowerCase(),
150
- });
151
- if (props.users) {
152
- this._users.push(...props.users);
182
+ engine = __runInitializers(this, _instanceExtraInitializers);
183
+ userGroupName;
184
+ _users = [];
185
+ /**
186
+ * The ARN of the user group
187
+ *
188
+ * @attribute
189
+ */
190
+ userGroupArn;
191
+ /**
192
+ * The status of the user group
193
+ * Can be 'creating', 'active', 'modifying', 'deleting'
194
+ *
195
+ * @attribute
196
+ */
197
+ userGroupStatus;
198
+ resource;
199
+ constructor(scope, id, props = {}) {
200
+ super(scope, id, {});
201
+ try {
202
+ jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_UserGroupProps(props);
203
+ }
204
+ catch (error) {
205
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
206
+ Error.captureStackTrace(error, UserGroup);
207
+ }
208
+ throw error;
209
+ }
210
+ // Enhanced CDK Analytics Telemetry
211
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
212
+ this.engine = props.engine ?? common_1.UserEngine.VALKEY;
213
+ this.userGroupName = props.userGroupName ?? core_1.Lazy.string({
214
+ // Elasticache not allowing uppercase user group id
215
+ produce: () => core_1.Names.uniqueId(this).toLocaleLowerCase(),
216
+ });
217
+ if (props.users) {
218
+ this._users.push(...props.users);
219
+ }
220
+ this.resource = new aws_elasticache_1.CfnUserGroup(this, 'Resource', {
221
+ engine: this.engine,
222
+ userGroupId: this.userGroupName,
223
+ userIds: core_1.Lazy.list({
224
+ produce: () => {
225
+ this.validateUsers();
226
+ return this._users.map(user => user.userId);
227
+ },
228
+ }),
229
+ });
230
+ if (props.users) {
231
+ props.users.forEach(user => this.addUserDependency(user));
232
+ }
233
+ this.userGroupArn = this.resource.attrArn;
234
+ this.userGroupStatus = this.resource.attrStatus;
235
+ Object.defineProperty(this, ELASTICACHE_USERGROUP_SYMBOL, { value: true });
153
236
  }
154
- this.resource = new aws_elasticache_1.CfnUserGroup(this, 'Resource', {
155
- engine: this.engine,
156
- userGroupId: this.userGroupName,
157
- userIds: core_1.Lazy.list({
158
- produce: () => {
159
- this.validateUsers();
160
- return this._users.map(user => user.userId);
161
- },
162
- }),
163
- });
164
- if (props.users) {
165
- props.users.forEach(user => this.addUserDependency(user));
237
+ /**
238
+ * Add a CloudFormation dependency on the user resource to ensure proper creation order.
239
+ */
240
+ addUserDependency(user) {
241
+ this.resource.node.addDependency(user);
166
242
  }
167
- this.userGroupArn = this.resource.attrArn;
168
- this.userGroupStatus = this.resource.attrStatus;
169
- Object.defineProperty(this, ELASTICACHE_USERGROUP_SYMBOL, { value: true });
170
- }
171
- /**
172
- * Add a CloudFormation dependency on the user resource to ensure proper creation order.
173
- */
174
- addUserDependency(user) {
175
- this.resource.node.addDependency(user);
176
- }
177
- /**
178
- * Array of users in the user group
179
- *
180
- * Do not push directly to this array.
181
- * Use addUser() instead to ensure proper validation and dependency management.
182
- */
183
- get users() {
184
- return this._users;
185
- }
186
- /**
187
- * Validates users in the user group for duplicate usernames and Redis-specific requirements.
188
- */
189
- validateUsers() {
190
- const userNames = this._users.map(user => user.userName);
191
- const duplicates = userNames.filter((name, index) => userNames.indexOf(name) !== index);
192
- if (duplicates.length > 0) {
193
- throw new core_1.ValidationError('User group cannot have users with the same user name.', this);
243
+ /**
244
+ * Array of users in the user group
245
+ *
246
+ * Do not push directly to this array.
247
+ * Use addUser() instead to ensure proper validation and dependency management.
248
+ */
249
+ get users() {
250
+ return this._users;
194
251
  }
195
- if (this.engine === common_1.UserEngine.REDIS) {
196
- this._users.forEach(user => {
197
- if (user.engine !== common_1.UserEngine.REDIS) {
198
- throw new core_1.ValidationError('Redis user group can only contain Redis users.', this);
252
+ /**
253
+ * Validates users in the user group for duplicate usernames and Redis-specific requirements.
254
+ */
255
+ validateUsers() {
256
+ const userNames = this._users.map(user => user.userName);
257
+ const duplicates = userNames.filter((name, index) => userNames.indexOf(name) !== index);
258
+ if (duplicates.length > 0) {
259
+ throw new core_1.ValidationError('User group cannot have users with the same user name.', this);
260
+ }
261
+ if (this.engine === common_1.UserEngine.REDIS) {
262
+ this._users.forEach(user => {
263
+ if (user.engine !== common_1.UserEngine.REDIS) {
264
+ throw new core_1.ValidationError('Redis user group can only contain Redis users.', this);
265
+ }
266
+ });
267
+ const hasDefaultUser = this._users.some(user => user.userName === 'default');
268
+ if (!hasDefaultUser) {
269
+ throw new core_1.ValidationError('Redis user groups need to contain a user with the user name "default".', this);
199
270
  }
200
- });
201
- const hasDefaultUser = this._users.some(user => user.userName === 'default');
202
- if (!hasDefaultUser) {
203
- throw new core_1.ValidationError('Redis user groups need to contain a user with the user name "default".', this);
204
271
  }
205
272
  }
206
- }
207
- /**
208
- * Add a user to this user group
209
- *
210
- * @param user The user to add to the group
211
- */
212
- addUser(user) {
213
- try {
214
- jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_IUser(user);
215
- }
216
- catch (error) {
217
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
218
- Error.captureStackTrace(error, this.addUser);
273
+ /**
274
+ * Add a user to this user group
275
+ *
276
+ * @param user The user to add to the group
277
+ */
278
+ addUser(user) {
279
+ try {
280
+ jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_IUser(user);
219
281
  }
220
- throw error;
282
+ catch (error) {
283
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
284
+ Error.captureStackTrace(error, this.addUser);
285
+ }
286
+ throw error;
287
+ }
288
+ this._users.push(user);
289
+ this.addUserDependency(user);
221
290
  }
222
- this._users.push(user);
223
- this.addUserDependency(user);
224
- }
225
- };
291
+ static {
292
+ __runInitializers(_classThis, _classExtraInitializers);
293
+ }
294
+ };
295
+ return UserGroup = _classThis;
296
+ })();
226
297
  exports.UserGroup = UserGroup;
227
- _b = JSII_RTTI_SYMBOL_1;
228
- UserGroup[_b] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.219.0-alpha.0" };
229
- /**
230
- * Uniquely identifies this class
231
- */
232
- UserGroup.PROPERTY_INJECTION_ID = 'aws-cdk-lib.aws-elasticache.UserGroup';
233
- __decorate([
234
- (0, metadata_resource_1.MethodMetadata)()
235
- ], UserGroup.prototype, "addUser", null);
236
- exports.UserGroup = UserGroup = UserGroup_1 = __decorate([
237
- prop_injectable_1.propertyInjectable
238
- ], UserGroup);
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBLHFDQUFzQztBQUN0QyxpRUFBMkQ7QUFFM0QsMkNBQWdJO0FBQ2hJLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFFMUUsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUEwRHRGOztHQUVHO0FBQ0gsTUFBc0IsYUFBYyxTQUFRLGVBQVE7SUFvQmxEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBWTs7Ozs7Ozs7OztRQUN6QixNQUFNLElBQUksOEJBQXVCLENBQUMsbUdBQW1HLENBQUMsQ0FBQztLQUN4STs7QUEzQkgsc0NBNEJDOzs7QUFvQ0Q7Ozs7R0FJRztBQUVJLElBQU0sU0FBUyxpQkFBZixNQUFNLFNBQVUsU0FBUSxhQUFhO0lBTTFDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFNO1FBQzlCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLDRCQUE0QixJQUFJLENBQUMsQ0FBQztLQUNuRjtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxhQUFxQjtRQUNqRixPQUFPLFdBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztLQUN4RTtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUFvQjtRQUMvRSxPQUFPLFdBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztLQUN2RTtJQUVEOzs7Ozs7T0FN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QUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQWxNVSw4QkFBUzs7O0FBQ3BCOztHQUVHO0FBQ29CLCtCQUFxQixHQUFXLHVDQUF1QyxBQUFsRCxDQUFtRDtBQTJMeEY7SUFETixJQUFBLGtDQUFjLEdBQUU7d0NBSWhCO29CQWxNVSxTQUFTO0lBRHJCLG9DQUFrQjtHQUNOLFNBQVMsQ0FtTXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgQ2ZuVXNlckdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNhY2hlJztcbmltcG9ydCB7IElVc2VyIH0gZnJvbSAnLi91c2VyLWJhc2UnO1xuaW1wb3J0IHsgSVJlc291cmNlLCBSZXNvdXJjZSwgQXJuRm9ybWF0LCBTdGFjaywgTGF6eSwgVmFsaWRhdGlvbkVycm9yLCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5cbmNvbnN0IEVMQVNUSUNBQ0hFX1VTRVJHUk9VUF9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtZWxhc3RpY2FjaGUuVXNlckdyb3VwJyk7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwUHJvcHMge1xuICAvKipcbiAgICogRW5mb3JjZXMgYSBwYXJ0aWN1bGFyIHBoeXNpY2FsIHVzZXIgZ3JvdXAgbmFtZS5cbiAgICogQGRlZmF1bHQgPGdlbmVyYXRlZD5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVNcbiAgICpcbiAgICogQGRlZmF1bHQgVXNlckVuZ2luZS5WQUxLRVlcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluc2lkZSB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHVzZXJzXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVXNlckdyb3VwIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cEFybjogc3RyaW5nO1xuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBVc2VyR3JvdXAgY29uc3RydWN0c1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXNlckdyb3VwQmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVVzZXJHcm91cCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSB0eXBlIGZvciB0aGUgdXNlciBncm91cFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSB1c2VyIHRvIHRoaXMgdXNlciBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gX3VzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkVXNlcihfdXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoJ0Nhbm5vdCBhZGQgdXNlcnMgdG8gYW4gaW1wb3J0ZWQgVXNlckdyb3VwLiBPbmx5IFVzZXJHcm91cHMgY3JlYXRlZCBpbiB0aGlzIHN0YWNrIGNhbiBiZSBtb2RpZmllZC4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaW1wb3J0aW5nIGEgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBBcm5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5naW5lIHR5cGUgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VycyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBOYW1lXG4gICAqL1xuICByZWFkb25seSB1c2VyR3JvdXBBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlVzZXJHcm91cFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVXNlckdyb3VwIGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnYXdzLWNkay1saWIuYXdzLWVsYXN0aWNhY2hlLlVzZXJHcm91cCc7XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBgVXNlckdyb3VwYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1VzZXJHcm91cCh4OiBhbnkpOiB4IGlzIFVzZXJHcm91cCB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mICh4KSA9PT0gJ29iamVjdCcgJiYgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGdyb3VwIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXBOYW1lIFRoZSBuYW1lIG9mIHRoZSBleGlzdGluZyB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHVzZXJHcm91cE5hbWU6IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cE5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgZ3JvdXAgYnkgQVJOXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gdXNlckdyb3VwQXJuIFRoZSBBUk4gb2YgdGhlIGV4aXN0aW5nIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB1c2VyR3JvdXBBcm46IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBncm91cCB1c2luZyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gYXR0cnMgQSBgVXNlckdyb3VwQXR0cmlidXRlc2Agb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBVc2VyR3JvdXBBdHRyaWJ1dGVzKTogSVVzZXJHcm91cCB7XG4gICAgbGV0IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgICBsZXQgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICBpZiAoYXR0cnMudXNlckdyb3VwQXJuICYmIGF0dHJzLnVzZXJHcm91cE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09ubHkgb25lIG9mIHVzZXJHcm91cEFybiBvciB1c2VyR3JvdXBOYW1lIGNhbiBiZSBwcm92aWRlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJzLnVzZXJHcm91cEFybikge1xuICAgICAgdXNlckdyb3VwQXJuID0gYXR0cnMudXNlckdyb3VwQXJuO1xuICAgICAgY29uc3QgZXh0cmFjdGVkVXNlckdyb3VwTmFtZSA9IHN0YWNrLnNwbGl0QXJuKGF0dHJzLnVzZXJHcm91cEFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcbiAgICAgIGlmICghZXh0cmFjdGVkVXNlckdyb3VwTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbmFibGUgdG8gZXh0cmFjdCB1c2VyIGdyb3VwIG5hbWUgZnJvbSBBUk4uJywgc2NvcGUpO1xuICAgICAgfVxuICAgICAgdXNlckdyb3VwTmFtZSA9IGV4dHJhY3RlZFVzZXJHcm91cE5hbWU7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VyR3JvdXBOYW1lKSB7XG4gICAgICB1c2VyR3JvdXBOYW1lID0gYXR0cnMudXNlckdyb3VwTmFtZTtcbiAgICAgIHVzZXJHcm91cEFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAndXNlcmdyb3VwJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy51c2VyR3JvdXBOYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09uZSBvZiB1c2VyR3JvdXBOYW1lIG9yIHVzZXJHcm91cEFybiBpcyByZXF1aXJlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG5cbiAgICAgIHB1YmxpYyBnZXQgdXNlcnMoKTogSVVzZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBhdHRycy51c2VycyA/IFsuLi5hdHRycy51c2Vyc10gOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0cnVjdG9yKF91c2VyR3JvdXBBcm46IHN0cmluZywgX3VzZXJHcm91cE5hbWU6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnVzZXJHcm91cEFybiA9IF91c2VyR3JvdXBBcm47XG4gICAgICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IF91c2VyR3JvdXBOYW1lO1xuICAgICAgICB0aGlzLmVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh1c2VyR3JvdXBBcm4sIHVzZXJHcm91cE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZXJzOiBJVXNlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICogQ2FuIGJlICdjcmVhdGluZycsICdhY3RpdmUnLCAnbW9kaWZ5aW5nJywgJ2RlbGV0aW5nJ1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwU3RhdHVzOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuVXNlckdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBVc2VyR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuZW5naW5lID0gcHJvcHMuZW5naW5lID8/IFVzZXJFbmdpbmUuVkFMS0VZO1xuICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IHByb3BzLnVzZXJHcm91cE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgLy8gRWxhc3RpY2FjaGUgbm90IGFsbG93aW5nIHVwcGVyY2FzZSB1c2VyIGdyb3VwIGlkXG4gICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVJZCh0aGlzKS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnVzZXJzKSB7XG4gICAgICB0aGlzLl91c2Vycy5wdXNoKC4uLnByb3BzLnVzZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblVzZXJHcm91cCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBlbmdpbmU6IHRoaXMuZW5naW5lLFxuICAgICAgdXNlckdyb3VwSWQ6IHRoaXMudXNlckdyb3VwTmFtZSxcbiAgICAgIHVzZXJJZHM6IExhenkubGlzdCh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlVXNlcnMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlcnMubWFwKHVzZXIgPT4gdXNlci51c2VySWQpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudXNlcnMpIHtcbiAgICAgIHByb3BzLnVzZXJzLmZvckVhY2godXNlciA9PiB0aGlzLmFkZFVzZXJEZXBlbmRlbmN5KHVzZXIpKTtcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJHcm91cEFybiA9IHRoaXMucmVzb3VyY2UuYXR0ckFybjtcbiAgICB0aGlzLnVzZXJHcm91cFN0YXR1cyA9IHRoaXMucmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9VU0VSR1JPVVBfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIENsb3VkRm9ybWF0aW9uIGRlcGVuZGVuY3kgb24gdGhlIHVzZXIgcmVzb3VyY2UgdG8gZW5zdXJlIHByb3BlciBjcmVhdGlvbiBvcmRlci5cbiAgICovXG4gIHByaXZhdGUgYWRkVXNlckRlcGVuZGVuY3kodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh1c2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJheSBvZiB1c2VycyBpbiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBEbyBub3QgcHVzaCBkaXJlY3RseSB0byB0aGlzIGFycmF5LlxuICAgKiBVc2UgYWRkVXNlcigpIGluc3RlYWQgdG8gZW5zdXJlIHByb3BlciB2YWxpZGF0aW9uIGFuZCBkZXBlbmRlbmN5IG1hbmFnZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJzKCk6IElVc2VyW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl91c2VycztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXAgZm9yIGR1cGxpY2F0ZSB1c2VybmFtZXMgYW5kIFJlZGlzLXNwZWNpZmljIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVVc2VycygpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyTmFtZXMgPSB0aGlzLl91c2Vycy5tYXAodXNlciA9PiB1c2VyLnVzZXJOYW1lKTtcbiAgICBjb25zdCBkdXBsaWNhdGVzID0gdXNlck5hbWVzLmZpbHRlcigobmFtZSwgaW5kZXgpID0+IHVzZXJOYW1lcy5pbmRleE9mKG5hbWUpICE9PSBpbmRleCk7XG4gICAgaWYgKGR1cGxpY2F0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVXNlciBncm91cCBjYW5ub3QgaGF2ZSB1c2VycyB3aXRoIHRoZSBzYW1lIHVzZXIgbmFtZS4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmdpbmUgPT09IFVzZXJFbmdpbmUuUkVESVMpIHtcbiAgICAgIHRoaXMuX3VzZXJzLmZvckVhY2godXNlciA9PiB7XG4gICAgICAgIGlmICh1c2VyLmVuZ2luZSAhPT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlZGlzIHVzZXIgZ3JvdXAgY2FuIG9ubHkgY29udGFpbiBSZWRpcyB1c2Vycy4nLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBoYXNEZWZhdWx0VXNlciA9IHRoaXMuX3VzZXJzLnNvbWUodXNlciA9PiB1c2VyLnVzZXJOYW1lID09PSAnZGVmYXVsdCcpO1xuICAgICAgaWYgKCFoYXNEZWZhdWx0VXNlcikge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZWRpcyB1c2VyIGdyb3VwcyBuZWVkIHRvIGNvbnRhaW4gYSB1c2VyIHdpdGggdGhlIHVzZXIgbmFtZSBcImRlZmF1bHRcIi4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkIHRvIHRoZSBncm91cFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFVzZXIodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLl91c2Vycy5wdXNoKHVzZXIpO1xuICAgIHRoaXMuYWRkVXNlckRlcGVuZGVuY3kodXNlcik7XG4gIH1cbn1cbiJdfQ==
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EscUNBQXNDO0FBQ3RDLGlFQUEyRDtBQUUzRCwyQ0FBZ0k7QUFDaEksOEVBQThGO0FBQzlGLDBFQUEwRTtBQUUxRSxNQUFNLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQTBEdEY7O0dBRUc7QUFDSCxNQUFzQixhQUFjLFNBQVEsZUFBUTs7SUFvQmxEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBWTs7Ozs7Ozs7OztRQUN6QixNQUFNLElBQUksOEJBQXVCLENBQUMsbUdBQW1HLENBQUMsQ0FBQztLQUN4STs7QUEzQkgsc0NBNEJDO0FBb0NEOzs7O0dBSUc7SUFFVSxTQUFTOzRCQURyQixvQ0FBa0I7Ozs7c0JBQ1ksYUFBYTs7O3lCQUFyQixTQUFRLFdBQWE7Ozs7bUNBOEx6QyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsd0tBQU8sT0FBTyw2REFHYjtZQWxNSCw2S0FtTUM7Ozs7O1FBbE1DOztXQUVHO1FBQ0ksTUFBTSxDQUFVLHFCQUFxQixHQUFXLHVDQUF1QyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFNO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLDRCQUE0QixJQUFJLENBQUMsQ0FBQztTQUNuRjtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxhQUFxQjtZQUNqRixPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUN4RTtRQUVEOzs7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RCxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNwRixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksc0JBQWUsQ0FBQyx3RUFBd0UsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUcsQ0FBQztZQUNILENBQUM7U0FDRjtRQUVEOzs7O1dBSUc7UUFFSSxPQUFPLENBQUMsSUFBVzs7Ozs7Ozs7OztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7O1lBbE1VLHVEQUFTOzs7OztBQUFULDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgQ2ZuVXNlckdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNhY2hlJztcbmltcG9ydCB7IElVc2VyIH0gZnJvbSAnLi91c2VyLWJhc2UnO1xuaW1wb3J0IHsgSVJlc291cmNlLCBSZXNvdXJjZSwgQXJuRm9ybWF0LCBTdGFjaywgTGF6eSwgVmFsaWRhdGlvbkVycm9yLCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5cbmNvbnN0IEVMQVNUSUNBQ0hFX1VTRVJHUk9VUF9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtZWxhc3RpY2FjaGUuVXNlckdyb3VwJyk7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwUHJvcHMge1xuICAvKipcbiAgICogRW5mb3JjZXMgYSBwYXJ0aWN1bGFyIHBoeXNpY2FsIHVzZXIgZ3JvdXAgbmFtZS5cbiAgICogQGRlZmF1bHQgPGdlbmVyYXRlZD5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVNcbiAgICpcbiAgICogQGRlZmF1bHQgVXNlckVuZ2luZS5WQUxLRVlcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluc2lkZSB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHVzZXJzXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVXNlckdyb3VwIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cEFybjogc3RyaW5nO1xuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBVc2VyR3JvdXAgY29uc3RydWN0c1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXNlckdyb3VwQmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVVzZXJHcm91cCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSB0eXBlIGZvciB0aGUgdXNlciBncm91cFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSB1c2VyIHRvIHRoaXMgdXNlciBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gX3VzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkVXNlcihfdXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoJ0Nhbm5vdCBhZGQgdXNlcnMgdG8gYW4gaW1wb3J0ZWQgVXNlckdyb3VwLiBPbmx5IFVzZXJHcm91cHMgY3JlYXRlZCBpbiB0aGlzIHN0YWNrIGNhbiBiZSBtb2RpZmllZC4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaW1wb3J0aW5nIGEgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBBcm5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5naW5lIHR5cGUgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VycyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBOYW1lXG4gICAqL1xuICByZWFkb25seSB1c2VyR3JvdXBBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlVzZXJHcm91cFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVXNlckdyb3VwIGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnYXdzLWNkay1saWIuYXdzLWVsYXN0aWNhY2hlLlVzZXJHcm91cCc7XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBgVXNlckdyb3VwYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1VzZXJHcm91cCh4OiBhbnkpOiB4IGlzIFVzZXJHcm91cCB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mICh4KSA9PT0gJ29iamVjdCcgJiYgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGdyb3VwIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXBOYW1lIFRoZSBuYW1lIG9mIHRoZSBleGlzdGluZyB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHVzZXJHcm91cE5hbWU6IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cE5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgZ3JvdXAgYnkgQVJOXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gdXNlckdyb3VwQXJuIFRoZSBBUk4gb2YgdGhlIGV4aXN0aW5nIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB1c2VyR3JvdXBBcm46IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBncm91cCB1c2luZyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gYXR0cnMgQSBgVXNlckdyb3VwQXR0cmlidXRlc2Agb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBVc2VyR3JvdXBBdHRyaWJ1dGVzKTogSVVzZXJHcm91cCB7XG4gICAgbGV0IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgICBsZXQgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICBpZiAoYXR0cnMudXNlckdyb3VwQXJuICYmIGF0dHJzLnVzZXJHcm91cE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09ubHkgb25lIG9mIHVzZXJHcm91cEFybiBvciB1c2VyR3JvdXBOYW1lIGNhbiBiZSBwcm92aWRlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJzLnVzZXJHcm91cEFybikge1xuICAgICAgdXNlckdyb3VwQXJuID0gYXR0cnMudXNlckdyb3VwQXJuO1xuICAgICAgY29uc3QgZXh0cmFjdGVkVXNlckdyb3VwTmFtZSA9IHN0YWNrLnNwbGl0QXJuKGF0dHJzLnVzZXJHcm91cEFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcbiAgICAgIGlmICghZXh0cmFjdGVkVXNlckdyb3VwTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbmFibGUgdG8gZXh0cmFjdCB1c2VyIGdyb3VwIG5hbWUgZnJvbSBBUk4uJywgc2NvcGUpO1xuICAgICAgfVxuICAgICAgdXNlckdyb3VwTmFtZSA9IGV4dHJhY3RlZFVzZXJHcm91cE5hbWU7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VyR3JvdXBOYW1lKSB7XG4gICAgICB1c2VyR3JvdXBOYW1lID0gYXR0cnMudXNlckdyb3VwTmFtZTtcbiAgICAgIHVzZXJHcm91cEFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAndXNlcmdyb3VwJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy51c2VyR3JvdXBOYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09uZSBvZiB1c2VyR3JvdXBOYW1lIG9yIHVzZXJHcm91cEFybiBpcyByZXF1aXJlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG5cbiAgICAgIHB1YmxpYyBnZXQgdXNlcnMoKTogSVVzZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBhdHRycy51c2VycyA/IFsuLi5hdHRycy51c2Vyc10gOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0cnVjdG9yKF91c2VyR3JvdXBBcm46IHN0cmluZywgX3VzZXJHcm91cE5hbWU6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnVzZXJHcm91cEFybiA9IF91c2VyR3JvdXBBcm47XG4gICAgICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IF91c2VyR3JvdXBOYW1lO1xuICAgICAgICB0aGlzLmVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh1c2VyR3JvdXBBcm4sIHVzZXJHcm91cE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZXJzOiBJVXNlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICogQ2FuIGJlICdjcmVhdGluZycsICdhY3RpdmUnLCAnbW9kaWZ5aW5nJywgJ2RlbGV0aW5nJ1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwU3RhdHVzOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuVXNlckdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBVc2VyR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuZW5naW5lID0gcHJvcHMuZW5naW5lID8/IFVzZXJFbmdpbmUuVkFMS0VZO1xuICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IHByb3BzLnVzZXJHcm91cE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgLy8gRWxhc3RpY2FjaGUgbm90IGFsbG93aW5nIHVwcGVyY2FzZSB1c2VyIGdyb3VwIGlkXG4gICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVJZCh0aGlzKS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnVzZXJzKSB7XG4gICAgICB0aGlzLl91c2Vycy5wdXNoKC4uLnByb3BzLnVzZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblVzZXJHcm91cCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBlbmdpbmU6IHRoaXMuZW5naW5lLFxuICAgICAgdXNlckdyb3VwSWQ6IHRoaXMudXNlckdyb3VwTmFtZSxcbiAgICAgIHVzZXJJZHM6IExhenkubGlzdCh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlVXNlcnMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlcnMubWFwKHVzZXIgPT4gdXNlci51c2VySWQpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudXNlcnMpIHtcbiAgICAgIHByb3BzLnVzZXJzLmZvckVhY2godXNlciA9PiB0aGlzLmFkZFVzZXJEZXBlbmRlbmN5KHVzZXIpKTtcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJHcm91cEFybiA9IHRoaXMucmVzb3VyY2UuYXR0ckFybjtcbiAgICB0aGlzLnVzZXJHcm91cFN0YXR1cyA9IHRoaXMucmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9VU0VSR1JPVVBfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIENsb3VkRm9ybWF0aW9uIGRlcGVuZGVuY3kgb24gdGhlIHVzZXIgcmVzb3VyY2UgdG8gZW5zdXJlIHByb3BlciBjcmVhdGlvbiBvcmRlci5cbiAgICovXG4gIHByaXZhdGUgYWRkVXNlckRlcGVuZGVuY3kodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh1c2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJheSBvZiB1c2VycyBpbiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBEbyBub3QgcHVzaCBkaXJlY3RseSB0byB0aGlzIGFycmF5LlxuICAgKiBVc2UgYWRkVXNlcigpIGluc3RlYWQgdG8gZW5zdXJlIHByb3BlciB2YWxpZGF0aW9uIGFuZCBkZXBlbmRlbmN5IG1hbmFnZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJzKCk6IElVc2VyW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl91c2VycztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXAgZm9yIGR1cGxpY2F0ZSB1c2VybmFtZXMgYW5kIFJlZGlzLXNwZWNpZmljIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVVc2VycygpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyTmFtZXMgPSB0aGlzLl91c2Vycy5tYXAodXNlciA9PiB1c2VyLnVzZXJOYW1lKTtcbiAgICBjb25zdCBkdXBsaWNhdGVzID0gdXNlck5hbWVzLmZpbHRlcigobmFtZSwgaW5kZXgpID0+IHVzZXJOYW1lcy5pbmRleE9mKG5hbWUpICE9PSBpbmRleCk7XG4gICAgaWYgKGR1cGxpY2F0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVXNlciBncm91cCBjYW5ub3QgaGF2ZSB1c2VycyB3aXRoIHRoZSBzYW1lIHVzZXIgbmFtZS4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmdpbmUgPT09IFVzZXJFbmdpbmUuUkVESVMpIHtcbiAgICAgIHRoaXMuX3VzZXJzLmZvckVhY2godXNlciA9PiB7XG4gICAgICAgIGlmICh1c2VyLmVuZ2luZSAhPT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlZGlzIHVzZXIgZ3JvdXAgY2FuIG9ubHkgY29udGFpbiBSZWRpcyB1c2Vycy4nLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBoYXNEZWZhdWx0VXNlciA9IHRoaXMuX3VzZXJzLnNvbWUodXNlciA9PiB1c2VyLnVzZXJOYW1lID09PSAnZGVmYXVsdCcpO1xuICAgICAgaWYgKCFoYXNEZWZhdWx0VXNlcikge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZWRpcyB1c2VyIGdyb3VwcyBuZWVkIHRvIGNvbnRhaW4gYSB1c2VyIHdpdGggdGhlIHVzZXIgbmFtZSBcImRlZmF1bHRcIi4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkIHRvIHRoZSBncm91cFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFVzZXIodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLl91c2Vycy5wdXNoKHVzZXIpO1xuICAgIHRoaXMuYWRkVXNlckRlcGVuZGVuY3kodXNlcik7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-elasticache-alpha",
3
- "version": "2.219.0-alpha.0",
3
+ "version": "2.221.0-alpha.0",
4
4
  "private": false,
5
5
  "description": "The CDK Construct Library for AWS::ElastiCache",
6
6
  "main": "lib/index.js",
@@ -33,14 +33,15 @@
33
33
  "packageName": "awscdkelasticachealpha"
34
34
  }
35
35
  },
36
- "projectReferences": true,
37
36
  "metadata": {
38
37
  "jsii": {
39
38
  "rosetta": {
40
39
  "strict": true
41
40
  }
42
41
  }
43
- }
42
+ },
43
+ "tsconfig": "tsconfig.json",
44
+ "validateTsconfig": "minimal"
44
45
  },
45
46
  "repository": {
46
47
  "type": "git",
@@ -83,18 +84,18 @@
83
84
  },
84
85
  "license": "Apache-2.0",
85
86
  "devDependencies": {
86
- "@aws-cdk/cdk-build-tools": "2.219.0-alpha.0",
87
+ "@aws-cdk/cdk-build-tools": "2.221.0-alpha.0",
87
88
  "@aws-cdk/integ-runner": "^2.190.2",
88
- "@aws-cdk/pkglint": "2.219.0-alpha.0",
89
+ "@aws-cdk/pkglint": "2.221.0-alpha.0",
89
90
  "@types/jest": "^29.5.14",
90
91
  "jest": "^29.7.0",
91
- "aws-cdk-lib": "2.219.0",
92
+ "aws-cdk-lib": "2.221.0",
92
93
  "constructs": "^10.0.0",
93
- "@aws-cdk/integ-tests-alpha": "2.219.0-alpha.0"
94
+ "@aws-cdk/integ-tests-alpha": "2.221.0-alpha.0"
94
95
  },
95
96
  "dependencies": {},
96
97
  "peerDependencies": {
97
- "aws-cdk-lib": "^2.219.0",
98
+ "aws-cdk-lib": "^2.221.0",
98
99
  "constructs": "^10.0.0"
99
100
  },
100
101
  "engines": {