fx-form-builder-wrapper 0.0.94 → 0.0.96

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.
@@ -66,7 +66,7 @@ export class DynamicTableComponent extends FxBaseComponent {
66
66
  this.parseUrls(item[fileHeaderName], index, dynamicTableValues?.columns);
67
67
  }
68
68
  });
69
- this.tableConfig = this.initializeCheckboxDefaults(dynamicTableValues);
69
+ // this.tableConfig = this.initializeCheckboxDefaults(dynamicTableValues);
70
70
  // this.tableConfig = dynamicTableValues;
71
71
  this.fxData.value = this.tableConfig;
72
72
  // this.tableFormControl.reset();
@@ -214,6 +214,28 @@ export class DynamicTableComponent extends FxBaseComponent {
214
214
  }
215
215
  }
216
216
  }
217
+ // public drawTable(event: any, columns: any): void {
218
+ // let rows;
219
+ // this.http.get(event.api).subscribe((res: any) => {
220
+ // if(res) {
221
+ // rows = res.map((item: any) => {
222
+ // const newObj: Record<string, any> = {};
223
+ // columns.forEach((col: any) => {
224
+ // newObj[col.header] = item[col.apiKey];
225
+ // });
226
+ // return newObj;
227
+ // });
228
+ // this.tableConfig = {
229
+ // columns,
230
+ // rows
231
+ // }
232
+ // this.tableConfig.generalValues = this.generalValues;
233
+ // this.fxData.value = this.tableConfig;
234
+ // this.tableFormControl.reset();
235
+ // this.tableFormControl.setValue(this.tableConfig);
236
+ // }
237
+ // })
238
+ // }
217
239
  drawTable(event, columns) {
218
240
  let rows;
219
241
  this.http.get(event.api).subscribe((res) => {
@@ -221,7 +243,7 @@ export class DynamicTableComponent extends FxBaseComponent {
221
243
  rows = res.map((item) => {
222
244
  const newObj = {};
223
245
  columns.forEach((col) => {
224
- newObj[col.header] = item[col.apiKey];
246
+ newObj[col.header] = item[col.apiKey] || '';
225
247
  });
226
248
  return newObj;
227
249
  });
@@ -360,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
360
382
  }], tableConfig: [{
361
383
  type: Input
362
384
  }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWEsZUFBZSxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTdGLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7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LENBQUM7SUFDM0IsQ0FBQzt3R0EzWFUscUJBQXFCOzRGQUFyQixxQkFBcUIsK0xDekNsQyxzbWpCQTROb0IsdTZGRHhMUixZQUFZLDJiQUFFLFdBQVcsNGxEQUFFLHNCQUFzQixnSEFBRSxtQkFBbUIsOEJBQUMsaUJBQWlCLDI3Q0FBQyxpQkFBaUIsOEJBQUMsZUFBZSw4QkFBQyxjQUFjOzs0RkFLeEkscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFDLGlCQUFpQixFQUFDLGlCQUFpQixFQUFDLGVBQWUsRUFBQyxjQUFjLENBQUM7NEhBTTNJLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZ4QmFzZUNvbXBvbmVudCwgRnhNb2RlLCBGeFNldHRpbmcsIEZ4U3RyaW5nU2V0dGluZywgRnhWYWxpZGF0aW9uLCBGeFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgU2V0dGluZ3NQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhbmVsL3NldHRpbmdzLXBhbmVsL3NldHRpbmdzLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge2ZvcmtKb2luLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNdWx0aVNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvbXVsdGlzZWxlY3QnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uQ29uZmlnIHtcclxuICBoZWFkZXI6IHN0cmluZztcclxuICBjZWxsVHlwZTogJ3RleHQnIHwgJ2lucHV0LXRleHQnIHwgJ2lucHV0LW51bWJlcicgfCAnZHJvcGRvd24nIHwgJ3NtYXJ0LWRyb3Bkb3duJyB8ICdjaGVja2JveCcgfCAncmFkaW8nIHwgJ3JhZGlvLWdyb3VwJyB8ICdmaWxlLXVwbG9hZCcgfCAndGV4dGFyZWEnO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgdmFsdWVLZXk/OiBzdHJpbmc7XHJcbiAgbGFiZWxLZXk/OiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGlzTXVsdGlzZWxlY3Q/OiBib29sZWFuO1xyXG4gIGNoZWNrZWRWYWx1ZT86IGFueTtcclxuICB1bkNoZWNrZWRWYWx1ZT86IGFueTtcclxuICBjaGVja0JveExhYmVsPzogc3RyaW5nO1xyXG4gIGlzUmVxdWlyZWQ/OmJvb2xlYW4sXHJcbiAgZXJyb3JNZXNzYWdlPzpzdHJpbmdcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcclxuICBjb2x1bW5zOiBUYWJsZUNvbHVtbkNvbmZpZ1tdO1xyXG4gIHJvd3M6IGFueVtdO1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZngtZHluYW1pYy10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgU2V0dGluZ3NQYW5lbENvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZSxNdWx0aVNlbGVjdE1vZHVsZSxJbnB1dE51bWJlck1vZHVsZSxJbnB1dFRleHRNb2R1bGUsRHJvcGRvd25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgRHluYW1pY1RhYmxlQ29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHRhYmxlUm93czogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIHByZXZpZXdUeXBlOiBGeE1vZGUgPSBGeE1vZGUuVklFVztcclxuICBASW5wdXQoKSB0YWJsZUNvbmZpZzogYW55ID0ge1xyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiAxJywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiAyJywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiAzJywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiA0JywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiA1JywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgXSxcclxufTtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbiAgLy8gcHVibGljIHVwbG9hZGVkSW1hZ2VzOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBGaWxlIHwgbnVsbD4gfCBudWxsPiA9IFtdO1xyXG4gIHB1YmxpYyB1cGxvYWRlZEltYWdlczogQXJyYXk8QXJyYXk8eyByZXN1bHQ6IHN0cmluZywgZmlsZTogRmlsZSB8IG51bGx9Pj4gPSBbXTtcclxuXHJcbiAgcHVibGljIGdlbmVyYWxWYWx1ZXM6IGFueTtcclxuXHJcbiAgcHVibGljIHRhYmxlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgc21hcnREcm9wZG93bk9wdGlvbnM6IHsgW2tleTogc3RyaW5nXTogQXJyYXk8eyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT4gfSA9IHt9O1xyXG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihjZHIpO1xyXG4gICAgdGhpcy5vbkluaXQuc3Vic2NyaWJlKChmeERhdGEpPT57XHJcbiAgICAgIHRoaXMuX3JlZ2lzdGVyKHRoaXMudGFibGVGb3JtQ29udHJvbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh2YXJpYWJsZXMpIHtcclxuICAgICAgICAgIGxldCBkeW5hbWljVGFibGVWYWx1ZXM6IGFueTtcclxuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAgICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZHluYW1pYy10YWJsZScpKSB7XHJcbiAgICAgICAgICAgICAgZHluYW1pY1RhYmxlVmFsdWVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhkeW5hbWljVGFibGVWYWx1ZXMpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAvLyBjb25zdCBmaWxlSGVhZGVyTmFtZSA9IGR5bmFtaWNUYWJsZVZhbHVlcz8uY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVIZWFkZXJOYW1lID0gZHluYW1pY1RhYmxlVmFsdWVzPy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAgICAgICAgICAgZHluYW1pY1RhYmxlVmFsdWVzPy5yb3dzPy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAvLyAvLyB0aGlzLnVwbG9hZGVkSW1hZ2VzW2luZGV4XSA9IGl0ZW1bZmlsZUhlYWRlck5hbWVdID8gaXRlbVtmaWxlSGVhZGVyTmFtZV06IG51bGw7XHJcbiAgICAgICAgICAgICAgLy8gY29uc3QgZmlsZVVybCA9IGl0ZW1bZmlsZUhlYWRlck5hbWVdOyAvLyBHZXQgdGhlIGZpbGUgVVJMXHJcblxyXG4gICAgICAgICAgICAgIC8vIHRoaXMudXBsb2FkZWRJbWFnZXNbaW5kZXhdID0gZmlsZVVybFxyXG4gICAgICAgICAgICAgIC8vICAgPyB7IHJlc3VsdDogZmlsZVVybCwgZmlsZTogbnVsbCB9IC8vIFN0b3JlIHRoZSBVUkwgYXMgJ3Jlc3VsdCdcclxuICAgICAgICAgICAgICAvLyAgIDogbnVsbDtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoaXRlbVtmaWxlSGVhZGVyTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VVcmxzKGl0ZW1bZmlsZUhlYWRlck5hbWVdLCBpbmRleCxkeW5hbWljVGFibGVWYWx1ZXM/LmNvbHVtbnMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0gIHRoaXMuaW5pdGlhbGl6ZUNoZWNrYm94RGVmYXVsdHMoZHluYW1pY1RhYmxlVmFsdWVzKTtcclxuICAgICAgICAgICAgLy8gdGhpcy50YWJsZUNvbmZpZyA9IGR5bmFtaWNUYWJsZVZhbHVlcztcclxuICAgICAgICAgICAgdGhpcy5meERhdGEudmFsdWUgPSB0aGlzLnRhYmxlQ29uZmlnO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnRhYmxlRm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7ICAvLyBEZWxheSB0byBlbnN1cmUgcHJvcGVyIHBhdGNoaW5nXHJcbiAgICAgICAgICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy50YWJsZUNvbmZpZywgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ0YWJsZUZvcm1Db250cm9sXCIsdGhpcy50YWJsZUZvcm1Db250cm9sKTtcclxuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH0sIDUwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuZnhEYXRhPy52YWx1ZSAmJiBPYmplY3Qua2V5cyh0aGlzLmZ4RGF0YT8udmFsdWUpPy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgIHRoaXMudGFibGVDb25maWcgPSB0aGlzLmZ4RGF0YS52YWx1ZTtcclxuICAgICAgICB0aGlzLmZldGNoU21hcnREcm9wZG93bkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKVxyXG4gIH1cclxuICBcclxuICBwcm90ZWN0ZWQgZmV0Y2hTbWFydERyb3Bkb3duRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKChjb2x1bW46IFRhYmxlQ29sdW1uQ29uZmlnKSA9PiBjb2x1bW4uY2VsbFR5cGUgPT09ICdzbWFydC1kcm9wZG93bicgJiYgY29sdW1uPy5hcGlVcmwpXHJcbiAgICAgIC5mb3JFYWNoKChjb2x1bW46IFRhYmxlQ29sdW1uQ29uZmlnKSA9PiB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldDxhbnk+KGNvbHVtbi5hcGlVcmwhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc21hcnREcm9wZG93bk9wdGlvbnNbY29sdW1uLmhlYWRlcl0gPSByZXNwb25zZS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1bY29sdW1uLnZhbHVlS2V5IV0sXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW1bY29sdW1uLmxhYmVsS2V5IV0sXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIHVwbG9hZEltYWdlKGV2ZW50OiBFdmVudCwgcm93SW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgZmlsZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM/LlswXTtcclxuICAvLyAgIGlmIChmaWxlKSB7XHJcbiAgLy8gICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgLy8gICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gPSB7XHJcbiAgLy8gICAgICAgICByZXN1bHQ6IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nLFxyXG4gIC8vICAgICAgICAgZmlsZTogZmlsZVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW3RoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXJdID0gZmlsZTtcclxuICAvLyAgICAgICBjb25zb2xlLmxvZyhcInRhYmxlQ29uZmlnXCIsIHRoaXMudGFibGVDb25maWcpO1xyXG4gIC8vICAgICB9O1xyXG4gIC8vICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyB1cGxvYWRJbWFnZShldmVudDogRXZlbnQsIHJvd0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGVzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcztcclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gfHwgW107XHJcbiAgXHJcbiAgICAgIEFycmF5LmZyb20oZmlsZXMpLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5wdXNoKHtcclxuICAgICAgICAgICAgcmVzdWx0OiByZWFkZXIucmVzdWx0IGFzIHN0cmluZyxcclxuICAgICAgICAgICAgZmlsZTogZmlsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgICAvLyBPcHRpb25hbGx5IGFkZCB0byB0YWJsZUNvbmZpZyBpZiBvbmx5IG9uZSBmaWxlIGlzIHRyYWNrZWQgdGhlcmVcclxuICAgICAgICAgIGNvbnN0IGNvbHVtbkhlYWRlciA9IHRoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW2NvbHVtbkhlYWRlcl0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5tYXAoaW1nID0+IGltZy5maWxlKTtcclxuICBcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwidGFibGVDb25maWdcIiwgdGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2NvbHVtbi1zaXplJywgJHRpdGxlOiAnTm8uIG9mIGNvbHVtbnMnLCB2YWx1ZTogMSB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3RhYmxlLWNvbmZpZycsICR0aXRsZTogJ1RhYmxlIENvbmZpZ3VyYXRpb24nLCB2YWx1ZToge30gfSksXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRpb25zKCk6IEZ4VmFsaWRhdGlvbltdIHtcclxuICAgIHJldHVybiBbRnhWYWxpZGF0b3JTZXJ2aWNlLnJlcXVpcmVkXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBcnJheShjb3VudDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlQ29uZmlndXJhdGlvbihldmVudDogYW55KTogdm9pZCB7IFxyXG4gICAgIHRoaXMuZ2VuZXJhbFZhbHVlcyA9IHtcclxuICAgICAgZW5hYmxlQVBJOiBldmVudD8uZW5hYmxlQVBJLFxyXG4gICAgICBhcGk6IGV2ZW50Py5hcGlcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbnMgPSBldmVudC5jb2x1bW5zLm1hcCgoY29sOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBoZWFkZXI6IGNvbD8uaGVhZGVyLFxyXG4gICAgICAgIGNlbGxUeXBlOiBjb2w/LmNlbGxUeXBlLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiBjb2w/LnBsYWNlaG9sZGVyLFxyXG4gICAgICAgIG9wdGlvbnM6IGNvbD8ub3B0aW9ucyxcclxuICAgICAgICBhcGlVcmw6IGNvbD8uYXBpVXJsLFxyXG4gICAgICAgIHZhbHVlS2V5OiBjb2w/LnZhbHVlS2V5LFxyXG4gICAgICAgIGxhYmVsS2V5OiBjb2w/LmxhYmVsS2V5LFxyXG4gICAgICAgIGNsYXNzTmFtZTogY29sPy5jbGFzc05hbWUsXHJcbiAgICAgICAgYXBpS2V5OiBjb2w/LmFwaUtleSxcclxuICAgICAgICBpc011bHRpc2VsZWN0OiBjb2w/LmlzTXVsdGlzZWxlY3QsXHJcbiAgICAgICAgY2hlY2tlZFZhbHVlOiBjb2w/LmNoZWNrZWRWYWx1ZSxcclxuICAgICAgICB1bkNoZWNrZWRWYWx1ZTogY29sPy51bkNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBjaGVja0JveExhYmVsOmNvbD8uY2hlY2tCb3hMYWJlbCxcclxuICAgICAgICBpc1JlcXVpcmVkOmNvbD8uaXNSZXF1aXJlZCxcclxuICAgICAgICBlcnJvck1lc3NhZ2U6Y29sPy5lcnJvck1lc3NhZ2VcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZighZXZlbnQ/LmVuYWJsZUFQSSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMgPSBjb2x1bW5zO1xyXG4gICAgICAvLyB0aGlzLnRhYmxlQ29uZmlnLnJvd3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiArZXZlbnQ/LnJvd3MgfSwgKGUsIGluZGV4KSA9PiAoeyBuYW1lOiBgU0tVLSR7aW5kZXggKyAxfWAsIGFnZTogaW5kZXggJSAyICE9PSAwLCBnZW5kZXI6ICdtYWxlJyB9KSlcclxuICAgICAgLy8gdGhpcy50YWJsZUNvbmZpZy5yb3dzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogK2V2ZW50Py5yb3dzIH0sIChlLCBpbmRleCkgPT4ge1xyXG4gICAgICAvLyAgIGNvbnN0IHJvd3MgPSBjb2x1bW5zLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgIC8vICAgICByZXR1cm4ge1xyXG4gICAgICAvLyAgICAgICBjPy5oZWFkZXI6IG51bGxcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyAgIHJldHVybiByb3dzXHJcbiAgICAgIC8vIH0pXHJcbiAgICAgIHRoaXMudGFibGVDb25maWcucm93cyA9IEFycmF5LmZyb20oeyBsZW5ndGg6ICtldmVudD8ucm93cyB9LCAoXywgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gY29sdW1ucy5yZWR1Y2UoKGFjYzogYW55LCBjOiBhbnkpID0+IHtcclxuICAgICAgICAgIGFjY1tjPy5oZWFkZXJdID0gJyc7IC8vIEluaXRpYWxpemUgZWFjaCBjb2x1bW4ga2V5IHdpdGggbnVsbFxyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5mZXRjaFNtYXJ0RHJvcGRvd25EYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZihldmVudD8uZW5hYmxlQVBJKSB7XHJcbiAgICAgIHRoaXMuZHJhd1RhYmxlKGV2ZW50LCBjb2x1bW5zKVxyXG4gICAgICB0aGlzLnRhYmxlQ29uZmlnID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXHJcbiAgICAgICAgcm93czogW11cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgdGhpcy50YWJsZUNvbmZpZyA9ICB0aGlzLmluaXRpYWxpemVDaGVja2JveERlZmF1bHRzKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZy5nZW5lcmFsVmFsdWVzID0gdGhpcy5nZW5lcmFsVmFsdWVzO1xyXG4gICAgdGhpcy5meERhdGEudmFsdWUgPSB0aGlzLnRhYmxlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICBjb25zb2xlLmxvZyhcImFmdGVyXCIpXHJcbiAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNldHRpbmdzKCk6IHZvaWR7XHJcbiAgICBpZih0aGlzLmZ4RGF0YS5zZXR0aW5ncyl7XHJcbiAgICAgIGZvcihsZXQgc2V0dGluZyBvZiB0aGlzLmZ4RGF0YS5zZXR0aW5ncyl7XHJcbiAgICAgIGlmKHNldHRpbmcua2V5ID09PSAndGFibGUtY29uZmlnJyl7XHJcbiAgICAgICAgc2V0dGluZy52YWx1ZSA9IHRoaXMudGFibGVDb25maWc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhd1RhYmxlKGV2ZW50OiBhbnksIGNvbHVtbnM6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IHJvd3M7XHJcbiAgICB0aGlzLmh0dHAuZ2V0KGV2ZW50LmFwaSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMpIHtcclxuICAgICAgICByb3dzID0gcmVzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuZXdPYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbmV3T2JqW2NvbC5oZWFkZXJdID0gaXRlbVtjb2wuYXBpS2V5XTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIG5ld09iajtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0ge1xyXG4gICAgICAgICAgY29sdW1ucyxcclxuICAgICAgICAgIHJvd3NcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5nZW5lcmFsVmFsdWVzID0gdGhpcy5nZW5lcmFsVmFsdWVzO1xyXG4gICAgICAgIHRoaXMuZnhEYXRhLnZhbHVlID0gdGhpcy50YWJsZUNvbmZpZztcclxuICAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgZGVsZXRlRmlsZShmaWxlOiBhbnksIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMudXBsb2FkZWRJbWFnZXMuc3BsaWNlKGluZGV4LCAxLCBudWxsKTtcclxuICAvLyAgIHRoaXMudGFibGVDb25maWcucm93c1tpbmRleF1bdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcl0gPSBudWxsO1xyXG4gIC8vICAgY29uc29sZS5sb2coXCJ0YWJsZUNvbmZpZ1wiLCB0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHB1YmxpYyBkZWxldGVGaWxlKHJvd0luZGV4OiBudW1iZXIsIGltYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gIC8vICAgaWYgKHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdKSB7XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLnNwbGljZShpbWFnZUluZGV4LCAxKTtcclxuICBcclxuICAvLyAgICAgY29uc3QgY29sdW1uSGVhZGVyID0gdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAvLyAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcuZmlsZSk7XHJcbiAgLy8gICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVGaWxlKHJvd0luZGV4OiBudW1iZXIsIGltYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdKSB7XHJcbiAgICAgIGNvbnN0IHJlbW92ZWRGaWxlID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF1baW1hZ2VJbmRleF07XHJcbiAgXHJcbiAgICAgIC8vIFRyYWNrIHRoZSBmaWxlIHRvIGRlbGV0ZSBpZiBpdCdzIGFuIHVwbG9hZGVkIGZpbGUgKGkuZS4sIGhhcyBVUkwgYW5kIG5vIEZpbGUgb2JqZWN0KVxyXG4gICAgICBpZiAocmVtb3ZlZEZpbGU/LnJlc3VsdCAmJiB0eXBlb2YgcmVtb3ZlZEZpbGUucmVzdWx0ID09PSAnc3RyaW5nJyAmJiByZW1vdmVkRmlsZS5maWxlID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XS5maWxlc1RvRGVsZXRlID0gdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XS5maWxlc1RvRGVsZXRlIHx8IFtdO1xyXG4gICAgICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF0uZmlsZXNUb0RlbGV0ZS5wdXNoKHJlbW92ZWRGaWxlLnJlc3VsdCk7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gUmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIFVJXHJcbiAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLnNwbGljZShpbWFnZUluZGV4LCAxKTtcclxuICBcclxuICAgICAgY29uc3QgY29sdW1uSGVhZGVyID0gdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcuZmlsZSk7XHJcbiAgXHJcbiAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgXHJcblxyXG4gIC8vIHB1YmxpYyBwYXJzZVVybHModXJsOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgIG5leHQ6IChpbWFnZUJsb2I6IEJsb2IpID0+IHtcclxuICAvLyAgICAgICBjb25zdCBpbWFnZVVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2VCbG9iKTtcclxuICAvLyAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW2luZGV4XSA9IHtcclxuICAvLyAgICAgICAgIHJlc3VsdDogaW1hZ2VVUkwsXHJcbiAgLy8gICAgICAgICBmaWxlOiBudWxsXHJcbiAgLy8gICAgICAgfTtcclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gIC8vICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGltYWdlOicsIGVycm9yKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwdWJsaWMgcGFyc2VVcmxzKHVybDogc3RyaW5nLCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAoaW1hZ2VCbG9iOiBCbG9iKSA9PiB7XHJcbiAgLy8gICAgICAgY29uc3QgaW1hZ2VVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlQmxvYik7XHJcbiAgXHJcbiAgLy8gICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSB8fCBbXTtcclxuICAvLyAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5wdXNoKHtcclxuICAvLyAgICAgICAgIHJlc3VsdDogaW1hZ2VVUkwsXHJcbiAgLy8gICAgICAgICBmaWxlOiBudWxsXHJcbiAgLy8gICAgICAgfSk7XHJcbiAgXHJcbiAgLy8gICAgICAgY29uc3QgY29sdW1uSGVhZGVyID0gdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAvLyAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW2NvbHVtbkhlYWRlcl0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5tYXAoaW1nID0+IGltZy5maWxlKTtcclxuICBcclxuICAvLyAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBpbWFnZTonLCBlcnJvcik7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIHBhcnNlVXJscyh1cmxzOiBzdHJpbmdbXSwgcm93SW5kZXg6IG51bWJlciwgY29sdW1uczogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodXJscykgfHwgIXVybHMubGVuZ3RoKSByZXR1cm47XHJcbiAgXHJcbiAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdIHx8IFtdO1xyXG4gIFxyXG4gICAgY29uc3QgY29sdW1uSGVhZGVyID0gY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICBpZiAoIWNvbHVtbkhlYWRlcikgcmV0dXJuO1xyXG4gIFxyXG4gICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHN0cmluZz5bXSA9IFtdO1xyXG4gIFxyXG4gICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAgICAgICAgIG1hcCgoaW1hZ2VCbG9iOiBCbG9iKSA9PiBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlQmxvYikpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICBcclxuICAgIGlmICghaW1hZ2VGZXRjaGVzLmxlbmd0aCkgcmV0dXJuO1xyXG4gIFxyXG4gICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoaW1hZ2VVUkxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgIGltYWdlVVJMcy5mb3JFYWNoKChpbWFnZVVSTDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5wdXNoKHtcclxuICAgICAgICAgICAgcmVzdWx0OiBpbWFnZVVSTCxcclxuICAgICAgICAgICAgZmlsZTogbnVsbFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgLy8gdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcucmVzdWx0KTtcclxuICBcclxuICAgICAgICAvLyB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvbmUgb3IgbW9yZSBpbWFnZXM6JywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgb25DaGVja2JveENoYW5nZShldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2x1bW46IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIHJvd1tjb2x1bW4uaGVhZGVyXSA9IGlucHV0LmNoZWNrZWQgPyBjb2x1bW4uY2hlY2tlZFZhbHVlIDogY29sdW1uLnVuQ2hlY2tlZFZhbHVlO1xyXG4gIH1cclxuICBcclxuXHJcbiAgaW5pdGlhbGl6ZUNoZWNrYm94RGVmYXVsdHModGFibGVEYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRhYmxlRGF0YS5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgIHRhYmxlRGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5jZWxsVHlwZSA9PT0gJ2NoZWNrYm94JyAmJiBjb2x1bW4udW5DaGVja2VkVmFsdWUpIHtcclxuICAgICAgICAgIHJvd1tjb2x1bW4uaGVhZGVyXSA9IGNvbHVtbi51bkNoZWNrZWRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGFibGVEYXRhO1xyXG4gIH1cclxuICBcclxuICBcclxuICBcclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8Zngtc2V0dGluZ3MtcGFuZWwgW2Z4RGF0YV09XCJmeERhdGFcIiBbdGFibGVEYXRhXT1cImZ4RGF0YVwiIChjb25maWd1cmF0aW9uKT1cIm9uQ2hhbmdlQ29uZmlndXJhdGlvbigkZXZlbnQpXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZnhEYXRhXCI+XHJcbiAgICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgY2xhc3M9XCJmb3JtQnVpbGRlcl9keW5hbWljX3RhYmxlXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zXCI+e3sgY29sdW1uLmhlYWRlciB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZUNvbmZpZy5yb3dzOyBsZXQgcm93SW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uLmNlbGxUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+e3tyb3dbY29sdW1uLmhlYWRlcl19fTwvc3Bhbj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC10ZXh0J1wiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgLz4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC10ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2x1bW4/LmlzUmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbW9kZWw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uPy5pc1JlcXVpcmVkICYmIG1vZGVsLmludmFsaWQgJiYgbW9kZWwudG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwIHRleHQtc20gbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbj8uZXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LW51bWJlcidcIiB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgLz5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwiY29sdW1uLnBsYWNlaG9sZGVyXCIgdmFsdWU9XCJcIj57eyBjb2x1bW4ucGxhY2Vob2xkZXIgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29sdW1uPy5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbj8ub3B0aW9uVmFsdWVcIj4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24/Lm9wdGlvbk5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzZWxlY3QgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiICpuZ1N3aXRjaENhc2U9XCInc21hcnQtZHJvcGRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Qge3tjb2x1bW4uaGVhZGVyfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwiY29sdW1uLnBsYWNlaG9sZGVyXCIgdmFsdWU9XCJcIj57eyBjb2x1bW4ucGxhY2Vob2xkZXIgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc21hcnREcm9wZG93bk9wdGlvbnNbY29sdW1uLmhlYWRlcl1cIiBbdmFsdWVdPVwib3B0aW9uPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbj8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cInNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCIgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQ2l0aWVzXCIgKm5nU3dpdGNoQ2FzZT1cIidzbWFydC1kcm9wZG93bidcIi8+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc21hcnQtZHJvcGRvd24gaGFuZGxpbmcgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzbWFydC1kcm9wZG93bidcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRyb3Bkb3duIGlmIGlzTXVsdGlzZWxlY3QgaXMgZmFsc2Ugb3Igbm90IHNldCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0ICpuZ0lmPVwiIWNvbHVtbj8uaXNNdWx0aXNlbGVjdFwiIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nSWY9XCJjb2x1bW4ucGxhY2Vob2xkZXJcIiB2YWx1ZT1cIlwiPnt7IGNvbHVtbi5wbGFjZWhvbGRlciB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCIgW3ZhbHVlXT1cIm9wdGlvbj8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQcmltZU5HIG11bHRpc2VsZWN0IGlmIGlzTXVsdGlzZWxlY3QgaXMgdHJ1ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCAqbmdJZj1cImNvbHVtbj8uaXNNdWx0aXNlbGVjdFwiIFtvcHRpb25zXT1cInNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICgnU2VsZWN0ICcgKyBjb2x1bW4uaGVhZGVyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRyb3Bkb3duaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZGRfZG93bl9pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1hbmdsZS1kb3duIHRleHQteGxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1tjb2x1bW4uaGVhZGVyXSA9PT0gY29sdW1uLmNoZWNrZWRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKCRldmVudCwgcm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uPy5jaGVja0JveExhYmVsIHx8ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cInJhZGlvLXt7cm93SW5kZXh9fVwiIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCIgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidyYWRpby1ncm91cCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjb2x1bW4ub3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cInJhZGlvLWdyb3VwLXt7cm93SW5kZXh9fVwiIHR5cGU9XCJyYWRpb1wiIFt2YWx1ZV09XCJvcHRpb24/Lm9wdGlvbk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24/Lm9wdGlvbk5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUtdXBsb2FkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtZW5kIGp1c3RpZnktZW5kIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgdXBsb2FkZWRJbWFnZXM/Lltyb3dJbmRleF07IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlPy5yZXN1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJVcGxvYWRlZCBJbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZCBzaGFkb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVGaWxlKHJvd0luZGV4LCBpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc2hhZG93LWxnIGhvdmVyOmJnLXJlZC02MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinYxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN1cGxvYWRGaWxlICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEltYWdlKCRldmVudCwgcm93SW5kZXgpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBsb2FkRmlsZS5jbGljaygpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yIGJnLWJsdWUtNTAwIHRleHQtd2hpdGUgcHgtMyBweS0xIHJvdW5kZWQgaG92ZXI6YmctYmx1ZS02MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsZS11cGxvYWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCByZWxhdGl2ZSBnYXAtNCBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiICpuZ0Zvcj1cImxldCBpbWFnZSBvZiB1cGxvYWRlZEltYWdlcz8uW3Jvd0luZGV4XTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiODBcIiBbc3JjXT1cImltYWdlPy5yZXN1bHRcIiBhbHQ9XCJVcGxvYWRlZCBJbWFnZVwiIGNsYXNzPVwicm91bmRlZCBzaGFkb3cgb3JpZW50YXRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiZGVsZXRlRmlsZShyb3dJbmRleCwgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgdy01IGgtNSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF82ODM3XzI5NjgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiByeD1cIjlcIiBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPVwibWFzazBfNjgzN18yOTY4M1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiNFwiIHk9XCI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIG1hc2s9XCJ1cmwoI21hc2swXzY4MzdfMjk2ODMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4yMDQ1IDguOTk4MTVMNS44MTgwMiA2LjYxMTY3TDYuNjEzNTEgNS44MTYxN0w5IDguMjAyNjZMMTEuMzg2NSA1LjgxNjE3TDEyLjE4MiA2LjYxMTY3TDkuNzk1NSA4Ljk5ODE1TDEyLjE4MiAxMS4zODQ2TDExLjM4NjUgMTIuMTgwMUw5IDkuNzkzNjVMNi42MTM1MSAxMi4xODAxTDUuODE4MDIgMTEuMzg0Nkw4LjIwNDUgOC45OTgxNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzY4MzdfMjk2ODNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiByeD1cIjlcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiZmlsZVwiICN1cGxvYWRGaWxlIGhpZGRlbiBtdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRJbWFnZSgkZXZlbnQsIHJvd0luZGV4KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInVwbG9hZEZpbGUuY2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyOVwiIGhlaWdodD1cIjI4XCIgdmlld0JveD1cIjAgMCAyOSAyOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4wMDEgMy4wMDE5NUMxMS41MzIyIDMuMDAxOTUgOS4xNjcyMiAzLjg2OTU2IDcuMjM2NDEgNS4zODQxNEw3LjIzNTk4IDQuNTk2OTVDNy4yMzU5OCA0LjUyNDczIDcuMjIxNzUgNC40NTMyMSA3LjE5NDExIDQuMzg2NDhDNy4xNjY0NyA0LjMxOTc1IDcuMTI1OTYgNC4yNTkxMiA3LjA3NDg5IDQuMjA4MDRDNy4wMjM4MSA0LjE1Njk3IDYuOTYzMTggNC4xMTY0NiA2Ljg5NjQ1IDQuMDg4ODJDNi44Mjk3MiA0LjA2MTE4IDYuNzU4MiA0LjA0Njk1IDYuNjg1OTggNC4wNDY5NUM2LjYxMzc1IDQuMDQ2OTUgNi41NDIyMyA0LjA2MTE4IDYuNDc1NSA0LjA4ODgyQzYuNDA4NzcgNC4xMTY0NiA2LjM0ODE0IDQuMTU2OTcgNi4yOTcwNyA0LjIwODA0QzYuMjQ1OTkgNC4yNTkxMiA2LjIwNTQ4IDQuMzE5NzUgNi4xNzc4NCA0LjM4NjQ4QzYuMTUwMiA0LjQ1MzIxIDYuMTM1OTggNC41MjQ3MyA2LjEzNTk4IDQuNTk2OTVMNi4xMzY0MiA2LjY4NjUyQzYuMTM2NDMgNi44MzIzOSA2LjE5NDM4IDYuOTcyMjggNi4yOTc1MiA3LjA3NTQyQzYuNDAwNjcgNy4xNzg1NiA2LjU0MDU1IDcuMjM2NTEgNi42ODY0MiA3LjIzNjUySDguNzc1OThDOC44NDgyIDcuMjM2NTIgOC45MTk3MiA3LjIyMjMgOC45ODY0NSA3LjE5NDY2QzkuMDUzMTggNy4xNjcwMiA5LjExMzgxIDcuMTI2NTEgOS4xNjQ4OSA3LjA3NTQzQzkuMjE1OTYgNy4wMjQzNiA5LjI1NjQ3IDYuOTYzNzMgOS4yODQxMSA2Ljg5N0M5LjMxMTc1IDYuODMwMjcgOS4zMjU5OCA2Ljc1ODc1IDkuMzI1OTggNi42ODY1MkM5LjMyNTk4IDYuNjE0MyA5LjMxMTc1IDYuNTQyNzggOS4yODQxMSA2LjQ3NjA1QzkuMjU2NDcgNi40MDkzMiA5LjIxNTk2IDYuMzQ4NjkgOS4xNjQ4OSA2LjI5NzYxQzkuMTEzODEgNi4yNDY1NCA5LjA1MzE4IDYuMjA2MDMgOC45ODY0NSA2LjE3ODM5QzguOTE5NzIgNi4xNTA3NSA4Ljg0ODIgNi4xMzY1MiA4Ljc3NTk4IDYuMTM2NTJIOC4wNTg0QzkuNzcwMiA0Ljg0Mzg3IDExLjgzOTkgNC4xMDE5NSAxNC4wMDEgNC4xMDE5NUMxOS40NzUxIDQuMTAxOTUgMjMuOTAxIDguNTI3ODIgMjMuOTAxIDE0LjAwMkMyMy45MDEgMTkuNDc2MSAxOS40NzUxIDIzLjkwMiAxNC4wMDEgMjMuOTAyQzguNTI2ODQgMjMuOTAyIDQuMTAwOTggMTkuNDc2MSA0LjEwMDk4IDE0LjAwMkM0LjEwMDk4IDEyLjYzODEgNC4zODI2MyAxMS4yODg4IDQuOTI4NTUgMTAuMDM4OUM0Ljk4NjkxIDkuOTA1MzIgNC45ODk4MiA5Ljc1Mzk5IDQuOTM2NjUgOS42MTgyMkM0Ljg4MzQ3IDkuNDgyNDYgNC43Nzg1NSA5LjM3MzM2IDQuNjQ0OTYgOS4zMTQ5MkM0LjU3ODc3IDkuMjg1OTYgNC41MDc1MyA5LjI3MDMyIDQuNDM1MyA5LjI2ODlDNC4zNjMwNiA5LjI2NzQ3IDQuMjkxMjYgOS4yODAzIDQuMjIzOTggOS4zMDY2M0M0LjE1NjcxIDkuMzMyOTcgNC4wOTUyOCA5LjM3MjMgNC4wNDMyMSA5LjQyMjM4QzMuOTkxMTQgOS40NzI0NyAzLjk0OTQ0IDkuNTMyMzIgMy45MjA1MSA5LjU5ODUyQzMuMzEzOTMgMTAuOTg3MiAzLjAwMDk4IDEyLjQ4NjYgMy4wMDA5OCAxNC4wMDJDMy4wMDA5OCAyMC4wNzA2IDcuOTMyMzYgMjUuMDAyIDE0LjAwMSAyNS4wMDJDMjAuMDY5NiAyNS4wMDIgMjUuMDAxIDIwLjA3MDYgMjUuMDAxIDE0LjAwMkMyNS4wMDEgNy45MzMzNCAyMC4wNjk2IDMuMDAxOTUgMTQuMDAxIDMuMDAxOTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjk5ODggNi4xMzk2NUM5LjY2MTYgNi4xMzk2NSA2LjEzMzc5IDkuNjY3NDYgNi4xMzM3OSAxNC4wMDQ2QzYuMTMzNzkgMTguMzQxOCA5LjY2MTYgMjEuODY5NiAxMy45OTg4IDIxLjg2OTZDMTguMzM2IDIxLjg2OTYgMjEuODYzOCAxOC4zNDE4IDIxLjg2MzggMTQuMDA0NkMyMS44NjM4IDkuNjY3NDYgMTguMzM2IDYuMTM5NjUgMTMuOTk4OCA2LjEzOTY1Wk0xMy45OTg4IDguMjI5NjVDMTQuMTQ0NyA4LjIyOTY1IDE0LjI4NDYgOC4yODc1OSAxNC4zODc3IDguMzkwNzRDMTQuNDkwOCA4LjQ5Mzg4IDE0LjU0ODggOC42MzM3OCAxNC41NDg4IDguNzc5NjVWMTMuNzc2OUwxNy41MjI3IDE2Ljc1MDhDMTcuNjI1OCAxNi44NTM5IDE3LjY4MzcgMTYuOTkzOCAxNy42ODM3IDE3LjEzOTZDMTcuNjgzNyAxNy4yODU1IDE3LjYyNTggMTcuNDI1NCAxNy41MjI3IDE3LjUyODVDMTcuNDE5NSAxNy42MzE2IDE3LjI3OTYgMTcuNjg5NiAxNy4xMzM4IDE3LjY4OTZDMTYuOTg3OSAxNy42ODk2IDE2Ljg0ODEgMTcuNjMxNiAxNi43NDQ5IDE3LjUyODVMMTMuNjA5OSAxNC4zOTM1QzEzLjUwNjggMTQuMjkwNCAxMy40NDg4IDE0LjE1MDUgMTMuNDQ4OCAxNC4wMDQ2VjguNzc5NjVDMTMuNDQ4OCA4LjYzMzc4IDEzLjUwNjcgOC40OTM4OCAxMy42MDk5IDguMzkwNzRDMTMuNzEzIDguMjg3NTkgMTMuODUyOSA4LjIyOTY1IDEzLjk5ODggOC4yMjk2NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjguNTZcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS41MTQ3OVwiIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wNjggMjIuNzM5MVYxNy42NzA4SDE4LjQ5NjhMMTQuMjEwOCAxMi42MDI1TDkuOTI0OCAxNy42NzA4SDEzLjM1MzZWMjIuNzM5MUg5LjA2NzU5VjIyLjY5NjlDOC45MjM1OCAyMi43MDUzIDguNzg2NDMgMjIuNzM5MSA4LjYzODk5IDIyLjczOTFDNi45MzM5MSAyMi43MzkxIDUuMjk4NjYgMjIuMDcxNyA0LjA5Mjk4IDIwLjg4MzVDMi44ODczIDE5LjY5NTQgMi4yMDk5NiAxOC4wODQgMi4yMDk5NiAxNi40MDM3QzIuMjA5OTYgMTMuMTUzMiA0LjcwNDQzIDEwLjUwNDIgNy45MDUyMyAxMC4xNDFDOC4xODU4NSA4LjY5NTMgOC45Njg5MiA3LjM5MTE4IDEwLjExOTcgNi40NTI5MkMxMS4yNzA2IDUuNTE0NjUgMTIuNzE3MiA1LjAwMDg5IDE0LjIxMDggNUMxNS43MDQ3IDUuMDAwODIgMTcuMTUxNSA1LjUxNDUyIDE4LjMwMjYgNi40NTI3N0MxOS40NTM3IDcuMzkxMDEgMjAuMjM3MSA4LjY5NTE2IDIwLjUxODEgMTAuMTQxQzIzLjcxODkgMTAuNTA0MiAyNi4yMSAxMy4xNTMyIDI2LjIxIDE2LjQwMzdDMjYuMjEgMTguMDg0IDI1LjUzMjYgMTkuNjk1NCAyNC4zMjY5IDIwLjg4MzVDMjMuMTIxMyAyMi4wNzE3IDIxLjQ4NiAyMi43MzkxIDE5Ljc4MDkgMjIuNzM5MUMxOS42MzY5IDIyLjczOTEgMTkuNDk4MSAyMi43MDUzIDE5LjM1MjMgMjIuNjk2OVYyMi43MzkxSDE1LjA2OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXBsb2FkRmlsZS5jbGljaygpXCIgY2xhc3M9XCJ0ZXh0LWJhc2UgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1VwbG9hZCcgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgbmFtZT1cIlwiIGlkPVwiXCIgY29scz1cIjMwXCIgcm93cz1cIjJcIiBbcGxhY2Vob2xkZXJdPVwiY29sdW1uPy5wbGFjZWhvbGRlclwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG48L2Z4LXNldHRpbmdzLXBhbmVsPiJdfQ==
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWEsZUFBZSxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTdGLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7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LENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztnQkFDN0MsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBS00sV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBbFpVLHFCQUFxQjs0RkFBckIscUJBQXFCLCtMQ3pDbEMsc21qQkE0Tm9CLHU2RkR4TFIsWUFBWSwyYkFBRSxXQUFXLDRsREFBRSxzQkFBc0IsZ0hBQUUsbUJBQW1CLDhCQUFDLGlCQUFpQiwyN0NBQUMsaUJBQWlCLDhCQUFDLGVBQWUsOEJBQUMsY0FBYzs7NEZBS3hJLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxpQkFBaUIsRUFBQyxpQkFBaUIsRUFBQyxlQUFlLEVBQUMsY0FBYyxDQUFDOzRIQU0zSSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4TW9kZSwgRnhTZXR0aW5nLCBGeFN0cmluZ1NldHRpbmcsIEZ4VmFsaWRhdGlvbiwgRnhWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9meCc7XHJcbmltcG9ydCB7IFNldHRpbmdzUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYW5lbC9zZXR0aW5ncy1wYW5lbC9zZXR0aW5ncy1wYW5lbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtmb3JrSm9pbiwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5pbXBvcnQgeyBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbkNvbmZpZyB7XHJcbiAgaGVhZGVyOiBzdHJpbmc7XHJcbiAgY2VsbFR5cGU6ICd0ZXh0JyB8ICdpbnB1dC10ZXh0JyB8ICdpbnB1dC1udW1iZXInIHwgJ2Ryb3Bkb3duJyB8ICdzbWFydC1kcm9wZG93bicgfCAnY2hlY2tib3gnIHwgJ3JhZGlvJyB8ICdyYWRpby1ncm91cCcgfCAnZmlsZS11cGxvYWQnIHwgJ3RleHRhcmVhJztcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBvcHRpb25zPzogc3RyaW5nW107XHJcbiAgYXBpVXJsPzogc3RyaW5nO1xyXG4gIHZhbHVlS2V5Pzogc3RyaW5nO1xyXG4gIGxhYmVsS2V5Pzogc3RyaW5nO1xyXG4gIGNsYXNzTmFtZT86IHN0cmluZztcclxuICBpc011bHRpc2VsZWN0PzogYm9vbGVhbjtcclxuICBjaGVja2VkVmFsdWU/OiBhbnk7XHJcbiAgdW5DaGVja2VkVmFsdWU/OiBhbnk7XHJcbiAgY2hlY2tCb3hMYWJlbD86IHN0cmluZztcclxuICBpc1JlcXVpcmVkPzpib29sZWFuLFxyXG4gIGVycm9yTWVzc2FnZT86c3RyaW5nXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZyB7XHJcbiAgY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXTtcclxuICByb3dzOiBhbnlbXTtcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z4LWR5bmFtaWMtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFNldHRpbmdzUGFuZWxDb21wb25lbnQsIFJlYWN0aXZlRm9ybXNNb2R1bGUsTXVsdGlTZWxlY3RNb2R1bGUsSW5wdXROdW1iZXJNb2R1bGUsSW5wdXRUZXh0TW9kdWxlLERyb3Bkb3duTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIER5bmFtaWNUYWJsZUNvbXBvbmVudCBleHRlbmRzIEZ4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSB0YWJsZVJvd3M6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSBwcmV2aWV3VHlwZTogRnhNb2RlID0gRnhNb2RlLlZJRVc7XHJcbiAgQElucHV0KCkgdGFibGVDb25maWc6IGFueSA9IHtcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBoZWFkZXI6ICdDb2x1bW4gMScsIGNlbGxUeXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBoZWFkZXI6ICdDb2x1bW4gMicsIGNlbGxUeXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBoZWFkZXI6ICdDb2x1bW4gMycsIGNlbGxUeXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBoZWFkZXI6ICdDb2x1bW4gNCcsIGNlbGxUeXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBoZWFkZXI6ICdDb2x1bW4gNScsIGNlbGxUeXBlOiAndGV4dCcgfSxcclxuICAgIF0sXHJcbn07XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpO1xyXG4gIC8vIHB1YmxpYyB1cGxvYWRlZEltYWdlczogQXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgRmlsZSB8IG51bGw+IHwgbnVsbD4gPSBbXTtcclxuICBwdWJsaWMgdXBsb2FkZWRJbWFnZXM6IEFycmF5PEFycmF5PHsgcmVzdWx0OiBzdHJpbmcsIGZpbGU6IEZpbGUgfCBudWxsfT4+ID0gW107XHJcblxyXG4gIHB1YmxpYyBnZW5lcmFsVmFsdWVzOiBhbnk7XHJcblxyXG4gIHB1YmxpYyB0YWJsZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIHNtYXJ0RHJvcGRvd25PcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH0+IH0gPSB7fTtcclxuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlOiBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSkge1xyXG4gICAgc3VwZXIoY2RyKTtcclxuICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoZnhEYXRhKT0+e1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLnRhYmxlRm9ybUNvbnRyb2wpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodmFyaWFibGVzKSB7XHJcbiAgICAgICAgICBsZXQgZHluYW1pY1RhYmxlVmFsdWVzOiBhbnk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2R5bmFtaWMtdGFibGUnKSkge1xyXG4gICAgICAgICAgICAgIGR5bmFtaWNUYWJsZVZhbHVlcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZHluYW1pY1RhYmxlVmFsdWVzKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgZmlsZUhlYWRlck5hbWUgPSBkeW5hbWljVGFibGVWYWx1ZXM/LmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyO1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlSGVhZGVyTmFtZSA9IGR5bmFtaWNUYWJsZVZhbHVlcz8uY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICAgICAgICAgIGR5bmFtaWNUYWJsZVZhbHVlcz8ucm93cz8uZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gLy8gdGhpcy51cGxvYWRlZEltYWdlc1tpbmRleF0gPSBpdGVtW2ZpbGVIZWFkZXJOYW1lXSA/IGl0ZW1bZmlsZUhlYWRlck5hbWVdOiBudWxsO1xyXG4gICAgICAgICAgICAgIC8vIGNvbnN0IGZpbGVVcmwgPSBpdGVtW2ZpbGVIZWFkZXJOYW1lXTsgLy8gR2V0IHRoZSBmaWxlIFVSTFxyXG5cclxuICAgICAgICAgICAgICAvLyB0aGlzLnVwbG9hZGVkSW1hZ2VzW2luZGV4XSA9IGZpbGVVcmxcclxuICAgICAgICAgICAgICAvLyAgID8geyByZXN1bHQ6IGZpbGVVcmwsIGZpbGU6IG51bGwgfSAvLyBTdG9yZSB0aGUgVVJMIGFzICdyZXN1bHQnXHJcbiAgICAgICAgICAgICAgLy8gICA6IG51bGw7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1bZmlsZUhlYWRlck5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlVXJscyhpdGVtW2ZpbGVIZWFkZXJOYW1lXSwgaW5kZXgsZHluYW1pY1RhYmxlVmFsdWVzPy5jb2x1bW5zKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAvLyAgdGhpcy50YWJsZUNvbmZpZyA9ICB0aGlzLmluaXRpYWxpemVDaGVja2JveERlZmF1bHRzKGR5bmFtaWNUYWJsZVZhbHVlcyk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMudGFibGVDb25maWcgPSBkeW5hbWljVGFibGVWYWx1ZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZnhEYXRhLnZhbHVlID0gdGhpcy50YWJsZUNvbmZpZztcclxuICAgICAgICAgICAgLy8gdGhpcy50YWJsZUZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAgICAgICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyAgLy8gRGVsYXkgdG8gZW5zdXJlIHByb3BlciBwYXRjaGluZ1xyXG4gICAgICAgICAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMudGFibGVDb25maWcsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidGFibGVGb3JtQ29udHJvbFwiLHRoaXMudGFibGVGb3JtQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9LCA1MCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZih0aGlzLmZ4RGF0YT8udmFsdWUgJiYgT2JqZWN0LmtleXModGhpcy5meERhdGE/LnZhbHVlKT8ubGVuZ3RoICE9IDApIHtcclxuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0gdGhpcy5meERhdGEudmFsdWU7XHJcbiAgICAgICAgdGhpcy5mZXRjaFNtYXJ0RHJvcGRvd25EYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMClcclxuICB9XHJcbiAgXHJcbiAgcHJvdGVjdGVkIGZldGNoU21hcnREcm9wZG93bkRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcigoY29sdW1uOiBUYWJsZUNvbHVtbkNvbmZpZykgPT4gY29sdW1uLmNlbGxUeXBlID09PSAnc21hcnQtZHJvcGRvd24nICYmIGNvbHVtbj8uYXBpVXJsKVxyXG4gICAgICAuZm9yRWFjaCgoY29sdW1uOiBUYWJsZUNvbHVtbkNvbmZpZykgPT4ge1xyXG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8YW55Pihjb2x1bW4uYXBpVXJsISkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdID0gcmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtW2NvbHVtbi52YWx1ZUtleSFdLFxyXG4gICAgICAgICAgICBuYW1lOiBpdGVtW2NvbHVtbi5sYWJlbEtleSFdLFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyB1cGxvYWRJbWFnZShldmVudDogRXZlbnQsIHJvd0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XHJcbiAgLy8gICBpZiAoZmlsZSkge1xyXG4gIC8vICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gIC8vICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdID0ge1xyXG4gIC8vICAgICAgICAgcmVzdWx0OiByZWFkZXIucmVzdWx0IGFzIHN0cmluZyxcclxuICAvLyAgICAgICAgIGZpbGU6IGZpbGVcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVt0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyXSA9IGZpbGU7XHJcbiAgLy8gICAgICAgY29uc29sZS5sb2coXCJ0YWJsZUNvbmZpZ1wiLCB0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyAgICAgfTtcclxuICAvLyAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgdXBsb2FkSW1hZ2UoZXZlbnQ6IEV2ZW50LCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlcyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM7XHJcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdIHx8IFtdO1xyXG4gIFxyXG4gICAgICBBcnJheS5mcm9tKGZpbGVzKS5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ucHVzaCh7XHJcbiAgICAgICAgICAgIHJlc3VsdDogcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIGZpbGU6IGZpbGVcclxuICAgICAgICAgIH0pO1xyXG4gIFxyXG4gICAgICAgICAgLy8gT3B0aW9uYWxseSBhZGQgdG8gdGFibGVDb25maWcgaWYgb25seSBvbmUgZmlsZSBpcyB0cmFja2VkIHRoZXJlXHJcbiAgICAgICAgICBjb25zdCBjb2x1bW5IZWFkZXIgPSB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyO1xyXG4gICAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcuZmlsZSk7XHJcbiAgXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInRhYmxlQ29uZmlnXCIsIHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcbiAgcHJvdGVjdGVkIHNldHRpbmdzKCk6IEZ4U2V0dGluZ1tdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdjb2x1bW4tc2l6ZScsICR0aXRsZTogJ05vLiBvZiBjb2x1bW5zJywgdmFsdWU6IDEgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICd0YWJsZS1jb25maWcnLCAkdGl0bGU6ICdUYWJsZSBDb25maWd1cmF0aW9uJywgdmFsdWU6IHt9IH0pLFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2YWxpZGF0aW9ucygpOiBGeFZhbGlkYXRpb25bXSB7XHJcbiAgICByZXR1cm4gW0Z4VmFsaWRhdG9yU2VydmljZS5yZXF1aXJlZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXJyYXkoY291bnQ6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZUNvbmZpZ3VyYXRpb24oZXZlbnQ6IGFueSk6IHZvaWQgeyBcclxuICAgICB0aGlzLmdlbmVyYWxWYWx1ZXMgPSB7XHJcbiAgICAgIGVuYWJsZUFQSTogZXZlbnQ/LmVuYWJsZUFQSSxcclxuICAgICAgYXBpOiBldmVudD8uYXBpXHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2x1bW5zID0gZXZlbnQuY29sdW1ucy5tYXAoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaGVhZGVyOiBjb2w/LmhlYWRlcixcclxuICAgICAgICBjZWxsVHlwZTogY29sPy5jZWxsVHlwZSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogY29sPy5wbGFjZWhvbGRlcixcclxuICAgICAgICBvcHRpb25zOiBjb2w/Lm9wdGlvbnMsXHJcbiAgICAgICAgYXBpVXJsOiBjb2w/LmFwaVVybCxcclxuICAgICAgICB2YWx1ZUtleTogY29sPy52YWx1ZUtleSxcclxuICAgICAgICBsYWJlbEtleTogY29sPy5sYWJlbEtleSxcclxuICAgICAgICBjbGFzc05hbWU6IGNvbD8uY2xhc3NOYW1lLFxyXG4gICAgICAgIGFwaUtleTogY29sPy5hcGlLZXksXHJcbiAgICAgICAgaXNNdWx0aXNlbGVjdDogY29sPy5pc011bHRpc2VsZWN0LFxyXG4gICAgICAgIGNoZWNrZWRWYWx1ZTogY29sPy5jaGVja2VkVmFsdWUsXHJcbiAgICAgICAgdW5DaGVja2VkVmFsdWU6IGNvbD8udW5DaGVja2VkVmFsdWUsXHJcbiAgICAgICAgY2hlY2tCb3hMYWJlbDpjb2w/LmNoZWNrQm94TGFiZWwsXHJcbiAgICAgICAgaXNSZXF1aXJlZDpjb2w/LmlzUmVxdWlyZWQsXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOmNvbD8uZXJyb3JNZXNzYWdlXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYoIWV2ZW50Py5lbmFibGVBUEkpIHtcclxuICAgICAgdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zID0gY29sdW1ucztcclxuICAgICAgLy8gdGhpcy50YWJsZUNvbmZpZy5yb3dzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogK2V2ZW50Py5yb3dzIH0sIChlLCBpbmRleCkgPT4gKHsgbmFtZTogYFNLVS0ke2luZGV4ICsgMX1gLCBhZ2U6IGluZGV4ICUgMiAhPT0gMCwgZ2VuZGVyOiAnbWFsZScgfSkpXHJcbiAgICAgIC8vIHRoaXMudGFibGVDb25maWcucm93cyA9IEFycmF5LmZyb20oeyBsZW5ndGg6ICtldmVudD8ucm93cyB9LCAoZSwgaW5kZXgpID0+IHtcclxuICAgICAgLy8gICBjb25zdCByb3dzID0gY29sdW1ucy5tYXAoKGM6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgICAgcmV0dXJuIHtcclxuICAgICAgLy8gICAgICAgYz8uaGVhZGVyOiBudWxsXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gICByZXR1cm4gcm93c1xyXG4gICAgICAvLyB9KVxyXG4gICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiArZXZlbnQ/LnJvd3MgfSwgKF8sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbnMucmVkdWNlKChhY2M6IGFueSwgYzogYW55KSA9PiB7XHJcbiAgICAgICAgICBhY2NbYz8uaGVhZGVyXSA9ICcnOyAvLyBJbml0aWFsaXplIGVhY2ggY29sdW1uIGtleSB3aXRoIG51bGxcclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuZmV0Y2hTbWFydERyb3Bkb3duRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQ/LmVuYWJsZUFQSSkge1xyXG4gICAgICB0aGlzLmRyYXdUYWJsZShldmVudCwgY29sdW1ucylcclxuICAgICAgdGhpcy50YWJsZUNvbmZpZyA9IHtcclxuICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxyXG4gICAgICAgIHJvd3M6IFtdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgIHRoaXMudGFibGVDb25maWcgPSAgdGhpcy5pbml0aWFsaXplQ2hlY2tib3hEZWZhdWx0cyh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAgIHRoaXMudGFibGVDb25maWcuZ2VuZXJhbFZhbHVlcyA9IHRoaXMuZ2VuZXJhbFZhbHVlcztcclxuICAgIHRoaXMuZnhEYXRhLnZhbHVlID0gdGhpcy50YWJsZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gICAgY29uc29sZS5sb2coXCJhZnRlclwiKVxyXG4gICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZXR0aW5ncygpOiB2b2lke1xyXG4gICAgaWYodGhpcy5meERhdGEuc2V0dGluZ3Mpe1xyXG4gICAgICBmb3IobGV0IHNldHRpbmcgb2YgdGhpcy5meERhdGEuc2V0dGluZ3Mpe1xyXG4gICAgICBpZihzZXR0aW5nLmtleSA9PT0gJ3RhYmxlLWNvbmZpZycpe1xyXG4gICAgICAgIHNldHRpbmcudmFsdWUgPSB0aGlzLnRhYmxlQ29uZmlnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGRyYXdUYWJsZShldmVudDogYW55LCBjb2x1bW5zOiBhbnkpOiB2b2lkIHtcclxuICAvLyAgIGxldCByb3dzO1xyXG4gIC8vICAgdGhpcy5odHRwLmdldChldmVudC5hcGkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgaWYocmVzKSB7XHJcbiAgLy8gICAgICAgcm93cyA9IHJlcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gIC8vICAgICAgICAgY29uc3QgbmV3T2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgLy8gICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIG5ld09ialtjb2wuaGVhZGVyXSA9IGl0ZW1bY29sLmFwaUtleV07XHJcbiAgLy8gICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIHJldHVybiBuZXdPYmo7XHJcbiAgLy8gICAgICAgfSk7XHJcbiAgLy8gICAgICAgdGhpcy50YWJsZUNvbmZpZyA9IHtcclxuICAvLyAgICAgICAgIGNvbHVtbnMsXHJcbiAgLy8gICAgICAgICByb3dzXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIHRoaXMudGFibGVDb25maWcuZ2VuZXJhbFZhbHVlcyA9IHRoaXMuZ2VuZXJhbFZhbHVlcztcclxuICAvLyAgICAgICB0aGlzLmZ4RGF0YS52YWx1ZSA9IHRoaXMudGFibGVDb25maWc7XHJcbiAgLy8gICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgLy8gICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgICBwdWJsaWMgZHJhd1RhYmxlKGV2ZW50OiBhbnksIGNvbHVtbnM6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IHJvd3M7XHJcbiAgICB0aGlzLmh0dHAuZ2V0KGV2ZW50LmFwaSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMpIHtcclxuICAgICAgICByb3dzID0gcmVzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuZXdPYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbmV3T2JqW2NvbC5oZWFkZXJdID0gaXRlbVtjb2wuYXBpS2V5XSB8fCAnJztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIG5ld09iajtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0ge1xyXG4gICAgICAgICAgY29sdW1ucyxcclxuICAgICAgICAgIHJvd3NcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5nZW5lcmFsVmFsdWVzID0gdGhpcy5nZW5lcmFsVmFsdWVzO1xyXG4gICAgICAgIHRoaXMuZnhEYXRhLnZhbHVlID0gdGhpcy50YWJsZUNvbmZpZztcclxuICAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgZGVsZXRlRmlsZShmaWxlOiBhbnksIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMudXBsb2FkZWRJbWFnZXMuc3BsaWNlKGluZGV4LCAxLCBudWxsKTtcclxuICAvLyAgIHRoaXMudGFibGVDb25maWcucm93c1tpbmRleF1bdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcl0gPSBudWxsO1xyXG4gIC8vICAgY29uc29sZS5sb2coXCJ0YWJsZUNvbmZpZ1wiLCB0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHB1YmxpYyBkZWxldGVGaWxlKHJvd0luZGV4OiBudW1iZXIsIGltYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gIC8vICAgaWYgKHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdKSB7XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLnNwbGljZShpbWFnZUluZGV4LCAxKTtcclxuICBcclxuICAvLyAgICAgY29uc3QgY29sdW1uSGVhZGVyID0gdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAvLyAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcuZmlsZSk7XHJcbiAgLy8gICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVGaWxlKHJvd0luZGV4OiBudW1iZXIsIGltYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdKSB7XHJcbiAgICAgIGNvbnN0IHJlbW92ZWRGaWxlID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF1baW1hZ2VJbmRleF07XHJcbiAgXHJcbiAgICAgIC8vIFRyYWNrIHRoZSBmaWxlIHRvIGRlbGV0ZSBpZiBpdCdzIGFuIHVwbG9hZGVkIGZpbGUgKGkuZS4sIGhhcyBVUkwgYW5kIG5vIEZpbGUgb2JqZWN0KVxyXG4gICAgICBpZiAocmVtb3ZlZEZpbGU/LnJlc3VsdCAmJiB0eXBlb2YgcmVtb3ZlZEZpbGUucmVzdWx0ID09PSAnc3RyaW5nJyAmJiByZW1vdmVkRmlsZS5maWxlID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XS5maWxlc1RvRGVsZXRlID0gdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XS5maWxlc1RvRGVsZXRlIHx8IFtdO1xyXG4gICAgICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF0uZmlsZXNUb0RlbGV0ZS5wdXNoKHJlbW92ZWRGaWxlLnJlc3VsdCk7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gUmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIFVJXHJcbiAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLnNwbGljZShpbWFnZUluZGV4LCAxKTtcclxuICBcclxuICAgICAgY29uc3QgY29sdW1uSGVhZGVyID0gdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcuZmlsZSk7XHJcbiAgXHJcbiAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgXHJcblxyXG4gIC8vIHB1YmxpYyBwYXJzZVVybHModXJsOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgIG5leHQ6IChpbWFnZUJsb2I6IEJsb2IpID0+IHtcclxuICAvLyAgICAgICBjb25zdCBpbWFnZVVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2VCbG9iKTtcclxuICAvLyAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW2luZGV4XSA9IHtcclxuICAvLyAgICAgICAgIHJlc3VsdDogaW1hZ2VVUkwsXHJcbiAgLy8gICAgICAgICBmaWxlOiBudWxsXHJcbiAgLy8gICAgICAgfTtcclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gIC8vICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGltYWdlOicsIGVycm9yKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwdWJsaWMgcGFyc2VVcmxzKHVybDogc3RyaW5nLCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAoaW1hZ2VCbG9iOiBCbG9iKSA9PiB7XHJcbiAgLy8gICAgICAgY29uc3QgaW1hZ2VVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlQmxvYik7XHJcbiAgXHJcbiAgLy8gICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSB8fCBbXTtcclxuICAvLyAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5wdXNoKHtcclxuICAvLyAgICAgICAgIHJlc3VsdDogaW1hZ2VVUkwsXHJcbiAgLy8gICAgICAgICBmaWxlOiBudWxsXHJcbiAgLy8gICAgICAgfSk7XHJcbiAgXHJcbiAgLy8gICAgICAgY29uc3QgY29sdW1uSGVhZGVyID0gdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAvLyAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW2NvbHVtbkhlYWRlcl0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5tYXAoaW1nID0+IGltZy5maWxlKTtcclxuICBcclxuICAvLyAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBpbWFnZTonLCBlcnJvcik7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIHBhcnNlVXJscyh1cmxzOiBzdHJpbmdbXSwgcm93SW5kZXg6IG51bWJlciwgY29sdW1uczogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodXJscykgfHwgIXVybHMubGVuZ3RoKSByZXR1cm47XHJcbiAgXHJcbiAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdIHx8IFtdO1xyXG4gIFxyXG4gICAgY29uc3QgY29sdW1uSGVhZGVyID0gY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICBpZiAoIWNvbHVtbkhlYWRlcikgcmV0dXJuO1xyXG4gIFxyXG4gICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHN0cmluZz5bXSA9IFtdO1xyXG4gIFxyXG4gICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAgICAgICAgIG1hcCgoaW1hZ2VCbG9iOiBCbG9iKSA9PiBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlQmxvYikpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICBcclxuICAgIGlmICghaW1hZ2VGZXRjaGVzLmxlbmd0aCkgcmV0dXJuO1xyXG4gIFxyXG4gICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoaW1hZ2VVUkxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgIGltYWdlVVJMcy5mb3JFYWNoKChpbWFnZVVSTDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5wdXNoKHtcclxuICAgICAgICAgICAgcmVzdWx0OiBpbWFnZVVSTCxcclxuICAgICAgICAgICAgZmlsZTogbnVsbFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgLy8gdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcucmVzdWx0KTtcclxuICBcclxuICAgICAgICAvLyB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvbmUgb3IgbW9yZSBpbWFnZXM6JywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgb25DaGVja2JveENoYW5nZShldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2x1bW46IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIHJvd1tjb2x1bW4uaGVhZGVyXSA9IGlucHV0LmNoZWNrZWQgPyBjb2x1bW4uY2hlY2tlZFZhbHVlIDogY29sdW1uLnVuQ2hlY2tlZFZhbHVlO1xyXG4gIH1cclxuICBcclxuXHJcbiAgaW5pdGlhbGl6ZUNoZWNrYm94RGVmYXVsdHModGFibGVEYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRhYmxlRGF0YS5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgIHRhYmxlRGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5jZWxsVHlwZSA9PT0gJ2NoZWNrYm94JyAmJiBjb2x1bW4udW5DaGVja2VkVmFsdWUpIHtcclxuICAgICAgICAgIHJvd1tjb2x1bW4uaGVhZGVyXSA9IGNvbHVtbi51bkNoZWNrZWRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGFibGVEYXRhO1xyXG4gIH1cclxuICBcclxuICBcclxuICBcclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8Zngtc2V0dGluZ3MtcGFuZWwgW2Z4RGF0YV09XCJmeERhdGFcIiBbdGFibGVEYXRhXT1cImZ4RGF0YVwiIChjb25maWd1cmF0aW9uKT1cIm9uQ2hhbmdlQ29uZmlndXJhdGlvbigkZXZlbnQpXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZnhEYXRhXCI+XHJcbiAgICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgY2xhc3M9XCJmb3JtQnVpbGRlcl9keW5hbWljX3RhYmxlXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zXCI+e3sgY29sdW1uLmhlYWRlciB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZUNvbmZpZy5yb3dzOyBsZXQgcm93SW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uLmNlbGxUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+e3tyb3dbY29sdW1uLmhlYWRlcl19fTwvc3Bhbj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC10ZXh0J1wiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgLz4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC10ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2x1bW4/LmlzUmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbW9kZWw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uPy5pc1JlcXVpcmVkICYmIG1vZGVsLmludmFsaWQgJiYgbW9kZWwudG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwIHRleHQtc20gbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbj8uZXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LW51bWJlcidcIiB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgLz5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwiY29sdW1uLnBsYWNlaG9sZGVyXCIgdmFsdWU9XCJcIj57eyBjb2x1bW4ucGxhY2Vob2xkZXIgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29sdW1uPy5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbj8ub3B0aW9uVmFsdWVcIj4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24/Lm9wdGlvbk5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzZWxlY3QgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiICpuZ1N3aXRjaENhc2U9XCInc21hcnQtZHJvcGRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Qge3tjb2x1bW4uaGVhZGVyfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwiY29sdW1uLnBsYWNlaG9sZGVyXCIgdmFsdWU9XCJcIj57eyBjb2x1bW4ucGxhY2Vob2xkZXIgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc21hcnREcm9wZG93bk9wdGlvbnNbY29sdW1uLmhlYWRlcl1cIiBbdmFsdWVdPVwib3B0aW9uPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbj8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cInNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCIgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQ2l0aWVzXCIgKm5nU3dpdGNoQ2FzZT1cIidzbWFydC1kcm9wZG93bidcIi8+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc21hcnQtZHJvcGRvd24gaGFuZGxpbmcgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzbWFydC1kcm9wZG93bidcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRyb3Bkb3duIGlmIGlzTXVsdGlzZWxlY3QgaXMgZmFsc2Ugb3Igbm90IHNldCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0ICpuZ0lmPVwiIWNvbHVtbj8uaXNNdWx0aXNlbGVjdFwiIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nSWY9XCJjb2x1bW4ucGxhY2Vob2xkZXJcIiB2YWx1ZT1cIlwiPnt7IGNvbHVtbi5wbGFjZWhvbGRlciB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCIgW3ZhbHVlXT1cIm9wdGlvbj8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQcmltZU5HIG11bHRpc2VsZWN0IGlmIGlzTXVsdGlzZWxlY3QgaXMgdHJ1ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCAqbmdJZj1cImNvbHVtbj8uaXNNdWx0aXNlbGVjdFwiIFtvcHRpb25zXT1cInNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICgnU2VsZWN0ICcgKyBjb2x1bW4uaGVhZGVyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRyb3Bkb3duaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZGRfZG93bl9pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1hbmdsZS1kb3duIHRleHQteGxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1tjb2x1bW4uaGVhZGVyXSA9PT0gY29sdW1uLmNoZWNrZWRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKCRldmVudCwgcm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uPy5jaGVja0JveExhYmVsIHx8ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cInJhZGlvLXt7cm93SW5kZXh9fVwiIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCIgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidyYWRpby1ncm91cCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjb2x1bW4ub3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cInJhZGlvLWdyb3VwLXt7cm93SW5kZXh9fVwiIHR5cGU9XCJyYWRpb1wiIFt2YWx1ZV09XCJvcHRpb24/Lm9wdGlvbk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24/Lm9wdGlvbk5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUtdXBsb2FkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtZW5kIGp1c3RpZnktZW5kIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgdXBsb2FkZWRJbWFnZXM/Lltyb3dJbmRleF07IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlPy5yZXN1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJVcGxvYWRlZCBJbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZCBzaGFkb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVGaWxlKHJvd0luZGV4LCBpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc2hhZG93LWxnIGhvdmVyOmJnLXJlZC02MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinYxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN1cGxvYWRGaWxlICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEltYWdlKCRldmVudCwgcm93SW5kZXgpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBsb2FkRmlsZS5jbGljaygpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yIGJnLWJsdWUtNTAwIHRleHQtd2hpdGUgcHgtMyBweS0xIHJvdW5kZWQgaG92ZXI6YmctYmx1ZS02MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsZS11cGxvYWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCByZWxhdGl2ZSBnYXAtNCBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiICpuZ0Zvcj1cImxldCBpbWFnZSBvZiB1cGxvYWRlZEltYWdlcz8uW3Jvd0luZGV4XTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiODBcIiBbc3JjXT1cImltYWdlPy5yZXN1bHRcIiBhbHQ9XCJVcGxvYWRlZCBJbWFnZVwiIGNsYXNzPVwicm91bmRlZCBzaGFkb3cgb3JpZW50YXRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiZGVsZXRlRmlsZShyb3dJbmRleCwgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgdy01IGgtNSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF82ODM3XzI5NjgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiByeD1cIjlcIiBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPVwibWFzazBfNjgzN18yOTY4M1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiNFwiIHk9XCI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIG1hc2s9XCJ1cmwoI21hc2swXzY4MzdfMjk2ODMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4yMDQ1IDguOTk4MTVMNS44MTgwMiA2LjYxMTY3TDYuNjEzNTEgNS44MTYxN0w5IDguMjAyNjZMMTEuMzg2NSA1LjgxNjE3TDEyLjE4MiA2LjYxMTY3TDkuNzk1NSA4Ljk5ODE1TDEyLjE4MiAxMS4zODQ2TDExLjM4NjUgMTIuMTgwMUw5IDkuNzkzNjVMNi42MTM1MSAxMi4xODAxTDUuODE4MDIgMTEuMzg0Nkw4LjIwNDUgOC45OTgxNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzY4MzdfMjk2ODNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiByeD1cIjlcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiZmlsZVwiICN1cGxvYWRGaWxlIGhpZGRlbiBtdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRJbWFnZSgkZXZlbnQsIHJvd0luZGV4KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInVwbG9hZEZpbGUuY2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyOVwiIGhlaWdodD1cIjI4XCIgdmlld0JveD1cIjAgMCAyOSAyOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4wMDEgMy4wMDE5NUMxMS41MzIyIDMuMDAxOTUgOS4xNjcyMiAzLjg2OTU2IDcuMjM2NDEgNS4zODQxNEw3LjIzNTk4IDQuNTk2OTVDNy4yMzU5OCA0LjUyNDczIDcuMjIxNzUgNC40NTMyMSA3LjE5NDExIDQuMzg2NDhDNy4xNjY0NyA0LjMxOTc1IDcuMTI1OTYgNC4yNTkxMiA3LjA3NDg5IDQuMjA4MDRDNy4wMjM4MSA0LjE1Njk3IDYuOTYzMTggNC4xMTY0NiA2Ljg5NjQ1IDQuMDg4ODJDNi44Mjk3MiA0LjA2MTE4IDYuNzU4MiA0LjA0Njk1IDYuNjg1OTggNC4wNDY5NUM2LjYxMzc1IDQuMDQ2OTUgNi41NDIyMyA0LjA2MTE4IDYuNDc1NSA0LjA4ODgyQzYuNDA4NzcgNC4xMTY0NiA2LjM0ODE0IDQuMTU2OTcgNi4yOTcwNyA0LjIwODA0QzYuMjQ1OTkgNC4yNTkxMiA2LjIwNTQ4IDQuMzE5NzUgNi4xNzc4NCA0LjM4NjQ4QzYuMTUwMiA0LjQ1MzIxIDYuMTM1OTggNC41MjQ3MyA2LjEzNTk4IDQuNTk2OTVMNi4xMzY0MiA2LjY4NjUyQzYuMTM2NDMgNi44MzIzOSA2LjE5NDM4IDYuOTcyMjggNi4yOTc1MiA3LjA3NTQyQzYuNDAwNjcgNy4xNzg1NiA2LjU0MDU1IDcuMjM2NTEgNi42ODY0MiA3LjIzNjUySDguNzc1OThDOC44NDgyIDcuMjM2NTIgOC45MTk3MiA3LjIyMjMgOC45ODY0NSA3LjE5NDY2QzkuMDUzMTggNy4xNjcwMiA5LjExMzgxIDcuMTI2NTEgOS4xNjQ4OSA3LjA3NTQzQzkuMjE1OTYgNy4wMjQzNiA5LjI1NjQ3IDYuOTYzNzMgOS4yODQxMSA2Ljg5N0M5LjMxMTc1IDYuODMwMjcgOS4zMjU5OCA2Ljc1ODc1IDkuMzI1OTggNi42ODY1MkM5LjMyNTk4IDYuNjE0MyA5LjMxMTc1IDYuNTQyNzggOS4yODQxMSA2LjQ3NjA1QzkuMjU2NDcgNi40MDkzMiA5LjIxNTk2IDYuMzQ4NjkgOS4xNjQ4OSA2LjI5NzYxQzkuMTEzODEgNi4yNDY1NCA5LjA1MzE4IDYuMjA2MDMgOC45ODY0NSA2LjE3ODM5QzguOTE5NzIgNi4xNTA3NSA4Ljg0ODIgNi4xMzY1MiA4Ljc3NTk4IDYuMTM2NTJIOC4wNTg0QzkuNzcwMiA0Ljg0Mzg3IDExLjgzOTkgNC4xMDE5NSAxNC4wMDEgNC4xMDE5NUMxOS40NzUxIDQuMTAxOTUgMjMuOTAxIDguNTI3ODIgMjMuOTAxIDE0LjAwMkMyMy45MDEgMTkuNDc2MSAxOS40NzUxIDIzLjkwMiAxNC4wMDEgMjMuOTAyQzguNTI2ODQgMjMuOTAyIDQuMTAwOTggMTkuNDc2MSA0LjEwMDk4IDE0LjAwMkM0LjEwMDk4IDEyLjYzODEgNC4zODI2MyAxMS4yODg4IDQuOTI4NTUgMTAuMDM4OUM0Ljk4NjkxIDkuOTA1MzIgNC45ODk4MiA5Ljc1Mzk5IDQuOTM2NjUgOS42MTgyMkM0Ljg4MzQ3IDkuNDgyNDYgNC43Nzg1NSA5LjM3MzM2IDQuNjQ0OTYgOS4zMTQ5MkM0LjU3ODc3IDkuMjg1OTYgNC41MDc1MyA5LjI3MDMyIDQuNDM1MyA5LjI2ODlDNC4zNjMwNiA5LjI2NzQ3IDQuMjkxMjYgOS4yODAzIDQuMjIzOTggOS4zMDY2M0M0LjE1NjcxIDkuMzMyOTcgNC4wOTUyOCA5LjM3MjMgNC4wNDMyMSA5LjQyMjM4QzMuOTkxMTQgOS40NzI0NyAzLjk0OTQ0IDkuNTMyMzIgMy45MjA1MSA5LjU5ODUyQzMuMzEzOTMgMTAuOTg3MiAzLjAwMDk4IDEyLjQ4NjYgMy4wMDA5OCAxNC4wMDJDMy4wMDA5OCAyMC4wNzA2IDcuOTMyMzYgMjUuMDAyIDE0LjAwMSAyNS4wMDJDMjAuMDY5NiAyNS4wMDIgMjUuMDAxIDIwLjA3MDYgMjUuMDAxIDE0LjAwMkMyNS4wMDEgNy45MzMzNCAyMC4wNjk2IDMuMDAxOTUgMTQuMDAxIDMuMDAxOTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjk5ODggNi4xMzk2NUM5LjY2MTYgNi4xMzk2NSA2LjEzMzc5IDkuNjY3NDYgNi4xMzM3OSAxNC4wMDQ2QzYuMTMzNzkgMTguMzQxOCA5LjY2MTYgMjEuODY5NiAxMy45OTg4IDIxLjg2OTZDMTguMzM2IDIxLjg2OTYgMjEuODYzOCAxOC4zNDE4IDIxLjg2MzggMTQuMDA0NkMyMS44NjM4IDkuNjY3NDYgMTguMzM2IDYuMTM5NjUgMTMuOTk4OCA2LjEzOTY1Wk0xMy45OTg4IDguMjI5NjVDMTQuMTQ0NyA4LjIyOTY1IDE0LjI4NDYgOC4yODc1OSAxNC4zODc3IDguMzkwNzRDMTQuNDkwOCA4LjQ5Mzg4IDE0LjU0ODggOC42MzM3OCAxNC41NDg4IDguNzc5NjVWMTMuNzc2OUwxNy41MjI3IDE2Ljc1MDhDMTcuNjI1OCAxNi44NTM5IDE3LjY4MzcgMTYuOTkzOCAxNy42ODM3IDE3LjEzOTZDMTcuNjgzNyAxNy4yODU1IDE3LjYyNTggMTcuNDI1NCAxNy41MjI3IDE3LjUyODVDMTcuNDE5NSAxNy42MzE2IDE3LjI3OTYgMTcuNjg5NiAxNy4xMzM4IDE3LjY4OTZDMTYuOTg3OSAxNy42ODk2IDE2Ljg0ODEgMTcuNjMxNiAxNi43NDQ5IDE3LjUyODVMMTMuNjA5OSAxNC4zOTM1QzEzLjUwNjggMTQuMjkwNCAxMy40NDg4IDE0LjE1MDUgMTMuNDQ4OCAxNC4wMDQ2VjguNzc5NjVDMTMuNDQ4OCA4LjYzMzc4IDEzLjUwNjcgOC40OTM4OCAxMy42MDk5IDguMzkwNzRDMTMuNzEzIDguMjg3NTkgMTMuODUyOSA4LjIyOTY1IDEzLjk5ODggOC4yMjk2NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjguNTZcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS41MTQ3OVwiIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wNjggMjIuNzM5MVYxNy42NzA4SDE4LjQ5NjhMMTQuMjEwOCAxMi42MDI1TDkuOTI0OCAxNy42NzA4SDEzLjM1MzZWMjIuNzM5MUg5LjA2NzU5VjIyLjY5NjlDOC45MjM1OCAyMi43MDUzIDguNzg2NDMgMjIuNzM5MSA4LjYzODk5IDIyLjczOTFDNi45MzM5MSAyMi43MzkxIDUuMjk4NjYgMjIuMDcxNyA0LjA5Mjk4IDIwLjg4MzVDMi44ODczIDE5LjY5NTQgMi4yMDk5NiAxOC4wODQgMi4yMDk5NiAxNi40MDM3QzIuMjA5OTYgMTMuMTUzMiA0LjcwNDQzIDEwLjUwNDIgNy45MDUyMyAxMC4xNDFDOC4xODU4NSA4LjY5NTMgOC45Njg5MiA3LjM5MTE4IDEwLjExOTcgNi40NTI5MkMxMS4yNzA2IDUuNTE0NjUgMTIuNzE3MiA1LjAwMDg5IDE0LjIxMDggNUMxNS43MDQ3IDUuMDAwODIgMTcuMTUxNSA1LjUxNDUyIDE4LjMwMjYgNi40NTI3N0MxOS40NTM3IDcuMzkxMDEgMjAuMjM3MSA4LjY5NTE2IDIwLjUxODEgMTAuMTQxQzIzLjcxODkgMTAuNTA0MiAyNi4yMSAxMy4xNTMyIDI2LjIxIDE2LjQwMzdDMjYuMjEgMTguMDg0IDI1LjUzMjYgMTkuNjk1NCAyNC4zMjY5IDIwLjg4MzVDMjMuMTIxMyAyMi4wNzE3IDIxLjQ4NiAyMi43MzkxIDE5Ljc4MDkgMjIuNzM5MUMxOS42MzY5IDIyLjczOTEgMTkuNDk4MSAyMi43MDUzIDE5LjM1MjMgMjIuNjk2OVYyMi43MzkxSDE1LjA2OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXBsb2FkRmlsZS5jbGljaygpXCIgY2xhc3M9XCJ0ZXh0LWJhc2UgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1VwbG9hZCcgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgbmFtZT1cIlwiIGlkPVwiXCIgY29scz1cIjMwXCIgcm93cz1cIjJcIiBbcGxhY2Vob2xkZXJdPVwiY29sdW1uPy5wbGFjZWhvbGRlclwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG48L2Z4LXNldHRpbmdzLXBhbmVsPiJdfQ==
@@ -324,7 +324,7 @@ class DynamicTableComponent extends FxBaseComponent {
324
324
  this.parseUrls(item[fileHeaderName], index, dynamicTableValues?.columns);
325
325
  }
326
326
  });
327
- this.tableConfig = this.initializeCheckboxDefaults(dynamicTableValues);
327
+ // this.tableConfig = this.initializeCheckboxDefaults(dynamicTableValues);
328
328
  // this.tableConfig = dynamicTableValues;
329
329
  this.fxData.value = this.tableConfig;
330
330
  // this.tableFormControl.reset();
@@ -472,6 +472,28 @@ class DynamicTableComponent extends FxBaseComponent {
472
472
  }
473
473
  }
