@sd-angular/core 1.3.29 → 1.3.30

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.
Files changed (45) hide show
  1. package/bundles/sd-angular-core-grid.umd.js +50 -187
  2. package/bundles/sd-angular-core-grid.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-grid.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-grid.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
  6. package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
  7. package/bundles/sd-angular-core.umd.js +4 -4
  8. package/bundles/sd-angular-core.umd.min.js +1 -1
  9. package/bundles/sd-angular-core.umd.min.js.map +1 -1
  10. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.js +35 -27
  11. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.model.js +1 -1
  12. package/esm2015/grid/src/lib/grid.component.js +11 -118
  13. package/esm2015/public-api.js +1 -3
  14. package/esm2015/upload-excel/src/lib/upload-excel.component.js +1 -1
  15. package/fesm2015/sd-angular-core-grid.js +43 -142
  16. package/fesm2015/sd-angular-core-grid.js.map +1 -1
  17. package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
  18. package/fesm2015/sd-angular-core.js +0 -1
  19. package/fesm2015/sd-angular-core.js.map +1 -1
  20. package/grid/sd-angular-core-grid.metadata.json +1 -1
  21. package/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.d.ts +12 -12
  22. package/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.model.d.ts +1 -2
  23. package/grid/src/lib/grid.component.d.ts +5 -6
  24. package/package.json +1 -1
  25. package/public-api.d.ts +0 -1
  26. package/{sd-angular-core-1.3.29.tgz → sd-angular-core-1.3.30.tgz} +0 -0
  27. package/upload-excel/sd-angular-core-upload-excel.metadata.json +1 -1
  28. package/bundles/sd-angular-core-excel.umd.js +0 -500
  29. package/bundles/sd-angular-core-excel.umd.js.map +0 -1
  30. package/bundles/sd-angular-core-excel.umd.min.js +0 -16
  31. package/bundles/sd-angular-core-excel.umd.min.js.map +0 -1
  32. package/esm2015/excel/index.js +0 -2
  33. package/esm2015/excel/sd-angular-core-excel.js +0 -5
  34. package/esm2015/excel/src/lib/excel.model.js +0 -3
  35. package/esm2015/excel/src/lib/excel.service.js +0 -91
  36. package/esm2015/excel/src/public-api.js +0 -6
  37. package/excel/index.d.ts +0 -1
  38. package/excel/package.json +0 -12
  39. package/excel/sd-angular-core-excel.d.ts +0 -4
  40. package/excel/sd-angular-core-excel.metadata.json +0 -1
  41. package/excel/src/lib/excel.model.d.ts +0 -65
  42. package/excel/src/lib/excel.service.d.ts +0 -26
  43. package/excel/src/public-api.d.ts +0 -2
  44. package/fesm2015/sd-angular-core-excel.js +0 -100
  45. package/fesm2015/sd-angular-core-excel.js.map +0 -1
@@ -1,15 +1,15 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Component, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';
3
- import { SdExcelService } from '@sd-angular/core/excel';
4
3
  import { SdNotifyService } from '@sd-angular/core/notify';
5
4
  import { SdLoadingService } from '@sd-angular/core/loading';
6
5
  import { SdTranslateService } from '@sd-angular/core/translate';
7
6
  import hash from 'object-hash';
