@colijnit/corecomponents_v12 259.1.9 → 259.1.11

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.
@@ -376,9 +376,9 @@ CalendarTemplateComponent.decorators = [
376
376
  </div>
377
377
  </div>
378
378
  <div class="calendar-action-buttons" *ngIf="showButtons">
379
- <span class="set-and-close-button" *ngIf="this.doubleCalendar" (click)="setAndClose()">Instellen</span>
380
- <span class="clear-date-button" *ngIf="this.selectedDate" (click)="clearDate()">Wissen</span>
381
- <span class="cancel-button" (click)="closeDate()">Annuleren</span>
379
+ <span class="set-and-close-button" *ngIf="this.doubleCalendar" (click)="setAndClose()" [textContent]="'SET' | coreLocalize"></span>
380
+ <span class="clear-date-button" *ngIf="this.selectedDate" (click)="clearDate()" [textContent]="'ERASE' | coreLocalize"></span>
381
+ <span class="cancel-button" (click)="closeDate()" [textContent]="'CANCEL' | coreLocalize"></span>
382
382
  </div>
383
383
  </div>
384
384
  `,
@@ -401,4 +401,4 @@ CalendarTemplateComponent.propDecorators = {
401
401
  clearDates: [{ type: Output }],
402
402
  showClass: [{ type: HostBinding, args: ["class.calendar-template",] }]
403
403
  };
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQWlGN0UsTUFBTSxPQUFPLHlCQUF5QjtJQS9FdEM7UUFnRmtCLFVBQUssR0FBOEIsa0JBQWtCLENBQUM7UUFHL0Qsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFaEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0IsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUd6Qiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFHM0MsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHNUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUEwQ2hDLGlCQUFZLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHNUQsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHbEUsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc1RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzlELGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUxRCxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQU9uQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhC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O3FCQUlMLEtBQUs7d0NBR0wsS0FBSzswQkFHTCxLQUFLOzZCQUdMLEtBQUs7MkJBRUwsS0FBSztpQ0FpQkwsS0FBSztpQ0FRTCxLQUFLOzJCQWVMLE1BQU07aUNBR04sTUFBTTsyQkFHTixNQUFNOzZCQUdOLE1BQU07eUJBR04sTUFBTTt3QkFpQ04sV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gXCIuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY2FsZW5kYXItdGVtcGxhdGVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtZGF0ZS1kaXNwbGF5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWREYXRlXCIgY2xhc3M9XCJzZWxlY3RlZC1kYXRlLXllYXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZERhdGVcIiBjbGFzcz1cInNlbGVjdGVkLWRhdGUtZGF5XCI+XHJcbiAgICAgICAgICAgICAge3sgc2VsZWN0ZWREYXRlIHwgZGF0ZTogJ0VFRSBkIE1NTScgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZWxlY3RlZERhdGVcIiBjbGFzcz1cIm5vLWRhdGUtc2VsZWN0ZWRcIiBbdGV4dENvbnRlbnRdPVwiJ1NlbGVjdGVlciBkYXR1bSdcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiICpuZ0lmPVwibW9udGhTZWxlY3Rpb24gfHwgeWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJjYWxlbmRhci1jaGFuZ2UtbW9udGgtYnV0dG9uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludExlZnRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gcHJldlllYXIoKSA6IHByZXZNb250aCgpXCI+PC9jby1pY29uPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItdGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJtb250aFNlbGVjdGlvbiA/IG1vbnRoSGVhZGVyIDogeWVhckhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9udGhTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImNhbGVuZGFyLWNoYW5nZS1tb250aC1idXR0b25cIiBbaWNvbl09XCJpY29ucy5BcnJvd1BvaW50UmlnaHRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gbmV4dFllYXIoKSA6IG5leHRNb250aCgpXCI+PC9jby1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uLWdyaWQgbW9udGhcIiAqbmdJZj1cInNob3dNb250aFNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhTZWxlY3Rpb25OYW1lc1wiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItbW9udGgtb3IteWVhclwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb250aChtb250aClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbnRoXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoXCIgW3RleHRDb250ZW50XT1cIm1vbnRoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tZ3JpZCB5ZWFyXCIgKm5nSWY9XCJzaG93WWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyU2VsZWN0aW9uWWVhcnNcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLW1vbnRoLW9yLXllYXJcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInllYXJcIiBbdGV4dENvbnRlbnRdPVwieWVhclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay13cmFwcGVyXCIgKm5nSWY9XCJzaG93V2Vla051bWJlcnMgJiYgc2hvd0NhbGVuZGFyQm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiJ1cnXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLW51bWJlclwiICpuZ0Zvcj1cImxldCB3ZWVrTnVtYmVyIG9mIHdlZWtOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAge3sgd2Vla051bWJlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHlcIiAqbmdJZj1cInNob3dDYWxlbmRhckJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1uYW1lc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5XCIgKm5nRm9yPVwibGV0IGRheU5hbWUgb2YgZGF5TmFtZXNcIiBbdGV4dENvbnRlbnRdPVwiZGF5TmFtZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNJbk1vbnRoXCIgY2xhc3M9XCJjYWxlbmRhci1kYXlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZC1kYXldPVwiZGF5c1RvSGlnaGxpZ2h0LmluY2x1ZGVzKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1kYXldPVwic2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgc2Vjb25kU2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2Vjb25kU2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlLmdldFRpbWUoKSlcIlxyXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaGFuZGxlTW91c2VPdmVyRGF5KGRheSlcIj5cclxuICAgICAgICAgICAgICA8IS0tIERheSBudW1iZXIgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRheVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiZGF5LmdldERhdGUoKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1hY3Rpb24tYnV0dG9uc1wiICpuZ0lmPVwic2hvd0J1dHRvbnNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2V0LWFuZC1jbG9zZS1idXR0b25cIiAqbmdJZj1cInRoaXMuZG91YmxlQ2FsZW5kYXJcIiAoY2xpY2spPVwic2V0QW5kQ2xvc2UoKVwiPkluc3RlbGxlbjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xlYXItZGF0ZS1idXR0b25cIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWREYXRlXCIgKGNsaWNrKT1cImNsZWFyRGF0ZSgpXCI+V2lzc2VuPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRGF0ZSgpXCI+QW5udWxlcmVuPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyVGVtcGxhdGVDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1dlZWtOdW1iZXJzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIHdlZWtOdW1iZXJzOiBudW1iZXJbXSA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxvY2FsZTogc3RyaW5nID0gXCJubC1OTFwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoaWdobGlnaHREYXlzQmV0d2VlbkRhdGVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dCdXR0b25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZG91YmxlQ2FsZW5kYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWREYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3QgZCA9IHRoaXMuX2NvZXJjZVRvRGF0ZSh2YWx1ZSk7XHJcbiAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBkID8gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKSA6IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX2luaXRpYWxTZWxlY3RlZERhdGUgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5faW5pdGlhbFNlbGVjdGVkRGF0ZSA9IHRoaXMuX3NlbGVjdGVkRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWNvbmRTZWxlY3RlZERhdGUgJiYgZCAmJiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgPCB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgdGhpcy50ZW1wb3JhcnlTZWxlY3RlZFNlY29uZGFyeURhdGUpIHtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldCBzZWxlY3RlZERhdGUoKTogRGF0ZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWNvbmRTZWxlY3RlZERhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5fY29lcmNlVG9EYXRlKHZhbHVlKTtcclxuICAgIHRoaXMuX3NlY29uZFNlbGVjdGVkRGF0ZSA9IGQgPyBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpIDogbnVsbDtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHRoaXMuZGF5c1RvSGlnaGxpZ2h0ID0gW107IGVsc2UgdGhpcy5fZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgc2Vjb25kU2VsZWN0ZWREYXRlKCk6IERhdGUgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3NlY29uZFNlbGVjdGVkRGF0ZTsgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2Vjb25kSG92ZXJpbmdEYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3QgZCA9IHRoaXMuX2NvZXJjZVRvRGF0ZSh2YWx1ZSk7XHJcbiAgICB0aGlzLl9zZWNvbmRIb3ZlcmluZ0RhdGUgPSBkIHx8IG51bGw7XHJcbiAgICBpZiAoZCkgdGhpcy50ZW1wb3JhcnlTZWxlY3RlZFNlY29uZGFyeURhdGUgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlICYmICF0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSAmJiBkKSB0aGlzLnRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZSA9IG5ldyBEYXRlKGQpO1xyXG4gICAgdGhpcy5oYW5kbGVNb3VzZU92ZXJEYXkoZCBhcyBEYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvZXJjZVRvRGF0ZSh2OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmICh2ID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgZCA9IHYgaW5zdGFuY2VvZiBEYXRlID8gdiA6IG5ldyBEYXRlKHYpO1xyXG4gICAgcmV0dXJuIGlzTmFOKGQuZ2V0VGltZSgpKSA/IG51bGwgOiBkO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRhdGVTZWxlY3RlZDogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2Vjb25kRGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBob3ZlcmluZ0RhdGU6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsaWNrZWRPdXRzaWRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbGVhckRhdGVzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBzaG93Q2FsZW5kYXJCb2R5OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd01vbnRoU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dZZWFyU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTZWxlY3RlZE1vbnRoOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB3b3JraW5nRGF5OiBEYXRlO1xyXG4gIHB1YmxpYyB3b3JraW5nWWVhcjogbnVtYmVyO1xyXG4gIHB1YmxpYyB3b3JraW5nTW9udGg6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIG1vbnRoSGVhZGVyOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgeWVhckhlYWRlcjogc3RyaW5nID0gJyc7XHJcblxyXG4gIHB1YmxpYyBtb250aFNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHllYXJTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGRheU5hbWVzID0gW107XHJcbiAgcHVibGljIG1vbnRoTmFtZXMgPSBbXTtcclxuICBwdWJsaWMgbW9udGhTZWxlY3Rpb25OYW1lczogc3RyaW5nW10gPSBbXTtcclxuICBwdWJsaWMgeWVhclNlbGVjdGlvblllYXJzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHB1YmxpYyBkYXlzSW5Nb250aDogRGF0ZVtdID0gW107XHJcblxyXG4gIHB1YmxpYyBkYXlzVW5peFRpbWVzdGFtcHM6IG51bWJlcltdID0gW107XHJcbiAgcHVibGljIGRheXNUb0hpZ2hsaWdodDogRGF0ZVtdID0gW107XHJcbiAgcHVibGljIHRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZTogRGF0ZTtcclxuXHJcbiAgcHJpdmF0ZSBfc2Vjb25kSG92ZXJpbmdEYXRlOiBEYXRlO1xyXG4gIHByaXZhdGUgX3NlY29uZFNlbGVjdGVkRGF0ZTogRGF0ZTtcclxuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XHJcbiAgcHJpdmF0ZSBfaW5pdGlhbFNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jYWxlbmRhci10ZW1wbGF0ZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVNb250aE5hbWVzKCk7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcclxuICAgIHRoaXMuX2ZpbGxEYXRlc0JldHdlZW5TZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHByZXZNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndvcmtpbmdNb250aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLndvcmtpbmdNb250aCA9IDExO1xyXG4gICAgICB0aGlzLndvcmtpbmdZZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndvcmtpbmdNb250aC0tO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgICB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlV2Vla051bWJlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0TW9udGgoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy53b3JraW5nTW9udGggPT09IDExKSB7XHJcbiAgICAgIHRoaXMud29ya2luZ01vbnRoID0gMDtcclxuICAgICAgdGhpcy53b3JraW5nWWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53b3JraW5nTW9udGgrKztcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gICAgdGhpcy5fZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVdlZWtOdW1iZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldlllYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLndvcmtpbmdZZWFyLS07XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ1llYXIrKztcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRNb250aERheXNGb3JEYXRlKHRoaXMud29ya2luZ01vbnRoKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgdGhlIGRpc3BsYXllZCBtb250aFxyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLm1vbnRoTmFtZXNbdGhpcy53b3JraW5nTW9udGhdO1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMud29ya2luZ1llYXI7XHJcblxyXG4gICAgLy8gVXBkYXRlIGhlYWRlclRleHRcclxuICAgIHRoaXMubW9udGhIZWFkZXIgPSBgJHttb250aH0gJHt5ZWFyfWA7XHJcbiAgICB0aGlzLnllYXJIZWFkZXIgPSBgJHt5ZWFyfWA7XHJcblxyXG4gICAgdGhpcy5nZW5lcmF0ZVllYXJTZWxlY3Rpb25ZZWFycygpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVXZWVrTnVtYmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0SW5pdGlhbFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ0RheSA9IHRoaXMuc2VsZWN0ZWREYXRlID8gdGhpcy5zZWxlY3RlZERhdGUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy53b3JraW5nWWVhciA9IHRoaXMud29ya2luZ0RheS5nZXRGdWxsWWVhcigpO1xyXG4gICAgdGhpcy53b3JraW5nTW9udGggPSB0aGlzLndvcmtpbmdEYXkuZ2V0TW9udGgoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE1vbnRoRGF5c0ZvckRhdGUobW9udGhOdW1iZXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5kYXlzSW5Nb250aCA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHRoaXMud29ya2luZ1llYXIsIG1vbnRoTnVtYmVyLCAwKS5nZXREYXkoKTtcclxuICAgIGNvbnN0IGxhc3REYXlPZk1vbnRoID0gbmV3IERhdGUodGhpcy53b3JraW5nWWVhciwgbW9udGhOdW1iZXIgKyAxLCAwKS5nZXREYXRlKCk7XHJcblxyXG4gICAgLy8gQWRkIG51bGwgdmFsdWVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IHRvIGFsaWduIHRoZSBmaXJzdCBkYXkgd2l0aCB0aGUgY29ycmVjdCBkYXkgb2YgdGhlIHdlZWtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlyc3REYXlPZk1vbnRoOyBpKyspIHtcclxuICAgICAgdGhpcy5kYXlzSW5Nb250aC5wdXNoKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCB0aGUgZGF5cyBvZiB0aGUgY3VycmVudCBtb250aCB0byB0aGUgYXJyYXlcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxhc3REYXlPZk1vbnRoOyBpKyspIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMud29ya2luZ1llYXIsIHRoaXMud29ya2luZ01vbnRoLCBpKTtcclxuICAgICAgdGhpcy5kYXlzSW5Nb250aC5wdXNoKGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCBudWxsIHZhbHVlcyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSB0byBmaWxsIG91dCB0aGUgZ3JpZFxyXG4gICAgLy8gY29uc3QgcmVtYWluaW5nQ2VsbHMgPSA0MiAtIHRoaXMuZGF5c0luTW9udGgubGVuZ3RoO1xyXG4gICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCByZW1haW5pbmdDZWxsczsgaSsrKSB7XHJcbiAgICAvLyAgIHRoaXMuZGF5c0luTW9udGgucHVzaChudWxsKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICB0aGlzLmRheXNVbml4VGltZXN0YW1wcyA9IHRoaXMuZGF5c0luTW9udGgubWFwKGRheSA9PiB7IHJldHVybiBkYXkgPyBkYXkuZ2V0VGltZSgpIDogdW5kZWZpbmVkIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlWWVhclNlbGVjdGlvblllYXJzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGFzdFllYXJzID0gNTtcclxuICAgIGNvbnN0IGZ1dHVyZVllYXJzID0gMztcclxuICAgIGNvbnN0IHllYXJzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IHBhc3RZZWFyczsgaSA+PSAxOyBpLS0pIHtcclxuXHJcbiAgICAgIHllYXJzLnB1c2godGhpcy53b3JraW5nWWVhciAtIGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHllYXJzLnB1c2godGhpcy53b3JraW5nWWVhcik7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZnV0dXJlWWVhcnM7IGkrKykge1xyXG4gICAgICB5ZWFycy5wdXNoKHRoaXMud29ya2luZ1llYXIgKyBpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnllYXJTZWxlY3Rpb25ZZWFycyA9IHllYXJzLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuTW9udGhTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhckJvZHkgPSAhdGhpcy5zaG93Q2FsZW5kYXJCb2R5O1xyXG4gICAgdGhpcy5tb250aFNlbGVjdGlvbiA9ICF0aGlzLm1vbnRoU2VsZWN0aW9uO1xyXG4gICAgdGhpcy55ZWFyU2VsZWN0aW9uID0gIXRoaXMueWVhclNlbGVjdGlvbjtcclxuICAgIHRoaXMuc2hvd01vbnRoU2VsZWN0aW9uID0gIXRoaXMuc2hvd01vbnRoU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5ZZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1llYXJTZWxlY3Rpb24gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdERhdGUoZGF5OiBEYXRlKTogdm9pZCB7XHJcbiAgICBpZiAoZGF5KSB7XHJcbiAgICAgIGlmICghdGhpcy5kb3VibGVDYWxlbmRhcikge1xyXG4gICAgICAgIC8vIFNpbmdsZSBjYWxlbmRhciDihpIgc2VsZWN0IGFuZCBjbG9zZVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF5O1xyXG4gICAgICAgIHRoaXMuc2V0QW5kQ2xvc2UoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRheTtcclxuICAgICAgICB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICAgICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RNb250aChtb250aDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dTZWxlY3RlZE1vbnRoID0gbW9udGg7XHJcbiAgICB0aGlzLndvcmtpbmdNb250aCA9IHRoaXMubW9udGhTZWxlY3Rpb25OYW1lcy5pbmRleE9mKG1vbnRoKTtcclxuICAgIHRoaXMuc2hvd01vbnRoU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnllYXJTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMubW9udGhTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXJCb2R5ID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLndvcmtpbmdZZWFyID0geWVhcjtcclxuICAgIHRoaXMuc2hvd1llYXJTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd01vbnRoU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlTW9udGhOYW1lcygpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAwMCwgaSwgMSk7XHJcbiAgICAgIGNvbnN0IG1vbnRoTmFtZVNob3J0ID0gZGF0ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSwge21vbnRoOiAnc2hvcnQnfSk7XHJcbiAgICAgIGNvbnN0IG1vbnRoTmFtZUZ1bGwgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCB7bW9udGg6ICdsb25nJ30pO1xyXG4gICAgICB0aGlzLm1vbnRoU2VsZWN0aW9uTmFtZXMucHVzaCh0aGlzLl9jYXBpdGFsaXplRmlyc3RMZXR0ZXIobW9udGhOYW1lU2hvcnQpKTtcclxuICAgICAgdGhpcy5tb250aE5hbWVzLnB1c2godGhpcy5fY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKG1vbnRoTmFtZUZ1bGwpKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDIwMTgsIDAsIGkpO1xyXG4gICAgICBjb25zdCB3ZWVrZGF5TmFtZSA9IGRhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcclxuICAgICAgdGhpcy5kYXlOYW1lcy5wdXNoKHRoaXMuX2NhcGl0YWxpemVGaXJzdExldHRlcih3ZWVrZGF5TmFtZS5jaGFyQXQoMCkpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNb3VzZU92ZXJEYXkoZGF5OiBEYXRlKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHREYXlzQmV0d2VlbkRhdGVzICYmIGRheSAmJiAodGhpcy5zZWxlY3RlZERhdGUgfHwgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpICYmICEodGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpICYmICEodGhpcy5zZWxlY3RlZERhdGUgJiYgIXRoaXMudGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlICYmICF0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkpIHtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTtcclxuICAgICAgaWYgKHRoaXMuZGF5c1VuaXhUaW1lc3RhbXBzLmluY2x1ZGVzKGRheS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQucHVzaCguLi50aGlzLmRheXNJbk1vbnRoLm1hcCgoZGF5SW5Nb250aDogRGF0ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXlJbk1vbnRoICYmXHJcbiAgICAgICAgICAgICAgLy8gZGF5IGluIHRoZSBtb250aCBpcyBhZnRlciBzZWxlY3RlZCBkYXRlIGFuZCBkYXkgaW4gdGhlIG1vbnRoIGlzIGJlZm9yZSB0aGUgaG92ZXJpbmcgZGF5XHJcbiAgICAgICAgICAgICAgKGRheUluTW9udGguZ2V0VGltZSgpID4gdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpICYmIGRheUluTW9udGguZ2V0VGltZSgpIDwgZGF5LmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgICAvLyBzZWNvbmQgZGF0ZSBpcyBhZnRlciBzZWxlY3RlZCBkYXRlIGFuZCBkYXkgaW4gdGhlIG1vbnRoIGlzIGJlZm9yZSBob3ZlcmluZyBkYXkgYW5kIGRheSBpbiBtb250aCBpcyBhZnRlciBzZWxlY3RlZCBkYXRlXHJcbiAgICAgICAgICAgICAgKHRoaXMuX3NlY29uZEhvdmVyaW5nRGF0ZSAmJiB0aGlzLl9zZWNvbmRIb3ZlcmluZ0RhdGUuZ2V0VGltZSgpID4gdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpICYmIGRheSAmJiBkYXlJbk1vbnRoICYmIGRheUluTW9udGguZ2V0VGltZSgpIDwgZGF5LmdldFRpbWUoKSAmJiBkYXlJbk1vbnRoLmdldFRpbWUoKSA+IHRoaXMuc2VsZWN0ZWREYXRlLmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF5SW5Nb250aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGRheUluTW9udGggJiZcclxuICAgICAgICAgICAgICAvLyBkYXkgaW4gdGhlIG1vbnRoIGlzIGFmdGVyIHNlY29uZCBkYXRlIGFuZCBkYXkgaW4gdGhlIG1vbnRoIGlzIGJlZm9yZSB0aGUgaG92ZXJpbmcgZGF5XHJcbiAgICAgICAgICAgICAgKGRheUluTW9udGguZ2V0VGltZSgpID4gdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUuZ2V0VGltZSgpICYmIGRheUluTW9udGguZ2V0VGltZSgpIDwgZGF5LmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF5SW5Nb250aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodC5wdXNoKC4uLnRoaXMuZGF5c0luTW9udGgubWFwKChkYXkpID0+IHtcclxuICAgICAgICAgIGlmIChkYXkgPiB0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF5O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5ob3ZlcmluZ0RhdGUubmV4dChkYXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlICYmIHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZGF5c1RvSGlnaGxpZ2h0ID0gW107XHJcbiAgICAgIHRoaXMuZGF5c1RvSGlnaGxpZ2h0LnB1c2goLi4udGhpcy5kYXlzSW5Nb250aC5tYXAoKGRheUluTW9udGg6IERhdGUpID0+IHtcclxuICAgICAgICBpZiAoZGF5SW5Nb250aCAmJiAoZGF5SW5Nb250aCA+IHRoaXMuc2VsZWN0ZWREYXRlICYmIGRheUluTW9udGggPCB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkgfHwgKGRheUluTW9udGggPiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSAmJiBkYXlJbk1vbnRoIDwgdGhpcy5zZWxlY3RlZERhdGUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZGF5SW5Nb250aDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhcGl0YWxpemVGaXJzdExldHRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpO1xyXG4gIH1cclxuICBwcml2YXRlIGNhbGN1bGF0ZVdlZWtOdW1iZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy53ZWVrTnVtYmVycyA9IFtdO1xyXG4gICAgbGV0IHdlZWtOdW1iZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRheXNJbk1vbnRoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMuZGF5c0luTW9udGhbaV07XHJcbiAgICAgIGlmIChkYXkpIHtcclxuICAgICAgICAgIC8vIFN0YXJ0IG9mIGEgbmV3IHdlZWsgb3IgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgY2FsY3VsYXRlIGFuZCBzZXQgd2Vla051bWJlclxyXG4gICAgICAgICAgd2Vla051bWJlciA9IHRoaXMuZ2V0SVNPV2VlayhkYXkpO1xyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHdlZWtOdW1iZXIgaXMgbm90IGFscmVhZHkgaW4gdGhlIGFycmF5XHJcbiAgICAgICAgICBpZiAoIXRoaXMud2Vla051bWJlcnMuaW5jbHVkZXMod2Vla051bWJlcikpIHtcclxuICAgICAgICAgICAgdGhpcy53ZWVrTnVtYmVycy5wdXNoKHdlZWtOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRJU09XZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSk7XHJcbiAgICAgIGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDQgLSAoZC5nZXRVVENEYXkoKSB8fCA3KSk7XHJcbiAgICAgIGNvbnN0IHllYXJTdGFydCA9IG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpO1xyXG4gICAgICBjb25zdCB3ZWVrTnVtYmVyID0gTWF0aC5jZWlsKCgoZC52YWx1ZU9mKCkgLSB5ZWFyU3RhcnQudmFsdWVPZigpKSAvIDg2NDAwMDAwICsgMSkgLyA3KTtcclxuICAgICAgcmV0dXJuIHdlZWtOdW1iZXI7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXRBbmRDbG9zZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy5zZWNvbmREYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSk7Ly8gRW1pdCB0aGUgc2VsZWN0ZWQgZGF0ZVxyXG4gICAgICB0aGlzLmNsb3NlUG9wdXAoKTsgLy8gVHJpZ2dlciBwb3B1cCBjbG9zZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRGF0ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlY29uZERhdGVTZWxlY3RlZC5lbWl0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbGVhckRhdGVzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZURhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuX2luaXRpYWxTZWxlY3RlZERhdGU7XHJcbiAgICB0aGlzLmNsb3NlUG9wdXAoKTsgLy8gVHJpZ2dlciBwb3B1cCBjbG9zZSB3aXRob3V0IG1ha2luZyBjaGFuZ2VzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsb3NlUG9wdXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsaWNrZWRPdXRzaWRlLmVtaXQoKTsgLy8gRW1pdCB0aGUgYGNsaWNrZWRPdXRzaWRlYCBldmVudCB0byBub3RpZnkgdGhlIHBhcmVudFxyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQWlGN0UsTUFBTSxPQUFPLHlCQUF5QjtJQS9FdEM7UUFnRmtCLFVBQUssR0FBOEIsa0JBQWtCLENBQUM7UUFHL0Qsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFaEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0IsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUd6Qiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFHM0MsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHNUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUEwQ2hDLGlCQUFZLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHNUQsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHbEUsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc1RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzlELGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUxRCxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQU9uQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRS9CLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztRQUNuQyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBTTVCLHlCQUFvQixHQUFnQixJQUFJLENBQUM7SUErUW5ELENBQUM7SUFsV0MsSUFDVyxZQUFZLENBQUMsS0FBZ0Q7UUFDdEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXJGLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNoRDtRQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsOEJBQThCLEVBQUU7WUFDMUksSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBQ0QsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFDVyxrQkFBa0IsQ0FBQyxLQUFnRDtRQUM1RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQzs7WUFBTSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUMzRixDQUFDO0lBQ0QsSUFBVyxrQkFBa0IsS0FBa0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBRWpGLElBQ1csa0JBQWtCLENBQUMsS0FBZ0Q7UUFDNUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sYUFBYSxDQUFDLENBQTRDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzQixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBZ0RNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTdDLDZCQUE2QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRTlCLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUFtQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixNQUFNLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1RSxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEYsd0dBQXdHO1FBQ3hHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7UUFFRCxpREFBaUQ7UUFDakQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7UUFFRCwrREFBK0Q7UUFDL0QsdURBQXVEO1FBQ3ZELDZDQUE2QztRQUM3QyxpQ0FBaUM7UUFDakMsSUFBSTtRQUVKLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN0QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakIsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUVuQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ3JELENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBUztRQUN6QixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN4QixxQ0FBcUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUNyRDtTQUNGO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7U0FDbEU7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEdBQVM7UUFDakMsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQzFPLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWdCLEVBQUUsRUFBRTtvQkFDckUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO3dCQUNyQixJQUFJLFVBQVU7NEJBQ1osMEZBQTBGOzRCQUMxRixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQzVGLHlIQUF5SDs0QkFDekgsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7NEJBQ25OLE9BQU8sVUFBVSxDQUFDO3lCQUNuQjtxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLFVBQVU7NEJBQ1osd0ZBQXdGOzRCQUN4RixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFOzRCQUNwRyxPQUFPLFVBQVUsQ0FBQzt5QkFDbkI7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNMO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDeEQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTt3QkFDM0IsT0FBTyxHQUFHLENBQUM7cUJBQ1o7Z0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNMO1NBQ0Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8seUJBQXlCO1FBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWdCLEVBQUUsRUFBRTtnQkFDckUsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ3RLLE9BQU8sVUFBVSxDQUFDO2lCQUNuQjtZQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFhO1FBQzFDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxVQUFVLEdBQWtCLElBQUksQ0FBQztRQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLEdBQUcsRUFBRTtnQkFDTCw4RUFBOEU7Z0JBQzlFLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxzREFBc0Q7Z0JBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ25DO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFDTSxVQUFVLENBQUMsSUFBVTtRQUN4QixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFDTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFBLHlCQUF5QjtZQUMvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxzQkFBc0I7U0FDMUM7SUFDSCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7SUFDbEUsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDtJQUNyRixDQUFDOzs7WUFoY0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRVQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7Ozs4QkFJRSxLQUFLO3FCQUlMLEtBQUs7d0NBR0wsS0FBSzswQkFHTCxLQUFLOzZCQUdMLEtBQUs7MkJBRUwsS0FBSztpQ0FpQkwsS0FBSztpQ0FRTCxLQUFLOzJCQWVMLE1BQU07aUNBR04sTUFBTTsyQkFHTixNQUFNOzZCQUdOLE1BQU07eUJBR04sTUFBTTt3QkFpQ04sV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gXCIuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY2FsZW5kYXItdGVtcGxhdGVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtZGF0ZS1kaXNwbGF5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWREYXRlXCIgY2xhc3M9XCJzZWxlY3RlZC1kYXRlLXllYXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZERhdGVcIiBjbGFzcz1cInNlbGVjdGVkLWRhdGUtZGF5XCI+XHJcbiAgICAgICAgICAgICAge3sgc2VsZWN0ZWREYXRlIHwgZGF0ZTogJ0VFRSBkIE1NTScgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZWxlY3RlZERhdGVcIiBjbGFzcz1cIm5vLWRhdGUtc2VsZWN0ZWRcIiBbdGV4dENvbnRlbnRdPVwiJ1NlbGVjdGVlciBkYXR1bSdcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiICpuZ0lmPVwibW9udGhTZWxlY3Rpb24gfHwgeWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJjYWxlbmRhci1jaGFuZ2UtbW9udGgtYnV0dG9uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludExlZnRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gcHJldlllYXIoKSA6IHByZXZNb250aCgpXCI+PC9jby1pY29uPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItdGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJtb250aFNlbGVjdGlvbiA/IG1vbnRoSGVhZGVyIDogeWVhckhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9udGhTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImNhbGVuZGFyLWNoYW5nZS1tb250aC1idXR0b25cIiBbaWNvbl09XCJpY29ucy5BcnJvd1BvaW50UmlnaHRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gbmV4dFllYXIoKSA6IG5leHRNb250aCgpXCI+PC9jby1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uLWdyaWQgbW9udGhcIiAqbmdJZj1cInNob3dNb250aFNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhTZWxlY3Rpb25OYW1lc1wiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItbW9udGgtb3IteWVhclwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb250aChtb250aClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbnRoXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoXCIgW3RleHRDb250ZW50XT1cIm1vbnRoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tZ3JpZCB5ZWFyXCIgKm5nSWY9XCJzaG93WWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyU2VsZWN0aW9uWWVhcnNcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLW1vbnRoLW9yLXllYXJcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInllYXJcIiBbdGV4dENvbnRlbnRdPVwieWVhclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay13cmFwcGVyXCIgKm5nSWY9XCJzaG93V2Vla051bWJlcnMgJiYgc2hvd0NhbGVuZGFyQm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiJ1cnXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLW51bWJlclwiICpuZ0Zvcj1cImxldCB3ZWVrTnVtYmVyIG9mIHdlZWtOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAge3sgd2Vla051bWJlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHlcIiAqbmdJZj1cInNob3dDYWxlbmRhckJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1uYW1lc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5XCIgKm5nRm9yPVwibGV0IGRheU5hbWUgb2YgZGF5TmFtZXNcIiBbdGV4dENvbnRlbnRdPVwiZGF5TmFtZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNJbk1vbnRoXCIgY2xhc3M9XCJjYWxlbmRhci1kYXlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZC1kYXldPVwiZGF5c1RvSGlnaGxpZ2h0LmluY2x1ZGVzKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1kYXldPVwic2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgc2Vjb25kU2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2Vjb25kU2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlLmdldFRpbWUoKSlcIlxyXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaGFuZGxlTW91c2VPdmVyRGF5KGRheSlcIj5cclxuICAgICAgICAgICAgICA8IS0tIERheSBudW1iZXIgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRheVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiZGF5LmdldERhdGUoKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1hY3Rpb24tYnV0dG9uc1wiICpuZ0lmPVwic2hvd0J1dHRvbnNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2V0LWFuZC1jbG9zZS1idXR0b25cIiAqbmdJZj1cInRoaXMuZG91YmxlQ2FsZW5kYXJcIiAoY2xpY2spPVwic2V0QW5kQ2xvc2UoKVwiIFt0ZXh0Q29udGVudF09XCInU0VUJyB8IGNvcmVMb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xlYXItZGF0ZS1idXR0b25cIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWREYXRlXCIgKGNsaWNrKT1cImNsZWFyRGF0ZSgpXCIgW3RleHRDb250ZW50XT1cIidFUkFTRScgfCBjb3JlTG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIiAoY2xpY2spPVwiY2xvc2VEYXRlKClcIiBbdGV4dENvbnRlbnRdPVwiJ0NBTkNFTCcgfCBjb3JlTG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJUZW1wbGF0ZUNvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93V2Vla051bWJlcnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgd2Vla051bWJlcnM6IG51bWJlcltdID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbG9jYWxlOiBzdHJpbmcgPSBcIm5sLU5MXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhpZ2hsaWdodERheXNCZXR3ZWVuRGF0ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0J1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkb3VibGVDYWxlbmRhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5fY29lcmNlVG9EYXRlKHZhbHVlKTtcclxuICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IGQgPyBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpIDogbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5faW5pdGlhbFNlbGVjdGVkRGF0ZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9pbml0aWFsU2VsZWN0ZWREYXRlID0gdGhpcy5fc2VsZWN0ZWREYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSAmJiBkICYmIHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlLmdldFRpbWUoKSA8IHRoaXMuc2VsZWN0ZWREYXRlLmdldFRpbWUoKSAmJiB0aGlzLnRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZSkge1xyXG4gICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodCA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlY29uZFNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGNvbnN0IGQgPSB0aGlzLl9jb2VyY2VUb0RhdGUodmFsdWUpO1xyXG4gICAgdGhpcy5fc2Vjb25kU2VsZWN0ZWREYXRlID0gZCA/IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSkgOiBudWxsO1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTsgZWxzZSB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICB9XHJcbiAgcHVibGljIGdldCBzZWNvbmRTZWxlY3RlZERhdGUoKTogRGF0ZSB8IG51bGwgeyByZXR1cm4gdGhpcy5fc2Vjb25kU2VsZWN0ZWREYXRlOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWNvbmRIb3ZlcmluZ0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5fY29lcmNlVG9EYXRlKHZhbHVlKTtcclxuICAgIHRoaXMuX3NlY29uZEhvdmVyaW5nRGF0ZSA9IGQgfHwgbnVsbDtcclxuICAgIGlmIChkKSB0aGlzLnRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgIXRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlICYmIGQpIHRoaXMudGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlID0gbmV3IERhdGUoZCk7XHJcbiAgICB0aGlzLmhhbmRsZU1vdXNlT3ZlckRheShkIGFzIERhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29lcmNlVG9EYXRlKHY6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBkID0gdiBpbnN0YW5jZW9mIERhdGUgPyB2IDogbmV3IERhdGUodik7XHJcbiAgICByZXR1cm4gaXNOYU4oZC5nZXRUaW1lKCkpID8gbnVsbCA6IGQ7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzZWNvbmREYXRlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGhvdmVyaW5nRGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2xpY2tlZE91dHNpZGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsZWFyRGF0ZXM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHNob3dDYWxlbmRhckJvZHk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93TW9udGhTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1llYXJTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1NlbGVjdGVkTW9udGg6IHN0cmluZztcclxuXHJcbiAgcHVibGljIHdvcmtpbmdEYXk6IERhdGU7XHJcbiAgcHVibGljIHdvcmtpbmdZZWFyOiBudW1iZXI7XHJcbiAgcHVibGljIHdvcmtpbmdNb250aDogbnVtYmVyO1xyXG5cclxuICBwdWJsaWMgbW9udGhIZWFkZXI6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyB5ZWFySGVhZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHVibGljIG1vbnRoU2VsZWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgeWVhclNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZGF5TmFtZXMgPSBbXTtcclxuICBwdWJsaWMgbW9udGhOYW1lcyA9IFtdO1xyXG4gIHB1YmxpYyBtb250aFNlbGVjdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHB1YmxpYyB5ZWFyU2VsZWN0aW9uWWVhcnM6IG51bWJlcltdID0gW107XHJcbiAgcHVibGljIGRheXNJbk1vbnRoOiBEYXRlW10gPSBbXTtcclxuXHJcbiAgcHVibGljIGRheXNVbml4VGltZXN0YW1wczogbnVtYmVyW10gPSBbXTtcclxuICBwdWJsaWMgZGF5c1RvSGlnaGxpZ2h0OiBEYXRlW10gPSBbXTtcclxuICBwdWJsaWMgdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlOiBEYXRlO1xyXG5cclxuICBwcml2YXRlIF9zZWNvbmRIb3ZlcmluZ0RhdGU6IERhdGU7XHJcbiAgcHJpdmF0ZSBfc2Vjb25kU2VsZWN0ZWREYXRlOiBEYXRlO1xyXG4gIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcclxuICBwcml2YXRlIF9pbml0aWFsU2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNhbGVuZGFyLXRlbXBsYXRlXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0SW5pdGlhbFZhbHVlcygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZU1vbnRoTmFtZXMoKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gICAgdGhpcy5fZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldk1vbnRoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud29ya2luZ01vbnRoID09PSAwKSB7XHJcbiAgICAgIHRoaXMud29ya2luZ01vbnRoID0gMTE7XHJcbiAgICAgIHRoaXMud29ya2luZ1llYXItLTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud29ya2luZ01vbnRoLS07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcclxuICAgIHRoaXMuX2ZpbGxEYXRlc0JldHdlZW5TZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVXZWVrTnVtYmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndvcmtpbmdNb250aCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy53b3JraW5nTW9udGggPSAwO1xyXG4gICAgICB0aGlzLndvcmtpbmdZZWFyKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndvcmtpbmdNb250aCsrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgICB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlV2Vla051bWJlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmV2WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ1llYXItLTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRZZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy53b3JraW5nWWVhcisrO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVDYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldE1vbnRoRGF5c0ZvckRhdGUodGhpcy53b3JraW5nTW9udGgpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB0aGUgZGlzcGxheWVkIG1vbnRoXHJcbiAgICBjb25zdCBtb250aCA9IHRoaXMubW9udGhOYW1lc1t0aGlzLndvcmtpbmdNb250aF07XHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy53b3JraW5nWWVhcjtcclxuXHJcbiAgICAvLyBVcGRhdGUgaGVhZGVyVGV4dFxyXG4gICAgdGhpcy5tb250aEhlYWRlciA9IGAke21vbnRofSAke3llYXJ9YDtcclxuICAgIHRoaXMueWVhckhlYWRlciA9IGAke3llYXJ9YDtcclxuXHJcbiAgICB0aGlzLmdlbmVyYXRlWWVhclNlbGVjdGlvblllYXJzKCk7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVdlZWtOdW1iZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRJbml0aWFsVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy53b3JraW5nRGF5ID0gdGhpcy5zZWxlY3RlZERhdGUgPyB0aGlzLnNlbGVjdGVkRGF0ZSA6IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLndvcmtpbmdZZWFyID0gdGhpcy53b3JraW5nRGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICB0aGlzLndvcmtpbmdNb250aCA9IHRoaXMud29ya2luZ0RheS5nZXRNb250aCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TW9udGhEYXlzRm9yRGF0ZShtb250aE51bWJlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmRheXNJbk1vbnRoID0gW107XHJcblxyXG4gICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUodGhpcy53b3JraW5nWWVhciwgbW9udGhOdW1iZXIsIDApLmdldERheSgpO1xyXG4gICAgY29uc3QgbGFzdERheU9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLndvcmtpbmdZZWFyLCBtb250aE51bWJlciArIDEsIDApLmdldERhdGUoKTtcclxuXHJcbiAgICAvLyBBZGQgbnVsbCB2YWx1ZXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkgdG8gYWxpZ24gdGhlIGZpcnN0IGRheSB3aXRoIHRoZSBjb3JyZWN0IGRheSBvZiB0aGUgd2Vla1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaXJzdERheU9mTW9udGg7IGkrKykge1xyXG4gICAgICB0aGlzLmRheXNJbk1vbnRoLnB1c2gobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWRkIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoIHRvIHRoZSBhcnJheVxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGFzdERheU9mTW9udGg7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy53b3JraW5nWWVhciwgdGhpcy53b3JraW5nTW9udGgsIGkpO1xyXG4gICAgICB0aGlzLmRheXNJbk1vbnRoLnB1c2goZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWRkIG51bGwgdmFsdWVzIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5IHRvIGZpbGwgb3V0IHRoZSBncmlkXHJcbiAgICAvLyBjb25zdCByZW1haW5pbmdDZWxscyA9IDQyIC0gdGhpcy5kYXlzSW5Nb250aC5sZW5ndGg7XHJcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHJlbWFpbmluZ0NlbGxzOyBpKyspIHtcclxuICAgIC8vICAgdGhpcy5kYXlzSW5Nb250aC5wdXNoKG51bGwpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHRoaXMuZGF5c1VuaXhUaW1lc3RhbXBzID0gdGhpcy5kYXlzSW5Nb250aC5tYXAoZGF5ID0+IHsgcmV0dXJuIGRheSA/IGRheS5nZXRUaW1lKCkgOiB1bmRlZmluZWQgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVZZWFyU2VsZWN0aW9uWWVhcnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXN0WWVhcnMgPSA1O1xyXG4gICAgY29uc3QgZnV0dXJlWWVhcnMgPSAzO1xyXG4gICAgY29uc3QgeWVhcnMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gcGFzdFllYXJzOyBpID49IDE7IGktLSkge1xyXG5cclxuICAgICAgeWVhcnMucHVzaCh0aGlzLndvcmtpbmdZZWFyIC0gaSk7XHJcbiAgICB9XHJcblxyXG4gICAgeWVhcnMucHVzaCh0aGlzLndvcmtpbmdZZWFyKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBmdXR1cmVZZWFyczsgaSsrKSB7XHJcbiAgICAgIHllYXJzLnB1c2godGhpcy53b3JraW5nWWVhciArIGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMueWVhclNlbGVjdGlvblllYXJzID0geWVhcnMucmV2ZXJzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5Nb250aFNlbGVjdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyQm9keSA9ICF0aGlzLnNob3dDYWxlbmRhckJvZHk7XHJcbiAgICB0aGlzLm1vbnRoU2VsZWN0aW9uID0gIXRoaXMubW9udGhTZWxlY3Rpb247XHJcbiAgICB0aGlzLnllYXJTZWxlY3Rpb24gPSAhdGhpcy55ZWFyU2VsZWN0aW9uO1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSAhdGhpcy5zaG93TW9udGhTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblllYXJTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dNb250aFNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93WWVhclNlbGVjdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0RGF0ZShkYXk6IERhdGUpOiB2b2lkIHtcclxuICAgIGlmIChkYXkpIHtcclxuICAgICAgaWYgKCF0aGlzLmRvdWJsZUNhbGVuZGFyKSB7XHJcbiAgICAgICAgLy8gU2luZ2xlIGNhbGVuZGFyIOKGkiBzZWxlY3QgYW5kIGNsb3NlXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXk7XHJcbiAgICAgICAgdGhpcy5zZXRBbmRDbG9zZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF5O1xyXG4gICAgICAgIHRoaXMuX2ZpbGxEYXRlc0JldHdlZW5TZWxlY3RlZCgpO1xyXG4gICAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQobmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE1vbnRoKG1vbnRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1NlbGVjdGVkTW9udGggPSBtb250aDtcclxuICAgIHRoaXMud29ya2luZ01vbnRoID0gdGhpcy5tb250aFNlbGVjdGlvbk5hbWVzLmluZGV4T2YobW9udGgpO1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMueWVhclNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5tb250aFNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhckJvZHkgPSB0cnVlO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ1llYXIgPSB5ZWFyO1xyXG4gICAgdGhpcy5zaG93WWVhclNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVNb250aE5hbWVzKCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDAwLCBpLCAxKTtcclxuICAgICAgY29uc3QgbW9udGhOYW1lU2hvcnQgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCB7bW9udGg6ICdzaG9ydCd9KTtcclxuICAgICAgY29uc3QgbW9udGhOYW1lRnVsbCA9IGRhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHttb250aDogJ2xvbmcnfSk7XHJcbiAgICAgIHRoaXMubW9udGhTZWxlY3Rpb25OYW1lcy5wdXNoKHRoaXMuX2NhcGl0YWxpemVGaXJzdExldHRlcihtb250aE5hbWVTaG9ydCkpO1xyXG4gICAgICB0aGlzLm1vbnRoTmFtZXMucHVzaCh0aGlzLl9jYXBpdGFsaXplRmlyc3RMZXR0ZXIobW9udGhOYW1lRnVsbCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDc7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxOCwgMCwgaSk7XHJcbiAgICAgIGNvbnN0IHdlZWtkYXlOYW1lID0gZGF0ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xyXG4gICAgICB0aGlzLmRheU5hbWVzLnB1c2godGhpcy5fY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHdlZWtkYXlOYW1lLmNoYXJBdCgwKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU1vdXNlT3ZlckRheShkYXk6IERhdGUpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZ2hsaWdodERheXNCZXR3ZWVuRGF0ZXMgJiYgZGF5ICYmICh0aGlzLnNlbGVjdGVkRGF0ZSB8fCB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkgJiYgISh0aGlzLnNlbGVjdGVkRGF0ZSAmJiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkgJiYgISh0aGlzLnNlbGVjdGVkRGF0ZSAmJiAhdGhpcy50ZW1wb3JhcnlTZWxlY3RlZFNlY29uZGFyeURhdGUgJiYgIXRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKSkge1xyXG4gICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodCA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5kYXlzVW5peFRpbWVzdGFtcHMuaW5jbHVkZXMoZGF5LmdldFRpbWUoKSkpIHtcclxuICAgICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodC5wdXNoKC4uLnRoaXMuZGF5c0luTW9udGgubWFwKChkYXlJbk1vbnRoOiBEYXRlKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgICAgICAgaWYgKGRheUluTW9udGggJiZcclxuICAgICAgICAgICAgICAvLyBkYXkgaW4gdGhlIG1vbnRoIGlzIGFmdGVyIHNlbGVjdGVkIGRhdGUgYW5kIGRheSBpbiB0aGUgbW9udGggaXMgYmVmb3JlIHRoZSBob3ZlcmluZyBkYXlcclxuICAgICAgICAgICAgICAoZGF5SW5Nb250aC5nZXRUaW1lKCkgPiB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgZGF5SW5Nb250aC5nZXRUaW1lKCkgPCBkYXkuZ2V0VGltZSgpKSB8fFxyXG4gICAgICAgICAgICAgIC8vIHNlY29uZCBkYXRlIGlzIGFmdGVyIHNlbGVjdGVkIGRhdGUgYW5kIGRheSBpbiB0aGUgbW9udGggaXMgYmVmb3JlIGhvdmVyaW5nIGRheSBhbmQgZGF5IGluIG1vbnRoIGlzIGFmdGVyIHNlbGVjdGVkIGRhdGVcclxuICAgICAgICAgICAgICAodGhpcy5fc2Vjb25kSG92ZXJpbmdEYXRlICYmIHRoaXMuX3NlY29uZEhvdmVyaW5nRGF0ZS5nZXRUaW1lKCkgPiB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgZGF5ICYmIGRheUluTW9udGggJiYgZGF5SW5Nb250aC5nZXRUaW1lKCkgPCBkYXkuZ2V0VGltZSgpICYmIGRheUluTW9udGguZ2V0VGltZSgpID4gdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBkYXlJbk1vbnRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZGF5SW5Nb250aCAmJlxyXG4gICAgICAgICAgICAgIC8vIGRheSBpbiB0aGUgbW9udGggaXMgYWZ0ZXIgc2Vjb25kIGRhdGUgYW5kIGRheSBpbiB0aGUgbW9udGggaXMgYmVmb3JlIHRoZSBob3ZlcmluZyBkYXlcclxuICAgICAgICAgICAgICAoZGF5SW5Nb250aC5nZXRUaW1lKCkgPiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgZGF5SW5Nb250aC5nZXRUaW1lKCkgPCBkYXkuZ2V0VGltZSgpKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBkYXlJbk1vbnRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF5c1RvSGlnaGxpZ2h0LnB1c2goLi4udGhpcy5kYXlzSW5Nb250aC5tYXAoKGRheSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRheSA+IHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmhvdmVyaW5nRGF0ZS5uZXh0KGRheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQucHVzaCguLi50aGlzLmRheXNJbk1vbnRoLm1hcCgoZGF5SW5Nb250aDogRGF0ZSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXlJbk1vbnRoICYmIChkYXlJbk1vbnRoID4gdGhpcy5zZWxlY3RlZERhdGUgJiYgZGF5SW5Nb250aCA8IHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKSB8fCAoZGF5SW5Nb250aCA+IHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlICYmIGRheUluTW9udGggPCB0aGlzLnNlbGVjdGVkRGF0ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBkYXlJbk1vbnRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgY2FsY3VsYXRlV2Vla051bWJlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLndlZWtOdW1iZXJzID0gW107XHJcbiAgICBsZXQgd2Vla051bWJlcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF5c0luTW9udGgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZGF5ID0gdGhpcy5kYXlzSW5Nb250aFtpXTtcclxuICAgICAgaWYgKGRheSkge1xyXG4gICAgICAgICAgLy8gU3RhcnQgb2YgYSBuZXcgd2VlayBvciBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCBjYWxjdWxhdGUgYW5kIHNldCB3ZWVrTnVtYmVyXHJcbiAgICAgICAgICB3ZWVrTnVtYmVyID0gdGhpcy5nZXRJU09XZWVrKGRheSk7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgd2Vla051bWJlciBpcyBub3QgYWxyZWFkeSBpbiB0aGUgYXJyYXlcclxuICAgICAgICAgIGlmICghdGhpcy53ZWVrTnVtYmVycy5pbmNsdWRlcyh3ZWVrTnVtYmVyKSkge1xyXG4gICAgICAgICAgICB0aGlzLndlZWtOdW1iZXJzLnB1c2god2Vla051bWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldElTT1dlZWsoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpKTtcclxuICAgICAgZC5zZXRVVENEYXRlKGQuZ2V0VVRDRGF0ZSgpICsgNCAtIChkLmdldFVUQ0RheSgpIHx8IDcpKTtcclxuICAgICAgY29uc3QgeWVhclN0YXJ0ID0gbmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSk7XHJcbiAgICAgIGNvbnN0IHdlZWtOdW1iZXIgPSBNYXRoLmNlaWwoKChkLnZhbHVlT2YoKSAtIHllYXJTdGFydC52YWx1ZU9mKCkpIC8gODY0MDAwMDAgKyAxKSAvIDcpO1xyXG4gICAgICByZXR1cm4gd2Vla051bWJlcjtcclxuICB9XHJcbiAgcHVibGljIHNldEFuZENsb3NlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgICB0aGlzLnNlY29uZERhdGVTZWxlY3RlZC5lbWl0KHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKTsvLyBFbWl0IHRoZSBzZWxlY3RlZCBkYXRlXHJcbiAgICAgIHRoaXMuY2xvc2VQb3B1cCgpOyAvLyBUcmlnZ2VyIHBvcHVwIGNsb3NlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJEYXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChudWxsKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2Vjb25kRGF0ZVNlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsZWFyRGF0ZXMuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlRGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5faW5pdGlhbFNlbGVjdGVkRGF0ZTtcclxuICAgIHRoaXMuY2xvc2VQb3B1cCgpOyAvLyBUcmlnZ2VyIHBvcHVwIGNsb3NlIHdpdGhvdXQgbWFraW5nIGNoYW5nZXNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VQb3B1cCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpY2tlZE91dHNpZGUuZW1pdCgpOyAvLyBFbWl0IHRoZSBgY2xpY2tlZE91dHNpZGVgIGV2ZW50IHRvIG5vdGlmeSB0aGUgcGFyZW50XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
@@ -25,6 +25,7 @@ export class FilterItemComponent {
25
25
  this.sliderDefaultMin = 0;
26
26
  this.sliderDefaultMax = 100000;
27
27
  this.fullRangeIsNull = false;
28
+ this.canFilterByCode = false;
28
29
  this.modelChange = new EventEmitter();
29
30
  this.collectionChange = new EventEmitter();
30
31
  this.filterButtonClicked = new EventEmitter();
@@ -192,9 +193,15 @@ export class FilterItemComponent {
192
193
  const filterText = (_a = this.filterText) === null || _a === void 0 ? void 0 : _a.toString().toLowerCase();
193
194
  let filteredItemCount = 0;
194
195
  this.filteredCollection = (_b = this.collection) === null || _b === void 0 ? void 0 : _b.filter((item) => {
195
- var _a;
196
+ var _a, _b;
196
197
  const labelText = (_a = item.description) === null || _a === void 0 ? void 0 : _a.toString().toLowerCase();
197
- const isHiddenByFilter = ((labelText === null || labelText === void 0 ? void 0 : labelText.indexOf(filterText)) === -1);
198
+ const matchesDescription = (labelText === null || labelText === void 0 ? void 0 : labelText.indexOf(filterText)) !== -1;
199
+ let matchesCode = false;
200
+ if (this.canFilterByCode) {
201
+ const codeText = (_b = item.code) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase();
202
+ matchesCode = (codeText === null || codeText === void 0 ? void 0 : codeText.indexOf(filterText)) !== -1;
203
+ }
204
+ const isHiddenByFilter = !matchesDescription && !matchesCode;
198
205
  if (isHiddenByFilter) {
199
206
  return false;
200
207
  }
@@ -735,6 +742,7 @@ FilterItemComponent.propDecorators = {
735
742
  sliderDefaultMin: [{ type: Input }],
736
743
  sliderDefaultMax: [{ type: Input }],
737
744
  fullRangeIsNull: [{ type: Input }],
745
+ canFilterByCode: [{ type: Input }],
738
746
  model: [{ type: Input }],
739
747
  modelChange: [{ type: Output }],
740
748
  collectionChange: [{ type: Output }],
@@ -744,4 +752,4 @@ FilterItemComponent.propDecorators = {
744
752
  dateRangeInput: [{ type: ViewChild, args: ['dateRangeInput',] }],
745
753
  hidden: [{ type: HostBinding, args: ['class.co-hidden',] }]
746
754
  };
747
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci1pdGVtL2ZpbHRlci1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQ3JDLEtBQUssRUFFTCxNQUFNLEVBQUUsU0FBUyxFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUV0RixPQUFPLEVBQUMsOENBQThDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQThLL0gsTUFBTSxPQUFPLG1CQUFtQjtJQWlKOUIsWUFBbUIsV0FBNkIsRUFDNUIsZUFBa0M7UUFEbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQWpKL0MsVUFBSyxHQUE4QixrQkFBa0IsQ0FBQztRQUN0RCxVQUFLLEdBQTBCLGNBQWMsQ0FBQztRQThCOUMsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFHMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVFqQyw0R0FBNEc7UUFFckcsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsbUhBQW1IO1FBRTVHLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBR2hDLHNCQUFpQixHQUFXLFFBQVEsQ0FBQztRQUdyQyxzQkFB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Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlLVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLFNBQVMsRUFBRSxDQUFDO3dCQUNSLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7cUJBQ3JELENBQUM7YUFDSDs7O1lBbExPLGdCQUFnQjtZQVZHLGlCQUFpQjs7O21CQW1NekMsS0FBSzt5QkFVTCxLQUFLOzBCQVlMLEtBQUs7MkJBR0wsS0FBSzt1QkFHTCxLQUFLOzZDQUdMLEtBQUs7K0JBR0wsS0FBSzs0QkFJTCxLQUFLOzZCQUlMLEtBQUs7Z0NBR0wsS0FBSztnQ0FHTCxLQUFLOzRCQUdMLEtBQUs7NEJBR0wsS0FBSzs2QkFHTCxLQUFLOytCQUdMLEtBQUs7K0JBR0wsS0FBSzs4QkFHTCxLQUFLO29CQUdMLEtBQUs7MEJBbUJMLE1BQU07K0JBR04sTUFBTTtrQ0FHTixNQUFNO3VCQUdOLFdBQVcsU0FBQyxzQkFBc0I7d0JBSWxDLFNBQVMsU0FBQyxXQUFXOzZCQUNyQixTQUFTLFNBQUMsZ0JBQWdCO3FCQWtCMUIsV0FBVyxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW0nO1xyXG5pbXBvcnQge0ZpbHRlckl0ZW1WaWV3bW9kZWx9IGZyb20gJy4vZmlsdGVyLWl0ZW0tdmlld21vZGVsJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9pY29uL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7RmlsdGVySXRlbU1vZGV9IGZyb20gJy4uLy4uL2NvcmUvZW51bS9maWx0ZXJJdGVtLW1vZGUuZW51bSc7XHJcbmltcG9ydCB7U2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLmNvbXBvbmVudC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtVc2VyUmlnaHRUeXBlfSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvZW51bS91c2VyLXJpZ2h0LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge09iamVjdENvbmZpZ3VyYXRpb259IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLWNvbXBvbmVudC1pbnRlcmZhY2UtbmFtZSc7XHJcbmltcG9ydCB7T2JqZWN0Q29uZmlndXJhdGlvbkRlZmF1bHRWYWx1ZVR5cGV9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3R5cGUvb2JqZWN0LWNvbmZpZ3VyYXRpb24tZGVmYXVsdC12YWx1ZS10eXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWZpbHRlci1pdGVtXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWhlYWRlclwiPlxyXG4gICAgICAgICAgPGNvLWNvbGxhcHNpYmxlXHJcbiAgICAgICAgICAgICAgICAgIFtoZWFkZXJUaXRsZV09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtleHBhbmRCdXR0b25MYXN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50RG93bilcIlxyXG4gICAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0J1dHRvbl09XCJzaG93QnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgW2J1dHRvblRleHRdPVwiZmlsdGVyQnV0dG9uTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJvbkJ1dHRvbkNsaWNrZWQoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNvbGxhcHNhYmxlLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWN1c3RvbS1jb250ZW50XCIgKm5nSWY9XCJjdXN0b21Db250ZW50OyBlbHNlIGNvbGxlY3Rpb25Db250ZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJzaG93QnV0dG9uPXRydWVcIiAobW91c2Vkb3duKT1cInNob3dCdXR0b249dHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb2xsZWN0aW9uQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jb2xsZWN0aW9uLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLkZpbHRlcmxpc3QgfHwgbW9kZSA9PT0gbW9kZXMuU2luZ2xlU2VsZWN0TGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbW9kZSA9PT0gbW9kZXMuU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQgfHwgbW9kZSA9PT0gbW9kZXMuU2VsZWN0TGlzdFdpdGhTdHJpbmdDb2xsZWN0aW9uT3V0cHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sbGVjdGlvbj8ubGVuZ3RoID4gMTAgfHwgbWluU2VhcmNoQ2hhcnNUb0xvYWRDb2xsZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZmlsdGVyVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiZmlsdGVyLWxvYWRlclwiPjxzcGFuPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0c1wiICpuZ0lmPVwiZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIm5vUmVzdWx0c0xhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jb2xsZWN0aW9uLXJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRDb2xsZWN0aW9uOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNvbGxlY3Rpb24tcmVzdWx0LWl0ZW1cIiAqbmdJZj1cImluZGV4IDwgbGltaXRUbyB8fCBzaG93QWxsUmVzdWx0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCAqbmdJZj1cIm1vZGUgIT09IG1vZGVzLlNpbmdsZVNlbGVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwib3B0aW9uLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIm9wdGlvbi5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZUxhYmVsXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5TaW5nbGVTZWxlY3RMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIm9wdGlvbi5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZShvcHRpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1hbW91bnRcIiAqbmdJZj1cIm9wdGlvbi5jb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwib3B0aW9uLmNvdW50LnRvU3RyaW5nKCkgfCBhcHBlbmQ6ICcpJyB8IHByZXBlbmQ6ICcgICAgICAoJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLXNob3ctbW9yZS1vci1sZXNzXCIgKm5nSWY9XCIhc2hvd0FsbFJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1zaG93LW1vcmUgY2xpY2thYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vcmVUb1Nob3coKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImluY3JlYXNlTGltaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pY29uIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnREb3duKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwic2hvd01vcmVMYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItc2hvdy1sZXNzIGNsaWNrYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsZXNzVG9TaG93KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZXRUb0luaXRpYWxMaW1pdCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludFVwKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwic2hvd0xlc3NMYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1zbGlkZXItY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuU2xpZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLWZyb21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZUFycm93QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleGNsdWRlUGx1c01pbnVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidGUk9NJyB8IGNvcmVMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzbGlkZXJNaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZShzbGlkZXJNaW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXJyb3dCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4Y2x1ZGVQbHVzTWludXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1RPJyB8IGNvcmVMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzbGlkZXJNYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZShzbGlkZXJNYXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tc2xpZGVyLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLk51bGxhYmxlU2xpZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLWZyb21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZUFycm93QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleGNsdWRlUGx1c01pbnVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidGUk9NJyB8IGNvcmVMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzbGlkZXJNaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZShzbGlkZXJNaW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXJyb3dCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4Y2x1ZGVQbHVzTWludXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1RPJyB8IGNvcmVMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzbGlkZXJNYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZShzbGlkZXJNYXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY2hlY2tib3gtY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuQ2hlY2tib3ggXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJtb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNoZWNrYm94LWNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLkNoZWNrYm94VG9UZXh0IHx8IG1vZGUgPT09IG1vZGVzLkNoZWNrYm94VG9TaW1wbGVUZXh0IHx8IG1vZGUgPT09IG1vZGVzLkNoZWNrYm94VG9CaW5hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImNoZWNrQm94VG9UZXh0TW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJwbGFjZWhvbGRlclwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS10ZXh0ZmllbGQtY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuVGV4dEZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tZGF0ZUZpZWxkLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLkRhdGVGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZGF0ZUlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkYXRlRmllbGRWYWx1ZVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWRhdGVGaWVsZC1jb250ZW50XCIgKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5EYXRlUmFuZ2VGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlLXJhbmdlIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZGF0ZVJhbmdlSW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJbZGF0ZVJhbmdlU3RhcnQsIGRhdGVSYW5nZUVuZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLaWVzIGRhdHVtJyB8IGNvcmVMb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28taW5wdXQtZGF0ZS1yYW5nZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICAgIHByb3ZpZGU6IFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbHRlckl0ZW1Db21wb25lbnQpXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnQge1xyXG4gIHB1YmxpYyBpY29uczogdHlwZW9mIENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbjtcclxuICBwdWJsaWMgbW9kZXM6IHR5cGVvZiBGaWx0ZXJJdGVtTW9kZSA9IEZpbHRlckl0ZW1Nb2RlO1xyXG5cclxuICBwdWJsaWMgZGF0ZUZpZWxkVmFsdWU/OiBEYXRlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRmlsdGVySXRlbU1vZGUpIHtcclxuICAgIHRoaXMuX21vZGUgPSB2YWx1ZTtcclxuICAgIHRoaXMucmVhZE1vZGVsRm9yTW9kZSh0aGlzLl9tb2RlbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGUoKTogRmlsdGVySXRlbU1vZGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgY29sbGVjdGlvbih2YWx1ZTogRmlsdGVySXRlbVZpZXdtb2RlbFtdKSB7XHJcbiAgICB0aGlzLl9jb2xsZWN0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ29sbGVjdGlvbiA9IHRoaXMuX2NvbGxlY3Rpb24/LnNsaWNlKCk7XHJcbiAgICAvL3Jlc2V0IHRoZSBtb2RlbCBpbiBjYXNlIHRoZXJlIHdhcyBubyBjb2xsZWN0aW9uIHRvIHNldCBpdHMgdmFsdWVzIG9uIHdoZW4gaXQgd2FzIHNldC5cclxuICAgIHRoaXMubW9kZWwgPSB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29sbGVjdGlvbigpOiBGaWx0ZXJJdGVtVmlld21vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbml0aWFsTGltaXQ6IG51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtaW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb246IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbkxvYWRGbjogRnVuY3Rpb247XHJcblxyXG4gIC8vIFNldCB0byBmYWxzZSB0byB1c2UgZmlsdGVyIGl0ZW0gd2l0aCBhIG11bHRpIHNlbGVjdGFibGUgY29sbGVjdGlvbi4gU2V0IHRvIHRydWUgdG8gc3BlY2lmeSBjdXN0b20gY29udGVudFxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2V0IHRvIHRydWUgdG8gc2hvdyBhbGwgcmVzdWx0cy4gU2V0IHRvIGZhbHNlIHRvIGdldCAnc2hvdyBtb3JlJyBhbmQgJ3Nob3cgbGVzcycgYnV0dG9ucyB0byBleHBhbmQgYW5kIGNvbnRyYWN0LlxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dBbGxSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZpbHRlckJ1dHRvbkxhYmVsOiBzdHJpbmcgPSBcIlNlYXJjaFwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaC4uLic7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dNb3JlTGFiZWw6IHN0cmluZyA9ICdTaG93IG1vcmUnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93TGVzc0xhYmVsOiBzdHJpbmcgPSAnU2hvdyBsZXNzJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbm9SZXN1bHRzTGFiZWw6IHN0cmluZyA9IFwiTm8gcmVzdWx0c1wiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzbGlkZXJEZWZhdWx0TWluOiBudW1iZXIgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzbGlkZXJEZWZhdWx0TWF4OiBudW1iZXIgPSAxMDAwMDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZ1bGxSYW5nZUlzTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbW9kZWwobmV3TW9kZWw6IGFueSkge1xyXG4gICAgdGhpcy5yZWFkTW9kZWxGb3JNb2RlKG5ld01vZGVsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbW9kZWwoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgY29uZmlnT2JqZWN0KHZhbHVlOiBPYmplY3RDb25maWd1cmF0aW9uKSB7XHJcbiAgICB0aGlzLl9jb25maWdPYmplY3QgPSB2YWx1ZTtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSAodGhpcy5fY29uZmlnT2JqZWN0LnJpZ2h0cyA9PT0gVXNlclJpZ2h0VHlwZS5SZWFkV3JpdGUpO1xyXG4gICAgdGhpcy5oaWRkZW4gPSAodGhpcy5fY29uZmlnT2JqZWN0LnJpZ2h0cyA8IFVzZXJSaWdodFR5cGUuUmVhZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbmZpZ09iamVjdCgpOiBPYmplY3RDb25maWd1cmF0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWdPYmplY3Q7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjb2xsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmlsdGVySXRlbVZpZXdtb2RlbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVySXRlbVZpZXdtb2RlbFtdPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZmlsdGVyQnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1maWx0ZXItaXRlbVwiKSBnZXQgaGFzQ2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8gRW5zdXJlcyBpdCBuZXZlciBnZXRzIHJlbW92ZWRcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVSYW5nZUlucHV0JykgZGF0ZVJhbmdlSW5wdXQ6IGFueTtcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkQ29sbGVjdGlvbjogRmlsdGVySXRlbVZpZXdtb2RlbFtdID0gW107XHJcbiAgcHVibGljIGxpbWl0VG86IG51bWJlciA9IDEwO1xyXG4gIHB1YmxpYyBmaWx0ZXJUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBzaG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL21vZGVscyBmb3IgdGhlIHNsaWRlciBmaWVsZCBpbnB1dHNcclxuICBwdWJsaWMgc2xpZGVyTWluOiBudW1iZXI7XHJcbiAgcHVibGljIHNsaWRlck1heDogbnVtYmVyO1xyXG5cclxuICAvL21vZGVscyBmb3IgdGggZGF0ZXJhbmdlIGlucHV0XHJcbiAgcHVibGljIGRhdGVSYW5nZVN0YXJ0OiBEYXRlO1xyXG4gIHB1YmxpYyBkYXRlUmFuZ2VFbmQ6IERhdGU7XHJcblxyXG4gIC8vc2NyZWVuQ29uZmlnXHJcbiAgcHVibGljIG9iamVjdENvbmZpZ05hbWU6IHN0cmluZztcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWhpZGRlbicpXHJcbiAgcHVibGljIGhpZGRlbjogYm9vbGVhbjtcclxuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIGZvcmNlUmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xyXG4gIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlcjtcclxuICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBPYmplY3RDb25maWd1cmF0aW9uRGVmYXVsdFZhbHVlVHlwZTtcclxuICBwdWJsaWMgZGVjaW1hbHM6IG51bWJlcjtcclxuICBwdWJsaWMgcmVkRXJyb3JCYWNrZ3JvdW5kOiBib29sZWFuO1xyXG5cclxuICAvL21vZGVsIGZvciB0aGUgdGV4dGJveCBvcHRpb25zIHRoYXQgbmVlZCBhIGNvbnZlcnRlZCBvdXRwdXRcclxuICBwdWJsaWMgY2hlY2tCb3hUb1RleHRNb2RlbDogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnT2JqZWN0OiBPYmplY3RDb25maWd1cmF0aW9uO1xyXG4gIHByaXZhdGUgX2NvbGxlY3Rpb246IEZpbHRlckl0ZW1WaWV3bW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgX21vZGU6IEZpbHRlckl0ZW1Nb2RlID0gdGhpcy5tb2Rlcy5GaWx0ZXJsaXN0O1xyXG4gIHByaXZhdGUgX21vZGVsOiBhbnk7XHJcbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVvdXQ6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRUb0luaXRpYWxMaW1pdCgpO1xyXG4gICAgdGhpcy5zaG93QnV0dG9uID0gdGhpcy52YWx1ZVNlbGVjdGVkKCk7XHJcbiAgICBpZih0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jaGVja0JveFRvVGV4dE1vZGVsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9Jbml0aWFsTGltaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpbWl0VG8gPSB0aGlzLmluaXRpYWxMaW1pdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbmNyZWFzZUxpbWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saW1pdFRvICs9IDEwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vcmVUb1Nob3coKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zaG93QWxsUmVzdWx0cykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZENvbGxlY3Rpb24/Lmxlbmd0aCA+IHRoaXMubGltaXRUbztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsZXNzVG9TaG93KCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd0FsbFJlc3VsdHMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPD0gdGhpcy5saW1pdFRvICYmIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPiB0aGlzLmluaXRpYWxMaW1pdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNb2RlbENoYW5nZShtb2RlbDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRmlsdGVybGlzdDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckZpbHRlckxpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNlbGVjdExpc3RXaXRoU3RyaW5nQ29sbGVjdGlvbk91dHB1dDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclN0cmluZ0NvbGxlY3Rpb25MaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TaW5nbGVTZWxlY3RMaXN0OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51bmNoZWNrRm9yU2luZ2xlU2VsZWN0KG1vZGVsKTtcclxuICAgICAgICBtb2RlbC5jaGVja2VkID0gIW1vZGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TbGlkZXI6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclNsaWRlck1vZGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLk51bGxhYmxlU2xpZGVyOlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JOdWxsYWJsZVNsaWRlck1vZGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkNoZWNrYm94VG9UZXh0OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JDaGVja2JveFRvVGV4dCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuQ2hlY2tib3hUb1NpbXBsZVRleHQ6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9TaW1wbGVUZXh0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvQmluYXJ5OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JDaGVja2JveFRvQmluYXJ5KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlUmFuZ2VGaWVsZDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yRGF0ZVJhbmdlKG1vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkRhdGVGaWVsZDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yRGF0ZUZpZWxkKG1vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlRleHRGaWVsZDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX21vZGVsID0gKHR5cGVvZiB0aGlzLl9tb2RlbCA9PT0gJ3N0cmluZycgJiYgdGhpcy5fbW9kZWwubGVuZ3RoID09PSAwKSA/IHVuZGVmaW5lZCA6IHRoaXMuX21vZGVsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuX21vZGVsKTtcclxuICAgIHRoaXMuY29sbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuY29sbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsdWVTZWxlY3RlZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5jb2xsZWN0aW9uLmZpbmQoYyA9PiBjLmNoZWNrZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTW9kZWxDaGFuZ2UodGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVvdXQpO1xyXG4gICAgdGhpcy5kZWJvdW5jZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcih0ZXh0KTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBBcHBsaWVzIGZpbHRlciB0byB0aGUgY29sbGVjdGlvbi5cclxuICBwdWJsaWMgYXN5bmMgYXBwbHlGaWx0ZXIodGV4dDogc3RyaW5nKTogUHJvbWlzZTxbXT4ge1xyXG4gICAgaWYgKCFpc05hTih0aGlzLm1pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbikpIHtcclxuICAgICAgaWYgKHRleHQubGVuZ3RoIDwgdGhpcy5taW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb24pIHtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwKSk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAzMDApKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25Mb2FkRm4odGV4dCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyVGV4dCA9IHRleHQ7XHJcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlclRleHQ6IHN0cmluZyA9IHRoaXMuZmlsdGVyVGV4dD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgbGV0IGZpbHRlcmVkSXRlbUNvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uPy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgY29uc3QgbGFiZWxUZXh0OiBzdHJpbmcgPSBpdGVtLmRlc2NyaXB0aW9uPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGlzSGlkZGVuQnlGaWx0ZXI6IGJvb2xlYW4gPSAobGFiZWxUZXh0Py5pbmRleE9mKGZpbHRlclRleHQpID09PSAtMSk7XHJcbiAgICAgIGlmIChpc0hpZGRlbkJ5RmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZpbHRlcmVkSXRlbUNvdW50Kys7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBvbkJ1dHRvbkNsaWNrZWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IG51bGwpPy5ibHVyPy4oKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRGF0ZUZpZWxkOlxyXG4gICAgICAgIHRoaXMuZGF0ZUlucHV0Py5maW5hbGl6ZT8uKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlUmFuZ2VGaWVsZDpcclxuICAgICAgICB0aGlzLmRhdGVSYW5nZUlucHV0Py5maW5hbGl6ZT8uKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICB0aGlzLmZpbHRlckJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgdW5jaGVja0ZvclNpbmdsZVNlbGVjdChtb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2gobSA9PiB7XHJcbiAgICAgIGlmIChtLmNvZGUgIT09IG1vZGVsLmNvZGUgJiYgbS5kZXNjcmlwdGlvbiAhPT0gbW9kZWwuZGVzY3JpcHRpb24pIHtcclxuICAgICAgICBtLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRNb2RlbEZvck1vZGUobmV3TW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkZpbHRlcmxpc3Q6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yRmlsdGVyTGlzdChuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TaW5nbGVTZWxlY3RMaXN0OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvclNpbmdsZVNlbGVjdExpc3QobmV3TW9kZWwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2VsZWN0TGlzdFdpdGhTdHJpbmdDb2xsZWN0aW9uT3V0cHV0OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvclN0cmluZ0NvbGxlY3Rpb25MaXN0KG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNsaWRlcjpcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLk51bGxhYmxlU2xpZGVyOlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvclNsaWRlck1vZGUobmV3TW9kZWwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuQ2hlY2tib3hUb1RleHQ6XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvU2ltcGxlVGV4dDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JDaGVja2JveFRvVGV4dChuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvQmluYXJ5OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvckNoZWNrYm94VG9CaW5hcnkobmV3TW9kZWwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRGF0ZUZpZWxkOlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvckRhdGVGaWVsZChuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlUmFuZ2VGaWVsZDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JEYXRlUmFuZ2VGaWVsZChuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBuZXdNb2RlbDtcclxuICAgIH1cclxuICB9XHJcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vTW9kZWwgY3JlYXRpb24gZm9yIGFsbCBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgYXZhaWxhYmxlLy9cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JGaWx0ZXJMaXN0KCk6IHZvaWQge1xyXG4gICAgbGV0IGZpbHRlclJhbmdlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaCgodmlld01vZGVsOiBGaWx0ZXJJdGVtVmlld21vZGVsKSA9PiB7XHJcbiAgICAgICAgaWYgKHZpZXdNb2RlbC5jaGVja2VkKSB7XHJcbiAgICAgICAgICBmaWx0ZXJSYW5nZS5wdXNoKGA/PScke3ZpZXdNb2RlbC5jb2RlfSdgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoZmlsdGVyUmFuZ2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX21vZGVsID0gZmlsdGVyUmFuZ2Uuam9pbignLCcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX21vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvclN0cmluZ0NvbGxlY3Rpb25MaXN0KCk6IHZvaWQge1xyXG4gICAgbGV0IGZpbHRlclJhbmdlOiBhbnkgPSBbXTtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgaWYgKHZpZXdNb2RlbC5jaGVja2VkKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2aWV3TW9kZWwuY29kZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGZpbHRlclJhbmdlLnB1c2godmlld01vZGVsLmNvZGUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygdmlld01vZGVsLmNvZGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBmaWx0ZXJSYW5nZS5wdXNoKHZpZXdNb2RlbC5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbHRlclJhbmdlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJSYW5nZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KCk6IHZvaWQge1xyXG4gICAgbGV0IGZpbHRlclN0cmluZzogc3RyaW5nID0gXCJcIjtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgaWYgKHZpZXdNb2RlbC5jaGVja2VkKSB7XHJcbiAgICAgICAgZmlsdGVyU3RyaW5nID0gdmlld01vZGVsLmNvZGUudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmlsdGVyU3RyaW5nLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJTdHJpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyTnVtYmVyOiBudW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoZmlsdGVyTnVtYmVyID09IG51bGwpIHtcclxuICAgICAgICAgIGZpbHRlck51bWJlciA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlck51bWJlciArPSBOdW1iZXIodmlld01vZGVsLmNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21vZGVsID0gZmlsdGVyTnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JTbGlkZXJNb2RlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZXJNaW4gPSAhIXRoaXMuc2xpZGVyTWluID8gdGhpcy5zbGlkZXJNaW4gOiB0aGlzLnNsaWRlckRlZmF1bHRNaW47XHJcbiAgICB0aGlzLnNsaWRlck1heCA9ICEhdGhpcy5zbGlkZXJNYXggPyB0aGlzLnNsaWRlck1heCA6IHRoaXMuc2xpZGVyRGVmYXVsdE1heDtcclxuXHJcbiAgICBsZXQgdHJ1ZUxvd2VyQm91bmQgPSBNYXRoLm1pbih0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXgpO1xyXG4gICAgbGV0IHRydWVVcHBlckJvdW5kID0gTWF0aC5tYXgodGhpcy5zbGlkZXJNaW4sIHRoaXMuc2xpZGVyTWF4KTtcclxuXHJcbiAgICB0aGlzLnNsaWRlck1pbiA9IHRydWVMb3dlckJvdW5kO1xyXG4gICAgdGhpcy5zbGlkZXJNYXggPSB0cnVlVXBwZXJCb3VuZDtcclxuICAgIHRoaXMuX21vZGVsID0gYCR7dHJ1ZUxvd2VyQm91bmR9IC0gJHt0cnVlVXBwZXJCb3VuZH1gO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yTnVsbGFibGVTbGlkZXJNb2RlKCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnNsaWRlck1pbiAmJiB0aGlzLnNsaWRlck1heCkge1xyXG4gICAgICBsZXQgdHJ1ZUxvd2VyQm91bmQgPSBNYXRoLm1pbih0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXgpO1xyXG4gICAgICBsZXQgdHJ1ZVVwcGVyQm91bmQgPSBNYXRoLm1heCh0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXgpO1xyXG5cclxuICAgICAgdGhpcy5fbW9kZWwgPSBgJHt0cnVlTG93ZXJCb3VuZH0gLSAke3RydWVVcHBlckJvdW5kfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9UZXh0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IFwiPz0nSidcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gXCI/PSdOJ1wiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JDaGVja2JveFRvU2ltcGxlVGV4dCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwpIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBcIkpcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gXCJOXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9CaW5hcnkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jaGVja0JveFRvVGV4dE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gMDtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JEYXRlRmllbGQoZGF0ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGUpIHtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuX2Zvcm1hdERhdGVUb1N0cmluZyhkYXRlKTtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBgPz0nJHtmb3JtYXR0ZWREYXRlfSdgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckRhdGVSYW5nZShkYXRlczogRGF0ZVtdKTogdm9pZCB7XHJcbiAgICBpZiAoZGF0ZXMpIHtcclxuICAgICAgbGV0IHN0YXJ0RGF0ZSA9IGRhdGVzWzBdO1xyXG4gICAgICBsZXQgZW5kRGF0ZSA9IGRhdGVzWzFdO1xyXG5cclxuICAgICAgY29uc3Qgc3RhcnREYXRlUmVxdWVzdCA9IHN0YXJ0RGF0ZSA/IHRoaXMuX2Zvcm1hdERhdGVUb1N0cmluZyhzdGFydERhdGUpIDogJyc7XHJcbiAgICAgIGNvbnN0IGVuZERhdGVSZXF1ZXN0ID0gZW5kRGF0ZSA/IHRoaXMuX2Zvcm1hdERhdGVUb1N0cmluZyhlbmREYXRlKSA6ICcnO1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IGA/Pj1cXCcke3N0YXJ0RGF0ZVJlcXVlc3R9XFwnJiA/PD1cXCcke2VuZERhdGVSZXF1ZXN0fVxcJ2A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtYXREYXRlVG9TdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgbGV0IG1vbnRoID0gKGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xyXG4gIH1cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvL01vZGVsIHJlYWRpbmcgZm9yIGFsbCBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgYXZhaWxhYmxlLy9cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JGaWx0ZXJMaXN0KGZpbHRlck1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBmaWx0ZXJMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGl0ZW1zVG9DaGVjazogc3RyaW5nW10gPSBbXTtcclxuICAgIHRoaXMuX3VuY2hlY2tBbGwoKTtcclxuICAgIHRoaXMuX21vZGVsID0gZmlsdGVyTW9kZWw7XHJcblxyXG4gICAgaWYgKGZpbHRlck1vZGVsICE9PSBudWxsICYmIGZpbHRlck1vZGVsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGZpbHRlck1vZGVsID09PSAnc3RyaW5nJyAmJiBmaWx0ZXJNb2RlbC5sZW5ndGggIT0gMCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZmlsdGVyTGlzdCA9IGZpbHRlck1vZGVsLnNwbGl0KFwiLFwiKVxyXG4gICAgICBmaWx0ZXJMaXN0LmZvckVhY2goKGZpbHRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaXRlbXNUb0NoZWNrLnB1c2goZmlsdGVyLnN1YnN0cigzLCBmaWx0ZXIubGVuZ3RoIC0gNCkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQ2hlY2spIHtcclxuICAgICAgICBsZXQgZmlsdGVyID0gdGhpcy5jb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUudG9TdHJpbmcoKSA9PT0gaXRlbSk7XHJcbiAgICAgICAgaWYgKGZpbHRlciAhPT0gbnVsbCAmJiBmaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZmlsdGVyLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9tb2RlbCA9IGZpbHRlck1vZGVsO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvclNpbmdsZVNlbGVjdExpc3Qoc2luZ2xlU2VsZWN0TW9kZWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdW5jaGVja0FsbCgpO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBzaW5nbGVTZWxlY3RNb2RlbDtcclxuXHJcbiAgICBpZiAoc2luZ2xlU2VsZWN0TW9kZWwgIT09IG51bGwgJiYgc2luZ2xlU2VsZWN0TW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGZpbHRlciA9IHRoaXMuY29sbGVjdGlvbi5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5jb2RlLnRvU3RyaW5nKCkgPT09IHNpbmdsZVNlbGVjdE1vZGVsKTtcclxuICAgICAgaWYgKGZpbHRlciAhPT0gbnVsbCAmJiBmaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGZpbHRlci5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QoY29sbGVjdGlvbk1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuY2hlY2tBbGwoKTtcclxuICAgIHRoaXMuX21vZGVsID0gY29sbGVjdGlvbk1vZGVsO1xyXG5cclxuICAgIGlmIChjb2xsZWN0aW9uTW9kZWwgIT09IG51bGwgJiYgY29sbGVjdGlvbk1vZGVsICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbGxlY3Rpb25Nb2RlbC5pbmRleE9mKHZpZXdNb2RlbC5jb2RlKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHZpZXdNb2RlbC5jaGVja2VkID0gY29sbGVjdGlvbk1vZGVsLmluZGV4T2Yodmlld01vZGVsLmNvZGUudG9TdHJpbmcoKSkgPiAtMTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2xsZWN0aW9uTW9kZWwuaW5kZXhPZih2aWV3TW9kZWwuY29kZSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICB2aWV3TW9kZWwuY2hlY2tlZCA9IGNvbGxlY3Rpb25Nb2RlbC5pbmRleE9mKHZpZXdNb2RlbC5jb2RlKSA+IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JTZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dChudW1iZXJNb2RlbDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl91bmNoZWNrQWxsKCk7XHJcbiAgICB0aGlzLl9tb2RlbCA9IG51bWJlck1vZGVsO1xyXG5cclxuICAgIGlmIChudW1iZXJNb2RlbCAhPT0gbnVsbCAmJiBudW1iZXJNb2RlbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbUNvZGU6IG51bWJlciA9IGl0ZW0uY29kZSBhcyBudW1iZXI7XHJcbiAgICAgICAgY29uc3QgbW9kVmFsdWUgPSAobnVtYmVyTW9kZWwgJSAoMiAqIGl0ZW1Db2RlKSk7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gKG1vZFZhbHVlID49IGl0ZW1Db2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5jaGVja0FsbCgpIHtcclxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2gobSA9PiB7XHJcbiAgICAgICAgbS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yU2xpZGVyTW9kZShzbGlkZXJNb2RlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IHNsaWRlck1vZGVsO1xyXG4gICAgaWYgKHNsaWRlck1vZGVsICE9PSB1bmRlZmluZWQgJiYgc2xpZGVyTW9kZWwgIT09IG51bGwpIHtcclxuICAgICAgbGV0IHNsaWRlcklucHV0Q29sbGVjdGlvbiA9IHNsaWRlck1vZGVsLnNwbGl0KCcgLSAnKTtcclxuICAgICAgdGhpcy5zbGlkZXJNaW4gPSBwYXJzZUludChzbGlkZXJJbnB1dENvbGxlY3Rpb25bMF0pO1xyXG4gICAgICB0aGlzLnNsaWRlck1heCA9IHBhcnNlSW50KHNsaWRlcklucHV0Q29sbGVjdGlvblsxXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNsaWRlck1pbiA9IHRoaXMuc2xpZGVyRGVmYXVsdE1pbjtcclxuICAgICAgdGhpcy5zbGlkZXJNYXggPSB0aGlzLnNsaWRlckRlZmF1bHRNYXg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JDaGVja2JveFRvVGV4dChjaGVja2JveFRvVGV4dE1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gY2hlY2tib3hUb1RleHRNb2RlbDtcclxuICAgIGlmIChjaGVja2JveFRvVGV4dE1vZGVsICE9PSB1bmRlZmluZWQgJiYgY2hlY2tib3hUb1RleHRNb2RlbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPSAoY2hlY2tib3hUb1RleHRNb2RlbC5pbmRleE9mKCdKJykgPiAtMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckNoZWNrYm94VG9CaW5hcnkoY2hlY2tib3hUb0JpbmFyeTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IGNoZWNrYm94VG9CaW5hcnk7XHJcbiAgICBpZiAoY2hlY2tib3hUb0JpbmFyeSAhPT0gdW5kZWZpbmVkICYmIGNoZWNrYm94VG9CaW5hcnkgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jaGVja0JveFRvVGV4dE1vZGVsID0gKGNoZWNrYm94VG9CaW5hcnkgPj0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckRhdGVGaWVsZChkYXRlRmllbGRNb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICAvLyBLZWVwIHdoYXRldmVyIGNhbWUgaW4gYXMgdGhlIFwiZmlsdGVyIHZhbHVlXCIgZm9yIG91dHB1dHNcclxuICAgIHRoaXMuX21vZGVsID0gZGF0ZUZpZWxkTW9kZWw7XHJcblxyXG4gICAgaWYgKCFkYXRlRmllbGRNb2RlbCkge1xyXG4gICAgICB0aGlzLmRhdGVGaWVsZFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGVGaWVsZE1vZGVsIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhdGVGaWVsZFZhbHVlID0gZGF0ZUZpZWxkTW9kZWw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGRhdGVGaWVsZE1vZGVsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAvLyBBY2NlcHQgXCI/PSdkZC1NTS15eXl5J1wiLCBcImRkLU1NLXl5eXlcIiwgb3IgXCJ5eXl5LU1NLWRkXCJcclxuICAgICAgbGV0IHJhdyA9IGRhdGVGaWVsZE1vZGVsO1xyXG4gICAgICBjb25zdCB3cmFwcGVkID0gcmF3Lm1hdGNoKC9cXD89JyhcXGR7Mn0tXFxkezJ9LVxcZHs0fSknLyk7XHJcbiAgICAgIGlmICh3cmFwcGVkKSByYXcgPSB3cmFwcGVkWzFdO1xyXG5cclxuICAgICAgY29uc3QgZGRtbXl5eXkgPSAvXihcXGR7Mn0pLShcXGR7Mn0pLShcXGR7NH0pJC87XHJcbiAgICAgIGNvbnN0IHl5eXltbWRkID0gL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KSQvO1xyXG5cclxuICAgICAgaWYgKGRkbW15eXl5LnRlc3QocmF3KSkge1xyXG4gICAgICAgIGNvbnN0IFssIGRkLCBtbSwgeXl5eV0gPSBkZG1teXl5eS5leGVjKHJhdykhO1xyXG4gICAgICAgIHRoaXMuZGF0ZUZpZWxkVmFsdWUgPSBuZXcgRGF0ZSgreXl5eSwgK21tIC0gMSwgK2RkKTtcclxuICAgICAgfSBlbHNlIGlmICh5eXl5bW1kZC50ZXN0KHJhdykpIHtcclxuICAgICAgICBjb25zdCBbLCB5eXl5LCBtbSwgZGRdID0geXl5eW1tZGQuZXhlYyhyYXcpITtcclxuICAgICAgICB0aGlzLmRhdGVGaWVsZFZhbHVlID0gbmV3IERhdGUoK3l5eXksICttbSAtIDEsICtkZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kYXRlRmllbGRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckRhdGVSYW5nZUZpZWxkKGRhdGVSYW5nZUZpZWxkTW9kZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZWwgPSBkYXRlUmFuZ2VGaWVsZE1vZGVsO1xyXG4gICAgaWYgKGRhdGVSYW5nZUZpZWxkTW9kZWwgIT09IHVuZGVmaW5lZCAmJiBkYXRlUmFuZ2VGaWVsZE1vZGVsICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBkYXRlQ29sbGVjdGlvbiA9IGRhdGVSYW5nZUZpZWxkTW9kZWwuc3BsaXQoJyYnKTtcclxuXHJcbiAgICAgIGxldCBzdGFydFN0cmluZyA9IGRhdGVDb2xsZWN0aW9uWzBdLnRyaW0oKS5zdWJzdHIoNCwgZGF0ZUNvbGxlY3Rpb25bMF0ubGVuZ3RoIC0gNSk7XHJcbiAgICAgIGxldCBlbmRTdHJpbmcgPSBkYXRlQ29sbGVjdGlvblsxXS50cmltKCkuc3Vic3RyKDQsIGRhdGVDb2xsZWN0aW9uWzFdLmxlbmd0aCAtIDUpO1xyXG5cclxuICAgICAgbGV0IHN0YXJ0RGF0ZUNvbXBvbmVudHMgPSBzdGFydFN0cmluZy5zcGxpdCgnLScpO1xyXG4gICAgICBsZXQgZW5kRGF0ZUNvbXBvbmVudHMgPSBlbmRTdHJpbmcuc3BsaXQoJy0nKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU3RhcnQgPSBuZXcgRGF0ZShwYXJzZUludChzdGFydERhdGVDb21wb25lbnRzWzJdKSwgcGFyc2VJbnQoc3RhcnREYXRlQ29tcG9uZW50c1sxXSkgLSAxLCBwYXJzZUludChzdGFydERhdGVDb21wb25lbnRzWzBdKSk7XHJcbiAgICAgIHRoaXMuZGF0ZVJhbmdlRW5kID0gbmV3IERhdGUocGFyc2VJbnQoZW5kRGF0ZUNvbXBvbmVudHNbMl0pLCBwYXJzZUludChlbmREYXRlQ29tcG9uZW50c1sxXSkgLSAxLCBwYXJzZUludChlbmREYXRlQ29tcG9uZW50c1swXSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlUmFuZ2VTdGFydCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5kYXRlUmFuZ2VFbmQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
755
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci1pdGVtL2ZpbHRlci1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQ3JDLEtBQUssRUFFTCxNQUFNLEVBQUUsU0FBUyxFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUV0RixPQUFPLEVBQUMsOENBQThDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQThLL0gsTUFBTSxPQUFPLG1CQUFtQjtJQW9KOUIsWUFBbUIsV0FBNkIsRUFDNUIsZUFBa0M7UUFEbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQXBKL0MsVUFBSyxHQUE4QixrQkFBa0IsQ0FBQztRQUN0RCxVQUFLLEdBQTBCLGNBQWMsQ0FBQztRQThCOUMsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFHMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVFqQyw0R0FBNEc7UUFFckcsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsbUhBQW1IO1FBRTVHLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBR2hDLHNCQUFpQixHQUFXLFFBQVEsQ0FBQztRQUdyQyxzQkFB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S0FBSzs4QkFHTCxLQUFLOzhCQUdMLEtBQUs7b0JBR0wsS0FBSzswQkFtQkwsTUFBTTsrQkFHTixNQUFNO2tDQUdOLE1BQU07dUJBR04sV0FBVyxTQUFDLHNCQUFzQjt3QkFJbEMsU0FBUyxTQUFDLFdBQVc7NkJBQ3JCLFNBQVMsU0FBQyxnQkFBZ0I7cUJBa0IxQixXQUFXLFNBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCwgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tICcuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XHJcbmltcG9ydCB7RmlsdGVySXRlbVZpZXdtb2RlbH0gZnJvbSAnLi9maWx0ZXItaXRlbS12aWV3bW9kZWwnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtGaWx0ZXJJdGVtTW9kZX0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2ZpbHRlckl0ZW0tbW9kZS5lbnVtJztcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zY3JlZW4tY29uZmlnLWFkYXB0ZXIuY29tcG9uZW50LmludGVyZmFjZVwiO1xyXG5pbXBvcnQge1VzZXJSaWdodFR5cGV9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9lbnVtL3VzZXItcmlnaHQtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7T2JqZWN0Q29uZmlndXJhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL29iamVjdC1jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7U0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY3JlZW4tY29uZmlnLWFkYXB0ZXItY29tcG9uZW50LWludGVyZmFjZS1uYW1lJztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9uRGVmYXVsdFZhbHVlVHlwZX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdHlwZS9vYmplY3QtY29uZmlndXJhdGlvbi1kZWZhdWx0LXZhbHVlLXR5cGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZmlsdGVyLWl0ZW1cIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0taGVhZGVyXCI+XHJcbiAgICAgICAgICA8Y28tY29sbGFwc2libGVcclxuICAgICAgICAgICAgICAgICAgW2hlYWRlclRpdGxlXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgW2V4cGFuZEJ1dHRvbkxhc3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnREb3duKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93QnV0dG9uXT1cInNob3dCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbYnV0dG9uVGV4dF09XCJmaWx0ZXJCdXR0b25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cIm9uQnV0dG9uQ2xpY2tlZCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY29sbGFwc2FibGUtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY3VzdG9tLWNvbnRlbnRcIiAqbmdJZj1cImN1c3RvbUNvbnRlbnQ7IGVsc2UgY29sbGVjdGlvbkNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInNob3dCdXR0b249dHJ1ZVwiIChtb3VzZWRvd24pPVwic2hvd0J1dHRvbj10cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbGxlY3Rpb25Db250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNvbGxlY3Rpb24tY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuRmlsdGVybGlzdCB8fCBtb2RlID09PSBtb2Rlcy5TaW5nbGVTZWxlY3RMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBtb2RlID09PSBtb2Rlcy5TZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dCB8fCBtb2RlID09PSBtb2Rlcy5TZWxlY3RMaXN0V2l0aFN0cmluZ0NvbGxlY3Rpb25PdXRwdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2xsZWN0aW9uPy5sZW5ndGggPiAxMCB8fCBtaW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJmaWx0ZXJUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJmaWx0ZXItbG9hZGVyXCI+PHNwYW4+PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRzXCIgKm5nSWY9XCJmaWx0ZXJlZENvbGxlY3Rpb24/Lmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwibm9SZXN1bHRzTGFiZWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNvbGxlY3Rpb24tcmVzdWx0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZENvbGxlY3Rpb247IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY29sbGVjdGlvbi1yZXN1bHQtaXRlbVwiICpuZ0lmPVwiaW5kZXggPCBsaW1pdFRvIHx8IHNob3dBbGxSZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94ICpuZ0lmPVwibW9kZSAhPT0gbW9kZXMuU2luZ2xlU2VsZWN0TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwib3B0aW9uLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlTGFiZWxdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2Uob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLlNpbmdsZVNlbGVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwib3B0aW9uLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWFtb3VudFwiICpuZ0lmPVwib3B0aW9uLmNvdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJvcHRpb24uY291bnQudG9TdHJpbmcoKSB8IGFwcGVuZDogJyknIHwgcHJlcGVuZDogJyAgICAgICgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItc2hvdy1tb3JlLW9yLWxlc3NcIiAqbmdJZj1cIiFzaG93QWxsUmVzdWx0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLXNob3ctbW9yZSBjbGlja2FibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibW9yZVRvU2hvdygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiaW5jcmVhc2VMaW1pdCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludERvd24pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJzaG93TW9yZUxhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1zaG93LWxlc3MgY2xpY2thYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxlc3NUb1Nob3coKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNldFRvSW5pdGlhbExpbWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50VXApXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJzaG93TGVzc0xhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLXNsaWRlci1jb250ZW50XCIgKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5TbGlkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbGlkZXItZnJvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXJyb3dCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4Y2x1ZGVQbHVzTWludXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0ZST00nIHwgY29yZUxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInNsaWRlck1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKHNsaWRlck1pbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaWdpdHNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVBcnJvd0J1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXhjbHVkZVBsdXNNaW51c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVE8nIHwgY29yZUxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInNsaWRlck1heFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKHNsaWRlck1heClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1zbGlkZXItY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuTnVsbGFibGVTbGlkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbGlkZXItZnJvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXJyb3dCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4Y2x1ZGVQbHVzTWludXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0ZST00nIHwgY29yZUxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInNsaWRlck1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKHNsaWRlck1pbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaWdpdHNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVBcnJvd0J1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXhjbHVkZVBsdXNNaW51c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVE8nIHwgY29yZUxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInNsaWRlck1heFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKHNsaWRlck1heClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jaGVja2JveC1jb250ZW50XCIgKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5DaGVja2JveCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwicGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY2hlY2tib3gtY29udGVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuQ2hlY2tib3hUb1RleHQgfHwgbW9kZSA9PT0gbW9kZXMuQ2hlY2tib3hUb1NpbXBsZVRleHQgfHwgbW9kZSA9PT0gbW9kZXMuQ2hlY2tib3hUb0JpbmFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiY2hlY2tCb3hUb1RleHRNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInBsYWNlaG9sZGVyXCI+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLXRleHRmaWVsZC1jb250ZW50XCIgKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5UZXh0RmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9kZWxcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1kYXRlRmllbGQtY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuRGF0ZUZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImRhdGVGaWVsZFZhbHVlXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1kYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tZGF0ZUZpZWxkLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLkRhdGVSYW5nZUZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUtcmFuZ2UgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkYXRlUmFuZ2VJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIltkYXRlUmFuZ2VTdGFydCwgZGF0ZVJhbmdlRW5kXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tpZXMgZGF0dW0nIHwgY29yZUxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1kYXRlLXJhbmdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgICAgcHJvdmlkZTogU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsdGVySXRlbUNvbXBvbmVudClcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVySXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgU2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudCB7XHJcbiAgcHVibGljIGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG4gIHB1YmxpYyBtb2RlczogdHlwZW9mIEZpbHRlckl0ZW1Nb2RlID0gRmlsdGVySXRlbU1vZGU7XHJcblxyXG4gIHB1YmxpYyBkYXRlRmllbGRWYWx1ZT86IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBtb2RlKHZhbHVlOiBGaWx0ZXJJdGVtTW9kZSkge1xyXG4gICAgdGhpcy5fbW9kZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5yZWFkTW9kZWxGb3JNb2RlKHRoaXMuX21vZGVsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBGaWx0ZXJJdGVtTW9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjb2xsZWN0aW9uKHZhbHVlOiBGaWx0ZXJJdGVtVmlld21vZGVsW10pIHtcclxuICAgIHRoaXMuX2NvbGxlY3Rpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uID0gdGhpcy5fY29sbGVjdGlvbj8uc2xpY2UoKTtcclxuICAgIC8vcmVzZXQgdGhlIG1vZGVsIGluIGNhc2UgdGhlcmUgd2FzIG5vIGNvbGxlY3Rpb24gdG8gc2V0IGl0cyB2YWx1ZXMgb24gd2hlbiBpdCB3YXMgc2V0LlxyXG4gICAgdGhpcy5tb2RlbCA9IHRoaXMuX21vZGVsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb2xsZWN0aW9uKCk6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGluaXRpYWxMaW1pdDogbnVtYmVyID0gMTA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbjogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb2xsZWN0aW9uTG9hZEZuOiBGdW5jdGlvbjtcclxuXHJcbiAgLy8gU2V0IHRvIGZhbHNlIHRvIHVzZSBmaWx0ZXIgaXRlbSB3aXRoIGEgbXVsdGkgc2VsZWN0YWJsZSBjb2xsZWN0aW9uLiBTZXQgdG8gdHJ1ZSB0byBzcGVjaWZ5IGN1c3RvbSBjb250ZW50XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VzdG9tQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBTZXQgdG8gdHJ1ZSB0byBzaG93IGFsbCByZXN1bHRzLiBTZXQgdG8gZmFsc2UgdG8gZ2V0ICdzaG93IG1vcmUnIGFuZCAnc2hvdyBsZXNzJyBidXR0b25zIHRvIGV4cGFuZCBhbmQgY29udHJhY3QuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0FsbFJlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmlsdGVyQnV0dG9uTGFiZWw6IHN0cmluZyA9IFwiU2VhcmNoXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VhcmNoLi4uJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd01vcmVMYWJlbDogc3RyaW5nID0gJ1Nob3cgbW9yZSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dMZXNzTGFiZWw6IHN0cmluZyA9ICdTaG93IGxlc3MnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBub1Jlc3VsdHNMYWJlbDogc3RyaW5nID0gXCJObyByZXN1bHRzXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNsaWRlckRlZmF1bHRNaW46IG51bWJlciA9IDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNsaWRlckRlZmF1bHRNYXg6IG51bWJlciA9IDEwMDAwMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZnVsbFJhbmdlSXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkZpbHRlckJ5Q29kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbW9kZWwobmV3TW9kZWw6IGFueSkge1xyXG4gICAgdGhpcy5yZWFkTW9kZWxGb3JNb2RlKG5ld01vZGVsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbW9kZWwoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgY29uZmlnT2JqZWN0KHZhbHVlOiBPYmplY3RDb25maWd1cmF0aW9uKSB7XHJcbiAgICB0aGlzLl9jb25maWdPYmplY3QgPSB2YWx1ZTtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSAodGhpcy5fY29uZmlnT2JqZWN0LnJpZ2h0cyA9PT0gVXNlclJpZ2h0VHlwZS5SZWFkV3JpdGUpO1xyXG4gICAgdGhpcy5oaWRkZW4gPSAodGhpcy5fY29uZmlnT2JqZWN0LnJpZ2h0cyA8IFVzZXJSaWdodFR5cGUuUmVhZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbmZpZ09iamVjdCgpOiBPYmplY3RDb25maWd1cmF0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWdPYmplY3Q7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjb2xsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmlsdGVySXRlbVZpZXdtb2RlbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVySXRlbVZpZXdtb2RlbFtdPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZmlsdGVyQnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1maWx0ZXItaXRlbVwiKSBnZXQgaGFzQ2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8gRW5zdXJlcyBpdCBuZXZlciBnZXRzIHJlbW92ZWRcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVSYW5nZUlucHV0JykgZGF0ZVJhbmdlSW5wdXQ6IGFueTtcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkQ29sbGVjdGlvbjogRmlsdGVySXRlbVZpZXdtb2RlbFtdID0gW107XHJcbiAgcHVibGljIGxpbWl0VG86IG51bWJlciA9IDEwO1xyXG4gIHB1YmxpYyBmaWx0ZXJUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBzaG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL21vZGVscyBmb3IgdGhlIHNsaWRlciBmaWVsZCBpbnB1dHNcclxuICBwdWJsaWMgc2xpZGVyTWluOiBudW1iZXI7XHJcbiAgcHVibGljIHNsaWRlck1heDogbnVtYmVyO1xyXG5cclxuICAvL21vZGVscyBmb3IgdGggZGF0ZXJhbmdlIGlucHV0XHJcbiAgcHVibGljIGRhdGVSYW5nZVN0YXJ0OiBEYXRlO1xyXG4gIHB1YmxpYyBkYXRlUmFuZ2VFbmQ6IERhdGU7XHJcblxyXG4gIC8vc2NyZWVuQ29uZmlnXHJcbiAgcHVibGljIG9iamVjdENvbmZpZ05hbWU6IHN0cmluZztcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWhpZGRlbicpXHJcbiAgcHVibGljIGhpZGRlbjogYm9vbGVhbjtcclxuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIGZvcmNlUmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xyXG4gIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlcjtcclxuICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBPYmplY3RDb25maWd1cmF0aW9uRGVmYXVsdFZhbHVlVHlwZTtcclxuICBwdWJsaWMgZGVjaW1hbHM6IG51bWJlcjtcclxuICBwdWJsaWMgcmVkRXJyb3JCYWNrZ3JvdW5kOiBib29sZWFuO1xyXG5cclxuICAvL21vZGVsIGZvciB0aGUgdGV4dGJveCBvcHRpb25zIHRoYXQgbmVlZCBhIGNvbnZlcnRlZCBvdXRwdXRcclxuICBwdWJsaWMgY2hlY2tCb3hUb1RleHRNb2RlbDogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnT2JqZWN0OiBPYmplY3RDb25maWd1cmF0aW9uO1xyXG4gIHByaXZhdGUgX2NvbGxlY3Rpb246IEZpbHRlckl0ZW1WaWV3bW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgX21vZGU6IEZpbHRlckl0ZW1Nb2RlID0gdGhpcy5tb2Rlcy5GaWx0ZXJsaXN0O1xyXG4gIHByaXZhdGUgX21vZGVsOiBhbnk7XHJcbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVvdXQ6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRUb0luaXRpYWxMaW1pdCgpO1xyXG4gICAgdGhpcy5zaG93QnV0dG9uID0gdGhpcy52YWx1ZVNlbGVjdGVkKCk7XHJcbiAgICBpZih0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jaGVja0JveFRvVGV4dE1vZGVsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9Jbml0aWFsTGltaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpbWl0VG8gPSB0aGlzLmluaXRpYWxMaW1pdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbmNyZWFzZUxpbWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saW1pdFRvICs9IDEwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vcmVUb1Nob3coKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zaG93QWxsUmVzdWx0cykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZENvbGxlY3Rpb24/Lmxlbmd0aCA+IHRoaXMubGltaXRUbztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsZXNzVG9TaG93KCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd0FsbFJlc3VsdHMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPD0gdGhpcy5saW1pdFRvICYmIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPiB0aGlzLmluaXRpYWxMaW1pdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNb2RlbENoYW5nZShtb2RlbDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRmlsdGVybGlzdDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckZpbHRlckxpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNlbGVjdExpc3RXaXRoU3RyaW5nQ29sbGVjdGlvbk91dHB1dDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclN0cmluZ0NvbGxlY3Rpb25MaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TaW5nbGVTZWxlY3RMaXN0OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51bmNoZWNrRm9yU2luZ2xlU2VsZWN0KG1vZGVsKTtcclxuICAgICAgICBtb2RlbC5jaGVja2VkID0gIW1vZGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TbGlkZXI6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclNsaWRlck1vZGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLk51bGxhYmxlU2xpZGVyOlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JOdWxsYWJsZVNsaWRlck1vZGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkNoZWNrYm94VG9UZXh0OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JDaGVja2JveFRvVGV4dCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuQ2hlY2tib3hUb1NpbXBsZVRleHQ6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9TaW1wbGVUZXh0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvQmluYXJ5OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JDaGVja2JveFRvQmluYXJ5KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlUmFuZ2VGaWVsZDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yRGF0ZVJhbmdlKG1vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkRhdGVGaWVsZDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yRGF0ZUZpZWxkKG1vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlRleHRGaWVsZDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX21vZGVsID0gKHR5cGVvZiB0aGlzLl9tb2RlbCA9PT0gJ3N0cmluZycgJiYgdGhpcy5fbW9kZWwubGVuZ3RoID09PSAwKSA/IHVuZGVmaW5lZCA6IHRoaXMuX21vZGVsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuX21vZGVsKTtcclxuICAgIHRoaXMuY29sbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuY29sbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsdWVTZWxlY3RlZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5jb2xsZWN0aW9uLmZpbmQoYyA9PiBjLmNoZWNrZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTW9kZWxDaGFuZ2UodGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVvdXQpO1xyXG4gICAgdGhpcy5kZWJvdW5jZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcih0ZXh0KTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBBcHBsaWVzIGZpbHRlciB0byB0aGUgY29sbGVjdGlvbi5cclxuICBwdWJsaWMgYXN5bmMgYXBwbHlGaWx0ZXIodGV4dDogc3RyaW5nKTogUHJvbWlzZTxbXT4ge1xyXG4gICAgaWYgKCFpc05hTih0aGlzLm1pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbikpIHtcclxuICAgICAgaWYgKHRleHQubGVuZ3RoIDwgdGhpcy5taW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb24pIHtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwKSk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAzMDApKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25Mb2FkRm4odGV4dCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyVGV4dCA9IHRleHQ7XHJcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlclRleHQ6IHN0cmluZyA9IHRoaXMuZmlsdGVyVGV4dD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgbGV0IGZpbHRlcmVkSXRlbUNvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uPy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgY29uc3QgbGFiZWxUZXh0OiBzdHJpbmcgPSBpdGVtLmRlc2NyaXB0aW9uPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICBjb25zdCBtYXRjaGVzRGVzY3JpcHRpb246IGJvb2xlYW4gPSBsYWJlbFRleHQ/LmluZGV4T2YoZmlsdGVyVGV4dCkgIT09IC0xO1xyXG5cclxuICAgICAgbGV0IG1hdGNoZXNDb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5Q29kZSkge1xyXG4gICAgICAgIGNvbnN0IGNvZGVUZXh0OiBzdHJpbmcgPSBpdGVtLmNvZGU/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBtYXRjaGVzQ29kZSA9IGNvZGVUZXh0Py5pbmRleE9mKGZpbHRlclRleHQpICE9PSAtMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaXNIaWRkZW5CeUZpbHRlcjogYm9vbGVhbiA9ICFtYXRjaGVzRGVzY3JpcHRpb24gJiYgIW1hdGNoZXNDb2RlO1xyXG5cclxuICAgICAgaWYgKGlzSGlkZGVuQnlGaWx0ZXIpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlsdGVyZWRJdGVtQ291bnQrKztcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9uQnV0dG9uQ2xpY2tlZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbCk/LmJsdXI/LigpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlRmllbGQ6XHJcbiAgICAgICAgdGhpcy5kYXRlSW5wdXQ/LmZpbmFsaXplPy4oKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkRhdGVSYW5nZUZpZWxkOlxyXG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlSW5wdXQ/LmZpbmFsaXplPy4oKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgIHRoaXMuZmlsdGVyQnV0dG9uQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSB1bmNoZWNrRm9yU2luZ2xlU2VsZWN0KG1vZGVsOiBGaWx0ZXJJdGVtVmlld21vZGVsKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChtID0+IHtcclxuICAgICAgaWYgKG0uY29kZSAhPT0gbW9kZWwuY29kZSAmJiBtLmRlc2NyaXB0aW9uICE9PSBtb2RlbC5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgIG0uY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZE1vZGVsRm9yTW9kZShuZXdNb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRmlsdGVybGlzdDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JGaWx0ZXJMaXN0KG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNpbmdsZVNlbGVjdExpc3Q6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yU2luZ2xlU2VsZWN0TGlzdChuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TZWxlY3RMaXN0V2l0aFN0cmluZ0NvbGxlY3Rpb25PdXRwdXQ6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QobmV3TW9kZWwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQ6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQobmV3TW9kZWwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2xpZGVyOlxyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuTnVsbGFibGVTbGlkZXI6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yU2xpZGVyTW9kZShuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvVGV4dDpcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkNoZWNrYm94VG9TaW1wbGVUZXh0OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvckNoZWNrYm94VG9UZXh0KG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkNoZWNrYm94VG9CaW5hcnk6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeShuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlRmllbGQ6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yRGF0ZUZpZWxkKG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkRhdGVSYW5nZUZpZWxkOlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvckRhdGVSYW5nZUZpZWxkKG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9tb2RlbCA9IG5ld01vZGVsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy9Nb2RlbCBjcmVhdGlvbiBmb3IgYWxsIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBhdmFpbGFibGUvL1xyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckZpbHRlckxpc3QoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyUmFuZ2U6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAodGhpcy5jb2xsZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGZpbHRlclJhbmdlLnB1c2goYD89JyR7dmlld01vZGVsLmNvZGV9J2ApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChmaWx0ZXJSYW5nZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJSYW5nZS5qb2luKCcsJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyUmFuZ2U6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZpZXdNb2RlbC5jb2RlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgZmlsdGVyUmFuZ2UucHVzaCh2aWV3TW9kZWwuY29kZS50b1N0cmluZygpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2aWV3TW9kZWwuY29kZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIGZpbHRlclJhbmdlLnB1c2godmlld01vZGVsLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmlsdGVyUmFuZ2UubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IGZpbHRlclJhbmdlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvclNpbmdsZVNlbGVjdExpc3QoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyU3RyaW5nOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICBmaWx0ZXJTdHJpbmcgPSB2aWV3TW9kZWwuY29kZS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChmaWx0ZXJTdHJpbmcubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IGZpbHRlclN0cmluZztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JTZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dCgpOiB2b2lkIHtcclxuICAgIGxldCBmaWx0ZXJOdW1iZXI6IG51bWJlciA9IG51bGw7XHJcbiAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaCgodmlld01vZGVsOiBGaWx0ZXJJdGVtVmlld21vZGVsKSA9PiB7XHJcbiAgICAgIGlmICh2aWV3TW9kZWwuY2hlY2tlZCkge1xyXG4gICAgICAgIGlmIChmaWx0ZXJOdW1iZXIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZmlsdGVyTnVtYmVyID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsdGVyTnVtYmVyICs9IE51bWJlcih2aWV3TW9kZWwuY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJOdW1iZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvclNsaWRlck1vZGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNsaWRlck1pbiA9ICEhdGhpcy5zbGlkZXJNaW4gPyB0aGlzLnNsaWRlck1pbiA6IHRoaXMuc2xpZGVyRGVmYXVsdE1pbjtcclxuICAgIHRoaXMuc2xpZGVyTWF4ID0gISF0aGlzLnNsaWRlck1heCA/IHRoaXMuc2xpZGVyTWF4IDogdGhpcy5zbGlkZXJEZWZhdWx0TWF4O1xyXG5cclxuICAgIGxldCB0cnVlTG93ZXJCb3VuZCA9IE1hdGgubWluKHRoaXMuc2xpZGVyTWluLCB0aGlzLnNsaWRlck1heCk7XHJcbiAgICBsZXQgdHJ1ZVVwcGVyQm91bmQgPSBNYXRoLm1heCh0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXgpO1xyXG5cclxuICAgIHRoaXMuc2xpZGVyTWluID0gdHJ1ZUxvd2VyQm91bmQ7XHJcbiAgICB0aGlzLnNsaWRlck1heCA9IHRydWVVcHBlckJvdW5kO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBgJHt0cnVlTG93ZXJCb3VuZH0gLSAke3RydWVVcHBlckJvdW5kfWA7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JOdWxsYWJsZVNsaWRlck1vZGUoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuc2xpZGVyTWluICYmIHRoaXMuc2xpZGVyTWF4KSB7XHJcbiAgICAgIGxldCB0cnVlTG93ZXJCb3VuZCA9IE1hdGgubWluKHRoaXMuc2xpZGVyTWluLCB0aGlzLnNsaWRlck1heCk7XHJcbiAgICAgIGxldCB0cnVlVXBwZXJCb3VuZCA9IE1hdGgubWF4KHRoaXMuc2xpZGVyTWluLCB0aGlzLnNsaWRlck1heCk7XHJcblxyXG4gICAgICB0aGlzLl9tb2RlbCA9IGAke3RydWVMb3dlckJvdW5kfSAtICR7dHJ1ZVVwcGVyQm91bmR9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb1RleHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jaGVja0JveFRvVGV4dE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gXCI/PSdKJ1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBcIj89J04nXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9TaW1wbGVUZXh0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IFwiSlwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBcIk5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwpIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckRhdGVGaWVsZChkYXRlOiBEYXRlKTogdm9pZCB7XHJcbiAgICBpZiAoZGF0ZSkge1xyXG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5fZm9ybWF0RGF0ZVRvU3RyaW5nKGRhdGUpO1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IGA/PScke2Zvcm1hdHRlZERhdGV9J2A7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yRGF0ZVJhbmdlKGRhdGVzOiBEYXRlW10pOiB2b2lkIHtcclxuICAgIGlmIChkYXRlcykge1xyXG4gICAgICBsZXQgc3RhcnREYXRlID0gZGF0ZXNbMF07XHJcbiAgICAgIGxldCBlbmREYXRlID0gZGF0ZXNbMV07XHJcblxyXG4gICAgICBjb25zdCBzdGFydERhdGVSZXF1ZXN0ID0gc3RhcnREYXRlID8gdGhpcy5fZm9ybWF0RGF0ZVRvU3RyaW5nKHN0YXJ0RGF0ZSkgOiAnJztcclxuICAgICAgY29uc3QgZW5kRGF0ZVJlcXVlc3QgPSBlbmREYXRlID8gdGhpcy5fZm9ybWF0RGF0ZVRvU3RyaW5nKGVuZERhdGUpIDogJyc7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gYD8+PVxcJyR7c3RhcnREYXRlUmVxdWVzdH1cXCcmID88PVxcJyR7ZW5kRGF0ZVJlcXVlc3R9XFwnYDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1hdERhdGVUb1N0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXkgPSBkYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBsZXQgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgbGV0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XHJcbiAgfVxyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vTW9kZWwgcmVhZGluZyBmb3IgYWxsIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBhdmFpbGFibGUvL1xyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckZpbHRlckxpc3QoZmlsdGVyTW9kZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGZpbHRlckxpc3Q6IHN0cmluZ1tdID0gW107XHJcbiAgICBsZXQgaXRlbXNUb0NoZWNrOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgdGhpcy5fdW5jaGVja0FsbCgpO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJNb2RlbDtcclxuXHJcbiAgICBpZiAoZmlsdGVyTW9kZWwgIT09IG51bGwgJiYgZmlsdGVyTW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZmlsdGVyTW9kZWwgPT09ICdzdHJpbmcnICYmIGZpbHRlck1vZGVsLmxlbmd0aCAhPSAwICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBmaWx0ZXJMaXN0ID0gZmlsdGVyTW9kZWwuc3BsaXQoXCIsXCIpXHJcbiAgICAgIGZpbHRlckxpc3QuZm9yRWFjaCgoZmlsdGVyOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpdGVtc1RvQ2hlY2sucHVzaChmaWx0ZXIuc3Vic3RyKDMsIGZpbHRlci5sZW5ndGggLSA0KSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zVG9DaGVjaykge1xyXG4gICAgICAgIGxldCBmaWx0ZXIgPSB0aGlzLmNvbGxlY3Rpb24uZmluZChlbGVtZW50ID0+IGVsZW1lbnQuY29kZS50b1N0cmluZygpID09PSBpdGVtKTtcclxuICAgICAgICBpZiAoZmlsdGVyICE9PSBudWxsICYmIGZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX21vZGVsID0gZmlsdGVyTW9kZWw7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yU2luZ2xlU2VsZWN0TGlzdChzaW5nbGVTZWxlY3RNb2RlbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl91bmNoZWNrQWxsKCk7XHJcbiAgICB0aGlzLl9tb2RlbCA9IHNpbmdsZVNlbGVjdE1vZGVsO1xyXG5cclxuICAgIGlmIChzaW5nbGVTZWxlY3RNb2RlbCAhPT0gbnVsbCAmJiBzaW5nbGVTZWxlY3RNb2RlbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgZmlsdGVyID0gdGhpcy5jb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUudG9TdHJpbmcoKSA9PT0gc2luZ2xlU2VsZWN0TW9kZWwpO1xyXG4gICAgICBpZiAoZmlsdGVyICE9PSBudWxsICYmIGZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZmlsdGVyLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JTdHJpbmdDb2xsZWN0aW9uTGlzdChjb2xsZWN0aW9uTW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5jaGVja0FsbCgpO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBjb2xsZWN0aW9uTW9kZWw7XHJcblxyXG4gICAgaWYgKGNvbGxlY3Rpb25Nb2RlbCAhPT0gbnVsbCAmJiBjb2xsZWN0aW9uTW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YgY29sbGVjdGlvbk1vZGVsLmluZGV4T2Yodmlld01vZGVsLmNvZGUpID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgdmlld01vZGVsLmNoZWNrZWQgPSBjb2xsZWN0aW9uTW9kZWwuaW5kZXhPZih2aWV3TW9kZWwuY29kZS50b1N0cmluZygpKSA+IC0xO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbGxlY3Rpb25Nb2RlbC5pbmRleE9mKHZpZXdNb2RlbC5jb2RlKSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIHZpZXdNb2RlbC5jaGVja2VkID0gY29sbGVjdGlvbk1vZGVsLmluZGV4T2Yodmlld01vZGVsLmNvZGUpID4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KG51bWJlck1vZGVsOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3VuY2hlY2tBbGwoKTtcclxuICAgIHRoaXMuX21vZGVsID0gbnVtYmVyTW9kZWw7XHJcblxyXG4gICAgaWYgKG51bWJlck1vZGVsICE9PSBudWxsICYmIG51bWJlck1vZGVsICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbGxlY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBpdGVtQ29kZTogbnVtYmVyID0gaXRlbS5jb2RlIGFzIG51bWJlcjtcclxuICAgICAgICBjb25zdCBtb2RWYWx1ZSA9IChudW1iZXJNb2RlbCAlICgyICogaXRlbUNvZGUpKTtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSAobW9kVmFsdWUgPj0gaXRlbUNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bmNoZWNrQWxsKCkge1xyXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChtID0+IHtcclxuICAgICAgICBtLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JTbGlkZXJNb2RlKHNsaWRlck1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gc2xpZGVyTW9kZWw7XHJcbiAgICBpZiAoc2xpZGVyTW9kZWwgIT09IHVuZGVmaW5lZCAmJiBzbGlkZXJNb2RlbCAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgc2xpZGVySW5wdXRDb2xsZWN0aW9uID0gc2xpZGVyTW9kZWwuc3BsaXQoJyAtICcpO1xyXG4gICAgICB0aGlzLnNsaWRlck1pbiA9IHBhcnNlSW50KHNsaWRlcklucHV0Q29sbGVjdGlvblswXSk7XHJcbiAgICAgIHRoaXMuc2xpZGVyTWF4ID0gcGFyc2VJbnQoc2xpZGVySW5wdXRDb2xsZWN0aW9uWzFdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyTWluID0gdGhpcy5zbGlkZXJEZWZhdWx0TWluO1xyXG4gICAgICB0aGlzLnNsaWRlck1heCA9IHRoaXMuc2xpZGVyRGVmYXVsdE1heDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckNoZWNrYm94VG9UZXh0KGNoZWNrYm94VG9UZXh0TW9kZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZWwgPSBjaGVja2JveFRvVGV4dE1vZGVsO1xyXG4gICAgaWYgKGNoZWNrYm94VG9UZXh0TW9kZWwgIT09IHVuZGVmaW5lZCAmJiBjaGVja2JveFRvVGV4dE1vZGVsICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IChjaGVja2JveFRvVGV4dE1vZGVsLmluZGV4T2YoJ0onKSA+IC0xKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeShjaGVja2JveFRvQmluYXJ5OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gY2hlY2tib3hUb0JpbmFyeTtcclxuICAgIGlmIChjaGVja2JveFRvQmluYXJ5ICE9PSB1bmRlZmluZWQgJiYgY2hlY2tib3hUb0JpbmFyeSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPSAoY2hlY2tib3hUb0JpbmFyeSA+PSAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yRGF0ZUZpZWxkKGRhdGVGaWVsZE1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIEtlZXAgd2hhdGV2ZXIgY2FtZSBpbiBhcyB0aGUgXCJmaWx0ZXIgdmFsdWVcIiBmb3Igb3V0cHV0c1xyXG4gICAgdGhpcy5fbW9kZWwgPSBkYXRlRmllbGRNb2RlbDtcclxuXHJcbiAgICBpZiAoIWRhdGVGaWVsZE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZpZWxkVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0ZUZpZWxkTW9kZWwgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZpZWxkVmFsdWUgPSBkYXRlRmllbGRNb2RlbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgZGF0ZUZpZWxkTW9kZWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIC8vIEFjY2VwdCBcIj89J2RkLU1NLXl5eXknXCIsIFwiZGQtTU0teXl5eVwiLCBvciBcInl5eXktTU0tZGRcIlxyXG4gICAgICBsZXQgcmF3ID0gZGF0ZUZpZWxkTW9kZWw7XHJcbiAgICAgIGNvbnN0IHdyYXBwZWQgPSByYXcubWF0Y2goL1xcPz0nKFxcZHsyfS1cXGR7Mn0tXFxkezR9KScvKTtcclxuICAgICAgaWYgKHdyYXBwZWQpIHJhdyA9IHdyYXBwZWRbMV07XHJcblxyXG4gICAgICBjb25zdCBkZG1teXl5eSA9IC9eKFxcZHsyfSktKFxcZHsyfSktKFxcZHs0fSkkLztcclxuICAgICAgY29uc3QgeXl5eW1tZGQgPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pJC87XHJcblxyXG4gICAgICBpZiAoZGRtbXl5eXkudGVzdChyYXcpKSB7XHJcbiAgICAgICAgY29uc3QgWywgZGQsIG1tLCB5eXl5XSA9IGRkbW15eXl5LmV4ZWMocmF3KSE7XHJcbiAgICAgICAgdGhpcy5kYXRlRmllbGRWYWx1ZSA9IG5ldyBEYXRlKCt5eXl5LCArbW0gLSAxLCArZGQpO1xyXG4gICAgICB9IGVsc2UgaWYgKHl5eXltbWRkLnRlc3QocmF3KSkge1xyXG4gICAgICAgIGNvbnN0IFssIHl5eXksIG1tLCBkZF0gPSB5eXl5bW1kZC5leGVjKHJhdykhO1xyXG4gICAgICAgIHRoaXMuZGF0ZUZpZWxkVmFsdWUgPSBuZXcgRGF0ZSgreXl5eSwgK21tIC0gMSwgK2RkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGVGaWVsZFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yRGF0ZVJhbmdlRmllbGQoZGF0ZVJhbmdlRmllbGRNb2RlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IGRhdGVSYW5nZUZpZWxkTW9kZWw7XHJcbiAgICBpZiAoZGF0ZVJhbmdlRmllbGRNb2RlbCAhPT0gdW5kZWZpbmVkICYmIGRhdGVSYW5nZUZpZWxkTW9kZWwgIT09IG51bGwpIHtcclxuICAgICAgbGV0IGRhdGVDb2xsZWN0aW9uID0gZGF0ZVJhbmdlRmllbGRNb2RlbC5zcGxpdCgnJicpO1xyXG5cclxuICAgICAgbGV0IHN0YXJ0U3RyaW5nID0gZGF0ZUNvbGxlY3Rpb25bMF0udHJpbSgpLnN1YnN0cig0LCBkYXRlQ29sbGVjdGlvblswXS5sZW5ndGggLSA1KTtcclxuICAgICAgbGV0IGVuZFN0cmluZyA9IGRhdGVDb2xsZWN0aW9uWzFdLnRyaW0oKS5zdWJzdHIoNCwgZGF0ZUNvbGxlY3Rpb25bMV0ubGVuZ3RoIC0gNSk7XHJcblxyXG4gICAgICBsZXQgc3RhcnREYXRlQ29tcG9uZW50cyA9IHN0YXJ0U3RyaW5nLnNwbGl0KCctJyk7XHJcbiAgICAgIGxldCBlbmREYXRlQ29tcG9uZW50cyA9IGVuZFN0cmluZy5zcGxpdCgnLScpO1xyXG5cclxuICAgICAgdGhpcy5kYXRlUmFuZ2VTdGFydCA9IG5ldyBEYXRlKHBhcnNlSW50KHN0YXJ0RGF0ZUNvbXBvbmVudHNbMl0pLCBwYXJzZUludChzdGFydERhdGVDb21wb25lbnRzWzFdKSAtIDEsIHBhcnNlSW50KHN0YXJ0RGF0ZUNvbXBvbmVudHNbMF0pKTtcclxuICAgICAgdGhpcy5kYXRlUmFuZ2VFbmQgPSBuZXcgRGF0ZShwYXJzZUludChlbmREYXRlQ29tcG9uZW50c1syXSksIHBhcnNlSW50KGVuZERhdGVDb21wb25lbnRzWzFdKSAtIDEsIHBhcnNlSW50KGVuZERhdGVDb21wb25lbnRzWzBdKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZVN0YXJ0ID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZUVuZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19