@huntsman-cancer-institute/input 15.2.0 → 15.4.0

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.
@@ -339,7 +339,7 @@ DropdownSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
339
339
  (keyup)="onKeyUp($event)"
340
340
  (keydown)="onKeyDown($event)"
341
341
  (keypress)="onKeyPress($event)"
342
- (click)="showResults()" *ngIf="!disabled" />
342
+ (click)="showResults()" *ngIf="!disabled" attr.aria-label="{{getPlaceholder()}}"/>
343
343
  </li>
344
344
  </ul>
345
345
  <span class="icon-drop-menu" *ngIf="inputState===0" (click)="showResults()">
@@ -394,7 +394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
394
394
  (keyup)="onKeyUp($event)"
395
395
  (keydown)="onKeyDown($event)"
396
396
  (keypress)="onKeyPress($event)"
397
- (click)="showResults()" *ngIf="!disabled" />
397
+ (click)="showResults()" *ngIf="!disabled" attr.aria-label="{{getPlaceholder()}}"/>
398
398
  </li>
399
399
  </ul>
400
400
  <span class="icon-drop-menu" *ngIf="inputState===0" (click)="showResults()">
@@ -456,4 +456,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
456
456
  type: ViewChild,
457
457
  args: ["termInput", { static: false }]
458
458
  }] } });
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBZSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekcsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7OztBQUVwQyxNQUFNLGNBQWMsR0FBRztJQUNyQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBMER0QixNQUFNLE9BQU8sdUJBQXVCO0lBeERwQztRQTBERSxxQkFBZ0IsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUM3Ryxt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LE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRWdDLE9BQU87c0JBQTdDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFZWSxTQUFTO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0Ryb3Bkb3duU2VsZWN0UmVzdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9kcm9wZG93bi1zZWxlY3QtcmVzdWx0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NlbGVjdEl0ZW0sIEtFWV9DT0RFfSBmcm9tIFwiLi9zZWxlY3QtaXRlbVwiO1xyXG5pbXBvcnQge01lc3NhZ2VzfSBmcm9tIFwiLi9tZXNzYWdlc1wiO1xyXG5cclxuY29uc3QgVkFMVUVfQUNDRVNTT1IgPSB7XHJcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25TZWxlY3RDb21wb25lbnQpLFxyXG4gIG11bHRpOiB0cnVlXHJcbn07XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge307XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktZHJvcGRvd24tc2VsZWN0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtY29udGFpbmVyXCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbY2xhc3Muc2ltcGxlLXNlbGVjdGlvbl09XCIhbXVsdGlwbGVcIlxyXG4gICAgICAgICAgW2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbl09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICBbY2xhc3Muc2VhcmNoLWZvY3VzZWRdPVwic2VhcmNoRm9jdXNlZFwiXHJcbiAgICAgICAgICBbY2xhc3MucmVhZG9ubHldPVwiZGlzYWJsZWRcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWFyY2hGb2N1c2VkIHx8IG11bHRpcGxlXCI+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2VsZWN0LXNlbGVjdGVkIGxhYmVsIGxhYmVsLWluZm9cIiBbY2xhc3MubGFiZWxdPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5sYWJlbC1pbmZvXT1cIm11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtaXRlbS10ZXh0XCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJzZWxlY3Qtc2VsZWN0aW9uLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZGVsZXRlSWNvblwiIFtjbGFzcy50ZXh0LWluZm9dPVwiIW11bHRpcGxlXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bGkgY2xhc3M9XCJzZWxlY3QtaW5wdXRcIj5cclxuICAgICAgICAgIDxpbnB1dCAjdGVybUlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRlcm1cIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRlYWJsZV09XCJpc0hpZGVhYmxlKClcIlxyXG4gICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRJbnB1dFdpZHRoKClcIlxyXG4gICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZXN1bHRzKClcIiAqbmdJZj1cIiFkaXNhYmxlZFwiIC8+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWRyb3AtbWVudVwiICpuZ0lmPVwiaW5wdXRTdGF0ZT09PTBcIiAoY2xpY2spPVwic2hvd1Jlc3VsdHMoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWZ0ZXJcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdHMtY29udGFpbmVyXCIgKm5nSWY9XCJyZXN1bHRzVmlzaWJsZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0cy1tc2dcIiAqbmdJZj1cImxpc3RlZERhdGEgJiYgKGxpc3RlZERhdGEubGVuZ3RoICsgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIDwgcmVzdWx0c0NvdW50XCI+XHJcbiAgICAgICAgICB7e2dldENvdW50TWVzc2FnZSgpfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHRzLW1zZyBuby1yZXN1bHRzLW1zZ1wiICpuZ0lmPVwic2VhcmNoRm9jdXNlZCAmJiBsaXN0ZWREYXRhICYmIGxpc3RlZERhdGEubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICB7e21lc3NhZ2VzICYmIG1lc3NhZ2VzLm5vUmVzdWx0c01zZyA/IG1lc3NhZ2VzLm5vUmVzdWx0c01zZyA6IE5PX1JFU1VMVFNfTVNHfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGhjaS1kcm9wZG93bi1zZWxlY3QtcmVzdWx0ICNyZXN1bHRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwibGlzdGVkRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWRFdmVudCk9XCJvbkl0ZW1TZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlUmVmXT1cInRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaEZvY3VzZWRdPVwic2VhcmNoRm9jdXNlZFwiPjwvaGNpLWRyb3Bkb3duLXNlbGVjdC1yZXN1bHQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtWQUxVRV9BQ0NFU1NPUl0sXHJcbiAgaG9zdDoge2NsYXNzOiBcImZsZXgtZ3Jvdy0xXCJ9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93blNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yICB7XHJcblxyXG4gIE1PUkVfUkVTVUxUU19NU0cgPSBcIlNob3dpbmcgXCIgKyBNZXNzYWdlcy5QQVJUSUFMX0NPVU5UX1ZBUiArIFwiIG9mIFwiICsgTWVzc2FnZXMuVE9UQUxfQ09VTlRfVkFSICsgXCIgcmVzdWx0cy5cIjtcclxuICBOT19SRVNVTFRTX01TRyA9IFwiTm8gcmVzdWx0cyBmb3VuZFwiO1xyXG5cclxuICBASW5wdXQoKSBtZXNzYWdlczogTWVzc2FnZXMgPSB7XHJcbiAgICBtb3JlUmVzdWx0c01zZzogdGhpcy5NT1JFX1JFU1VMVFNfTVNHLFxyXG4gICAgbm9SZXN1bHRzTXNnOiB0aGlzLk5PX1JFU1VMVFNfTVNHXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgZGF0YVByb3ZpZGVyOiAoaXRlbTogc3RyaW5nLCBzZWxlY3RlZD86IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBzZWxlY3RlZFByb3ZpZGVyOiAoaWRzOiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgc2VsZWN0SXRlbUFkYXB0ZXI6IChlbnRpdHk6IGFueSkgPT4gU2VsZWN0SXRlbTtcclxuICBASW5wdXQoKSByZWZlcmVuY2VNb2RlOiBcImlkXCIgfCBcImVudGl0eVwiID0gXCJpZFwiO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJcIjtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpZW50TW9kZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZUljb24gPSBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICBASW5wdXQoKSBpbnB1dFN0YXRlID0gMjsgLy8gc2VsZWN0SWNvbiBjb250cm9sbGVyOiAwLT53aXRoIHNlbGVjdEljb24gMi0+d2l0aG91dCBzZWxlY3RJY29uXHJcbiAgQElucHV0KCkgcmVzdWx0c0NvdW50O1xyXG4gIEBJbnB1dCgpIHNlYXJjaERlbGF5ID0gMTAwO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0OiBFdmVudEVtaXR0ZXI8U2VsZWN0SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+KCk7XHJcbiAgQE91dHB1dCgpIHJlbW92ZTogRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwicmVzdWx0c1wiLCB7c3RhdGljOiBmYWxzZX0pIHJlc3VsdHM6IERyb3Bkb3duU2VsZWN0UmVzdWx0Q29tcG9uZW50O1xyXG5cclxuICBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGVybSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBzZWFyY2hGb2N1c2VkID0gZmFsc2U7XHJcbiAgcmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICBsaXN0ZWREYXRhOiBTZWxlY3RJdGVtW107XHJcbiAgbW9kaWZpZWREYXRhOiBTZWxlY3RJdGVtW107XHJcbiAgc2VsZWN0ZWRJdGVtczogU2VsZWN0SXRlbVtdID0gW107XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJ0ZXJtSW5wdXRcIiwge3N0YXRpYzogZmFsc2V9KSBwcml2YXRlIHRlcm1JbnB1dDtcclxuXHJcbiAgcHJpdmF0ZSBwbGFjZWhvbGRlclNlbGVjdGVkID0gXCJcIjtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb0NoYW5nZXNBbmRMb2FkRGF0YUZyb21PYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1TZWxlY3RlZChpdGVtOiBTZWxlY3RJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxpc3RlZERhdGEuaW5kZXhPZihpdGVtLCAwKTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLmxpc3RlZERhdGEuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmJ1aWxkVmFsdWUoKSk7XHJcbiAgICB0aGlzLnRlcm0ucGF0Y2hWYWx1ZShcIlwiLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmZvY3VzSW5wdXQoKSwgMSk7XHJcbiAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdC5lbWl0KGl0ZW0pO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IGl0ZW0udGV4dDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzSW5wdXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy50ZXJtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSAhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoc2VsZWN0ZWRWYWx1ZXM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHNlbGVjdGVkVmFsdWVzKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlZmVyZW5jZU1vZGUgPT09IFwiaWRcIikge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21JZHMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q291bnRNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbXNnID0gdGhpcy5tZXNzYWdlcyAmJiB0aGlzLm1lc3NhZ2VzLm1vcmVSZXN1bHRzTXNnID8gdGhpcy5tZXNzYWdlcy5tb3JlUmVzdWx0c01zZyA6IHRoaXMuTU9SRV9SRVNVTFRTX01TRztcclxuICAgIG1zZyA9IG1zZy5yZXBsYWNlKE1lc3NhZ2VzLlBBUlRJQUxfQ09VTlRfVkFSLCBTdHJpbmcodGhpcy5saXN0ZWREYXRhLmxlbmd0aCkpO1xyXG4gICAgbXNnID0gbXNnLnJlcGxhY2UoTWVzc2FnZXMuVE9UQUxfQ09VTlRfVkFSLCBTdHJpbmcodGhpcy5yZXN1bHRzQ291bnQgLSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSk7XHJcbiAgICByZXR1cm4gbXNnO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICByZW1vdmVJdGVtKGl0ZW06IFNlbGVjdEl0ZW0pIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmluZGV4T2YoaXRlbSwgMCk7XHJcblxyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuYnVpbGRWYWx1ZSgpKTtcclxuICAgIHRoaXMucmVtb3ZlLmVtaXQoaXRlbSk7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgOiB0aGlzLnBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRXaWR0aCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VhcmNoRW1wdHkgPSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwICYmICh0aGlzLnRlcm0udmFsdWUgPT09IG51bGwgfHwgdGhpcy50ZXJtLnZhbHVlLmxlbmd0aCA9PT0gMCk7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLnRlcm0udmFsdWUgPT09IG51bGwgPyAwIDogdGhpcy50ZXJtLnZhbHVlLmxlbmd0aDtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICByZXR1cm4gXCIxMDAlXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gc2VhcmNoRW1wdHkgPyBcIjEwMCVcIiA6ICgxICsgbGVuZ3RoICogLjYpICsgXCJlbVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNIaWRlYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgIT09IFwiXCI7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpIHtcclxuICAgIHRoaXMudGVybS5wYXRjaFZhbHVlKFwiXCIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIG9uS2V5VXAoZXY6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlc3VsdHMpIHtcclxuICAgICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkRPV05fQVJST1cpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuYWN0aXZlTmV4dCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLlVQX0FSUk9XKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLmFjdGl2ZVByZXZpb3VzKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuc2VsZWN0Q3VycmVudEl0ZW0oKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaW5wdXRTdGF0ZSA9PT0gMCkge1xyXG4gICAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5FTlRFUiB8fCBldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ET1dOX0FSUk9XKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSZXN1bHRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZXY6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlc3VsdHMpIHtcclxuICAgICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLlRBQikge1xyXG4gICAgICAgIHRoaXMucmVzdWx0cy5zZWxlY3RDdXJyZW50SXRlbSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkRFTEVURSkge1xyXG4gICAgICBpZiAoKCF0aGlzLnRlcm0udmFsdWUgfHwgdGhpcy50ZXJtLnZhbHVlLmxlbmd0aCA9PT0gMCkgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUl0ZW0odGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5UHJlc3MoZXY6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5FTlRFUikge1xyXG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd1Jlc3VsdHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy50ZXJtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVRvUmVzdWx0cyhvZihcIlwiKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSAhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZXJtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0NoYW5nZXNBbmRMb2FkRGF0YUZyb21PYnNlcnZhYmxlKCkge1xyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMudGVybS52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuc2VhcmNoRGVsYXkpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHMob2JzZXJ2YWJsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvUmVzdWx0cyhvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPHN0cmluZz4pOiB2b2lkIHtcclxuICAgIG9ic2VydmFibGUucGlwZShcclxuICAgICAgdGFwKCgpID0+IHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZSksXHJcbiAgICAgIGZpbHRlcigodGVybSkgPT4gdGVybS5sZW5ndGggPj0gdGhpcy5pbnB1dFN0YXRlKSxcclxuICAgICAgc3dpdGNoTWFwKHRlcm0gPT4gdGhpcy5sb2FkRGF0YUZyb21PYnNlcnZhYmxlKHRlcm0pKSxcclxuICAgICAgbWFwKGl0ZW1zID0+IGl0ZW1zLmZpbHRlcihpdGVtID0+ICEodGhpcy5tdWx0aXBsZSAmJiB0aGlzLmFscmVhZHlTZWxlY3RlZChpdGVtKSkpKSxcclxuICAgICAgdGFwKCgpID0+IHRoaXMucmVzdWx0c1Zpc2libGUgPSB0aGlzLnNlYXJjaEZvY3VzZWQpXHJcbiAgICApLnN1YnNjcmliZSgoaXRlbXMpID0+IHRoaXMubGlzdGVkRGF0YSA9IGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZERhdGFGcm9tT2JzZXJ2YWJsZSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xpZW50TW9kZSA/IHRoaXMuZmV0Y2hBbmRmaWx0ZXJMb2NhbERhdGEodGVybSkgOiB0aGlzLmZldGNoRGF0YSh0ZXJtKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWxyZWFkeVNlbGVjdGVkKGl0ZW06IFNlbGVjdEl0ZW0pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKHNlbGVjdGVkSXRlbSA9PiB7XHJcbiAgICAgIGlmIChzZWxlY3RlZEl0ZW0uaWQgPT09IGl0ZW0uaWQpIHtcclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoQW5kZmlsdGVyTG9jYWxEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICBpZiAoIXRoaXMubW9kaWZpZWREYXRhKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZldGNoRGF0YShcIlwiKS5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKChpdGVtcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tb2RpZmllZERhdGEgPSBpdGVtcztcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlckxvY2FsRGF0YSh0ZXJtKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyTG9jYWxEYXRhKHRlcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaERhdGEodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiB0aGlzXHJcbiAgICAgIC5kYXRhUHJvdmlkZXIodGVybSwgdGhpcy5idWlsZFZhbHVlKCkpXHJcbiAgICAgIC5waXBlKG1hcCgoaXRlbXM6IGFueVtdKSA9PiB0aGlzLmFkYXB0SXRlbXMoaXRlbXMpKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIG9mKHRoaXMubW9kaWZpZWREYXRhLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5jb250YWluc1RleHQoaXRlbSwgdGVybSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29udGFpbnNUZXh0KGl0ZW0sIHRlcm06IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGl0ZW0udGV4dC50b1VwcGVyQ2FzZSgpLmluZGV4T2YodGVybS50b1VwcGVyQ2FzZSgpKSAhPT0gLTE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkYXB0SXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0SXRlbVtdIHtcclxuICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW1zID0gW107XHJcbiAgICBpdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuc2VsZWN0SXRlbUFkYXB0ZXIoaXRlbSkpXHJcbiAgICAgIC5mb3JFYWNoKChzZWxlY3RJdGVtKSA9PiBjb252ZXJ0ZWRJdGVtcy5wdXNoKHNlbGVjdEl0ZW0pKTtcclxuICAgIHJldHVybiBjb252ZXJ0ZWRJdGVtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRWYWx1ZSgpIHtcclxuICAgIHJldHVybiBcImlkXCIgPT09IHRoaXMucmVmZXJlbmNlTW9kZSA/IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKSA6IHRoaXMuZ2V0RW50aXRpZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRJZHMoKTogYW55IHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGNvbnN0IGlkczogYW55W10gPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiBpZHMucHVzaChpdGVtLmlkKSk7XHJcbiAgICAgIHJldHVybiBpZHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCA/IG51bGwgOiB0aGlzLnNlbGVjdGVkSXRlbXNbMF0uaWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVudGl0aWVzKCk6IGFueVtdIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0aWVzID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGVudGl0aWVzLnB1c2goaXRlbS5lbnRpdHkpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGVudGl0aWVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW1zWzBdLmVudGl0eTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdEl0ZW0gPSB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW3NlbGVjdEl0ZW1dO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBzZWxlY3RJdGVtLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKGVudGl0eSk7XHJcbiAgICAgIGNvbnN0IGlkcyA9IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKTtcclxuXHJcbiAgICAgIGlmIChpZHMuaW5kZXhPZihpdGVtLmlkKSA9PT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlSXRlbXNGcm9tSWRzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlTXVsdGlwbGVXaXRoSWRzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlU2luZ2xlV2l0aElkKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTXVsdGlwbGVXaXRoSWRzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRQcm92aWRlciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IHVuaXF1ZUlkcyA9IFtdO1xyXG4gICAgICBzZWxlY3RlZFZhbHVlcy5mb3JFYWNoKChpZCkgPT4ge1xyXG4gICAgICAgIGlmICh1bmlxdWVJZHMuaW5kZXhPZihpZCkgPT09IC0xKSB7XHJcbiAgICAgICAgICB1bmlxdWVJZHMucHVzaChpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlcih1bmlxdWVJZHMpLnN1YnNjcmliZSgoaXRlbXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gaXRlbXMubWFwKHRoaXMuc2VsZWN0SXRlbUFkYXB0ZXIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2luZ2xlV2l0aElkKGlkOiBhbnkpIHtcclxuICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRQcm92aWRlciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlcihbaWRdKS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdEl0ZW0gPSB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW3NlbGVjdEl0ZW1dO1xyXG4gICAgICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gc2VsZWN0SXRlbS50ZXh0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBZSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekcsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7OztBQUVwQyxNQUFNLGNBQWMsR0FBRztJQUNyQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBMER0QixNQUFNLE9BQU8sdUJBQXVCO0lBeERwQztRQTBERSxxQkFBZ0IsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUM3RyxtQkFBYyxHQUFHLGtCQUFrQixDQUFDO1FBRTNCLGFBQVEsR0FBYTtZQUM1QixjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDbEMsQ0FBQztRQUtPLGtCQUFhLEdBQW9CLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcscUJBQXFCLENBQUM7UUFDbkMsZUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLGtFQUFrRTtRQUVsRixnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUVqQixXQUFNLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFDbEUsV0FBTSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBSTVFLHNCQUFpQixHQUFlLElBQUksQ0FBQztRQUNyQyxxQkFBZ0IsR0FBcUIsSUFBSSxDQUFDO1FBRTFDLFNBQUksR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsa0JBQWEsR0FBaUIsRUFBRSxDQUFDO1FBSXpCLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztLQXFUbEM7SUFuVEMsZUFBZTtRQUNiLElBQUksQ0FBQywyQ0FBMkMsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBZ0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbEM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQzdDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxjQUFtQjtRQUM1QixJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO2dCQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDM0M7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0csR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBZ0I7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDckYsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFNO1lBQ0wsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDM0I7aUJBQU0sSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxRQUFRLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDL0I7aUJBQU0sSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUNsQztTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO2dCQUN6QixJQUFJLEVBQUUsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxVQUFVLEVBQUU7b0JBQ3ZFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDcEI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFpQjtRQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUNsQztTQUNGO1FBRUQsSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbEMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEU7U0FDRjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsRUFBaUI7UUFDMUIsSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDakMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTywyQ0FBMkM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUM5QixvQkFBb0IsRUFBRSxDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUE4QjtRQUN2RCxVQUFVLENBQUMsSUFBSSxDQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxFQUN0QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUNoRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDcEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FDcEQsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQVk7UUFDekMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFnQjtRQUN0QyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxZQUFZLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLHVCQUF1QixDQUFDLElBQVk7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUIsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLElBQVk7UUFDNUIsT0FBTyxJQUFJO2FBQ1IsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBWTtRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBWTtRQUM3QixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzlDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xGLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixNQUFNLEdBQUcsR0FBVSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sR0FBRyxDQUFDO1NBQ1o7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzFFO0lBQ0gsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDOUU7SUFDSCxDQUFDO0lBRU8seUJBQXlCLENBQUMsY0FBbUI7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqRDthQUFNO1lBQ0wsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztTQUM1QztJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxjQUFtQjtRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUVsQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMvQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLGNBQW1CO1FBQzlDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxjQUFtQjtRQUMvQyxJQUFJLGNBQWMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUN2RSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDckIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUM1QixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEVBQU87UUFDaEMsSUFBSSxFQUFFLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtnQkFDckQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzdDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O3FIQTVWVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixzZ0JBSHZCLENBQUMsY0FBYyxDQUFDLHVOQW5EakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RUOzRGQUlVLHVCQUF1QjtrQkF4RG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtEVDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzNCLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUM7aUJBQzdCOzhCQU1VLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRWdDLE9BQU87c0JBQTdDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFZWSxTQUFTO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0Ryb3Bkb3duU2VsZWN0UmVzdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9kcm9wZG93bi1zZWxlY3QtcmVzdWx0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NlbGVjdEl0ZW0sIEtFWV9DT0RFfSBmcm9tIFwiLi9zZWxlY3QtaXRlbVwiO1xyXG5pbXBvcnQge01lc3NhZ2VzfSBmcm9tIFwiLi9tZXNzYWdlc1wiO1xyXG5cclxuY29uc3QgVkFMVUVfQUNDRVNTT1IgPSB7XHJcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25TZWxlY3RDb21wb25lbnQpLFxyXG4gIG11bHRpOiB0cnVlXHJcbn07XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge307XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktZHJvcGRvd24tc2VsZWN0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtY29udGFpbmVyXCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbY2xhc3Muc2ltcGxlLXNlbGVjdGlvbl09XCIhbXVsdGlwbGVcIlxyXG4gICAgICAgICAgW2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbl09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICBbY2xhc3Muc2VhcmNoLWZvY3VzZWRdPVwic2VhcmNoRm9jdXNlZFwiXHJcbiAgICAgICAgICBbY2xhc3MucmVhZG9ubHldPVwiZGlzYWJsZWRcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWFyY2hGb2N1c2VkIHx8IG11bHRpcGxlXCI+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2VsZWN0LXNlbGVjdGVkIGxhYmVsIGxhYmVsLWluZm9cIiBbY2xhc3MubGFiZWxdPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5sYWJlbC1pbmZvXT1cIm11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtaXRlbS10ZXh0XCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJzZWxlY3Qtc2VsZWN0aW9uLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZGVsZXRlSWNvblwiIFtjbGFzcy50ZXh0LWluZm9dPVwiIW11bHRpcGxlXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bGkgY2xhc3M9XCJzZWxlY3QtaW5wdXRcIj5cclxuICAgICAgICAgIDxpbnB1dCAjdGVybUlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRlcm1cIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRlYWJsZV09XCJpc0hpZGVhYmxlKClcIlxyXG4gICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRJbnB1dFdpZHRoKClcIlxyXG4gICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZXN1bHRzKClcIiAqbmdJZj1cIiFkaXNhYmxlZFwiIGF0dHIuYXJpYS1sYWJlbD1cInt7Z2V0UGxhY2Vob2xkZXIoKX19XCIvPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1kcm9wLW1lbnVcIiAqbmdJZj1cImlucHV0U3RhdGU9PT0wXCIgKGNsaWNrKT1cInNob3dSZXN1bHRzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImFmdGVyXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRzLWNvbnRhaW5lclwiICpuZ0lmPVwicmVzdWx0c1Zpc2libGVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdHMtbXNnXCIgKm5nSWY9XCJsaXN0ZWREYXRhICYmIChsaXN0ZWREYXRhLmxlbmd0aCArIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSA8IHJlc3VsdHNDb3VudFwiPlxyXG4gICAgICAgICAge3tnZXRDb3VudE1lc3NhZ2UoKX19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0cy1tc2cgbm8tcmVzdWx0cy1tc2dcIiAqbmdJZj1cInNlYXJjaEZvY3VzZWQgJiYgbGlzdGVkRGF0YSAmJiBsaXN0ZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAge3ttZXNzYWdlcyAmJiBtZXNzYWdlcy5ub1Jlc3VsdHNNc2cgPyBtZXNzYWdlcy5ub1Jlc3VsdHNNc2cgOiBOT19SRVNVTFRTX01TR319XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxoY2ktZHJvcGRvd24tc2VsZWN0LXJlc3VsdCAjcmVzdWx0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImxpc3RlZERhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkRXZlbnQpPVwib25JdGVtU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVJlZl09XCJ0ZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hGb2N1c2VkXT1cInNlYXJjaEZvY3VzZWRcIj48L2hjaS1kcm9wZG93bi1zZWxlY3QtcmVzdWx0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbVkFMVUVfQUNDRVNTT1JdLFxyXG4gIGhvc3Q6IHtjbGFzczogXCJmbGV4LWdyb3ctMVwifVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciAge1xyXG5cclxuICBNT1JFX1JFU1VMVFNfTVNHID0gXCJTaG93aW5nIFwiICsgTWVzc2FnZXMuUEFSVElBTF9DT1VOVF9WQVIgKyBcIiBvZiBcIiArIE1lc3NhZ2VzLlRPVEFMX0NPVU5UX1ZBUiArIFwiIHJlc3VsdHMuXCI7XHJcbiAgTk9fUkVTVUxUU19NU0cgPSBcIk5vIHJlc3VsdHMgZm91bmRcIjtcclxuXHJcbiAgQElucHV0KCkgbWVzc2FnZXM6IE1lc3NhZ2VzID0ge1xyXG4gICAgbW9yZVJlc3VsdHNNc2c6IHRoaXMuTU9SRV9SRVNVTFRTX01TRyxcclxuICAgIG5vUmVzdWx0c01zZzogdGhpcy5OT19SRVNVTFRTX01TR1xyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgpIGRhdGFQcm92aWRlcjogKGl0ZW06IHN0cmluZywgc2VsZWN0ZWQ/OiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRQcm92aWRlcjogKGlkczogYW55W10pID0+IE9ic2VydmFibGU8YW55W10+O1xyXG4gIEBJbnB1dCgpIHNlbGVjdEl0ZW1BZGFwdGVyOiAoZW50aXR5OiBhbnkpID0+IFNlbGVjdEl0ZW07XHJcbiAgQElucHV0KCkgcmVmZXJlbmNlTW9kZTogXCJpZFwiIHwgXCJlbnRpdHlcIiA9IFwiaWRcIjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsaWVudE1vZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWxldGVJY29uID0gXCJmYXMgZmEtdGltZXMtY2lyY2xlXCI7XHJcbiAgQElucHV0KCkgaW5wdXRTdGF0ZSA9IDI7IC8vIHNlbGVjdEljb24gY29udHJvbGxlcjogMC0+d2l0aCBzZWxlY3RJY29uIDItPndpdGhvdXQgc2VsZWN0SWNvblxyXG4gIEBJbnB1dCgpIHJlc3VsdHNDb3VudDtcclxuICBASW5wdXQoKSBzZWFyY2hEZWxheSA9IDEwMDtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdDogRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmU6IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0SXRlbT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInJlc3VsdHNcIiwge3N0YXRpYzogZmFsc2V9KSByZXN1bHRzOiBEcm9wZG93blNlbGVjdFJlc3VsdENvbXBvbmVudDtcclxuXHJcbiAgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHRlcm0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgc2VhcmNoRm9jdXNlZCA9IGZhbHNlO1xyXG4gIHJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgbGlzdGVkRGF0YTogU2VsZWN0SXRlbVtdO1xyXG4gIG1vZGlmaWVkRGF0YTogU2VsZWN0SXRlbVtdO1xyXG4gIHNlbGVjdGVkSXRlbXM6IFNlbGVjdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKFwidGVybUlucHV0XCIsIHtzdGF0aWM6IGZhbHNlfSkgcHJpdmF0ZSB0ZXJtSW5wdXQ7XHJcblxyXG4gIHByaXZhdGUgcGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9DaGFuZ2VzQW5kTG9hZERhdGFGcm9tT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoaXRlbTogU2VsZWN0SXRlbSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZWREYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5saXN0ZWREYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5idWlsZFZhbHVlKCkpO1xyXG4gICAgdGhpcy50ZXJtLnBhdGNoVmFsdWUoXCJcIiwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2N1c0lucHV0KCksIDEpO1xyXG4gICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3QuZW1pdChpdGVtKTtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBpdGVtLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1c0lucHV0KCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHNlbGVjdGVkVmFsdWVzOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcykge1xyXG4gICAgICBpZiAodGhpcy5yZWZlcmVuY2VNb2RlID09PSBcImlkXCIpIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlSXRlbXNGcm9tSWRzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlSXRlbXNGcm9tRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBcIlwiO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvdW50TWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1zZyA9IHRoaXMubWVzc2FnZXMgJiYgdGhpcy5tZXNzYWdlcy5tb3JlUmVzdWx0c01zZyA/IHRoaXMubWVzc2FnZXMubW9yZVJlc3VsdHNNc2cgOiB0aGlzLk1PUkVfUkVTVUxUU19NU0c7XHJcbiAgICBtc2cgPSBtc2cucmVwbGFjZShNZXNzYWdlcy5QQVJUSUFMX0NPVU5UX1ZBUiwgU3RyaW5nKHRoaXMubGlzdGVkRGF0YS5sZW5ndGgpKTtcclxuICAgIG1zZyA9IG1zZy5yZXBsYWNlKE1lc3NhZ2VzLlRPVEFMX0NPVU5UX1ZBUiwgU3RyaW5nKHRoaXMucmVzdWx0c0NvdW50IC0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCkpO1xyXG4gICAgcmV0dXJuIG1zZztcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbShpdGVtOiBTZWxlY3RJdGVtKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGl0ZW0sIDApO1xyXG5cclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmJ1aWxkVmFsdWUoKSk7XHJcbiAgICB0aGlzLnJlbW92ZS5lbWl0KGl0ZW0pO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwID8gdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkIDogdGhpcy5wbGFjZWhvbGRlcjtcclxuICB9XHJcblxyXG4gIGdldElucHV0V2lkdGgoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlYXJjaEVtcHR5ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCAmJiAodGhpcy50ZXJtLnZhbHVlID09PSBudWxsIHx8IHRoaXMudGVybS52YWx1ZS5sZW5ndGggPT09IDApO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy50ZXJtLnZhbHVlID09PSBudWxsID8gMCA6IHRoaXMudGVybS52YWx1ZS5sZW5ndGg7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgcmV0dXJuIFwiMTAwJVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHNlYXJjaEVtcHR5ID8gXCIxMDAlXCIgOiAoMSArIGxlbmd0aCAqIC42KSArIFwiZW1cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSGlkZWFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkICE9PSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cygpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLnRlcm0ucGF0Y2hWYWx1ZShcIlwiLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbktleVVwKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ET1dOX0FSUk9XKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLmFjdGl2ZU5leHQoKTtcclxuICAgICAgfSBlbHNlIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5VUF9BUlJPVykge1xyXG4gICAgICAgIHRoaXMucmVzdWx0cy5hY3RpdmVQcmV2aW91cygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkVOVEVSKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLnNlbGVjdEN1cnJlbnRJdGVtKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0U3RhdGUgPT09IDApIHtcclxuICAgICAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIgfHwgZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRE9XTl9BUlJPVykge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVzdWx0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5UQUIpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuc2VsZWN0Q3VycmVudEl0ZW0oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ERUxFVEUpIHtcclxuICAgICAgaWYgKCghdGhpcy50ZXJtLnZhbHVlIHx8IHRoaXMudGVybS52YWx1ZS5sZW5ndGggPT09IDApICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktleVByZXNzKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIpIHtcclxuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dSZXN1bHRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHMob2YoXCJcIikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9DaGFuZ2VzQW5kTG9hZERhdGFGcm9tT2JzZXJ2YWJsZSgpIHtcclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLnRlcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLnNlYXJjaERlbGF5KSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9SZXN1bHRzKG9ic2VydmFibGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1Jlc3VsdHMob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICBvYnNlcnZhYmxlLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2UpLFxyXG4gICAgICBmaWx0ZXIoKHRlcm0pID0+IHRlcm0ubGVuZ3RoID49IHRoaXMuaW5wdXRTdGF0ZSksXHJcbiAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubG9hZERhdGFGcm9tT2JzZXJ2YWJsZSh0ZXJtKSksXHJcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5hbHJlYWR5U2VsZWN0ZWQoaXRlbSkpKSksXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gdGhpcy5zZWFyY2hGb2N1c2VkKVxyXG4gICAgKS5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB0aGlzLmxpc3RlZERhdGEgPSBpdGVtcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWREYXRhRnJvbU9ic2VydmFibGUodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudE1vZGUgPyB0aGlzLmZldGNoQW5kZmlsdGVyTG9jYWxEYXRhKHRlcm0pIDogdGhpcy5mZXRjaERhdGEodGVybSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFscmVhZHlTZWxlY3RlZChpdGVtOiBTZWxlY3RJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChzZWxlY3RlZEl0ZW0gPT4ge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtLmlkID09PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEFuZGZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgaWYgKCF0aGlzLm1vZGlmaWVkRGF0YSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaERhdGEoXCJcIikucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoaXRlbXMpID0+IHtcclxuICAgICAgICAgIHRoaXMubW9kaWZpZWREYXRhID0gaXRlbXM7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJMb2NhbERhdGEodGVybSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlckxvY2FsRGF0YSh0ZXJtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpc1xyXG4gICAgICAuZGF0YVByb3ZpZGVyKHRlcm0sIHRoaXMuYnVpbGRWYWx1ZSgpKVxyXG4gICAgICAucGlwZShtYXAoKGl0ZW1zOiBhbnlbXSkgPT4gdGhpcy5hZGFwdEl0ZW1zKGl0ZW1zKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJMb2NhbERhdGEodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiBvZih0aGlzLm1vZGlmaWVkRGF0YS5maWx0ZXIoKGl0ZW0pID0+IHRoaXMuY29udGFpbnNUZXh0KGl0ZW0sIHRlcm0pKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnRhaW5zVGV4dChpdGVtLCB0ZXJtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBpdGVtLnRleHQudG9VcHBlckNhc2UoKS5pbmRleE9mKHRlcm0udG9VcHBlckNhc2UoKSkgIT09IC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGFwdEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdEl0ZW1bXSB7XHJcbiAgICBjb25zdCBjb252ZXJ0ZWRJdGVtcyA9IFtdO1xyXG4gICAgaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKGl0ZW0pKVxyXG4gICAgICAuZm9yRWFjaCgoc2VsZWN0SXRlbSkgPT4gY29udmVydGVkSXRlbXMucHVzaChzZWxlY3RJdGVtKSk7XHJcbiAgICByZXR1cm4gY29udmVydGVkSXRlbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gXCJpZFwiID09PSB0aGlzLnJlZmVyZW5jZU1vZGUgPyB0aGlzLmdldFNlbGVjdGVkSWRzKCkgOiB0aGlzLmdldEVudGl0aWVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdGVkSWRzKCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBjb25zdCBpZHM6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaWRzLnB1c2goaXRlbS5pZCkpO1xyXG4gICAgICByZXR1cm4gaWRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW1zWzBdLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdGllcygpOiBhbnlbXSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBjb25zdCBlbnRpdGllcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBlbnRpdGllcy5wdXNoKGl0ZW0uZW50aXR5KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBlbnRpdGllcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwID8gbnVsbCA6IHRoaXMuc2VsZWN0ZWRJdGVtc1swXS5lbnRpdHk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlSXRlbXNGcm9tRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5oYW5kbGVNdWx0aXBsZVdpdGhFbnRpdGllcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWxlY3RJdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtzZWxlY3RJdGVtXTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gc2VsZWN0SXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aXBsZVdpdGhFbnRpdGllcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIHNlbGVjdGVkVmFsdWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihlbnRpdHkpO1xyXG4gICAgICBjb25zdCBpZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XHJcblxyXG4gICAgICBpZiAoaWRzLmluZGV4T2YoaXRlbS5pZCkgPT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUl0ZW1zRnJvbUlkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZVdpdGhJZChzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB1bmlxdWVJZHMgPSBbXTtcclxuICAgICAgc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICBpZiAodW5pcXVlSWRzLmluZGV4T2YoaWQpID09PSAtMSkge1xyXG4gICAgICAgICAgdW5pcXVlSWRzLnB1c2goaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIodW5pcXVlSWRzKS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zLm1hcCh0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNpbmdsZVdpdGhJZChpZDogYW55KSB7XHJcbiAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIoW2lkXSkuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+IHtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RJdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihpdGVtKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtzZWxlY3RJdGVtXTtcclxuICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IHNlbGVjdEl0ZW0udGV4dDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -480,7 +480,7 @@ CustomComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
480
480
  [tabindex]="tabindex"
