simpo-component-library 1.6.62 → 1.6.64

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,6 +44,7 @@ import * as i16 from "@angular/material/radio";
44
44
  import * as i17 from "primeng/toast";
45
45
  export class ProductListComponent extends BaseSection {
46
46
  onWindowScroll(event) {
47
+ console.log("scrolling");
47
48
  this.scrollingValue = window.pageYOffset || document.documentElement.scrollTop;
48
49
  }
49
50
  constructor(platformId, _eventService, restService, router, activatedRoute, storageService, matBottomSheet, matDialog, cartService, messageService) {
@@ -120,6 +121,7 @@ export class ProductListComponent extends BaseSection {
120
121
  this.getAllCollections();
121
122
  this.minProductPrice = this.pricingMin = this.data?.styles.minPrice ?? 0;
122
123
  this.maxProductPrice = this.pricingMax = this.data?.styles.maxPrice ?? 1000;
124
+ this.searchText = this.activatedRoute.snapshot.queryParams["searchTxt"];
123
125
  this.activatedRoute.queryParams.subscribe((qParam) => {
124
126
  this.searchTxt = qParam["searchTxt"];
125
127
  this.pageNo = qParam["pageNo"] ? Number(qParam["pageNo"]) : 1;
@@ -453,4 +455,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
453
455
  type: HostListener,
454
456
  args: ["window: resize", ["$event"]]
455
457
  }] } });
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtbGlzdC9wcm9kdWN0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1saXN0L3Byb2R1Y3QtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUt4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFrQixvQkFBb0IsRUFBcUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUNwSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsV0FBVztJQWVuRCxjQUFjLENBQUMsS0FBWTtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDakYsQ0FBQztJQUVELFlBQytCLFVBQWtCLEVBQzlCLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixjQUFxQyxFQUNyQyxjQUE4QixFQUM5QixTQUFvQixFQUNwQixXQUF3QixFQUN4QixjQUE4QjtRQUUvQyxLQUFLLEVBQUUsQ0FBQztRQVhxQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXRCakQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBRzVCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFaEIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUF1QmxDLFVBQUssR0FBc0IsSUFBSSxDQUFDO1FBRXhCLHlCQUFvQixHQUFzQyxJQUFJLENBQUM7UUFDdkUsaUVBQWlFO1FBQ3pELHFCQUFnQixHQUFzQyxJQUFJLENBQUM7UUFFNUQsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFFdkIsY0FBUyxHQUEwQixJQUFJLENBQUM7UUFDeEMsa0JBQWEsR0FBMEIsSUFBSSxDQUFDO1FBRTdDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRW5DLHlFQUF5RTtRQUNsRSxtQkFBYyxHQUFHO1lBQ3RCLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzlDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1NBQ2pELENBQUM7UUFFRixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQU14QixlQUFVLEdBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFckMsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixVQUFLLEdBQUcsZ0JBQWdCLENBQUM7UUErTHpCLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQzdCLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQXZPNUIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUEwQkQsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBVUQsUUFBUTtRQUVOLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWDtnQkFDRSxJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDbEMsQ0FBQzthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixDQUFDO2FBQ0Y7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztRQUU1RSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksYUFBYSxDQUFDO1lBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN4RyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELCtCQUErQixDQUFDLFdBQWdCLEVBQUUsWUFBaUI7UUFDakUsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckssTUFBTSxXQUFXLEdBQUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQWtCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFL0ssSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7UUFDekgsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7UUFDakksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDO1lBQ3ZJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDO1NBQ25KLENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JPLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsK0JBQStCLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BOLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsK0JBQStCLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDN0MsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZFLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEwsQ0FBQztJQUVELG9CQUFvQixDQUFDLFNBQWM7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEUsaUdBQWlHO0lBQ25HLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFnQyxFQUFFLE9BQWdCLEVBQUUsSUFBc0I7UUFDeEYsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLDZCQUE2QixFQUFFLENBQUMsQ0FBQztZQUM3RyxJQUFJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sV0FBVyxHQUF1QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3hGLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO29CQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE9BQWtCLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7YUFDSSxDQUFDO1lBQ0osT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGlDQUFpQyxFQUFFLENBQUMsQ0FBQztZQUM5RyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNySCxDQUFDO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBZ0MsRUFBRSxPQUFnQixFQUFFLElBQXlCO1FBQ3pGLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLG9FQUFvRSxFQUFFLENBQUMsQ0FBQztZQUM3SSxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sV0FBVyxHQUF1QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEYsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsV0FBVyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLFNBQVMsR0FBWSxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFrQixFQUFFLEVBQUU7Z0JBQzdDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztvQkFDakMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFNBQVM7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3RyxDQUFDO0lBQ0gsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQixFQUFFLE9BQW9CO1FBQ2xELGlCQUFpQjtRQUNqQixPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDdEMsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM5QyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ08sa0JBQWtCLENBQUMsY0FBMkI7UUFDcEQsSUFBSSxZQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBa0IsRUFBRSxFQUFFO1lBQzdDLElBQUksY0FBYyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUztnQkFDNUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBQ08sMkJBQTJCLENBQUMsY0FBMkI7UUFDN0QsSUFBSSxPQUFPLEdBQVksS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBa0IsRUFBRSxFQUFFO1lBQ2pELElBQUksY0FBYyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUztnQkFDNUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFJRCxXQUFXLENBQUMsUUFBYyxFQUFFLElBQXdCO1FBQ2xELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVoQixJQUFJLElBQUksSUFBSSxRQUFRO1lBQ2xCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2FBQ2hDLElBQUksSUFBSSxJQUFJLE1BQU07WUFDckIsT0FBTyxHQUFHLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBRXBDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZTtRQUU1QixJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3JFLE9BQU87Z0JBQ0wsR0FBRyxRQUFRO2dCQUNYLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQzNDLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDNUUsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDN0MsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNU8sQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN0TSxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUN0RCxZQUFZLENBQUMsU0FBUyxHQUFHLENBQUMsUUFBYSxFQUFFLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFtQyxDQUFDO29CQUNyRSxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRTt3QkFDOUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFrQixFQUFFLEVBQUU7NEJBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0NBQ2xDLElBQUksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0NBQ3JDLE1BQU0sV0FBVyxHQUFnQixPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0NBQzNELElBQUksV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0NBQzVDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7d0NBQ3JELE9BQU8sQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDO3dDQUM3QyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0NBQ25DLENBQUM7Z0NBQ0gsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQ0FDbkMsQ0FBQzs0QkFDSCxDQUFDO3dCQUNILENBQUMsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUMsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7Z0JBQy9ELGdCQUFnQixDQUFDLFNBQVMsR0FBRyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtvQkFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQW1DLENBQUM7b0JBQzdFLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFO3dCQUM5QyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRTs0QkFDakQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQ0FDbEMsSUFBSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQ0FDckMsTUFBTSxXQUFXLEdBQWdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQ0FDM0QsSUFBSSxXQUFXLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3Q0FDNUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxXQUFXLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQzt3Q0FDdEQsT0FBTyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7d0NBQzdDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO29DQUMxQixDQUFDO2dDQUNILENBQUM7cUNBQU0sQ0FBQztvQ0FDTixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQ0FDMUIsQ0FBQzs0QkFDSCxDQUFDO3dCQUNILENBQUMsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUMsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUFBO1lBRUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLGFBQWtCO1FBRTNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsV0FBVyxDQUFDLGNBQW1CO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELGdCQUFnQixDQUFDLElBQVk7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUM1QixRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWdCO1FBQy9CLE9BQU8sT0FBTyxDQUFDLGFBQWEsRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxjQUFjLENBQUMsT0FBZ0IsRUFBRSxTQUFpQjtRQUNoRCxJQUFJLGVBQWUsR0FBdUIsSUFBSSxDQUFDO1FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBb0IsRUFBRSxFQUFFO1lBQ3JELElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTO2dCQUNoQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUNELFdBQVc7UUFHVCxJQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRztZQUN6QixPQUFPO1FBRVQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDOzhHQXJaVSxvQkFBb0Isa0JBb0JyQixXQUFXO2tHQXBCVixvQkFBb0Isb1RBSnBCLENBQUMsY0FBYyxDQUFDLGlEQ3RFN0Isby9hQWtPQSxzc0pEbExJLFlBQVksaWtCQUNaLGVBQWUsOEJBQ2YsV0FBVyxnMEJBQ1gsb0JBQW9CLHNoQkFDcEIsZUFBZSx5WUFDZixvQkFBb0I7Z0JBQ3BCLFdBQVc7Z0JBQ1gsa0JBQWtCLHdGQUVsQixlQUFlLGtkQUNmLG1CQUFtQiwwR0FDbkIsbUJBQW1CLG1GQUNuQixjQUFjLGdGQUNkLHdCQUF3QixvSEFDeEIsT0FBTywwSUFDUCxvQkFBb0IsOEJBQ3BCLGNBQWMsb2lCQUNkLGFBQWEscURBQ2IsV0FBVyx5V0FDWCwyQkFBMkIsd0dBQzNCLDRCQUE0Qjs7MkZBTW5CLG9CQUFvQjtrQkE5QmhDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsT0FBTzt3QkFDUCxvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixXQUFXO3dCQUNYLDJCQUEyQjt3QkFDM0IsNEJBQTRCO3FCQUMvQixhQUNZLENBQUMsY0FBYyxDQUFDOzswQkF3QnhCLE1BQU07MkJBQUMsV0FBVztpU0FuQlosWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFTTixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQStDekMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEl0ZW1WYXJpYW50LCBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IFByb2R1Y3RMaXN0Q29udGVudE1vZGFsLCBQcm9kdWN0TGlzdE1vZGFsLCBQcm9kdWN0TGlzdFN0eWxlc01vZGFsIH0gZnJvbSAnLi9wcm9kdWN0LWxpc3QubW9kYWwnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IFBhZ25pbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnbmluYXRpb24vcGFnbmluYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEJvdHRvbVNoZWV0LCBNYXRCb3R0b21TaGVldE1vZHVsZSwgTWF0Qm90dG9tU2hlZXRSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ib3R0b20tc2hlZXQnO1xyXG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQlVTSU5FU1NfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2J1c2luZXNzLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRm9ybWF0ZUFtb3VudCB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2Ftb3VudC5waXBlJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDZGtEcmFnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFNwZWVkRGlhbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc3BlZWRkaWFsJztcclxuaW1wb3J0IHsgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gXCIuLi9zbWFsbC1wcm9kdWN0LWxpc3Rpbmcvc21hbGwtcHJvZHVjdC1saXN0aW5nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBQcm9kdWN0Q2FyZFRoZW1lIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2luZGV4JztcclxuaW1wb3J0IHsgQ2FyZFNrZWxldG9uTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvY2FyZC1za2VsZXRvbi1sb2FkZXIvY2FyZC1za2VsZXRvbi1sb2FkZXIuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBCYXNlTW9kZWwge1xyXG4gIG9wdGlvbjogc3RyaW5nLFxyXG4gIGlkOiBzdHJpbmcsXHJcbiAgaW1nVXJsOiBzdHJpbmcsXHJcbiAgc3RhdHVzOiBib29sZWFuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJvZHVjdC1saXN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBNYXRTbGlkZXJNb2R1bGUsXHJcbiAgICBQYWduaW5hdGlvbkNvbXBvbmVudCxcclxuICAgIC8vZGlyZWN0aXZlXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDZGtEcmFnLFxyXG4gICAgU3BlZWREaWFsTW9kdWxlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBNYXRCb3R0b21TaGVldE1vZHVsZSxcclxuICAgIE1hdFJhZGlvTW9kdWxlLFxyXG4gICAgRm9ybWF0ZUFtb3VudCxcclxuICAgIFRvYXN0TW9kdWxlLFxyXG4gICAgQ2FyZFNrZWxldG9uTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudFxyXG5dLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcHJvZHVjdC1saXN0LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0TGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBASW5wdXQoKSByZXNwb25zZURhdGE/OiBQcm9kdWN0W11cclxuICBASW5wdXQoKSBkYXRhPzogUHJvZHVjdExpc3RNb2RhbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFwaUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb250ZW50PzogUHJvZHVjdExpc3RDb250ZW50TW9kYWw7XHJcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWw7XHJcbiAgdG90YWxQYWdlczogbnVtYmVyID0gMDtcclxuXHJcbiAgcHVibGljIHNjcm9sbGluZ1ZhbHVlOiBudW1iZXIgPSAwO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKVxyXG4gIG9uV2luZG93U2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JvbGxpbmdWYWx1ZSA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXRCb3R0b21TaGVldDogTWF0Qm90dG9tU2hlZXQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBpdGVtczogTWVudUl0ZW1bXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGZpbHRlckJvdHRvbVNoZWV0UmVmOiBNYXRCb3R0b21TaGVldFJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xyXG4gIC8vIHByaXZhdGUgc29ydGluZ0RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBzb3J0aW5nRGlhbG9nUmVmOiBNYXRCb3R0b21TaGVldFJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgcHJpY2luZ01pbjogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgcHJpY2luZ01heDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgc29ydEJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHJpdmF0ZSBVU0VSX0NBUlQ6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgbWluUHJvZHVjdFByaWNlOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBtYXhQcm9kdWN0UHJpY2U6IG51bWJlciA9IDA7XHJcblxyXG4gIC8vIHdpbGwgY29tZSBmcm9tIGJhY2tlbmQgYXMgc2hvcCBhbmQgcmVzdHVyYW50IGNhbiBoYXZlIGRpZmZyZW50IGZpbHRlcnNcclxuICBwdWJsaWMgZmlsdGVyaW5nQXJyYXkgPSBbXHJcbiAgICB7IG5hbWU6IFwiTG93ZXN0IEZpcnN0XCIsIHZhbHVlOiBcImxvd2VzdFByaWNlXCIgfSxcclxuICAgIHsgbmFtZTogXCJIaWdoZXN0IEZpcnN0XCIsIHZhbHVlOiBcImhpZ2hlc3RQcmljZVwiIH1cclxuICBdO1xyXG5cclxuICBzY3JlZW5XaWR0aDogbnVtYmVyID0gMDtcclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OiByZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGdldFNjcmVlblNpemUoKSB7XHJcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJMaXN0OiBhbnlbXSA9IFtcIldvbWVuXCIsIFwiTWVuXCJdO1xyXG4gIHN0eWxlcz86IFByb2R1Y3RMaXN0U3R5bGVzTW9kYWw7XHJcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcclxuICBwYWdlTm86IG51bWJlciA9IDA7XHJcbiAgc2l6ZTogbnVtYmVyID0gMjA7XHJcbiAgc2VhcmNoVHh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHRoZW1lID0gUHJvZHVjdENhcmRUaGVtZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5pdGVtcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGljb246IFwicGkgcGktc2hvcHBpbmctY2FydFwiLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2NhcnQnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWNvbjogXCJwaSBwaS1ob21lXCIsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5idXR0b24gPSB0aGlzLmRhdGE/LmFjdGlvbi5idXR0b25zWzBdO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSByZXNwb25zZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmdldEFsbENhdGVnb3JpZXMoKTtcclxuICAgIHRoaXMuZ2V0QWxsQ29sbGVjdGlvbnMoKTtcclxuXHJcbiAgICB0aGlzLm1pblByb2R1Y3RQcmljZSA9IHRoaXMucHJpY2luZ01pbiA9IHRoaXMuZGF0YT8uc3R5bGVzLm1pblByaWNlID8/IDA7XHJcbiAgICB0aGlzLm1heFByb2R1Y3RQcmljZSA9IHRoaXMucHJpY2luZ01heCA9IHRoaXMuZGF0YT8uc3R5bGVzLm1heFByaWNlID8/IDEwMDA7XHJcblxyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHFQYXJhbTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVHh0ID0gcVBhcmFtW1wic2VhcmNoVHh0XCJdO1xyXG4gICAgICB0aGlzLnBhZ2VObyA9IHFQYXJhbVtcInBhZ2VOb1wiXSA/IE51bWJlcihxUGFyYW1bXCJwYWdlTm9cIl0pIDogMTtcclxuICAgICAgdGhpcy5zb3J0QnkgPSBxUGFyYW1bXCJzb3J0aW5nXCJdID8/IFwibG93ZXN0UHJpY2VcIjtcclxuICAgICAgdGhpcy5wcmljaW5nTWluID0gaXNOYU4oTnVtYmVyKHFQYXJhbVtcIm1pblByaWNlXCJdKSkgPyB0aGlzLm1pblByb2R1Y3RQcmljZSA6IE51bWJlcihxUGFyYW1bXCJtaW5QcmljZVwiXSk7XHJcbiAgICAgIHRoaXMucHJpY2luZ01heCA9IGlzTmFOKE51bWJlcihxUGFyYW1bXCJtYXhQcmljZVwiXSkpID8gdGhpcy5tYXhQcm9kdWN0UHJpY2UgOiBOdW1iZXIocVBhcmFtW1wibWF4UHJpY2VcIl0pO1xyXG4gICAgICB0aGlzLmZpbHRlckJ5Q2F0ZWdvcnlDb2xsZWN0aW9uUGFyYW0ocVBhcmFtW1wiY2F0ZWdvcnlcIl0sIHFQYXJhbVtcImNvbGxlY3Rpb25zXCJdKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBmaWx0ZXJCeUNhdGVnb3J5Q29sbGVjdGlvblBhcmFtKHFDYXRlZ29yaWVzOiBhbnksIHFDb2xsZWN0aW9uczogYW55KSB7XHJcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gcUNhdGVnb3JpZXM/LnNwbGl0KFwiK1wiKT8ubWFwKChjYXRlZ29yeTogc3RyaW5nKSA9PiBjYXRlZ29yeS5yZXBsYWNlQWxsKFwiX1wiLCBcIiBcIikudG9Mb3dlckNhc2UoKSkuZmlsdGVyKChjYXRlZ29yeTogc3RyaW5nKSA9PiBjYXRlZ29yeS5sZW5ndGggPiAwKTtcclxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gcUNvbGxlY3Rpb25zPy5zcGxpdChcIitcIik/Lm1hcCgoY29sbGVjdGlvbjogc3RyaW5nKSA9PiBjb2xsZWN0aW9uLnJlcGxhY2VBbGwoXCJfXCIsIFwiIFwiKS50b0xvd2VyQ2FzZSgpKS5maWx0ZXIoKGNvbGxlY3Rpb246IHN0cmluZykgPT4gY29sbGVjdGlvbi5sZW5ndGggPiAwKTtcclxuXHJcbiAgICB0aGlzLmNhdGVnb3JpZXM/LmZvckVhY2goKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5zdGF0dXMgPSBjYXRlZ29yaWVzPy5pbmNsdWRlcyhjYXRlZ29yeT8ub3B0aW9uPy50b0xvd2VyQ2FzZSgpKSA/PyBmYWxzZSk7XHJcbiAgICB0aGlzLmNvbGxlY3Rpb25zPy5mb3JFYWNoKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnN0YXR1cyA9IGNvbGxlY3Rpb25zPy5pbmNsdWRlcyhjb2xsZWN0aW9uPy5vcHRpb24/LnRvTG93ZXJDYXNlKCkpID8/IGZhbHNlKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuY2F0ZWdvcmllcywgdGhpcy5jb2xsZWN0aW9ucyk7XHJcbiAgICB0aGlzLmZpbHRlckxpc3QgPSBbXHJcbiAgICAgIC4uLnRoaXMuY2F0ZWdvcmllcz8uZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5zdGF0dXMpLm1hcCgoY2F0ZWdvcnkpID0+IHsgcmV0dXJuIHsgaWQ6IGNhdGVnb3J5LmlkLCBuYW1lOiBjYXRlZ29yeS5vcHRpb24gfSB9KSxcclxuICAgICAgLi4udGhpcy5jb2xsZWN0aW9ucz8uZmlsdGVyKChjb2xsZWN0aW9uOiBhbnkpID0+IGNvbGxlY3Rpb24uc3RhdHVzKS5tYXAoKGNvbGxlY3Rpb24pID0+IHsgcmV0dXJuIHsgaWQ6IGNvbGxlY3Rpb24uaWQsIG5hbWU6IGNvbGxlY3Rpb24ub3B0aW9uIH0gfSlcclxuICAgIF07XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmZpbHRlckxpc3QpO1xyXG4gICAgdGhpcy5maWx0ZXJJdGVtTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2F0ZWdvcmllcygpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsQ2F0ZWdvcmllcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzID0gcmVzcG9uc2UuZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5mZWF0dXJlZENvbGxlY3Rpb24gfHwgdHJ1ZSkubWFwKChjYXRlZ29yeTogYW55KSA9PiB7IHJldHVybiB7IG9wdGlvbjogY2F0ZWdvcnkuY2F0ZWdvcnlOYW1lLCBpZDogY2F0ZWdvcnkuY2F0ZWdvcnlJZCwgaW1nVXJsOiBjYXRlZ29yeS5pbWdVcmw/LlswXSwgc3RhdHVzOiBmYWxzZSB9IH0pO1xyXG4gICAgICBjb25zdCBxUGFyYW1Db2xsZWN0aW9ucyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJjb2xsZWN0aW9uc1wiXTtcclxuICAgICAgY29uc3QgcVBhcmFtQ2F0ZWdvcnkgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1wiY2F0ZWdvcnlcIl07XHJcbiAgICAgIHRoaXMuZmlsdGVyQnlDYXRlZ29yeUNvbGxlY3Rpb25QYXJhbShxUGFyYW1DYXRlZ29yeSwgcVBhcmFtQ29sbGVjdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEFsbENvbGxlY3Rpb25zKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxDb2xsZWN0aW9ucygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9ucyA9IHJlc3BvbnNlLmZpbHRlcigoY29sbGVjdGlvbjogYW55KSA9PiBjb2xsZWN0aW9uLmZlYXR1cmVkQ2F0ZWdvcnkgfHwgdHJ1ZSkubWFwKChjb2xsZWN0aW9uOiBhbnkpID0+IHsgcmV0dXJuIHsgb3B0aW9uOiBjb2xsZWN0aW9uLmNvbGxlY3Rpb25OYW1lLCBpZDogY29sbGVjdGlvbi5jb2xsZWN0aW9uSWQsIHN0YXR1czogZmFsc2UgfSB9KTtcclxuICAgICAgY29uc3QgcVBhcmFtQ29sbGVjdGlvbnMgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1wiY29sbGVjdGlvbnNcIl07XHJcbiAgICAgIGNvbnN0IHFQYXJhbUNhdGVnb3J5ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcImNhdGVnb3J5XCJdO1xyXG4gICAgICB0aGlzLmZpbHRlckJ5Q2F0ZWdvcnlDb2xsZWN0aW9uUGFyYW0ocVBhcmFtQ2F0ZWdvcnksIHFQYXJhbUNvbGxlY3Rpb25zKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZW1vdmVGaWx0ZXIoZmlsdGVyOiBhbnkpIHtcclxuICAgIHRoaXMuZmlsdGVyTGlzdCA9IHRoaXMuZmlsdGVyTGlzdC5maWx0ZXIoKGYpID0+IGYuaWQgIT0gZmlsdGVyLmlkKTtcclxuICAgIGNvbnN0IGZpbHRlckxpc3RJZHMgPSB0aGlzLmZpbHRlckxpc3QubWFwKChmaWx0ZXIpID0+IGZpbHRlci5pZCk7XHJcbiAgICB0aGlzLmNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LnN0YXR1cyA9IGZpbHRlckxpc3RJZHMuaW5jbHVkZXMoY2F0ZWdvcnkuaWQpKTtcclxuICAgIHRoaXMuY29sbGVjdGlvbnMuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zdGF0dXMgPSBmaWx0ZXJMaXN0SWRzLmluY2x1ZGVzKGNvbGxlY3Rpb24uaWQpKTtcclxuICAgIHRoaXMucGFnZU5vID0gMTtcclxuICAgIC8vIHNvcnRpbmcgc2hvdWxkIGFkZFxyXG4gICAgdGhpcy5uYXZpZ2F0ZUZpbHRlcih0aGlzLnNvcnRCeSA/PyBcImxvd2VzdFByaWNlXCIpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlQcm9kdWN0V2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdHlsZXM/LnRoZW1lID09PSB0aGlzLnRoZW1lLlRoZW1lMSB8fFxyXG4gICAgICAodGhpcy5zY3JlZW5XaWR0aCA8IDQ3NSAmJiB0aGlzLnN0eWxlcz8udGhlbWUgPT0gdGhpcy50aGVtZS5UaGVtZTIpXHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0V2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JlZW5XaWR0aCA+IDQ3NSA/ICh0aGlzLnNjcmVlbldpZHRoIDwgMTAyNSA/ICcyNSUnIDogJ2NhbGMoJyArICgoMTAwIC8gKHRoaXMuc3R5bGVzPy5lbGVtZW50SW5Sb3cgfHwgNCkpKSArICclKScpIDogKHRoaXMuc3R5bGVzPy5tb2JpbGVDb2x1bW4gPT09IDEgPyAnMTAwJScgOiAnNTAlJylcclxuICB9XHJcblxyXG4gIHByb2NlZWRUb1Byb2R1Y3REZXNjKHByb2R1Y3RJZDogYW55KSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2RldGFpbHMnXSwgeyBxdWVyeVBhcmFtczogeyBpZDogcHJvZHVjdElkIH0gfSk7XHJcbiAgICAvLyB0aGlzLl9ldmVudFNlcnZpY2UucmVkaXJlY3RUb1BhZ2UuZW1pdCh7cmVkaXJlY3RUbzogJy9kZXRhaWxzJywgZGF0YToge3Byb2R1Y3RJZDogcHJvZHVjdElkfX0pXHJcbiAgfVxyXG4gIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5jYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5zdGF0dXMgPSBmYWxzZSk7XHJcbiAgICB0aGlzLmNvbGxlY3Rpb25zLmZvckVhY2goKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc3RhdHVzID0gZmFsc2UpO1xyXG4gICAgdGhpcy5wcmljaW5nTWluID0gdGhpcy5taW5Qcm9kdWN0UHJpY2U7XHJcbiAgICB0aGlzLnByaWNpbmdNYXggPSB0aGlzLm1heFByb2R1Y3RQcmljZTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbGlzdCddKTtcclxuICB9XHJcbiAgdG9nZ2xlSXRlbVRvRmF2KGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50LCBwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQUREJyB8ICdSRU1PVkUnKSB7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICBwcm9kdWN0LndoaXNsaXN0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnV2lzaGxpc3QnLCBkZXRhaWw6ICdJdGVtIGFkZGVkIHRvIHlvdXIgd2lzaGxpc3QnIH0pO1xyXG4gICAgICBpZiAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICAgIGl0ZW1WYXJpZW50Lndpc2hsaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3QgYXMgUHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUocHJvZHVjdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBwcm9kdWN0LndoaXNsaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ1dpc2hsaXN0JywgZGV0YWlsOiAnSXRlbSByZW1vdmVkIGZyb20geW91ciB3aXNobGlzdCcgfSk7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUocHJvZHVjdC52YXJpZW50SWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2R1Y3Qud2hpc2xpc3QpIHtcclxuICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUPy5wdXNoKG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuVVNFUl9XSVNITElTVCA9IHRoaXMuVVNFUl9XSVNITElTVD8uZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IGl0ZW0udmFyaWVudElkICE9IHByb2R1Y3QudmFyaWVudElkKSA/PyBbXTtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBhZGRJdGVtVG9DYXJ0KGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50LCBwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3QpKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0NhcnQnLCBkZXRhaWw6ICdJdGVtIGlzIG5vdCBhdmFpbGFibGUgYXMgb2Ygbm93LiBXZSB3aWxsIG5vdGlmeSB5b3Ugb25jZSBhdmFpbGFibGUnIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBwcm9kdWN0LnF1YW50aXR5ICs9ICh0eXBlID09ICdBREQnID8gMSA6IC0xKTtcclxuICAgIGlmIChwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvQ2FydChwcm9kdWN0LCBpdGVtVmFyaWVudC52YXJpYW50SWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICBsZXQgaXNQcmVzZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS52YXJpZW50SWQgPT0gcHJvZHVjdC52YXJpZW50SWQpIHtcclxuICAgICAgICAgIGl0ZW0ucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICghaXNQcmVzZW50KVxyXG4gICAgICAgIHRoaXMuVVNFUl9DQVJUPy5wdXNoKG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUID0gdGhpcy5VU0VSX0NBUlQ/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlYXJjaFByb2R1Y3QoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRlRmlsdGVyKHRoaXMuc29ydEJ5ID8/IFwibG93ZXN0UHJpY2VcIik7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RWYXJpZW50KHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmllbnQ6IEl0ZW1WYXJpYW50KSB7XHJcbiAgICAvLyBuZWRkIHRvIGNoYW5nZVxyXG4gICAgcHJvZHVjdC52YXJpZW50SWQgPSB2YXJpZW50LnZhcmlhbnRJZDtcclxuICAgIHByb2R1Y3QuaXRlbUltYWdlcyA9IHZhcmllbnQudmFyaWFudEltYWdlcztcclxuICAgIHByb2R1Y3QucHJpY2UgPSB2YXJpZW50Lml0ZW1WYXJpYW50UHJpY2U7XHJcbiAgICBwcm9kdWN0Lml0ZW1JbnZlbnRvcnkgPSB2YXJpZW50Lml0ZW1JbnZlbnRvcnk7XHJcbiAgICBwcm9kdWN0LnF1YW50aXR5ID0gdGhpcy5nZXRWYXJpZW50UXVhbnRpdHkodmFyaWVudCk7XHJcbiAgICBwcm9kdWN0LndoaXNsaXN0ID0gdGhpcy5pc1ZhcmllbnRQcmVzZW50SW5XaXNodGxpc3QodmFyaWVudCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0VmFyaWVudFF1YW50aXR5KHByb2R1Y3RWYXJpZW50OiBJdGVtVmFyaWFudCk6IG51bWJlciB7XHJcbiAgICBsZXQgaXRlbVF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICBpZiAocHJvZHVjdFZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKVxyXG4gICAgICAgIGl0ZW1RdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGl0ZW1RdWFudGl0eTtcclxuICB9XHJcbiAgcHJpdmF0ZSBpc1ZhcmllbnRQcmVzZW50SW5XaXNodGxpc3QocHJvZHVjdFZhcmllbnQ6IEl0ZW1WYXJpYW50KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcHJlc2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5VU0VSX1dJU0hMSVNUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgaWYgKHByb2R1Y3RWYXJpZW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZClcclxuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcclxuICAgIH0pXHJcbiAgICByZXR1cm4gcHJlc2VudDtcclxuICB9XHJcbiAgZ29Ub0hvbWUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG5cclxuICBjYXRlZ29yaWVzOiBCYXNlTW9kZWxbXSA9IFtdO1xyXG4gIGNvbGxlY3Rpb25zOiBCYXNlTW9kZWxbXSA9IFtdO1xyXG4gIGFwcGx5RmlsdGVyKGNhdGVnb3J5PzogYW55LCB0eXBlPzogJ1NPUlQnIHwgJ0ZJTFRFUicpIHtcclxuICAgIGxldCBzb3J0aW5nID0gXCJcIjtcclxuICAgIHRoaXMucGFnZU5vID0gMTtcclxuXHJcbiAgICBpZiAodHlwZSA9PSBcIkZJTFRFUlwiKVxyXG4gICAgICBjYXRlZ29yeS5zdGF0dXMgPSAhY2F0ZWdvcnkuc3RhdHVzO1xyXG4gICAgZWxzZSBpZiAodHlwZSA9PSBcIlNPUlRcIilcclxuICAgICAgc29ydGluZyA9IGNhdGVnb3J5Py50YXJnZXQ/LnZhbHVlO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyQm90dG9tU2hlZXRSZWY/LmRpc21pc3MoKTtcclxuICAgIHRoaXMubmF2aWdhdGVGaWx0ZXIoc29ydGluZyk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZUZpbHRlcihzb3J0aW5nOiBzdHJpbmcpIHtcclxuXHJcbiAgICBsZXQgc2VsZWN0ZWRDYXRlZ29yeSA9IFwiXCI7XHJcbiAgICBsZXQgc2VsZWN0ZWRDb2xsZWN0aW9uID0gXCJcIjtcclxuICAgIHRoaXMuY2F0ZWdvcmllcy5maWx0ZXIoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5zdGF0dXMpLm1hcCgoY2F0ZWdvcnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5jYXRlZ29yeSxcclxuICAgICAgICBzbHVnOiBjYXRlZ29yeS5vcHRpb24ucmVwbGFjZUFsbChcIiBcIiwgXCJfXCIpXHJcbiAgICAgIH1cclxuICAgIH0pLmZvckVhY2goKGNhdGVnb3J5KSA9PiBzZWxlY3RlZENhdGVnb3J5ICs9IChjYXRlZ29yeS5zbHVnICsgXCIrXCIpKTtcclxuXHJcbiAgICB0aGlzLmNvbGxlY3Rpb25zLmZpbHRlcigoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zdGF0dXMpLm1hcCgoY29sbGVjdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNvbGxlY3Rpb24sXHJcbiAgICAgICAgc2x1ZzogY29sbGVjdGlvbi5vcHRpb24ucmVwbGFjZUFsbChcIiBcIiwgXCJfXCIpXHJcbiAgICAgIH1cclxuICAgIH0pLmZvckVhY2goKGNvbGxlY3Rpb24pID0+IHNlbGVjdGVkQ29sbGVjdGlvbiArPSAoY29sbGVjdGlvbi5zbHVnICsgXCIrXCIpKTtcclxuXHJcbiAgICB0aGlzLnNvcnRpbmdEaWFsb2dSZWY/LmRpc21pc3MoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbGlzdCddLCB7IHF1ZXJ5UGFyYW1zOiB7IG1pblByaWNlOiB0aGlzLnByaWNpbmdNaW4sIG1heFByaWNlOiB0aGlzLnByaWNpbmdNYXgsIGNhdGVnb3J5OiBzZWxlY3RlZENhdGVnb3J5LCBjb2xsZWN0aW9uczogc2VsZWN0ZWRDb2xsZWN0aW9uLCBzb3J0aW5nOiBzb3J0aW5nLCBwYWdlTm86IHRoaXMucGFnZU5vLCBzZWFyY2hUeHQ6IHRoaXMuc2VhcmNoVGV4dCB9IH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVySXRlbUxpc3QoKSB7XHJcbiAgICBjb25zdCBjb2xsZWN0aW9uSWRzID0gdGhpcy5jb2xsZWN0aW9ucy5maWx0ZXIoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc3RhdHVzKS5tYXAoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uaWQpO1xyXG4gICAgY29uc3QgY2F0ZWdvcnlJZHMgPSB0aGlzLmNhdGVnb3JpZXMuZmlsdGVyKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkuc3RhdHVzKS5tYXAoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5pZCk7XHJcbiAgICB0aGlzLmFwaUxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0RmlsdGVyZWRQcm9kdWN0KGNvbGxlY3Rpb25JZHMsIGNhdGVnb3J5SWRzLCB0aGlzLnNlYXJjaFR4dCwgdGhpcy5wcmljaW5nTWluLCB0aGlzLnByaWNpbmdNYXgsIHRoaXMuc29ydEJ5ID8/IFwibG93ZXN0UHJpY2VcIiwgdGhpcy5wYWdlTm8gLSAxLCB0aGlzLnNpemUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlc3BvbnNlLmNvdW50O1xyXG4gICAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocmVzcG9uc2UuY291bnQgLyB0aGlzLnNpemUpO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlVTRVJfQ0FSVCA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhPy5mb3JFYWNoKChwcm9kdWN0OiBQcm9kdWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdC5pdGVtSWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgPSBwcm9kdWN0Py5pdGVtVmFyaWFudD8uWzBdO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtSW1hZ2VzID0gaXRlbVZhcmllbnQudmFyaWFudEltYWdlcyA/PyBbXTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LnByaWNlID0gaXRlbVZhcmllbnQuaXRlbVZhcmlhbnRQcmljZTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHdpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICB3aXNobGlzdFJlc3BvbnNlLm9uc3VjY2VzcyA9ICh3aGlzbGlzdERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUID0gd2hpc2xpc3REYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhPy5mb3JFYWNoKChwcm9kdWN0OiBQcm9kdWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaXRlbUlkID09IHByb2R1Y3QuaXRlbUlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50ID0gcHJvZHVjdD8uaXRlbVZhcmlhbnQ/LlswXTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1WYXJpZW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3QuaXRlbUltYWdlcyA9IGl0ZW1WYXJpZW50Py52YXJpYW50SW1hZ2VzID8/IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3QucHJpY2UgPSBpdGVtVmFyaWVudC5pdGVtVmFyaWFudFByaWNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3Qud2hpc2xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBwcm9kdWN0LndoaXNsaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuYXBpTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9wZW5GaWx0ZXIoRmlsdGVyU2VjdGlvbjogYW55KSB7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJCb3R0b21TaGVldFJlZiA9IHRoaXMubWF0Qm90dG9tU2hlZXQub3BlbihGaWx0ZXJTZWN0aW9uKTtcclxuICB9XHJcbiAgb3BlblNvcnRpbmcoU29ydGluZ1NlY3Rpb246IGFueSkge1xyXG4gICAgdGhpcy5zb3J0aW5nRGlhbG9nUmVmID0gdGhpcy5tYXRCb3R0b21TaGVldC5vcGVuKFNvcnRpbmdTZWN0aW9uLCB7fSk7XHJcbiAgfVxyXG4gIHBhZ2luYXRpb25DaGFuZ2UocGFnZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2VObyA9IHBhZ2U7XHJcbiAgICB0aGlzLm5hdmlnYXRlRmlsdGVyKHRoaXMuc29ydEJ5ID8/IFwibG93ZXN0UHJpY2VcIik7XHJcbiAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDA7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICB9XHJcblxyXG4gIGNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5zb3J0aW5nRGlhbG9nUmVmPy5kaXNtaXNzKCk7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3Q6IFByb2R1Y3QpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBwcm9kdWN0Lml0ZW1JbnZlbnRvcnk/Lm9wZW5pbmdTdG9jayA9PSAwO1xyXG4gIH1cclxuICBnZXRJdGVtVmFyaWVudChwcm9kdWN0OiBQcm9kdWN0LCB2YXJpZW50SWQ6IHN0cmluZyk6IEl0ZW1WYXJpYW50IHwgbnVsbCB7XHJcbiAgICBsZXQgc2VsZWN0ZWRWYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvZHVjdD8uaXRlbVZhcmlhbnQ/LmZvckVhY2goKHZhcmllbnQ6IEl0ZW1WYXJpYW50KSA9PiB7XHJcbiAgICAgIGlmICh2YXJpZW50LnZhcmlhbnRJZCA9PSB2YXJpZW50SWQpXHJcbiAgICAgICAgc2VsZWN0ZWRWYXJpZW50ID0gdmFyaWVudDtcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkVmFyaWVudDtcclxuICB9XHJcbiAgZWRpdFNlY3Rpb24oKSB7XHJcblxyXG4gICAgXHJcbiAgICBpZih3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgNDc1O1xyXG4gIH1cclxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCVVNJTkVTU19DT05TVEFOVFMuQ1VSUkVOQ1k7XHJcbiAgfVxyXG4gIGdldCBtaW5TaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy50b3RhbENvdW50LCAoKCh0aGlzLnBhZ2VObyAtIDEpICogdGhpcy5zaXplICsgMSkgKyB0aGlzLnNpemUpKTtcclxuICB9XHJcbn1cclxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIiBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIj48L3AtdG9hc3Q+XHJcblxyXG48ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiAqbmdJZj1cImlzTW9iaWxlXCIgW25nQ2xhc3NdPVwieydpbnB1dC1ncm91cC1zdGlja3knOiBzY3JvbGxpbmdWYWx1ZSA+IDIwfVwiPlxyXG4gIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUHJvZHVjdC4uXCIgYXJpYS1sYWJlbD1cIlNlYXJjaCBQcm9kdWN0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoUHJvZHVjdCgpXCI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICA8c2VjdGlvbiBbaWRdPVwiZGF0YT8uaWRcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCB0b3RhbC1jb250YWluZXJcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBzaW1wb0hvdmVyXHJcbiAgICAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtzdHlsZS5wYWRkaW5nVG9wLnB4XT1cImlzTW9iaWxlID8gJzAgIWltcG9ydGFudCcgOiAnJ1wiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcblxyXG4gICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaXNNb2JpbGVcIiBjbGFzcz1cImJhY2stdG8taG9tZVwiIGNka0RyYWcgKGNsaWNrKT1cImdvVG9DYXJ0KClcIj5cclxuICAgICAgPG1hdC1pY29uPmhvbWU8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgY2xhc3M9XCJzcGVlZGRpYWwtbGluZWFyXCIgKm5nSWY9XCJpc01vYmlsZVwiPlxyXG4gICAgICAgIDxwLXNwZWVkRGlhbCBbbW9kZWxdPVwiaXRlbXNcIiBkaXJlY3Rpb249XCJ1cFwiIFtidXR0b25TdHlsZV09XCJ7J2JvcmRlci1yYWRpdXMnOiAnNTAlJywgJ2hlaWdodCc6ICczMHB4J31cIiAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgb25seURlc2t0b3BcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci10b3Atc2VjdGlvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtYmFzZWxpbmVcIiBzdHlsZT1cIndpZHRoOiAyMCU7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlciBib2R5LWxhcmdlXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIEZpbHRlcnNcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICBDbGVhciBhbGxcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgc3R5bGU9XCJ3aWR0aDogODAlO21hcmdpbi1sZWZ0OiAxMHB4O1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtNiBmdy1ub3JtYWxcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlNob3dpbmcge3socGFnZU5vIC0xKSpzaXplfX0te3ttaW5TaXplfX0gb2Yge3sgdG90YWxDb3VudCB9fSBSZXN1bHRzPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IGZ3LW5vcm1hbCBtci0zXCI+U29ydCBieTwvZGl2PlxyXG4gICAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cImFwcGx5RmlsdGVyKCRldmVudCwgJ1NPUlQnKVwiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImZpbHRlci52YWx1ZVwiICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyaW5nQXJyYXlcIj57e2ZpbHRlci5uYW1lfX08L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCB3LTEwMCBvbmx5TW9iaWxlXCIgc3R5bGU9XCJnYXA6IDVweDsgb3ZlcmZsb3cteDogYXV0bztcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyTGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgY2hpcFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICA8c3Bhbj57e2ZpbHRlci5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgbWFyZ2luLWxlZnQ6IDVweDtcIiAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGZpbHRlcilcIj5YPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXNpZGUgb25seURlc2t0b3BcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRmlsdGVyU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBjbGFzcz1cInJpZ2h0LXNpZGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFwaUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtcGFyZW50XCIgKm5nSWY9XCJyZXNwb25zZURhdGEgJiYgcmVzcG9uc2VEYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHJlc3BvbnNlRGF0YVwiIGNsYXNzPVwicHJvZHVjdFwiIFtzdHlsZS53aWR0aF09XCJhcHBseVByb2R1Y3RXaWR0aCgpID8gZ2V0UHJvZHVjdFdpZHRoKCkgOiAnJ1wiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlcz8udGhlbWUgPT0gdGhlbWUuVGhlbWUxXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJQcm9kdWN0RGVzYzsgY29udGV4dDoge2RhdGE6IHByb2R1Y3R9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZXM/LnRoZW1lICE9IHRoZW1lLlRoZW1lMVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c2ltcG8tc21hbGwtcHJvZHVjdC1saXN0aW5nIFtwcm9kdWN0XT1cInByb2R1Y3RcIiBbZGF0YV09XCJkYXRhXCIgW2lzU2Nyb2xsYWJsZV09XCJzY3JlZW5XaWR0aCA+IDQ3NVwiPjwvc2ltcG8tc21hbGwtcHJvZHVjdC1saXN0aW5nPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNpbXBvLXBhZ25pbmF0aW9uIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDMwcHg7XCIgW3RvdGFsUGFnZXNdPVwidG90YWxQYWdlc1wiIFtjdXJyZW50UGFnZV09XCJwYWdlTm9cIiAocGFnaW5hdGlvbkNoYW5nZSk9XCJwYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIj48L3NpbXBvLXBhZ25pbmF0aW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZW1wdHktY2FydFwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgc3R5bGU9XCJoZWlnaHQ6IDE1MHB4OyB3aWR0aDogMTUwcHg7XCIgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8xMDcyMTNjMTcxNjU0MzMzNDA0MGVtcHR5LWNhcnQucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICBQcm9kdWN0IGxpc3QgaXMgZW1wdHlcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC00XCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICBMb29rcyBsaWtlIG5vIGl0ZW0gaXMgcHJlc2VudCB3aXRoIGZpbHRlci4gR28gYWhlYWQgJiBleHBsb3JlIHRvcCBjYXRlZ29yaWVzLlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNpbXBvLWNhcmQtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiYXBpTG9hZGluZ1wiPjwvc2ltcG8tY2FyZC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1maWx0ZXJcIltzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmaWx0ZXItdGV4dFwiIHN0eWxlPVwiZ2FwOiAxMHB4XCIgKGNsaWNrKT1cIm9wZW5Tb3J0aW5nKFNvcnRpbmdTZWN0aW9uKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPnNvcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+U29ydCBieTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmlsdGVyLXRleHRcIiBzdHlsZT1cImdhcDogMTBweFwiIChjbGljayk9XCJvcGVuRmlsdGVyKEZpbHRlclNlY3Rpb24pXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+RmlsdGVyPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiIFtpc0Vjb21tZXJjZV09XCJ0cnVlXCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cclxuICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICB3aWR0aDogJzEwMCUnLFxyXG4gIGhlaWdodDogJzQwdmgnLFxyXG4gICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgJ3JpZ2h0JzogJzVweCdcclxufVwiPlxyXG48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbjxuZy10ZW1wbGF0ZSAjRmF2b3VyaXRlVGFncyBsZXQtcHJvZHVjdD1cImRhdGFcIj5cclxuICA8bWF0LWljb24gY2xhc3M9XCJmYXYtaWNvblwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cInRvZ2dsZUl0ZW1Ub0ZhdigkZXZlbnQsIHByb2R1Y3QsICdBREQnKVwiICpuZ0lmPVwiIXByb2R1Y3Qud2hpc2xpc3RcIj5mYXZvcml0ZV9ib3JkZXI8L21hdC1pY29uPlxyXG4gIDxtYXQtaWNvbiBjbGFzcz1cImZhdi1pY29uXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwidG9nZ2xlSXRlbVRvRmF2KCRldmVudCwgcHJvZHVjdCwgJ1JFTU9WRScpXCIgKm5nSWY9XCJwcm9kdWN0LndoaXNsaXN0XCI+ZmF2b3JpdGU8L21hdC1pY29uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNGaWx0ZXJTZWN0aW9uPlxyXG4gIDxzZWN0aW9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtLWF1dG9cIiBzdHlsZT1cIndpZHRoOiA5NSU7XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJMaXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBjaGlwXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxzcGFuPnt7ZmlsdGVyLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoZmlsdGVyKVwiPlg8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcy1zZWN0aW9uXCIgKm5nSWY9XCJjYXRlZ29yaWVzPy5sZW5ndGhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMgaGVhZGluZy1zbWFsbFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgU2hvcCBieSBjYXRlZ29yaWVzXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktb3B0aW9uc1wiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyKGNhdGVnb3J5LCAnRklMVEVSJylcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiXCIgaWQ9XCJcIiBbY2hlY2tlZF09XCJjYXRlZ29yeS5zdGF0dXNcIiAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmltLXRleHRcIj57e2NhdGVnb3J5Lm9wdGlvbiB8IHVwcGVyY2FzZX19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcy1zZWN0aW9uXCIgKm5nSWY9XCJjb2xsZWN0aW9ucz8ubGVuZ3RoXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMgaGVhZGluZy1zbWFsbFwiPlxyXG4gICAgICAgIFNob3AgYnkgY29sbGVjdGlvbnNcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1vcHRpb25zXCIgKm5nRm9yPVwibGV0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnNcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoY29sbGVjdGlvbiwgJ0ZJTFRFUicpXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJcIiBpZD1cIlwiIFtjaGVja2VkXT1cImNvbGxlY3Rpb24uc3RhdHVzXCIgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJpbS10ZXh0XCI+e3tjb2xsZWN0aW9uLm9wdGlvbiB8IHVwcGVyY2FzZX19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInByaWNlLXNlY3Rpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMgaGVhZGluZy1zbWFsbFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgU2hvcCBieSBwcmljZVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bWF0LXNsaWRlciBjbGFzcz1cIm1hdC1zbGlkZXJcIiBbbWluXT1cIm1pblByb2R1Y3RQcmljZVwiIFttYXhdPVwibWF4UHJvZHVjdFByaWNlXCIgc3R5bGU9XCJ3aWR0aDogODclO1wiPlxyXG4gICAgICAgICAgPGlucHV0IG1hdFNsaWRlclN0YXJ0VGh1bWIgWyhuZ01vZGVsKV09XCJwcmljaW5nTWluXCI+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0U2xpZGVyRW5kVGh1bWIgWyhuZ01vZGVsKV09XCJwcmljaW5nTWF4XCI+XHJcbiAgICAgICAgPC9tYXQtc2xpZGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlLWJ1dHRvbi1zZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhcHBseUZpbHRlcigpXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIj5GaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcmFuZ2VcIj5cclxuICAgICAgICAgIFByaWNlOiA8c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj57eyBwcmljaW5nTWluIH19IC0gPHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+e3sgcHJpY2luZ01heCB8IGZvcm1hdGVBbW91bnQgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjQ2F0ZWdvcnlGaWx0ZXJTZWN0aW9uPlxyXG4gIDxzZWN0aW9uPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiY2F0ZWdvcnkuaW1nVXJsXCI+XHJcbiAgICAgICAgPHNwYW4+e3sgY2F0ZWdvcnkub3B0aW9uIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjU29ydGluZ1NlY3Rpb24+XHJcbiAgPHNlY3Rpb24gc3R5bGU9XCJwYWRkaW5nOiAxMHB4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcyBoZWFkaW5nLXNtYWxsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtLWNlbnRlciBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cclxuICAgICAgPHNwYW4+U29ydCBieTwvc3Bhbj5cclxuICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LXJhZGlvLWdyb3VwIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IHNvcnRpbmdUeXBlIG9mIGZpbHRlcmluZ0FycmF5XCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyKCRldmVudCwgJ1NPUlQnKVwiPnt7c29ydGluZ1R5cGUubmFtZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNQcm9kdWN0RGVzYyBsZXQtcHJvZHVjdD1cImRhdGFcIj5cclxuICA8ZGl2ICpuZ0lmPVwiIShwcm9kdWN0Lml0ZW1JbWFnZXM/Lmxlbmd0aCAmJiBwcm9kdWN0Lml0ZW1JbWFnZXM/LlswXT8uaW1nVXJsKVwiIGNsYXNzPVwiZGVmYXVsdC1pbWFnZSBwb3NpdGlvbi1yZWxhdGl2ZVwiIChjbGljayk9XCJwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0Lml0ZW1JZClcIj5cclxuICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBzcmM9XCJodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnXCIgYWx0PVwiXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRmF2b3VyaXRlVGFnczsgY29udGV4dDoge2RhdGE6IHByb2R1Y3R9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInByb2R1Y3QuaXRlbUltYWdlcz8ubGVuZ3RoICYmIHByb2R1Y3QuaXRlbUltYWdlcz8uWzBdPy5pbWdVcmxcIiBjbGFzcz1cImRlZmF1bHQtaW1hZ2UgcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2spPVwicHJvY2VlZFRvUHJvZHVjdERlc2MocHJvZHVjdC5pdGVtSWQpXCI+XHJcbiAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiICAgW3NyY109XCJwcm9kdWN0Py5pdGVtSW1hZ2VzPy5bMF0/LmltZ1VybFwiIGFsdD1cIlwiIGNsYXNzPVwicHJvZHVjdC1pbWdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGYXZvdXJpdGVUYWdzOyBjb250ZXh0OiB7ZGF0YTogcHJvZHVjdH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibXQtMiB3LTEwMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtbmFtZSBoZWFkaW5nLWxhcmdlIHctMTAwIHRleHQtbGVmdCB0cmltLXRleHRcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7IHByb2R1Y3QubmFtZSB9fTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInZhcmllbnQtbGlzdFwiICpuZ0lmPVwicHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YXJpZW50IG9mIHByb2R1Y3Q/Lml0ZW1WYXJpYW50OyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiICAgW3NyY109XCJ2YXJpZW50LnZhcmlhbnRJbWFnZXM/LlswXT8uaW1nVXJsXCIgYWx0PVwiXCIgY2xhc3M9XCJ2YXJpZW50XCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZC12YXJpZW50JzogdmFyaWVudC52YXJpYW50SWQgPT0gcHJvZHVjdC52YXJpZW50SWR9XCIgW3N0eWxlLmJvcmRlckNvbG9yXT1cInZhcmllbnQudmFyaWFudElkID09IHByb2R1Y3QudmFyaWVudElkID8gJ2JsdWUnIDogJ3RyYW5zcGFyZW50J1wiIChjbGljayk9XCJzZWxlY3RWYXJpZW50KHByb2R1Y3QsIHZhcmllbnQpXCI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW0tY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcmljZSBib2R5LWxhcmdlIHRleHQtbGVmdCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc2NvdW50ZWQtcHJpY2VcIltzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj5cclxuICAgICAgICAgIHt7cHJvZHVjdC5wcmljZS5kaXNjb3VudGVkUHJpY2V9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dCdXR0b25cIiBjbGFzcz1cImFkZC10by1jYXJ0LWJ0blwiPlxyXG4gICAgICAgIDxidXR0b24gc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkKyhidXR0b24/LmlkIHx8ICcnKVwiIFtidXR0b25TdHlsZV09XCJidXR0b24/LnN0eWxlc1wiXHJcbiAgICAgICAgICBbY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiIXByb2R1Y3QucXVhbnRpdHkgJiYgIWlzSXRlbU91dE9mU3RvY2socHJvZHVjdClcIiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydCgkZXZlbnQsIHByb2R1Y3QsICdBREQnKVwiPnt7YnV0dG9uPy5jb250ZW50Py5sYWJlbCA/PyAnQWRkIHRvIENhcnQnfX08L2J1dHRvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicXVhbnRpdHlcIiAqbmdJZj1cInByb2R1Y3QucXVhbnRpdHkgJiYgIWlzSXRlbU91dE9mU3RvY2socHJvZHVjdClcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydCgkZXZlbnQsIHByb2R1Y3QsICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj57e3Byb2R1Y3QucXVhbnRpdHl9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KCRldmVudCwgcHJvZHVjdCwgJ0FERCcpXCI+Kzwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGRpc2FibGVkIGNsYXNzPVwib3V0LW9mLXN0b2NrXCIgKm5nSWY9XCJpc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3QpXCI+T3V0IE9mIFN0b2NrPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
458
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtbGlzdC9wcm9kdWN0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1saXN0L3Byb2R1Y3QtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUt4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9C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QyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi8uLi9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgUHJvZHVjdExpc3RDb250ZW50TW9kYWwsIFByb2R1Y3RMaXN0TW9kYWwsIFByb2R1Y3RMaXN0U3R5bGVzTW9kYWwgfSBmcm9tICcuL3Byb2R1Y3QtbGlzdC5tb2RhbCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgUGFnbmluYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wYWduaW5hdGlvbi9wYWduaW5hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQsIE1hdEJvdHRvbVNoZWV0TW9kdWxlLCBNYXRCb3R0b21TaGVldFJlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldCc7XHJcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBCVVNJTkVTU19DT05TVEFOVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYnVzaW5lc3MuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBGb3JtYXRlQW1vdW50IH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvYW1vdW50LnBpcGUnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENka0RyYWcgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgU3BlZWREaWFsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zcGVlZGRpYWwnO1xyXG5pbXBvcnQgeyBTbWFsbFByb2R1Y3RMaXN0aW5nQ29tcG9uZW50IH0gZnJvbSBcIi4uL3NtYWxsLXByb2R1Y3QtbGlzdGluZy9zbWFsbC1wcm9kdWN0LWxpc3RpbmcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFByb2R1Y3RDYXJkVGhlbWUgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBDYXJkU2tlbGV0b25Mb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy9jYXJkLXNrZWxldG9uLWxvYWRlci9jYXJkLXNrZWxldG9uLWxvYWRlci5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIEJhc2VNb2RlbCB7XHJcbiAgb3B0aW9uOiBzdHJpbmcsXHJcbiAgaWQ6IHN0cmluZyxcclxuICBpbWdVcmw6IHN0cmluZyxcclxuICBzdGF0dXM6IGJvb2xlYW5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1wcm9kdWN0LWxpc3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIE1hdFNsaWRlck1vZHVsZSxcclxuICAgIFBhZ25pbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgLy9kaXJlY3RpdmVcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENka0RyYWcsXHJcbiAgICBTcGVlZERpYWxNb2R1bGUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE1hdEJvdHRvbVNoZWV0TW9kdWxlLFxyXG4gICAgTWF0UmFkaW9Nb2R1bGUsXHJcbiAgICBGb3JtYXRlQW1vdW50LFxyXG4gICAgVG9hc3RNb2R1bGUsXHJcbiAgICBDYXJkU2tlbGV0b25Mb2FkZXJDb21wb25lbnQsXHJcbiAgICBTbWFsbFByb2R1Y3RMaXN0aW5nQ29tcG9uZW50XHJcbl0sXHJcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcm9kdWN0LWxpc3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IFByb2R1Y3RbXVxyXG4gIEBJbnB1dCgpIGRhdGE/OiBQcm9kdWN0TGlzdE1vZGFsO1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXBpTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnRlbnQ/OiBQcm9kdWN0TGlzdENvbnRlbnRNb2RhbDtcclxuICBidXR0b24/OiBCdXR0b25Nb2RlbDtcclxuICB0b3RhbFBhZ2VzOiBudW1iZXIgPSAwO1xyXG5cclxuICBwdWJsaWMgc2Nyb2xsaW5nVmFsdWU6IG51bWJlciA9IDA7XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dTY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcInNjcm9sbGluZ1wiKTtcclxuICAgIHRoaXMuc2Nyb2xsaW5nVmFsdWUgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0Qm90dG9tU2hlZXQ6IE1hdEJvdHRvbVNoZWV0LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgaXRlbXM6IE1lbnVJdGVtW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJCb3R0b21TaGVldFJlZjogTWF0Qm90dG9tU2hlZXRSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcclxuICAvLyBwcml2YXRlIHNvcnRpbmdEaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgc29ydGluZ0RpYWxvZ1JlZjogTWF0Qm90dG9tU2hlZXRSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHByaWNpbmdNaW46IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHByaWNpbmdNYXg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHNvcnRCeTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHByaXZhdGUgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9XSVNITElTVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHVibGljIG1pblByb2R1Y3RQcmljZTogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgbWF4UHJvZHVjdFByaWNlOiBudW1iZXIgPSAwO1xyXG5cclxuICAvLyB3aWxsIGNvbWUgZnJvbSBiYWNrZW5kIGFzIHNob3AgYW5kIHJlc3R1cmFudCBjYW4gaGF2ZSBkaWZmcmVudCBmaWx0ZXJzXHJcbiAgcHVibGljIGZpbHRlcmluZ0FycmF5ID0gW1xyXG4gICAgeyBuYW1lOiBcIkxvd2VzdCBGaXJzdFwiLCB2YWx1ZTogXCJsb3dlc3RQcmljZVwiIH0sXHJcbiAgICB7IG5hbWU6IFwiSGlnaGVzdCBGaXJzdFwiLCB2YWx1ZTogXCJoaWdoZXN0UHJpY2VcIiB9XHJcbiAgXTtcclxuXHJcbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzogcmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuICBnZXRTY3JlZW5TaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyTGlzdDogYW55W10gPSBbXCJXb21lblwiLCBcIk1lblwiXTtcclxuICBzdHlsZXM/OiBQcm9kdWN0TGlzdFN0eWxlc01vZGFsO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgcGFnZU5vOiBudW1iZXIgPSAwO1xyXG4gIHNpemU6IG51bWJlciA9IDIwO1xyXG4gIHNlYXJjaFR4dDogc3RyaW5nID0gXCJcIjtcclxuICB0aGVtZSA9IFByb2R1Y3RDYXJkVGhlbWU7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuaXRlbXMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpY29uOiBcInBpIHBpLXNob3BwaW5nLWNhcnRcIixcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9jYXJ0J10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGljb246IFwicGkgcGktaG9tZVwiLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24uYnV0dG9uc1swXTtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5nZXRBbGxDYXRlZ29yaWVzKCk7XHJcbiAgICB0aGlzLmdldEFsbENvbGxlY3Rpb25zKCk7XHJcblxyXG4gICAgdGhpcy5taW5Qcm9kdWN0UHJpY2UgPSB0aGlzLnByaWNpbmdNaW4gPSB0aGlzLmRhdGE/LnN0eWxlcy5taW5QcmljZSA/PyAwO1xyXG4gICAgdGhpcy5tYXhQcm9kdWN0UHJpY2UgPSB0aGlzLnByaWNpbmdNYXggPSB0aGlzLmRhdGE/LnN0eWxlcy5tYXhQcmljZSA/PyAxMDAwO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJzZWFyY2hUeHRcIl07XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocVBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zZWFyY2hUeHQgPSBxUGFyYW1bXCJzZWFyY2hUeHRcIl07XHJcbiAgICAgIHRoaXMucGFnZU5vID0gcVBhcmFtW1wicGFnZU5vXCJdID8gTnVtYmVyKHFQYXJhbVtcInBhZ2VOb1wiXSkgOiAxO1xyXG4gICAgICB0aGlzLnNvcnRCeSA9IHFQYXJhbVtcInNvcnRpbmdcIl0gPz8gXCJsb3dlc3RQcmljZVwiO1xyXG4gICAgICB0aGlzLnByaWNpbmdNaW4gPSBpc05hTihOdW1iZXIocVBhcmFtW1wibWluUHJpY2VcIl0pKSA/IHRoaXMubWluUHJvZHVjdFByaWNlIDogTnVtYmVyKHFQYXJhbVtcIm1pblByaWNlXCJdKTtcclxuICAgICAgdGhpcy5wcmljaW5nTWF4ID0gaXNOYU4oTnVtYmVyKHFQYXJhbVtcIm1heFByaWNlXCJdKSkgPyB0aGlzLm1heFByb2R1Y3RQcmljZSA6IE51bWJlcihxUGFyYW1bXCJtYXhQcmljZVwiXSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyQnlDYXRlZ29yeUNvbGxlY3Rpb25QYXJhbShxUGFyYW1bXCJjYXRlZ29yeVwiXSwgcVBhcmFtW1wiY29sbGVjdGlvbnNcIl0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZpbHRlckJ5Q2F0ZWdvcnlDb2xsZWN0aW9uUGFyYW0ocUNhdGVnb3JpZXM6IGFueSwgcUNvbGxlY3Rpb25zOiBhbnkpIHtcclxuICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBxQ2F0ZWdvcmllcz8uc3BsaXQoXCIrXCIpPy5tYXAoKGNhdGVnb3J5OiBzdHJpbmcpID0+IGNhdGVnb3J5LnJlcGxhY2VBbGwoXCJfXCIsIFwiIFwiKS50b0xvd2VyQ2FzZSgpKS5maWx0ZXIoKGNhdGVnb3J5OiBzdHJpbmcpID0+IGNhdGVnb3J5Lmxlbmd0aCA+IDApO1xyXG4gICAgY29uc3QgY29sbGVjdGlvbnMgPSBxQ29sbGVjdGlvbnM/LnNwbGl0KFwiK1wiKT8ubWFwKChjb2xsZWN0aW9uOiBzdHJpbmcpID0+IGNvbGxlY3Rpb24ucmVwbGFjZUFsbChcIl9cIiwgXCIgXCIpLnRvTG93ZXJDYXNlKCkpLmZpbHRlcigoY29sbGVjdGlvbjogc3RyaW5nKSA9PiBjb2xsZWN0aW9uLmxlbmd0aCA+IDApO1xyXG5cclxuICAgIHRoaXMuY2F0ZWdvcmllcz8uZm9yRWFjaCgoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LnN0YXR1cyA9IGNhdGVnb3JpZXM/LmluY2x1ZGVzKGNhdGVnb3J5Py5vcHRpb24/LnRvTG93ZXJDYXNlKCkpID8/IGZhbHNlKTtcclxuICAgIHRoaXMuY29sbGVjdGlvbnM/LmZvckVhY2goKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc3RhdHVzID0gY29sbGVjdGlvbnM/LmluY2x1ZGVzKGNvbGxlY3Rpb24/Lm9wdGlvbj8udG9Mb3dlckNhc2UoKSkgPz8gZmFsc2UpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5jYXRlZ29yaWVzLCB0aGlzLmNvbGxlY3Rpb25zKTtcclxuICAgIHRoaXMuZmlsdGVyTGlzdCA9IFtcclxuICAgICAgLi4udGhpcy5jYXRlZ29yaWVzPy5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LnN0YXR1cykubWFwKChjYXRlZ29yeSkgPT4geyByZXR1cm4geyBpZDogY2F0ZWdvcnkuaWQsIG5hbWU6IGNhdGVnb3J5Lm9wdGlvbiB9IH0pLFxyXG4gICAgICAuLi50aGlzLmNvbGxlY3Rpb25zPy5maWx0ZXIoKGNvbGxlY3Rpb246IGFueSkgPT4gY29sbGVjdGlvbi5zdGF0dXMpLm1hcCgoY29sbGVjdGlvbikgPT4geyByZXR1cm4geyBpZDogY29sbGVjdGlvbi5pZCwgbmFtZTogY29sbGVjdGlvbi5vcHRpb24gfSB9KVxyXG4gICAgXTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZmlsdGVyTGlzdCk7XHJcbiAgICB0aGlzLmZpbHRlckl0ZW1MaXN0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxDYXRlZ29yaWVzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLmNhdGVnb3JpZXMgPSByZXNwb25zZS5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LmZlYXR1cmVkQ29sbGVjdGlvbiB8fCB0cnVlKS5tYXAoKGNhdGVnb3J5OiBhbnkpID0+IHsgcmV0dXJuIHsgb3B0aW9uOiBjYXRlZ29yeS5jYXRlZ29yeU5hbWUsIGlkOiBjYXRlZ29yeS5jYXRlZ29yeUlkLCBpbWdVcmw6IGNhdGVnb3J5LmltZ1VybD8uWzBdLCBzdGF0dXM6IGZhbHNlIH0gfSk7XHJcbiAgICAgIGNvbnN0IHFQYXJhbUNvbGxlY3Rpb25zID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcImNvbGxlY3Rpb25zXCJdO1xyXG4gICAgICBjb25zdCBxUGFyYW1DYXRlZ29yeSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJjYXRlZ29yeVwiXTtcclxuICAgICAgdGhpcy5maWx0ZXJCeUNhdGVnb3J5Q29sbGVjdGlvblBhcmFtKHFQYXJhbUNhdGVnb3J5LCBxUGFyYW1Db2xsZWN0aW9ucyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0QWxsQ29sbGVjdGlvbnMoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbENvbGxlY3Rpb25zKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb25zID0gcmVzcG9uc2UuZmlsdGVyKChjb2xsZWN0aW9uOiBhbnkpID0+IGNvbGxlY3Rpb24uZmVhdHVyZWRDYXRlZ29yeSB8fCB0cnVlKS5tYXAoKGNvbGxlY3Rpb246IGFueSkgPT4geyByZXR1cm4geyBvcHRpb246IGNvbGxlY3Rpb24uY29sbGVjdGlvbk5hbWUsIGlkOiBjb2xsZWN0aW9uLmNvbGxlY3Rpb25JZCwgc3RhdHVzOiBmYWxzZSB9IH0pO1xyXG4gICAgICBjb25zdCBxUGFyYW1Db2xsZWN0aW9ucyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJjb2xsZWN0aW9uc1wiXTtcclxuICAgICAgY29uc3QgcVBhcmFtQ2F0ZWdvcnkgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1wiY2F0ZWdvcnlcIl07XHJcbiAgICAgIHRoaXMuZmlsdGVyQnlDYXRlZ29yeUNvbGxlY3Rpb25QYXJhbShxUGFyYW1DYXRlZ29yeSwgcVBhcmFtQ29sbGVjdGlvbnMpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpbHRlcihmaWx0ZXI6IGFueSkge1xyXG4gICAgdGhpcy5maWx0ZXJMaXN0ID0gdGhpcy5maWx0ZXJMaXN0LmZpbHRlcigoZikgPT4gZi5pZCAhPSBmaWx0ZXIuaWQpO1xyXG4gICAgY29uc3QgZmlsdGVyTGlzdElkcyA9IHRoaXMuZmlsdGVyTGlzdC5tYXAoKGZpbHRlcikgPT4gZmlsdGVyLmlkKTtcclxuICAgIHRoaXMuY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkuc3RhdHVzID0gZmlsdGVyTGlzdElkcy5pbmNsdWRlcyhjYXRlZ29yeS5pZCkpO1xyXG4gICAgdGhpcy5jb2xsZWN0aW9ucy5mb3JFYWNoKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnN0YXR1cyA9IGZpbHRlckxpc3RJZHMuaW5jbHVkZXMoY29sbGVjdGlvbi5pZCkpO1xyXG4gICAgdGhpcy5wYWdlTm8gPSAxO1xyXG4gICAgLy8gc29ydGluZyBzaG91bGQgYWRkXHJcbiAgICB0aGlzLm5hdmlnYXRlRmlsdGVyKHRoaXMuc29ydEJ5ID8/IFwibG93ZXN0UHJpY2VcIik7XHJcbiAgfVxyXG5cclxuICBhcHBseVByb2R1Y3RXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0eWxlcz8udGhlbWUgPT09IHRoaXMudGhlbWUuVGhlbWUxIHx8XHJcbiAgICAgICh0aGlzLnNjcmVlbldpZHRoIDwgNDc1ICYmIHRoaXMuc3R5bGVzPy50aGVtZSA9PSB0aGlzLnRoZW1lLlRoZW1lMilcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNjcmVlbldpZHRoID4gNDc1ID8gKHRoaXMuc2NyZWVuV2lkdGggPCAxMDI1ID8gJzI1JScgOiAnY2FsYygnICsgKCgxMDAgLyAodGhpcy5zdHlsZXM/LmVsZW1lbnRJblJvdyB8fCA0KSkpICsgJyUpJykgOiAodGhpcy5zdHlsZXM/Lm1vYmlsZUNvbHVtbiA9PT0gMSA/ICcxMDAlJyA6ICc1MCUnKVxyXG4gIH1cclxuXHJcbiAgcHJvY2VlZFRvUHJvZHVjdERlc2MocHJvZHVjdElkOiBhbnkpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZGV0YWlscyddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiBwcm9kdWN0SWQgfSB9KTtcclxuICAgIC8vIHRoaXMuX2V2ZW50U2VydmljZS5yZWRpcmVjdFRvUGFnZS5lbWl0KHtyZWRpcmVjdFRvOiAnL2RldGFpbHMnLCBkYXRhOiB7cHJvZHVjdElkOiBwcm9kdWN0SWR9fSlcclxuICB9XHJcbiAgY2xlYXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LnN0YXR1cyA9IGZhbHNlKTtcclxuICAgIHRoaXMuY29sbGVjdGlvbnMuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zdGF0dXMgPSBmYWxzZSk7XHJcbiAgICB0aGlzLnByaWNpbmdNaW4gPSB0aGlzLm1pblByb2R1Y3RQcmljZTtcclxuICAgIHRoaXMucHJpY2luZ01heCA9IHRoaXMubWF4UHJvZHVjdFByaWNlO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsaXN0J10pO1xyXG4gIH1cclxuICB0b2dnbGVJdGVtVG9GYXYoZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQsIHByb2R1Y3Q6IFByb2R1Y3QsIHR5cGU6ICdBREQnIHwgJ1JFTU9WRScpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKSB7XHJcbiAgICAgIHByb2R1Y3Qud2hpc2xpc3QgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdXaXNobGlzdCcsIGRldGFpbDogJ0l0ZW0gYWRkZWQgdG8geW91ciB3aXNobGlzdCcgfSk7XHJcbiAgICAgIGlmIChwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpO1xyXG4gICAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgICAgaXRlbVZhcmllbnQud2lzaGxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUocHJvZHVjdCBhcyBQcm9kdWN0LCBpdGVtVmFyaWVudC52YXJpYW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0Zhdm91cml0ZShwcm9kdWN0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHByb2R1Y3Qud2hpc2xpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnV2lzaGxpc3QnLCBkZXRhaWw6ICdJdGVtIHJlbW92ZWQgZnJvbSB5b3VyIHdpc2hsaXN0JyB9KTtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5yZW1vdmVJdGVtRnJvbUZhdm91cml0ZShwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJvZHVjdC53aGlzbGlzdCkge1xyXG4gICAgICB0aGlzLlVTRVJfV0lTSExJU1Q/LnB1c2gobmV3IE9yZGVyZWRJdGVtcyhwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUID0gdGhpcy5VU0VSX1dJU0hMSVNUPy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4gaXRlbS52YXJpZW50SWQgIT0gcHJvZHVjdC52YXJpZW50SWQpID8/IFtdO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG4gIGFkZEl0ZW1Ub0NhcnQoZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQsIHByb2R1Y3Q6IFByb2R1Y3QsIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIGlmICh0aGlzLmlzSXRlbU91dE9mU3RvY2socHJvZHVjdCkpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3dhcm4nLCBzdW1tYXJ5OiAnQ2FydCcsIGRldGFpbDogJ0l0ZW0gaXMgbm90IGF2YWlsYWJsZSBhcyBvZiBub3cuIFdlIHdpbGwgbm90aWZ5IHlvdSBvbmNlIGF2YWlsYWJsZScgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHByb2R1Y3QucXVhbnRpdHkgKz0gKHR5cGUgPT0gJ0FERCcgPyAxIDogLTEpO1xyXG4gICAgaWYgKHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpO1xyXG4gICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICBpdGVtVmFyaWVudC5xdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHk7XHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QsIGl0ZW1WYXJpZW50LnZhcmlhbnRJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvQ2FydChwcm9kdWN0KTtcclxuICAgIH1cclxuICAgIGlmIChwcm9kdWN0LnF1YW50aXR5KSB7XHJcbiAgICAgIGxldCBpc1ByZXNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnZhcmllbnRJZCA9PSBwcm9kdWN0LnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgaXRlbS5xdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHk7XHJcbiAgICAgICAgICBpc1ByZXNlbnQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgaWYgKCFpc1ByZXNlbnQpXHJcbiAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LnB1c2gobmV3IE9yZGVyZWRJdGVtcyhwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5VU0VSX0NBUlQgPSB0aGlzLlVTRVJfQ0FSVD8uZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IGl0ZW0udmFyaWVudElkICE9IHByb2R1Y3QudmFyaWVudElkKSA/PyBbXTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VhcmNoUHJvZHVjdCgpIHtcclxuICAgIHRoaXMubmF2aWdhdGVGaWx0ZXIodGhpcy5zb3J0QnkgPz8gXCJsb3dlc3RQcmljZVwiKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFZhcmllbnQocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudDogSXRlbVZhcmlhbnQpIHtcclxuICAgIC8vIG5lZGQgdG8gY2hhbmdlXHJcbiAgICBwcm9kdWN0LnZhcmllbnRJZCA9IHZhcmllbnQudmFyaWFudElkO1xyXG4gICAgcHJvZHVjdC5pdGVtSW1hZ2VzID0gdmFyaWVudC52YXJpYW50SW1hZ2VzO1xyXG4gICAgcHJvZHVjdC5wcmljZSA9IHZhcmllbnQuaXRlbVZhcmlhbnRQcmljZTtcclxuICAgIHByb2R1Y3QuaXRlbUludmVudG9yeSA9IHZhcmllbnQuaXRlbUludmVudG9yeTtcclxuICAgIHByb2R1Y3QucXVhbnRpdHkgPSB0aGlzLmdldFZhcmllbnRRdWFudGl0eSh2YXJpZW50KTtcclxuICAgIHByb2R1Y3Qud2hpc2xpc3QgPSB0aGlzLmlzVmFyaWVudFByZXNlbnRJbldpc2h0bGlzdCh2YXJpZW50KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRWYXJpZW50UXVhbnRpdHkocHJvZHVjdFZhcmllbnQ6IEl0ZW1WYXJpYW50KTogbnVtYmVyIHtcclxuICAgIGxldCBpdGVtUXVhbnRpdHk6IG51bWJlciA9IDA7XHJcbiAgICB0aGlzLlVTRVJfQ0FSVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgIGlmIChwcm9kdWN0VmFyaWVudC52YXJpYW50SWQgPT0gaXRlbS52YXJpZW50SWQpXHJcbiAgICAgICAgaXRlbVF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgIH0pXHJcbiAgICByZXR1cm4gaXRlbVF1YW50aXR5O1xyXG4gIH1cclxuICBwcml2YXRlIGlzVmFyaWVudFByZXNlbnRJbldpc2h0bGlzdChwcm9kdWN0VmFyaWVudDogSXRlbVZhcmlhbnQpOiBib29sZWFuIHtcclxuICAgIGxldCBwcmVzZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB0aGlzLlVTRVJfV0lTSExJU1Q/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICBpZiAocHJvZHVjdFZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKVxyXG4gICAgICAgIHByZXNlbnQgPSB0cnVlO1xyXG4gICAgfSlcclxuICAgIHJldHVybiBwcmVzZW50O1xyXG4gIH1cclxuICBnb1RvSG9tZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICB9XHJcblxyXG4gIGNhdGVnb3JpZXM6IEJhc2VNb2RlbFtdID0gW107XHJcbiAgY29sbGVjdGlvbnM6IEJhc2VNb2RlbFtdID0gW107XHJcbiAgYXBwbHlGaWx0ZXIoY2F0ZWdvcnk/OiBhbnksIHR5cGU/OiAnU09SVCcgfCAnRklMVEVSJykge1xyXG4gICAgbGV0IHNvcnRpbmcgPSBcIlwiO1xyXG4gICAgdGhpcy5wYWdlTm8gPSAxO1xyXG5cclxuICAgIGlmICh0eXBlID09IFwiRklMVEVSXCIpXHJcbiAgICAgIGNhdGVnb3J5LnN0YXR1cyA9ICFjYXRlZ29yeS5zdGF0dXM7XHJcbiAgICBlbHNlIGlmICh0eXBlID09IFwiU09SVFwiKVxyXG4gICAgICBzb3J0aW5nID0gY2F0ZWdvcnk/LnRhcmdldD8udmFsdWU7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJCb3R0b21TaGVldFJlZj8uZGlzbWlzcygpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZUZpbHRlcihzb3J0aW5nKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlRmlsdGVyKHNvcnRpbmc6IHN0cmluZykge1xyXG5cclxuICAgIGxldCBzZWxlY3RlZENhdGVnb3J5ID0gXCJcIjtcclxuICAgIGxldCBzZWxlY3RlZENvbGxlY3Rpb24gPSBcIlwiO1xyXG4gICAgdGhpcy5jYXRlZ29yaWVzLmZpbHRlcigoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LnN0YXR1cykubWFwKChjYXRlZ29yeSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNhdGVnb3J5LFxyXG4gICAgICAgIHNsdWc6IGNhdGVnb3J5Lm9wdGlvbi5yZXBsYWNlQWxsKFwiIFwiLCBcIl9cIilcclxuICAgICAgfVxyXG4gICAgfSkuZm9yRWFjaCgoY2F0ZWdvcnkpID0+IHNlbGVjdGVkQ2F0ZWdvcnkgKz0gKGNhdGVnb3J5LnNsdWcgKyBcIitcIikpO1xyXG5cclxuICAgIHRoaXMuY29sbGVjdGlvbnMuZmlsdGVyKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnN0YXR1cykubWFwKChjb2xsZWN0aW9uKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uY29sbGVjdGlvbixcclxuICAgICAgICBzbHVnOiBjb2xsZWN0aW9uLm9wdGlvbi5yZXBsYWNlQWxsKFwiIFwiLCBcIl9cIilcclxuICAgICAgfVxyXG4gICAgfSkuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4gc2VsZWN0ZWRDb2xsZWN0aW9uICs9IChjb2xsZWN0aW9uLnNsdWcgKyBcIitcIikpO1xyXG5cclxuICAgIHRoaXMuc29ydGluZ0RpYWxvZ1JlZj8uZGlzbWlzcygpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsaXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgbWluUHJpY2U6IHRoaXMucHJpY2luZ01pbiwgbWF4UHJpY2U6IHRoaXMucHJpY2luZ01heCwgY2F0ZWdvcnk6IHNlbGVjdGVkQ2F0ZWdvcnksIGNvbGxlY3Rpb25zOiBzZWxlY3RlZENvbGxlY3Rpb24sIHNvcnRpbmc6IHNvcnRpbmcsIHBhZ2VObzogdGhpcy5wYWdlTm8sIHNlYXJjaFR4dDogdGhpcy5zZWFyY2hUZXh0IH0gfSk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJJdGVtTGlzdCgpIHtcclxuICAgIGNvbnN0IGNvbGxlY3Rpb25JZHMgPSB0aGlzLmNvbGxlY3Rpb25zLmZpbHRlcigoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zdGF0dXMpLm1hcCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5pZCk7XHJcbiAgICBjb25zdCBjYXRlZ29yeUlkcyA9IHRoaXMuY2F0ZWdvcmllcy5maWx0ZXIoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5zdGF0dXMpLm1hcCgoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LmlkKTtcclxuICAgIHRoaXMuYXBpTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRGaWx0ZXJlZFByb2R1Y3QoY29sbGVjdGlvbklkcywgY2F0ZWdvcnlJZHMsIHRoaXMuc2VhcmNoVHh0LCB0aGlzLnByaWNpbmdNaW4sIHRoaXMucHJpY2luZ01heCwgdGhpcy5zb3J0QnkgPz8gXCJsb3dlc3RQcmljZVwiLCB0aGlzLnBhZ2VObyAtIDEsIHRoaXMuc2l6ZSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzcG9uc2UuY291bnQ7XHJcbiAgICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguY2VpbChyZXNwb25zZS5jb3VudCAvIHRoaXMuc2l6ZSk7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlckNhcnQoKS50aGVuKChjYXJ0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuVVNFUl9DQVJUID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGE/LmZvckVhY2goKHByb2R1Y3Q6IFByb2R1Y3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PSBwcm9kdWN0Lml0ZW1JZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCA9IHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5bMF07XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVtVmFyaWVudC52YXJpYW50SWQgPT0gaXRlbS52YXJpZW50SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lml0ZW1JbWFnZXMgPSBpdGVtVmFyaWVudC52YXJpYW50SW1hZ2VzID8/IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3QucHJpY2UgPSBpdGVtVmFyaWVudC5pdGVtVmFyaWFudFByaWNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBwcm9kdWN0LnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigod2lzaGxpc3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHdpc2hsaXN0UmVzcG9uc2Uub25zdWNjZXNzID0gKHdoaXNsaXN0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1QgPSB3aGlzbGlzdERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGE/LmZvckVhY2goKHByb2R1Y3Q6IFByb2R1Y3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdC5pdGVtSWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgPSBwcm9kdWN0Py5pdGVtVmFyaWFudD8uWzBdO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtSW1hZ2VzID0gaXRlbVZhcmllbnQ/LnZhcmlhbnRJbWFnZXMgPz8gW107XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5wcmljZSA9IGl0ZW1WYXJpZW50Lml0ZW1WYXJpYW50UHJpY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC53aGlzbGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHByb2R1Y3Qud2hpc2xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5hcGlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb3BlbkZpbHRlcihGaWx0ZXJTZWN0aW9uOiBhbnkpIHtcclxuXHJcbiAgICB0aGlzLmZpbHRlckJvdHRvbVNoZWV0UmVmID0gdGhpcy5tYXRCb3R0b21TaGVldC5vcGVuKEZpbHRlclNlY3Rpb24pO1xyXG4gIH1cclxuICBvcGVuU29ydGluZyhTb3J0aW5nU2VjdGlvbjogYW55KSB7XHJcbiAgICB0aGlzLnNvcnRpbmdEaWFsb2dSZWYgPSB0aGlzLm1hdEJvdHRvbVNoZWV0Lm9wZW4oU29ydGluZ1NlY3Rpb24sIHt9KTtcclxuICB9XHJcbiAgcGFnaW5hdGlvbkNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZU5vID0gcGFnZTtcclxuICAgIHRoaXMubmF2aWdhdGVGaWx0ZXIodGhpcy5zb3J0QnkgPz8gXCJsb3dlc3RQcmljZVwiKTtcclxuICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLnNvcnRpbmdEaWFsb2dSZWY/LmRpc21pc3MoKTtcclxuICB9XHJcblxyXG4gIGlzSXRlbU91dE9mU3RvY2socHJvZHVjdDogUHJvZHVjdCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHByb2R1Y3QuaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrID09IDA7XHJcbiAgfVxyXG4gIGdldEl0ZW1WYXJpZW50KHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmllbnRJZDogc3RyaW5nKTogSXRlbVZhcmlhbnQgfCBudWxsIHtcclxuICAgIGxldCBzZWxlY3RlZFZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm9kdWN0Py5pdGVtVmFyaWFudD8uZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpID0+IHtcclxuICAgICAgaWYgKHZhcmllbnQudmFyaWFudElkID09IHZhcmllbnRJZClcclxuICAgICAgICBzZWxlY3RlZFZhcmllbnQgPSB2YXJpZW50O1xyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRWYXJpZW50O1xyXG4gIH1cclxuICBlZGl0U2VjdGlvbigpIHtcclxuXHJcbiAgICBcclxuICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS50b2dnbGVFZGl0b3JFdmVudC5lbWl0KGZhbHNlKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuZWRpdFNlY3Rpb24uZW1pdCh7IGRhdGE6IHRoaXMuZGF0YSB9KTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPCA0NzU7XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcbiAgZ2V0IG1pblNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLnRvdGFsQ291bnQsICgoKHRoaXMucGFnZU5vIC0gMSkgKiB0aGlzLnNpemUgKyAxKSArIHRoaXMuc2l6ZSkpO1xyXG4gIH1cclxufVxyXG4iLCI8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cclxuXHJcbjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiICpuZ0lmPVwiaXNNb2JpbGVcIiBbbmdDbGFzc109XCJ7J2lucHV0LWdyb3VwLXN0aWNreSc6IHNjcm9sbGluZ1ZhbHVlID4gMjB9XCI+XHJcbiAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9kdWN0Li5cIiBhcmlhLWxhYmVsPVwiU2VhcmNoIFByb2R1Y3RcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hQcm9kdWN0KClcIj5cclxuPC9kaXY+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxzZWN0aW9uIFtpZF09XCJkYXRhPy5pZFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHRvdGFsLWNvbnRhaW5lclwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiIHNpbXBvSG92ZXJcclxuICAgIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW3N0eWxlLnBhZGRpbmdUb3AucHhdPVwiaXNNb2JpbGUgPyAnMCAhaW1wb3J0YW50JyA6ICcnXCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cclxuXHJcbiAgICA8IS0tIDxkaXYgKm5nSWY9XCJpc01vYmlsZVwiIGNsYXNzPVwiYmFjay10by1ob21lXCIgY2RrRHJhZyAoY2xpY2spPVwiZ29Ub0NhcnQoKVwiPlxyXG4gICAgICA8bWF0LWljb24+aG9tZTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiBjbGFzcz1cInNwZWVkZGlhbC1saW5lYXJcIiAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgICAgPHAtc3BlZWREaWFsIFttb2RlbF09XCJpdGVtc1wiIGRpcmVjdGlvbj1cInVwXCIgW2J1dHRvblN0eWxlXT1cInsnYm9yZGVyLXJhZGl1cyc6ICc1MCUnLCAnaGVpZ2h0JzogJzMwcHgnfVwiIC8+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBvbmx5RGVza3RvcFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRvcC1zZWN0aW9uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1iYXNlbGluZVwiIHN0eWxlPVwid2lkdGg6IDIwJTtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyIGJvZHktbGFyZ2VcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgRmlsdGVyc1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhclwiIChjbGljayk9XCJjbGVhckZpbHRlcigpXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIENsZWFyIGFsbFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cIndpZHRoOiA4MCU7bWFyZ2luLWxlZnQ6IDEwcHg7XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmcy02IGZ3LW5vcm1hbFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+U2hvd2luZyB7eyhwYWdlTm8gLTEpKnNpemV9fS17e21pblNpemV9fSBvZiB7eyB0b3RhbENvdW50IH19IFJlc3VsdHM8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImdhcDogMTBweDtcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgZnctbm9ybWFsIG1yLTNcIj5Tb3J0IGJ5PC9kaXY+XHJcbiAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwiYXBwbHlGaWx0ZXIoJGV2ZW50LCAnU09SVCcpXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiZmlsdGVyLnZhbHVlXCIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJpbmdBcnJheVwiPnt7ZmlsdGVyLm5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwIG9ubHlNb2JpbGVcIiBzdHlsZT1cImdhcDogNXB4OyBvdmVyZmxvdy14OiBhdXRvO1wiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJMaXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBjaGlwXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxzcGFuPnt7ZmlsdGVyLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBtYXJnaW4tbGVmdDogNXB4O1wiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoZmlsdGVyKVwiPlg8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItc2lkZSBvbmx5RGVza3RvcFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGaWx0ZXJTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiIGNsYXNzPVwicmlnaHQtc2lkZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXBpTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1wYXJlbnRcIiAqbmdJZj1cInJlc3BvbnNlRGF0YSAmJiByZXNwb25zZURhdGEubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcmVzcG9uc2VEYXRhXCIgY2xhc3M9XCJwcm9kdWN0XCIgW3N0eWxlLndpZHRoXT1cImFwcGx5UHJvZHVjdFdpZHRoKCkgPyBnZXRQcm9kdWN0V2lkdGgoKSA6ICcnXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy50aGVtZSA9PSB0aGVtZS5UaGVtZTFcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIlByb2R1Y3REZXNjOyBjb250ZXh0OiB7ZGF0YTogcHJvZHVjdH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlcz8udGhlbWUgIT0gdGhlbWUuVGhlbWUxXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzaW1wby1zbWFsbC1wcm9kdWN0LWxpc3RpbmcgW3Byb2R1Y3RdPVwicHJvZHVjdFwiIFtkYXRhXT1cImRhdGFcIiBbaXNTY3JvbGxhYmxlXT1cInNjcmVlbldpZHRoID4gNDc1XCI+PC9zaW1wby1zbWFsbC1wcm9kdWN0LWxpc3Rpbmc+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c2ltcG8tcGFnbmluYXRpb24gc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogMzBweDtcIiBbdG90YWxQYWdlc109XCJ0b3RhbFBhZ2VzXCIgW2N1cnJlbnRQYWdlXT1cInBhZ2VOb1wiIChwYWdpbmF0aW9uQ2hhbmdlKT1cInBhZ2luYXRpb25DaGFuZ2UoJGV2ZW50KVwiPjwvc2ltcG8tcGFnbmluYXRpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJlbXB0eS1jYXJ0XCIgKm5nSWY9XCJyZXNwb25zZURhdGE/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBzdHlsZT1cImhlaWdodDogMTUwcHg7IHdpZHRoOiAxNTBweDtcIiBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzEwNzIxM2MxNzE2NTQzMzM0MDQwZW1wdHktY2FydC5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZWRpdW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgbGlzdCBpcyBlbXB0eVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTRcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIExvb2tzIGxpa2Ugbm8gaXRlbSBpcyBwcmVzZW50IHdpdGggZmlsdGVyLiBHbyBhaGVhZCAmIGV4cGxvcmUgdG9wIGNhdGVnb3JpZXMuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8c2ltcG8tY2FyZC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJhcGlMb2FkaW5nXCI+PC9zaW1wby1jYXJkLXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWZpbHRlclwiW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZpbHRlci10ZXh0XCIgc3R5bGU9XCJnYXA6IDEwcHhcIiAoY2xpY2spPVwib3BlblNvcnRpbmcoU29ydGluZ1NlY3Rpb24pXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+c29ydDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj5Tb3J0IGJ5PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmaWx0ZXItdGV4dFwiIHN0eWxlPVwiZ2FwOiAxMHB4XCIgKGNsaWNrKT1cIm9wZW5GaWx0ZXIoRmlsdGVyU2VjdGlvbilcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj5GaWx0ZXI8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCIgW2lzRWNvbW1lcmNlXT1cInRydWVcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuPG5nLXRlbXBsYXRlICNGYXZvdXJpdGVUYWdzIGxldC1wcm9kdWN0PVwiZGF0YVwiPlxyXG4gIDxtYXQtaWNvbiBjbGFzcz1cImZhdi1pY29uXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwidG9nZ2xlSXRlbVRvRmF2KCRldmVudCwgcHJvZHVjdCwgJ0FERCcpXCIgKm5nSWY9XCIhcHJvZHVjdC53aGlzbGlzdFwiPmZhdm9yaXRlX2JvcmRlcjwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwiZmF2LWljb25cIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJ0b2dnbGVJdGVtVG9GYXYoJGV2ZW50LCBwcm9kdWN0LCAnUkVNT1ZFJylcIiAqbmdJZj1cInByb2R1Y3Qud2hpc2xpc3RcIj5mYXZvcml0ZTwvbWF0LWljb24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0ZpbHRlclNlY3Rpb24+XHJcbiAgPHNlY3Rpb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG0tYXV0b1wiIHN0eWxlPVwid2lkdGg6IDk1JTtcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlckxpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctMTAwIGNoaXBcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgPHNwYW4+e3tmaWx0ZXIubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihmaWx0ZXIpXCI+WDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLXNlY3Rpb25cIiAqbmdJZj1cImNhdGVnb3JpZXM/Lmxlbmd0aFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcyBoZWFkaW5nLXNtYWxsXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICBTaG9wIGJ5IGNhdGVnb3JpZXNcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1vcHRpb25zXCIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoY2F0ZWdvcnksICdGSUxURVInKVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJcIiBpZD1cIlwiIFtjaGVja2VkXT1cImNhdGVnb3J5LnN0YXR1c1wiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyaW0tdGV4dFwiPnt7Y2F0ZWdvcnkub3B0aW9uIHwgdXBwZXJjYXNlfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLXNlY3Rpb25cIiAqbmdJZj1cImNvbGxlY3Rpb25zPy5sZW5ndGhcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcyBoZWFkaW5nLXNtYWxsXCI+XHJcbiAgICAgICAgU2hvcCBieSBjb2xsZWN0aW9uc1xyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5LW9wdGlvbnNcIiAqbmdGb3I9XCJsZXQgY29sbGVjdGlvbiBvZiBjb2xsZWN0aW9uc1wiIChjbGljayk9XCJhcHBseUZpbHRlcihjb2xsZWN0aW9uLCAnRklMVEVSJylcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cIlwiIGlkPVwiXCIgW2NoZWNrZWRdPVwiY29sbGVjdGlvbi5zdGF0dXNcIiAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmltLXRleHRcIj57e2NvbGxlY3Rpb24ub3B0aW9uIHwgdXBwZXJjYXNlfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicHJpY2Utc2VjdGlvblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcyBoZWFkaW5nLXNtYWxsXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICBTaG9wIGJ5IHByaWNlXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtc2xpZGVyIGNsYXNzPVwibWF0LXNsaWRlclwiIFttaW5dPVwibWluUHJvZHVjdFByaWNlXCIgW21heF09XCJtYXhQcm9kdWN0UHJpY2VcIiBzdHlsZT1cIndpZHRoOiA4NyU7XCI+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0U2xpZGVyU3RhcnRUaHVtYiBbKG5nTW9kZWwpXT1cInByaWNpbmdNaW5cIj5cclxuICAgICAgICAgIDxpbnB1dCBtYXRTbGlkZXJFbmRUaHVtYiBbKG5nTW9kZWwpXT1cInByaWNpbmdNYXhcIj5cclxuICAgICAgICA8L21hdC1zbGlkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtYnV0dG9uLXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXNlY3Rpb25cIj5cclxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFwcGx5RmlsdGVyKClcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiPkZpbHRlcjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1yYW5nZVwiPlxyXG4gICAgICAgICAgUHJpY2U6IDxzcGFuIFtpbm5lckh0bWxdPSdjdXJyZW5jeSc+PC9zcGFuPnt7IHByaWNpbmdNaW4gfX0gLSA8c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj57eyBwcmljaW5nTWF4IHwgZm9ybWF0ZUFtb3VudCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNDYXRlZ29yeUZpbHRlclNlY3Rpb24+XHJcbiAgPHNlY3Rpb24+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeVwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJjYXRlZ29yeS5pbWdVcmxcIj5cclxuICAgICAgICA8c3Bhbj57eyBjYXRlZ29yeS5vcHRpb24gfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNTb3J0aW5nU2VjdGlvbj5cclxuICA8c2VjdGlvbiBzdHlsZT1cInBhZGRpbmc6IDEwcHhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzIGhlYWRpbmctc21hbGwgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW0tY2VudGVyIFwiIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxyXG4gICAgICA8c3Bhbj5Tb3J0IGJ5PC9zcGFuPlxyXG4gICAgICA8bWF0LWljb24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtcmFkaW8tZ3JvdXAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgc29ydGluZ1R5cGUgb2YgZmlsdGVyaW5nQXJyYXlcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoJGV2ZW50LCAnU09SVCcpXCI+e3tzb3J0aW5nVHlwZS5uYW1lfX08L21hdC1yYWRpby1idXR0b24+XHJcbiAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI1Byb2R1Y3REZXNjIGxldC1wcm9kdWN0PVwiZGF0YVwiPlxyXG4gIDxkaXYgKm5nSWY9XCIhKHByb2R1Y3QuaXRlbUltYWdlcz8ubGVuZ3RoICYmIHByb2R1Y3QuaXRlbUltYWdlcz8uWzBdPy5pbWdVcmwpXCIgY2xhc3M9XCJkZWZhdWx0LWltYWdlIHBvc2l0aW9uLXJlbGF0aXZlXCIgKGNsaWNrKT1cInByb2NlZWRUb1Byb2R1Y3REZXNjKHByb2R1Y3QuaXRlbUlkKVwiPlxyXG4gICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGdcIiBhbHQ9XCJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGYXZvdXJpdGVUYWdzOyBjb250ZXh0OiB7ZGF0YTogcHJvZHVjdH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwicHJvZHVjdC5pdGVtSW1hZ2VzPy5sZW5ndGggJiYgcHJvZHVjdC5pdGVtSW1hZ2VzPy5bMF0/LmltZ1VybFwiIGNsYXNzPVwiZGVmYXVsdC1pbWFnZSBwb3NpdGlvbi1yZWxhdGl2ZVwiIChjbGljayk9XCJwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0Lml0ZW1JZClcIj5cclxuICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgICBbc3JjXT1cInByb2R1Y3Q/Lml0ZW1JbWFnZXM/LlswXT8uaW1nVXJsXCIgYWx0PVwiXCIgY2xhc3M9XCJwcm9kdWN0LWltZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkZhdm91cml0ZVRhZ3M7IGNvbnRleHQ6IHtkYXRhOiBwcm9kdWN0fVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtdC0yIHctMTAwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1uYW1lIGhlYWRpbmctbGFyZ2Ugdy0xMDAgdGV4dC1sZWZ0IHRyaW0tdGV4dFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3sgcHJvZHVjdC5uYW1lIH19PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmFyaWVudC1saXN0XCIgKm5nSWY9XCJwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhcmllbnQgb2YgcHJvZHVjdD8uaXRlbVZhcmlhbnQ7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgICBbc3JjXT1cInZhcmllbnQudmFyaWFudEltYWdlcz8uWzBdPy5pbWdVcmxcIiBhbHQ9XCJcIiBjbGFzcz1cInZhcmllbnRcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkLXZhcmllbnQnOiB2YXJpZW50LnZhcmlhbnRJZCA9PSBwcm9kdWN0LnZhcmllbnRJZH1cIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwidmFyaWVudC52YXJpYW50SWQgPT0gcHJvZHVjdC52YXJpZW50SWQgPyAnYmx1ZScgOiAndHJhbnNwYXJlbnQnXCIgKGNsaWNrKT1cInNlbGVjdFZhcmllbnQocHJvZHVjdCwgdmFyaWVudClcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbS1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlIGJvZHktbGFyZ2UgdGV4dC1sZWZ0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzY291bnRlZC1wcmljZVwiW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPlxyXG4gICAgICAgICAge3twcm9kdWN0LnByaWNlLmRpc2NvdW50ZWRQcmljZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0J1dHRvblwiIGNsYXNzPVwiYWRkLXRvLWNhcnQtYnRuXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKm5nSWY9XCIhcHJvZHVjdC5xdWFudGl0eSAmJiAhaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0KVwiIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KCRldmVudCwgcHJvZHVjdCwgJ0FERCcpXCI+e3tidXR0b24/LmNvbnRlbnQ/LmxhYmVsID8/ICdBZGQgdG8gQ2FydCd9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJxdWFudGl0eVwiICpuZ0lmPVwicHJvZHVjdC5xdWFudGl0eSAmJiAhaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0KVwiIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KCRldmVudCwgcHJvZHVjdCwgJ1NVQlNUUkFDVCcpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7cHJvZHVjdC5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQoJGV2ZW50LCBwcm9kdWN0LCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gZGlzYWJsZWQgY2xhc3M9XCJvdXQtb2Ytc3RvY2tcIiAqbmdJZj1cImlzSXRlbU91dE9mU3RvY2socHJvZHVjdClcIj5PdXQgT2YgU3RvY2s8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19