@ieeesa-npm/tenants 0.2.7 → 0.2.9
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/esm2022/lib/assets/constants.json +49 -1
- package/esm2022/lib/components/create-modify-role/create-modify-role.component.mjs +108 -69
- package/esm2022/lib/components/create-tenant-application/create-tenant-application.component.mjs +3 -3
- package/esm2022/lib/components/tenant-basic-details/tenant-basic-details.component.mjs +3 -3
- package/esm2022/lib/components/view-tenant-details/view-tenant-details.component.mjs +82 -4
- package/esm2022/lib/components/view-tenant-group-types/view-tenant-group-types.component.mjs +173 -0
- package/esm2022/lib/components/view-tenants-list/view-tenants-list.component.mjs +3 -3
- package/esm2022/lib/models/roles-and-permissions.model.mjs +1 -1
- package/esm2022/lib/models/view-tenant-group-types.model.mjs +9 -0
- package/esm2022/lib/services/tenant-applications.service.mjs +83 -5
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ieeesa-npm-tenants.mjs +498 -83
- package/fesm2022/ieeesa-npm-tenants.mjs.map +1 -1
- package/lib/components/create-modify-role/create-modify-role.component.d.ts +34 -25
- package/lib/components/tenant-basic-details/tenant-basic-details.component.d.ts +37 -0
- package/lib/components/view-tenant-details/view-tenant-details.component.d.ts +19 -0
- package/lib/components/view-tenant-group-types/view-tenant-group-types.component.d.ts +57 -0
- package/lib/models/roles-and-permissions.model.d.ts +6 -5
- package/lib/models/view-tenant-group-types.model.d.ts +27 -0
- package/lib/services/tenant-applications.service.d.ts +58 -9
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -76,6 +76,54 @@ export class TenantApplicationsService {
|
|
|
76
76
|
getSelectedTenantInformation() {
|
|
77
77
|
return this.selectedTenantInfo;
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Sets the roles informations
|
|
81
|
+
* @param {Role} roles
|
|
82
|
+
* @memberof TenantApplicationsService
|
|
83
|
+
*/
|
|
84
|
+
setRolesInfo(roles) {
|
|
85
|
+
this.roles = roles;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Returns the roles information
|
|
89
|
+
* @return {Role}
|
|
90
|
+
* @memberof TenantApplicationsService
|
|
91
|
+
*/
|
|
92
|
+
getRolesInfo() {
|
|
93
|
+
return this.roles;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Sets the selected role information.
|
|
97
|
+
* @param {RoleDetails} roleInfo
|
|
98
|
+
* @memberof TenantApplicationsService
|
|
99
|
+
*/
|
|
100
|
+
setSelectedRoleInformation(roleInfo) {
|
|
101
|
+
this.selectedRoleInfo = roleInfo;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Returns the selected role information.
|
|
105
|
+
* @return {RoleDetails}
|
|
106
|
+
* @memberof TenantApplicationsService
|
|
107
|
+
*/
|
|
108
|
+
getSelectedRoleInformation() {
|
|
109
|
+
return this.selectedRoleInfo;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Sets the tenant role type options.
|
|
113
|
+
* @param {RoleTypeOption} roleTypeOptions
|
|
114
|
+
* @memberof TenantApplicationsService
|
|
115
|
+
*/
|
|
116
|
+
setRoleTypeOption(roleTypeOptions) {
|
|
117
|
+
this.roleTypeOption = roleTypeOptions;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Returns the tenant role type options.
|
|
121
|
+
* @return {RoleTypeOption}
|
|
122
|
+
* @memberof TenantApplicationsService
|
|
123
|
+
*/
|
|
124
|
+
getRoleTypeOption() {
|
|
125
|
+
return this.roleTypeOption;
|
|
126
|
+
}
|
|
79
127
|
/**
|
|
80
128
|
* Sets the list of application type information
|
|
81
129
|
* @param {RadioOption} appTypeInfo
|
|
@@ -185,13 +233,28 @@ export class TenantApplicationsService {
|
|
|
185
233
|
}
|
|
186
234
|
/**
|
|
187
235
|
* Posts create role form data to server using HttpService to create a new role.
|
|
188
|
-
* @param {
|
|
189
|
-
* @return {Observable<
|
|
236
|
+
* @param {CreateModifyRoleRequestPayload} createModifyRolePayload
|
|
237
|
+
* @return {Observable<CreateModifyRoleResponse>}
|
|
238
|
+
* @memberof TenantApplicationsService
|
|
239
|
+
*/
|
|
240
|
+
createRole(createModifyRolePayload) {
|
|
241
|
+
return this.httpService
|
|
242
|
+
.postData(`${this.apiBaseUrl}/groups/role`, createModifyRolePayload)
|
|
243
|
+
.pipe(map((response) => {
|
|
244
|
+
return response;
|
|
245
|
+
}), catchError((error) => {
|
|
246
|
+
throw error;
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Posts the edited role form data to server using HttpService for updating the role information.
|
|
251
|
+
* @param {CreateModifyRoleRequestPayload} createModifyRolePayload
|
|
252
|
+
* @return {Observable<CreateModifyRoleResponse>}
|
|
190
253
|
* @memberof TenantApplicationsService
|
|
191
254
|
*/
|
|
192
|
-
|
|
255
|
+
editRole(createModifyRolePayload) {
|
|
193
256
|
return this.httpService
|
|
194
|
-
.
|
|
257
|
+
.putData(`${this.apiBaseUrl}/groups/role`, createModifyRolePayload)
|
|
195
258
|
.pipe(map((response) => {
|
|
196
259
|
return response;
|
|
197
260
|
}), catchError((error) => {
|
|
@@ -407,6 +470,21 @@ export class TenantApplicationsService {
|
|
|
407
470
|
throw error;
|
|
408
471
|
}));
|
|
409
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Gets group types from server using HttpService.
|
|
475
|
+
* @param {string} appId
|
|
476
|
+
* @return {Observable<ViewGroupTypeResponse>}
|
|
477
|
+
* @memberof TenantApplicationsService
|
|
478
|
+
*/
|
|
479
|
+
getGroupTypes(appId) {
|
|
480
|
+
return this.httpService
|
|
481
|
+
.getData(`${this.apiBaseUrl}/configurations/config/appGroupTypeDetails/${appId}`)
|
|
482
|
+
.pipe(map((response) => {
|
|
483
|
+
return response;
|
|
484
|
+
}), catchError((error) => {
|
|
485
|
+
throw error;
|
|
486
|
+
}));
|
|
487
|
+
}
|
|
410
488
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsService, deps: [{ token: i1.HttpService }, { token: i2.TenantPermissionsService }, { token: i3.TenantPermissionsMapService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
411
489
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsService, providedIn: 'root' }); }
|
|
412
490
|
}
|
|
@@ -416,4 +494,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
416
494
|
providedIn: 'root',
|
|
417
495
|
}]
|
|
418
496
|
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.TenantPermissionsService }, { type: i3.TenantPermissionsMapService }]; } });
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWFwcGxpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL3NlcnZpY2VzL3RlbmFudC1hcHBsaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxXQUFXLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBb0R4RCxNQUFNLE9BQU8seUJBQXlCO0lBZXBDO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXdCO0lBQ2hDLDBDQUEwQztJQUNsQyx3QkFBa0Q7SUFDMUQsMENBQTBDO0lBQ2xDLDJCQUF3RCxDQUFDLDZDQUE2Qzs7UUFKdEcsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFeEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUVsRCxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBcEJsRSxnQkFBVyxHQUFHLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBSy9DLHNCQUFpQixHQUFHLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDO1FBR3RELGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUNqQyxvQkFBZSxHQUFxQixFQUFFLENBQUM7UUFDdkMsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLGdCQUFXLEdBQWUsRUFBRSxDQUFDO1FBQzdCLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztJQVNwQyxDQUFDO0lBQ0osWUFBWSxDQUFDLFVBQWtCLEVBQUUsY0FBZ0M7UUFDL0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztP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QUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FDUixpQkFBMkM7UUFFM0MsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSx5QkFBeUIsRUFBRSxpQkFBaUIsQ0FBQzthQUN2RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOytHQXBlVSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgR2V0VGVuYW50c1BheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY29sdW1uLXNjaGVtYS12aWV3LXRlbmFudC1saXN0Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBUZW5hbnRzUGVybWlzc2lvbnMsXHJcbiAgVXNlclBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3RlbmFudHMtcGVybWlzc2lvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRlbmFudFBlcm1pc3Npb25zTWFwU2VydmljZSB9IGZyb20gJy4vdGVuYW50LXBlcm1pc3Npb25zLW1hcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVUZW5hbnRSZXF1ZXN0UGF5bG9hZCxcclxuICBDcmVhdGVUZW5hbnRSZXNwb25zZSxcclxuICBHZXRUZW5hbnRzUmVzcG9uc2UsXHJcbiAgTmV3VGVuYW50SW5mbyxcclxuICBUZW5hbnRCYXNpY0luZm8sXHJcbiAgVGVuYW50RGV0YWlsc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy90ZW5hbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGVja2JveE9wdGlvbiwgUmFkaW9PcHRpb24gfSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVJZCxcclxuICBGZWF0dXJlcyxcclxuICBHZXRGZWF0dXJlc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9mZWF0dXJlcy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQXBwVHlwZUNvbmZpZyxcclxuICBHZXRBcHBUeXBlc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9hcHAtdHlwZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuL3RlbmFudC1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGVuYW50RnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3RlbmFudC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVSb2xlUmVzcG9uc2UsXHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWQsXHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1Jlc3BvbnNlLFxyXG4gIEdldFJvbGVzUmVzcG9uc2UsXHJcbiAgUm9sZUluZm8sXHJcbiAgQ3JlYXRlUm9sZVJlcXVlc3RQYXlsb2FkLFxyXG4gIERlbGV0ZVJvbGVSZXF1ZXN0UGF5bG9hZCxcclxuICBEZWxldGVSb2xlUmVzcG9uc2UsXHJcbiAgUm9sZSxcclxufSBmcm9tICcuLi9tb2RlbHMvcm9sZXMtYW5kLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBVcGRhdGVUZW5hbnRTdGF0dXNSZXF1ZXN0UGF5bG9hZCxcclxuICBVcGRhdGVUZW5hbnRTdGF0dXNSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvdXBkYXRlLXRlbmFudC1zdGF0dXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEdldFJvbGVUeXBlc1BheWxvYWQsXHJcbiAgUm9sZVR5cGVDb25maWd1cmF0aW9uLFxyXG4gIFJvbGVUeXBlT3B0aW9uLFxyXG4gIFJvbGVUeXBlUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3JvbGUtdHlwZS5tb2RlbCc7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlIHtcclxuICB0ZW5hbnRzVGV4dCA9IHNjcmVlblRleHRzPy52aWV3VGVuYW50cz8uZXJyb3JzO1xyXG4gIGFwaUJhc2VVcmwhOiBzdHJpbmc7XHJcbiAgdXNlclBlcm1pc3Npb24hOiBVc2VyUGVybWlzc2lvbltdO1xyXG4gIHNlbGVjdGVkVGVuYW50SW5mbyE6IFRlbmFudEJhc2ljSW5mbyB8IHVuZGVmaW5lZDtcclxuICB1c2VyVGVuYW50c1Blcm1pc3Npb25zITogVGVuYW50c1Blcm1pc3Npb25zW107XHJcbiAgY3JlYXRlVGVuYW50c1RleHQgPSBzY3JlZW5UZXh0cz8uY3JlYXRlVGVuYW50Py5lcnJvcnM7XHJcbiAgbmV3VGVuYW50SW5mbyE6IE5ld1RlbmFudEluZm87XHJcbiAgdGVuYW50RnVuY3Rpb25UeXBlITogVGVuYW50RnVuY3Rpb25UeXBlO1xyXG4gIHJhZGlvT3B0aW9uczogUmFkaW9PcHRpb25bXSA9IFtdO1xyXG4gIGNoZWNrQm94T3B0aW9uczogQ2hlY2tib3hPcHRpb25bXSA9IFtdO1xyXG4gIGFwcFR5cGVJbmZvOiBSYWRpb09wdGlvbltdID0gW107XHJcbiAgZmVhdHVyZUxpc3Q6IEZlYXR1cmVzW10gPSBbXTtcclxuICByb2xlVHlwZU9wdGlvbnM6IFJvbGVUeXBlT3B0aW9uW10gPSBbXTtcclxuICBuZXdseUNyZWF0ZWRSb2xlITogUm9sZUluZm87XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRlbmFudFBlcm1pc3Npb25zU2VydmljZTogVGVuYW50UGVybWlzc2lvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRlbmFudFBlcm1pc3Npb25zTWFwU2VydmljZTogVGVuYW50UGVybWlzc2lvbnNNYXBTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuICBzZXRBcHBDb25maWcoYXBpQmFzZVVybDogc3RyaW5nLCB1c2VyUGVybWlzc2lvbjogVXNlclBlcm1pc3Npb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVybDtcclxuICAgIHRoaXMudXNlclBlcm1pc3Npb24gPSB1c2VyUGVybWlzc2lvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGVuYW50IGRldGFpbHMgZnJvbSBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2VcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFRlbmFudERldGFpbHNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRUZW5hbnREZXRhaWxzKGFwcElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRlbmFudERldGFpbHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9hcHAvZGV0YWlscy8ke2FwcElkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdXNlciB0ZW5hbnRzIHBlcm1pc3Npb25zXHJcbiAgICogQHBhcmFtIHtUZW5hbnRzUGVybWlzc2lvbnNbXX0gVGVuYW50c1Blcm1pc3Npb25zXHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRVc2VyVGVuYW50c1Blcm1pc3Npb25zKHVzZXJUZW5hbnRzUGVybWlzc2lvbnM6IFRlbmFudHNQZXJtaXNzaW9uc1tdKSB7XHJcbiAgICB0aGlzLnVzZXJUZW5hbnRzUGVybWlzc2lvbnMgPSB1c2VyVGVuYW50c1Blcm1pc3Npb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB1c2VyIHRlbmFudHMgcGVybWlzc2lvbnNcclxuICAgKiBAcmV0dXJuIHtUZW5hbnRzUGVybWlzc2lvbnNbXX1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFVzZXJUZW5hbnRzUGVybWlzc2lvbnMoKTogVGVuYW50c1Blcm1pc3Npb25zW10ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclRlbmFudHNQZXJtaXNzaW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHVzZXIgdGVuYW50cyBpbmZvcm1hdGlvblxyXG4gICAqIEBwYXJhbSB7VGVuYW50QmFzaWNJbmZvfSB0ZW5hbnRJbmZvXHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZFRlbmFudEluZm9ybWF0aW9uKHRlbmFudEluZm86IFRlbmFudEJhc2ljSW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRlbmFudEluZm8gPSB0ZW5hbnRJbmZvO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0ZW5hbnRzIGluZm9ybWF0aW9uXHJcbiAgICogQHJldHVybiB7VGVuYW50QmFzaWNJbmZvfVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRUZW5hbnRJbmZvcm1hdGlvbigpOiBUZW5hbnRCYXNpY0luZm8gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIHR5cGUgaW5mb3JtYXRpb25cclxuICAgKiBAcGFyYW0ge1JhZGlvT3B0aW9ufSBhcHBUeXBlSW5mb1xyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0QXBwbGljYXRpb25UeXBlKGFwcFR5cGVJbmZvOiBSYWRpb09wdGlvbltdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcFR5cGVJbmZvID0gYXBwVHlwZUluZm87XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYXBwbGljYXRpb24gdHlwZSBpbmZvcm1hdGlvblxyXG4gICAqIEByZXR1cm4ge1JhZGlvT3B0aW9ufVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0QXBwbGljYXRpb25UeXBlKCk6IFJhZGlvT3B0aW9uW10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBwVHlwZUluZm87XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciBwZXJtaXNzaW9uc1xyXG4gICAqIEBwYXJhbSB1c2Vyc1Blcm1pc3Npb25zXHJcbiAgICogQHJldHVybnMgQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBmaWx0ZXJQZXJtaXNzaW9uKHVzZXJzUGVybWlzc2lvbnM6IFVzZXJQZXJtaXNzaW9uW10pOiBUZW5hbnRzUGVybWlzc2lvbnNbXSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRQZXJtaXNzaW9uc1NlcnZpY2U/LmZpbHRlclRlbmFudHNQZXJtaXNzaW9ucyhcclxuICAgICAgdXNlcnNQZXJtaXNzaW9ucyxcclxuICAgICAgdGhpcy50ZW5hbnRQZXJtaXNzaW9uc01hcFNlcnZpY2U/LmdldEdsb2JhbFRlbmFudHNQZXJtaXNzaW9ucygpXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBWYWxpZGF0aW5nIGFjY2VzcyBmb3IgdGVuYW50c1xyXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uVHlwZSBQZXJtaXNzaW9uIFR5cGUgdG8gdmFsaWRhdGUgcGVybWlzc2lvblxyXG4gICAqIEBwYXJhbSBtYXBwZWRVc2VyUGVybWlzc2lvbnMgUGVybWlzc2lvbiB3aGljaCBhcmUgbWFwcGVkIHdpdGggdGVuYW50c1xyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgcGVybWlzc2lvbiBpcyBncmFudGVkXHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MoXHJcbiAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUsXHJcbiAgICBwZXJtaXNzaW9uczogVGVuYW50c1Blcm1pc3Npb25zW11cclxuICApOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRlbmFudFBlcm1pc3Npb25zU2VydmljZS52YWxpZGF0ZUFjY2Vzc1Blcm1pc3Npb24oXHJcbiAgICAgIHBlcm1pc3Npb25UeXBlLFxyXG4gICAgICBwZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdGVuYW50cy5cclxuICAgKiBAcGFyYW0ge0dldFRlbmFudHNQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRUZW5hbnRzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0VGVuYW50c0xpc3QocGF5bG9hZDogR2V0VGVuYW50c1BheWxvYWQpOiBPYnNlcnZhYmxlPEdldFRlbmFudHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvYXBwL2NvbmZpZ2AsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBsaXN0IG9mIGZlYXR1cmVzIGZyb20gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0RmVhdHVyZXNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRGZWF0dXJlcygpOiBPYnNlcnZhYmxlPEdldEZlYXR1cmVzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvYXBwL2ZlYXR1cmVzYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIGxpc3Qgb2Ygcm9sZXMgZnJvbSBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcElkXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPEdldFJvbGVzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Um9sZXMoYXBwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8R2V0Um9sZXNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9sZS8ke2FwcElkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBsaXN0IG9mIHJvbGVzIGFuZCBwZXJtaXNzaW9ucyBtYXBwaW5ncyBmcm9tIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwSWRcclxuICAgKiBAcGFyYW0ge0dldFJvbGVzQW5kUGVybWlzc2lvbnNQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPEdldFJvbGVzQW5kUGVybWlzc2lvbnNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRSb2xlc0FuZFBlcm1pc3Npb25zTWFwcGluZ3MoXHJcbiAgICBhcHBJZDogc3RyaW5nLFxyXG4gICAgcGF5bG9hZDogR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEdldFJvbGVzQW5kUGVybWlzc2lvbnNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3JvbGVCYXNlZFBlcm1pc3Npb25zLyR7YXBwSWR9YCxcclxuICAgICAgICBwYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIGxpc3Qgb2YgYXBwbGljYXRpb24gdHlwZXMgZnJvbSBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRBcHBUeXBlc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEFwcGxpY2F0aW9uVHlwZXMoKTogT2JzZXJ2YWJsZTxHZXRBcHBUeXBlc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2NvbmZpZy9hcHBfdHlwZWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUG9zdHMgY3JlYXRlIHJvbGUgZm9ybSBkYXRhIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZSB0byBjcmVhdGUgYSBuZXcgcm9sZS5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZVJvbGVSZXF1ZXN0UGF5bG9hZH0gY3JlYXRlUm9sZVBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENyZWF0ZVJvbGVSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBjcmVhdGVSb2xlKFxyXG4gICAgY3JlYXRlUm9sZVBheWxvYWQ6IENyZWF0ZVJvbGVSZXF1ZXN0UGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlUm9sZVJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9sZWAsIGNyZWF0ZVJvbGVQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGxpc3Qgb2Ygcm9sZSB0eXBlcyBmcm9tIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0ge0dldFJvbGVUeXBlc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFJvbGVUeXBlUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Um9sZVR5cGVzKHBheWxvYWQ6IEdldFJvbGVUeXBlc1BheWxvYWQpOiBPYnNlcnZhYmxlPFJvbGVUeXBlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2NvbmZpZy9jb25maWdGaWVsZGAsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc2VsZWN0L2Ryb3Bkb3duIG9wdGlvbnMgZnJvbSB0aGUgcm9sZSB0eXBlcyByZWNlaXZlZCBmcm9tIHNlcnZlci5cclxuICAgKiBAcGFyYW0ge1JvbGVUeXBlQ29uZmlndXJhdGlvbltdfSByb2xlVHlwZVJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7Um9sZVR5cGVPcHRpb25bXX1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFJvbGVUeXBlT3B0aW9ucyhcclxuICAgIHJvbGVUeXBlUmVzcG9uc2U6IFJvbGVUeXBlQ29uZmlndXJhdGlvbltdXHJcbiAgKTogUm9sZVR5cGVPcHRpb25bXSB7XHJcbiAgICB0aGlzLnJvbGVUeXBlT3B0aW9ucyA9IFtdO1xyXG4gICAgcm9sZVR5cGVSZXNwb25zZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZVR5cGVPcHRpb25zPy5wdXNoKHtcclxuICAgICAgICBpZDogaXRlbT8uY29uZmlnRmllbGRJZCxcclxuICAgICAgICBuYW1lOiBpdGVtPy5jb25maWdGaWVsZFZhbHVlPy5yb2xlVHlwZU5hbWUsXHJcbiAgICAgICAgb3JkZXI6IGl0ZW0/LmNvbmZpZ0ZpZWxkVmFsdWU/LnZpZXdPcmRlcixcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm9sZVR5cGVPcHRpb25zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcclxuICAgIHJldHVybiB0aGlzLnJvbGVUeXBlT3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc3RzIHRlbmFudCBhcHBsaWNhdGlvbiBmb3JtIGRhdGEgdG8gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlIGZvciBjcmVhdGluZyBuZXcgdGVuYW50IGFwcGxpY2F0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlVGVuYW50UGF5bG9hZH0gY3JlYXRlVGVuYW50UGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q3JlYXRlVGVuYW50UmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgY3JlYXRlVGVuYW50KFxyXG4gICAgY3JlYXRlVGVuYW50UGF5bG9hZDogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZVRlbmFudFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9hcHAvY3JlYXRlVGVuYW50YCxcclxuICAgICAgICBjcmVhdGVUZW5hbnRQYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgY2hlY2tib3ggb3B0aW9ucyBmcm9tIGZlYXR1cmVzIGxpc3QgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtGZWF0dXJlc0xpc3RbXX0gZmVhdHVyZXNcclxuICAgKiBAcmV0dXJucyB7Q2hlY2tib3hPcHRpb25bXX1cclxuICAgKi9cclxuICBnZXRGZWF0dXJlT3B0aW9ucyhmZWF0dXJlczogRmVhdHVyZXNbXSk6IENoZWNrYm94T3B0aW9uW10ge1xyXG4gICAgdGhpcy5jaGVja0JveE9wdGlvbnMgPSBbXTtcclxuICAgIGZlYXR1cmVzPy5mb3JFYWNoKChmZWF0dXJlOiBGZWF0dXJlcykgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrQm94T3B0aW9ucz8ucHVzaCh7XHJcbiAgICAgICAgaWQ6IGZlYXR1cmU/LmZlYXR1cmVJZCxcclxuICAgICAgICBuYW1lOiBmZWF0dXJlPy5mZWF0dXJlTmFtZSxcclxuICAgICAgICBjaGVja2VkOiBmZWF0dXJlPy5pc0RlZmF1bHQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZlYXR1cmU/LmlzRGVmYXVsdCxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrQm94T3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgcmFkaW8gb3B0aW9ucyBmcm9tIGFwcGxpY2F0aW9uIHR5cGVzIGZyb20gc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7QXBwVHlwZUNvbmZpZ1tdfSBhcHBUeXBlT3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIHtSYWRpb09wdGlvbltdfVxyXG4gICAqL1xyXG4gIGdldEFwcGxpY2F0aW9uVHlwZU9wdGlvbnMoYXBwVHlwZU9wdGlvbnM6IEFwcFR5cGVDb25maWdbXSk6IFJhZGlvT3B0aW9uW10ge1xyXG4gICAgdGhpcy5yYWRpb09wdGlvbnMgPSBbXTtcclxuICAgIGFwcFR5cGVPcHRpb25zPy5mb3JFYWNoKChhcHBUeXBlOiBBcHBUeXBlQ29uZmlnKSA9PiB7XHJcbiAgICAgIHRoaXMucmFkaW9PcHRpb25zPy5wdXNoKHtcclxuICAgICAgICBpZDogYXBwVHlwZT8uY29uZmlnRmllbGRJZCxcclxuICAgICAgICBsYWJlbDogYXBwVHlwZT8uY29uZmlnRmllbGRWYWx1ZT8udHlwZSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLnJhZGlvT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMgaWQncy5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9uW119IGZlYXR1cmVPcHRpb25zXHJcbiAgICogQHJldHVybnMge0ZlYXR1cmVJZFtdfVxyXG4gICAqL1xyXG4gIGdldEZlYXR1cmVJZHMoZmVhdHVyZU9wdGlvbnM6IENoZWNrYm94T3B0aW9uW10pOiBGZWF0dXJlSWRbXSB7XHJcbiAgICBjb25zdCBmZWF0dXJlSWRzOiBGZWF0dXJlSWRbXSA9IFtdO1xyXG4gICAgZmVhdHVyZU9wdGlvbnM/LmZvckVhY2goKGZlYXR1cmVPcHRpb246IENoZWNrYm94T3B0aW9uKSA9PiB7XHJcbiAgICAgIGlmIChmZWF0dXJlT3B0aW9uPy5jaGVja2VkKSB7XHJcbiAgICAgICAgZmVhdHVyZUlkcy5wdXNoKHtcclxuICAgICAgICAgIGZlYXR1cmVJZDogZmVhdHVyZU9wdGlvbi5pZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZlYXR1cmVJZHM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIG5ld2x5IGNyZWF0ZWQgdGVuYW50IGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB7TmV3VGVuYW50SW5mb30gbmV3VGVuYW50SW5mb1xyXG4gICAqL1xyXG4gIHNldE5ld1RlbmFudEluZm8obmV3VGVuYW50SW5mbzogTmV3VGVuYW50SW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5uZXdUZW5hbnRJbmZvID0gbmV3VGVuYW50SW5mbztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbmV3bHkgY3JlYXRlZCB0ZW5hbnQgaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0IGdldE5ld1RlbmFudEluZm8oKTogTmV3VGVuYW50SW5mbyB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdUZW5hbnRJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcGFyYW0ge1RlbmFudEZ1bmN0aW9uVHlwZX0gdGVuYW50RnVuY3Rpb25UeXBlIC10ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKi9cclxuICBzZXRUZW5hbnRGdW5jdGlvblR5cGUodGVuYW50RnVuY3Rpb25UeXBlOiBUZW5hbnRGdW5jdGlvblR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID0gdGVuYW50RnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcmV0dXJuIHtUZW5hbnRGdW5jdGlvblR5cGV9IC10ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKi9cclxuICBnZXRUZW5hbnRGdW5jdGlvblR5cGUoKTogVGVuYW50RnVuY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU3RvcmVzIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24uXHJcbiAgICogQHBhcmFtIHtSb2xlSW5mb30gbmV3bHlDcmVhdGVkUm9sZSAtY3JlYXRlIHJvbGUgaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgc2V0TmV3bHlDcmVhdGVkUm9sZUluZm8obmV3bHlDcmVhdGVkUm9sZTogUm9sZUluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMubmV3bHlDcmVhdGVkUm9sZSA9IG5ld2x5Q3JlYXRlZFJvbGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbi5cclxuICAgKiBAcmV0dXJuIHtSb2xlSW5mb30gLWNyZWF0ZSByb2xlIGluZm9ybWF0aW9uLlxyXG4gICAqL1xyXG4gIGdldE5ld2x5Q3JlYXRlZFJvbGVJbmZvKCk6IFJvbGVJbmZvIHtcclxuICAgIHJldHVybiB0aGlzLm5ld2x5Q3JlYXRlZFJvbGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3N0cyB0aGUgZWRpdGVkIHRlbmFudCBhcHBsaWNhdGlvbiBmb3JtIGRhdGEgdG8gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlIGZvciB1cGRhdGluZyB0aGUgdGVuYW50IGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlVGVuYW50UGF5bG9hZH0gZWRpdFRlbmFudFBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENyZWF0ZVRlbmFudFJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGVkaXRUZW5hbnQoXHJcbiAgICBlZGl0VGVuYW50UGF5bG9hZDogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZVRlbmFudFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2FwcC9lZGl0VGVuYW50YCxcclxuICAgICAgICBlZGl0VGVuYW50UGF5bG9hZFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VuZHMgdXBkYXRlIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB0byB1cGRhdGUgdGhlIHRlbmFudCBhcHBsaWNhdGlvbiBzdGF0dXMgdG8gYWN0aXZlL2luYWN0aXZlIHVzaW5nIEh0dHBTZXJ2aWNlIGFuZCByZXR1cm5zIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgcmVzcG9uc2UuXHJcbiAgICogQHBhcmFtIHtVcGRhdGVUZW5hbnRTdGF0dXNSZXF1ZXN0UGF5bG9hZH0gdXBkYXRlVGVuYW50U3RhdHVzUGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8VXBkYXRlVGVuYW50U3RhdHVzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgdXBkYXRlVGVuYW50U3RhdHVzKFxyXG4gICAgdXBkYXRlVGVuYW50U3RhdHVzUGF5bG9hZDogVXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPFVwZGF0ZVRlbmFudFN0YXR1c1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2FwcC91cGRhdGVTdGF0dXNgLFxyXG4gICAgICAgIHVwZGF0ZVRlbmFudFN0YXR1c1BheWxvYWRcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEl0IGdlbmVyYXRlcyBGZWF0dXJlIGxpc3QgZnJvbSBjaGVja2JveCBvcHRpb25zIGdlbmVyYXRlZCBpbiBmb3JtIGFycmF5LlxyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb25bXX0gZmVhdHVyZXNcclxuICAgKiBAcmV0dXJuIHtGZWF0dXJlc1tdfVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RmVhdHVyZXNMaXN0KGZlYXR1cmVzOiBDaGVja2JveE9wdGlvbltdKTogRmVhdHVyZXNbXSB7XHJcbiAgICB0aGlzLmZlYXR1cmVMaXN0ID0gW107XHJcbiAgICBmZWF0dXJlcz8uZm9yRWFjaCgoZmVhdHVyZTogQ2hlY2tib3hPcHRpb24pID0+IHtcclxuICAgICAgaWYgKGZlYXR1cmUuY2hlY2tlZClcclxuICAgICAgICB0aGlzLmZlYXR1cmVMaXN0Py5wdXNoKHtcclxuICAgICAgICAgIGZlYXR1cmVJZDogZmVhdHVyZT8uaWQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgZmVhdHVyZU5hbWU6IGZlYXR1cmU/Lm5hbWUgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgaXNEZWZhdWx0OiBmZWF0dXJlPy5jaGVja2VkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5mZWF0dXJlTGlzdDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBzb3J0ZWQgcm9sZSBsaXN0IGRhdGEuXHJcbiAgICogQHBhcmFtIHtSb2xlW119IHJvbGVMaXN0XHJcbiAgICogQHJldHVybiB7Um9sZVtdfVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc29ydFJvbGVzQnlSb2xlVHlwZShyb2xlTGlzdDogUm9sZVtdKTogUm9sZVtdIHtcclxuICAgIHJldHVybiByb2xlTGlzdC5zb3J0KChhLCBiKSA9PiBhPy52aWV3T3JkZXIgLSBiPy52aWV3T3JkZXIpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBQb3N0cyB0aGUgcm9sZSBkZXRhaWxzIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZSBmb3IgZGVsZXRpbmcgdGhlIHJvbGUuXHJcbiAgICogQHBhcmFtIHtEZWxldGVSb2xlUmVxdWVzdFBheWxvYWR9IGRlbGV0ZVJvbGVSZXF1ZXN0UGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RGVsZXRlUm9sZVJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGRlbGV0ZVJvbGUoXHJcbiAgICBkZWxldGVSb2xlUGF5bG9hZDogRGVsZXRlUm9sZVJlcXVlc3RQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxEZWxldGVSb2xlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3JvbGUvZGVsZXRlUm9sZWAsIGRlbGV0ZVJvbGVQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
497
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWFwcGxpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL3NlcnZpY2VzL3RlbmFudC1hcHBsaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxXQUFXLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBc0R4RCxNQUFNLE9BQU8seUJBQXlCO0lBa0JwQztJQUNFLDBDQUEwQztJQUNsQyxXQUF3QjtJQUNoQywwQ0FBMEM7SUFDbEMsd0JBQWtEO0lBQzFELDBDQUEwQztJQUNsQywyQkFBd0QsQ0FBQyw2Q0FBNkM7O1FBSnRHLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXhCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFFbEQsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQXZCbEUsZ0JBQVcsR0FBRyxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQztRQUsvQyxzQkFBaUIsR0FBRyxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQztRQUd0RCxpQkFBWSxHQUFrQixFQUFFLENBQUM7UUFDakMsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUNoQyxnQkFBVyxHQUFlLEVBQUUsQ0FBQztRQUM3QixvQkFBZSxHQUFxQixFQUFFLENBQUM7SUFZcEMsQ0FBQztJQUNKLFlBQVksQ0FBQyxVQUFrQixFQUFFLGNBQWdDO1FBQy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSwrQkFBK0IsS0FBSyxFQUFFLENBQUM7YUFDakUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNEOzs7O09BSUc7SUFDSCx5QkFBeUIsQ0FBQyxzQkFBNEM7UUFDcEUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNEJBQTRCLENBQUMsVUFBMkI7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILDRCQUE0QjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILDBCQUEwQixDQUFDLFFBQXFCO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxlQUFpQztRQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQztJQUN4QyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLFdBQTBCO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLGdCQUFrQztRQUNqRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FDNUQsZ0JBQWdCLEVBQ2hCLElBQUksQ0FBQywyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUNaLGNBQThCLEVBQzlCLFdBQWlDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixDQUMzRCxjQUFjLEVBQ2QsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsT0FBMEI7UUFDdkMsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSw0QkFBNEIsRUFBRSxPQUFPLENBQUM7YUFDakUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSw4QkFBOEIsQ0FBQzthQUN6RCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLGdCQUFnQixLQUFLLEVBQUUsQ0FBQzthQUNsRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBQ0Q7Ozs7OztPQU1HO0lBQ0gsOEJBQThCLENBQzVCLEtBQWEsRUFDYixPQUFzQztRQUV0QyxPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLFFBQVEsQ0FDUCxHQUFHLElBQUksQ0FBQyxVQUFVLGdDQUFnQyxLQUFLLEVBQUUsRUFDekQsT0FBTyxDQUNSO2FBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxpQ0FBaUMsQ0FBQzthQUM1RCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxVQUFVLENBQ1IsdUJBQXVEO1FBRXZELE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsY0FBYyxFQUFFLHVCQUF1QixDQUFDO2FBQ25FLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FDTix1QkFBdUQ7UUFFdkQsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxjQUFjLEVBQUUsdUJBQXVCLENBQUM7YUFDbEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLE9BQTRCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsb0NBQW9DLEVBQUUsT0FBTyxDQUFDO2FBQ3pFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUNoQixnQkFBeUM7UUFFekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUM7Z0JBQ3pCLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYTtnQkFDdkIsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZO2dCQUMxQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFNBQVM7YUFDekMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQ1YsbUJBQStDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsUUFBUSxDQUNQLEdBQUcsSUFBSSxDQUFDLFVBQVUsa0NBQWtDLEVBQ3BELG1CQUFtQixDQUNwQjthQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsUUFBb0I7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQztnQkFDekIsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVc7Z0JBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUztnQkFDM0IsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTO2FBQzdCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gseUJBQXlCLENBQUMsY0FBK0I7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQXNCLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztnQkFDdEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhO2dCQUMxQixLQUFLLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUk7YUFDdkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsY0FBZ0M7UUFDNUMsTUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztRQUNuQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsYUFBNkIsRUFBRSxFQUFFO1lBQ3hELElBQUksYUFBYSxFQUFFLE9BQU8sRUFBRTtnQkFDMUIsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDZCxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQVk7aUJBQ3RDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsYUFBNEI7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxxQkFBcUIsQ0FBQyxrQkFBc0M7UUFDMUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUNEOzs7T0FHRztJQUNILHVCQUF1QixDQUFDLGdCQUEwQjtRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUNEOzs7T0FHRztJQUNILHVCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQ1IsaUJBQTZDO1FBRTdDLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsT0FBTyxDQUNOLEdBQUcsSUFBSSxDQUFDLFVBQVUsZ0NBQWdDLEVBQ2xELGlCQUFpQixDQUNsQjthQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUNoQix5QkFBMkQ7UUFFM0QsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQ04sR0FBRyxJQUFJLENBQUMsVUFBVSxrQ0FBa0MsRUFDcEQseUJBQXlCLENBQzFCO2FBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLFFBQTBCO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUF1QixFQUFFLEVBQUU7WUFDNUMsSUFBSSxPQUFPLENBQUMsT0FBTztnQkFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7b0JBQ3JCLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBWTtvQkFDaEMsV0FBVyxFQUFFLE9BQU8sRUFBRSxJQUFjO29CQUNwQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU87aUJBQzVCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILG1CQUFtQixDQUFDLFFBQWdCO1FBQ2xDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FDUixpQkFBMkM7UUFFM0MsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSx5QkFBeUIsRUFBRSxpQkFBaUIsQ0FBQzthQUN2RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLE9BQU8sQ0FDTixHQUFHLElBQUksQ0FBQyxVQUFVLDhDQUE4QyxLQUFLLEVBQUUsQ0FDeEU7YUFDQSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOytHQS9qQlUseUJBQXlCO21IQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs7NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEdldFRlbmFudHNQYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbHVtbi1zY2hlbWEtdmlldy10ZW5hbnQtbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgVGVuYW50c1Blcm1pc3Npb25zLFxyXG4gIFVzZXJQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4uL21vZGVscy90ZW5hbnRzLXBlcm1pc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRQZXJtaXNzaW9uc01hcFNlcnZpY2UgfSBmcm9tICcuL3RlbmFudC1wZXJtaXNzaW9ucy1tYXAuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWQsXHJcbiAgQ3JlYXRlVGVuYW50UmVzcG9uc2UsXHJcbiAgR2V0VGVuYW50c1Jlc3BvbnNlLFxyXG4gIE5ld1RlbmFudEluZm8sXHJcbiAgVGVuYW50QmFzaWNJbmZvLFxyXG4gIFRlbmFudERldGFpbHNSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvdGVuYW50Lm1vZGVsJztcclxuaW1wb3J0IHsgQ2hlY2tib3hPcHRpb24sIFJhZGlvT3B0aW9uIH0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHtcclxuICBGZWF0dXJlSWQsXHJcbiAgRmVhdHVyZXMsXHJcbiAgR2V0RmVhdHVyZXNSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvZmVhdHVyZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEFwcFR5cGVDb25maWcsXHJcbiAgR2V0QXBwVHlwZXNSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvYXBwLXR5cGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgVGVuYW50UGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi90ZW5hbnQtcGVybWlzc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbmFudEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy90ZW5hbnQtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWQsXHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1Jlc3BvbnNlLFxyXG4gIEdldFJvbGVzUmVzcG9uc2UsXHJcbiAgUm9sZUluZm8sXHJcbiAgRGVsZXRlUm9sZVJlcXVlc3RQYXlsb2FkLFxyXG4gIERlbGV0ZVJvbGVSZXNwb25zZSxcclxuICBSb2xlLFxyXG4gIFJvbGVEZXRhaWxzLFxyXG4gIENyZWF0ZU1vZGlmeVJvbGVSZXF1ZXN0UGF5bG9hZCxcclxuICBDcmVhdGVNb2RpZnlSb2xlUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3JvbGVzLWFuZC1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgVXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWQsXHJcbiAgVXBkYXRlVGVuYW50U3RhdHVzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3VwZGF0ZS10ZW5hbnQtc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHZXRSb2xlVHlwZXNQYXlsb2FkLFxyXG4gIFJvbGVUeXBlQ29uZmlndXJhdGlvbixcclxuICBSb2xlVHlwZU9wdGlvbixcclxuICBSb2xlVHlwZVJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9yb2xlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBWaWV3R3JvdXBUeXBlUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMubW9kZWwnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVuYW50QXBwbGljYXRpb25zU2VydmljZSB7XHJcbiAgdGVuYW50c1RleHQgPSBzY3JlZW5UZXh0cz8udmlld1RlbmFudHM/LmVycm9ycztcclxuICBhcGlCYXNlVXJsITogc3RyaW5nO1xyXG4gIHVzZXJQZXJtaXNzaW9uITogVXNlclBlcm1pc3Npb25bXTtcclxuICBzZWxlY3RlZFRlbmFudEluZm8hOiBUZW5hbnRCYXNpY0luZm8gfCB1bmRlZmluZWQ7XHJcbiAgdXNlclRlbmFudHNQZXJtaXNzaW9ucyE6IFRlbmFudHNQZXJtaXNzaW9uc1tdO1xyXG4gIGNyZWF0ZVRlbmFudHNUZXh0ID0gc2NyZWVuVGV4dHM/LmNyZWF0ZVRlbmFudD8uZXJyb3JzO1xyXG4gIG5ld1RlbmFudEluZm8hOiBOZXdUZW5hbnRJbmZvO1xyXG4gIHRlbmFudEZ1bmN0aW9uVHlwZSE6IFRlbmFudEZ1bmN0aW9uVHlwZTtcclxuICByYWRpb09wdGlvbnM6IFJhZGlvT3B0aW9uW10gPSBbXTtcclxuICBjaGVja0JveE9wdGlvbnM6IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICBhcHBUeXBlSW5mbzogUmFkaW9PcHRpb25bXSA9IFtdO1xyXG4gIGZlYXR1cmVMaXN0OiBGZWF0dXJlc1tdID0gW107XHJcbiAgcm9sZVR5cGVPcHRpb25zOiBSb2xlVHlwZU9wdGlvbltdID0gW107XHJcbiAgbmV3bHlDcmVhdGVkUm9sZSE6IFJvbGVJbmZvO1xyXG4gIHJvbGVUeXBlT3B0aW9uITogUm9sZVR5cGVPcHRpb25bXTtcclxuICBzZWxlY3RlZFJvbGVJbmZvITogUm9sZURldGFpbHM7XHJcbiAgcm9sZXMhOiBSb2xlW107XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRlbmFudFBlcm1pc3Npb25zU2VydmljZTogVGVuYW50UGVybWlzc2lvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRlbmFudFBlcm1pc3Npb25zTWFwU2VydmljZTogVGVuYW50UGVybWlzc2lvbnNNYXBTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuICBzZXRBcHBDb25maWcoYXBpQmFzZVVybDogc3RyaW5nLCB1c2VyUGVybWlzc2lvbjogVXNlclBlcm1pc3Npb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVybDtcclxuICAgIHRoaXMudXNlclBlcm1pc3Npb24gPSB1c2VyUGVybWlzc2lvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGVuYW50IGRldGFpbHMgZnJvbSBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2VcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFRlbmFudERldGFpbHNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRUZW5hbnREZXRhaWxzKGFwcElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRlbmFudERldGFpbHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9hcHAvZGV0YWlscy8ke2FwcElkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdXNlciB0ZW5hbnRzIHBlcm1pc3Npb25zXHJcbiAgICogQHBhcmFtIHtUZW5hbnRzUGVybWlzc2lvbnNbXX0gVGVuYW50c1Blcm1pc3Npb25zXHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRVc2VyVGVuYW50c1Blcm1pc3Npb25zKHVzZXJUZW5hbnRzUGVybWlzc2lvbnM6IFRlbmFudHNQZXJtaXNzaW9uc1tdKSB7XHJcbiAgICB0aGlzLnVzZXJUZW5hbnRzUGVybWlzc2lvbnMgPSB1c2VyVGVuYW50c1Blcm1pc3Npb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB1c2VyIHRlbmFudHMgcGVybWlzc2lvbnNcclxuICAgKiBAcmV0dXJuIHtUZW5hbnRzUGVybWlzc2lvbnNbXX1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFVzZXJUZW5hbnRzUGVybWlzc2lvbnMoKTogVGVuYW50c1Blcm1pc3Npb25zW10ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclRlbmFudHNQZXJtaXNzaW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHVzZXIgdGVuYW50cyBpbmZvcm1hdGlvblxyXG4gICAqIEBwYXJhbSB7VGVuYW50QmFzaWNJbmZvfSB0ZW5hbnRJbmZvXHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZFRlbmFudEluZm9ybWF0aW9uKHRlbmFudEluZm86IFRlbmFudEJhc2ljSW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRlbmFudEluZm8gPSB0ZW5hbnRJbmZvO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0ZW5hbnRzIGluZm9ybWF0aW9uXHJcbiAgICogQHJldHVybiB7VGVuYW50QmFzaWNJbmZvfVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRUZW5hbnRJbmZvcm1hdGlvbigpOiBUZW5hbnRCYXNpY0luZm8gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSByb2xlcyBpbmZvcm1hdGlvbnNcclxuICAgKiBAcGFyYW0ge1JvbGV9IHJvbGVzXHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRSb2xlc0luZm8ocm9sZXM6IFJvbGVbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5yb2xlcyA9IHJvbGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSByb2xlcyBpbmZvcm1hdGlvblxyXG4gICAqIEByZXR1cm4ge1JvbGV9XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRSb2xlc0luZm8oKTogUm9sZVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJvbGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByb2xlIGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB7Um9sZURldGFpbHN9IHJvbGVJbmZvXHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZFJvbGVJbmZvcm1hdGlvbihyb2xlSW5mbzogUm9sZURldGFpbHMpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSW5mbyA9IHJvbGVJbmZvO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCByb2xlIGluZm9ybWF0aW9uLlxyXG4gICAqIEByZXR1cm4ge1JvbGVEZXRhaWxzfVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRSb2xlSW5mb3JtYXRpb24oKTogUm9sZURldGFpbHMgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb2xlSW5mbztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGVuYW50IHJvbGUgdHlwZSBvcHRpb25zLlxyXG4gICAqIEBwYXJhbSB7Um9sZVR5cGVPcHRpb259IHJvbGVUeXBlT3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0Um9sZVR5cGVPcHRpb24ocm9sZVR5cGVPcHRpb25zOiBSb2xlVHlwZU9wdGlvbltdKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvbGVUeXBlT3B0aW9uID0gcm9sZVR5cGVPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0ZW5hbnQgcm9sZSB0eXBlIG9wdGlvbnMuXHJcbiAgICogQHJldHVybiB7Um9sZVR5cGVPcHRpb259XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRSb2xlVHlwZU9wdGlvbigpOiBSb2xlVHlwZU9wdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLnJvbGVUeXBlT3B0aW9uO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIHR5cGUgaW5mb3JtYXRpb25cclxuICAgKiBAcGFyYW0ge1JhZGlvT3B0aW9ufSBhcHBUeXBlSW5mb1xyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0QXBwbGljYXRpb25UeXBlKGFwcFR5cGVJbmZvOiBSYWRpb09wdGlvbltdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcFR5cGVJbmZvID0gYXBwVHlwZUluZm87XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYXBwbGljYXRpb24gdHlwZSBpbmZvcm1hdGlvblxyXG4gICAqIEByZXR1cm4ge1JhZGlvT3B0aW9ufVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0QXBwbGljYXRpb25UeXBlKCk6IFJhZGlvT3B0aW9uW10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBwVHlwZUluZm87XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciBwZXJtaXNzaW9uc1xyXG4gICAqIEBwYXJhbSB1c2Vyc1Blcm1pc3Npb25zXHJcbiAgICogQHJldHVybnMgQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBmaWx0ZXJQZXJtaXNzaW9uKHVzZXJzUGVybWlzc2lvbnM6IFVzZXJQZXJtaXNzaW9uW10pOiBUZW5hbnRzUGVybWlzc2lvbnNbXSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRQZXJtaXNzaW9uc1NlcnZpY2U/LmZpbHRlclRlbmFudHNQZXJtaXNzaW9ucyhcclxuICAgICAgdXNlcnNQZXJtaXNzaW9ucyxcclxuICAgICAgdGhpcy50ZW5hbnRQZXJtaXNzaW9uc01hcFNlcnZpY2U/LmdldEdsb2JhbFRlbmFudHNQZXJtaXNzaW9ucygpXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBWYWxpZGF0aW5nIGFjY2VzcyBmb3IgdGVuYW50c1xyXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uVHlwZSBQZXJtaXNzaW9uIFR5cGUgdG8gdmFsaWRhdGUgcGVybWlzc2lvblxyXG4gICAqIEBwYXJhbSBtYXBwZWRVc2VyUGVybWlzc2lvbnMgUGVybWlzc2lvbiB3aGljaCBhcmUgbWFwcGVkIHdpdGggdGVuYW50c1xyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgcGVybWlzc2lvbiBpcyBncmFudGVkXHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MoXHJcbiAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUsXHJcbiAgICBwZXJtaXNzaW9uczogVGVuYW50c1Blcm1pc3Npb25zW11cclxuICApOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRlbmFudFBlcm1pc3Npb25zU2VydmljZS52YWxpZGF0ZUFjY2Vzc1Blcm1pc3Npb24oXHJcbiAgICAgIHBlcm1pc3Npb25UeXBlLFxyXG4gICAgICBwZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdGVuYW50cy5cclxuICAgKiBAcGFyYW0ge0dldFRlbmFudHNQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRUZW5hbnRzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0VGVuYW50c0xpc3QocGF5bG9hZDogR2V0VGVuYW50c1BheWxvYWQpOiBPYnNlcnZhYmxlPEdldFRlbmFudHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvYXBwL2NvbmZpZ2AsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBsaXN0IG9mIGZlYXR1cmVzIGZyb20gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0RmVhdHVyZXNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRGZWF0dXJlcygpOiBPYnNlcnZhYmxlPEdldEZlYXR1cmVzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvYXBwL2ZlYXR1cmVzYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIGxpc3Qgb2Ygcm9sZXMgZnJvbSBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcElkXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPEdldFJvbGVzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Um9sZXMoYXBwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8R2V0Um9sZXNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9sZS8ke2FwcElkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBsaXN0IG9mIHJvbGVzIGFuZCBwZXJtaXNzaW9ucyBtYXBwaW5ncyBmcm9tIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwSWRcclxuICAgKiBAcGFyYW0ge0dldFJvbGVzQW5kUGVybWlzc2lvbnNQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPEdldFJvbGVzQW5kUGVybWlzc2lvbnNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRSb2xlc0FuZFBlcm1pc3Npb25zTWFwcGluZ3MoXHJcbiAgICBhcHBJZDogc3RyaW5nLFxyXG4gICAgcGF5bG9hZDogR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEdldFJvbGVzQW5kUGVybWlzc2lvbnNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3JvbGVCYXNlZFBlcm1pc3Npb25zLyR7YXBwSWR9YCxcclxuICAgICAgICBwYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIGxpc3Qgb2YgYXBwbGljYXRpb24gdHlwZXMgZnJvbSBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRBcHBUeXBlc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEFwcGxpY2F0aW9uVHlwZXMoKTogT2JzZXJ2YWJsZTxHZXRBcHBUeXBlc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2NvbmZpZy9hcHBfdHlwZWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUG9zdHMgY3JlYXRlIHJvbGUgZm9ybSBkYXRhIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZSB0byBjcmVhdGUgYSBuZXcgcm9sZS5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZU1vZGlmeVJvbGVSZXF1ZXN0UGF5bG9hZH0gY3JlYXRlTW9kaWZ5Um9sZVBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENyZWF0ZU1vZGlmeVJvbGVSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBjcmVhdGVSb2xlKFxyXG4gICAgY3JlYXRlTW9kaWZ5Um9sZVBheWxvYWQ6IENyZWF0ZU1vZGlmeVJvbGVSZXF1ZXN0UGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlTW9kaWZ5Um9sZVJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9sZWAsIGNyZWF0ZU1vZGlmeVJvbGVQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFBvc3RzIHRoZSBlZGl0ZWQgcm9sZSBmb3JtIGRhdGEgdG8gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlIGZvciB1cGRhdGluZyB0aGUgcm9sZSBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZU1vZGlmeVJvbGVSZXF1ZXN0UGF5bG9hZH0gY3JlYXRlTW9kaWZ5Um9sZVBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENyZWF0ZU1vZGlmeVJvbGVSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2VcclxuICAgKi9cclxuICBlZGl0Um9sZShcclxuICAgIGNyZWF0ZU1vZGlmeVJvbGVQYXlsb2FkOiBDcmVhdGVNb2RpZnlSb2xlUmVxdWVzdFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZU1vZGlmeVJvbGVSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9sZWAsIGNyZWF0ZU1vZGlmeVJvbGVQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGxpc3Qgb2Ygcm9sZSB0eXBlcyBmcm9tIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0ge0dldFJvbGVUeXBlc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFJvbGVUeXBlUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Um9sZVR5cGVzKHBheWxvYWQ6IEdldFJvbGVUeXBlc1BheWxvYWQpOiBPYnNlcnZhYmxlPFJvbGVUeXBlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2NvbmZpZy9jb25maWdGaWVsZGAsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc2VsZWN0L2Ryb3Bkb3duIG9wdGlvbnMgZnJvbSB0aGUgcm9sZSB0eXBlcyByZWNlaXZlZCBmcm9tIHNlcnZlci5cclxuICAgKiBAcGFyYW0ge1JvbGVUeXBlQ29uZmlndXJhdGlvbltdfSByb2xlVHlwZVJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7Um9sZVR5cGVPcHRpb25bXX1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFJvbGVUeXBlT3B0aW9ucyhcclxuICAgIHJvbGVUeXBlUmVzcG9uc2U6IFJvbGVUeXBlQ29uZmlndXJhdGlvbltdXHJcbiAgKTogUm9sZVR5cGVPcHRpb25bXSB7XHJcbiAgICB0aGlzLnJvbGVUeXBlT3B0aW9ucyA9IFtdO1xyXG4gICAgcm9sZVR5cGVSZXNwb25zZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZVR5cGVPcHRpb25zPy5wdXNoKHtcclxuICAgICAgICBpZDogaXRlbT8uY29uZmlnRmllbGRJZCxcclxuICAgICAgICBuYW1lOiBpdGVtPy5jb25maWdGaWVsZFZhbHVlPy5yb2xlVHlwZU5hbWUsXHJcbiAgICAgICAgb3JkZXI6IGl0ZW0/LmNvbmZpZ0ZpZWxkVmFsdWU/LnZpZXdPcmRlcixcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm9sZVR5cGVPcHRpb25zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcclxuICAgIHJldHVybiB0aGlzLnJvbGVUeXBlT3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc3RzIHRlbmFudCBhcHBsaWNhdGlvbiBmb3JtIGRhdGEgdG8gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlIGZvciBjcmVhdGluZyBuZXcgdGVuYW50IGFwcGxpY2F0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlVGVuYW50UGF5bG9hZH0gY3JlYXRlVGVuYW50UGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q3JlYXRlVGVuYW50UmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgY3JlYXRlVGVuYW50KFxyXG4gICAgY3JlYXRlVGVuYW50UGF5bG9hZDogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZVRlbmFudFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9hcHAvY3JlYXRlVGVuYW50YCxcclxuICAgICAgICBjcmVhdGVUZW5hbnRQYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgY2hlY2tib3ggb3B0aW9ucyBmcm9tIGZlYXR1cmVzIGxpc3QgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtGZWF0dXJlc0xpc3RbXX0gZmVhdHVyZXNcclxuICAgKiBAcmV0dXJucyB7Q2hlY2tib3hPcHRpb25bXX1cclxuICAgKi9cclxuICBnZXRGZWF0dXJlT3B0aW9ucyhmZWF0dXJlczogRmVhdHVyZXNbXSk6IENoZWNrYm94T3B0aW9uW10ge1xyXG4gICAgdGhpcy5jaGVja0JveE9wdGlvbnMgPSBbXTtcclxuICAgIGZlYXR1cmVzPy5mb3JFYWNoKChmZWF0dXJlOiBGZWF0dXJlcykgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrQm94T3B0aW9ucz8ucHVzaCh7XHJcbiAgICAgICAgaWQ6IGZlYXR1cmU/LmZlYXR1cmVJZCxcclxuICAgICAgICBuYW1lOiBmZWF0dXJlPy5mZWF0dXJlTmFtZSxcclxuICAgICAgICBjaGVja2VkOiBmZWF0dXJlPy5pc0RlZmF1bHQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZlYXR1cmU/LmlzRGVmYXVsdCxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrQm94T3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgcmFkaW8gb3B0aW9ucyBmcm9tIGFwcGxpY2F0aW9uIHR5cGVzIGZyb20gc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7QXBwVHlwZUNvbmZpZ1tdfSBhcHBUeXBlT3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIHtSYWRpb09wdGlvbltdfVxyXG4gICAqL1xyXG4gIGdldEFwcGxpY2F0aW9uVHlwZU9wdGlvbnMoYXBwVHlwZU9wdGlvbnM6IEFwcFR5cGVDb25maWdbXSk6IFJhZGlvT3B0aW9uW10ge1xyXG4gICAgdGhpcy5yYWRpb09wdGlvbnMgPSBbXTtcclxuICAgIGFwcFR5cGVPcHRpb25zPy5mb3JFYWNoKChhcHBUeXBlOiBBcHBUeXBlQ29uZmlnKSA9PiB7XHJcbiAgICAgIHRoaXMucmFkaW9PcHRpb25zPy5wdXNoKHtcclxuICAgICAgICBpZDogYXBwVHlwZT8uY29uZmlnRmllbGRJZCxcclxuICAgICAgICBsYWJlbDogYXBwVHlwZT8uY29uZmlnRmllbGRWYWx1ZT8udHlwZSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLnJhZGlvT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMgaWQncy5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9uW119IGZlYXR1cmVPcHRpb25zXHJcbiAgICogQHJldHVybnMge0ZlYXR1cmVJZFtdfVxyXG4gICAqL1xyXG4gIGdldEZlYXR1cmVJZHMoZmVhdHVyZU9wdGlvbnM6IENoZWNrYm94T3B0aW9uW10pOiBGZWF0dXJlSWRbXSB7XHJcbiAgICBjb25zdCBmZWF0dXJlSWRzOiBGZWF0dXJlSWRbXSA9IFtdO1xyXG4gICAgZmVhdHVyZU9wdGlvbnM/LmZvckVhY2goKGZlYXR1cmVPcHRpb246IENoZWNrYm94T3B0aW9uKSA9PiB7XHJcbiAgICAgIGlmIChmZWF0dXJlT3B0aW9uPy5jaGVja2VkKSB7XHJcbiAgICAgICAgZmVhdHVyZUlkcy5wdXNoKHtcclxuICAgICAgICAgIGZlYXR1cmVJZDogZmVhdHVyZU9wdGlvbi5pZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZlYXR1cmVJZHM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIG5ld2x5IGNyZWF0ZWQgdGVuYW50IGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB7TmV3VGVuYW50SW5mb30gbmV3VGVuYW50SW5mb1xyXG4gICAqL1xyXG4gIHNldE5ld1RlbmFudEluZm8obmV3VGVuYW50SW5mbzogTmV3VGVuYW50SW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5uZXdUZW5hbnRJbmZvID0gbmV3VGVuYW50SW5mbztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbmV3bHkgY3JlYXRlZCB0ZW5hbnQgaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0IGdldE5ld1RlbmFudEluZm8oKTogTmV3VGVuYW50SW5mbyB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdUZW5hbnRJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcGFyYW0ge1RlbmFudEZ1bmN0aW9uVHlwZX0gdGVuYW50RnVuY3Rpb25UeXBlIC10ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKi9cclxuICBzZXRUZW5hbnRGdW5jdGlvblR5cGUodGVuYW50RnVuY3Rpb25UeXBlOiBUZW5hbnRGdW5jdGlvblR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID0gdGVuYW50RnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcmV0dXJuIHtUZW5hbnRGdW5jdGlvblR5cGV9IC10ZW5hbnQgZnVuY3Rpb24gdHlwZS5cclxuICAgKi9cclxuICBnZXRUZW5hbnRGdW5jdGlvblR5cGUoKTogVGVuYW50RnVuY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU3RvcmVzIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24uXHJcbiAgICogQHBhcmFtIHtSb2xlSW5mb30gbmV3bHlDcmVhdGVkUm9sZSAtY3JlYXRlIHJvbGUgaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgc2V0TmV3bHlDcmVhdGVkUm9sZUluZm8obmV3bHlDcmVhdGVkUm9sZTogUm9sZUluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMubmV3bHlDcmVhdGVkUm9sZSA9IG5ld2x5Q3JlYXRlZFJvbGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbi5cclxuICAgKiBAcmV0dXJuIHtSb2xlSW5mb30gLWNyZWF0ZSByb2xlIGluZm9ybWF0aW9uLlxyXG4gICAqL1xyXG4gIGdldE5ld2x5Q3JlYXRlZFJvbGVJbmZvKCk6IFJvbGVJbmZvIHtcclxuICAgIHJldHVybiB0aGlzLm5ld2x5Q3JlYXRlZFJvbGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3N0cyB0aGUgZWRpdGVkIHRlbmFudCBhcHBsaWNhdGlvbiBmb3JtIGRhdGEgdG8gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlIGZvciB1cGRhdGluZyB0aGUgdGVuYW50IGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlVGVuYW50UGF5bG9hZH0gZWRpdFRlbmFudFBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENyZWF0ZVRlbmFudFJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGVkaXRUZW5hbnQoXHJcbiAgICBlZGl0VGVuYW50UGF5bG9hZDogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZVRlbmFudFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2FwcC9lZGl0VGVuYW50YCxcclxuICAgICAgICBlZGl0VGVuYW50UGF5bG9hZFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VuZHMgdXBkYXRlIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB0byB1cGRhdGUgdGhlIHRlbmFudCBhcHBsaWNhdGlvbiBzdGF0dXMgdG8gYWN0aXZlL2luYWN0aXZlIHVzaW5nIEh0dHBTZXJ2aWNlIGFuZCByZXR1cm5zIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgcmVzcG9uc2UuXHJcbiAgICogQHBhcmFtIHtVcGRhdGVUZW5hbnRTdGF0dXNSZXF1ZXN0UGF5bG9hZH0gdXBkYXRlVGVuYW50U3RhdHVzUGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8VXBkYXRlVGVuYW50U3RhdHVzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgdXBkYXRlVGVuYW50U3RhdHVzKFxyXG4gICAgdXBkYXRlVGVuYW50U3RhdHVzUGF5bG9hZDogVXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPFVwZGF0ZVRlbmFudFN0YXR1c1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2FwcC91cGRhdGVTdGF0dXNgLFxyXG4gICAgICAgIHVwZGF0ZVRlbmFudFN0YXR1c1BheWxvYWRcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEl0IGdlbmVyYXRlcyBGZWF0dXJlIGxpc3QgZnJvbSBjaGVja2JveCBvcHRpb25zIGdlbmVyYXRlZCBpbiBmb3JtIGFycmF5LlxyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb25bXX0gZmVhdHVyZXNcclxuICAgKiBAcmV0dXJuIHtGZWF0dXJlc1tdfVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RmVhdHVyZXNMaXN0KGZlYXR1cmVzOiBDaGVja2JveE9wdGlvbltdKTogRmVhdHVyZXNbXSB7XHJcbiAgICB0aGlzLmZlYXR1cmVMaXN0ID0gW107XHJcbiAgICBmZWF0dXJlcz8uZm9yRWFjaCgoZmVhdHVyZTogQ2hlY2tib3hPcHRpb24pID0+IHtcclxuICAgICAgaWYgKGZlYXR1cmUuY2hlY2tlZClcclxuICAgICAgICB0aGlzLmZlYXR1cmVMaXN0Py5wdXNoKHtcclxuICAgICAgICAgIGZlYXR1cmVJZDogZmVhdHVyZT8uaWQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgZmVhdHVyZU5hbWU6IGZlYXR1cmU/Lm5hbWUgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgaXNEZWZhdWx0OiBmZWF0dXJlPy5jaGVja2VkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5mZWF0dXJlTGlzdDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBzb3J0ZWQgcm9sZSBsaXN0IGRhdGEuXHJcbiAgICogQHBhcmFtIHtSb2xlW119IHJvbGVMaXN0XHJcbiAgICogQHJldHVybiB7Um9sZVtdfVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc29ydFJvbGVzQnlSb2xlVHlwZShyb2xlTGlzdDogUm9sZVtdKTogUm9sZVtdIHtcclxuICAgIHJldHVybiByb2xlTGlzdC5zb3J0KChhLCBiKSA9PiBhPy52aWV3T3JkZXIgLSBiPy52aWV3T3JkZXIpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBQb3N0cyB0aGUgcm9sZSBkZXRhaWxzIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZSBmb3IgZGVsZXRpbmcgdGhlIHJvbGUuXHJcbiAgICogQHBhcmFtIHtEZWxldGVSb2xlUmVxdWVzdFBheWxvYWR9IGRlbGV0ZVJvbGVSZXF1ZXN0UGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RGVsZXRlUm9sZVJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgVGVuYW50QXBwbGljYXRpb25zU2VydmljZVxyXG4gICAqL1xyXG4gIGRlbGV0ZVJvbGUoXHJcbiAgICBkZWxldGVSb2xlUGF5bG9hZDogRGVsZXRlUm9sZVJlcXVlc3RQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxEZWxldGVSb2xlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3JvbGUvZGVsZXRlUm9sZWAsIGRlbGV0ZVJvbGVQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgZ3JvdXAgdHlwZXMgZnJvbSBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcElkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxWaWV3R3JvdXBUeXBlUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlcyhhcHBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxWaWV3R3JvdXBUeXBlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvY29uZmlnL2FwcEdyb3VwVHlwZURldGFpbHMvJHthcHBJZH1gXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -7,6 +7,7 @@ export * from './lib/components/create-tenant-application/create-tenant-applicat
|
|
|
7
7
|
export * from './lib/tenant-applications.component';
|
|
8
8
|
export * from './lib/components/tenant-basic-details/tenant-basic-details.component';
|
|
9
9
|
export * from './lib/components/create-modify-role/create-modify-role.component';
|
|
10
|
+
export * from './lib/components/view-tenant-group-types/view-tenant-group-types.component';
|
|
10
11
|
export * from './lib/models/app-type-config.model';
|
|
11
12
|
export * from './lib/models/app-type.model';
|
|
12
13
|
export * from './lib/models/tenant.model';
|
|
@@ -21,10 +22,11 @@ export * from './lib/models/update-tenant-status.model';
|
|
|
21
22
|
export * from './lib/models/tenant-function-type.model';
|
|
22
23
|
export * from './lib/models/role-type.model';
|
|
23
24
|
export * from './lib/models/role-menu-action.model';
|
|
25
|
+
export * from './lib/models/view-tenant-group-types.model';
|
|
24
26
|
export * from './lib/services/tenant-applications.service';
|
|
25
27
|
export * from './lib/services/tenant-permissions-map.service';
|
|
26
28
|
export * from './lib/services/tenant-permissions.service';
|
|
27
29
|
export * from './lib/assets/tenant-validations';
|
|
28
30
|
export * from './lib/tenant-applications.module';
|
|
29
31
|
export * from './lib/models/feature-permission-id.model';
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RlbmFudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyxnRkFBZ0YsQ0FBQztBQUMvRixjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLDRFQUE0RSxDQUFDO0FBRTNGLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDRDQUE0QyxDQUFDO0FBRTNELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBDQUEwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRlbmFudHNcclxuICovXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmlldy10ZW5hbnRzLWxpc3Qvdmlldy10ZW5hbnRzLWxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92aWV3LXRlbmFudC1kZXRhaWxzL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVuYW50LWFwcGxpY2F0aW9ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RlbmFudC1iYXNpYy1kZXRhaWxzL3RlbmFudC1iYXNpYy1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1yb2xlL2NyZWF0ZS1tb2RpZnktcm9sZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZpZXctdGVuYW50LWdyb3VwLXR5cGVzL3ZpZXctdGVuYW50LWdyb3VwLXR5cGVzLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvYXBwLXR5cGUtY29uZmlnLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2FwcC10eXBlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3RlbmFudC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9mZWF0dXJlcy5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvdGVuYW50cy1wZXJtaXNzaW9uLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3JvdXRlLWNvbmZpZy5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy90YWJsZS1jb2x1bW4tc2NoZW1hLXZpZXctdGVuYW50LWxpc3QubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcm9sZXMtYW5kLXBlcm1pc3Npb25zLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3VwZGF0ZS10ZW5hbnQtc3RhdHVzLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3RlbmFudC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3JvbGUtdHlwZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9yb2xlLW1lbnUtYWN0aW9uLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3ZpZXctdGVuYW50LWdyb3VwLXR5cGVzLm1vZGVsJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RlbmFudC1hcHBsaWNhdGlvbnMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RlbmFudC1wZXJtaXNzaW9ucy1tYXAuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RlbmFudC1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fzc2V0cy90ZW5hbnQtdmFsaWRhdGlvbnMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVuYW50LWFwcGxpY2F0aW9ucy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZmVhdHVyZS1wZXJtaXNzaW9uLWlkLm1vZGVsJztcclxuIl19
|