474
474
  }
475
+ // public drawTable(event: any, columns: any): void {
476
+ // let rows;
477
+ // this.http.get(event.api).subscribe((res: any) => {
478
+ // if(res) {
479
+ // rows = res.map((item: any) => {
480
+ // const newObj: Record<string, any> = {};
481
+ // columns.forEach((col: any) => {
482
+ // newObj[col.header] = item[col.apiKey];
483
+ // });
484
+ // return newObj;
485
+ // });
486
+ // this.tableConfig = {
487
+ // columns,
488
+ // rows
489
+ // }
490
+ // this.tableConfig.generalValues = this.generalValues;
491
+ // this.fxData.value = this.tableConfig;
492
+ // this.tableFormControl.reset();
493
+ // this.tableFormControl.setValue(this.tableConfig);
494
+ // }
495
+ // })
496
+ // }
475
497
  drawTable(event, columns) {
476
498
  let rows;
477
499
  this.http.get(event.api).subscribe((res) => {
@@ -479,7 +501,7 @@ class DynamicTableComponent extends FxBaseComponent {
479
501
  rows = res.map((item) => {
480
502
  const newObj = {};
481
503
  columns.forEach((col) => {
482
- newObj[col.header] = item[col.apiKey];
504
+ newObj[col.header] = item[col.apiKey] || '';
483
505
  });
484
506
  return newObj;
485
507
  });