cilog-lib 0.7.2 → 0.7.3

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.
@@ -75,7 +75,7 @@ export class CilogTableComponent {
75
75
  });
76
76
  // Objet
77
77
  this.filterService.register('objetFilter', (cell, filter) => {
78
- return (filter.indexOf(cell.value) != -1);
78
+ return filter.find(val => val.ID == cell.value?.ID) != null;
79
79
  });
80
80
  // Liste
81
81
  this.filterService.register('listeFilter', (cell, filter) => {
@@ -376,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
376
376
  type: ViewChild,
377
377
  args: ['table', { static: true }]
378
378
  }] } });
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPdEYsTUFBTSxPQUFPLG1CQUFtQjtJQStCNUIsWUFDWSxtQkFBd0MsRUFDeEMsYUFBNEIsRUFDNUIsS0FBd0I7UUFGeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQTVCMUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRzlDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUsxQyxXQUFNLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDOUQsZUFBVSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2xFLGFBQVEsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDeEUsYUFBUSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3BFLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUN0RSxhQUFRLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUQsV0FBTSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3hELFdBQU0sR0FB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LENBQUMsQ0FBQyxDQUFDO1FBQzdCLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Z0hBN1dRLG1CQUFtQjtvR0FBbkIsbUJBQW1CLGtmQ1poQyx3K2tDQXNnQkE7MkZEMWZhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDSSxhQUFhO3NLQVNkLE9BQU87c0JBQWYsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQVErQixLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIEZpbHRlclNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IElFZGl0aW9uLCBJU3VwcHJlc3Npb24sIElTZWxlY3Rpb24sIElGaWx0ZXIsIElTb3J0LCBJUGFnZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW50ZXJmYWNlcy9lZGl0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElDb2x1bW4sIElSb3csIElPcHRpb25zR3JpbGxlLCBJQ2VsbCwgSU9wdGlvbnNGaWxlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbnRlcmZhY2VzL2dyaWxsZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBDb2xUeXBlLCBNb2RlU2VsZWN0aW9uLCBUaGVtZUdyaWxsZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZW51bXMvZ3JpbGxlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NpbG9nLXRhYmxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWxvZ1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBmaWx0ZXJDb2w6IElDb2x1bW47XHJcbiAgICBmaWx0ZXJWYWx1ZTogYW55O1xyXG5cclxuICAgIEBJbnB1dCgpIGNvbHVtbnM6IElDb2x1bW5bXTtcclxuICAgIEBPdXRwdXQoKSBjb2x1bW5zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29sdW1uW10+KCk7XHJcblxyXG4gICAgQElucHV0KCkgdmFsdWVzOiBJUm93W107XHJcbiAgICBAT3V0cHV0KCkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUm93W10+KCk7XHJcblxyXG4gICAgQElucHV0KCkgb3B0aW9uczogSU9wdGlvbnNHcmlsbGU7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbkVkaXQ6IEV2ZW50RW1pdHRlcjxJRWRpdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPElFZGl0aW9uPigpO1xyXG4gICAgQE91dHB1dCgpIG9uRWRpdEluaXQ6IEV2ZW50RW1pdHRlcjxJRWRpdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPElFZGl0aW9uPigpO1xyXG4gICAgQE91dHB1dCgpIG9uRGVsZXRlOiBFdmVudEVtaXR0ZXI8SVN1cHByZXNzaW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVN1cHByZXNzaW9uPigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8SVNlbGVjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPElTZWxlY3Rpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25VbnNlbGVjdDogRXZlbnRFbWl0dGVyPElTZWxlY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPigpO1xyXG4gICAgQE91dHB1dCgpIG9uRmlsdGVyOiBFdmVudEVtaXR0ZXI8SUZpbHRlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPElGaWx0ZXI+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Tb3J0OiBFdmVudEVtaXR0ZXI8SVNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU29ydD4oKTtcclxuICAgIEBPdXRwdXQoKSBvblBhZ2U6IEV2ZW50RW1pdHRlcjxJUGFnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPElQYWdlPigpO1xyXG5cclxuICAgIHNlbGVjdGVkUm93czogSVJvd1tdIHwgSVJvdztcclxuXHJcbiAgICBmaWx0ZXJEYXRlc1JhbmdlOiBEYXRlW107XHJcblxyXG4gICAgb3B0aW9uc1N3aXRjaDogYW55W107XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogVGFibGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnNTd2l0Y2ggPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdPdWknLCB2YWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnTm9uJywgdmFsdWU6IGZhbHNlIH0sXHJcbiAgICAgICAgXVxyXG5cclxuICAgICAgICAvLyBEYXRlXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKCdkYXRlUmFuZ2VGaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHN0YXJ0OiBudW1iZXIgPSBmaWx0ZXJbMF0uZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBsZXQgZW5kOiBudW1iZXI7XHJcbiAgICAgICAgICAgIGxldCBlbmREYXRlOiBEYXRlO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyWzFdKSB7XHJcbiAgICAgICAgICAgICAgICBlbmREYXRlID0gbmV3IERhdGUoZmlsdGVyWzFdLmdldEZ1bGxZZWFyKCksIGZpbHRlclsxXS5nZXRNb250aCgpLCBmaWx0ZXJbMV0uZ2V0RGF0ZSgpLCAyMywgNTksIDU5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVuZERhdGUgPSBuZXcgRGF0ZShmaWx0ZXJbMF0uZ2V0RnVsbFllYXIoKSwgZmlsdGVyWzBdLmdldE1vbnRoKCksIGZpbHRlclswXS5nZXREYXRlKCksIDIzLCA1OSwgNTkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVuZCA9IGVuZERhdGUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gY2VsbC52YWx1ZSA9PSBudWxsID8gZmFsc2UgOiBjZWxsLnZhbHVlLmdldFRpbWUoKSA+PSBzdGFydCAmJiBjZWxsLnZhbHVlLmdldFRpbWUoKSA8PSBlbmQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gVGV4dFxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3RlcigndGV4dEZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbHRlciA9PSBudWxsIHx8IGZpbHRlci50cmltKCkgPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjZWxsLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2VsbC52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlci50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBOdW1iZXJcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ251bWJlckZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbHRlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2VsbC52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNlbGwudmFsdWUgPT0gZmlsdGVyO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIE9iamV0XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKCdvYmpldEZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIuaW5kZXhPZihjZWxsLnZhbHVlKSAhPSAtMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gTGlzdGVcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ2xpc3RlRmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgb2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgZmlsdGVyLmZvckVhY2godmFsID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjZWxsLnZhbHVlLmluZGV4T2YodmFsKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBvaztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBTd2l0Y2hcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ3N3aXRjaEZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIuaW5kZXhPZihjZWxsLnZhbHVlKSAhPSAtMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gQnV0dG9uXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKCdidXR0b25GaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgZmlsdGVyT2JqRmllbGQ6IHN0cmluZyA9IGNlbGwub3B0aW9uc1snZmlsdGVyT2JqRmllbGQnXTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlck9ialN1YkZpZWxkOiBzdHJpbmcgPSBjZWxsLm9wdGlvbnNbJ2ZpbHRlck9ialN1YkZpZWxkJ107XHJcblxyXG4gICAgICAgICAgICBpZiAoY2VsbC5vYmogPT0gbnVsbCB8fCBmaWx0ZXIgPT0gbnVsbCB8fCBmaWx0ZXIudHJpbSgpID09ICcnIHx8IGZpbHRlck9iakZpZWxkID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoZmlsdGVyT2JqU3ViRmllbGQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNlbGwub2JqW2ZpbHRlck9iakZpZWxkXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlci50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLm9ialtmaWx0ZXJPYmpGaWVsZF0uZmluZCh2YWwgPT4gdmFsW2ZpbHRlck9ialN1YkZpZWxkXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlci50b0xvd2VyQ2FzZSgpKSkgIT0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29sLm9wdGlvbnMgPSB7IGRlZmF1bHRGaWx0ZXJzOiBudWxsIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNvbHVtbnNDaGFuZ2UuZW1pdCh0aGlzLmNvbHVtbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoY29sLCBjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVycywgdGhpcy5nZXRGaWx0ZXJCeUNvbChjb2wpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW5wdXROdW1iZXIoZXZlbnQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU29ydFxyXG4gICAgY3VzdG9tU29ydChldmVudDogYW55KSB7XHJcbiAgICAgICAgbGV0IGNvbDogSUNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuaWQgPT0gZXZlbnQuZmllbGQpO1xyXG4gICAgICAgIHRoaXMub25Tb3J0LmVtaXQoeyBjb2x1bW46IGNvbCwgb3JkZXI6IGV2ZW50Lm9yZGVyIH0pXHJcbiAgICAgICAgbGV0IHR5cGVDb2w6IENvbFR5cGUgPSBjb2wudHlwZTtcclxuICAgICAgICBldmVudC5kYXRhLnNvcnQoKGRhdGExLCBkYXRhMikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUxID0gZGF0YTFbZXZlbnQuZmllbGRdLnZhbHVlO1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUyID0gZGF0YTJbZXZlbnQuZmllbGRdLnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gMDtcclxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZUNvbCA9PSBDb2xUeXBlLlRleHQgfHwgdHlwZUNvbCA9PSBDb2xUeXBlLkZpbGUpXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZ2V0TXVsdGlTZWxlY3RDb25jYXQodmFsdWUxLCB0aGlzLmdldE9wdGlvbihjb2wsIGRhdGExLCAnb3B0aW9uTGFiZWwnKSkubG9jYWxlQ29tcGFyZSh0aGlzLmdldE11bHRpU2VsZWN0Q29uY2F0KHZhbHVlMiwgdGhpcy5nZXRPcHRpb24oY29sLCBkYXRhMiwgJ29wdGlvbkxhYmVsJykpKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuRHJvcGRvd24gfHwgdHlwZUNvbCA9PSBDb2xUeXBlLlNlbGVjdEJ1dHRvbiB8fCB0eXBlQ29sID09IENvbFR5cGUuU3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMVt0aGlzLmdldE9wdGlvbihjb2wsIGRhdGExLCAnb3B0aW9uTGFiZWwnKV0ubG9jYWxlQ29tcGFyZSh2YWx1ZTJbdGhpcy5nZXRPcHRpb24oY29sLCBkYXRhMiwgJ29wdGlvbkxhYmVsJyldKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuTnVtYmVyIHx8IHR5cGVDb2wgPT0gQ29sVHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAodmFsdWUxIDwgdmFsdWUyKSA/IC0xIDogKHZhbHVlMSA+IHZhbHVlMikgPyAxIDogMDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuU3dpdGNoKVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHZhbHVlMSA9PT0gdmFsdWUyKSA/IDAgOiB2YWx1ZTEgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9PSAwO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIChldmVudC5vcmRlciAqIHJlc3VsdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tUeXBlKHR5cGVDb2w6IHN0cmluZywgY29sOiBJQ29sdW1uKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbFsndHlwZSddID09IHR5cGVDb2w7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCeUlkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkVkaXRDZWxsKHJvdzogSVJvdywgY29sdW1uOiBJQ29sdW1uLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKGNvbHVtbiwgcm93LCAnYWN0aW9uJykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldE9wdGlvbihjb2x1bW4sIHJvdywgJ2FjdGlvbicpKCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FZGl0LmVtaXQoeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4sIHZhbHVlOiB2YWx1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3RSb3cocm93OiBJUm93KSB7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHsgcm93OiByb3csIHNlbGVjdGVkUm93czogdGhpcy5zZWxlY3RlZFJvd3MgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25VbnNlbGVjdFJvdyhyb3c6IElSb3cpIHtcclxuICAgICAgICB0aGlzLm9uVW5zZWxlY3QuZW1pdCh7IHJvdzogcm93LCBzZWxlY3RlZFJvd3M6IHRoaXMuc2VsZWN0ZWRSb3dzIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hEYXRhKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc29ydGFibGUgJiYgdGhpcy5vcHRpb25zLnZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSBbLi4udGhpcy52YWx1ZXNdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblBhZ2VUYWJsZShldmVudDogSVBhZ2UpIHtcclxuICAgICAgICB0aGlzLm9uUGFnZS5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRlbGV0ZUxpbmUocm93OiBJUm93KSB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICAgICAgICBrZXk6ICdjb25maXJtJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ8OKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZXR0ZSBsaWduZSA/JyxcclxuICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcy5zcGxpY2UodGhpcy52YWx1ZXMuaW5kZXhPZihyb3cpLCAxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzID0gWy4uLnRoaXMudmFsdWVzXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzQ2hhbmdlLmVtaXQodGhpcy52YWx1ZXMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZS5lbWl0KHsgcm93OiByb3cgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkVkaXRJbml0Q2VsbChyb3c6IElSb3csIGNvbHVtbjogSUNvbHVtbiwgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMub25FZGl0SW5pdC5lbWl0KHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uLCB2YWx1ZTogdmFsdWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNb2RlRWRpdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVkaXRhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9wdGlvbihjb2wsIHJvdywgb3B0aW9uOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAocm93ICE9IG51bGwgJiYgcm93W2NvbC5pZF0ub3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChyb3dbY29sLmlkXS5vcHRpb25zW29wdGlvbl0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd1tjb2wuaWRdLm9wdGlvbnNbb3B0aW9uXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sICE9IG51bGwgJiYgY29sLm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnNbb3B0aW9uXSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sLm9wdGlvbnNbb3B0aW9uXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE11bHRpU2VsZWN0Q29uY2F0KHZhbHVlLCBsYWJlbDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2YWwgPT4geyByZXR1cm4gdmFsW2xhYmVsXTsgfSkuam9pbignLCAnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdExpYmVsbGVCeVZhbHVlKHJvdywgY29sKSB7XHJcbiAgICAgICAgbGV0IGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICAgICAgICBpZiAocm93W2NvbC5pZF0udmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb3dbY29sLmlkXS5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgbGFiZWwgPSByb3dbY29sLmlkXS5vcHRpb25zWydvcHRpb25zJ10uZmluZChvcHQgPT4gb3B0LnZhbHVlID09IHJvd1tjb2wuaWRdLnZhbHVlKVtyb3dbY29sLmlkXS5vcHRpb25zLm9wdGlvbkxhYmVsXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbGFiZWwgPSBjb2wub3B0aW9uc1snb3B0aW9ucyddLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PSByb3dbY29sLmlkXS52YWx1ZSlbY29sLm9wdGlvbnMub3B0aW9uTGFiZWxdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWx0ZXJCeUNvbChjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICAvLyBEYXRlcyAocmFuZ2UpXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ2RhdGVSYW5nZUZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE51bWJlclxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLk51bWJlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gJ251bWJlckZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9iamV0XHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRHJvcGRvd24gfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5TdGF0ZSB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLlNlbGVjdEJ1dHRvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gJ29iamV0RmlsdGVyJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTGlzdGVcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5NdWx0aVNlbGVjdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ2xpc3RlRmlsdGVyJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVGV4dGVcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5GaWxlIHx8IGNvbC50eXBlID09IENvbFR5cGUuVGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ3RleHRGaWx0ZXInO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBvbkZpbHRlckNvbChldmVudCwgY29sOiBJQ29sdW1uKSB7XHJcbiAgICAgICAgLy8gRGF0ZXMgKHJhbmdlKVxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkRhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIoY29sLCBjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVycywgJ2RhdGVSYW5nZUZpbHRlcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOdW1iZXJcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5OdW1iZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIoY29sLCBldmVudC52YWx1ZSwgJ251bWJlckZpbHRlcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBPYmpldFxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkRyb3Bkb3duIHx8IGNvbC50eXBlID09IENvbFR5cGUuU3RhdGUgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5TZWxlY3RCdXR0b24pIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIoY29sLCBldmVudC52YWx1ZSwgJ29iamV0RmlsdGVyJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIExpc3RlXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIoY29sLCBldmVudC52YWx1ZSwgJ2xpc3RlRmlsdGVyJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRleHRlXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRmlsZSB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLlRleHQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIoY29sLCBldmVudC50YXJnZXQudmFsdWUsICd0ZXh0RmlsdGVyJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFN3aXRjaFxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLlN3aXRjaCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGV2ZW50LnZhbHVlLCAnc3dpdGNoRmlsdGVyJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEJ1dHRvblxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkJ1dHRvbikge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGV2ZW50LnRhcmdldC52YWx1ZSwgJ2J1dHRvbkZpbHRlcicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXIoY29sOiBJQ29sdW1uLCB2YWw6IGFueSwgZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmZpbHRlckNvbCA9IGNvbDtcclxuICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsO1xyXG4gICAgICAgIHRoaXMudGFibGUuZmlsdGVyKHZhbCwgY29sLmlkLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRmlsdGVyVGFibGUoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoeyBjb2x1bW46IHRoaXMuZmlsdGVyQ29sLCB2YWx1ZTogdGhpcy5maWx0ZXJWYWx1ZSwgZmlsdGVyZWRWYWx1ZTogdGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSA9PSB0cnVlICYmIHRoaXMub3B0aW9ucy5tb2RlU2VsZWN0aW9uICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gPT0gTW9kZVNlbGVjdGlvbi5DaGVja2JveDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUb3RhbChjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICBpZiAoY29sLmRpc3BsYXlUb3RhbCAmJiBjb2wudHlwZSA9PSBDb2xUeXBlLk51bWJlcikge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVzOiBJUm93W10gPSB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUgIT0gbnVsbCA/IHRoaXMudGFibGUuZmlsdGVyZWRWYWx1ZSA6IHRoaXMudmFsdWVzO1xyXG4gICAgICAgICAgICBsZXQgdG90YWw6IG51bWJlciA9IDA7XHJcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b3RhbCArPSAodmFsW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHZhbFtjb2wuaWRdLnZhbHVlIDogMCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXR0ZWROdW1iZXIoY29sLCBudWxsLCB0b3RhbC50b0xvY2FsZVN0cmluZygnZnItRlInLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1hdHRlZE51bWJlcihjb2w6IElDb2x1bW4sIHJvd0RhdGE6IElSb3csIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZmluYWxWYWx1ZTogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmaW5hbFZhbHVlLnB1c2godGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbFZhbHVlLnB1c2godmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdzdWZmaXgnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZpbmFsVmFsdWUucHVzaCh0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdzdWZmaXgnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbFZhbHVlLmpvaW4oJyAnKTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZEZpbGUoY2VsbDogSUNlbGwpIHtcclxuICAgICAgICBsZXQgcGF0aDogc3RyaW5nID0gKDxJT3B0aW9uc0ZpbGU+Y2VsbC5vcHRpb25zKS5kb3dubG9hZFBhdGg7XHJcbiAgICAgICAgbGV0IGZpbGVOYW1lID0gY2VsbC52YWx1ZTtcclxuICAgICAgICBjb25zdCBhOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcclxuICAgICAgICBhLmhyZWYgPSBwYXRoO1xyXG4gICAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgIGEuY2xpY2soKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwocGF0aCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHAtdGFibGUgI3RhYmxlXHJcbiAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICAgICBbdmFsdWVdPVwidmFsdWVzXCJcclxuICAgICAgICAgZGF0YUtleT1cImlkXCJcclxuICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmICFpc01vZGVFZGl0aW9uKCkgJiYgIWlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKCkgPyAnc2luZ2xlJyA6IG51bGxcIlxyXG4gICAgICAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRSb3dzXCJcclxuICAgICAgICAgKG9uUm93U2VsZWN0KT1cIm9uU2VsZWN0Um93KCRldmVudClcIlxyXG4gICAgICAgICAob25Sb3dVbnNlbGVjdCk9XCJvblVuc2VsZWN0Um93KCRldmVudClcIlxyXG4gICAgICAgICAoc29ydEZ1bmN0aW9uKT1cImN1c3RvbVNvcnQoJGV2ZW50KVwiXHJcbiAgICAgICAgIFtjdXN0b21Tb3J0XT1cIm9wdGlvbnMuZ3JvdXBpbmcgPT0gbnVsbCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgW3Njcm9sbEhlaWdodF09XCJvcHRpb25zLnNjcm9sbEhlaWdodCAhPSBudWxsID8gb3B0aW9ucy5zY3JvbGxIZWlnaHQgOiBudWxsXCJcclxuICAgICAgICAgW3Jvd0dyb3VwTW9kZV09XCJvcHRpb25zLmdyb3VwaW5nICE9IG51bGwgPyAnc3ViaGVhZGVyJyA6IG51bGxcIlxyXG4gICAgICAgICBbZ3JvdXBSb3dzQnldPVwib3B0aW9ucy5ncm91cGluZyAhPSBudWxsID8gb3B0aW9ucy5ncm91cGluZy5vYmogKyAnLicgKyBvcHRpb25zLmdyb3VwaW5nLmlkIDogbnVsbFwiXHJcbiAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cIm9wdGlvbnMudmlydHVhbFNjcm9sbCAhPSBudWxsICYmIG9wdGlvbnMuc2Nyb2xsSGVpZ2h0ICE9IG51bGwgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICBbdmlydHVhbFJvd0hlaWdodF09XCIzNVwiXHJcbiAgICAgICAgIFtwYWdpbmF0b3JdPVwib3B0aW9ucy5wYWdpbmF0b3IgPT0gbnVsbCA/IGZhbHNlIDogdHJ1ZVwiXHJcbiAgICAgICAgIFtyb3dzXT1cIm9wdGlvbnMucGFnaW5hdG9yUm93c1wiXHJcbiAgICAgICAgIChvblBhZ2UpPVwib25QYWdlVGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgIChvbkZpbHRlcik9XCJvbkZpbHRlclRhYmxlKCRldmVudClcIlxyXG4gICAgICAgICBbZ3JvdXBSb3dzQnlPcmRlcl09XCIwXCJcclxuICAgICAgICAgW3RhYmxlU3R5bGVDbGFzc109XCIhb3B0aW9ucy50aGVtZUdyaWxsZSA/ICdncmlkX2dyZXknIDogb3B0aW9ucy50aGVtZUdyaWxsZVwiPlxyXG5cclxuICAgIDwhLS0gSEVBREVSIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG5cclxuICAgICAgICA8IS0tIEhFQURFUlMgLS0+XHJcbiAgICAgICAgPHRyIGNsYXNzPVwicm93SGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImNlbGxEZWxldGVcIiAqbmdJZj1cImlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKClcIj5cclxuXHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NlbnRlclRleHQnIDogb3B0aW9ucy5jZW50ZXJIZWFkZXJzIH1cIlxyXG4gICAgICAgICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wuaWRcIlxyXG4gICAgICAgICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cIiFvcHRpb25zLnNvcnRhYmxlIHx8IG9wdGlvbnMuZ3JvdXBpbmcgIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBpZD1cInt7IGNvbC5pZCB9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaERhdGEoKVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLmxpYmVsbGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiAqbmdJZj1cIm9wdGlvbnMuc29ydGFibGUgJiYgb3B0aW9ucy5ncm91cGluZyA9PSBudWxsXCIgW2ZpZWxkXT1cImNvbC5pZFwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwib3B0aW9ucy5yb3dzRGVsZXRhYmxlXCI+PC90aD5cclxuICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICA8IS0tIEZJTFRSRVMgLS0+XHJcbiAgICAgICAgPHRyICpuZ0lmPVwib3B0aW9ucy5maWx0ZXJhYmxlXCIgY2xhc3M9XCJyb3dGaWx0ZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImNlbGxEZWxldGVcIiAqbmdJZj1cImlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKClcIj48L3RoPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNoZWNrVHlwZSgnVGV4dCcsIGNvbCkgfHwgY2hlY2tUeXBlKCdGaWxlJywgY29sKSB8fCAoY2hlY2tUeXBlKCdCdXR0b24nLCBjb2wpICYmIGNvbC5vcHRpb25zLmZpbHRlckNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnNcIj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY2hlY2tUeXBlKCdEYXRlJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgZGF0ZUZvcm1hdD1cImRkL21tL3l5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJjb2wuaWQgKyAnX2ZpbHRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5SW5wdXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvbkZpbHRlckNvbCgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dCdXR0b25CYXI9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGVhckNsaWNrKT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBOdW1iZXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjaGVja1R5cGUoJ051bWJlcicsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIG1vZGU9XCJkZWNpbWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU9XCJmci1GUlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25JbnB1dCk9XCJvbkZpbHRlckNvbCgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTGlzdGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjaGVja1R5cGUoJ0Ryb3Bkb3duJywgY29sKSB8fCBjaGVja1R5cGUoJ011bHRpU2VsZWN0JywgY29sKSB8fCBjaGVja1R5cGUoJ1NlbGVjdEJ1dHRvbicsIGNvbCkgfHwgY2hlY2tUeXBlKCdTdGF0ZScsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cImNvbC5vcHRpb25zPy5vcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJJRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImNvbC5vcHRpb25zPy5vcHRpb25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUZpbHRlck1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNpemU9XCIzMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiezB9IHNlbGVjdGlvbm7DqXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZpbHRlckNvbCgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJjb2wub3B0aW9ucy5vcHRpb25Hcm91cENoaWxkcmVuICE9IG51bGwgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cExhYmVsXT1cImNvbC5vcHRpb25zLm9wdGlvbkdyb3VwTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cENoaWxkcmVuXT1cImNvbC5vcHRpb25zLm9wdGlvbkdyb3VwQ2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ncm91cCBwVGVtcGxhdGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tncm91cFtjb2wub3B0aW9ucy5vcHRpb25Hcm91cExhYmVsXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBTd2l0Y2ggLS0+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjaGVja1R5cGUoJ1N3aXRjaCcsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cIm9wdGlvbnNTd2l0Y2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjMwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zTGFiZWw9XCJ7MH0gc2VsZWN0aW9ubsOpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBOb24gZmlsdHJhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY2hlY2tUeXBlKCdJbWFnZScsIGNvbCkgfHwgKGNoZWNrVHlwZSgnQnV0dG9uJywgY29sKSAmJiAhY29sLm9wdGlvbnMuZmlsdGVyQ29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwib3B0aW9ucy5yb3dzRGVsZXRhYmxlXCI+PC90aD5cclxuICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICA8IS0tIFRPVEFMIC0tPlxyXG4gICAgICAgIDx0ciAqbmdJZj1cIm9wdGlvbnMucm93VG90YWxcIiBjbGFzcz1cInJvd1RvdGFsXCI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImNlbGxEZWxldGVcIiAqbmdJZj1cImlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKClcIj48L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjZW50ZXJUZXh0JyA6IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0VG90YWwoY29sKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwib3B0aW9ucy5yb3dzRGVsZXRhYmxlXCI+PC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8IS0tIEdyb3VwaGVhZGVyIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImdyb3VwaGVhZGVyXCIgbGV0LXJvd0RhdGE+XHJcbiAgICAgICAgPHRyIHBSb3dHcm91cEhlYWRlciBjbGFzcz1cInJvd0dyb3VwaW5nXCI+XHJcbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0X2JvbGRcIj57eyByb3dEYXRhW29wdGlvbnMuZ3JvdXBpbmcub2JqXVtvcHRpb25zLmdyb3VwaW5nLmxpYmVsbGVdIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwhLS0gQm9keSAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd0RhdGEgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPHRyIGlkPVwie3sgcm93RGF0YS5pZCB9fVwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhLmNvbG9yID8gcm93RGF0YS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgIFtwU2VsZWN0YWJsZVJvd109XCJyb3dEYXRhXCJcclxuICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93RGlzYWJsZWRdPVwiIW9wdGlvbnMuc2VsZWN0YWJsZSB8fCBpc01vZGVFZGl0aW9uKClcIj5cclxuXHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKClcIiBjbGFzcz1cImNlbGxEZWxldGVcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cInJvd0RhdGFcIj48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUZXh0IC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdUZXh0JywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5dPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BFZGl0YWJsZUNvbHVtbkZpZWxkXT1cImNvbC5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRJbml0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnVGV4dCcsIGNvbCkgJiYgKCFpc01vZGVFZGl0aW9uKCkgfHwgcm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InIDogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCI+e3sgcm93RGF0YVtjb2wuaWRdLnZhbHVlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdEcm9wZG93bicsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udmFsdWVbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9ucycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdmaWx0ZXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlGaWx0ZXJNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eU1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiYXNlWkluZGV4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdiYXNlWkluZGV4JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICd2aXJ0dWFsU2Nyb2xsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ0Ryb3Bkb3duJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV0gOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlW2dldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXSA6ICcnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE51bWJlciAtLT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnTnVtYmVyJywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZT1cImZyLUZSXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25JbnB1dCk9XCJvbklucHV0TnVtYmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0J1dHRvbnNdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3Nob3dCdXR0b25zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0U3R5bGVDbGFzcz1cInRleHQtcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWZmaXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3N1ZmZpeCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdwcmVmaXgnKSAhPSBudWxsID8gZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ByZWZpeCcpICsgJyAnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpICE9IG51bGwgJiYgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGVJbnRlZ2VyJykgPT0gdHJ1ZSA/IDAgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWluRGVjaW1hbGVzJykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtaW5EZWNpbWFsZXMnKSA6IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZUludGVnZXInKSAhPSBudWxsICYmIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpID09IHRydWUgPyAwIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21heERlY2ltYWxlcycpICE9IG51bGwgPyBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJykgOiAyIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkZvY3VzKT1cIm9uRWRpdEluaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ051bWJlcicsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgbnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyBnZXRGb3JtYXR0ZWROdW1iZXIoY29sLCByb3dEYXRhLCByb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBudW1iZXIpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIERhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ0RhdGUnLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IGRhdGU6ICdkZC9NTS95eXl5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkL21tL3l5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdERheU9mV2Vlaz1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5SW5wdXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnRGF0ZScsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgZGF0ZTogJ2RkL01NL3l5eXknXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCI+e3sgcm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgZGF0ZTogJ2RkL01NL3l5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE11bHRpU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdNdWx0aVNlbGVjdCcsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0TXVsdGlTZWxlY3RDb25jYXQocm93RGF0YVtjb2wuaWRdLnZhbHVlLCBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnZmlsdGVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUZpbHRlck1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jhc2VaSW5kZXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2Jhc2VaSW5kZXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ZpcnR1YWxTY3JvbGwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjMwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zTGFiZWw9XCJ7MH0gc2VsZWN0aW9ubsOpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RvZ2dsZUFsbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2ZpbHRlcicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkdyb3VwQ2hpbGRyZW4nKSAhPSBudWxsID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uR3JvdXBMYWJlbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uR3JvdXBMYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uR3JvdXBDaGlsZHJlbl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uR3JvdXBDaGlsZHJlbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWdyb3VwIHBUZW1wbGF0ZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2dyb3VwW2NvbC5vcHRpb25zLm9wdGlvbkdyb3VwTGFiZWxdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnTXVsdGlTZWxlY3QnLCBjb2wpICYmIChyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImdldE11bHRpU2VsZWN0Q29uY2F0KHJvd0RhdGFbY29sLmlkXS52YWx1ZSwgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJykpXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCI+e3sgZ2V0TXVsdGlTZWxlY3RDb25jYXQocm93RGF0YVtjb2wuaWRdLnZhbHVlLCBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ0ltYWdlJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZW50ZXJUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHdpZHRoOiA0MHB4O1wiIHNyYz1cInt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSB9fVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdCdXR0b24nLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBhZGRpbmdDZWxsIGNlbnRlclRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidwLWJ1dHRvbi0nICsgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3NldmVyaXR5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdsYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdpY29uJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbGFiZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdEJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnU2VsZWN0QnV0dG9uJywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9ucycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvblZhbHVlXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25WYWx1ZScpICE9IG51bGwgPyBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uVmFsdWUnKSA6ICd2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdTZWxlY3RCdXR0b24nLCBjb2wpICYmIChyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IGdldFNlbGVjdExpYmVsbGVCeVZhbHVlKHJvd0RhdGEsIGNvbCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gU3dpdGNoIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdTd2l0Y2gnLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dFN3aXRjaCAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAoZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2FjdGlvbicpID09IG51bGwgJiYgIWlzTW9kZUVkaXRpb24oKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXRTd2l0Y2g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRmlsZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnRmlsZScsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWlucHV0Z3JvdXBcIiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdXBsb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tCeUlkKCdpbnB1dF8nICsgcm93RGF0YVtjb2wuaWRdLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ7eydvdXRwdXRfJyArIHJvd0RhdGFbY29sLmlkXS5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgcm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udmFsdWUgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnZG93bmxvYWRQYXRoJykgJiYgcm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRGaWxlKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIiBpZD1cInt7J2lucHV0XycgKyByb3dEYXRhW2NvbC5pZF0uaWR9fVwiICNpbnB1dEZpbGUgcElucHV0VGV4dCB0eXBlPVwiZmlsZVwiIGhpZGRlbiAoY2hhbmdlKT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSA9IGlucHV0RmlsZS5maWxlc1swXS5uYW1lOyBvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgaW5wdXRGaWxlLmZpbGVzWzBdKVwiPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnRmlsZScsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgPyByb3dEYXRhW2NvbC5pZF0udmFsdWUgOiAnJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBTdGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnU3RhdGUnLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbnRlclRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFnIFt2YWx1ZV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZS5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZS5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXRhZz5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRGVsZXRpb24gLS0+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm9wdGlvbnMucm93c0RlbGV0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxEZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YS5kZWxldGFibGUgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJvd0RhdGEuZGVsZXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXIgYnV0dG9uRGVsZXRlIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUxpbmUocm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG4iXX0=
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPdEYsTUFBTSxPQUFPLG1CQUFtQjtJQStCNUIsWUFDWSxtQkFBd0MsRUFDeEMsYUFBNEIsRUFDNUIsS0FBd0I7UUFGeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQTVCMUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRzlDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUsxQyxXQUFNLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDOUQsZUFBVSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2xFLGFBQVEsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDeEUsYUFBUSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3BFLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUN0RSxhQUFRLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUQsV0FBTSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3hELFdBQU0sR0FB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O1FBQ1YsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOztnSEE3V1EsbUJBQW1CO29HQUFuQixtQkFBbUIsa2ZDWmhDLHcra0NBc2dCQTsyRkQxZmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNJLGFBQWE7c0tBU2QsT0FBTztzQkFBZixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUUsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBUStCLEtBQUs7c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgRmlsdGVyU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgSUVkaXRpb24sIElTdXBwcmVzc2lvbiwgSVNlbGVjdGlvbiwgSUZpbHRlciwgSVNvcnQsIElQYWdlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbnRlcmZhY2VzL2VkaXRpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSUNvbHVtbiwgSVJvdywgSU9wdGlvbnNHcmlsbGUsIElDZWxsLCBJT3B0aW9uc0ZpbGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ludGVyZmFjZXMvZ3JpbGxlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IENvbFR5cGUsIE1vZGVTZWxlY3Rpb24sIFRoZW1lR3JpbGxlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9lbnVtcy9ncmlsbGUuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY2lsb2ctdGFibGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENpbG9nVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIGZpbHRlckNvbDogSUNvbHVtbjtcclxuICAgIGZpbHRlclZhbHVlOiBhbnk7XHJcblxyXG4gICAgQElucHV0KCkgY29sdW1uczogSUNvbHVtbltdO1xyXG4gICAgQE91dHB1dCgpIGNvbHVtbnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElDb2x1bW5bXT4oKTtcclxuXHJcbiAgICBASW5wdXQoKSB2YWx1ZXM6IElSb3dbXTtcclxuICAgIEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElSb3dbXT4oKTtcclxuXHJcbiAgICBASW5wdXQoKSBvcHRpb25zOiBJT3B0aW9uc0dyaWxsZTtcclxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG4gICAgQE91dHB1dCgpIG9uRWRpdDogRXZlbnRFbWl0dGVyPElFZGl0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUVkaXRpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25FZGl0SW5pdDogRXZlbnRFbWl0dGVyPElFZGl0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUVkaXRpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25EZWxldGU6IEV2ZW50RW1pdHRlcjxJU3VwcHJlc3Npb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU3VwcHJlc3Npb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlbGVjdGlvbj4oKTtcclxuICAgIEBPdXRwdXQoKSBvblVuc2VsZWN0OiBFdmVudEVtaXR0ZXI8SVNlbGVjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPElTZWxlY3Rpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxJRmlsdGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUZpbHRlcj4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNvcnQ6IEV2ZW50RW1pdHRlcjxJU29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyPElTb3J0PigpO1xyXG4gICAgQE91dHB1dCgpIG9uUGFnZTogRXZlbnRFbWl0dGVyPElQYWdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBhZ2U+KCk7XHJcblxyXG4gICAgc2VsZWN0ZWRSb3dzOiBJUm93W10gfCBJUm93O1xyXG5cclxuICAgIGZpbHRlckRhdGVzUmFuZ2U6IERhdGVbXTtcclxuXHJcbiAgICBvcHRpb25zU3dpdGNoOiBhbnlbXTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCd0YWJsZScsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlOiBUYWJsZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3B0aW9uc1N3aXRjaCA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogJ091aScsIHZhbHVlOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdOb24nLCB2YWx1ZTogZmFsc2UgfSxcclxuICAgICAgICBdXHJcblxyXG4gICAgICAgIC8vIERhdGVcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ2RhdGVSYW5nZUZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbHRlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgc3RhcnQ6IG51bWJlciA9IGZpbHRlclswXS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGxldCBlbmQ6IG51bWJlcjtcclxuICAgICAgICAgICAgbGV0IGVuZERhdGU6IERhdGU7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJbMV0pIHtcclxuICAgICAgICAgICAgICAgIGVuZERhdGUgPSBuZXcgRGF0ZShmaWx0ZXJbMV0uZ2V0RnVsbFllYXIoKSwgZmlsdGVyWzFdLmdldE1vbnRoKCksIGZpbHRlclsxXS5nZXREYXRlKCksIDIzLCA1OSwgNTkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZW5kRGF0ZSA9IG5ldyBEYXRlKGZpbHRlclswXS5nZXRGdWxsWWVhcigpLCBmaWx0ZXJbMF0uZ2V0TW9udGgoKSwgZmlsdGVyWzBdLmdldERhdGUoKSwgMjMsIDU5LCA1OSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZW5kID0gZW5kRGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBjZWxsLnZhbHVlID09IG51bGwgPyBmYWxzZSA6IGNlbGwudmFsdWUuZ2V0VGltZSgpID49IHN0YXJ0ICYmIGNlbGwudmFsdWUuZ2V0VGltZSgpIDw9IGVuZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBUZXh0XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKCd0ZXh0RmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyID09IG51bGwgfHwgZmlsdGVyLnRyaW0oKSA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNlbGwudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjZWxsLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIE51bWJlclxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3RlcignbnVtYmVyRmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjZWxsLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2VsbC52YWx1ZSA9PSBmaWx0ZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gT2JqZXRcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ29iamV0RmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyLmZpbmQodmFsID0+IHZhbC5JRCA9PSBjZWxsLnZhbHVlPy5JRCkgIT0gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBMaXN0ZVxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3RlcignbGlzdGVGaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBvazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmaWx0ZXIuZm9yRWFjaCh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNlbGwudmFsdWUuaW5kZXhPZih2YWwpICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG9rO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIFN3aXRjaFxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3Rlcignc3dpdGNoRmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKGZpbHRlci5pbmRleE9mKGNlbGwudmFsdWUpICE9IC0xKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBCdXR0b25cclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ2J1dHRvbkZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJPYmpGaWVsZDogc3RyaW5nID0gY2VsbC5vcHRpb25zWydmaWx0ZXJPYmpGaWVsZCddO1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyT2JqU3ViRmllbGQ6IHN0cmluZyA9IGNlbGwub3B0aW9uc1snZmlsdGVyT2JqU3ViRmllbGQnXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjZWxsLm9iaiA9PSBudWxsIHx8IGZpbHRlciA9PSBudWxsIHx8IGZpbHRlci50cmltKCkgPT0gJycgfHwgZmlsdGVyT2JqRmllbGQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJPYmpTdWJGaWVsZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2VsbC5vYmpbZmlsdGVyT2JqRmllbGRdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNlbGwub2JqW2ZpbHRlck9iakZpZWxkXS5maW5kKHZhbCA9PiB2YWxbZmlsdGVyT2JqU3ViRmllbGRdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpKSAhPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjb2wub3B0aW9ucyA9IHsgZGVmYXVsdEZpbHRlcnM6IG51bGwgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZS5lbWl0KHRoaXMuY29sdW1ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVycyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzLCB0aGlzLmdldEZpbHRlckJ5Q29sKGNvbCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25JbnB1dE51bWJlcihldmVudCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTb3J0XHJcbiAgICBjdXN0b21Tb3J0KGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBsZXQgY29sOiBJQ29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5pZCA9PSBldmVudC5maWVsZCk7XHJcbiAgICAgICAgdGhpcy5vblNvcnQuZW1pdCh7IGNvbHVtbjogY29sLCBvcmRlcjogZXZlbnQub3JkZXIgfSlcclxuICAgICAgICBsZXQgdHlwZUNvbDogQ29sVHlwZSA9IGNvbC50eXBlO1xyXG4gICAgICAgIGV2ZW50LmRhdGEuc29ydCgoZGF0YTEsIGRhdGEyKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTEgPSBkYXRhMVtldmVudC5maWVsZF0udmFsdWU7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTIgPSBkYXRhMltldmVudC5maWVsZF0udmFsdWU7XHJcblxyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gMTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAwO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuVGV4dCB8fCB0eXBlQ29sID09IENvbFR5cGUuRmlsZSlcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5NdWx0aVNlbGVjdCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5nZXRNdWx0aVNlbGVjdENvbmNhdCh2YWx1ZTEsIHRoaXMuZ2V0T3B0aW9uKGNvbCwgZGF0YTEsICdvcHRpb25MYWJlbCcpKS5sb2NhbGVDb21wYXJlKHRoaXMuZ2V0TXVsdGlTZWxlY3RDb25jYXQodmFsdWUyLCB0aGlzLmdldE9wdGlvbihjb2wsIGRhdGEyLCAnb3B0aW9uTGFiZWwnKSkpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5Ecm9wZG93biB8fCB0eXBlQ29sID09IENvbFR5cGUuU2VsZWN0QnV0dG9uIHx8IHR5cGVDb2wgPT0gQ29sVHlwZS5TdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUxW3RoaXMuZ2V0T3B0aW9uKGNvbCwgZGF0YTEsICdvcHRpb25MYWJlbCcpXS5sb2NhbGVDb21wYXJlKHZhbHVlMlt0aGlzLmdldE9wdGlvbihjb2wsIGRhdGEyLCAnb3B0aW9uTGFiZWwnKV0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5OdW1iZXIgfHwgdHlwZUNvbCA9PSBDb2xUeXBlLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh2YWx1ZTEgPCB2YWx1ZTIpID8gLTEgOiAodmFsdWUxID4gdmFsdWUyKSA/IDEgOiAwO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5Td2l0Y2gpXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAodmFsdWUxID09PSB2YWx1ZTIpID8gMCA6IHZhbHVlMSA/IC0xIDogMTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID09IDA7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gKGV2ZW50Lm9yZGVyICogcmVzdWx0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1R5cGUodHlwZUNvbDogc3RyaW5nLCBjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICByZXR1cm4gY29sWyd0eXBlJ10gPT0gdHlwZUNvbDtcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0J5SWQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGljaygpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRWRpdENlbGwocm93OiBJUm93LCBjb2x1bW46IElDb2x1bW4sIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oY29sdW1uLCByb3csICdhY3Rpb24nKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0T3B0aW9uKGNvbHVtbiwgcm93LCAnYWN0aW9uJykoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVkaXQuZW1pdCh7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiwgdmFsdWU6IHZhbHVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblNlbGVjdFJvdyhyb3c6IElSb3cpIHtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoeyByb3c6IHJvdywgc2VsZWN0ZWRSb3dzOiB0aGlzLnNlbGVjdGVkUm93cyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVuc2VsZWN0Um93KHJvdzogSVJvdykge1xyXG4gICAgICAgIHRoaXMub25VbnNlbGVjdC5lbWl0KHsgcm93OiByb3csIHNlbGVjdGVkUm93czogdGhpcy5zZWxlY3RlZFJvd3MgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaERhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3J0YWJsZSAmJiB0aGlzLm9wdGlvbnMudmlydHVhbFNjcm9sbCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IFsuLi50aGlzLnZhbHVlc107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUGFnZVRhYmxlKGV2ZW50OiBJUGFnZSkge1xyXG4gICAgICAgIHRoaXMub25QYWdlLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGVsZXRlTGluZShyb3c6IElSb3cpIHtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgICAgICAgIGtleTogJ2NvbmZpcm0nLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiAnw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNldHRlIGxpZ25lID8nLFxyXG4gICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNwbGljZSh0aGlzLnZhbHVlcy5pbmRleE9mKHJvdyksIDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSBbLi4udGhpcy52YWx1ZXNdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlLmVtaXQoeyByb3c6IHJvdyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRWRpdEluaXRDZWxsKHJvdzogSVJvdywgY29sdW1uOiBJQ29sdW1uLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vbkVkaXRJbml0LmVtaXQoeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4sIHZhbHVlOiB2YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpc01vZGVFZGl0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZWRpdGFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T3B0aW9uKGNvbCwgcm93LCBvcHRpb246IHN0cmluZykge1xyXG4gICAgICAgIGlmIChyb3cgIT0gbnVsbCAmJiByb3dbY29sLmlkXS5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHJvd1tjb2wuaWRdLm9wdGlvbnNbb3B0aW9uXSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93W2NvbC5pZF0ub3B0aW9uc1tvcHRpb25dO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2wgIT0gbnVsbCAmJiBjb2wub3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9uc1tvcHRpb25dICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb2wub3B0aW9uc1tvcHRpb25dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TXVsdGlTZWxlY3RDb25jYXQodmFsdWUsIGxhYmVsOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHZhbCA9PiB7IHJldHVybiB2YWxbbGFiZWxdOyB9KS5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VsZWN0TGliZWxsZUJ5VmFsdWUocm93LCBjb2wpIHtcclxuICAgICAgICBsZXQgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgIGlmIChyb3dbY29sLmlkXS52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvd1tjb2wuaWRdLm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBsYWJlbCA9IHJvd1tjb2wuaWRdLm9wdGlvbnNbJ29wdGlvbnMnXS5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT0gcm93W2NvbC5pZF0udmFsdWUpW3Jvd1tjb2wuaWRdLm9wdGlvbnMub3B0aW9uTGFiZWxdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IGNvbC5vcHRpb25zWydvcHRpb25zJ10uZmluZChvcHQgPT4gb3B0LnZhbHVlID09IHJvd1tjb2wuaWRdLnZhbHVlKVtjb2wub3B0aW9ucy5vcHRpb25MYWJlbF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlckJ5Q29sKGNvbDogSUNvbHVtbikge1xyXG4gICAgICAgIC8vIERhdGVzIChyYW5nZSlcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnZGF0ZVJhbmdlRmlsdGVyJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTnVtYmVyXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnbnVtYmVyRmlsdGVyJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gT2JqZXRcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5Ecm9wZG93biB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLlN0YXRlIHx8IGNvbC50eXBlID09IENvbFR5cGUuU2VsZWN0QnV0dG9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnb2JqZXRGaWx0ZXInO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBMaXN0ZVxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLk11bHRpU2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnbGlzdGVGaWx0ZXInO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUZXh0ZVxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkZpbGUgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5UZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAndGV4dEZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRmlsdGVyQ29sKGV2ZW50LCBjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICAvLyBEYXRlcyAocmFuZ2UpXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzLCAnZGF0ZVJhbmdlRmlsdGVyJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE51bWJlclxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLk51bWJlcikge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGV2ZW50LnZhbHVlLCAnbnVtYmVyRmlsdGVyJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9iamV0XHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRHJvcGRvd24gfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5TdGF0ZSB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLlNlbGVjdEJ1dHRvbikge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGV2ZW50LnZhbHVlLCAnb2JqZXRGaWx0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTGlzdGVcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5NdWx0aVNlbGVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGV2ZW50LnZhbHVlLCAnbGlzdGVGaWx0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVGV4dGVcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5GaWxlIHx8IGNvbC50eXBlID09IENvbFR5cGUuVGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGV2ZW50LnRhcmdldC52YWx1ZSwgJ3RleHRGaWx0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gU3dpdGNoXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuU3dpdGNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKGNvbCwgZXZlbnQudmFsdWUsICdzd2l0Y2hGaWx0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQnV0dG9uXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuQnV0dG9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKGNvbCwgZXZlbnQudGFyZ2V0LnZhbHVlLCAnYnV0dG9uRmlsdGVyJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcihjb2w6IElDb2x1bW4sIHZhbDogYW55LCBmaWx0ZXI6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ29sID0gY29sO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWw7XHJcbiAgICAgICAgdGhpcy50YWJsZS5maWx0ZXIodmFsLCBjb2wuaWQsIGZpbHRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWx0ZXJUYWJsZShldmVudCkge1xyXG4gICAgICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7IGNvbHVtbjogdGhpcy5maWx0ZXJDb2wsIHZhbHVlOiB0aGlzLmZpbHRlclZhbHVlLCBmaWx0ZXJlZFZhbHVlOiB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zZWxlY3RhYmxlID09IHRydWUgJiYgdGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbiA9PSBNb2RlU2VsZWN0aW9uLkNoZWNrYm94O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRvdGFsKGNvbDogSUNvbHVtbikge1xyXG4gICAgICAgIGlmIChjb2wuZGlzcGxheVRvdGFsICYmIGNvbC50eXBlID09IENvbFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZXM6IElSb3dbXSA9IHRoaXMudGFibGUuZmlsdGVyZWRWYWx1ZSAhPSBudWxsID8gdGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlIDogdGhpcy52YWx1ZXM7XHJcbiAgICAgICAgICAgIGxldCB0b3RhbDogbnVtYmVyID0gMDtcclxuICAgICAgICAgICAgdmFsdWVzLmZvckVhY2godmFsID0+IHtcclxuICAgICAgICAgICAgICAgIHRvdGFsICs9ICh2YWxbY29sLmlkXS52YWx1ZSAhPSBudWxsID8gdmFsW2NvbC5pZF0udmFsdWUgOiAwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdHRlZE51bWJlcihjb2wsIG51bGwsIHRvdGFsLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0dGVkTnVtYmVyKGNvbDogSUNvbHVtbiwgcm93RGF0YTogSVJvdywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCBmaW5hbFZhbHVlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdwcmVmaXgnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZpbmFsVmFsdWUucHVzaCh0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdwcmVmaXgnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsVmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3N1ZmZpeCcpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZmluYWxWYWx1ZS5wdXNoKHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3N1ZmZpeCcpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsVmFsdWUuam9pbignICcpO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkRmlsZShjZWxsOiBJQ2VsbCkge1xyXG4gICAgICAgIGxldCBwYXRoOiBzdHJpbmcgPSAoPElPcHRpb25zRmlsZT5jZWxsLm9wdGlvbnMpLmRvd25sb2FkUGF0aDtcclxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBjZWxsLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGE6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xyXG4gICAgICAgIGEuaHJlZiA9IHBhdGg7XHJcbiAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcbiAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChwYXRoKTtcclxuICAgIH1cclxufVxyXG4iLCI8cC10YWJsZSAjdGFibGVcclxuICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZXNcIlxyXG4gICAgICAgICBkYXRhS2V5PVwiaWRcIlxyXG4gICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgIWlzTW9kZUVkaXRpb24oKSAmJiAhaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKSA/ICdzaW5nbGUnIDogbnVsbFwiXHJcbiAgICAgICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFJvd3NcIlxyXG4gICAgICAgICAob25Sb3dTZWxlY3QpPVwib25TZWxlY3RSb3coJGV2ZW50KVwiXHJcbiAgICAgICAgIChvblJvd1Vuc2VsZWN0KT1cIm9uVW5zZWxlY3RSb3coJGV2ZW50KVwiXHJcbiAgICAgICAgIChzb3J0RnVuY3Rpb24pPVwiY3VzdG9tU29ydCgkZXZlbnQpXCJcclxuICAgICAgICAgW2N1c3RvbVNvcnRdPVwib3B0aW9ucy5ncm91cGluZyA9PSBudWxsID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cIm9wdGlvbnMuc2Nyb2xsSGVpZ2h0ICE9IG51bGwgPyBvcHRpb25zLnNjcm9sbEhlaWdodCA6IG51bGxcIlxyXG4gICAgICAgICBbcm93R3JvdXBNb2RlXT1cIm9wdGlvbnMuZ3JvdXBpbmcgIT0gbnVsbCA/ICdzdWJoZWFkZXInIDogbnVsbFwiXHJcbiAgICAgICAgIFtncm91cFJvd3NCeV09XCJvcHRpb25zLmdyb3VwaW5nICE9IG51bGwgPyBvcHRpb25zLmdyb3VwaW5nLm9iaiArICcuJyArIG9wdGlvbnMuZ3JvdXBpbmcuaWQgOiBudWxsXCJcclxuICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwib3B0aW9ucy52aXJ0dWFsU2Nyb2xsICE9IG51bGwgJiYgb3B0aW9ucy5zY3JvbGxIZWlnaHQgIT0gbnVsbCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgIFt2aXJ0dWFsUm93SGVpZ2h0XT1cIjM1XCJcclxuICAgICAgICAgW3BhZ2luYXRvcl09XCJvcHRpb25zLnBhZ2luYXRvciA9PSBudWxsID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgW3Jvd3NdPVwib3B0aW9ucy5wYWdpbmF0b3JSb3dzXCJcclxuICAgICAgICAgKG9uUGFnZSk9XCJvblBhZ2VUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICAgKG9uRmlsdGVyKT1cIm9uRmlsdGVyVGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgIFtncm91cFJvd3NCeU9yZGVyXT1cIjBcIlxyXG4gICAgICAgICBbdGFibGVTdHlsZUNsYXNzXT1cIiFvcHRpb25zLnRoZW1lR3JpbGxlID8gJ2dyaWRfZ3JleScgOiBvcHRpb25zLnRoZW1lR3JpbGxlXCI+XHJcblxyXG4gICAgPCEtLSBIRUFERVIgLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcblxyXG4gICAgICAgIDwhLS0gSEVBREVSUyAtLT5cclxuICAgICAgICA8dHIgY2xhc3M9XCJyb3dIZWFkZXJcIj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwiaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKVwiPlxyXG5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2VudGVyVGV4dCcgOiBvcHRpb25zLmNlbnRlckhlYWRlcnMgfVwiXHJcbiAgICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbC5pZFwiXHJcbiAgICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uRGlzYWJsZWRdPVwiIW9wdGlvbnMuc29ydGFibGUgfHwgb3B0aW9ucy5ncm91cGluZyAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgIGlkPVwie3sgY29sLmlkIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZyZXNoRGF0YSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2wubGliZWxsZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uICpuZ0lmPVwib3B0aW9ucy5zb3J0YWJsZSAmJiBvcHRpb25zLmdyb3VwaW5nID09IG51bGxcIiBbZmllbGRdPVwiY29sLmlkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCIgKm5nSWY9XCJvcHRpb25zLnJvd3NEZWxldGFibGVcIj48L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgIDwhLS0gRklMVFJFUyAtLT5cclxuICAgICAgICA8dHIgKm5nSWY9XCJvcHRpb25zLmZpbHRlcmFibGVcIiBjbGFzcz1cInJvd0ZpbHRlclwiPlxyXG5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwiaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKVwiPjwvdGg+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBUZXh0IC0tPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY2hlY2tUeXBlKCdUZXh0JywgY29sKSB8fCBjaGVja1R5cGUoJ0ZpbGUnLCBjb2wpIHx8IChjaGVja1R5cGUoJ0J1dHRvbicsIGNvbCkgJiYgY29sLm9wdGlvbnMuZmlsdGVyQ29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIERhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjaGVja1R5cGUoJ0RhdGUnLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNvbC5pZCArICdfZmlsdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3REYXlPZldlZWs9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0J1dHRvbkJhcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyQ2xpY2spPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE51bWJlciAtLT5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNoZWNrVHlwZSgnTnVtYmVyJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgbW9kZT1cImRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZT1cImZyLUZSXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbklucHV0KT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBMaXN0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNoZWNrVHlwZSgnRHJvcGRvd24nLCBjb2wpIHx8IGNoZWNrVHlwZSgnTXVsdGlTZWxlY3QnLCBjb2wpIHx8IGNoZWNrVHlwZSgnU2VsZWN0QnV0dG9uJywgY29sKSB8fCBjaGVja1R5cGUoJ1N0YXRlJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwiY29sLm9wdGlvbnM/Lm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiY29sLm9wdGlvbnM/Lm9wdGlvbkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjMwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zTGFiZWw9XCJ7MH0gc2VsZWN0aW9ubsOpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImNvbC5vcHRpb25zLm9wdGlvbkdyb3VwQ2hpbGRyZW4gIT0gbnVsbCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkdyb3VwTGFiZWxdPVwiY29sLm9wdGlvbnMub3B0aW9uR3JvdXBMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkdyb3VwQ2hpbGRyZW5dPVwiY29sLm9wdGlvbnMub3B0aW9uR3JvdXBDaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWdyb3VwIHBUZW1wbGF0ZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2dyb3VwW2NvbC5vcHRpb25zLm9wdGlvbkdyb3VwTGFiZWxdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFN3aXRjaCAtLT5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNoZWNrVHlwZSgnU3dpdGNoJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwib3B0aW9uc1N3aXRjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlGaWx0ZXJNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eU1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cInswfSBzZWxlY3Rpb25uw6lzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE5vbiBmaWx0cmFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjaGVja1R5cGUoJ0ltYWdlJywgY29sKSB8fCAoY2hlY2tUeXBlKCdCdXR0b24nLCBjb2wpICYmICFjb2wub3B0aW9ucy5maWx0ZXJDb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCIgKm5nSWY9XCJvcHRpb25zLnJvd3NEZWxldGFibGVcIj48L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgIDwhLS0gVE9UQUwgLS0+XHJcbiAgICAgICAgPHRyICpuZ0lmPVwib3B0aW9ucy5yb3dUb3RhbFwiIGNsYXNzPVwicm93VG90YWxcIj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwiaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKVwiPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NlbnRlclRleHQnIDogdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRUb3RhbChjb2wpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCIgKm5nSWY9XCJvcHRpb25zLnJvd3NEZWxldGFibGVcIj48L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwhLS0gR3JvdXBoZWFkZXIgLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZ3JvdXBoZWFkZXJcIiBsZXQtcm93RGF0YT5cclxuICAgICAgICA8dHIgcFJvd0dyb3VwSGVhZGVyIGNsYXNzPVwicm93R3JvdXBpbmdcIj5cclxuICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRfYm9sZFwiPnt7IHJvd0RhdGFbb3B0aW9ucy5ncm91cGluZy5vYmpdW29wdGlvbnMuZ3JvdXBpbmcubGliZWxsZV0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSBCb2R5IC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93RGF0YSBsZXQtY29sdW1ucz1cImNvbHVtbnNcIj5cclxuICAgICAgICA8dHIgaWQ9XCJ7eyByb3dEYXRhLmlkIH19XCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGEuY29sb3IgPyByb3dEYXRhLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93XT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICBbcFNlbGVjdGFibGVSb3dEaXNhYmxlZF09XCIhb3B0aW9ucy5zZWxlY3RhYmxlIHx8IGlzTW9kZUVkaXRpb24oKVwiPlxyXG5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKVwiIGNsYXNzPVwiY2VsbERlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwicm93RGF0YVwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRleHQgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ1RleHQnLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BFZGl0YWJsZUNvbHVtbl09XCJyb3dEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICBbcEVkaXRhYmxlQ29sdW1uRmllbGRdPVwiY29sLmlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdEluaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdUZXh0JywgY29sKSAmJiAoIWlzTW9kZUVkaXRpb24oKSB8fCByb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicgOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ0Ryb3Bkb3duJywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV0gOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhS2V5PVwiSURcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2ZpbHRlcicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUZpbHRlck1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jhc2VaSW5kZXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2Jhc2VaSW5kZXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ZpcnR1YWxTY3JvbGwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNpemU9XCIzMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnRHJvcGRvd24nLCBjb2wpICYmIChyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlW2dldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCI+e3sgcm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udmFsdWVbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldIDogJycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTnVtYmVyIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdOdW1iZXInLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IG51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlPVwiZnItRlJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbklucHV0KT1cIm9uSW5wdXROdW1iZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnc2hvd0J1dHRvbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRTdHlsZUNsYXNzPVwidGV4dC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1ZmZpeF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnc3VmZml4JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVmaXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ByZWZpeCcpICE9IG51bGwgPyBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykgKyAnICcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGVJbnRlZ2VyJykgIT0gbnVsbCAmJiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZUludGVnZXInKSA9PSB0cnVlID8gMCA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtaW5EZWNpbWFsZXMnKSAhPSBudWxsID8gZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21pbkRlY2ltYWxlcycpIDogMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpICE9IG51bGwgJiYgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGVJbnRlZ2VyJykgPT0gdHJ1ZSA/IDAgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtYXhEZWNpbWFsZXMnKSA6IDIgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uRm9jdXMpPVwib25FZGl0SW5pdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnTnVtYmVyJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IGdldEZvcm1hdHRlZE51bWJlcihjb2wsIHJvd0RhdGEsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IG51bWJlcikgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnRGF0ZScsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgZGF0ZTogJ2RkL01NL3l5eXknXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdEYXRlJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBkYXRlOiAnZGQvTU0veXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBkYXRlOiAnZGQvTU0veXl5eScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTXVsdGlTZWxlY3QgLS0+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ011bHRpU2VsZWN0JywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRNdWx0aVNlbGVjdENvbmNhdChyb3dEYXRhW2NvbC5pZF0udmFsdWUsIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9ucycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdmaWx0ZXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhS2V5PVwiSURcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFzZVpJbmRleF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnYmFzZVpJbmRleCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAndmlydHVhbFNjcm9sbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cInswfSBzZWxlY3Rpb25uw6lzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnZmlsdGVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uR3JvdXBDaGlsZHJlbicpICE9IG51bGwgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cExhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25Hcm91cExhYmVsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cENoaWxkcmVuXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25Hcm91cENoaWxkcmVuJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZ3JvdXAgcFRlbXBsYXRlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Z3JvdXBbY29sLm9wdGlvbnMub3B0aW9uR3JvdXBMYWJlbF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdNdWx0aVNlbGVjdCcsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0TXVsdGlTZWxlY3RDb25jYXQocm93RGF0YVtjb2wuaWRdLnZhbHVlLCBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyBnZXRNdWx0aVNlbGVjdENvbmNhdChyb3dEYXRhW2NvbC5pZF0udmFsdWUsIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBJbWFnZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNoZWNrVHlwZSgnSW1hZ2UnLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbnRlclRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTsgd2lkdGg6IDQwcHg7XCIgc3JjPVwie3sgcm93RGF0YVtjb2wuaWRdLnZhbHVlIH19XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBCdXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ0J1dHRvbicsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGFkZGluZ0NlbGwgY2VudGVyVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ3AtYnV0dG9uLScgKyBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnc2V2ZXJpdHknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2xhYmVsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2ljb24nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdsYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0QnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdTZWxlY3RCdXR0b24nLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLCAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyAncGFkZGluZ0NlbGwnIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvblZhbHVlJykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25WYWx1ZScpIDogJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ1NlbGVjdEJ1dHRvbicsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZmxleCc6IGNvbC53aWR0aCA/ICcwIDAgYXV0bycgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCI+e3sgZ2V0U2VsZWN0TGliZWxsZUJ5VmFsdWUocm93RGF0YSwgY29sKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBTd2l0Y2ggLS0+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjaGVja1R5cGUoJ1N3aXRjaCcsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImp1c3RpZnktY29udGVudDogY2VudGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLWlucHV0U3dpdGNoICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8IChnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnYWN0aW9uJykgPT0gbnVsbCAmJiAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dFN3aXRjaD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBGaWxlIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdGaWxlJywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS11cGxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0J5SWQoJ2lucHV0XycgKyByb3dEYXRhW2NvbC5pZF0uaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInt7J291dHB1dF8nICsgcm93RGF0YVtjb2wuaWRdLmlkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdkb3dubG9hZFBhdGgnKSAmJiByb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktZG93bmxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiIGlkPVwie3snaW5wdXRfJyArIHJvd0RhdGFbY29sLmlkXS5pZH19XCIgI2lucHV0RmlsZSBwSW5wdXRUZXh0IHR5cGU9XCJmaWxlXCIgaGlkZGVuIChjaGFuZ2UpPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlID0gaW5wdXRGaWxlLmZpbGVzWzBdLm5hbWU7IG9uRWRpdENlbGwocm93RGF0YSwgY29sLCBpbnB1dEZpbGUuZmlsZXNbMF0pXCI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdGaWxlJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmbGV4JzogY29sLndpZHRoID8gJzAgMCBhdXRvJyA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUgPyByb3dEYXRhW2NvbC5pZF0udmFsdWUgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA6ICcnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFN0YXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY2hlY2tUeXBlKCdTdGF0ZScsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZsZXgnOiBjb2wud2lkdGggPyAnMCAwIGF1dG8nIDogbnVsbCwgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2VudGVyVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC10YWcgW3ZhbHVlXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlLnNldmVyaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlLmljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtdGFnPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBEZWxldGlvbiAtLT5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwib3B0aW9ucy5yb3dzRGVsZXRhYmxlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2VsbERlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhLmRlbGV0YWJsZSA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicm93RGF0YS5kZWxldGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWRhbmdlciBidXR0b25EZWxldGUgcC1idXR0b24tdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlTGluZShyb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtdGFibGU+XHJcbiJdfQ==
@@ -304,7 +304,7 @@ class CilogTableComponent {
304
304
  });
305
305
  // Objet
306
306
  this.filterService.register('objetFilter', (cell, filter) => {
307
- return (filter.indexOf(cell.value) != -1);
307
+ return filter.find(val => { var _a; return val.ID == ((_a = cell.value) === null || _a === void 0 ? void 0 : _a.ID); }) != null;
308
308
  });
309
309
  // Liste
310
310
  this.filterService.register('listeFilter', (cell, filter) => {