nuxeo-development-framework 3.9.6 → 3.9.8
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/bundles/nuxeo-development-framework.umd.js +38 -31
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +23 -20
- package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +4 -2
- package/esm2015/lib/components/notifications/services/notifications.service.js +11 -11
- package/fesm2015/nuxeo-development-framework.js +35 -30
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/dynamic-view/data-viewer/data-viewer.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -211,7 +211,7 @@ export class DynamicChartComponent {
|
|
|
211
211
|
if (this.tenantId) {
|
|
212
212
|
params['queryParams'] = `${this.tenantId}`;
|
|
213
213
|
}
|
|
214
|
-
if (this.
|
|
214
|
+
if (this.asigneeDepartments) {
|
|
215
215
|
params['assignment_department_1'] = JSON.stringify(this.asigneeDepartments);
|
|
216
216
|
}
|
|
217
217
|
return this.callApi
|
|
@@ -244,34 +244,37 @@ export class DynamicChartComponent {
|
|
|
244
244
|
let secrecy;
|
|
245
245
|
let depCode;
|
|
246
246
|
let departmentName;
|
|
247
|
-
let
|
|
247
|
+
let direction;
|
|
248
|
+
let restPrefix;
|
|
248
249
|
let myPrifx = `tenant_${this.tenantId}_cts_`;
|
|
249
250
|
if (item.fetchedKey['entity-type'] == 'group') {
|
|
250
|
-
|
|
251
|
+
restPrefix = item.key.replace(myPrifx, '');
|
|
251
252
|
groupSplit = restPrefix.split('_');
|
|
252
253
|
if (restPrefix.includes('Top_Secret')) {
|
|
253
254
|
secrecy = this.translationService.instant('vocabulary.VOC_SecrecyLevel.Top_Secret');
|
|
254
|
-
depCode = groupSplit[groupSplit.length -
|
|
255
|
-
let
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
255
|
+
depCode = groupSplit[groupSplit.length - 3];
|
|
256
|
+
let dirExtracted = groupSplit[0];
|
|
257
|
+
direction = this.translationService.instant(dirExtracted[0].toUpperCase() + dirExtracted.substr(1).toLowerCase());
|
|
258
|
+
this.departmentApiService.getDepartmentDetails(depCode).subscribe(res => {
|
|
259
|
+
var _a, _b;
|
|
260
|
+
departmentName = this.isArabic
|
|
261
|
+
? (_a = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _a === void 0 ? void 0 : _a.properties['dept:arabicName']
|
|
262
|
+
: (_b = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _b === void 0 ? void 0 : _b.properties['dept:englishName'];
|
|
263
|
+
});
|
|
262
264
|
}
|
|
263
265
|
else {
|
|
264
266
|
secrecy = this.translationService.instant('vocabulary.VOC_SecrecyLevel.' + groupSplit[groupSplit.length - 1]);
|
|
265
267
|
depCode = groupSplit[groupSplit.length - 2];
|
|
266
|
-
let
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
268
|
+
let dirExtracted = groupSplit[0];
|
|
269
|
+
direction = this.translationService.instant(dirExtracted[0].toUpperCase() + dirExtracted.substr(1).toLowerCase());
|
|
270
|
+
this.departmentApiService.getDepartmentDetails(depCode).subscribe(res => {
|
|
271
|
+
var _a, _b;
|
|
272
|
+
departmentName = this.isArabic
|
|
273
|
+
? (_a = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _a === void 0 ? void 0 : _a.properties['dept:arabicName']
|
|
274
|
+
: (_b = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _b === void 0 ? void 0 : _b.properties['dept:englishName'];
|
|
275
|
+
});
|
|
273
276
|
}
|
|
274
|
-
label =
|
|
277
|
+
label = this.aggregations == 'assignment_department_agg' ? departmentName + '-' + secrecy : departmentName + ' ' + direction + '-' + secrecy;
|
|
275
278
|
}
|
|
276
279
|
else {
|
|
277
280
|
label = item.fetchedKey.fullName;
|
|
@@ -534,4 +537,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
534
537
|
}], isInternalActive: [{
|
|
535
538
|
type: Input
|
|
536
539
|
}] } });
|
|
537
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtY2hhcnQvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0L2R5bmFtaWMtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBYyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFHL0IsY0FBYztBQU1kLE1BQU0sT0FBTyxxQkFBcUI7SUEwRWhDLFlBQ1MsU0FBMkIsRUFDM0IsY0FBaUMsRUFDaEMsT0FBdUIsRUFBVSxNQUFjLEVBQ2hELFNBQTJCLEVBQzFCLGtCQUFxQyxFQUNyQyxvQkFBeUM7UUFMMUMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2hDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1B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QVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFTixhQUFhO3NCQURaLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBY04sV0FBVztzQkFEVixLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSztnQkFHTixlQUFlO3NCQURkLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFHTixHQUFHO3NCQURGLEtBQUs7Z0JBR04sR0FBRztzQkFERixLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gXCJjaGFydC5qc1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBDYWxsQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2NhbGxBcGkvY2FsbC1hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDaGFydERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2NoYXJ0LWRhdGEuc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCAnY2hhcnRqcy1wbHVnaW4tcGllY2hhcnQtb3V0bGFiZWxzJztcclxuaW1wb3J0ICdjaGFydGpzLXBsdWdpbi1sYWJlbHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlcGFydG1lbnRBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50L3NlcnZpY2VzL2RlcGFydG1lbnQtYXBpLnNlcnZpY2VcIjtcclxuLyoqIEBpZ25vcmUgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY3RzLWR5bmFtaWMtY2hhcnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtY2hhcnQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1jaGFydC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3JldmVudWVMaW5lQ2hhcnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgY2hhcnQ6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KClcclxuICBwcmVmaXggPSAnU1RBVFMuJzsgLy8gZm9yIHRyYW5zbGF0aW9uXHJcbiAgQElucHV0KClcclxuICBjaGFydFR5cGU7IC8vIGZ1bmN0aW9ucyBleGlzdCBpbnNpZGUgQ2hhcnREYXRhU2VydmljZVxyXG4gIEBJbnB1dCgpIHJhbmRvbUNvbG9yczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgY2hhcnRPYmo7XHJcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBjcmVhdENoYXJ0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIEBJbnB1dCgpIHBhZ2VQcm92aWRlcjsgLy8gZGVmaW5lIGFwaSB0byBnZXQgdGhlIGRhdGEgZnJvbVxyXG4gIEBJbnB1dCgpIGhlYWRlcnMgPSB7fTsgLy8gaGVhZGVycyBpbiBjb25zdGFudHNcclxuICBASW5wdXQoKSBvYnNlcnZhYmxlOyAvLyBvYnNlcnZhYmxlIGluIGNhc2Ugb2YgY2FsbCBhcGkgaXMgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50XHJcbiAgQElucHV0KCkgYWdncmVnYXRpb25zO1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVycztcclxuICBASW5wdXQoKSBzeXN0ZW1DdXJyZW50TGlmZUN5Y2xlU3RhdGU7XHJcbiAgQElucHV0KCkgcmFuZ2UgPSAnW1wiZnJvbV9ub3ctN2RfdG9fbm93XCJdJztcclxuICBASW5wdXQoKSBsYWJlbDtcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkUmFuZ2UgPSBcIndlZWtcIjsgLy8gcmFuZ2UgdG8gYmUgZmlsdGVyZCBvblxyXG4gIEBJbnB1dCgpIHRlbmFudElkOyAvLyB3aWxsIGJlIHNlbnQgb25seSBpbiBjYXNlIG9mIG11bHRpIHRlbmFudFxyXG4gIEBJbnB1dCgpIGNvbG9yczogYW55ID0ge1xyXG4gICAgaW5Qcm9ncmVzczogJyMzYzNjZjAnLFxyXG4gICAgcmVnaXN0ZXJlZDogJyM1YTE0OTYnLFxyXG4gICAgZHJhZnQ6ICcjNTk2OTczJyxcclxuICAgIGFyY2hpdmVkOiAnI2ZiYjYyYycsXHJcbiAgICBjbG9zZWQ6ICcjMDBkY2E1JyxcclxuICAgIGFzc2lnbmVkOiAnI2ZkNjY3MCcsXHJcbiAgICB1bmRlZmluZWQ6ICcjZjdmOGY5JyxcclxuICAgIG90aGVyOiAnI2YxNzIwNScsXHJcbiAgfTtcclxuICBkYXRhOiBhbnkgPSBbXTtcclxuICBpc0ZldGNoaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hhcnRzOiBbXTtcclxuICBASW5wdXQoKVxyXG4gIHJhbmRvbUNvbG9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBmZXRjaGVkS2V5O1xyXG4gIEBJbnB1dCgpXHJcbiAgcGFnZVByb3ZpZGVyVHdvO1xyXG4gIEBJbnB1dCgpXHJcbiAgcXVpY2tGaWx0ZXJUd287XHJcbiAgQElucHV0KClcclxuICBxdWlja0ZpbHRlclRocmVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgY29tYmluZWREYXRhID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBzdGF0dXNPbmU7XHJcbiAgQElucHV0KClcclxuICBzdGF0dXNUd287XHJcbiAgQElucHV0KClcclxuICBzdGF0dXNUaHJlZTtcclxuICBASW5wdXQoKVxyXG4gIG1pbjtcclxuICBASW5wdXQoKVxyXG4gIG1heDtcclxuICBASW5wdXQoKVxyXG4gIHdpZHRoO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0O1xyXG4gIEBJbnB1dCgpXHJcbiAgY2FyZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2FyZFRpdGxlID0gJyc7XHJcbiAgQElucHV0KClcclxuICBpbnB1dENoYXJ0RGF0YTtcclxuICBASW5wdXQoKVxyXG4gIGFzaWduZWVEZXBhcnRtZW50cztcclxuICBASW5wdXQoKVxyXG4gIG5vRmV0Y2hlZEtleSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBpc0ludGVybmFsQWN0aXZlID0gZmFsc2U7IC8vIHVzZWQgdG8gY29udHJvbCBvbiBzaG93aW5nIHJlc3VsdHMgb2YgaW50ZXJuYWwgY29yZXNwIHJlc3VsdHMgaW4gY2hhcnRzXHJcbiAgbXlEYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgaXNBcmFiaWM7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgY2FsbEFwaTogQ2FsbEFwaVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgY2hhcnREYXRhOiBDaGFydERhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6VHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZXBhcnRtZW50QXBpU2VydmljZTpEZXBhcnRtZW50QXBpU2VydmljZSxcclxuICApIHtcclxuICAgIENoYXJ0LmRlZmF1bHRzLmdsb2JhbC5kZWZhdWx0Rm9udEZhbWlseSA9IFwiRlMgQWxiZXJ0IEFyYWJpYyBXZWJcIjtcclxuICAgIENoYXJ0LmRlZmF1bHRzLmdsb2JhbC5kZWZhdWx0Rm9udFNpemUgPSAxMztcclxuICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3JlYXRDaGFydC5uZXh0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBcclxuICB9XHJcbiAgY3JlYXRlQ2hhcnQoKSB7XHJcbiAgICB0aGlzLmNyZWF0Q2hhcnQucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgdGhpcy5nZXREYXRhKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBsZXQgcmFuZG9tQ29sb3JzID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMucmFuZG9tQ29sb3JzKSB7XHJcbiAgICAgICAgICBkYXRhLmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICByYW5kb21Db2xvcnNbaXRlbS5sYWJlbF0gPSB0aGlzLnN0cmluZ1RvSHNsQ29sb3IoXHJcbiAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAgIDQwLFxyXG4gICAgICAgICAgICAgIDcwXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb2xvcnMgPSB0aGlzLnJhbmRvbUNvbG9ycyA/IHJhbmRvbUNvbG9ycyA6IHRoaXMuY29sb3JzO1xyXG4gICAgICAgIGNvbnN0IHsgb3B0aW9ucywgY2hhcnREYXRhIH0gPSB0aGlzLmNoYXJ0RGF0YVt0aGlzLmNoYXJ0VHlwZV0oe1xyXG4gICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgIGNvbG9yczogdGhpcy5jb2xvcnMsXHJcbiAgICAgICAgICBwcmVmaXg6IHRoaXMucHJlZml4LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChkYXRhLmRhdGE/Lmxlbmd0aCB8fCBkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoYXJ0T2JqKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuY2hhcnQubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgICB0aGlzLmNoYXJ0T2JqID0gbmV3IENoYXJ0KGN0eCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNoYXJ0T2JqLmNoYXJ0LmRhdGEgPSBjaGFydERhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhcnRPYmoudXBkYXRlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGNvbnN0IGN0eCA9IHRoaXMuY2hhcnQubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgLy8gbGV0IG5vT3B0aW9ucyA9IHtcclxuICAgICAgICAgIC8vICAgdHlwZTogb3B0aW9ucy50eXBlLFxyXG4gICAgICAgICAgLy8gICBkYXRhOiB7XHJcbiAgICAgICAgICAvLyAgICAgZGF0YXNldHM6IFtdLFxyXG4gICAgICAgICAgLy8gICB9LFxyXG4gICAgICAgICAgLy8gICBvcHRpb25zOiB7fSxcclxuICAgICAgICAgIC8vIH07XHJcbiAgICAgICAgICAvLyB0aGlzLmNoYXJ0T2JqID0gbmV3IENoYXJ0KGN0eCwgbm9PcHRpb25zKTtcclxuICAgICAgICAgIC8vIHRoaXMuY2hhcnRPYmouY2hhcnQuZGF0YSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY3JlYXRlQ2hhcnRXaXRob3V0UFAoKSB7XHJcbiAgICB0aGlzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jcmVhdENoYXJ0LnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuaW5wdXRDaGFydERhdGE7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBsZXQgcmFuZG9tQ29sb3JzID0ge307XHJcbiAgICAgIGlmICh0aGlzLnJhbmRvbUNvbG9ycykge1xyXG4gICAgICAgIHRoaXMuZGF0YS5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJhbmRvbUNvbG9yc1tpdGVtLmxhYmVsXSA9IHRoaXMuc3RyaW5nVG9Ic2xDb2xvcihcclxuICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICA0MCxcclxuICAgICAgICAgICAgNzBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb2xvcnMgPSB0aGlzLnJhbmRvbUNvbG9ycyA/IHJhbmRvbUNvbG9ycyA6IHRoaXMuY29sb3JzO1xyXG4gICAgICBjb25zdCB7IG9wdGlvbnMsIGNoYXJ0RGF0YSB9ID0gdGhpcy5jaGFydERhdGFbdGhpcy5jaGFydFR5cGVdKHtcclxuICAgICAgICBkYXRhOiB0aGlzLmRhdGEsXHJcbiAgICAgICAgY29sb3JzOiB0aGlzLmNvbG9ycyxcclxuICAgICAgICBwcmVmaXg6IHRoaXMucHJlZml4LFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5kYXRhPy5sZW5ndGggfHwgdGhpcy5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jaGFydE9iaikge1xyXG4gICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5jaGFydC5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0T2JqID0gbmV3IENoYXJ0KGN0eCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jaGFydE9iai5jaGFydC5kYXRhID0gY2hhcnREYXRhO1xyXG4gICAgICAgICAgdGhpcy5jaGFydE9iai51cGRhdGUoKTtcclxuICAgICAgICAgIHRoaXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgLy8gY29uc3QgY3R4ID0gdGhpcy5jaGFydC5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgLy8gbGV0IG5vT3B0aW9ucyA9IHtcclxuICAgICAgICAvLyAgIHR5cGU6IG9wdGlvbnMudHlwZSxcclxuICAgICAgICAvLyAgIGRhdGE6IHtcclxuICAgICAgICAvLyAgICAgZGF0YXNldHM6IFtdLFxyXG4gICAgICAgIC8vICAgfSxcclxuICAgICAgICAvLyAgIG9wdGlvbnM6IHt9LFxyXG4gICAgICAgIC8vIH07XHJcbiAgICAgICAgLy8gdGhpcy5jaGFydE9iaiA9IG5ldyBDaGFydChjdHgsIG5vT3B0aW9ucyk7XHJcbiAgICAgICAgLy8gdGhpcy5jaGFydE9iai5jaGFydC5kYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU3RhdHMoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dENoYXJ0RGF0YSkge1xyXG4gICAgICB0aGlzLmNyZWF0ZUNoYXJ0V2l0aG91dFBQKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZUNoYXJ0KCk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYy5zdWJzY3JpYmUocmVzID0+e1xyXG4gICAgICB0aGlzLmlzQXJhYmljID0gcmVzO1xyXG4gICAgfSlcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pbnB1dENoYXJ0RGF0YSkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQ2hhcnRXaXRob3V0UFAoKTtcclxuICAgICAgICB0aGlzLmNyZWF0Q2hhcnQubmV4dCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQ2hhcnQoKTtcclxuICAgICAgICB0aGlzLmNyZWF0Q2hhcnQubmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IG1pbkNoYW5nZWQgPSBjaGFuZ2VzLm1pbiAmJiAhY2hhbmdlcy5taW4/LmZpcnN0Q2hhbmdlO1xyXG4gICAgY29uc3QgbWF4Q2hhbmdlZCA9IGNoYW5nZXMubWF4ICYmICFjaGFuZ2VzLm1heD8uZmlyc3RDaGFuZ2U7XHJcbiAgICBjb25zdCByYW5nZUNoYW5nZWQgPSBjaGFuZ2VzLnJhbmdlICYmICFjaGFuZ2VzLnJhbmdlPy5maXJzdENoYW5nZTtcclxuICAgIGlmIChtaW5DaGFuZ2VkIHx8IG1heENoYW5nZWQgfHwgcmFuZ2VDaGFuZ2VkKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3JlYXRDaGFydC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMubXlEYXRhU3Vic2NyaXB0aW9uID8gdGhpcy5teURhdGFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIHRoaXMuY3JlYXRDaGFydC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuICBnZXREYXRhKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuY29tYmluZWREYXRhKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldENvbWJpbmVkRGF0YShcclxuICAgICAgICB0aGlzLnBhZ2VQcm92aWRlcixcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycyxcclxuICAgICAgICB0aGlzLnJhbmdlLFxyXG4gICAgICAgIHRoaXMucGFnZVByb3ZpZGVyVHdvLFxyXG4gICAgICAgIHRoaXMucXVpY2tGaWx0ZXJUd28sXHJcbiAgICAgICAgdGhpcy5xdWlja0ZpbHRlclRocmVlLFxyXG4gICAgICAgIHRoaXMuc3RhdHVzT25lLFxyXG4gICAgICAgIHRoaXMuc3RhdHVzVHdvLFxyXG4gICAgICAgIHRoaXMuc3RhdHVzVGhyZWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgcGFnZVByb3ZpZGVyOiB0aGlzLnBhZ2VQcm92aWRlcixcclxuICAgICAgICBjdXJyZW50UGFnZUluZGV4OiAwLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBwYWdlU2l6ZTogMSxcclxuICAgICAgICBkdWJsaW5jb3JlX2NyZWF0ZWRfYWdnOiB0aGlzLnJhbmdlLFxyXG4gICAgICAgIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMsXHJcbiAgICAgICAgZHVibGluY29yZV9jcmVhdGVkX21pbjogdGhpcy5taW4sXHJcbiAgICAgICAgZHVibGluY29yZV9jcmVhdGVkX21heDogdGhpcy5tYXgsXHJcbiAgICAgICAgc3lzdGVtX2N1cnJlbnRMaWZlQ3ljbGVTdGF0ZV8zOiBKU09OLnN0cmluZ2lmeShcclxuICAgICAgICAgIHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlXHJcbiAgICAgICAgKSxcclxuICAgICAgfVxyXG4gICAgICAvLyBpZiB0aGVyZSB0ZW5hbnQgaWQgc2VudCBmcm9tIG91dHNpZGUgdGhlbiBhZGQgaXQgdG8gdGhlIHBhcmFtc1xyXG4gICAgICBpZiAodGhpcy50ZW5hbnRJZCkge1xyXG4gICAgICAgIHBhcmFtc1sncXVlcnlQYXJhbXMnXSA9IGAke3RoaXMudGVuYW50SWR9YFxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnF1aWNrRmlsdGVycyA9PSAnTGF0ZUFzc2lnbm1lbnRzJykge1xyXG4gICAgICAgIHBhcmFtc1snYXNzaWdubWVudF9kZXBhcnRtZW50XzEnXSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYXNpZ25lZURlcGFydG1lbnRzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5jYWxsQXBpXHJcbiAgICAgICAgLnF1ZXJ5KFxyXG4gICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgbWFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5hZ2dyZWdhdGlvbnNbdGhpcy5hZ2dyZWdhdGlvbnNdLmJ1Y2tldHNcclxuICAgICAgICAgICAgICA/IGRhdGEuYWdncmVnYXRpb25zW3RoaXMuYWdncmVnYXRpb25zXS5idWNrZXRzLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmZldGNoZWRLZXlcclxuICAgICAgICAgICAgICAgICAgPyBfLmdldChpdGVtLCB0aGlzLmZldGNoZWRLZXkpXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5ub0ZldGNoZWRLZXkgP1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3R1cmN0Q2hhcnRMYWJlbChpdGVtKVxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIGNvdW50OiBpdGVtLmRvY0NvdW50LFxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGRhdGE6IGl0ZW1zLFxyXG4gICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGRhdGEudG90YWxTaXplLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3R1cmN0Q2hhcnRMYWJlbChpdGVtKSB7XHJcbiAgICBsZXQgbGFiZWw7XHJcbiAgICBsZXQgZ3JvdXBTcGxpdDtcclxuICAgIGxldCBzZWNyZWN5O1xyXG4gICAgbGV0IGRlcENvZGU7XHJcbiAgICBsZXQgZGVwYXJ0bWVudE5hbWU7XHJcbiAgICBsZXQgcm9sZTtcclxuICAgIGxldCBteVByaWZ4ID0gYHRlbmFudF8ke3RoaXMudGVuYW50SWR9X2N0c19gO1xyXG4gICAgaWYgKGl0ZW0uZmV0Y2hlZEtleVsnZW50aXR5LXR5cGUnXSA9PSAnZ3JvdXAnKSB7XHJcbiAgICAgIGxldCByZXN0UHJlZml4ID0gaXRlbS5rZXkucmVwbGFjZShteVByaWZ4LCAnJyk7XHJcbiAgICAgIGdyb3VwU3BsaXQgPSByZXN0UHJlZml4LnNwbGl0KCdfJyk7XHJcbiAgICAgIGlmKHJlc3RQcmVmaXguaW5jbHVkZXMoJ1RvcF9TZWNyZXQnKSl7XHJcbiAgICAgICAgc2VjcmVjeSA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoJ3ZvY2FidWxhcnkuVk9DX1NlY3JlY3lMZXZlbC5Ub3BfU2VjcmV0Jyk7XHJcbiAgICAgICAgZGVwQ29kZSA9IGdyb3VwU3BsaXRbZ3JvdXBTcGxpdC5sZW5ndGgtNF07XHJcbiAgICAgICAgbGV0IGRlcFNlY3JlY3lQcmVmaXggPSAnXycrZGVwQ29kZSsnX1RvcF9TZWNyZXQnO1xyXG4gICAgICAgIHJvbGUgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd2b2NhYnVsYXJ5LlZPQ19EZXBhcnRtZW50X0V4dHJhUm9sZXNfV2l0aG91dFNlY3JlY3kuJytyZXN0UHJlZml4LnJlcGxhY2UoZGVwU2VjcmVjeVByZWZpeCwgJycpKTtcclxuICAgICAgICAvLyB0aGlzLmRlcGFydG1lbnRBcGlTZXJ2aWNlLmdldERlcGFydG1lbnREZXRhaWxzKGRlcENvZGUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIC8vICAgZGVwYXJ0bWVudE5hbWUgPSB0aGlzLmlzQXJhYmljXHJcbiAgICAgICAgLy8gICA/IHJlcz8uZW50cmllc1swXT8ucHJvcGVydGllc1snZGVwdDphcmFiaWNOYW1lJ11cclxuICAgICAgICAvLyAgIDogcmVzPy5lbnRyaWVzWzBdPy5wcm9wZXJ0aWVzWydkZXB0OmVuZ2xpc2hOYW1lJ107XHJcbiAgICAgICAgLy8gfSlcclxuXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHNlY3JlY3kgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd2b2NhYnVsYXJ5LlZPQ19TZWNyZWN5TGV2ZWwuJytncm91cFNwbGl0W2dyb3VwU3BsaXQubGVuZ3RoLTFdKTtcclxuICAgICAgICBkZXBDb2RlID0gZ3JvdXBTcGxpdFtncm91cFNwbGl0Lmxlbmd0aC0yXTtcclxuICAgICAgICBsZXQgZGVwU2VjcmVjeVByZWZpeCA9ICdfJytkZXBDb2RlKydfJytncm91cFNwbGl0W2dyb3VwU3BsaXQubGVuZ3RoLTFdO1xyXG4gICAgICAgIHJvbGUgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd2b2NhYnVsYXJ5LlZPQ19EZXBhcnRtZW50X0V4dHJhUm9sZXNfV2l0aG91dFNlY3JlY3kuJytyZXN0UHJlZml4LnJlcGxhY2UoZGVwU2VjcmVjeVByZWZpeCwgJycpKTtcclxuICAgICAgICAvLyB0aGlzLmRlcGFydG1lbnRBcGlTZXJ2aWNlLmdldERlcGFydG1lbnREZXRhaWxzKGRlcENvZGUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIC8vICAgZGVwYXJ0bWVudE5hbWUgPSB0aGlzLmlzQXJhYmljXHJcbiAgICAgICAgLy8gICA/IHJlcz8uZW50cmllc1swXT8ucHJvcGVydGllc1snZGVwdDphcmFiaWNOYW1lJ11cclxuICAgICAgICAvLyAgIDogcmVzPy5lbnRyaWVzWzBdPy5wcm9wZXJ0aWVzWydkZXB0OmVuZ2xpc2hOYW1lJ107XHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgfVxyXG4gICAgICAgbGFiZWwgPSByb2xlICsnLScrc2VjcmVjeTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxhYmVsID0gaXRlbS5mZXRjaGVkS2V5LmZ1bGxOYW1lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxuICBnZXRDb21iaW5lZERhdGEoXHJcbiAgICBwYWdlUHJvdmlkZXJPbmUsXHJcbiAgICBxdWlja0ZpbHRlck9uZSxcclxuICAgIHNlbGVjdGVkUmFuZ2UsXHJcbiAgICBwYWdlUHJvdmlkZXJUd28sXHJcbiAgICBxdWlja0ZpbHRlclR3byxcclxuICAgIHF1aWNrRmlsdGVyVGhyZWUsXHJcbiAgICBzdGF0dXNPbmUsXHJcbiAgICBzdGF0dXNUd28sXHJcbiAgICBzdGF0dXNUaHJlZVxyXG4gICkge1xyXG4gICAgbGV0IG91dGdvaW5nUGFyYW1zID0ge1xyXG4gICAgICBwYWdlUHJvdmlkZXI6IHBhZ2VQcm92aWRlck9uZSxcclxuICAgICAgY3VycmVudFBhZ2VJbmRleDogMCxcclxuICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICBwYWdlU2l6ZTogMSxcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX2FnZzogc2VsZWN0ZWRSYW5nZSxcclxuICAgICAgcXVpY2tGaWx0ZXJzOiBxdWlja0ZpbHRlck9uZSxcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX21pbjogdGhpcy5taW4sXHJcbiAgICAgIGR1YmxpbmNvcmVfY3JlYXRlZF9tYXg6IHRoaXMubWF4LFxyXG4gICAgICBzeXN0ZW1fY3VycmVudExpZmVDeWNsZVN0YXRlXzM6IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgIHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlXHJcbiAgICAgICksXHJcbiAgICB9XHJcbiAgICAvLyBpZiB0aGVyZSB0ZW5hbnQgaWQgc2VudCBmcm9tIG91dHNpZGUgdGhlbiBhZGQgaXQgdG8gdGhlIHBhcmFtc1xyXG4gICAgaWYgKHRoaXMudGVuYW50SWQpIHtcclxuICAgICAgb3V0Z29pbmdQYXJhbXNbJ3F1ZXJ5UGFyYW1zJ10gPSBgJHt0aGlzLnRlbmFudElkfWBcclxuICAgIH1cclxuICAgIGNvbnN0IGdldE91dGdvaW5nJCA9IHRoaXMuY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAgb3V0Z29pbmdQYXJhbXMsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5hZ2dyZWdhdGlvbnNbdGhpcy5hZ2dyZWdhdGlvbnNdLmJ1Y2tldHNcclxuICAgICAgICAgICAgPyBkYXRhLmFnZ3JlZ2F0aW9uc1t0aGlzLmFnZ3JlZ2F0aW9uc10uYnVja2V0cy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZmV0Y2hlZEtleVxyXG4gICAgICAgICAgICAgICAgPyBfLmdldChpdGVtLCB0aGlzLmZldGNoZWRLZXkpXHJcbiAgICAgICAgICAgICAgICA6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgIGNvdW50OiBpdGVtLmRvY0NvdW50LFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c09uZSxcclxuICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiBkYXRhLnRvdGFsU2l6ZSxcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkYXRhOiBpdGVtcyxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogZGF0YS50b3RhbFNpemUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICBsZXQgaW5jb21pbmdQYXJhbXMgPSB7XHJcbiAgICAgIHBhZ2VQcm92aWRlcjogcGFnZVByb3ZpZGVyVHdvLFxyXG4gICAgICBjdXJyZW50UGFnZUluZGV4OiAwLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHBhZ2VTaXplOiAxLFxyXG4gICAgICBkdWJsaW5jb3JlX2NyZWF0ZWRfYWdnOiBzZWxlY3RlZFJhbmdlLFxyXG4gICAgICBxdWlja0ZpbHRlcnM6IHF1aWNrRmlsdGVyVHdvLFxyXG4gICAgICBkdWJsaW5jb3JlX2NyZWF0ZWRfbWluOiB0aGlzLm1pbixcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX21heDogdGhpcy5tYXgsXHJcbiAgICAgIHN5c3RlbV9jdXJyZW50TGlmZUN5Y2xlU3RhdGVfMzogSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgICAgdGhpcy5zeXN0ZW1DdXJyZW50TGlmZUN5Y2xlU3RhdGVcclxuICAgICAgKSxcclxuICAgIH1cclxuICAgIC8vIGlmIHRoZXJlIHRlbmFudCBpZCBzZW50IGZyb20gb3V0c2lkZSB0aGVuIGFkZCBpdCB0byB0aGUgcGFyYW1zXHJcbiAgICBpZiAodGhpcy50ZW5hbnRJZCkge1xyXG4gICAgICBpbmNvbWluZ1BhcmFtc1sncXVlcnlQYXJhbXMnXSA9IGAke3RoaXMudGVuYW50SWR9YFxyXG4gICAgfVxyXG4gICAgY29uc3QgZ2V0SW5jb21pbmckID0gdGhpcy5jYWxsQXBpXHJcbiAgICAgIC5xdWVyeShcclxuICAgICAgICBpbmNvbWluZ1BhcmFtcyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBkYXRhLmFnZ3JlZ2F0aW9uc1t0aGlzLmFnZ3JlZ2F0aW9uc10uYnVja2V0c1xyXG4gICAgICAgICAgICA/IGRhdGEuYWdncmVnYXRpb25zW3RoaXMuYWdncmVnYXRpb25zXS5idWNrZXRzLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5mZXRjaGVkS2V5XHJcbiAgICAgICAgICAgICAgICA/IF8uZ2V0KGl0ZW0sIHRoaXMuZmV0Y2hlZEtleSlcclxuICAgICAgICAgICAgICAgIDogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgY291bnQ6IGl0ZW0uZG9jQ291bnQsXHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzVHdvLFxyXG4gICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGRhdGEudG90YWxTaXplLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRhdGE6IGl0ZW1zLFxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiBkYXRhLnRvdGFsU2l6ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIGxldCBpbnRlcm5hbFBhcmFtcyA9IHtcclxuICAgICAgcGFnZVByb3ZpZGVyOiBwYWdlUHJvdmlkZXJUd28sXHJcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IDAsXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgcGFnZVNpemU6IDEsXHJcbiAgICAgIGR1YmxpbmNvcmVfY3JlYXRlZF9hZ2c6IHNlbGVjdGVkUmFuZ2UsXHJcbiAgICAgIHF1aWNrRmlsdGVyczogcXVpY2tGaWx0ZXJUaHJlZSxcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX21pbjogdGhpcy5taW4sXHJcbiAgICAgIGR1YmxpbmNvcmVfY3JlYXRlZF9tYXg6IHRoaXMubWF4LFxyXG4gICAgICBzeXN0ZW1fY3VycmVudExpZmVDeWNsZVN0YXRlXzM6IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgIHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlXHJcbiAgICAgICksXHJcbiAgICB9XHJcbiAgICAvLyBpZiB0aGVyZSB0ZW5hbnQgaWQgc2VudCBmcm9tIG91dHNpZGUgdGhlbiBhZGQgaXQgdG8gdGhlIHBhcmFtc1xyXG4gICAgaWYgKHRoaXMudGVuYW50SWQpIHtcclxuICAgICAgaW50ZXJuYWxQYXJhbXNbJ3F1ZXJ5UGFyYW1zJ10gPSBgJHt0aGlzLnRlbmFudElkfWBcclxuICAgIH1cclxuICAgIGNvbnN0IGdldEludGVybmFsJCA9IHRoaXMuY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAgaW50ZXJuYWxQYXJhbXMsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5hZ2dyZWdhdGlvbnNbdGhpcy5hZ2dyZWdhdGlvbnNdLmJ1Y2tldHNcclxuICAgICAgICAgICAgPyBkYXRhLmFnZ3JlZ2F0aW9uc1t0aGlzLmFnZ3JlZ2F0aW9uc10uYnVja2V0cy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZmV0Y2hlZEtleVxyXG4gICAgICAgICAgICAgICAgPyBfLmdldChpdGVtLCB0aGlzLmZldGNoZWRLZXkpXHJcbiAgICAgICAgICAgICAgICA6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgIGNvdW50OiBpdGVtLmRvY0NvdW50LFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c1RocmVlLFxyXG4gICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGRhdGEudG90YWxTaXplLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRhdGE6IGl0ZW1zLFxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiBkYXRhLnRvdGFsU2l6ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIGlmICh0aGlzLmlzSW50ZXJuYWxBY3RpdmUpIHtcclxuICAgICAgcmV0dXJuIGZvcmtKb2luKFtnZXRPdXRnb2luZyQsIGdldEluY29taW5nJCwgZ2V0SW50ZXJuYWwkXSkucGlwZShcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGxldCBjb21iaW5lZERhdGEgPSBbLi4uZGF0YVswXS5kYXRhLCAuLi5kYXRhWzFdLmRhdGEsIC4uLmRhdGFbMl0uZGF0YV07XHJcbiAgICAgICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBjb21iaW5lZERhdGE7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JrSm9pbihbZ2V0T3V0Z29pbmckLCBnZXRJbmNvbWluZyRdKS5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbWJpbmVkRGF0YSA9IFsuLi5kYXRhWzBdLmRhdGEsIC4uLmRhdGFbMV0uZGF0YV07XHJcbiAgICAgICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBjb21iaW5lZERhdGE7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXZpZXdDb3JyZXNwb25kZW5jZXMoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInBhcmFtc1wiLCB0aGlzLnN5c3RlbUN1cnJlbnRMaWZlQ3ljbGVTdGF0ZSlcclxuICAgIGxldCBxdWVyeVBhcmFtcztcclxuICAgIGlmICh0aGlzLmNvbWJpbmVkRGF0YSkge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICBjb21iaW5lZERhdGE6IHRoaXMuY29tYmluZWREYXRhLFxyXG4gICAgICAgIHBhZ2VQcm92aWRlcjogdGhpcy5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgaGVhZGVyczogSlNPTi5zdHJpbmdpZnkodGhpcy5oZWFkZXJzKSxcclxuICAgICAgICByYW5nZTogdGhpcy5yYW5nZSxcclxuICAgICAgICBhZ2dyZWdhdGlvbnM6IHRoaXMuYWdncmVnYXRpb25zLFxyXG4gICAgICAgIHF1aWNrRmlsdGVyT25lOiB0aGlzLnF1aWNrRmlsdGVycyxcclxuICAgICAgICBxdWlja0ZpbHRlclR3bzogdGhpcy5xdWlja0ZpbHRlclR3byxcclxuICAgICAgICBxdWlja0ZpbHRlclRocmVlOiB0aGlzLnF1aWNrRmlsdGVyVGhyZWUsXHJcbiAgICAgICAgc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlOiB0aGlzLnN5c3RlbUN1cnJlbnRMaWZlQ3ljbGVTdGF0ZSxcclxuICAgICAgICBzdGF0dXNPbmU6IHRoaXMuc3RhdHVzT25lLFxyXG4gICAgICAgIHN0YXR1c1R3bzogdGhpcy5zdGF0dXNUd28sXHJcbiAgICAgICAgc3RhdHVzVGhyZWU6IHRoaXMuc3RhdHVzVGhyZWUsXHJcbiAgICAgICAgbWluOiB0aGlzLm1pbixcclxuICAgICAgICBtYXg6IHRoaXMubWF4LFxyXG4gICAgICAgIGNoYXJ0VGl0bGU6IHRoaXMuY2FyZFRpdGxlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICBjb21iaW5lZERhdGE6IHRoaXMuY29tYmluZWREYXRhLFxyXG4gICAgICAgIHBhZ2VQcm92aWRlcjogdGhpcy5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXJPbmU6IHRoaXMucXVpY2tGaWx0ZXJzLFxyXG4gICAgICAgIGhlYWRlcnM6IEpTT04uc3RyaW5naWZ5KHRoaXMuaGVhZGVycyksXHJcbiAgICAgICAgcmFuZ2U6IHRoaXMucmFuZ2UsXHJcbiAgICAgICAgYWdncmVnYXRpb25zOiB0aGlzLmFnZ3JlZ2F0aW9ucyxcclxuICAgICAgICBzeXN0ZW1DdXJyZW50TGlmZUN5Y2xlU3RhdGU6IHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlLFxyXG4gICAgICAgIG1pbjogdGhpcy5taW4sXHJcbiAgICAgICAgbWF4OiB0aGlzLm1heCxcclxuICAgICAgICBjaGFydFRpdGxlOiB0aGlzLmNhcmRUaXRsZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy8gaWYgdGhlcmUgdGVuYW50IGlkIHNlbnQgZnJvbSBvdXRzaWRlIHRoZW4gYWRkIGl0IHRvIHRoZSBwYXJhbXNcclxuICAgIGlmICh0aGlzLnRlbmFudElkKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zWydxdWVyeVBhcmFtcyddID0gYCR7dGhpcy50ZW5hbnRJZH1gXHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlcG9ydCcsICdjaGFydC1kZXRhaWxzJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdHJpbmdUb0hzbENvbG9yKHN0ciwgcywgbCkge1xyXG4gICAgdmFyIGhhc2ggPSAwO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaGFzaCA9IHN0ci5jaGFyQ29kZUF0KGkpICsgKChoYXNoIDw8IDUpIC0gaGFzaCk7XHJcbiAgICB9XHJcbiAgICB2YXIgaCA9IGhhc2ggJSAzNjA7XHJcbiAgICByZXR1cm4gJ2hzbCgnICsgaCArICcsICcgKyBzICsgJyUsICcgKyBsICsgJyUpJztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQtY29udGluZXJcIiAqbmdJZj1cImNhcmQ7IGVsc2UgdGVzdFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjaGFydC1jYXJkLWhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNhcmQtdGl0bGVcIj57eyBjYXJkVGl0bGUgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJjaGFydC1jYXJkLWJ1dHRvblwiIChjbGljayk9XCJwcmV2aWV3Q29ycmVzcG9uZGVuY2VzKClcIj5cclxuICAgICAge3sgXCJyZXBvcnQuUHJldmlld1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGZXRjaGluZ1wiPlxyXG4gICAgPGN0cy1zcGlubmVyPjwvY3RzLXNwaW5uZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cInN0YXRcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cImRhdGEuZGF0YT8ubGVuZ3RoID09IDAgfHwgZGF0YS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICA8Y2FudmFzICNyZXZlbnVlTGluZUNoYXJ0IFtoZWlnaHRdPVwiaGVpZ2h0XCIgW3dpZHRoXT1cIndpZHRoXCI+PC9jYW52YXM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJuby1zdGF0c1wiICpuZ0lmPVwiZGF0YS5kYXRhPy5sZW5ndGggPT0gMCB8fCBkYXRhLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgIDxzcGFuPnt7IFwiU1RBVFMubm9EYXRhXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3Rlc3Q+XHJcbiAgPGRpdiBjbGFzcz1cInN0YXRcIj5cclxuICAgIDxjYW52YXMgI3JldmVudWVMaW5lQ2hhcnQgW2hlaWdodF09XCJoZWlnaHRcIiBbd2lkdGhdPVwid2lkdGhcIj48L2NhbnZhcz5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
|
|
540
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtY2hhcnQvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0L2R5bmFtaWMtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBYyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFHL0IsY0FBYztBQU1kLE1BQU0sT0FBTyxxQkFBcUI7SUEwRWhDLFlBQ1MsU0FBMkIsRUFDM0IsY0FBaUMsRUFDaEMsT0FBdUIsRUFBVSxNQUFjLEVBQ2hELFNBQTJCLEVBQzFCLGtCQUFzQyxFQUN0QyxvQkFBMEM7UUFMM0MsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2hDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1B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Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFHTixHQUFHO3NCQURGLEtBQUs7Z0JBR04sR0FBRztzQkFERixLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gXCJjaGFydC5qc1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBDYWxsQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2NhbGxBcGkvY2FsbC1hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDaGFydERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2NoYXJ0LWRhdGEuc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCAnY2hhcnRqcy1wbHVnaW4tcGllY2hhcnQtb3V0bGFiZWxzJztcclxuaW1wb3J0ICdjaGFydGpzLXBsdWdpbi1sYWJlbHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlcGFydG1lbnRBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50L3NlcnZpY2VzL2RlcGFydG1lbnQtYXBpLnNlcnZpY2VcIjtcclxuLyoqIEBpZ25vcmUgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY3RzLWR5bmFtaWMtY2hhcnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtY2hhcnQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1jaGFydC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3JldmVudWVMaW5lQ2hhcnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgY2hhcnQ6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KClcclxuICBwcmVmaXggPSAnU1RBVFMuJzsgLy8gZm9yIHRyYW5zbGF0aW9uXHJcbiAgQElucHV0KClcclxuICBjaGFydFR5cGU7IC8vIGZ1bmN0aW9ucyBleGlzdCBpbnNpZGUgQ2hhcnREYXRhU2VydmljZVxyXG4gIEBJbnB1dCgpIHJhbmRvbUNvbG9yczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgY2hhcnRPYmo7XHJcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBjcmVhdENoYXJ0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIEBJbnB1dCgpIHBhZ2VQcm92aWRlcjsgLy8gZGVmaW5lIGFwaSB0byBnZXQgdGhlIGRhdGEgZnJvbVxyXG4gIEBJbnB1dCgpIGhlYWRlcnMgPSB7fTsgLy8gaGVhZGVycyBpbiBjb25zdGFudHNcclxuICBASW5wdXQoKSBvYnNlcnZhYmxlOyAvLyBvYnNlcnZhYmxlIGluIGNhc2Ugb2YgY2FsbCBhcGkgaXMgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50XHJcbiAgQElucHV0KCkgYWdncmVnYXRpb25zO1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVycztcclxuICBASW5wdXQoKSBzeXN0ZW1DdXJyZW50TGlmZUN5Y2xlU3RhdGU7XHJcbiAgQElucHV0KCkgcmFuZ2UgPSAnW1wiZnJvbV9ub3ctN2RfdG9fbm93XCJdJztcclxuICBASW5wdXQoKSBsYWJlbDtcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkUmFuZ2UgPSBcIndlZWtcIjsgLy8gcmFuZ2UgdG8gYmUgZmlsdGVyZCBvblxyXG4gIEBJbnB1dCgpIHRlbmFudElkOyAvLyB3aWxsIGJlIHNlbnQgb25seSBpbiBjYXNlIG9mIG11bHRpIHRlbmFudFxyXG4gIEBJbnB1dCgpIGNvbG9yczogYW55ID0ge1xyXG4gICAgaW5Qcm9ncmVzczogJyMzYzNjZjAnLFxyXG4gICAgcmVnaXN0ZXJlZDogJyM1YTE0OTYnLFxyXG4gICAgZHJhZnQ6ICcjNTk2OTczJyxcclxuICAgIGFyY2hpdmVkOiAnI2ZiYjYyYycsXHJcbiAgICBjbG9zZWQ6ICcjMDBkY2E1JyxcclxuICAgIGFzc2lnbmVkOiAnI2ZkNjY3MCcsXHJcbiAgICB1bmRlZmluZWQ6ICcjZjdmOGY5JyxcclxuICAgIG90aGVyOiAnI2YxNzIwNScsXHJcbiAgfTtcclxuICBkYXRhOiBhbnkgPSBbXTtcclxuICBpc0ZldGNoaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hhcnRzOiBbXTtcclxuICBASW5wdXQoKVxyXG4gIHJhbmRvbUNvbG9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBmZXRjaGVkS2V5O1xyXG4gIEBJbnB1dCgpXHJcbiAgcGFnZVByb3ZpZGVyVHdvO1xyXG4gIEBJbnB1dCgpXHJcbiAgcXVpY2tGaWx0ZXJUd287XHJcbiAgQElucHV0KClcclxuICBxdWlja0ZpbHRlclRocmVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgY29tYmluZWREYXRhID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBzdGF0dXNPbmU7XHJcbiAgQElucHV0KClcclxuICBzdGF0dXNUd287XHJcbiAgQElucHV0KClcclxuICBzdGF0dXNUaHJlZTtcclxuICBASW5wdXQoKVxyXG4gIG1pbjtcclxuICBASW5wdXQoKVxyXG4gIG1heDtcclxuICBASW5wdXQoKVxyXG4gIHdpZHRoO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0O1xyXG4gIEBJbnB1dCgpXHJcbiAgY2FyZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2FyZFRpdGxlID0gJyc7XHJcbiAgQElucHV0KClcclxuICBpbnB1dENoYXJ0RGF0YTtcclxuICBASW5wdXQoKVxyXG4gIGFzaWduZWVEZXBhcnRtZW50cztcclxuICBASW5wdXQoKVxyXG4gIG5vRmV0Y2hlZEtleSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBpc0ludGVybmFsQWN0aXZlID0gZmFsc2U7IC8vIHVzZWQgdG8gY29udHJvbCBvbiBzaG93aW5nIHJlc3VsdHMgb2YgaW50ZXJuYWwgY29yZXNwIHJlc3VsdHMgaW4gY2hhcnRzXHJcbiAgbXlEYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgaXNBcmFiaWM7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgY2FsbEFwaTogQ2FsbEFwaVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgY2hhcnREYXRhOiBDaGFydERhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVwYXJ0bWVudEFwaVNlcnZpY2U6IERlcGFydG1lbnRBcGlTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgQ2hhcnQuZGVmYXVsdHMuZ2xvYmFsLmRlZmF1bHRGb250RmFtaWx5ID0gXCJGUyBBbGJlcnQgQXJhYmljIFdlYlwiO1xyXG4gICAgQ2hhcnQuZGVmYXVsdHMuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSA9IDEzO1xyXG4gICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdENoYXJ0Lm5leHQoKTtcclxuICAgICAgfSk7XHJcblxyXG4gIH1cclxuICBjcmVhdGVDaGFydCgpIHtcclxuICAgIHRoaXMuY3JlYXRDaGFydC5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmdldERhdGEoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGxldCByYW5kb21Db2xvcnMgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5yYW5kb21Db2xvcnMpIHtcclxuICAgICAgICAgIGRhdGEuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHJhbmRvbUNvbG9yc1tpdGVtLmxhYmVsXSA9IHRoaXMuc3RyaW5nVG9Ic2xDb2xvcihcclxuICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgICAgNDAsXHJcbiAgICAgICAgICAgICAgNzBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbG9ycyA9IHRoaXMucmFuZG9tQ29sb3JzID8gcmFuZG9tQ29sb3JzIDogdGhpcy5jb2xvcnM7XHJcbiAgICAgICAgY29uc3QgeyBvcHRpb25zLCBjaGFydERhdGEgfSA9IHRoaXMuY2hhcnREYXRhW3RoaXMuY2hhcnRUeXBlXSh7XHJcbiAgICAgICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICAgICAgY29sb3JzOiB0aGlzLmNvbG9ycyxcclxuICAgICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXgsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGRhdGEuZGF0YT8ubGVuZ3RoIHx8IGRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2hhcnRPYmopIHtcclxuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5jaGFydC5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhcnRPYmogPSBuZXcgQ2hhcnQoY3R4LCBvcHRpb25zKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhcnRPYmouY2hhcnQuZGF0YSA9IGNoYXJ0RGF0YTtcclxuICAgICAgICAgICAgdGhpcy5jaGFydE9iai51cGRhdGUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gY29uc3QgY3R4ID0gdGhpcy5jaGFydC5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAvLyBsZXQgbm9PcHRpb25zID0ge1xyXG4gICAgICAgICAgLy8gICB0eXBlOiBvcHRpb25zLnR5cGUsXHJcbiAgICAgICAgICAvLyAgIGRhdGE6IHtcclxuICAgICAgICAgIC8vICAgICBkYXRhc2V0czogW10sXHJcbiAgICAgICAgICAvLyAgIH0sXHJcbiAgICAgICAgICAvLyAgIG9wdGlvbnM6IHt9LFxyXG4gICAgICAgICAgLy8gfTtcclxuICAgICAgICAgIC8vIHRoaXMuY2hhcnRPYmogPSBuZXcgQ2hhcnQoY3R4LCBub09wdGlvbnMpO1xyXG4gICAgICAgICAgLy8gdGhpcy5jaGFydE9iai5jaGFydC5kYXRhID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjcmVhdGVDaGFydFdpdGhvdXRQUCgpIHtcclxuICAgIHRoaXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNyZWF0Q2hhcnQucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5pbnB1dENoYXJ0RGF0YTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIGxldCByYW5kb21Db2xvcnMgPSB7fTtcclxuICAgICAgaWYgKHRoaXMucmFuZG9tQ29sb3JzKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmFuZG9tQ29sb3JzW2l0ZW0ubGFiZWxdID0gdGhpcy5zdHJpbmdUb0hzbENvbG9yKFxyXG4gICAgICAgICAgICBgJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgIDQwLFxyXG4gICAgICAgICAgICA3MFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbG9ycyA9IHRoaXMucmFuZG9tQ29sb3JzID8gcmFuZG9tQ29sb3JzIDogdGhpcy5jb2xvcnM7XHJcbiAgICAgIGNvbnN0IHsgb3B0aW9ucywgY2hhcnREYXRhIH0gPSB0aGlzLmNoYXJ0RGF0YVt0aGlzLmNoYXJ0VHlwZV0oe1xyXG4gICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcclxuICAgICAgICBjb2xvcnM6IHRoaXMuY29sb3JzLFxyXG4gICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXgsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy5kYXRhLmRhdGE/Lmxlbmd0aCB8fCB0aGlzLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNoYXJ0T2JqKSB7XHJcbiAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLmNoYXJ0Lm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgIHRoaXMuY2hhcnRPYmogPSBuZXcgQ2hhcnQoY3R4LCBvcHRpb25zKTtcclxuICAgICAgICAgIHRoaXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0T2JqLmNoYXJ0LmRhdGEgPSBjaGFydERhdGE7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0T2JqLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgdGhpcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAvLyBjb25zdCBjdHggPSB0aGlzLmNoYXJ0Lm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAvLyBsZXQgbm9PcHRpb25zID0ge1xyXG4gICAgICAgIC8vICAgdHlwZTogb3B0aW9ucy50eXBlLFxyXG4gICAgICAgIC8vICAgZGF0YToge1xyXG4gICAgICAgIC8vICAgICBkYXRhc2V0czogW10sXHJcbiAgICAgICAgLy8gICB9LFxyXG4gICAgICAgIC8vICAgb3B0aW9uczoge30sXHJcbiAgICAgICAgLy8gfTtcclxuICAgICAgICAvLyB0aGlzLmNoYXJ0T2JqID0gbmV3IENoYXJ0KGN0eCwgbm9PcHRpb25zKTtcclxuICAgICAgICAvLyB0aGlzLmNoYXJ0T2JqLmNoYXJ0LmRhdGEgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTdGF0cygpIHtcclxuICAgIGlmICh0aGlzLmlucHV0Q2hhcnREYXRhKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlQ2hhcnRXaXRob3V0UFAoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlQ2hhcnQoKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmlzQXJhYmljID0gcmVzO1xyXG4gICAgfSlcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pbnB1dENoYXJ0RGF0YSkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQ2hhcnRXaXRob3V0UFAoKTtcclxuICAgICAgICB0aGlzLmNyZWF0Q2hhcnQubmV4dCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQ2hhcnQoKTtcclxuICAgICAgICB0aGlzLmNyZWF0Q2hhcnQubmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IG1pbkNoYW5nZWQgPSBjaGFuZ2VzLm1pbiAmJiAhY2hhbmdlcy5taW4/LmZpcnN0Q2hhbmdlO1xyXG4gICAgY29uc3QgbWF4Q2hhbmdlZCA9IGNoYW5nZXMubWF4ICYmICFjaGFuZ2VzLm1heD8uZmlyc3RDaGFuZ2U7XHJcbiAgICBjb25zdCByYW5nZUNoYW5nZWQgPSBjaGFuZ2VzLnJhbmdlICYmICFjaGFuZ2VzLnJhbmdlPy5maXJzdENoYW5nZTtcclxuICAgIGlmIChtaW5DaGFuZ2VkIHx8IG1heENoYW5nZWQgfHwgcmFuZ2VDaGFuZ2VkKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3JlYXRDaGFydC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMubXlEYXRhU3Vic2NyaXB0aW9uID8gdGhpcy5teURhdGFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIHRoaXMuY3JlYXRDaGFydC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuICBnZXREYXRhKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuY29tYmluZWREYXRhKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldENvbWJpbmVkRGF0YShcclxuICAgICAgICB0aGlzLnBhZ2VQcm92aWRlcixcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycyxcclxuICAgICAgICB0aGlzLnJhbmdlLFxyXG4gICAgICAgIHRoaXMucGFnZVByb3ZpZGVyVHdvLFxyXG4gICAgICAgIHRoaXMucXVpY2tGaWx0ZXJUd28sXHJcbiAgICAgICAgdGhpcy5xdWlja0ZpbHRlclRocmVlLFxyXG4gICAgICAgIHRoaXMuc3RhdHVzT25lLFxyXG4gICAgICAgIHRoaXMuc3RhdHVzVHdvLFxyXG4gICAgICAgIHRoaXMuc3RhdHVzVGhyZWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgcGFnZVByb3ZpZGVyOiB0aGlzLnBhZ2VQcm92aWRlcixcclxuICAgICAgICBjdXJyZW50UGFnZUluZGV4OiAwLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBwYWdlU2l6ZTogMSxcclxuICAgICAgICBkdWJsaW5jb3JlX2NyZWF0ZWRfYWdnOiB0aGlzLnJhbmdlLFxyXG4gICAgICAgIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMsXHJcbiAgICAgICAgZHVibGluY29yZV9jcmVhdGVkX21pbjogdGhpcy5taW4sXHJcbiAgICAgICAgZHVibGluY29yZV9jcmVhdGVkX21heDogdGhpcy5tYXgsXHJcbiAgICAgICAgc3lzdGVtX2N1cnJlbnRMaWZlQ3ljbGVTdGF0ZV8zOiBKU09OLnN0cmluZ2lmeShcclxuICAgICAgICAgIHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlXHJcbiAgICAgICAgKSxcclxuICAgICAgfVxyXG4gICAgICAvLyBpZiB0aGVyZSB0ZW5hbnQgaWQgc2VudCBmcm9tIG91dHNpZGUgdGhlbiBhZGQgaXQgdG8gdGhlIHBhcmFtc1xyXG4gICAgICBpZiAodGhpcy50ZW5hbnRJZCkge1xyXG4gICAgICAgIHBhcmFtc1sncXVlcnlQYXJhbXMnXSA9IGAke3RoaXMudGVuYW50SWR9YFxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmFzaWduZWVEZXBhcnRtZW50cykge1xyXG4gICAgICAgIHBhcmFtc1snYXNzaWdubWVudF9kZXBhcnRtZW50XzEnXSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYXNpZ25lZURlcGFydG1lbnRzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5jYWxsQXBpXHJcbiAgICAgICAgLnF1ZXJ5KFxyXG4gICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgbWFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5hZ2dyZWdhdGlvbnNbdGhpcy5hZ2dyZWdhdGlvbnNdLmJ1Y2tldHNcclxuICAgICAgICAgICAgICA/IGRhdGEuYWdncmVnYXRpb25zW3RoaXMuYWdncmVnYXRpb25zXS5idWNrZXRzLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmZldGNoZWRLZXlcclxuICAgICAgICAgICAgICAgICAgPyBfLmdldChpdGVtLCB0aGlzLmZldGNoZWRLZXkpXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5ub0ZldGNoZWRLZXkgP1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3R1cmN0Q2hhcnRMYWJlbChpdGVtKVxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIGNvdW50OiBpdGVtLmRvY0NvdW50LFxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGRhdGE6IGl0ZW1zLFxyXG4gICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGRhdGEudG90YWxTaXplLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3R1cmN0Q2hhcnRMYWJlbChpdGVtKSB7XHJcbiAgICBsZXQgbGFiZWw7XHJcbiAgICBsZXQgZ3JvdXBTcGxpdDtcclxuICAgIGxldCBzZWNyZWN5O1xyXG4gICAgbGV0IGRlcENvZGU7XHJcbiAgICBsZXQgZGVwYXJ0bWVudE5hbWU7XHJcbiAgICBsZXQgZGlyZWN0aW9uO1xyXG4gICAgbGV0IHJlc3RQcmVmaXg7XHJcbiAgICBsZXQgbXlQcmlmeCA9IGB0ZW5hbnRfJHt0aGlzLnRlbmFudElkfV9jdHNfYDtcclxuXHJcbiAgICBpZiAoaXRlbS5mZXRjaGVkS2V5WydlbnRpdHktdHlwZSddID09ICdncm91cCcpIHtcclxuICAgICAgcmVzdFByZWZpeCA9IGl0ZW0ua2V5LnJlcGxhY2UobXlQcmlmeCwgJycpO1xyXG4gICAgICBncm91cFNwbGl0ID0gcmVzdFByZWZpeC5zcGxpdCgnXycpO1xyXG4gICAgICBpZiAocmVzdFByZWZpeC5pbmNsdWRlcygnVG9wX1NlY3JldCcpKSB7XHJcbiAgICAgICAgc2VjcmVjeSA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoJ3ZvY2FidWxhcnkuVk9DX1NlY3JlY3lMZXZlbC5Ub3BfU2VjcmV0Jyk7XHJcbiAgICAgICAgZGVwQ29kZSA9IGdyb3VwU3BsaXRbZ3JvdXBTcGxpdC5sZW5ndGggLSAzXTtcclxuICAgICAgICBsZXQgZGlyRXh0cmFjdGVkID0gZ3JvdXBTcGxpdFswXTtcclxuICAgICAgICBkaXJlY3Rpb24gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KGRpckV4dHJhY3RlZFswXS50b1VwcGVyQ2FzZSgpICsgZGlyRXh0cmFjdGVkLnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICB0aGlzLmRlcGFydG1lbnRBcGlTZXJ2aWNlLmdldERlcGFydG1lbnREZXRhaWxzKGRlcENvZGUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgZGVwYXJ0bWVudE5hbWUgPSB0aGlzLmlzQXJhYmljXHJcbiAgICAgICAgICAgID8gcmVzPy5lbnRyaWVzWzBdPy5wcm9wZXJ0aWVzWydkZXB0OmFyYWJpY05hbWUnXVxyXG4gICAgICAgICAgICA6IHJlcz8uZW50cmllc1swXT8ucHJvcGVydGllc1snZGVwdDplbmdsaXNoTmFtZSddO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlY3JlY3kgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd2b2NhYnVsYXJ5LlZPQ19TZWNyZWN5TGV2ZWwuJyArIGdyb3VwU3BsaXRbZ3JvdXBTcGxpdC5sZW5ndGggLSAxXSk7XHJcbiAgICAgICAgZGVwQ29kZSA9IGdyb3VwU3BsaXRbZ3JvdXBTcGxpdC5sZW5ndGggLSAyXTtcclxuICAgICAgICBsZXQgZGlyRXh0cmFjdGVkID0gZ3JvdXBTcGxpdFswXTtcclxuICAgICAgICBkaXJlY3Rpb24gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KGRpckV4dHJhY3RlZFswXS50b1VwcGVyQ2FzZSgpICsgZGlyRXh0cmFjdGVkLnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICB0aGlzLmRlcGFydG1lbnRBcGlTZXJ2aWNlLmdldERlcGFydG1lbnREZXRhaWxzKGRlcENvZGUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgZGVwYXJ0bWVudE5hbWUgPSB0aGlzLmlzQXJhYmljXHJcbiAgICAgICAgICAgID8gcmVzPy5lbnRyaWVzWzBdPy5wcm9wZXJ0aWVzWydkZXB0OmFyYWJpY05hbWUnXVxyXG4gICAgICAgICAgICA6IHJlcz8uZW50cmllc1swXT8ucHJvcGVydGllc1snZGVwdDplbmdsaXNoTmFtZSddO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgbGFiZWwgPSB0aGlzLmFnZ3JlZ2F0aW9ucyA9PSAnYXNzaWdubWVudF9kZXBhcnRtZW50X2FnZycgPyBkZXBhcnRtZW50TmFtZSArICctJyArIHNlY3JlY3kgOiBkZXBhcnRtZW50TmFtZSsgJyAnICsgZGlyZWN0aW9uICsgJy0nICsgc2VjcmVjeTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxhYmVsID0gaXRlbS5mZXRjaGVkS2V5LmZ1bGxOYW1lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxuICBnZXRDb21iaW5lZERhdGEoXHJcbiAgICBwYWdlUHJvdmlkZXJPbmUsXHJcbiAgICBxdWlja0ZpbHRlck9uZSxcclxuICAgIHNlbGVjdGVkUmFuZ2UsXHJcbiAgICBwYWdlUHJvdmlkZXJUd28sXHJcbiAgICBxdWlja0ZpbHRlclR3byxcclxuICAgIHF1aWNrRmlsdGVyVGhyZWUsXHJcbiAgICBzdGF0dXNPbmUsXHJcbiAgICBzdGF0dXNUd28sXHJcbiAgICBzdGF0dXNUaHJlZVxyXG4gICkge1xyXG4gICAgbGV0IG91dGdvaW5nUGFyYW1zID0ge1xyXG4gICAgICBwYWdlUHJvdmlkZXI6IHBhZ2VQcm92aWRlck9uZSxcclxuICAgICAgY3VycmVudFBhZ2VJbmRleDogMCxcclxuICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICBwYWdlU2l6ZTogMSxcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX2FnZzogc2VsZWN0ZWRSYW5nZSxcclxuICAgICAgcXVpY2tGaWx0ZXJzOiBxdWlja0ZpbHRlck9uZSxcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX21pbjogdGhpcy5taW4sXHJcbiAgICAgIGR1YmxpbmNvcmVfY3JlYXRlZF9tYXg6IHRoaXMubWF4LFxyXG4gICAgICBzeXN0ZW1fY3VycmVudExpZmVDeWNsZVN0YXRlXzM6IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgIHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlXHJcbiAgICAgICksXHJcbiAgICB9XHJcbiAgICAvLyBpZiB0aGVyZSB0ZW5hbnQgaWQgc2VudCBmcm9tIG91dHNpZGUgdGhlbiBhZGQgaXQgdG8gdGhlIHBhcmFtc1xyXG4gICAgaWYgKHRoaXMudGVuYW50SWQpIHtcclxuICAgICAgb3V0Z29pbmdQYXJhbXNbJ3F1ZXJ5UGFyYW1zJ10gPSBgJHt0aGlzLnRlbmFudElkfWBcclxuICAgIH1cclxuICAgIGNvbnN0IGdldE91dGdvaW5nJCA9IHRoaXMuY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAgb3V0Z29pbmdQYXJhbXMsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5hZ2dyZWdhdGlvbnNbdGhpcy5hZ2dyZWdhdGlvbnNdLmJ1Y2tldHNcclxuICAgICAgICAgICAgPyBkYXRhLmFnZ3JlZ2F0aW9uc1t0aGlzLmFnZ3JlZ2F0aW9uc10uYnVja2V0cy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZmV0Y2hlZEtleVxyXG4gICAgICAgICAgICAgICAgPyBfLmdldChpdGVtLCB0aGlzLmZldGNoZWRLZXkpXHJcbiAgICAgICAgICAgICAgICA6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgIGNvdW50OiBpdGVtLmRvY0NvdW50LFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c09uZSxcclxuICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiBkYXRhLnRvdGFsU2l6ZSxcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkYXRhOiBpdGVtcyxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogZGF0YS50b3RhbFNpemUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICBsZXQgaW5jb21pbmdQYXJhbXMgPSB7XHJcbiAgICAgIHBhZ2VQcm92aWRlcjogcGFnZVByb3ZpZGVyVHdvLFxyXG4gICAgICBjdXJyZW50UGFnZUluZGV4OiAwLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHBhZ2VTaXplOiAxLFxyXG4gICAgICBkdWJsaW5jb3JlX2NyZWF0ZWRfYWdnOiBzZWxlY3RlZFJhbmdlLFxyXG4gICAgICBxdWlja0ZpbHRlcnM6IHF1aWNrRmlsdGVyVHdvLFxyXG4gICAgICBkdWJsaW5jb3JlX2NyZWF0ZWRfbWluOiB0aGlzLm1pbixcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX21heDogdGhpcy5tYXgsXHJcbiAgICAgIHN5c3RlbV9jdXJyZW50TGlmZUN5Y2xlU3RhdGVfMzogSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgICAgdGhpcy5zeXN0ZW1DdXJyZW50TGlmZUN5Y2xlU3RhdGVcclxuICAgICAgKSxcclxuICAgIH1cclxuICAgIC8vIGlmIHRoZXJlIHRlbmFudCBpZCBzZW50IGZyb20gb3V0c2lkZSB0aGVuIGFkZCBpdCB0byB0aGUgcGFyYW1zXHJcbiAgICBpZiAodGhpcy50ZW5hbnRJZCkge1xyXG4gICAgICBpbmNvbWluZ1BhcmFtc1sncXVlcnlQYXJhbXMnXSA9IGAke3RoaXMudGVuYW50SWR9YFxyXG4gICAgfVxyXG4gICAgY29uc3QgZ2V0SW5jb21pbmckID0gdGhpcy5jYWxsQXBpXHJcbiAgICAgIC5xdWVyeShcclxuICAgICAgICBpbmNvbWluZ1BhcmFtcyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBkYXRhLmFnZ3JlZ2F0aW9uc1t0aGlzLmFnZ3JlZ2F0aW9uc10uYnVja2V0c1xyXG4gICAgICAgICAgICA/IGRhdGEuYWdncmVnYXRpb25zW3RoaXMuYWdncmVnYXRpb25zXS5idWNrZXRzLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5mZXRjaGVkS2V5XHJcbiAgICAgICAgICAgICAgICA/IF8uZ2V0KGl0ZW0sIHRoaXMuZmV0Y2hlZEtleSlcclxuICAgICAgICAgICAgICAgIDogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgY291bnQ6IGl0ZW0uZG9jQ291bnQsXHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzVHdvLFxyXG4gICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGRhdGEudG90YWxTaXplLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRhdGE6IGl0ZW1zLFxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiBkYXRhLnRvdGFsU2l6ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIGxldCBpbnRlcm5hbFBhcmFtcyA9IHtcclxuICAgICAgcGFnZVByb3ZpZGVyOiBwYWdlUHJvdmlkZXJUd28sXHJcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IDAsXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgcGFnZVNpemU6IDEsXHJcbiAgICAgIGR1YmxpbmNvcmVfY3JlYXRlZF9hZ2c6IHNlbGVjdGVkUmFuZ2UsXHJcbiAgICAgIHF1aWNrRmlsdGVyczogcXVpY2tGaWx0ZXJUaHJlZSxcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX21pbjogdGhpcy5taW4sXHJcbiAgICAgIGR1YmxpbmNvcmVfY3JlYXRlZF9tYXg6IHRoaXMubWF4LFxyXG4gICAgICBzeXN0ZW1fY3VycmVudExpZmVDeWNsZVN0YXRlXzM6IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgIHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlXHJcbiAgICAgICksXHJcbiAgICB9XHJcbiAgICAvLyBpZiB0aGVyZSB0ZW5hbnQgaWQgc2VudCBmcm9tIG91dHNpZGUgdGhlbiBhZGQgaXQgdG8gdGhlIHBhcmFtc1xyXG4gICAgaWYgKHRoaXMudGVuYW50SWQpIHtcclxuICAgICAgaW50ZXJuYWxQYXJhbXNbJ3F1ZXJ5UGFyYW1zJ10gPSBgJHt0aGlzLnRlbmFudElkfWBcclxuICAgIH1cclxuICAgIGNvbnN0IGdldEludGVybmFsJCA9IHRoaXMuY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAgaW50ZXJuYWxQYXJhbXMsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5hZ2dyZWdhdGlvbnNbdGhpcy5hZ2dyZWdhdGlvbnNdLmJ1Y2tldHNcclxuICAgICAgICAgICAgPyBkYXRhLmFnZ3JlZ2F0aW9uc1t0aGlzLmFnZ3JlZ2F0aW9uc10uYnVja2V0cy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZmV0Y2hlZEtleVxyXG4gICAgICAgICAgICAgICAgPyBfLmdldChpdGVtLCB0aGlzLmZldGNoZWRLZXkpXHJcbiAgICAgICAgICAgICAgICA6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgIGNvdW50OiBpdGVtLmRvY0NvdW50LFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c1RocmVlLFxyXG4gICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGRhdGEudG90YWxTaXplLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRhdGE6IGl0ZW1zLFxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiBkYXRhLnRvdGFsU2l6ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIGlmICh0aGlzLmlzSW50ZXJuYWxBY3RpdmUpIHtcclxuICAgICAgcmV0dXJuIGZvcmtKb2luKFtnZXRPdXRnb2luZyQsIGdldEluY29taW5nJCwgZ2V0SW50ZXJuYWwkXSkucGlwZShcclxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGxldCBjb21iaW5lZERhdGEgPSBbLi4uZGF0YVswXS5kYXRhLCAuLi5kYXRhWzFdLmRhdGEsIC4uLmRhdGFbMl0uZGF0YV07XHJcbiAgICAgICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBjb21iaW5lZERhdGE7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JrSm9pbihbZ2V0T3V0Z29pbmckLCBnZXRJbmNvbWluZyRdKS5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbWJpbmVkRGF0YSA9IFsuLi5kYXRhWzBdLmRhdGEsIC4uLmRhdGFbMV0uZGF0YV07XHJcbiAgICAgICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBjb21iaW5lZERhdGE7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXZpZXdDb3JyZXNwb25kZW5jZXMoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInBhcmFtc1wiLCB0aGlzLnN5c3RlbUN1cnJlbnRMaWZlQ3ljbGVTdGF0ZSlcclxuICAgIGxldCBxdWVyeVBhcmFtcztcclxuICAgIGlmICh0aGlzLmNvbWJpbmVkRGF0YSkge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICBjb21iaW5lZERhdGE6IHRoaXMuY29tYmluZWREYXRhLFxyXG4gICAgICAgIHBhZ2VQcm92aWRlcjogdGhpcy5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgaGVhZGVyczogSlNPTi5zdHJpbmdpZnkodGhpcy5oZWFkZXJzKSxcclxuICAgICAgICByYW5nZTogdGhpcy5yYW5nZSxcclxuICAgICAgICBhZ2dyZWdhdGlvbnM6IHRoaXMuYWdncmVnYXRpb25zLFxyXG4gICAgICAgIHF1aWNrRmlsdGVyT25lOiB0aGlzLnF1aWNrRmlsdGVycyxcclxuICAgICAgICBxdWlja0ZpbHRlclR3bzogdGhpcy5xdWlja0ZpbHRlclR3byxcclxuICAgICAgICBxdWlja0ZpbHRlclRocmVlOiB0aGlzLnF1aWNrRmlsdGVyVGhyZWUsXHJcbiAgICAgICAgc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlOiB0aGlzLnN5c3RlbUN1cnJlbnRMaWZlQ3ljbGVTdGF0ZSxcclxuICAgICAgICBzdGF0dXNPbmU6IHRoaXMuc3RhdHVzT25lLFxyXG4gICAgICAgIHN0YXR1c1R3bzogdGhpcy5zdGF0dXNUd28sXHJcbiAgICAgICAgc3RhdHVzVGhyZWU6IHRoaXMuc3RhdHVzVGhyZWUsXHJcbiAgICAgICAgbWluOiB0aGlzLm1pbixcclxuICAgICAgICBtYXg6IHRoaXMubWF4LFxyXG4gICAgICAgIGNoYXJ0VGl0bGU6IHRoaXMuY2FyZFRpdGxlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICBjb21iaW5lZERhdGE6IHRoaXMuY29tYmluZWREYXRhLFxyXG4gICAgICAgIHBhZ2VQcm92aWRlcjogdGhpcy5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXJPbmU6IHRoaXMucXVpY2tGaWx0ZXJzLFxyXG4gICAgICAgIGhlYWRlcnM6IEpTT04uc3RyaW5naWZ5KHRoaXMuaGVhZGVycyksXHJcbiAgICAgICAgcmFuZ2U6IHRoaXMucmFuZ2UsXHJcbiAgICAgICAgYWdncmVnYXRpb25zOiB0aGlzLmFnZ3JlZ2F0aW9ucyxcclxuICAgICAgICBzeXN0ZW1DdXJyZW50TGlmZUN5Y2xlU3RhdGU6IHRoaXMuc3lzdGVtQ3VycmVudExpZmVDeWNsZVN0YXRlLFxyXG4gICAgICAgIG1pbjogdGhpcy5taW4sXHJcbiAgICAgICAgbWF4OiB0aGlzLm1heCxcclxuICAgICAgICBjaGFydFRpdGxlOiB0aGlzLmNhcmRUaXRsZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy8gaWYgdGhlcmUgdGVuYW50IGlkIHNlbnQgZnJvbSBvdXRzaWRlIHRoZW4gYWRkIGl0IHRvIHRoZSBwYXJhbXNcclxuICAgIGlmICh0aGlzLnRlbmFudElkKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zWydxdWVyeVBhcmFtcyddID0gYCR7dGhpcy50ZW5hbnRJZH1gXHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlcG9ydCcsICdjaGFydC1kZXRhaWxzJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdHJpbmdUb0hzbENvbG9yKHN0ciwgcywgbCkge1xyXG4gICAgdmFyIGhhc2ggPSAwO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaGFzaCA9IHN0ci5jaGFyQ29kZUF0KGkpICsgKChoYXNoIDw8IDUpIC0gaGFzaCk7XHJcbiAgICB9XHJcbiAgICB2YXIgaCA9IGhhc2ggJSAzNjA7XHJcbiAgICByZXR1cm4gJ2hzbCgnICsgaCArICcsICcgKyBzICsgJyUsICcgKyBsICsgJyUpJztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQtY29udGluZXJcIiAqbmdJZj1cImNhcmQ7IGVsc2UgdGVzdFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjaGFydC1jYXJkLWhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNhcmQtdGl0bGVcIj57eyBjYXJkVGl0bGUgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJjaGFydC1jYXJkLWJ1dHRvblwiIChjbGljayk9XCJwcmV2aWV3Q29ycmVzcG9uZGVuY2VzKClcIj5cclxuICAgICAge3sgXCJyZXBvcnQuUHJldmlld1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGZXRjaGluZ1wiPlxyXG4gICAgPGN0cy1zcGlubmVyPjwvY3RzLXNwaW5uZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cInN0YXRcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cImRhdGEuZGF0YT8ubGVuZ3RoID09IDAgfHwgZGF0YS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICA8Y2FudmFzICNyZXZlbnVlTGluZUNoYXJ0IFtoZWlnaHRdPVwiaGVpZ2h0XCIgW3dpZHRoXT1cIndpZHRoXCI+PC9jYW52YXM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJuby1zdGF0c1wiICpuZ0lmPVwiZGF0YS5kYXRhPy5sZW5ndGggPT0gMCB8fCBkYXRhLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgIDxzcGFuPnt7IFwiU1RBVFMubm9EYXRhXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3Rlc3Q+XHJcbiAgPGRpdiBjbGFzcz1cInN0YXRcIj5cclxuICAgIDxjYW52YXMgI3JldmVudWVMaW5lQ2hhcnQgW2hlaWdodF09XCJoZWlnaHRcIiBbd2lkdGhdPVwid2lkdGhcIj48L2NhbnZhcz5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
|
|
@@ -13,7 +13,7 @@ export class DataViewerComponent {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
DataViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
-
DataViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DataViewerComponent, selector: "cts-data-viewer", inputs: { label: "label", value: "value", vertical: "vertical", customClass: "customClass" }, ngImport: i0, template: "<div class=\"my-dynamic-viewer {{customClass}}\" \r\n[ngClass]=\"{'vertical' : vertical === true}\">\r\n <div class=\"my-label\" matTooltip=\"{{label | translate}}\">{{label | translate}}</div>\r\n <div class=\"my-value\"> \r\n <span class=\"direction-img\">\r\n <i class=\"bi bi-box-arrow-down incoming\"></i>\r\n <i class=\"bi bi-box-arrow-up outgoing\"></i>\r\n <i class=\"bi bi-box-arrow-right internal\"></i>\r\n </span>\r\n <span class=\"text\" matTooltip=\"{{value ? value : '-'}}\">\r\n {{value ? value : '-'}}\r\n </span>\r\n \r\n </div> \r\n</div>\r\n", styles: [""], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i3.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
16
|
+
DataViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DataViewerComponent, selector: "cts-data-viewer", inputs: { label: "label", value: "value", vertical: "vertical", defultValue: "defultValue", customClass: "customClass" }, ngImport: i0, template: "<div class=\"my-dynamic-viewer {{customClass}}\" \r\n[ngClass]=\"{'vertical' : vertical === true}\">\r\n <div class=\"my-label\" matTooltip=\"{{label | translate}}\">{{label | translate}}</div>\r\n <div class=\"my-value\"> \r\n <span class=\"direction-img\">\r\n <i class=\"bi bi-box-arrow-down incoming\"></i>\r\n <i class=\"bi bi-box-arrow-up outgoing\"></i>\r\n <i class=\"bi bi-box-arrow-right internal\"></i>\r\n </span>\r\n <span class=\"text\" matTooltip=\"{{value ? value : '-'}}\">\r\n {{value ? value : (defultValue ? (defultValue | translate) : '-')}}\r\n </span>\r\n \r\n </div> \r\n</div>\r\n", styles: [""], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i3.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataViewerComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
19
|
args: [{
|
|
@@ -28,7 +28,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
28
28
|
type: Input
|
|
29
29
|
}], vertical: [{
|
|
30
30
|
type: Input
|
|
31
|
+
}], defultValue: [{
|
|
32
|
+
type: Input
|
|
31
33
|
}], customClass: [{
|
|
32
34
|
type: Input
|
|
33
35
|
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZGF0YS12aWV3ZXIvZGF0YS12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZGF0YS12aWV3ZXIvZGF0YS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUTVFLE1BQU0sT0FBTyxtQkFBbUI7SUFNOUI7UUFMUyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFHVixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOztpSEFUVSxtQkFBbUI7cUdBQW5CLG1CQUFtQixpTENSaEMsdW9CQWVBOzRGRFBhLG1CQUFtQjtrQkFOL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztvQkFDM0MsYUFBYSxFQUFHLGlCQUFpQixDQUFDLElBQUk7aUJBQ3ZDOzBFQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2N0cy1kYXRhLXZpZXdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb24gOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XHJcbiAgQElucHV0KCkgdmVydGljYWwgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZ1bHRWYWx1ZTtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcztcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJteS1keW5hbWljLXZpZXdlciB7e2N1c3RvbUNsYXNzfX1cIiBcclxuW25nQ2xhc3NdPVwieyd2ZXJ0aWNhbCcgOiB2ZXJ0aWNhbCA9PT0gdHJ1ZX1cIj5cclxuICA8ZGl2IGNsYXNzPVwibXktbGFiZWxcIiBtYXRUb29sdGlwPVwie3tsYWJlbCB8IHRyYW5zbGF0ZX19XCI+e3tsYWJlbCB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm15LXZhbHVlXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXJlY3Rpb24taW1nXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmkgYmktYm94LWFycm93LWRvd24gaW5jb21pbmdcIj48L2k+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmkgYmktYm94LWFycm93LXVwIG91dGdvaW5nXCI+PC9pPlxyXG4gICAgICA8aSBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1yaWdodCBpbnRlcm5hbFwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiIG1hdFRvb2x0aXA9XCJ7e3ZhbHVlID8gdmFsdWUgOiAnLSd9fVwiPlxyXG4gICAgICB7e3ZhbHVlID8gdmFsdWUgOiAoZGVmdWx0VmFsdWUgPyAoZGVmdWx0VmFsdWUgfCB0cmFuc2xhdGUpIDogJy0nKX19XHJcbiAgICA8L3NwYW4+XHJcbiAgICBcclxuICAgIDwvZGl2PiBcclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -13,22 +13,22 @@ export class NotificationsService extends SocketService {
|
|
|
13
13
|
*
|
|
14
14
|
*/
|
|
15
15
|
constructor(_environment, _nuxeoService, _callApi, _http) {
|
|
16
|
+
var _a, _b;
|
|
16
17
|
super(_environment, _nuxeoService);
|
|
17
18
|
this._environment = _environment;
|
|
18
19
|
this._nuxeoService = _nuxeoService;
|
|
19
20
|
this._callApi = _callApi;
|
|
20
21
|
this._http = _http;
|
|
21
22
|
this.listenerObserver = new Subject();
|
|
22
|
-
this._nuxeoService.init().then((client) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
23
|
+
// this._nuxeoService.init().then((client) => {
|
|
24
|
+
if ((_b = (_a = this._nuxeoService.nuxeoClient) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id) {
|
|
25
|
+
this.socketConnect()
|
|
26
|
+
.pipe(switchMap(() => this.onMessage$), takeUntil(this._destroy$))
|
|
27
|
+
.subscribe((res) => {
|
|
28
|
+
this.listenerObserver.next(res);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// });
|
|
32
32
|
}
|
|
33
33
|
get _tenantId() {
|
|
34
34
|
return this._nuxeoService.nuxeoClient.user.properties.tenantId;
|
|
@@ -168,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
168
168
|
type: Inject,
|
|
169
169
|
args: ['environment']
|
|
170
170
|
}] }, { type: i1.NuxeoService }, { type: i2.CallApiService }, { type: i3.HttpClient }]; } });
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9ub3RpZmljYXRpb25zL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFTbkQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFFakQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUErQnJEOztPQUVHO0lBQ0gsWUFDbUMsWUFBaUMsRUFDeEQsYUFBMkIsRUFDM0IsUUFBd0IsRUFDeEIsS0FBaUI7UUFFM0IsS0FBSyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUxGLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUN4RCxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBckM3QixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQXlDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs7WUFDeEMsSUFBSSxNQUFBLE1B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QUUsa0NBQWtDO0lBQ3RELFlBQVksRUFBRSwyQkFBMkI7SUFDekMsVUFBVSxFQUFFLHFDQUFxQztDQUNsRCxDQUFDO0FBRWMsK0JBQVUsR0FBRztJQUMzQixhQUFhLEVBQUUsZ0NBQWdDO0lBQy9DLFVBQVUsRUFBRSw2QkFBNkI7SUFDekMsWUFBWSxFQUFFLCtCQUErQjtJQUM3QyxhQUFhLEVBQUUsa0NBQWtDO0lBQ2pELFdBQVcsRUFBRSxvQ0FBb0M7SUFDakQsU0FBUyxFQUFFLGtDQUFrQztJQUM3QyxLQUFLLEVBQUUsMENBQTBDO0lBQ2pELGVBQWUsRUFBRSxrQ0FBa0M7Q0FDcEQsQ0FBQztrSEFyQlMsb0JBQW9CLGtCQW1DckIsYUFBYTtzSEFuQ1osb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQW9DTixNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXBpUmVzcG9uc2VNb2RlbCwgQXV0b21hdGlvblJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IENhbGxBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTk9USUZJQ0FUSU9OX1NUQVRVUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7XHJcbiAgTm90aWZpY2F0aW9uRGVmaW5pdGlvbk1vZGVsLFxyXG4gIE5vdGlmaWNhdGlvbk1lc3NhZ2VNb2RlbCxcclxuICBOb3RpZmljYXRpb25Nb2RlbCxcclxuICBOb3RpZmljYXRpb25TdWJzY3JpcHRpb25Nb2RlbCxcclxuICBQYXlsb2FkUGFyYW1zTW9kZWwsXHJcbiAgVm9jYWJ1bGFyeVR5cGUsXHJcbn0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgbWFwTm90aWZpY2F0aW9uc1RvUGFnaW5nUmVzcG9uc2UgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBTb2NrZXRTZXJ2aWNlIH0gZnJvbSAnLi9zb2NrZXQuc2VydmljZSc7XHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIGV4dGVuZHMgU29ja2V0U2VydmljZSB7XHJcbiAgbGlzdGVuZXJPYnNlcnZlciA9IG5ldyBTdWJqZWN0PE5vdGlmaWNhdGlvbk1lc3NhZ2VNb2RlbD4oKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgc291cmNlVHlwZSA9ICcvYXBpL3YxL2RpcmVjdG9yeS9WT0NfTm90Zl9Tb3VyY2VUeXBlcyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNoYW5uZWxzID0gJy9hcGkvdjEvZGlyZWN0b3J5L1ZPQ19Ob3RmX05vdGlmaWNhdGlvbkNoYW5uZWxzJztcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IHByb3ZpZGVycyA9IHtcclxuICAgIG5vdGlmaWNhdGlvbnM6ICdQUF9Ob3RmTm90aWZpY2F0aW9uQ29udGVudCcsXHJcbiAgICBub3RpZmljYXRpb25zTWFuZ286ICdQUF9Ob3RmTm90aWZpY2F0aW9uQ29udGVudF9Nb25nbycsXHJcbiAgICBzdWJzY3JpcHRpb246ICdQUF9Ob3RmU3Vic2NyaXB0aW9uX01vbmdvJyxcclxuICAgIGRlZmluaXRpb246ICdQUF9Ob3RmTm90aWZpY2F0aW9uRGVmaW5pdGlvbl9Nb25nbycsXHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IG9wZXJhdGlvbnMgPSB7XHJcbiAgICBtYXJrQWxsQXNSZWFkOiAnQUNfVUFfTm90Zk5vdGlmaWNhdGlvbl9SZWFkQWxsJyxcclxuICAgIG1hcmtBc1JlYWQ6ICdBQ19VQV9Ob3RmTm90aWZpY2F0aW9uX1JlYWQnLFxyXG4gICAgbWFya0FzVW5yZWFkOiAnQUNfVUFfTm90Zk5vdGlmaWNhdGlvbl9VbnJlYWQnLFxyXG4gICAgbWFya0FzRGVsZXRlZDogJ0FDX1VBX05vdGZOb3RpZmljYXRpb25fVG9EZWxldGVkJyxcclxuICAgIHVuc3Vic2NyaWJlOiAnQUNfVUFfTm90Zk5vdGlmaWNhdGlvbl9VbnN1YnNjcmliZScsXHJcbiAgICBzdWJzY3JpYmU6ICdBQ19VQV9Ob3RmTm90aWZpY2F0aW9uX1N1YnNjcmliZScsXHJcbiAgICByZXNldDogJ0FDX1VBX05vdGZOb3RpZmljYXRpb25fUmVzZXRTdWJzY3JpcHRpb24nLFxyXG4gICAgbWFya0FsbEFzVW5yZWFkOiAnQUNfVUFfTm90Zk5vdGlmaWNhdGlvbl9VbnJlYWRBbGwnLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0IF90ZW5hbnRJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9udXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlci5wcm9wZXJ0aWVzLnRlbmFudElkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgX2FwcEtleSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudD8uYXBwS2V5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIF9lbnZpcm9ubWVudDogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgIHByb3RlY3RlZCBfbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgX2NhbGxBcGk6IENhbGxBcGlTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIF9odHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgICBzdXBlcihfZW52aXJvbm1lbnQsIF9udXhlb1NlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMuX251eGVvU2VydmljZS5pbml0KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9udXhlb1NlcnZpY2UubnV4ZW9DbGllbnQ/LnVzZXI/LmlkKSB7XHJcbiAgICAgICAgdGhpcy5zb2NrZXRDb25uZWN0KClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5vbk1lc3NhZ2UkKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJPYnNlcnZlci5uZXh0KHJlcyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRVblJlYWRDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGxBcGlcclxuICAgICAgLnF1ZXJ5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBhZ2VQcm92aWRlcjogTm90aWZpY2F0aW9uc1NlcnZpY2UucHJvdmlkZXJzLm5vdGlmaWNhdGlvbnNNYW5nbyxcclxuICAgICAgICAgIHBhZ2VTaXplOiAxLFxyXG4gICAgICAgICAgbm90Zm5vdGlmaWNhdGlvbmNvbnRlbnRfY29tcGFueTogdGhpcy5fdGVuYW50SWQsXHJcbiAgICAgICAgICBub3Rmbm90aWZpY2F0aW9uY29udGVudF9hcHBsaWNhdGlvbktleTogdGhpcy5fYXBwS2V5LFxyXG4gICAgICAgICAgbm90Zm5vdGlmaWNhdGlvbmNvbnRlbnRfc3RhdHVzOiBOT1RJRklDQVRJT05fU1RBVFVTLm5ldyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHt9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUobWFwKChkYXRhOiBBcGlSZXNwb25zZU1vZGVsPE5vdGlmaWNhdGlvbk1vZGVsPikgPT4gZGF0YS50b3RhbFNpemUgPz8gMCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm90aWZpY2F0aW9uc01vbmdvKHBheWxvYWQ6IFBheWxvYWRQYXJhbXNNb2RlbCA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0Tm90aWZpY2F0aW9ucyhcclxuICAgICAgTm90aWZpY2F0aW9uc1NlcnZpY2UucHJvdmlkZXJzLm5vdGlmaWNhdGlvbnNNYW5nbyxcclxuICAgICAgcGF5bG9hZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldE5vdGlmaWNhdGlvbnMocGF5bG9hZDogUGF5bG9hZFBhcmFtc01vZGVsID0ge30pIHtcclxuICAgIHJldHVybiB0aGlzLl9nZXROb3RpZmljYXRpb25zKE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnByb3ZpZGVycy5ub3RpZmljYXRpb25zLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIG1hcmtBbGxBc1JlYWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsT3BlcmF0aW9uKCdtYXJrQWxsQXNSZWFkJyk7XHJcbiAgfVxyXG5cclxuICBtYXJrQWxsTmV3QXNVbnJlYWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsT3BlcmF0aW9uKCdtYXJrQWxsQXNVbnJlYWQnKTtcclxuICB9XHJcblxyXG4gIG1hcmtBc1JlYWQoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGlvbihpZCwgJ21hcmtBc1JlYWQnKTtcclxuICB9XHJcblxyXG4gIG1hcmtBc1VucmVhZChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3BlcmF0aW9uKGlkLCAnbWFya0FzVW5yZWFkJyk7XHJcbiAgfVxyXG5cclxuICBtYXJrQXNEZWxldGVkKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVyYXRpb24oaWQsICdtYXJrQXNEZWxldGVkJyk7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZShpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3BlcmF0aW9uKGlkLCAndW5zdWJzY3JpYmUnKTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZShpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3BlcmF0aW9uKGlkLCAnc3Vic2NyaWJlJywge1xyXG4gICAgICBjb21wYW55TmFtZTogdGhpcy5fdGVuYW50SWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0U3Vic2NyaXB0aW9ucygpIHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLl9udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKE5vdGlmaWNhdGlvbnNTZXJ2aWNlLm9wZXJhdGlvbnMucmVzZXQsIHtcclxuICAgICAgICAgIHVybDogYCR7dGhpcy5fZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLl9lbnZpcm9ubWVudC5jdXN0b21BdXRvbWF0aW9ufWAsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAucGFyYW1zKHtcclxuICAgICAgICAgIGNvbXBhbnlOYW1lOiB0aGlzLl90ZW5hbnRJZCxcclxuICAgICAgICAgIGFwcGxpY2F0aW9uS2V5OiB0aGlzLl9hcHBLZXksXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuZXhlY3V0ZSgpXHJcbiAgICApIGFzIE9ic2VydmFibGU8QXV0b21hdGlvblJlc3BvbnNlTW9kZWw8UmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+Pj47XHJcbiAgfVxyXG5cclxuICBnZXRTb3VyY2VUeXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9nZXRWb2NhYnVsYXJ5KFxyXG4gICAgICBgJHt0aGlzLl9lbnZpcm9ubWVudC5udXhlb30ke05vdGlmaWNhdGlvbnNTZXJ2aWNlLnNvdXJjZVR5cGV9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldENoYW5uZWxzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dldFZvY2FidWxhcnkoXHJcbiAgICAgIGAke3RoaXMuX2Vudmlyb25tZW50Lm51eGVvfSR7Tm90aWZpY2F0aW9uc1NlcnZpY2UuY2hhbm5lbHN9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldERlZmluaXRpb25zKHBheWxvYWQ6IFBheWxvYWRQYXJhbXNNb2RlbCA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGFnZVByb3ZpZGVyOiBOb3RpZmljYXRpb25zU2VydmljZS5wcm92aWRlcnMuZGVmaW5pdGlvbixcclxuICAgICAgICAgIG5vdGZub3RpZmljYXRpb25kZWZfYXBwbGljYXRpb25LZXk6IHRoaXMuX2FwcEtleSxcclxuICAgICAgICAgIHBhZ2VTaXplOiAxMDAwLFxyXG4gICAgICAgICAgLi4ucGF5bG9hZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgcHJvcGVydGllczogJyonLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUobWFwKChkYXRhOiBBcGlSZXNwb25zZU1vZGVsPE5vdGlmaWNhdGlvbkRlZmluaXRpb25Nb2RlbD4pID0+IGRhdGEuZW50cmllcykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3Vic2NyaXB0aW9ucyhwYXlsb2FkOiBQYXlsb2FkUGFyYW1zTW9kZWwgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGxBcGlcclxuICAgICAgLnF1ZXJ5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBhZ2VQcm92aWRlcjogTm90aWZpY2F0aW9uc1NlcnZpY2UucHJvdmlkZXJzLnN1YnNjcmlwdGlvbixcclxuICAgICAgICAgIG5vdGZzdWJzY3JpcHRpb25fY29tcGFueU5hbWU6IHRoaXMuX3RlbmFudElkLFxyXG4gICAgICAgICAgbm90ZnN1YnNjcmlwdGlvbl9hcHBsaWNhdGlvbktleTogdGhpcy5fYXBwS2V5LFxyXG4gICAgICAgICAgcGFnZVNpemU6IDEwMDAsXHJcbiAgICAgICAgICAuLi5wYXlsb2FkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiAnKicsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShtYXAoKGRhdGE6IEFwaVJlc3BvbnNlTW9kZWw8Tm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uTW9kZWw+KSA9PiBkYXRhLmVudHJpZXMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE5vdGlmaWNhdGlvbnMocGFnZVByb3ZpZGVyOiBzdHJpbmcsIHBheWxvYWQ6IFBheWxvYWRQYXJhbXNNb2RlbCA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGFnZVByb3ZpZGVyOiBwYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgICBub3Rmbm90aWZpY2F0aW9uY29udGVudF9jb21wYW55OiB0aGlzLl90ZW5hbnRJZCxcclxuICAgICAgICAgIG5vdGZub3RpZmljYXRpb25jb250ZW50X2FwcGxpY2F0aW9uS2V5OiB0aGlzLl9hcHBLZXksXHJcbiAgICAgICAgICAuLi5wYXlsb2FkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiAnKicsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGRhdGE6IEFwaVJlc3BvbnNlTW9kZWw8Tm90aWZpY2F0aW9uTW9kZWw+KSA9PlxyXG4gICAgICAgICAgbWFwTm90aWZpY2F0aW9uc1RvUGFnaW5nUmVzcG9uc2UoZGF0YSlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRWb2NhYnVsYXJ5KHVybDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8QXBpUmVzcG9uc2VNb2RlbDxWb2NhYnVsYXJ5VHlwZT4+KHVybCkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZW50cmllcyksXHJcbiAgICAgIG1hcCgoZGF0YSkgPT5cclxuICAgICAgICBkYXRhLnNvcnQoKGEsIGIpID0+XHJcbiAgICAgICAgICBiLnByb3BlcnRpZXNbJ29yZGVyaW5nJ10gPCBhLnByb3BlcnRpZXNbJ29yZGVyaW5nJ10gPyAxIDogLTFcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vcGVyYXRpb248VFJlc3BvbnNlID0gUmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+PihcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICBvcHRpb246IGtleW9mIHR5cGVvZiBOb3RpZmljYXRpb25zU2VydmljZS5vcGVyYXRpb25zLFxyXG4gICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cclxuICApIHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLl9udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKE5vdGlmaWNhdGlvbnNTZXJ2aWNlLm9wZXJhdGlvbnNbb3B0aW9uXSwge1xyXG4gICAgICAgICAgdXJsOiBgJHt0aGlzLl9lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuX2Vudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5wYXJhbXMocGFyYW1zKVxyXG4gICAgICAgIC5pbnB1dChpZClcclxuICAgICAgICAuZXhlY3V0ZSgpXHJcbiAgICApIGFzIE9ic2VydmFibGU8QXV0b21hdGlvblJlc3BvbnNlTW9kZWw8VFJlc3BvbnNlPj47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nbG9iYWxPcGVyYXRpb24oXHJcbiAgICBvcHRpb246IGtleW9mIHR5cGVvZiBOb3RpZmljYXRpb25zU2VydmljZS5vcGVyYXRpb25zLFxyXG4gICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcbiAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cclxuICApIHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLl9udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKE5vdGlmaWNhdGlvbnNTZXJ2aWNlLm9wZXJhdGlvbnNbb3B0aW9uXSwge1xyXG4gICAgICAgICAgdXJsOiBgJHt0aGlzLl9lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuX2Vudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgY29tcGFueU5hbWU6IHRoaXMuX3RlbmFudElkLFxyXG4gICAgICAgICAgYXBwbGljYXRpb25LZXk6IHRoaXMuX2FwcEtleSxcclxuICAgICAgICAgIC4uLnBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5leGVjdXRlKHt9KVxyXG4gICAgKSBhcyBPYnNlcnZhYmxlPEF1dG9tYXRpb25SZXNwb25zZU1vZGVsPFJlY29yZDxQcm9wZXJ0eUtleSwgYW55Pj4+O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9ub3RpZmljYXRpb25zL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFTbkQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFFakQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUErQnJEOztPQUVHO0lBQ0gsWUFDbUMsWUFBaUMsRUFDeEQsYUFBMkIsRUFDM0IsUUFBd0IsRUFDeEIsS0FBaUI7O1FBRTNCLEtBQUssQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFMRixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDeEQsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQXJDN0IscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUF5Q3pELCtDQUErQztRQUM3QyxJQUFJLE1BQUEsTUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsMENBQUUsSUFBSSwwQ0FBRSxFQUFFLEVBQUU7WUFD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YywrQkFBVSxHQUFHO0lBQzNCLGFBQWEsRUFBRSxnQ0FBZ0M7SUFDL0MsVUFBVSxFQUFFLDZCQUE2QjtJQUN6QyxZQUFZLEVBQUUsK0JBQStCO0lBQzdDLGFBQWEsRUFBRSxrQ0FBa0M7SUFDakQsV0FBVyxFQUFFLG9DQUFvQztJQUNqRCxTQUFTLEVBQUUsa0NBQWtDO0lBQzdDLEtBQUssRUFBRSwwQ0FBMEM7SUFDakQsZUFBZSxFQUFFLGtDQUFrQztDQUNwRCxDQUFDO2tIQXJCUyxvQkFBb0Isa0JBbUNyQixhQUFhO3NIQW5DWixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTs7MEJBb0NOLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBcGlSZXNwb25zZU1vZGVsLCBBdXRvbWF0aW9uUmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQ2FsbEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2NhbGxBcGkvY2FsbC1hcGkuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOT1RJRklDQVRJT05fU1RBVFVTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICBOb3RpZmljYXRpb25EZWZpbml0aW9uTW9kZWwsXHJcbiAgTm90aWZpY2F0aW9uTWVzc2FnZU1vZGVsLFxyXG4gIE5vdGlmaWNhdGlvbk1vZGVsLFxyXG4gIE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbk1vZGVsLFxyXG4gIFBheWxvYWRQYXJhbXNNb2RlbCxcclxuICBWb2NhYnVsYXJ5VHlwZSxcclxufSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBtYXBOb3RpZmljYXRpb25zVG9QYWdpbmdSZXNwb25zZSB9IGZyb20gJy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IFNvY2tldFNlcnZpY2UgfSBmcm9tICcuL3NvY2tldC5zZXJ2aWNlJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uc1NlcnZpY2UgZXh0ZW5kcyBTb2NrZXRTZXJ2aWNlIHtcclxuICBsaXN0ZW5lck9ic2VydmVyID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uTWVzc2FnZU1vZGVsPigpO1xyXG4gIHN0YXRpYyByZWFkb25seSBzb3VyY2VUeXBlID0gJy9hcGkvdjEvZGlyZWN0b3J5L1ZPQ19Ob3RmX1NvdXJjZVR5cGVzJztcclxuICBzdGF0aWMgcmVhZG9ubHkgY2hhbm5lbHMgPSAnL2FwaS92MS9kaXJlY3RvcnkvVk9DX05vdGZfTm90aWZpY2F0aW9uQ2hhbm5lbHMnO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgcHJvdmlkZXJzID0ge1xyXG4gICAgbm90aWZpY2F0aW9uczogJ1BQX05vdGZOb3RpZmljYXRpb25Db250ZW50JyxcclxuICAgIG5vdGlmaWNhdGlvbnNNYW5nbzogJ1BQX05vdGZOb3RpZmljYXRpb25Db250ZW50X01vbmdvJyxcclxuICAgIHN1YnNjcmlwdGlvbjogJ1BQX05vdGZTdWJzY3JpcHRpb25fTW9uZ28nLFxyXG4gICAgZGVmaW5pdGlvbjogJ1BQX05vdGZOb3RpZmljYXRpb25EZWZpbml0aW9uX01vbmdvJyxcclxuICB9O1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgb3BlcmF0aW9ucyA9IHtcclxuICAgIG1hcmtBbGxBc1JlYWQ6ICdBQ19VQV9Ob3RmTm90aWZpY2F0aW9uX1JlYWRBbGwnLFxyXG4gICAgbWFya0FzUmVhZDogJ0FDX1VBX05vdGZOb3RpZmljYXRpb25fUmVhZCcsXHJcbiAgICBtYXJrQXNVbnJlYWQ6ICdBQ19VQV9Ob3RmTm90aWZpY2F0aW9uX1VucmVhZCcsXHJcbiAgICBtYXJrQXNEZWxldGVkOiAnQUNfVUFfTm90Zk5vdGlmaWNhdGlvbl9Ub0RlbGV0ZWQnLFxyXG4gICAgdW5zdWJzY3JpYmU6ICdBQ19VQV9Ob3RmTm90aWZpY2F0aW9uX1Vuc3Vic2NyaWJlJyxcclxuICAgIHN1YnNjcmliZTogJ0FDX1VBX05vdGZOb3RpZmljYXRpb25fU3Vic2NyaWJlJyxcclxuICAgIHJlc2V0OiAnQUNfVUFfTm90Zk5vdGlmaWNhdGlvbl9SZXNldFN1YnNjcmlwdGlvbicsXHJcbiAgICBtYXJrQWxsQXNVbnJlYWQ6ICdBQ19VQV9Ob3RmTm90aWZpY2F0aW9uX1VucmVhZEFsbCcsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgX3RlbmFudElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX251eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudGVuYW50SWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBfYXBwS2V5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50Py5hcHBLZXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgX2Vudmlyb25tZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgcHJvdGVjdGVkIF9udXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBfY2FsbEFwaTogQ2FsbEFwaVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgX2h0dHA6IEh0dHBDbGllbnRcclxuICApIHtcclxuICAgIHN1cGVyKF9lbnZpcm9ubWVudCwgX251eGVvU2VydmljZSk7XHJcblxyXG4gICAgLy8gdGhpcy5fbnV4ZW9TZXJ2aWNlLmluaXQoKS50aGVuKChjbGllbnQpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX251eGVvU2VydmljZS5udXhlb0NsaWVudD8udXNlcj8uaWQpIHtcclxuICAgICAgICB0aGlzLnNvY2tldENvbm5lY3QoKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLm9uTWVzc2FnZSQpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lck9ic2VydmVyLm5leHQocmVzKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIGdldFVuUmVhZENvdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGFnZVByb3ZpZGVyOiBOb3RpZmljYXRpb25zU2VydmljZS5wcm92aWRlcnMubm90aWZpY2F0aW9uc01hbmdvLFxyXG4gICAgICAgICAgcGFnZVNpemU6IDEsXHJcbiAgICAgICAgICBub3Rmbm90aWZpY2F0aW9uY29udGVudF9jb21wYW55OiB0aGlzLl90ZW5hbnRJZCxcclxuICAgICAgICAgIG5vdGZub3RpZmljYXRpb25jb250ZW50X2FwcGxpY2F0aW9uS2V5OiB0aGlzLl9hcHBLZXksXHJcbiAgICAgICAgICBub3Rmbm90aWZpY2F0aW9uY29udGVudF9zdGF0dXM6IE5PVElGSUNBVElPTl9TVEFUVVMubmV3LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge31cclxuICAgICAgKVxyXG4gICAgICAucGlwZShtYXAoKGRhdGE6IEFwaVJlc3BvbnNlTW9kZWw8Tm90aWZpY2F0aW9uTW9kZWw+KSA9PiBkYXRhLnRvdGFsU2l6ZSA/PyAwKSk7XHJcbiAgfVxyXG5cclxuICBnZXROb3RpZmljYXRpb25zTW9uZ28ocGF5bG9hZDogUGF5bG9hZFBhcmFtc01vZGVsID0ge30pIHtcclxuICAgIHJldHVybiB0aGlzLl9nZXROb3RpZmljYXRpb25zKFxyXG4gICAgICBOb3RpZmljYXRpb25zU2VydmljZS5wcm92aWRlcnMubm90aWZpY2F0aW9uc01hbmdvLFxyXG4gICAgICBwYXlsb2FkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm90aWZpY2F0aW9ucyhwYXlsb2FkOiBQYXlsb2FkUGFyYW1zTW9kZWwgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dldE5vdGlmaWNhdGlvbnMoTm90aWZpY2F0aW9uc1NlcnZpY2UucHJvdmlkZXJzLm5vdGlmaWNhdGlvbnMsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgbWFya0FsbEFzUmVhZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9nbG9iYWxPcGVyYXRpb24oJ21hcmtBbGxBc1JlYWQnKTtcclxuICB9XHJcblxyXG4gIG1hcmtBbGxOZXdBc1VucmVhZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9nbG9iYWxPcGVyYXRpb24oJ21hcmtBbGxBc1VucmVhZCcpO1xyXG4gIH1cclxuXHJcbiAgbWFya0FzUmVhZChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3BlcmF0aW9uKGlkLCAnbWFya0FzUmVhZCcpO1xyXG4gIH1cclxuXHJcbiAgbWFya0FzVW5yZWFkKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVyYXRpb24oaWQsICdtYXJrQXNVbnJlYWQnKTtcclxuICB9XHJcblxyXG4gIG1hcmtBc0RlbGV0ZWQoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGlvbihpZCwgJ21hcmtBc0RlbGV0ZWQnKTtcclxuICB9XHJcblxyXG4gIHVuc3Vic2NyaWJlKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVyYXRpb24oaWQsICd1bnN1YnNjcmliZScpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVyYXRpb24oaWQsICdzdWJzY3JpYmUnLCB7XHJcbiAgICAgIGNvbXBhbnlOYW1lOiB0aGlzLl90ZW5hbnRJZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTdWJzY3JpcHRpb25zKCkge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMuX251eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgIC5vcGVyYXRpb24oTm90aWZpY2F0aW9uc1NlcnZpY2Uub3BlcmF0aW9ucy5yZXNldCwge1xyXG4gICAgICAgICAgdXJsOiBgJHt0aGlzLl9lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuX2Vudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgY29tcGFueU5hbWU6IHRoaXMuX3RlbmFudElkLFxyXG4gICAgICAgICAgYXBwbGljYXRpb25LZXk6IHRoaXMuX2FwcEtleSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuICAgICkgYXMgT2JzZXJ2YWJsZTxBdXRvbWF0aW9uUmVzcG9uc2VNb2RlbDxSZWNvcmQ8UHJvcGVydHlLZXksIGFueT4+PjtcclxuICB9XHJcblxyXG4gIGdldFNvdXJjZVR5cGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dldFZvY2FidWxhcnkoXHJcbiAgICAgIGAke3RoaXMuX2Vudmlyb25tZW50Lm51eGVvfSR7Tm90aWZpY2F0aW9uc1NlcnZpY2Uuc291cmNlVHlwZX1gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hhbm5lbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0Vm9jYWJ1bGFyeShcclxuICAgICAgYCR7dGhpcy5fZW52aXJvbm1lbnQubnV4ZW99JHtOb3RpZmljYXRpb25zU2VydmljZS5jaGFubmVsc31gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmaW5pdGlvbnMocGF5bG9hZDogUGF5bG9hZFBhcmFtc01vZGVsID0ge30pIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxsQXBpXHJcbiAgICAgIC5xdWVyeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYWdlUHJvdmlkZXI6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnByb3ZpZGVycy5kZWZpbml0aW9uLFxyXG4gICAgICAgICAgbm90Zm5vdGlmaWNhdGlvbmRlZl9hcHBsaWNhdGlvbktleTogdGhpcy5fYXBwS2V5LFxyXG4gICAgICAgICAgcGFnZVNpemU6IDEwMDAsXHJcbiAgICAgICAgICAuLi5wYXlsb2FkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiAnKicsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShtYXAoKGRhdGE6IEFwaVJlc3BvbnNlTW9kZWw8Tm90aWZpY2F0aW9uRGVmaW5pdGlvbk1vZGVsPikgPT4gZGF0YS5lbnRyaWVzKSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJzY3JpcHRpb25zKHBheWxvYWQ6IFBheWxvYWRQYXJhbXNNb2RlbCA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsbEFwaVxyXG4gICAgICAucXVlcnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGFnZVByb3ZpZGVyOiBOb3RpZmljYXRpb25zU2VydmljZS5wcm92aWRlcnMuc3Vic2NyaXB0aW9uLFxyXG4gICAgICAgICAgbm90ZnN1YnNjcmlwdGlvbl9jb21wYW55TmFtZTogdGhpcy5fdGVuYW50SWQsXHJcbiAgICAgICAgICBub3Rmc3Vic2NyaXB0aW9uX2FwcGxpY2F0aW9uS2V5OiB0aGlzLl9hcHBLZXksXHJcbiAgICAgICAgICBwYWdlU2l6ZTogMTAwMCxcclxuICAgICAgICAgIC4uLnBheWxvYWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6ICcqJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKG1hcCgoZGF0YTogQXBpUmVzcG9uc2VNb2RlbDxOb3RpZmljYXRpb25TdWJzY3JpcHRpb25Nb2RlbD4pID0+IGRhdGEuZW50cmllcykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Tm90aWZpY2F0aW9ucyhwYWdlUHJvdmlkZXI6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZFBhcmFtc01vZGVsID0ge30pIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxsQXBpXHJcbiAgICAgIC5xdWVyeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYWdlUHJvdmlkZXI6IHBhZ2VQcm92aWRlcixcclxuICAgICAgICAgIG5vdGZub3RpZmljYXRpb25jb250ZW50X2NvbXBhbnk6IHRoaXMuX3RlbmFudElkLFxyXG4gICAgICAgICAgbm90Zm5vdGlmaWNhdGlvbmNvbnRlbnRfYXBwbGljYXRpb25LZXk6IHRoaXMuX2FwcEtleSxcclxuICAgICAgICAgIC4uLnBheWxvYWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6ICcqJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YTogQXBpUmVzcG9uc2VNb2RlbDxOb3RpZmljYXRpb25Nb2RlbD4pID0+XHJcbiAgICAgICAgICBtYXBOb3RpZmljYXRpb25zVG9QYWdpbmdSZXNwb25zZShkYXRhKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFZvY2FidWxhcnkodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxBcGlSZXNwb25zZU1vZGVsPFZvY2FidWxhcnlUeXBlPj4odXJsKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5lbnRyaWVzKSxcclxuICAgICAgbWFwKChkYXRhKSA9PlxyXG4gICAgICAgIGRhdGEuc29ydCgoYSwgYikgPT5cclxuICAgICAgICAgIGIucHJvcGVydGllc1snb3JkZXJpbmcnXSA8IGEucHJvcGVydGllc1snb3JkZXJpbmcnXSA/IDEgOiAtMVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZXJhdGlvbjxUUmVzcG9uc2UgPSBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT4+KFxyXG4gICAgaWQ6IHN0cmluZyxcclxuICAgIG9wdGlvbjoga2V5b2YgdHlwZW9mIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLm9wZXJhdGlvbnMsXHJcbiAgICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxyXG4gICkge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMuX251eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgIC5vcGVyYXRpb24oTm90aWZpY2F0aW9uc1NlcnZpY2Uub3BlcmF0aW9uc1tvcHRpb25dLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuX2Vudmlyb25tZW50Lm51eGVvfSR7dGhpcy5fZW52aXJvbm1lbnQuY3VzdG9tQXV0b21hdGlvbn1gLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnBhcmFtcyhwYXJhbXMpXHJcbiAgICAgICAgLmlucHV0KGlkKVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuICAgICkgYXMgT2JzZXJ2YWJsZTxBdXRvbWF0aW9uUmVzcG9uc2VNb2RlbDxUUmVzcG9uc2U+PjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dsb2JhbE9wZXJhdGlvbihcclxuICAgIG9wdGlvbjoga2V5b2YgdHlwZW9mIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLm9wZXJhdGlvbnMsXHJcbiAgICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcclxuICAgIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxyXG4gICkge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMuX251eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgIC5vcGVyYXRpb24oTm90aWZpY2F0aW9uc1NlcnZpY2Uub3BlcmF0aW9uc1tvcHRpb25dLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuX2Vudmlyb25tZW50Lm51eGVvfSR7dGhpcy5fZW52aXJvbm1lbnQuY3VzdG9tQXV0b21hdGlvbn1gLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnBhcmFtcyh7XHJcbiAgICAgICAgICBjb21wYW55TmFtZTogdGhpcy5fdGVuYW50SWQsXHJcbiAgICAgICAgICBhcHBsaWNhdGlvbktleTogdGhpcy5fYXBwS2V5LFxyXG4gICAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmV4ZWN1dGUoe30pXHJcbiAgICApIGFzIE9ic2VydmFibGU8QXV0b21hdGlvblJlc3BvbnNlTW9kZWw8UmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+Pj47XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -10963,7 +10963,7 @@ class DataViewerComponent {
|
|
|
10963
10963
|
}
|
|
10964
10964
|
}
|
|
10965
10965
|
DataViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10966
|
-
DataViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DataViewerComponent, selector: "cts-data-viewer", inputs: { label: "label", value: "value", vertical: "vertical", customClass: "customClass" }, ngImport: i0, template: "<div class=\"my-dynamic-viewer {{customClass}}\" \r\n[ngClass]=\"{'vertical' : vertical === true}\">\r\n <div class=\"my-label\" matTooltip=\"{{label | translate}}\">{{label | translate}}</div>\r\n <div class=\"my-value\"> \r\n <span class=\"direction-img\">\r\n <i class=\"bi bi-box-arrow-down incoming\"></i>\r\n <i class=\"bi bi-box-arrow-up outgoing\"></i>\r\n <i class=\"bi bi-box-arrow-right internal\"></i>\r\n </span>\r\n <span class=\"text\" matTooltip=\"{{value ? value : '-'}}\">\r\n {{value ? value : '-'}}\r\n </span>\r\n \r\n </div> \r\n</div>\r\n", styles: [""], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i1$1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
10966
|
+
DataViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DataViewerComponent, selector: "cts-data-viewer", inputs: { label: "label", value: "value", vertical: "vertical", defultValue: "defultValue", customClass: "customClass" }, ngImport: i0, template: "<div class=\"my-dynamic-viewer {{customClass}}\" \r\n[ngClass]=\"{'vertical' : vertical === true}\">\r\n <div class=\"my-label\" matTooltip=\"{{label | translate}}\">{{label | translate}}</div>\r\n <div class=\"my-value\"> \r\n <span class=\"direction-img\">\r\n <i class=\"bi bi-box-arrow-down incoming\"></i>\r\n <i class=\"bi bi-box-arrow-up outgoing\"></i>\r\n <i class=\"bi bi-box-arrow-right internal\"></i>\r\n </span>\r\n <span class=\"text\" matTooltip=\"{{value ? value : '-'}}\">\r\n {{value ? value : (defultValue ? (defultValue | translate) : '-')}}\r\n </span>\r\n \r\n </div> \r\n</div>\r\n", styles: [""], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i1$1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
10967
10967
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataViewerComponent, decorators: [{
|
|
10968
10968
|
type: Component,
|
|
10969
10969
|
args: [{
|
|
@@ -10978,6 +10978,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
10978
10978
|
type: Input
|
|
10979
10979
|
}], vertical: [{
|
|
10980
10980
|
type: Input
|
|
10981
|
+
}], defultValue: [{
|
|
10982
|
+
type: Input
|
|
10981
10983
|
}], customClass: [{
|
|
10982
10984
|
type: Input
|
|
10983
10985
|
}] } });
|
|
@@ -15972,7 +15974,7 @@ class DynamicChartComponent {
|
|
|
15972
15974
|
if (this.tenantId) {
|
|
15973
15975
|
params['queryParams'] = `${this.tenantId}`;
|
|
15974
15976
|
}
|
|
15975
|
-
if (this.
|
|
15977
|
+
if (this.asigneeDepartments) {
|
|
15976
15978
|
params['assignment_department_1'] = JSON.stringify(this.asigneeDepartments);
|
|
15977
15979
|
}
|
|
15978
15980
|
return this.callApi
|
|
@@ -16005,34 +16007,37 @@ class DynamicChartComponent {
|
|
|
16005
16007
|
let secrecy;
|
|
16006
16008
|
let depCode;
|
|
16007
16009
|
let departmentName;
|
|
16008
|
-
let
|
|
16010
|
+
let direction;
|
|
16011
|
+
let restPrefix;
|
|
16009
16012
|
let myPrifx = `tenant_${this.tenantId}_cts_`;
|
|
16010
16013
|
if (item.fetchedKey['entity-type'] == 'group') {
|
|
16011
|
-
|
|
16014
|
+
restPrefix = item.key.replace(myPrifx, '');
|
|
16012
16015
|
groupSplit = restPrefix.split('_');
|
|
16013
16016
|
if (restPrefix.includes('Top_Secret')) {
|
|
16014
16017
|
secrecy = this.translationService.instant('vocabulary.VOC_SecrecyLevel.Top_Secret');
|
|
16015
|
-
depCode = groupSplit[groupSplit.length -
|
|
16016
|
-
let
|
|
16017
|
-
|
|
16018
|
-
|
|
16019
|
-
|
|
16020
|
-
|
|
16021
|
-
|
|
16022
|
-
|
|
16018
|
+
depCode = groupSplit[groupSplit.length - 3];
|
|
16019
|
+
let dirExtracted = groupSplit[0];
|
|
16020
|
+
direction = this.translationService.instant(dirExtracted[0].toUpperCase() + dirExtracted.substr(1).toLowerCase());
|
|
16021
|
+
this.departmentApiService.getDepartmentDetails(depCode).subscribe(res => {
|
|
16022
|
+
var _a, _b;
|
|
16023
|
+
departmentName = this.isArabic
|
|
16024
|
+
? (_a = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _a === void 0 ? void 0 : _a.properties['dept:arabicName']
|
|
16025
|
+
: (_b = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _b === void 0 ? void 0 : _b.properties['dept:englishName'];
|
|
16026
|
+
});
|
|
16023
16027
|
}
|
|
16024
16028
|
else {
|
|
16025
16029
|
secrecy = this.translationService.instant('vocabulary.VOC_SecrecyLevel.' + groupSplit[groupSplit.length - 1]);
|
|
16026
16030
|
depCode = groupSplit[groupSplit.length - 2];
|
|
16027
|
-
let
|
|
16028
|
-
|
|
16029
|
-
|
|
16030
|
-
|
|
16031
|
-
|
|
16032
|
-
|
|
16033
|
-
|
|
16031
|
+
let dirExtracted = groupSplit[0];
|
|
16032
|
+
direction = this.translationService.instant(dirExtracted[0].toUpperCase() + dirExtracted.substr(1).toLowerCase());
|
|
16033
|
+
this.departmentApiService.getDepartmentDetails(depCode).subscribe(res => {
|
|
16034
|
+
var _a, _b;
|
|
16035
|
+
departmentName = this.isArabic
|
|
16036
|
+
? (_a = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _a === void 0 ? void 0 : _a.properties['dept:arabicName']
|
|
16037
|
+
: (_b = res === null || res === void 0 ? void 0 : res.entries[0]) === null || _b === void 0 ? void 0 : _b.properties['dept:englishName'];
|
|
16038
|
+
});
|
|
16034
16039
|
}
|
|
16035
|
-
label =
|
|
16040
|
+
label = this.aggregations == 'assignment_department_agg' ? departmentName + '-' + secrecy : departmentName + ' ' + direction + '-' + secrecy;
|
|
16036
16041
|
}
|
|
16037
16042
|
else {
|
|
16038
16043
|
label = item.fetchedKey.fullName;
|
|
@@ -27299,22 +27304,22 @@ class NotificationsService extends SocketService {
|
|
|
27299
27304
|
*
|
|
27300
27305
|
*/
|
|
27301
27306
|
constructor(_environment, _nuxeoService, _callApi, _http) {
|
|
27307
|
+
var _a, _b;
|
|
27302
27308
|
super(_environment, _nuxeoService);
|
|
27303
27309
|
this._environment = _environment;
|
|
27304
27310
|
this._nuxeoService = _nuxeoService;
|
|
27305
27311
|
this._callApi = _callApi;
|
|
27306
27312
|
this._http = _http;
|
|
27307
27313
|
this.listenerObserver = new Subject();
|
|
27308
|
-
this._nuxeoService.init().then((client) => {
|
|
27309
|
-
|
|
27310
|
-
|
|
27311
|
-
this.
|
|
27312
|
-
|
|
27313
|
-
|
|
27314
|
-
|
|
27315
|
-
|
|
27316
|
-
|
|
27317
|
-
});
|
|
27314
|
+
// this._nuxeoService.init().then((client) => {
|
|
27315
|
+
if ((_b = (_a = this._nuxeoService.nuxeoClient) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id) {
|
|
27316
|
+
this.socketConnect()
|
|
27317
|
+
.pipe(switchMap(() => this.onMessage$), takeUntil(this._destroy$))
|
|
27318
|
+
.subscribe((res) => {
|
|
27319
|
+
this.listenerObserver.next(res);
|
|
27320
|
+
});
|
|
27321
|
+
}
|
|
27322
|
+
// });
|
|
27318
27323
|
}
|
|
27319
27324
|
get _tenantId() {
|
|
27320
27325
|
return this._nuxeoService.nuxeoClient.user.properties.tenantId;
|