481
481
  (keydown)="onKey($event)"
482
482
  (focus)="onFocus()"
483
- (focusout)="onFocusOut()"
483
+ (focusout)="onFocusOut()" attr.aria-label="hci-ng-custom-combobox-{{label}}"
484
484
  >
485
485
  <div matSuffix
486
486
  class="hci-combobox-arrow-wrapper"
@@ -530,7 +530,7 @@ CustomComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
530
530
  </mat-error>
531
531
  <ng-content></ng-content>
532
532
  </mat-form-field>
533
- `, isInline: true, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.hci-combobox-arrow-wrapper{display:table-cell;vertical-align:middle}.hci-combobox-viewport mat-option{display:flex;align-items:center;padding:0 .2rem}.hci-combobox-viewport mat-option .mat-option-text{white-space:nowrap}.hci-combobox-viewport .hci-combobox-selected{background-color:#ddd}.hci-combobox-viewport .mat-active{background-color:#f3f3f3}.hci-combobox-viewport{overflow-anchor:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "component", type: i4.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i6.MatLegacyAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatLegacyAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i8.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
533
+ `, isInline: true, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:var(--black-darkest)}.hci-combobox-arrow-wrapper{display:table-cell;vertical-align:middle}.hci-combobox-viewport mat-option{display:flex;align-items:center;padding:0 .2rem}.hci-combobox-viewport mat-option .mat-option-text{white-space:nowrap}.hci-combobox-viewport .hci-combobox-selected{background-color:#ddd}.hci-combobox-viewport .mat-active{background-color:#f3f3f3}.hci-combobox-viewport{overflow-anchor:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "component", type: i4.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i6.MatLegacyAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatLegacyAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i8.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
534
534
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomComboBoxComponent, decorators: [{
535
535
  type: Component,
536
536
  args: [{ selector: "hci-combobox", template: `
@@ -557,7 +557,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
557
557
  [tabindex]="tabindex"
558
558
  (keydown)="onKey($event)"
559
559
  (focus)="onFocus()"
560
- (focusout)="onFocusOut()"
560
+ (focusout)="onFocusOut()" attr.aria-label="hci-ng-custom-combobox-{{label}}"
561
561
  >
562
562
  <div matSuffix
563
563
  class="hci-combobox-arrow-wrapper"
@@ -613,7 +613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
613
613
  multi: true,
614
614
  }], host: {
615
615
  class: "hci-combobox-container"
616
- }, encapsulation: ViewEncapsulation.None, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.hci-combobox-arrow-wrapper{display:table-cell;vertical-align:middle}.hci-combobox-viewport mat-option{display:flex;align-items:center;padding:0 .2rem}.hci-combobox-viewport mat-option .mat-option-text{white-space:nowrap}.hci-combobox-viewport .hci-combobox-selected{background-color:#ddd}.hci-combobox-viewport .mat-active{background-color:#f3f3f3}.hci-combobox-viewport{overflow-anchor:none}\n"] }]
616
+ }, encapsulation: ViewEncapsulation.None, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:var(--black-darkest)}.hci-combobox-arrow-wrapper{display:table-cell;vertical-align:middle}.hci-combobox-viewport mat-option{display:flex;align-items:center;padding:0 .2rem}.hci-combobox-viewport mat-option .mat-option-text{white-space:nowrap}.hci-combobox-viewport .hci-combobox-selected{background-color:#ddd}.hci-combobox-viewport .mat-active{background-color:#f3f3f3}.hci-combobox-viewport{overflow-anchor:none}\n"] }]
617
617
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }]; }, propDecorators: { maxOptionsToShow: [{
618
618
  type: Input
619
619
  }], customViewportClass: [{
@@ -676,4 +676,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
676
676
  type: ViewChild,
677
677
  args: ["input", { read: MatAutocompleteTrigger, static: false }]
678
678
  }] } });
679
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsNEJBQTRCLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF5STdHLE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsSUFDVyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQ1csbUJBQW1CLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMs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QUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBeUJJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdQLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUlyQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJbEMsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7TWF0TGVnYWN5QXV0b2NvbXBsZXRlVHJpZ2dlciBhcyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWF1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQge0xpc3RSYW5nZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge0xpc3RLZXlNYW5hZ2VyLCBIaWdobGlnaHRhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7TWF0TGVnYWN5T3B0aW9uIGFzIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jb3JlXCI7XHJcbmltcG9ydCB7TGVnYWN5RmxvYXRMYWJlbFR5cGUgYXMgRmxvYXRMYWJlbFR5cGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWNvbWJvYm94XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtZm9ybS1maWVsZCAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidGhpcy50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjdXN0b21GaWVsZENsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsICE9PSB1bmRlZmluZWRcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWwgPT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgIHt7IHRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXIgfX1cclxuICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCAjaW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBuYW1lPVwiY3VzdG9tQ29tYm9Cb3hGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5uZXJDb250cm9sXCJcclxuICAgICAgICAgICAgIFthdHRyLmNka0ZvY3VzSW5pdGlhbF09XCJjZGtGb2N1c0luaXRpYWwgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjZGtGb2N1c0luaXRpYWxcIlxyXG4gICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcclxuICAgICAgICAgICAgID5cclxuICAgICAgPGRpdiBtYXRTdWZmaXhcclxuICAgICAgICAgICBjbGFzcz1cImhjaS1jb21ib2JveC1hcnJvdy13cmFwcGVyXCJcclxuICAgICAgICAgICAoY2xpY2spID0gXCJ0b2dnbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRDbGljaygpXCJcclxuICAgICAgICAgICAobW91c2V1cCk9XCJlbmRDbGljaygpXCJcclxuICAgICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhjaS1jb21ib2JveC1hcnJvd1wiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1zcGlubmVyIG1hdFN1ZmZpeCAqbmdJZj1cInNob3dMb2FkZXIoKVwiIFtkaWFtZXRlcl09XCIzMFwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tbGVmdDogOHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInRoaXMuc2VsZWN0T3B0aW9uKCRldmVudC5vcHRpb24udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJ0aGlzLm9uT3BlbmVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cInRoaXMub25DbG9zZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCJ0aGlzLmRpc3BsYXlGblwiPlxyXG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpZXdwb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc09wZW4gPyBudWxsIDogJ25vbmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGNpLWNvbWJvYm94LXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT0gXCJjdXN0b21WaWV3cG9ydENsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5CdWZmZXJQeF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4ICogMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4QnVmZmVyUHhdPVwibnVtT3B0aW9uc1RvU2hvdyAqIG9wdGlvblNpemVQeCAqIDNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImFsbG93Tm9uZSAmJiBpc09wZW4gJiYgKHRoaXMuZm9yY2VTaG93Tm9uZSB8fCAhdGhpcy5pbm5lckNvbnRyb2wudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImN1c3RvbU9wdGlvbkNsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICBOb25lXHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqY2RrVmlydHVhbEZvcj1cImxldCBvcHQgb2YgdGhpcy5sb2FkZWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3VzdG9tT3B0aW9uQ2xhc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGNpLWNvbWJvYm94LXNlbGVjdGVkXT1cIih2YWx1ZUZpZWxkID8gb3B0W3ZhbHVlRmllbGRdIDogb3B0KSA9PT0gb3V0ZXJDb250cm9sLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtc2VsZWN0ZWRdPVwiKHZhbHVlRmllbGQgPyBvcHRbdmFsdWVGaWVsZF0gOiBvcHQpID09PSBvdXRlckNvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBkaXNwbGF5RmllbGQgPyBvcHRbZGlzcGxheUZpZWxkXSA6IG9wdCB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAge3sgZ2V0RXJyb3IoKSB9fVxyXG4gICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tQ29tYm9Cb3hDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgfV0sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6IFwiaGNpLWNvbWJvYm94LWNvbnRhaW5lclwiXHJcbiAgfSxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAuaGNpLWNvbWJvYm94LWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LWFycm93IHtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZDtcclxuICAgICAgbWFyZ2luOiAwIDRweDtcclxuICAgICAgY29sb3I6IHJnYmEoMCwwLDAsLjU0KTtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LWFycm93LXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgbWF0LW9wdGlvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDAgLjJyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCBtYXQtb3B0aW9uIC5tYXQtb3B0aW9uLXRleHQge1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgLmhjaS1jb21ib2JveC1zZWxlY3RlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCAubWF0LWFjdGl2ZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogZml4IGppdHRlcnkgc2Nyb2xsIGJ1ZyBpbiBjaHJvbWUgKi9cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQge1xyXG4gICAgICBvdmVyZmxvdy1hbmNob3I6IG5vbmU7XHJcbiAgICB9XHJcbiAgYF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbUNvbWJvQm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwdWJsaWMgb3B0aW9uU2l6ZVB4OiBudW1iZXIgPSAyNTtcclxuICBwdWJsaWMgbnVtT3B0aW9uc1RvU2hvdzogbnVtYmVyID0gMTA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1heE9wdGlvbnNUb1Nob3c6IG51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXN0b21WaWV3cG9ydENsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgY3VzdG9tRmllbGRDbGFzc2VzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2N1c3RvbUZpZWxkQ2xhc3NlcyA9IHZhbHVlID8gdmFsdWUgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXN0b21GaWVsZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAhIXRoaXMuX2N1c3RvbUZpZWxkQ2xhc3NlcyA/IHRoaXMuX2N1c3RvbUZpZWxkQ2xhc3NlcyA6IFwibWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0XCI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgY3VzdG9tT3B0aW9uQ2xhc3Nlcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXN0b21PcHRpb25DbGFzc2VzID0gdmFsdWUgPyB2YWx1ZSA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1c3RvbU9wdGlvbkNsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAhIXRoaXMuX2N1c3RvbU9wdGlvbkNsYXNzZXMgPyB0aGlzLl9jdXN0b21PcHRpb25DbGFzc2VzIDogXCJcIjtcclxuICB9XHJcblxyXG4gIC8vIElmIGEgbGFiZWwgaXMgbm90IHNwZWNpZmllZCB0aGUgcGxhY2Vob2xkZXIgaXMgcHJvbW90ZWQgdG8gYSBsYWJlbC5cclxuICAvLyBUbyBjcmVhdGUgYSBmb3JtIGZpZWxkIHdpdGggb25seSBhIHBsYWNlaG9sZGVyLCBzcGVjaWZ5IGFuIGVtcHR5XHJcbiAgLy8gbGFiZWwgdG8gcHJldmVudCB0aGUgcGxhY2Vob2xkZXIgZnJvbSBiZWluZyBwcm9tb3RlZC5cclxuICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8vIFJlbW92ZXMgdGhlIHBsYWNlaG9sZGVyIGFmdGVyIGEgc2VsZWN0aW9uIGlzIG1hZGVcclxuICBASW5wdXQoKSBwdWJsaWMgdGVtcG9yYXJ5UGxhY2Vob2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXA6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgcHVibGljIGFsbG93Tm9uZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RUZXh0T25PcGVuID0gdHJ1ZTtcclxuXHJcbiAgLy8gdGVsbCBtYXQtZGlhbG9nIHRvIHBhc3MgaW5pdGlhbCBmb2N1cyB0byB0aGUgaW5uZXIgaW5wdXRcclxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmNka0ZvY3VzSW5pdGlhbFwiKSBfY2RrRm9jdXNJbml0aWFsID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgY2RrRm9jdXNJbml0aWFsOiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIG9uIHRhYiwgc2tpcCB0aGUgaG9zdCBlbGVtZW50IGFuZCBmb2N1cyB0aGUgaW5wdXRcclxuICBASG9zdEJpbmRpbmcoXCJhdHRyLnRhYmluZGV4XCIpIF90YWJpbmRleCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIHRhYmluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBwdWJsaWMgZm9yY2VTaG93Tm9uZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBhbGxvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGxvYWRlZE9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHJpdmF0ZSBmb3JjZUVtaXRPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheUZpZWxkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGFwcGVhcmFuY2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgcHVibGljIGZsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlO1xyXG5cclxuICAvLyBTZXQgdG8gZW1wdHkgdG8gbm90IHNob3cgZXJyb3JzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVmaW5lRXJyb3JzOiBhbnkgPSB7cmVxdWlyZWQ6IFwiVGhpcyBpcyBhIHJlcXVpcmVkIGZpZWxkXCJ9O1xyXG5cclxuICBwcml2YXRlIF9zaG93TG9hZGVyID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY3VzdG9tRmllbGRDbGFzc2VzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHByaXZhdGUgX2N1c3RvbU9wdGlvbkNsYXNzZXM6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBvdXRlckNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgaW5uZXJDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xyXG4gIHByaXZhdGUgaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc3ViczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgbm9OZ0NvbnRyb2w6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2VsZWN0ZWRJbmRleDogbnVtYmVyO1xyXG5cclxuICBrZXlNYW5hZ2VyOiBMaXN0S2V5TWFuYWdlcjxIaWdobGlnaHRhYmxlPjtcclxuICB2aWV3cG9ydFJlbmRlclJhbmdlOiBMaXN0UmFuZ2U7XHJcbiAgdmlld3BvcnRWaXNpYmxlUmFuZ2U6IExpc3RSYW5nZSA9IHtcclxuICAgIHN0YXJ0OiAwLFxyXG4gICAgZW5kOiB0aGlzLm51bU9wdGlvbnNUb1Nob3cgLSAxXHJcbiAgfTtcclxuXHJcbiAgYWN0aXZlVmFsdWU6IGFueTtcclxuXHJcbiAgcHVibGljIGNsaWNrSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb3B0aW9uU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9wdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9wdGlvbnNMb2FkZWQ6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwidmlld3BvcnRcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgdmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuXHJcbiAgQFZpZXdDaGlsZChcImlucHV0XCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZChcImlucHV0XCIsIHtyZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCBzdGF0aWM6IGZhbHNlfSlcclxuICBhdXRvQ29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlRm46ICh2YWw6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkRm46ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgcHVibGljIGRpc3BsYXlGbjogKG9wdD86IGFueSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkID0gKG9wdD86IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIG9wdCA/ICh0aGlzLmRpc3BsYXlGaWVsZCA/IG9wdFt0aGlzLmRpc3BsYXlGaWVsZF0gOiBvcHQpIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zaG93TG9hZGVyID0gdGhpcy5hbGxvd0xvYWRlciAmJiAoISB0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBsZXQgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG4gICAgaWYgKG5nQ29udHJvbCAmJiBuZ0NvbnRyb2wuY29udHJvbCkge1xyXG4gICAgICB0aGlzLm91dGVyQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLnZhbGlkYXRvcik7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLm91dGVyQ29udHJvbC5hc3luY1ZhbGlkYXRvcik7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ub05nQ29udHJvbCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJzLmFkZCh0aGlzLmlubmVyQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChfdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc09wZW4gJiYgIXRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcykge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgLy8gd29yayBhcm91bmQgZm9yIHZhbGlkYXRvcnMgbm90IGFsd2F5cyBwcm9wYWdhdGluZ1xyXG4gICAgdGhpcy5zdWJzLmFkZCh0aGlzLm91dGVyQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoX2V2ZW50OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLm91dGVyQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wuYXN5bmNWYWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldEVycm9ycyh0aGlzLm91dGVyQ29udHJvbC5lcnJvcnMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3V0ZXJDb250cm9sLnRvdWNoZWQpIHtcclxuICAgICAgICB0aGlzLmlubmVyQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICAvLyB0aGlzIG9iamVjdCBpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIGFjdGl2ZSBzdGF0ZSB3aGVuIGtleWluZyB1cCBhbmQgZG93blxyXG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlcjtcclxuICAgIHRoaXMua2V5TWFuYWdlci53aXRoV3JhcChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5zdWJzLmFkZChjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy52aWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtLFxyXG4gICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbGVkSW5kZXhDaGFuZ2VcclxuICAgIF0pLnN1YnNjcmliZSgoW3JlbmRlcmVkUmFuZ2UsIHNjcm9sbGVkSW5kZXhdOiBbTGlzdFJhbmdlLCBudW1iZXJdKSA9PiB7XHJcblxyXG4gICAgICAvLyBJbnN0ZWFkIG9mIGxvYWRpbmcgdGhlIHdob2xlIGl0ZW0gbGlzdCBhdCBvbmNlLCB0aGUgdmlydHVhbCBzY3JvbGwgdmlld3BvcnQgYnVmZmVyc1xyXG4gICAgICAvLyBhIHJhbmdlIG9mIGVudHJpZXMsIG9ubHkgYSBwb3J0aW9uIG9mIHdoaWNoIGFyZSB3aXRoaW4gdGhlIHZpc2libGUgZm9sZFxyXG4gICAgICB0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2UgPSByZW5kZXJlZFJhbmdlO1xyXG5cclxuICAgICAgLy8gd2UgaGF2ZSB0byBmaWd1cmUgb3V0IHRoZSB2aXNpYmxlIHJhbmdlIG91cnNlbHZlc1xyXG4gICAgICBsZXQgbGVuOiBudW1iZXIgPSBNYXRoLm1pbih0aGlzLmxvYWRlZE9wdGlvbnMubGVuZ3RoICsgKHRoaXMuYWxsb3dOb25lID8gMSA6IDApLCB0aGlzLm51bU9wdGlvbnNUb1Nob3cgLSAxKTtcclxuXHJcbiAgICAgIHRoaXMudmlld3BvcnRWaXNpYmxlUmFuZ2UgPSB7XHJcbiAgICAgICAgc3RhcnQ6IHNjcm9sbGVkSW5kZXgsXHJcbiAgICAgICAgZW5kOiBzY3JvbGxlZEluZGV4ICsgbGVuXHJcbiAgICAgIH07XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5vcHRpb25zKSB7XHJcbiAgICAgIGxldCBvcHRpb25zQ2hhbmdlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLm9wdGlvbnM7XHJcbiAgICAgIGlmICghb3B0aW9uc0NoYW5nZS5jdXJyZW50VmFsdWUgfHwgb3B0aW9uc0NoYW5nZS5jdXJyZW50VmFsdWUubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIGlmKHRoaXMuaW5uZXJDb250cm9sLnZhbHVlICE9IG51bGwpe1xyXG4gICAgICAgICAgLy9SZXNldCB0aGUgaW5uZXJDb250cm9sIHZhbHVlIG9mIHRoZSBkcm9wZG93biBsaXN0IHRvIGFuIGVtcHR5IGFycmF5IGluIGNhc2Ugb2Ygbm8gcmVzdWx0cyBhcmUgcHJlc2VudCB0byBiZSBkaXNwbGF5ZWQuXHJcbiAgICAgICAgICAvL1RoaXMgZmx1c2hlcyBvdXQgdGhlIHN0YWxlIHZhbHVlIGZyb20gdGhlIGxpc3QgaWYgdGhlcmUgYXJlIG5vIHJlc3VsdHMgdG8gYmUgZGlzcGxheWVkLlxyXG4gICAgICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUoW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGN1cnJlbnRPcHRzOiBhbnlbXSA9IDxhbnlbXT5vcHRpb25zQ2hhbmdlLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKGN1cnJlbnRPcHRzICYmIFwibGVuZ3RoXCIgaW4gY3VycmVudE9wdHMgJiYgY3VycmVudE9wdHMgIT09IG9wdGlvbnNDaGFuZ2UucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3Nob3dMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnNMb2FkZWQuZW1pdCgpO1xyXG5cclxuICAgICAgICAvLyBJZiBudW1iZXIgb2Ygb3B0aW9ucyBpcyBsZXNzIHRoYW4gb3VyIG1heCwgcmVkdWNlIHNpemUgb2Ygb3ZlcmxheVxyXG4gICAgICAgIHRoaXMubnVtT3B0aW9uc1RvU2hvdyA9IE1hdGgubWluKGN1cnJlbnRPcHRzLmxlbmd0aCArICh0aGlzLmFsbG93Tm9uZSA/IDEgOiAwKSwgdGhpcy5tYXhPcHRpb25zVG9TaG93KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9zaG93TG9hZGVyID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBUaGUgYXV0b2NvbXBsZXRlIHdpbGwgYXV0b21hdGljYWxseSBwb3Agb3BlbiBvbmNlIGl0IGhhcyBvcHRpb25zIGZpbHRlcmVkIGludG8gaXQsXHJcbiAgICAgIC8vIGJ1dCB3ZSBkb24ndCB3YW50IGl0IHRvIG9uIGluaXRpYWwgcGFnZSBsb2FkIG9yIHdoZW4gdGFiYmluZyB0aG91Z2hcclxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZSh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZShvYmopO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvcigpOiBzdHJpbmcge1xyXG4gICAgZm9yIChjb25zdCBlcnJvciBpbiB0aGlzLm91dGVyQ29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgaWYgKHRoaXMuZGVmaW5lRXJyb3JzICYmIGVycm9yIGluIHRoaXMuZGVmaW5lRXJyb3JzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5lRXJyb3JzW2Vycm9yXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkT25seUN1cnJlbnRWYWx1ZShjbnRybFZhbDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5ld1ZhbHVlOiBhbnkgPSBudWxsO1xyXG4gICAgaWYgKGNudHJsVmFsICE9PSBudWxsICYmIGNudHJsVmFsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGN1cnJlbnRseVNlbGVjdGVkOiBhbnkgPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0OiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgb3B0VmFsdWU6IGFueSA9IHRoaXMudmFsdWVGaWVsZCA/IG9wdFt0aGlzLnZhbHVlRmllbGRdIDogb3B0O1xyXG4gICAgICAgIGlmICh0aGlzLmZvcmNlRW1pdE9iamVjdCkge1xyXG4gICAgICAgICAgbGV0IG91dGVyVmFsdWU6IGFueSA9IGNudHJsVmFsID8gKHRoaXMudmFsdWVGaWVsZCA/IGNudHJsVmFsW3RoaXMudmFsdWVGaWVsZF0gOiBjbnRybFZhbCkgOiBudWxsO1xyXG4gICAgICAgICAgaWYgKG9wdFZhbHVlID09PSBvdXRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gb3B0VmFsdWUgPT09IGNudHJsVmFsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChjdXJyZW50bHlTZWxlY3RlZCkge1xyXG4gICAgICAgIG5ld1ZhbHVlID0gY3VycmVudGx5U2VsZWN0ZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBwcmVmZXIgdG8gY2hlY2sgaWQgaWYgaXQgaGFzIG9uZSAgdnMgc3RyYWlnaHQgYWdhaW5zdCBpdCdzIG9iamVjdCBpZGVudGl0eVxyXG4gICAgaWYgKHRoaXMuaW5uZXJDb250cm9sLnZhbHVlICYmIG5ld1ZhbHVlICE9IG51bGwgJiYgdGhpcy52YWx1ZUZpZWxkKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubmVyQ29udHJvbC52YWx1ZVt0aGlzLnZhbHVlRmllbGRdICE9PSBuZXdWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKSB7XHJcbiAgICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG5ld1ZhbHVlW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5uZXJDb250cm9sLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICAgIGxldCBudiA9IG5ld1ZhbHVlID8gKCh0aGlzLnZhbHVlRmllbGQgJiYgIXRoaXMuZm9yY2VFbWl0T2JqZWN0KSA/IG5ld1ZhbHVlW3RoaXMudmFsdWVGaWVsZF0gOiBuZXdWYWx1ZSkgOiBudWxsO1xyXG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQobnYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJPcHRpb25zKHNob3dBbGw6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JjZVNob3dOb25lID0gc2hvd0FsbDtcclxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPCAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hvd0FsbCB8fCAhdGhpcy5pbm5lckNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5sb2FkZWRPcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgc2VhcmNoVmFsdWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5pbm5lckNvbnRyb2wudmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBzZWFyY2hWYWx1ZSA9IHRoaXMuaW5uZXJDb250cm9sLnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXNwbGF5RmllbGQpIHtcclxuICAgICAgICBzZWFyY2hWYWx1ZSA9IHRoaXMuaW5uZXJDb250cm9sLnZhbHVlW3RoaXMuZGlzcGxheUZpZWxkXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IG9wdERpc3BsYXk6IHN0cmluZyA9ICh0aGlzLmRpc3BsYXlGaWVsZCA/IG9wdFt0aGlzLmRpc3BsYXlGaWVsZF0gOiBvcHQpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgcmV0dXJuIG9wdERpc3BsYXkuaW5jbHVkZXMoc2VhcmNoVmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5mb3JjZVNob3dOb25lID0gdGhpcy5sb2FkZWRPcHRpb25zLmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmdldE9wdEluZGV4KHRoaXMub3V0ZXJDb250cm9sLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93TG9hZGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsb3dMb2FkZXIgJiYgdGhpcy5fc2hvd0xvYWRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuKCkge1xyXG4gICAgaWYgKHRoaXMuaW5uZXJDb250cm9sLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgYXV0b2NvbXBsZXRlIHdpbGwgb25seSBvcGVuIHdoZW4gb3B0aW9ucyBhcmUgbG9hZGVkXHJcbiAgICB0aGlzLmZpbHRlck9wdGlvbnModHJ1ZSk7XHJcbiAgICB0aGlzLmF1dG9Db21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmF1dG9Db21wbGV0ZVRyaWdnZXIuY2xvc2VQYW5lbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uT3BlbmVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JjZVNob3dOb25lID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcblxyXG4gICAgaWYodGhpcy5zZWxlY3RUZXh0T25PcGVuKXtcclxuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTsgLy8gSGlnaGxpZ2h0cyB0ZXh0XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IDApIHtcclxuICAgICAgLy8gbWFrZSB0aGUgc2VsZWN0ZWQgb3B0aW9uIGFsc28gdGhlIGFjdGl2ZSBvcHRpb25cclxuICAgICAgdGhpcy5hY3RpdmVWYWx1ZSA9IHRoaXMuZ2V0T3B0VmFsKHRoaXMubG9hZGVkT3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsb3NlZCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAmJiB0aGlzLm91dGVyQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdE9wdGlvbihudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKHRoaXMub3V0ZXJDb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAvLyByZXNldCB0aGUgb3B0aW9ucyBzbyB0aGUgYXV0b2NvbXBsZXRlIHdvbid0IGF1dG9tYXRpY2FsbHkgb3BlbiBvbiB0aGUgbmV4dCB0YWIgdGhyb3VnaFxyXG4gICAgdGhpcy5sb2FkZWRPcHRpb25zID0gW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhcnRDbGljaygpIHtcclxuICAgIC8vIGNsaWNraW5nIG9uIGNlcnRhaW4gcGFydHMgb2YgdGhlIG1hdC1maWVsZCB3aWxsIFwiZmxpY2tlclwiIHRoZSBmb2N1cywgdHJpZ2dlcmluZ1xyXG4gICAgLy8gZXJyb3IgdmFsaWRhdGlvbiBlYXJseS4gVGhpcyB0cmFja3MgdGhvc2UgaW50ZXJuYWwgY2xpY2tzIHNvIHRoZXkgY2FuIGJlIGlnbm9yZWRcclxuICAgIHRoaXMuY2xpY2tJblByb2dyZXNzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmRDbGljaygpIHtcclxuICAgIHRoaXMuY2xpY2tJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZU9wZW4oZXZlbnQ6IE1vdXNlRXZlbnQpOnZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIlRhYlwiIHx8IGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gVGhlcmUgaXMgYSBidWcgd2hlcmUgdGhlIGNkayBhMTF5IEtleU1hbmFnZXIgaW1wbGVtZW50YXRpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aFxyXG4gICAgICAvLyB0aGUgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgd2hpY2ggY2F1c2VzIHRoZSBEcm9wLWRvd24gbm90IHNjcm9sbCB3aXRoIGtleWJvYXJkXHJcbiAgICAgIC8vIG9uIGxvbmcgb3B0aW9uIGxpc3RzLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNjU5OFxyXG4gICAgICAvL1xyXG4gICAgICAvLyBUaGlzIHdvcmsgYXJvdW5kIHRha2VzIGNvbnRyb2wgb2YgdGhlIGtleWJvYXJkIGFuZCBtYW51YWxseSBzY3JvbGxzIGFuZCBhY3RpdmF0ZXNcclxuICAgICAgLy8gdGhlIG9wdGlvbnNcclxuICAgICAgLy9cclxuICAgICAgLy8gUmVmZXJlbmNlczpcclxuICAgICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9tYXRlcmlhbC9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLXRyaWdnZXIudHNcclxuICAgICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9jZGsvYTExeS9rZXktbWFuYWdlci9saXN0LWtleS1tYW5hZ2VyLnRzXHJcbiAgICAgIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21hc3Rlci9zcmMvY2RrL2ExMXkva2V5LW1hbmFnZXIvYWN0aXZlZGVzY2VuZGFudC1rZXktbWFuYWdlci50c1xyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93VXBcIiB8fCBldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0QWN0aXZlSXRlbSgpO1xyXG4gICAgICAgIHRoaXMuc2hpZnRBY3RpdmVJdGVtKGV2ZW50LmtleSk7XHJcbiAgICAgICAgdGhpcy5jaGVja0FjdGl2ZUJvdW5kYXJpZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gYmVmb3JlIG91ciBrZXlwcmVzcyBiaW5kaW5nIGV2ZW4gdHJpZ2dlcnMsIGFuZ3VsYXIgaGFzIGFscmVhZHkgbW92ZWQgdGhlIGFjdGl2ZSBzZWxlY3Rpb25cclxuICAvLyB1bnN5bmNpbmcgaXQgd2l0aCBvdXIgZGlzcGxheS4gdGhpcyBjb2RlIHJlLWluaXRpYWxpemVzIHRoZSBhY3RpdmUgb3B0aW9uXHJcbiAgaW5pdEFjdGl2ZUl0ZW0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuYWN0aXZlVmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGFjdGl2ZUluZGV4OiBudW1iZXIgPSB0aGlzLmdldEFjdGl2ZUluZGV4KCk7XHJcblxyXG4gICAgICAvLyB0aGlzIGRvZXMgdGhlIGNvbnZlcnNpb24gZnJvbSBhbiBpbmRleCB3aXRoaW4gYWxsIG9wdGlvbnMgZG93biB0byBhIHBvc2l0aW9uIHdpdGhpbiB0aGVcclxuICAgICAgLy8gZGlzcGxheWVkIHJhbmdlLCB3aGljaCBpcyBhbGwgdGhlIGtleW1hbmFnZXIgaXMgYXdhcmUgb2ZcclxuICAgICAgbGV0IHBvc2l0aW9uID0gYWN0aXZlSW5kZXggLSB0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2Uuc3RhcnQ7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNoaWZ0QWN0aXZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGtleSA9PT0gXCJBcnJvd1VwXCIpIHtcclxuICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO1xyXG4gICAgfSBlbHNlIGlmIChrZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcclxuICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldE5leHRJdGVtQWN0aXZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVmFsdWUgPSB0aGlzLmdldE9wdFZhbCgoPE1hdE9wdGlvbj50aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbSkudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gY2hlY2sgaWYgdGhlIGFjdGl2ZSBvcHRpb24gaW5kZXggaXMgd2l0aGluIHRoZSBkaXNwbGF5ZWQgdmlld3BvcnQgd2luZG93XHJcbiAgLy8gaWYgbm90LCBzY3JvbGwgaXQgaW50byB2aWV3XHJcbiAgY2hlY2tBY3RpdmVCb3VuZGFyaWVzKCk6IHZvaWQge1xyXG4gICAgbGV0IGFjdGl2ZUluZGV4OiBudW1iZXIgPSB0aGlzLmdldEFjdGl2ZUluZGV4KCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZUluZGV4IDwgdGhpcy52aWV3cG9ydFZpc2libGVSYW5nZS5zdGFydCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvT2Zmc2V0KGFjdGl2ZUluZGV4ICogdGhpcy5vcHRpb25TaXplUHgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGFjdGl2ZUluZGV4ID4gdGhpcy52aWV3cG9ydFZpc2libGVSYW5nZS5lbmQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldCgoYWN0aXZlSW5kZXggLSAodGhpcy5udW1PcHRpb25zVG9TaG93IC0gMSkpICogdGhpcy5vcHRpb25TaXplUHgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZUluZGV4KCkge1xyXG4gICAgbGV0IGFjdGl2ZUluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZVZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5hY3RpdmVWYWx1ZSAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gaWYgd2UgYWRkZWQgYSBub25lIG9wdGlvbiB0aGUgcmV0dXJuZWQgaW5kZXggd291bGQgYmUgb2ZmIGJ5IG9uZVxyXG4gICAgICBsZXQgdmFsSW5kZXggPSB0aGlzLmdldE9wdEluZGV4KHRoaXMuYWN0aXZlVmFsdWUpICsgKHRoaXMuYWxsb3dOb25lICYmICh0aGlzLmZvcmNlU2hvd05vbmUgfHwgIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlKSA/IDEgOiAwKTtcclxuXHJcbiAgICAgIC8vIHRoZSBpbmRleCBzaG91bGQgYmUgd2l0aGluIHRoZSByYW5nZSBvZiBvdXIgZW50aXJlIGJ1ZmZlciwgb3IganVzdCBhbGxvdyBpdCB0byByZXNldFxyXG4gICAgICBpZiAodmFsSW5kZXggPj0gdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLnN0YXJ0XHJcbiAgICAgICAgJiYgKCF0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2UuZW5kIHx8IHZhbEluZGV4IDw9IHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5lbmQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGFjdGl2ZUluZGV4ID0gdmFsSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWN0aXZlSW5kZXg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Gb2N1cygpIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgLy8gSGlnaGxpZ2h0cyB0ZXh0XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdFRleHRPbk9wZW4pIHtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Gb2N1c091dCgpIHtcclxuICAgIC8vIG1hcmsgY29udHJvbCB0b3VjaGVkIGFuZCB0cmlnZ2VyIGVycm9yIHZhbGlkYXRpb25cclxuICAgIGlmICghdGhpcy5jbGlja0luUHJvZ3Jlc3MpIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0T3B0aW9uKG9wdDogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgbmV3VmFsID0gdGhpcy5nZXRPcHRWYWwob3B0LCB0aGlzLmZvcmNlRW1pdE9iamVjdCk7XHJcblxyXG4gICAgaWYgKHRoaXMubm9OZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5vdXRlckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlRm4obmV3VmFsKTtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChuZXdWYWwpO1xyXG4gICAgdGhpcy5vcHRpb25DaGFuZ2VkLmVtaXQobmV3VmFsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzY3JvbGxUb1NlbGVjdGVkT3B0aW9uKCk6IHZvaWQge1xyXG4gICAgLy8gc2Nyb2xsIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9uIHdoZW4gd2Ugb3BlbiB0aGUgZHJvcGRvd25cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKSB7XHJcbiAgICAgIGxldCBvZmZzZXRJbmRleDogbnVtYmVyID0gdGhpcy5zZWxlY3RlZEluZGV4ICsgKHRoaXMuYWxsb3dOb25lID8gMSA6IDApOyAvLyBhZGp1c3QgZm9yIE5vbmUgZW50cnlcclxuICAgICAgb2Zmc2V0SW5kZXggLT0gKHRoaXMubnVtT3B0aW9uc1RvU2hvdyAvIDIpIC0gMTsgLy8gY2FsY3VsYXRlIG1pZGRsZSBvZiB2aWV3cG9ydFxyXG4gICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvT2Zmc2V0KG9mZnNldEluZGV4ICogdGhpcy5vcHRpb25TaXplUHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0T3B0VmFsKG9wdDogYW55LCBmb3JjZU9iamVjdDogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcclxuICAgIGlmICh0aGlzLnZhbHVlRmllbGQgJiYgIWZvcmNlT2JqZWN0KSB7XHJcbiAgICAgIGlmIChvcHQgIT09IG51bGwgJiYgb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdCA9PT0gXCJvYmplY3RcIiAmJiB0aGlzLnZhbHVlRmllbGQgaW4gb3B0KSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdFt0aGlzLnZhbHVlRmllbGRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvcHQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRJbmRleChvcHRWYWx1ZTogYW55KTogbnVtYmVyIHtcclxuICAgIC8vIGZpbmQgdGhlIGluZGV4IGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvblxyXG4gICAgaWYgKG9wdFZhbHVlICE9PSBudWxsICYmIG9wdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9hZGVkT3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0VmFsKG9wdGlvbikgPT09IG9wdFZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vicy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
679
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsNEJBQTRCLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF5STdHLE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsSUFDVyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQ1csbUJBQW1CLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMs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QUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBeUJJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdQLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUlyQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJbEMsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7TWF0TGVnYWN5QXV0b2NvbXBsZXRlVHJpZ2dlciBhcyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWF1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQge0xpc3RSYW5nZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge0xpc3RLZXlNYW5hZ2VyLCBIaWdobGlnaHRhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7TWF0TGVnYWN5T3B0aW9uIGFzIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jb3JlXCI7XHJcbmltcG9ydCB7TGVnYWN5RmxvYXRMYWJlbFR5cGUgYXMgRmxvYXRMYWJlbFR5cGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWNvbWJvYm94XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtZm9ybS1maWVsZCAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidGhpcy50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjdXN0b21GaWVsZENsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsICE9PSB1bmRlZmluZWRcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWwgPT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgIHt7IHRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXIgfX1cclxuICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCAjaW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBuYW1lPVwiY3VzdG9tQ29tYm9Cb3hGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5uZXJDb250cm9sXCJcclxuICAgICAgICAgICAgIFthdHRyLmNka0ZvY3VzSW5pdGlhbF09XCJjZGtGb2N1c0luaXRpYWwgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjZGtGb2N1c0luaXRpYWxcIlxyXG4gICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWN1c3RvbS1jb21ib2JveC17e2xhYmVsfX1cIlxyXG4gICAgICAgICAgICAgPlxyXG4gICAgICA8ZGl2IG1hdFN1ZmZpeFxyXG4gICAgICAgICAgIGNsYXNzPVwiaGNpLWNvbWJvYm94LWFycm93LXdyYXBwZXJcIlxyXG4gICAgICAgICAgIChjbGljaykgPSBcInRvZ2dsZU9wZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydENsaWNrKClcIlxyXG4gICAgICAgICAgIChtb3VzZXVwKT1cImVuZENsaWNrKClcIlxyXG4gICAgICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGNpLWNvbWJvYm94LWFycm93XCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LXNwaW5uZXIgbWF0U3VmZml4ICpuZ0lmPVwic2hvd0xvYWRlcigpXCIgW2RpYW1ldGVyXT1cIjMwXCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7IG1hcmdpbi1sZWZ0OiA4cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwidGhpcy5zZWxlY3RPcHRpb24oJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3BlbmVkKT1cInRoaXMub25PcGVuZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwidGhpcy5vbkNsb3NlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cInRoaXMuZGlzcGxheUZuXCI+XHJcbiAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAjdmlld3BvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzT3BlbiA/IG51bGwgOiAnbm9uZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoY2ktY29tYm9ib3gtdmlld3BvcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPSBcImN1c3RvbVZpZXdwb3J0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cIm9wdGlvblNpemVQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm51bU9wdGlvbnNUb1Nob3cgKiBvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkJ1ZmZlclB4XT1cIm51bU9wdGlvbnNUb1Nob3cgKiBvcHRpb25TaXplUHggKiAyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhCdWZmZXJQeF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4ICogM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJlbmRDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiYWxsb3dOb25lICYmIGlzT3BlbiAmJiAodGhpcy5mb3JjZVNob3dOb25lIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3VzdG9tT3B0aW9uQ2xhc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm9wdGlvblNpemVQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIE5vbmVcclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdCBvZiB0aGlzLmxvYWRlZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjdXN0b21PcHRpb25DbGFzc2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oY2ktY29tYm9ib3gtc2VsZWN0ZWRdPVwiKHZhbHVlRmllbGQgPyBvcHRbdmFsdWVGaWVsZF0gOiBvcHQpID09PSBvdXRlckNvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1zZWxlY3RlZF09XCIodmFsdWVGaWVsZCA/IG9wdFt2YWx1ZUZpZWxkXSA6IG9wdCkgPT09IG91dGVyQ29udHJvbC52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm9wdGlvblNpemVQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGRpc3BsYXlGaWVsZCA/IG9wdFtkaXNwbGF5RmllbGRdIDogb3B0IH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICB7eyBnZXRFcnJvcigpIH19XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXN0b21Db21ib0JveENvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICB9XSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogXCJoY2ktY29tYm9ib3gtY29udGFpbmVyXCJcclxuICB9LFxyXG4gIHN0eWxlczogW2BcclxuICAgIC5oY2ktY29tYm9ib3gtY29udGFpbmVyIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtYXJyb3cge1xyXG4gICAgICB3aWR0aDogMDtcclxuICAgICAgaGVpZ2h0OiAwO1xyXG4gICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLXRvcDogNXB4IHNvbGlkO1xyXG4gICAgICBtYXJnaW46IDAgNHB4O1xyXG4gICAgICBjb2xvcjogdmFyKC0tYmxhY2stZGFya2VzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC1hcnJvdy13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IG1hdC1vcHRpb24ge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAwIC4ycmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgbWF0LW9wdGlvbiAubWF0LW9wdGlvbi10ZXh0IHtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IC5oY2ktY29tYm9ib3gtc2VsZWN0ZWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgLm1hdC1hY3RpdmUge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIGZpeCBqaXR0ZXJ5IHNjcm9sbCBidWcgaW4gY2hyb21lICovXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IHtcclxuICAgICAgb3ZlcmZsb3ctYW5jaG9yOiBub25lO1xyXG4gICAgfVxyXG4gIGBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21Db21ib0JveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHVibGljIG9wdGlvblNpemVQeDogbnVtYmVyID0gMjU7XHJcbiAgcHVibGljIG51bU9wdGlvbnNUb1Nob3c6IG51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXhPcHRpb25zVG9TaG93OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VzdG9tVmlld3BvcnRDbGFzczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbUZpZWxkQ2xhc3Nlcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgPSB2YWx1ZSA/IHZhbHVlIDogXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VzdG9tRmllbGRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgPyB0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgOiBcIm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFwiO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbU9wdGlvbkNsYXNzZXModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA9IHZhbHVlID8gdmFsdWUgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXN0b21PcHRpb25DbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9jdXN0b21PcHRpb25DbGFzc2VzID8gdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICAvLyBJZiBhIGxhYmVsIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHBsYWNlaG9sZGVyIGlzIHByb21vdGVkIHRvIGEgbGFiZWwuXHJcbiAgLy8gVG8gY3JlYXRlIGEgZm9ybSBmaWVsZCB3aXRoIG9ubHkgYSBwbGFjZWhvbGRlciwgc3BlY2lmeSBhbiBlbXB0eVxyXG4gIC8vIGxhYmVsIHRvIHByZXZlbnQgdGhlIHBsYWNlaG9sZGVyIGZyb20gYmVpbmcgcHJvbW90ZWQuXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvLyBSZW1vdmVzIHRoZSBwbGFjZWhvbGRlciBhZnRlciBhIHNlbGVjdGlvbiBpcyBtYWRlXHJcbiAgQElucHV0KCkgcHVibGljIHRlbXBvcmFyeVBsYWNlaG9sZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd05vbmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0VGV4dE9uT3BlbiA9IHRydWU7XHJcblxyXG4gIC8vIHRlbGwgbWF0LWRpYWxvZyB0byBwYXNzIGluaXRpYWwgZm9jdXMgdG8gdGhlIGlubmVyIGlucHV0XHJcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5jZGtGb2N1c0luaXRpYWxcIikgX2Nka0ZvY3VzSW5pdGlhbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIGNka0ZvY3VzSW5pdGlhbDogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuICAvLyBvbiB0YWIsIHNraXAgdGhlIGhvc3QgZWxlbWVudCBhbmQgZm9jdXMgdGhlIGlucHV0XHJcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci50YWJpbmRleFwiKSBfdGFiaW5kZXggPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHVibGljIGZvcmNlU2hvd05vbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgYWxsb3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBsb2FkZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByaXZhdGUgZm9yY2VFbWl0T2JqZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlYXJhbmNlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZTtcclxuXHJcbiAgLy8gU2V0IHRvIGVtcHR5IHRvIG5vdCBzaG93IGVycm9yc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlZmluZUVycm9yczogYW55ID0ge3JlcXVpcmVkOiBcIlRoaXMgaXMgYSByZXF1aXJlZCBmaWVsZFwifTtcclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0xvYWRlciA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2N1c3RvbUZpZWxkQ2xhc3Nlczogc3RyaW5nID0gXCJcIjtcclxuICBwcml2YXRlIF9jdXN0b21PcHRpb25DbGFzc2VzOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwdWJsaWMgb3V0ZXJDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIGlubmVyQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcclxuICBwcml2YXRlIGlnbm9yZUlubmVyQ29udHJvbENoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBwcml2YXRlIG5vTmdDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcclxuXHJcbiAga2V5TWFuYWdlcjogTGlzdEtleU1hbmFnZXI8SGlnaGxpZ2h0YWJsZT47XHJcbiAgdmlld3BvcnRSZW5kZXJSYW5nZTogTGlzdFJhbmdlO1xyXG4gIHZpZXdwb3J0VmlzaWJsZVJhbmdlOiBMaXN0UmFuZ2UgPSB7XHJcbiAgICBzdGFydDogMCxcclxuICAgIGVuZDogdGhpcy5udW1PcHRpb25zVG9TaG93IC0gMVxyXG4gIH07XHJcblxyXG4gIGFjdGl2ZVZhbHVlOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBjbGlja0luUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9wdGlvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcHRpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcHRpb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInZpZXdwb3J0XCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gIHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7c3RhdGljOiB0cnVlfSlcclxuICBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7cmVhZDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgc3RhdGljOiBmYWxzZX0pXHJcbiAgYXV0b0NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZUZuOiAodmFsOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZEZuOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIHB1YmxpYyBkaXNwbGF5Rm46IChvcHQ/OiBhbnkpID0+IHN0cmluZyB8IHVuZGVmaW5lZCA9IChvcHQ/OiBhbnkpID0+IHtcclxuICAgIHJldHVybiBvcHQgPyAodGhpcy5kaXNwbGF5RmllbGQgPyBvcHRbdGhpcy5kaXNwbGF5RmllbGRdIDogb3B0KSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2hvd0xvYWRlciA9IHRoaXMuYWxsb3dMb2FkZXIgJiYgKCEgdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5vdXRlckNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbDtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLm91dGVyQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wuYXN5bmNWYWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9OZ0NvbnRyb2wgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5pbm5lckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoX3ZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMpIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIHdvcmsgYXJvdW5kIGZvciB2YWxpZGF0b3JzIG5vdCBhbHdheXMgcHJvcGFnYXRpbmdcclxuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5vdXRlckNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKF9ldmVudDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wudmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLmFzeW5jVmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRFcnJvcnModGhpcy5vdXRlckNvbnRyb2wuZXJyb3JzKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm91dGVyQ29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lckNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgLy8gdGhpcyBvYmplY3QgaXMgdXNlZCB0byBjb250cm9sIHRoZSBhY3RpdmUgc3RhdGUgd2hlbiBrZXlpbmcgdXAgYW5kIGRvd25cclxuICAgIHRoaXMua2V5TWFuYWdlciA9IHRoaXMuYXV0b0NvbXBsZXRlVHJpZ2dlci5hdXRvY29tcGxldGUuX2tleU1hbmFnZXI7XHJcbiAgICB0aGlzLmtleU1hbmFnZXIud2l0aFdyYXAoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuc3Vicy5hZGQoY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMudmlld3BvcnQucmVuZGVyZWRSYW5nZVN0cmVhbSxcclxuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxlZEluZGV4Q2hhbmdlXHJcbiAgICBdKS5zdWJzY3JpYmUoKFtyZW5kZXJlZFJhbmdlLCBzY3JvbGxlZEluZGV4XTogW0xpc3RSYW5nZSwgbnVtYmVyXSkgPT4ge1xyXG5cclxuICAgICAgLy8gSW5zdGVhZCBvZiBsb2FkaW5nIHRoZSB3aG9sZSBpdGVtIGxpc3QgYXQgb25jZSwgdGhlIHZpcnR1YWwgc2Nyb2xsIHZpZXdwb3J0IGJ1ZmZlcnNcclxuICAgICAgLy8gYSByYW5nZSBvZiBlbnRyaWVzLCBvbmx5IGEgcG9ydGlvbiBvZiB3aGljaCBhcmUgd2l0aGluIHRoZSB2aXNpYmxlIGZvbGRcclxuICAgICAgdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlID0gcmVuZGVyZWRSYW5nZTtcclxuXHJcbiAgICAgIC8vIHdlIGhhdmUgdG8gZmlndXJlIG91dCB0aGUgdmlzaWJsZSByYW5nZSBvdXJzZWx2ZXNcclxuICAgICAgbGV0IGxlbjogbnVtYmVyID0gTWF0aC5taW4odGhpcy5sb2FkZWRPcHRpb25zLmxlbmd0aCArICh0aGlzLmFsbG93Tm9uZSA/IDEgOiAwKSwgdGhpcy5udW1PcHRpb25zVG9TaG93IC0gMSk7XHJcblxyXG4gICAgICB0aGlzLnZpZXdwb3J0VmlzaWJsZVJhbmdlID0ge1xyXG4gICAgICAgIHN0YXJ0OiBzY3JvbGxlZEluZGV4LFxyXG4gICAgICAgIGVuZDogc2Nyb2xsZWRJbmRleCArIGxlblxyXG4gICAgICB9O1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgb3B0aW9uc0NoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5vcHRpb25zO1xyXG4gICAgICBpZiAoIW9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlIHx8IG9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgICBpZih0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAhPSBudWxsKXtcclxuICAgICAgICAgIC8vUmVzZXQgdGhlIGlubmVyQ29udHJvbCB2YWx1ZSBvZiB0aGUgZHJvcGRvd24gbGlzdCB0byBhbiBlbXB0eSBhcnJheSBpbiBjYXNlIG9mIG5vIHJlc3VsdHMgYXJlIHByZXNlbnQgdG8gYmUgZGlzcGxheWVkLlxyXG4gICAgICAgICAgLy9UaGlzIGZsdXNoZXMgb3V0IHRoZSBzdGFsZSB2YWx1ZSBmcm9tIHRoZSBsaXN0IGlmIHRoZXJlIGFyZSBubyByZXN1bHRzIHRvIGJlIGRpc3BsYXllZC5cclxuICAgICAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjdXJyZW50T3B0czogYW55W10gPSA8YW55W10+b3B0aW9uc0NoYW5nZS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChjdXJyZW50T3B0cyAmJiBcImxlbmd0aFwiIGluIGN1cnJlbnRPcHRzICYmIGN1cnJlbnRPcHRzICE9PSBvcHRpb25zQ2hhbmdlLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9zaG93TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zTG9hZGVkLmVtaXQoKTtcclxuXHJcbiAgICAgICAgLy8gSWYgbnVtYmVyIG9mIG9wdGlvbnMgaXMgbGVzcyB0aGFuIG91ciBtYXgsIHJlZHVjZSBzaXplIG9mIG92ZXJsYXlcclxuICAgICAgICB0aGlzLm51bU9wdGlvbnNUb1Nob3cgPSBNYXRoLm1pbihjdXJyZW50T3B0cy5sZW5ndGggKyAodGhpcy5hbGxvd05vbmUgPyAxIDogMCksIHRoaXMubWF4T3B0aW9uc1RvU2hvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0xvYWRlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gVGhlIGF1dG9jb21wbGV0ZSB3aWxsIGF1dG9tYXRpY2FsbHkgcG9wIG9wZW4gb25jZSBpdCBoYXMgb3B0aW9ucyBmaWx0ZXJlZCBpbnRvIGl0LFxyXG4gICAgICAvLyBidXQgd2UgZG9uJ3Qgd2FudCBpdCB0byBvbiBpbml0aWFsIHBhZ2UgbG9hZCBvciB3aGVuIHRhYmJpbmcgdGhvdWdoXHJcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUodGhpcy5vdXRlckNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUob2JqKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3IoKTogc3RyaW5nIHtcclxuICAgIGZvciAoY29uc3QgZXJyb3IgaW4gdGhpcy5vdXRlckNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIGlmICh0aGlzLmRlZmluZUVycm9ycyAmJiBlcnJvciBpbiB0aGlzLmRlZmluZUVycm9ycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmluZUVycm9yc1tlcnJvcl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE9ubHlDdXJyZW50VmFsdWUoY250cmxWYWw6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBuZXdWYWx1ZTogYW55ID0gbnVsbDtcclxuICAgIGlmIChjbnRybFZhbCAhPT0gbnVsbCAmJiBjbnRybFZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCBjdXJyZW50bHlTZWxlY3RlZDogYW55ID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IG9wdFZhbHVlOiBhbnkgPSB0aGlzLnZhbHVlRmllbGQgPyBvcHRbdGhpcy52YWx1ZUZpZWxkXSA6IG9wdDtcclxuICAgICAgICBpZiAodGhpcy5mb3JjZUVtaXRPYmplY3QpIHtcclxuICAgICAgICAgIGxldCBvdXRlclZhbHVlOiBhbnkgPSBjbnRybFZhbCA/ICh0aGlzLnZhbHVlRmllbGQgPyBjbnRybFZhbFt0aGlzLnZhbHVlRmllbGRdIDogY250cmxWYWwpIDogbnVsbDtcclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSA9PT0gb3V0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG9wdFZhbHVlID09PSBjbnRybFZhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoY3VycmVudGx5U2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRseVNlbGVjdGVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJlZmVyIHRvIGNoZWNrIGlkIGlmIGl0IGhhcyBvbmUgIHZzIHN0cmFpZ2h0IGFnYWluc3QgaXQncyBvYmplY3QgaWRlbnRpdHlcclxuICAgIGlmICh0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAmJiBuZXdWYWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVGaWVsZCkge1xyXG4gICAgICBpZiAodGhpcy5pbm5lckNvbnRyb2wudmFsdWVbdGhpcy52YWx1ZUZpZWxkXSAhPT0gbmV3VmFsdWVbdGhpcy52YWx1ZUZpZWxkXSkge1xyXG4gICAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChuZXdWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICBsZXQgbnYgPSBuZXdWYWx1ZSA/ICgodGhpcy52YWx1ZUZpZWxkICYmICF0aGlzLmZvcmNlRW1pdE9iamVjdCkgPyBuZXdWYWx1ZVt0aGlzLnZhbHVlRmllbGRdIDogbmV3VmFsdWUpIDogbnVsbDtcclxuICAgICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG52KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyT3B0aW9ucyhzaG93QWxsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHNob3dBbGw7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3dBbGwgfHwgIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHNlYXJjaFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5uZXJDb250cm9sLnZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmlubmVyQ29udHJvbC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmlubmVyQ29udHJvbC52YWx1ZVt0aGlzLmRpc3BsYXlGaWVsZF0udG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvcHREaXNwbGF5OiBzdHJpbmcgPSAodGhpcy5kaXNwbGF5RmllbGQgPyBvcHRbdGhpcy5kaXNwbGF5RmllbGRdIDogb3B0KS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBvcHREaXNwbGF5LmluY2x1ZGVzKHNlYXJjaFZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHRoaXMubG9hZGVkT3B0aW9ucy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5nZXRPcHRJbmRleCh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0xvYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFsbG93TG9hZGVyICYmIHRoaXMuX3Nob3dMb2FkZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbigpIHtcclxuICAgIGlmICh0aGlzLmlubmVyQ29udHJvbC5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhlIGF1dG9jb21wbGV0ZSB3aWxsIG9ubHkgb3BlbiB3aGVuIG9wdGlvbnMgYXJlIGxvYWRlZFxyXG4gICAgdGhpcy5maWx0ZXJPcHRpb25zKHRydWUpO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9wZW5lZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG5cclxuICAgIGlmKHRoaXMuc2VsZWN0VGV4dE9uT3Blbil7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7IC8vIEhpZ2hsaWdodHMgdGV4dFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKSB7XHJcbiAgICAgIC8vIG1ha2UgdGhlIHNlbGVjdGVkIG9wdGlvbiBhbHNvIHRoZSBhY3RpdmUgb3B0aW9uXHJcbiAgICAgIHRoaXMuYWN0aXZlVmFsdWUgPSB0aGlzLmdldE9wdFZhbCh0aGlzLmxvYWRlZE9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWRPcHRpb24oKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghdGhpcy5pbm5lckNvbnRyb2wudmFsdWUgJiYgdGhpcy5vdXRlckNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RPcHRpb24obnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZSh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgLy8gcmVzZXQgdGhlIG9wdGlvbnMgc28gdGhlIGF1dG9jb21wbGV0ZSB3b24ndCBhdXRvbWF0aWNhbGx5IG9wZW4gb24gdGhlIG5leHQgdGFiIHRocm91Z2hcclxuICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0Q2xpY2soKSB7XHJcbiAgICAvLyBjbGlja2luZyBvbiBjZXJ0YWluIHBhcnRzIG9mIHRoZSBtYXQtZmllbGQgd2lsbCBcImZsaWNrZXJcIiB0aGUgZm9jdXMsIHRyaWdnZXJpbmdcclxuICAgIC8vIGVycm9yIHZhbGlkYXRpb24gZWFybHkuIFRoaXMgdHJhY2tzIHRob3NlIGludGVybmFsIGNsaWNrcyBzbyB0aGV5IGNhbiBiZSBpZ25vcmVkXHJcbiAgICB0aGlzLmNsaWNrSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5kQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNsaWNrSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVPcGVuKGV2ZW50OiBNb3VzZUV2ZW50KTp2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbktleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJUYWJcIiB8fCBldmVudC5rZXkgPT09IFwiRW50ZXJcIikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRoZXJlIGlzIGEgYnVnIHdoZXJlIHRoZSBjZGsgYTExeSBLZXlNYW5hZ2VyIGltcGxlbWVudGF0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGhcclxuICAgICAgLy8gdGhlIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHdoaWNoIGNhdXNlcyB0aGUgRHJvcC1kb3duIG5vdCBzY3JvbGwgd2l0aCBrZXlib2FyZFxyXG4gICAgICAvLyBvbiBsb25nIG9wdGlvbiBsaXN0cy5cclxuICAgICAgLy9cclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMTY1OThcclxuICAgICAgLy9cclxuICAgICAgLy8gVGhpcyB3b3JrIGFyb3VuZCB0YWtlcyBjb250cm9sIG9mIHRoZSBrZXlib2FyZCBhbmQgbWFudWFsbHkgc2Nyb2xscyBhbmQgYWN0aXZhdGVzXHJcbiAgICAgIC8vIHRoZSBvcHRpb25zXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFJlZmVyZW5jZXM6XHJcbiAgICAgIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21hc3Rlci9zcmMvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS10cmlnZ2VyLnRzXHJcbiAgICAgIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21hc3Rlci9zcmMvY2RrL2ExMXkva2V5LW1hbmFnZXIvbGlzdC1rZXktbWFuYWdlci50c1xyXG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9hMTF5L2tleS1tYW5hZ2VyL2FjdGl2ZWRlc2NlbmRhbnQta2V5LW1hbmFnZXIudHNcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIgfHwgZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdEFjdGl2ZUl0ZW0oKTtcclxuICAgICAgICB0aGlzLnNoaWZ0QWN0aXZlSXRlbShldmVudC5rZXkpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVCb3VuZGFyaWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGJlZm9yZSBvdXIga2V5cHJlc3MgYmluZGluZyBldmVuIHRyaWdnZXJzLCBhbmd1bGFyIGhhcyBhbHJlYWR5IG1vdmVkIHRoZSBhY3RpdmUgc2VsZWN0aW9uXHJcbiAgLy8gdW5zeW5jaW5nIGl0IHdpdGggb3VyIGRpc3BsYXkuIHRoaXMgY29kZSByZS1pbml0aWFsaXplcyB0aGUgYWN0aXZlIG9wdGlvblxyXG4gIGluaXRBY3RpdmVJdGVtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmFjdGl2ZVZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gdGhpcy5nZXRBY3RpdmVJbmRleCgpO1xyXG5cclxuICAgICAgLy8gdGhpcyBkb2VzIHRoZSBjb252ZXJzaW9uIGZyb20gYW4gaW5kZXggd2l0aGluIGFsbCBvcHRpb25zIGRvd24gdG8gYSBwb3NpdGlvbiB3aXRoaW4gdGhlXHJcbiAgICAgIC8vIGRpc3BsYXllZCByYW5nZSwgd2hpY2ggaXMgYWxsIHRoZSBrZXltYW5hZ2VyIGlzIGF3YXJlIG9mXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IGFjdGl2ZUluZGV4IC0gdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLnN0YXJ0O1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaGlmdEFjdGl2ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChrZXkgPT09IFwiQXJyb3dVcFwiKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTtcclxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXROZXh0SXRlbUFjdGl2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVZhbHVlID0gdGhpcy5nZXRPcHRWYWwoKDxNYXRPcHRpb24+dGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGNoZWNrIGlmIHRoZSBhY3RpdmUgb3B0aW9uIGluZGV4IGlzIHdpdGhpbiB0aGUgZGlzcGxheWVkIHZpZXdwb3J0IHdpbmRvd1xyXG4gIC8vIGlmIG5vdCwgc2Nyb2xsIGl0IGludG8gdmlld1xyXG4gIGNoZWNrQWN0aXZlQm91bmRhcmllcygpOiB2b2lkIHtcclxuICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gdGhpcy5nZXRBY3RpdmVJbmRleCgpO1xyXG5cclxuICAgIGlmIChhY3RpdmVJbmRleCA8IHRoaXMudmlld3BvcnRWaXNpYmxlUmFuZ2Uuc3RhcnQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldChhY3RpdmVJbmRleCAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChhY3RpdmVJbmRleCA+IHRoaXMudmlld3BvcnRWaXNpYmxlUmFuZ2UuZW5kKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQoKGFjdGl2ZUluZGV4IC0gKHRoaXMubnVtT3B0aW9uc1RvU2hvdyAtIDEpKSAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVJbmRleCgpIHtcclxuICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWN0aXZlVmFsdWUgIT09IG51bGwpIHtcclxuXHJcbiAgICAgIC8vIGlmIHdlIGFkZGVkIGEgbm9uZSBvcHRpb24gdGhlIHJldHVybmVkIGluZGV4IHdvdWxkIGJlIG9mZiBieSBvbmVcclxuICAgICAgbGV0IHZhbEluZGV4ID0gdGhpcy5nZXRPcHRJbmRleCh0aGlzLmFjdGl2ZVZhbHVlKSArICh0aGlzLmFsbG93Tm9uZSAmJiAodGhpcy5mb3JjZVNob3dOb25lIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSkgPyAxIDogMCk7XHJcblxyXG4gICAgICAvLyB0aGUgaW5kZXggc2hvdWxkIGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2Ygb3VyIGVudGlyZSBidWZmZXIsIG9yIGp1c3QgYWxsb3cgaXQgdG8gcmVzZXRcclxuICAgICAgaWYgKHZhbEluZGV4ID49IHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5zdGFydFxyXG4gICAgICAgICYmICghdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLmVuZCB8fCB2YWxJbmRleCA8PSB0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2UuZW5kKVxyXG4gICAgICApIHtcclxuICAgICAgICBhY3RpdmVJbmRleCA9IHZhbEluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIC8vIEhpZ2hsaWdodHMgdGV4dFxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RUZXh0T25PcGVuKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXNPdXQoKSB7XHJcbiAgICAvLyBtYXJrIGNvbnRyb2wgdG91Y2hlZCBhbmQgdHJpZ2dlciBlcnJvciB2YWxpZGF0aW9uXHJcbiAgICBpZiAoIXRoaXMuY2xpY2tJblByb2dyZXNzKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHQ6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IG5ld1ZhbCA9IHRoaXMuZ2V0T3B0VmFsKG9wdCwgdGhpcy5mb3JjZUVtaXRPYmplY3QpO1xyXG5cclxuICAgIGlmICh0aGlzLm5vTmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMub3V0ZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUZuKG5ld1ZhbCk7XHJcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQobmV3VmFsKTtcclxuICAgIHRoaXMub3B0aW9uQ2hhbmdlZC5lbWl0KG5ld1ZhbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcclxuICAgIC8vIHNjcm9sbCB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiB3aGVuIHdlIG9wZW4gdGhlIGRyb3Bkb3duXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCkge1xyXG4gICAgICBsZXQgb2Zmc2V0SW5kZXg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWRJbmRleCArICh0aGlzLmFsbG93Tm9uZSA/IDEgOiAwKTsgLy8gYWRqdXN0IGZvciBOb25lIGVudHJ5XHJcbiAgICAgIG9mZnNldEluZGV4IC09ICh0aGlzLm51bU9wdGlvbnNUb1Nob3cgLyAyKSAtIDE7IC8vIGNhbGN1bGF0ZSBtaWRkbGUgb2Ygdmlld3BvcnRcclxuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldChvZmZzZXRJbmRleCAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE9wdFZhbChvcHQ6IGFueSwgZm9yY2VPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUZpZWxkICYmICFmb3JjZU9iamVjdCkge1xyXG4gICAgICBpZiAob3B0ICE9PSBudWxsICYmIG9wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHQgPT09IFwib2JqZWN0XCIgJiYgdGhpcy52YWx1ZUZpZWxkIGluIG9wdCkge1xyXG4gICAgICAgIHJldHVybiBvcHRbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0O1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0SW5kZXgob3B0VmFsdWU6IGFueSk6IG51bWJlciB7XHJcbiAgICAvLyBmaW5kIHRoZSBpbmRleCBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb25cclxuICAgIGlmIChvcHRWYWx1ZSAhPT0gbnVsbCAmJiBvcHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRlZE9wdGlvbnMuZmluZEluZGV4KChvcHRpb246IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wdFZhbChvcHRpb24pID09PSBvcHRWYWx1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19