7
+ import { SdExportService } from '@sd-angular/core/export';
8
8
  export class SdGridPopupExportExcel {
9
- constructor(ref, loadingService, excelService, notifyService, translateService) {
9
+ constructor(ref, loadingService, exportService, notifyService, translateService) {
10
10
  this.ref = ref;
11
11
  this.loadingService = loadingService;
12
- this.excelService = excelService;
12
+ this.exportService = exportService;
13
13
  this.notifyService = notifyService;
14
14
  this.translateService = translateService;
15
15
  this.prefix = 'Popup Export Excel';
@@ -73,7 +73,7 @@ export class SdGridPopupExportExcel {
73
73
  }
74
74
  }
75
75
  }
76
- return yield this.excelService.generateExcelTemplate({
76
+ return yield this.exportService.generateTemplate({
77
77
  fileName: fileName || this.fileName,
78
78
  columns: this.generateExcelColumns(columns),
79
79
  sheets
@@ -86,10 +86,7 @@ export class SdGridPopupExportExcel {
86
86
  });
87
87
  this.generateTemplate = () => __awaiter(this, void 0, void 0, function* () {
88
88
  this.loadingService.start();
89
- const result = yield this.initDefaultTemplate().finally(this.loadingService.stop);
90
- if (result === null || result === void 0 ? void 0 : result.filePath) {
91
- this.excelService.downloadTemplate(result.filePath, `${this.fileName}.xlsx`);
92
- }
89
+ yield this.initDefaultTemplate().finally(this.loadingService.stop);
93
90
  });
94
91
  this.generateAndUploadTemplate = (columns, fileName) => __awaiter(this, void 0, void 0, function* () {
95
92
  var _b;
@@ -114,10 +111,13 @@ export class SdGridPopupExportExcel {
114
111
  }
115
112
  }
116
113
  }
117
- return yield this.excelService.generateAndUploadExcelTemplate(this.fullKey, {
118
- fileName: fileName || this.fileName,
119
- columns: this.generateExcelColumns(columns),
120
- sheets
114
+ return yield this.exportService.generateUploadTemplate({
115
+ key: this.fullKey,
116
+ template: {
117
+ fileName: fileName || this.fileName,
118
+ columns: this.generateExcelColumns(columns),
119
+ sheets
120
+ }
121
121
  });
122
122
  });
123
123
  this.onExportByTemplate = (excelConfig) => {
@@ -130,21 +130,24 @@ export class SdGridPopupExportExcel {
130
130
  this.ref.detectChanges();
131
131
  };
132
132
  this.uploadTemplate = () => __awaiter(this, void 0, void 0, function* () {
133
- const excelConfig = yield this.excelService.uploadTemplate(this.fullKey, this.validator);
133
+ const excelConfig = yield this.exportService.uploadTemplate({
134
+ key: this.fullKey,
135
+ validator: this.validator
136
+ });
134
137
  this.excelConfigs.push({
135
- name: excelConfig.name,
136
- fullPath: excelConfig.fullPath,
138
+ name: excelConfig.fileName,
139
+ fullPath: excelConfig.filePath,
137
140
  removable: true
138
141
  });
139
142
  this.ref.detectChanges();
140
143
  });
141
144
  this.downloadTemplate = (excelConfig) => {
142
- this.excelService.downloadTemplate(excelConfig.fullPath, excelConfig.name);
145
+ this.exportService.download(excelConfig.fullPath, excelConfig.name);
143
146
  };
144
147
  this.removeTemplate = (excelConfig) => {
145
148
  this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => __awaiter(this, void 0, void 0, function* () {
146
149
  this.loadingService.start();
147
- yield this.excelService.remove(this.fullKey, excelConfig.name).finally(this.loadingService.stop);
150
+ yield this.exportService.removeFile({ key: this.fullKey, fileName: excelConfig.name }).finally(this.loadingService.stop);
148
151
  const idx = this.excelConfigs.indexOf(excelConfig);
149
152
  this.excelConfigs.splice(idx, 1);
150
153
  this.ref.detectChanges();
@@ -176,13 +179,13 @@ export class SdGridPopupExportExcel {
176
179
  });
177
180
  }
178
181
  }
179
- this.exportByTemplate.emit({
180
- excelConfig: {
181
- fullPath: result.filePath,
182
- name: `[${this.fullKey}] Default.xlsx`
183
- },
184
- excelColumns
185
- });
182
+ // this.exportByTemplate.emit({
183
+ // excelConfig: {
184
+ // fullPath: result.filePath,
185
+ // name: `[${this.fullKey}] Default.xlsx`
186
+ // },
187
+ // excelColumns
188
+ // });
186
189
  this.ref.detectChanges();
187
190
  });
188
191
  this.newTemplate = () => {
@@ -271,7 +274,12 @@ export class SdGridPopupExportExcel {
271
274
  loadConfiguration() {
272
275
  return __awaiter(this, void 0, void 0, function* () {
273
276
  this.excelConfigs = [];
274
- this.excelConfigs = yield this.excelService.getFiles(this.fullKey);
277
+ const files = yield this.exportService.filesInFolder({ key: this.fullKey });
278
+ this.excelConfigs = files.map(e => ({
279
+ fullPath: e.filePath,
280
+ name: e.fileName,
281
+ removable: true
282
+ }));
275
283
  });
276
284
  }
277
285
  }
@@ -285,7 +293,7 @@ SdGridPopupExportExcel.decorators = [
285
293
  SdGridPopupExportExcel.ctorParameters = () => [
286
294
  { type: ChangeDetectorRef },
287
295
  { type: SdLoadingService },
288
- { type: SdExcelService },
296
+ { type: SdExportService },
289
297
  { type: SdNotifyService },
290
298
  { type: SdTranslateService }
291
299
  ];
@@ -299,4 +307,4 @@ SdGridPopupExportExcel.propDecorators = {
299
307
  exportOption: [{ type: Input }],
300
308
  exportByTemplate: [{ type: Output }]
301
309
  };
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZXhwb3J0LWV4Y2VsL2dyaWQtcG9wdXAtZXhwb3J0LWV4Y2VsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVILE9BQU8sRUFDTCxjQUFjLEVBR2YsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBUy9CLE1BQU0sT0FBTyxzQkFBc0I7SUEyQmpDLFlBQ1UsR0FBc0IsRUFDdEIsY0FBZ0MsRUFDaEMsWUFBNEIsRUFDNUIsYUFBOEIsRUFDOUIsZ0JBQW9DO1FBSnBDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUEvQnRDLFdBQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUN0QyxtQkFBYyxHQUFHLHNDQUFzQyxDQUFDO1FBRS9DLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFVVCxZQUFPLEdBQW1C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Q0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDOztLQUMxQjtJQTZJSyxpQkFBaUI7O1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckUsQ0FBQztLQUFBOzs7WUFsTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLDg1R0FBdUQ7O2FBRXhEOzs7WUE1QmtGLGlCQUFpQjtZQWNsRyxnQkFBZ0I7WUFWaEIsY0FBYztZQU1kLGVBQWU7WUFRZixrQkFBa0I7OztvQkFjakIsU0FBUyxTQUFDLE9BQU87a0JBQ2pCLEtBQUs7c0JBVUwsS0FBSzs0QkFDTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFDTCxLQUFLOytCQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgR3JpZEJhc2VPcHRpb25FeHBvcnQgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RFeGNlbFNlcnZpY2UsXHJcbiAgRXhjZWxDb25maWcsXHJcbiAgRXhjZWxUZW1wYXRlQ29sdW1uXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leGNlbCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTm90aWZ5U2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RMb2FkaW5nU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbG9hZGluZyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkVHJhbnNsYXRlU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgeyBNYXRSYWRpb0NoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgU2RNb2RhbCB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbW9kYWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1ncmlkLXBvcHVwLWV4cG9ydC1leGNlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcG9wdXAtZXhwb3J0LWV4Y2VsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncmlkLXBvcHVwLWV4cG9ydC1leGNlbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRQb3B1cEV4cG9ydEV4Y2VsIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIHByZWZpeCA9ICdQb3B1cCBFeHBvcnQgRXhjZWwnO1xyXG4gIG5ld0V4Y2VsQ29uZmlnID0gJ2ZkOGZiNWRiLWE3YWQtNDM5OC05M2FjLWNiMzM1MDI2MTE4MCc7XHJcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogU2RNb2RhbDtcclxuICBASW5wdXQoKSBrZXkgPSAnJztcclxuICBnZXQgZnVsbEtleSgpIHtcclxuICAgIGlmICghdGhpcy5rZXkpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc2goe1xyXG4gICAgICBwcmVmaXg6IHRoaXMucHJlZml4LFxyXG4gICAgICBrZXk6IHRoaXMua2V5XHJcbiAgICB9KTtcclxuICB9XHJcbiAgQElucHV0KCkgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBleHRlbmRDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFsaWRhdG9yOiAoZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGV4cG9ydE9wdGlvbjogR3JpZEJhc2VPcHRpb25FeHBvcnQ7XHJcbiAgZXhjZWxDb25maWdzOiBFeGNlbENvbmZpZ1tdID0gW107XHJcbiAgQE91dHB1dCgpIGV4cG9ydEJ5VGVtcGxhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXhjZWxDb25maWc6IEV4Y2VsQ29uZmlnLCBleGNlbENvbHVtbnM6IEV4Y2VsVGVtcGF0ZUNvbHVtbltdIH0+KCk7XHJcbiAgdGFiSW5kZXggPSAwO1xyXG4gIHNlbGVjdGVkRXhjZWxDb25maWc6IEV4Y2VsQ29uZmlnID0ge307XHJcbiAgZXhwb3J0YWJsZUNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgc2VsZWN0ZWQ6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW5cclxuICB9ID0ge307XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBTZExvYWRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleGNlbFNlcnZpY2U6IFNkRXhjZWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG9wZW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuZnVsbEtleSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5sb2FkQ29uZmlndXJhdGlvbigpO1xyXG4gICAgdGhpcy5leHBvcnRhYmxlQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnMsIC4uLih0aGlzLmV4dGVuZENvbHVtbnMgfHwgW10pXS5maWx0ZXIoZSA9PiBlLnR5cGUgIT09ICdpbWFnZScpO1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRXhjZWxDb25maWc/Lm5hbWUpIHtcclxuICAgICAgaWYgKHRoaXMuZXhjZWxDb25maWdzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV4Y2VsQ29uZmlnID0gdGhpcy5leGNlbENvbmZpZ3NbMF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV4Y2VsQ29uZmlnID0ge1xyXG4gICAgICAgICAgbmFtZTogdGhpcy5uZXdFeGNlbENvbmZpZ1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUV4Y2VsQ29sdW1ucyA9IChjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSkgPT4ge1xyXG4gICAgY29uc3QgZXhjZWxDb2x1bW5zOiBFeGNlbFRlbXBhdGVDb2x1bW5bXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkQ29sdW1uIG9mIGNvbHVtbi5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgZXhjZWxDb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGZpZWxkOiBjaGlsZENvbHVtbi5maWVsZCxcclxuICAgICAgICAgICAgICB0aXRsZTogY2hpbGRDb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNoaWxkQ29sdW1uLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiBjaGlsZENvbHVtbi53aWR0aFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICBleGNlbENvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgdGl0bGU6IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW4uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBleGNlbENvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUZW1wbGF0ZSA9IGFzeW5jIChjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbHVtbnMgPSBjb2x1bW5zIHx8IFtdO1xyXG4gICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgaXRlbXM6IGFueVtdLFxyXG4gICAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgICB9W10gPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXhwb3J0T3B0aW9uPy5zaGVldHMpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5leHBvcnRPcHRpb24uc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGNlbFNlcnZpY2UuZ2VuZXJhdGVFeGNlbFRlbXBsYXRlKHtcclxuICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMuZmlsZU5hbWUsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuZ2VuZXJhdGVFeGNlbENvbHVtbnMoY29sdW1ucyksXHJcbiAgICAgIHNoZWV0c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREZWZhdWx0VGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBleHRlbmRDb2x1bW5zID0gdGhpcy5leHRlbmRDb2x1bW5zIHx8IFtdO1xyXG4gICAgY29uc3QgY29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnMsIC4uLmV4dGVuZENvbHVtbnNdO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaW5pdFRlbXBsYXRlKGNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaW5pdERlZmF1bHRUZW1wbGF0ZSgpLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICAgIGlmIChyZXN1bHQ/LmZpbGVQYXRoKSB7XHJcbiAgICAgIHRoaXMuZXhjZWxTZXJ2aWNlLmRvd25sb2FkVGVtcGxhdGUocmVzdWx0LmZpbGVQYXRoLCBgJHt0aGlzLmZpbGVOYW1lfS54bHN4YCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUFuZFVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGNvbHVtbnM6IFNkR3JpZENvbHVtbltdLCBmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgaXRlbXM6IGFueVtdLFxyXG4gICAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgICB9W10gPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXhwb3J0T3B0aW9uPy5zaGVldHMpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5leHBvcnRPcHRpb24uc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGNlbFNlcnZpY2UuZ2VuZXJhdGVBbmRVcGxvYWRFeGNlbFRlbXBsYXRlKHRoaXMuZnVsbEtleSwge1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUgfHwgdGhpcy5maWxlTmFtZSxcclxuICAgICAgY29sdW1uczogdGhpcy5nZW5lcmF0ZUV4Y2VsQ29sdW1ucyhjb2x1bW5zKSxcclxuICAgICAgc2hlZXRzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0QnlUZW1wbGF0ZSA9IChleGNlbENvbmZpZzogRXhjZWxDb25maWcpID0+IHtcclxuICAgIGNvbnN0IGV4dGVuZENvbHVtbnMgPSB0aGlzLmV4dGVuZENvbHVtbnMgfHwgW107XHJcbiAgICBjb25zdCBjb2x1bW5zID0gWy4uLnRoaXMuY29sdW1ucywgLi4uZXh0ZW5kQ29sdW1uc107XHJcbiAgICB0aGlzLmV4cG9ydEJ5VGVtcGxhdGUuZW1pdCh7XHJcbiAgICAgIGV4Y2VsQ29uZmlnLFxyXG4gICAgICBleGNlbENvbHVtbnM6IHRoaXMuZ2VuZXJhdGVFeGNlbENvbHVtbnMoY29sdW1ucylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBleGNlbENvbmZpZyA9IGF3YWl0IHRoaXMuZXhjZWxTZXJ2aWNlLnVwbG9hZFRlbXBsYXRlKHRoaXMuZnVsbEtleSwgdGhpcy52YWxpZGF0b3IpO1xyXG4gICAgdGhpcy5leGNlbENvbmZpZ3MucHVzaCh7XHJcbiAgICAgIG5hbWU6IGV4Y2VsQ29uZmlnLm5hbWUsXHJcbiAgICAgIGZ1bGxQYXRoOiBleGNlbENvbmZpZy5mdWxsUGF0aCxcclxuICAgICAgcmVtb3ZhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkVGVtcGxhdGUgPSAoZXhjZWxDb25maWc6IEV4Y2VsQ29uZmlnKSA9PiB7XHJcbiAgICB0aGlzLmV4Y2VsU2VydmljZS5kb3dubG9hZFRlbXBsYXRlKGV4Y2VsQ29uZmlnLmZ1bGxQYXRoLCBleGNlbENvbmZpZy5uYW1lKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVRlbXBsYXRlID0gKGV4Y2VsQ29uZmlnOiBFeGNlbENvbmZpZykgPT4ge1xyXG4gICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmNvbmZpcm0odGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnUmVtb3ZlIHRlbXBsYXRlJykpLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZXhjZWxTZXJ2aWNlLnJlbW92ZSh0aGlzLmZ1bGxLZXksIGV4Y2VsQ29uZmlnLm5hbWUpLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICAgICAgY29uc3QgaWR4ID0gdGhpcy5leGNlbENvbmZpZ3MuaW5kZXhPZihleGNlbENvbmZpZyk7XHJcbiAgICAgIHRoaXMuZXhjZWxDb25maWdzLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5leGNlbENvbmZpZ3MgPSBbXTtcclxuICAgIHRoaXMuZXhjZWxDb25maWdzID0gYXdhaXQgdGhpcy5leGNlbFNlcnZpY2UuZ2V0RmlsZXModGhpcy5mdWxsS2V5KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydERlZmF1bHQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmluaXREZWZhdWx0VGVtcGxhdGUoKS5maW5hbGx5KHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCk7XHJcbiAgICBjb25zdCBleGNlbENvbHVtbnM6IEV4Y2VsVGVtcGF0ZUNvbHVtbltdID0gW107XHJcbiAgICBjb25zdCBleHRlbmRDb2x1bW5zID0gdGhpcy5leHRlbmRDb2x1bW5zIHx8IFtdO1xyXG4gICAgY29uc3QgY29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnMsIC4uLmV4dGVuZENvbHVtbnNdO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkQ29sdW1uIG9mIGNvbHVtbi5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgZXhjZWxDb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGZpZWxkOiBjaGlsZENvbHVtbi5maWVsZCxcclxuICAgICAgICAgICAgICB0aXRsZTogY2hpbGRDb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IGNoaWxkQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSAhPT0gJ2ltYWdlJykge1xyXG4gICAgICAgIGV4Y2VsQ29sdW1ucy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICB0aXRsZTogY29sdW1uLnRpdGxlLFxyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cG9ydEJ5VGVtcGxhdGUuZW1pdCh7XHJcbiAgICAgIGV4Y2VsQ29uZmlnOiB7XHJcbiAgICAgICAgZnVsbFBhdGg6IHJlc3VsdC5maWxlUGF0aCxcclxuICAgICAgICBuYW1lOiBgWyR7dGhpcy5mdWxsS2V5fV0gRGVmYXVsdC54bHN4YFxyXG4gICAgICB9LFxyXG4gICAgICBleGNlbENvbHVtbnNcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV3VGVtcGxhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybVdpdGhJbnB1dCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdFbnRlciB5b3VyIHRlbXBsYXRlIG5hbWUnKSwge1xyXG4gICAgICBtYXhsZW5ndGg6IDUwXHJcbiAgICB9KS50aGVuKGFzeW5jIChmaWxlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZSArICcueGxzeCc7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdG9yPy4oZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcodGhpcy52YWxpZGF0b3IoZmlsZU5hbWUpKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGV4cG9ydGFibGVDb2x1bW5zID0gdGhpcy5leHBvcnRhYmxlQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHRoaXMuc2VsZWN0ZWRbY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgaWYgKCFleHBvcnRhYmxlQ29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIGV4cG9ydGFibGVDb2x1bW5zID0gdGhpcy5leHBvcnRhYmxlQ29sdW1ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUFuZFVwbG9hZFRlbXBsYXRlKGV4cG9ydGFibGVDb2x1bW5zLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdD8uZmlsZVBhdGgpIHtcclxuICAgICAgICAgIGNvbnN0IGV4Y2VsQ29uZmlnOiBFeGNlbENvbmZpZyA9IHtcclxuICAgICAgICAgICAgZnVsbFBhdGg6IHJlc3VsdC5maWxlUGF0aCxcclxuICAgICAgICAgICAgbmFtZTogcmVzdWx0LmZpbGVOYW1lLFxyXG4gICAgICAgICAgICByZW1vdmFibGU6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmV4Y2VsQ29uZmlncy5wdXNoKGV4Y2VsQ29uZmlnKTtcclxuICAgICAgICAgIHRoaXMub25FeHBvcnRCeVRlbXBsYXRlKGV4Y2VsQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VSYWRpbyA9IChtYXRSYWRpb0NoYW5nZTogTWF0UmFkaW9DaGFuZ2UpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRXhjZWxDb25maWcgPSB0aGlzLmV4Y2VsQ29uZmlncy5maW5kKGUgPT4gZS5uYW1lID09PSBtYXRSYWRpb0NoYW5nZS52YWx1ZSk7XHJcbiAgICBpZiAoIXNlbGVjdGVkRXhjZWxDb25maWcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEV4Y2VsQ29uZmlnID0ge1xyXG4gICAgICAgIG5hbWU6IHRoaXMubmV3RXhjZWxDb25maWdcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFeGNlbENvbmZpZyA9IHNlbGVjdGVkRXhjZWxDb25maWc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cG9ydGFibGVDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1ucywgLi4uKHRoaXMuZXh0ZW5kQ29sdW1ucyB8fCBbXSldLmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0ge307XHJcbiAgfVxyXG59XHJcbiJdfQ==
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZXhwb3J0LWV4Y2VsL2dyaWQtcG9wdXAtZXhwb3J0LWV4Y2VsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVILE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUNMLGdCQUFnQixFQUNqQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFHL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTzFELE1BQU0sT0FBTyxzQkFBc0I7SUEyQmpDLFlBQ1UsR0FBc0IsRUFDdEIsY0FBZ0MsRUFDaEMsYUFBOEIsRUFDOUIsYUFBOEIsRUFDOUIsZ0JBQW9DO1FBSnBDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUEvQnRDLFdBQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUN0QyxtQkFBYyxHQUFHLHNDQUFzQyxDQUFDO1FBRS9DLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFVVCxZQUFPLEdBQW1C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LENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxFQUFFLENBQUMsQ0FBQztnQkFDakMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ2hCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztLQUFBOzs7WUExTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLDg1R0FBdUQ7O2FBRXhEOzs7WUF2QmtGLGlCQUFpQjtZQVFsRyxnQkFBZ0I7WUFTVCxlQUFlO1lBYnRCLGVBQWU7WUFRZixrQkFBa0I7OztvQkFlakIsU0FBUyxTQUFDLE9BQU87a0JBQ2pCLEtBQUs7c0JBVUwsS0FBSzs0QkFDTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFDTCxLQUFLOytCQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgR3JpZEJhc2VPcHRpb25FeHBvcnQgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZExvYWRpbmdTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9sb2FkaW5nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCB7IE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcbmltcG9ydCB7IFNkRXhwb3J0U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvZXhwb3J0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLXBvcHVwLWV4cG9ydC1leGNlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkUG9wdXBFeHBvcnRFeGNlbCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJpdmF0ZSBwcmVmaXggPSAnUG9wdXAgRXhwb3J0IEV4Y2VsJztcclxuICBuZXdFeGNlbENvbmZpZyA9ICdmZDhmYjVkYi1hN2FkLTQzOTgtOTNhYy1jYjMzNTAyNjExODAnO1xyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgQElucHV0KCkga2V5ID0gJyc7XHJcbiAgZ2V0IGZ1bGxLZXkoKSB7XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBoYXNoKHtcclxuICAgICAgcHJlZml4OiB0aGlzLnByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgQElucHV0KCkgZXh0ZW5kQ29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvcjogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHN0cmluZztcclxuICBASW5wdXQoKSBleHBvcnRPcHRpb246IEdyaWRCYXNlT3B0aW9uRXhwb3J0O1xyXG4gIGV4Y2VsQ29uZmlnczogYW55W10gPSBbXTtcclxuICBAT3V0cHV0KCkgZXhwb3J0QnlUZW1wbGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBleGNlbENvbmZpZzogYW55LCBleGNlbENvbHVtbnM6IGFueVtdIH0+KCk7XHJcbiAgdGFiSW5kZXggPSAwO1xyXG4gIHNlbGVjdGVkRXhjZWxDb25maWc6IGFueSA9IHt9O1xyXG4gIGV4cG9ydGFibGVDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIHNlbGVjdGVkOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgfSA9IHt9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG9wZW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuZnVsbEtleSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5sb2FkQ29uZmlndXJhdGlvbigpO1xyXG4gICAgdGhpcy5leHBvcnRhYmxlQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnMsIC4uLih0aGlzLmV4dGVuZENvbHVtbnMgfHwgW10pXS5maWx0ZXIoZSA9PiBlLnR5cGUgIT09ICdpbWFnZScpO1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRXhjZWxDb25maWc/Lm5hbWUpIHtcclxuICAgICAgaWYgKHRoaXMuZXhjZWxDb25maWdzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV4Y2VsQ29uZmlnID0gdGhpcy5leGNlbENvbmZpZ3NbMF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV4Y2VsQ29uZmlnID0ge1xyXG4gICAgICAgICAgbmFtZTogdGhpcy5uZXdFeGNlbENvbmZpZ1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUV4Y2VsQ29sdW1ucyA9IChjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSkgPT4ge1xyXG4gICAgY29uc3QgZXhjZWxDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkQ29sdW1uIG9mIGNvbHVtbi5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgZXhjZWxDb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGZpZWxkOiBjaGlsZENvbHVtbi5maWVsZCxcclxuICAgICAgICAgICAgICB0aXRsZTogY2hpbGRDb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNoaWxkQ29sdW1uLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiBjaGlsZENvbHVtbi53aWR0aFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICBleGNlbENvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgdGl0bGU6IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW4uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBleGNlbENvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUZW1wbGF0ZSA9IGFzeW5jIChjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbHVtbnMgPSBjb2x1bW5zIHx8IFtdO1xyXG4gICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgaXRlbXM6IGFueVtdLFxyXG4gICAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgICB9W10gPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXhwb3J0T3B0aW9uPy5zaGVldHMpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5leHBvcnRPcHRpb24uc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlVGVtcGxhdGUoe1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUgfHwgdGhpcy5maWxlTmFtZSxcclxuICAgICAgY29sdW1uczogdGhpcy5nZW5lcmF0ZUV4Y2VsQ29sdW1ucyhjb2x1bW5zKSxcclxuICAgICAgc2hlZXRzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdERlZmF1bHRUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IGV4dGVuZENvbHVtbnMgPSB0aGlzLmV4dGVuZENvbHVtbnMgfHwgW107XHJcbiAgICBjb25zdCBjb2x1bW5zID0gWy4uLnRoaXMuY29sdW1ucywgLi4uZXh0ZW5kQ29sdW1uc107XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0VGVtcGxhdGUoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVRlbXBsYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgYXdhaXQgdGhpcy5pbml0RGVmYXVsdFRlbXBsYXRlKCkuZmluYWxseSh0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3ApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBbmRVcGxvYWRUZW1wbGF0ZSA9IGFzeW5jIChjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgIGl0ZW1zOiBhbnlbXSxcclxuICAgICAgZmllbGRzOiBzdHJpbmdbXVxyXG4gICAgfVtdID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4cG9ydE9wdGlvbj8uc2hlZXRzKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMuZXhwb3J0T3B0aW9uLnNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIHNoZWV0Lml0ZW1zICYmIHNoZWV0LmZpZWxkcykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpKSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBzaGVldC5pdGVtcyxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVVwbG9hZFRlbXBsYXRlKHtcclxuICAgICAga2V5OiB0aGlzLmZ1bGxLZXksXHJcbiAgICAgIHRlbXBsYXRlOiB7XHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMuZmlsZU5hbWUsXHJcbiAgICAgICAgY29sdW1uczogdGhpcy5nZW5lcmF0ZUV4Y2VsQ29sdW1ucyhjb2x1bW5zKSxcclxuICAgICAgICBzaGVldHNcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydEJ5VGVtcGxhdGUgPSAoZXhjZWxDb25maWc6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgZXh0ZW5kQ29sdW1ucyA9IHRoaXMuZXh0ZW5kQ29sdW1ucyB8fCBbXTtcclxuICAgIGNvbnN0IGNvbHVtbnMgPSBbLi4udGhpcy5jb2x1bW5zLCAuLi5leHRlbmRDb2x1bW5zXTtcclxuICAgIHRoaXMuZXhwb3J0QnlUZW1wbGF0ZS5lbWl0KHtcclxuICAgICAgZXhjZWxDb25maWcsXHJcbiAgICAgIGV4Y2VsQ29sdW1uczogdGhpcy5nZW5lcmF0ZUV4Y2VsQ29sdW1ucyhjb2x1bW5zKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IGV4Y2VsQ29uZmlnID0gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLnVwbG9hZFRlbXBsYXRlKHtcclxuICAgICAga2V5OiB0aGlzLmZ1bGxLZXksXHJcbiAgICAgIHZhbGlkYXRvcjogdGhpcy52YWxpZGF0b3JcclxuICAgIH0pO1xyXG4gICAgdGhpcy5leGNlbENvbmZpZ3MucHVzaCh7XHJcbiAgICAgIG5hbWU6IGV4Y2VsQ29uZmlnLmZpbGVOYW1lLFxyXG4gICAgICBmdWxsUGF0aDogZXhjZWxDb25maWcuZmlsZVBhdGgsXHJcbiAgICAgIHJlbW92YWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlID0gKGV4Y2VsQ29uZmlnOiBhbnkpID0+IHtcclxuICAgIHRoaXMuZXhwb3J0U2VydmljZS5kb3dubG9hZChleGNlbENvbmZpZy5mdWxsUGF0aCwgZXhjZWxDb25maWcubmFtZSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVUZW1wbGF0ZSA9IChleGNlbENvbmZpZzogYW55KSA9PiB7XHJcbiAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdSZW1vdmUgdGVtcGxhdGUnKSkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLnJlbW92ZUZpbGUoe2tleTogdGhpcy5mdWxsS2V5LCBmaWxlTmFtZTogZXhjZWxDb25maWcubmFtZX0pLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICAgICAgY29uc3QgaWR4ID0gdGhpcy5leGNlbENvbmZpZ3MuaW5kZXhPZihleGNlbENvbmZpZyk7XHJcbiAgICAgIHRoaXMuZXhjZWxDb25maWdzLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5leGNlbENvbmZpZ3MgPSBbXTtcclxuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmZpbGVzSW5Gb2xkZXIoe2tleTogdGhpcy5mdWxsS2V5fSk7XHJcbiAgICB0aGlzLmV4Y2VsQ29uZmlncyA9IGZpbGVzLm1hcChlPT4gKHtcclxuICAgICAgZnVsbFBhdGg6IGUuZmlsZVBhdGgsXHJcbiAgICAgIG5hbWU6IGUuZmlsZU5hbWUsXHJcbiAgICAgIHJlbW92YWJsZTogdHJ1ZVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGVmYXVsdCA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaW5pdERlZmF1bHRUZW1wbGF0ZSgpLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICAgIGNvbnN0IGV4Y2VsQ29sdW1uczogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IGV4dGVuZENvbHVtbnMgPSB0aGlzLmV4dGVuZENvbHVtbnMgfHwgW107XHJcbiAgICBjb25zdCBjb2x1bW5zID0gWy4uLnRoaXMuY29sdW1ucywgLi4uZXh0ZW5kQ29sdW1uc107XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRDb2x1bW4gb2YgY29sdW1uLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHlwZSAhPT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICBleGNlbENvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgZmllbGQ6IGNoaWxkQ29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBjaGlsZENvbHVtbi50aXRsZSxcclxuICAgICAgICAgICAgICB3aWR0aDogY2hpbGRDb2x1bW4ud2lkdGhcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlICE9PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgZXhjZWxDb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRoaXMuZXhwb3J0QnlUZW1wbGF0ZS5lbWl0KHtcclxuICAgIC8vICAgZXhjZWxDb25maWc6IHtcclxuICAgIC8vICAgICBmdWxsUGF0aDogcmVzdWx0LmZpbGVQYXRoLFxyXG4gICAgLy8gICAgIG5hbWU6IGBbJHt0aGlzLmZ1bGxLZXl9XSBEZWZhdWx0Lnhsc3hgXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIGV4Y2VsQ29sdW1uc1xyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXdUZW1wbGF0ZSA9ICgpID0+IHtcclxuICAgIHRoaXMubm90aWZ5U2VydmljZS5jb25maXJtV2l0aElucHV0KHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0VudGVyIHlvdXIgdGVtcGxhdGUgbmFtZScpLCB7XHJcbiAgICAgIG1heGxlbmd0aDogNTBcclxuICAgIH0pLnRoZW4oYXN5bmMgKGZpbGVOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lICsgJy54bHN4JztcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAodGhpcy52YWxpZGF0b3I/LihmaWxlTmFtZSkpIHtcclxuICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyh0aGlzLnZhbGlkYXRvcihmaWxlTmFtZSkpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZXhwb3J0YWJsZUNvbHVtbnMgPSB0aGlzLmV4cG9ydGFibGVDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZWxlY3RlZFtjb2x1bW4uZmllbGRdKTtcclxuICAgICAgICBpZiAoIWV4cG9ydGFibGVDb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgZXhwb3J0YWJsZUNvbHVtbnMgPSB0aGlzLmV4cG9ydGFibGVDb2x1bW5zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdlbmVyYXRlQW5kVXBsb2FkVGVtcGxhdGUoZXhwb3J0YWJsZUNvbHVtbnMsIGZpbGVOYW1lKTtcclxuICAgICAgICBpZiAocmVzdWx0Py5maWxlUGF0aCkge1xyXG4gICAgICAgICAgY29uc3QgZXhjZWxDb25maWc6IGFueSA9IHtcclxuICAgICAgICAgICAgZnVsbFBhdGg6IHJlc3VsdC5maWxlUGF0aCxcclxuICAgICAgICAgICAgbmFtZTogcmVzdWx0LmZpbGVOYW1lLFxyXG4gICAgICAgICAgICByZW1vdmFibGU6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmV4Y2VsQ29uZmlncy5wdXNoKGV4Y2VsQ29uZmlnKTtcclxuICAgICAgICAgIHRoaXMub25FeHBvcnRCeVRlbXBsYXRlKGV4Y2VsQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VSYWRpbyA9IChtYXRSYWRpb0NoYW5nZTogTWF0UmFkaW9DaGFuZ2UpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRXhjZWxDb25maWcgPSB0aGlzLmV4Y2VsQ29uZmlncy5maW5kKGUgPT4gZS5uYW1lID09PSBtYXRSYWRpb0NoYW5nZS52YWx1ZSk7XHJcbiAgICBpZiAoIXNlbGVjdGVkRXhjZWxDb25maWcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEV4Y2VsQ29uZmlnID0ge1xyXG4gICAgICAgIG5hbWU6IHRoaXMubmV3RXhjZWxDb25maWdcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFeGNlbENvbmZpZyA9IHNlbGVjdGVkRXhjZWxDb25maWc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cG9ydGFibGVDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1ucywgLi4uKHRoaXMuZXh0ZW5kQ29sdW1ucyB8fCBbXSldLmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0ge307XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQvIiwic291cmNlcyI6WyJzcmMvbGliL2NvbXBvbmVudHMvZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwvZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4Y2VsQ29uZmlnIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leGNlbCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2VsQ29uZmlndXJhdGlvbiB7XHJcbiAgZXhjZWxDb25maWdzOiBFeGNlbENvbmZpZ1tdO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQvIiwic291cmNlcyI6WyJzcmMvbGliL2NvbXBvbmVudHMvZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwvZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXhjZWxDb25maWd1cmF0aW9uIHtcclxuICBleGNlbENvbmZpZ3M6IGFueVtdO1xyXG59XHJcbiJdfQ==