keevo-components 1.8.100 → 1.8.102

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,24 +3,30 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "primeng/api";
4
4
  import * as i2 from "primeng/carousel";
5
5
  export class KvCarouselComponent {
6
- constructor() {
6
+ constructor(cd) {
7
+ this.cd = cd;
7
8
  this.carouselData = [];
8
9
  }
10
+ ngAfterViewInit() {
11
+ this.getCarouselHeight();
12
+ this.cd.detectChanges();
13
+ }
9
14
  navigateToLink(link) {
10
15
  window.open(link, '_blank');
11
16
  }
12
17
  getCarouselHeight() {
13
- let divCarouselHeight = document.getElementById('carousel')?.offsetHeight;
14
- if (divCarouselHeight)
15
- this.heightCarousel = divCarouselHeight;
18
+ const divCarousel = document.getElementById('carousel');
19
+ if (divCarousel) {
20
+ this.heightCarousel = divCarousel.offsetHeight;
21
+ }
16
22
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvCarouselComponent, selector: "kv-carousel", inputs: { carouselData: "carouselData" }, ngImport: i0, template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n\r\n{{getCarouselHeight()}}", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important}\n"], dependencies: [{ kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.Carousel, selector: "p-carousel", inputs: ["page", "numVisible", "numScroll", "responsiveOptions", "orientation", "verticalViewPortHeight", "contentClass", "indicatorsContentClass", "indicatorsContentStyle", "indicatorStyleClass", "indicatorStyle", "value", "circular", "showIndicators", "showNavigators", "autoplayInterval", "style", "styleClass"], outputs: ["onPage"] }] }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvCarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvCarouselComponent, selector: "kv-carousel", inputs: { carouselData: "carouselData" }, ngImport: i0, template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important;max-height:500px}\n"], dependencies: [{ kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.Carousel, selector: "p-carousel", inputs: ["page", "numVisible", "numScroll", "responsiveOptions", "orientation", "verticalViewPortHeight", "contentClass", "indicatorsContentClass", "indicatorsContentStyle", "indicatorStyleClass", "indicatorStyle", "value", "circular", "showIndicators", "showNavigators", "autoplayInterval", "style", "styleClass"], outputs: ["onPage"] }] }); }
19
25
  }
20
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvCarouselComponent, decorators: [{
21
27
  type: Component,
22
- args: [{ selector: 'kv-carousel', template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n\r\n{{getCarouselHeight()}}", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important}\n"] }]
23
- }], ctorParameters: () => [], propDecorators: { carouselData: [{
28
+ args: [{ selector: 'kv-carousel', template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important;max-height:500px}\n"] }]
29
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { carouselData: [{
24
30
  type: Input
25
31
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtY2Fyb3VzZWwva3YtY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtY2Fyb3VzZWwva3YtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3ZFLE1BQU0sT0FBTyxtQkFBbUI7SUFJOUI7UUFGUyxpQkFBWSxHQUFVLEVBQUUsQ0FBQztJQUVsQixDQUFDO0lBRWpCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFLRCxpQkFBaUI7UUFDZixJQUFJLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWSxDQUFDO1FBRTFFLElBQUksaUJBQWlCO1lBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7SUFDNUMsQ0FBQzs4R0FsQlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNkZDUGhDLHlsQkFTdUI7OzJGREZWLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhO3dEQU1kLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1jYXJvdXNlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWNhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9rdi1jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkNhcm91c2VsQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY2Fyb3VzZWxEYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTGluayhsaW5rOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vcGVuKGxpbmssICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIGhlaWdodENhcm91c2VsITogbnVtYmVyO1xyXG4gIHdpZHRoQ2Fyb3VzZWwhOiBudW1iZXI7XHJcblxyXG4gIGdldENhcm91c2VsSGVpZ2h0KCkge1xyXG4gICAgbGV0IGRpdkNhcm91c2VsSGVpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nhcm91c2VsJyk/Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICBpZiAoZGl2Q2Fyb3VzZWxIZWlnaHQpXHJcbiAgICAgIHRoaXMuaGVpZ2h0Q2Fyb3VzZWwgPSBkaXZDYXJvdXNlbEhlaWdodDtcclxuICB9XHJcbn0iLCI8cC1jYXJvdXNlbCBpZD1cImNhcm91c2VsXCIgW3ZhbHVlXT1cImNhcm91c2VsRGF0YVwiIFtpbmRpY2F0b3JTdHlsZUNsYXNzXT1cIidjYXJvdXNlbC1pbmRpY2F0b3InXCIgW2F1dG9wbGF5SW50ZXJ2YWxdPVwiNTAwMFwiIFxyXG4gIFtzaG93SW5kaWNhdG9yc109XCJ0cnVlXCIgIFtzaG93TmF2aWdhdG9yc109XCJmYWxzZVwiIFtudW1WaXNpYmxlXT1cIjFcIiBbbnVtU2Nyb2xsXT1cIjFcIiBbY2lyY3VsYXJdPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJoLWZ1bGxcIj5cclxuPlxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpdGVtXCIgbGV0LWJhbm5lciBjbGFzcz1cImp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIFwiPlxyXG4gICAgPGltZyBbc3JjXT1cImJhbm5lci5pbWdcIiBjbGFzcz1cInctZnVsbCBib3JkZXItcm91bmQtYmFubmVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRDYXJvdXNlbFwiXHJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvTGluayhiYW5uZXIubGluaylcIj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L3AtY2Fyb3VzZWw+XHJcblxyXG57e2dldENhcm91c2VsSGVpZ2h0KCl9fSJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtY2Fyb3VzZWwva3YtY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtY2Fyb3VzZWwva3YtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQWdCLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQU96RyxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBSmhDLGlCQUFZLEdBQVUsRUFBRSxDQUFDO0lBSVcsQ0FBQztJQUU5QyxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7OEdBdEJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDZGQ1BoQyw4akJBUUE7OzJGRERhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhO3NGQU1kLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtY2Fyb3VzZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKSBjYXJvdXNlbERhdGE6IGFueVtdID0gW107XHJcbiAgaGVpZ2h0Q2Fyb3VzZWwhOiBudW1iZXI7XHJcbiAgd2lkdGhDYXJvdXNlbCE6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldENhcm91c2VsSGVpZ2h0KCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9MaW5rKGxpbms6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4obGluaywgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2Fyb3VzZWxIZWlnaHQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaXZDYXJvdXNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXJvdXNlbCcpO1xyXG4gICAgaWYgKGRpdkNhcm91c2VsKSB7XHJcbiAgICAgIHRoaXMuaGVpZ2h0Q2Fyb3VzZWwgPSBkaXZDYXJvdXNlbC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG59IiwiPHAtY2Fyb3VzZWwgaWQ9XCJjYXJvdXNlbFwiIFt2YWx1ZV09XCJjYXJvdXNlbERhdGFcIiBbaW5kaWNhdG9yU3R5bGVDbGFzc109XCInY2Fyb3VzZWwtaW5kaWNhdG9yJ1wiIFthdXRvcGxheUludGVydmFsXT1cIjUwMDBcIiBcclxuICBbc2hvd0luZGljYXRvcnNdPVwidHJ1ZVwiICBbc2hvd05hdmlnYXRvcnNdPVwiZmFsc2VcIiBbbnVtVmlzaWJsZV09XCIxXCIgW251bVNjcm9sbF09XCIxXCIgW2NpcmN1bGFyXT1cInRydWVcIiBzdHlsZUNsYXNzPVwiaC1mdWxsXCI+XHJcbj5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1iYW5uZXIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBcIj5cclxuICAgIDxpbWcgW3NyY109XCJiYW5uZXIuaW1nXCIgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLXJvdW5kLWJhbm5lclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0Q2Fyb3VzZWxcIlxyXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb0xpbmsoYmFubmVyLmxpbmspXCI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWNhcm91c2VsPlxyXG4iXX0=
@@ -75,12 +75,17 @@ export class KvTableComponent {
75
75
  this.isRowSelectable = this.isRowSelectable.bind(this);
76
76
  }
77
77
  ngDoCheck() {
78
+ console.log('dataSource 0', this.dataSource);
79
+ console.log('currDataSource 0', this.currDataSource);
78
80
  if (this.dataSource !== this.currDataSource) {
79
- this.tableData = this.dataSource?.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
80
- if (this.dataSource)
81
+ console.log('dataSource 1', this.dataSource);
82
+ console.log('currDataSource 1', this.currDataSource);
83
+ if (this.dataSource) {
84
+ console.log('dataSource 2', this.dataSource);
85
+ console.log('currDataSource 2', this.currDataSource);
86
+ this.tableData = this.dataSource.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
81
87
  this.currDataSource = [...this.dataSource];
82
- else
83
- this.currDataSource = this.dataSource;
88
+ }
84
89
  }
85
90
  }
86
91
  ngOnInit() {
@@ -492,4 +497,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
492
497
  type: HostListener,
493
498
  args: ['window:resize', ['$event']]
494
499
  }] } });
495
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBR2YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQWMsWUFBWSxFQUFhLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSzVHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRixNQUFNLFVBQVUsR0FDZCwwcVBBQTBxUCxDQUFDO0FBTzdxUCxNQUFNLE9BQU8sZ0JBQWdCO0lBOEIzQixJQUFxQixTQUFTLENBQUMsS0FBa0I7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUk7WUFDeEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSztZQUN6QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3hDLEdBQUcsS0FBSztTQUNULENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0Is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aW1wb3J0IHtcclxuICBEYXRlUGlwZSxcclxuICBEZWNpbWFsUGlwZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRG9DaGVjayxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcblxyXG5pbXBvcnQgeyBDcGZDbnBqUGlwZSB9IGZyb20gJy4uLy4uL2FwaS9waXBlcy9jcGZjbnBqLnBpcGUnO1xyXG5pbXBvcnQgeyBLdk1lbnVJdGVtLCBnZXRPckV4ZWN1dGUsIFZhbHVlT3JGbiwgbWFwVG9NZW51SXRlbSB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL2t2LW1lbnVpdGVtJztcclxuaW1wb3J0IHsgVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZ0NvbHVtbiB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZy5jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZVBhZ2luYXRlIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGUucGFnaW5hdGUnO1xyXG5pbXBvcnQgeyBUZWxlZm9uZVBpcGUgfSBmcm9tICcuLi8uLi9hcGkvcGlwZXMvdGVsZWZvbmUucGlwZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYXBpL2RpcmVjdGl2ZXMvdGVtcGxhdGUvdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuXHJcbmNvbnN0IGltZ0RlZmF1bHQgPVxyXG4gICcvOWovNEFBUVNrWkpSZ0FCQVFJQWRnQjJBQUQvNFFCaVJYaHBaZ0FBVFUwQUtnQUFBQWdBQlFFU0FBTUFBQUFCQUFFQUFBRWFBQVVBQUFBQkFBQUFTZ0ViQUFVQUFBQUJBQUFBVWdFb0FBTUFBQUFCQUFNQUFBSVRBQU1BQUFBQkFBRUFBQUFBQUFBQUFBQjJBQUFBQVFBQUFIWUFBQUFCLzlzQVF3QURBZ0lDQWdJREFnSUNBd01EQXdRR0JBUUVCQVFJQmdZRkJna0lDZ29KQ0FrSkNnd1BEQW9MRGdzSkNRMFJEUTRQRUJBUkVBb01FaE1TRUJNUEVCQVEvOXNBUXdFREF3TUVBd1FJQkFRSUVBc0pDeEFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUS84QUFFUWdBa0FDUUF3RVJBQUlSQVFNUkFmL0VBQjBBQVFBQkJBTUJBQUFBQUFBQUFBQUFBQUFHQVFJSENBTUVDUVgveEFCQkVBQUNBUVFBQlFJQ0NBUURCQXNBQUFBQkFnTUFCQVVSQmdjU0lURVRRUWhSQ1JRVkdTSlZsZEV5WVlHUlFsSmlGaU0zT0ZOamNYTjFkcEtUc2JPMC84UUFHZ0VCQUFJREFRQUFBQUFBQUFBQUFBQUFBQUVGQXdRR0F2L0VBRElSQUFJQUJBTUZDQUVGQVFFQkFBQUFBQUFCQWdNRUVTRXhVUVVTUVpId0V4VXlZWEdCb2JIUklqTkN3ZUUwOFNQLzJnQU1Bd0VBQWhFREVRQS9BUEtxZ0ZBS0FVQmRERExjU3BCQkU4a3NqQkVSRkpabUowQUFQSkpxVW5FN0lodFFxN3lKNXc5eWR6MlZpK3M1ZTRYRlJNdTBWMDlTVTcwUnRBUjBqUlBrOVFJMFY5NnM1R3lwa3hYbVBkK1gvbjM1RmJPMnBLbDRRZnFmeHpKOWpPVS9CbU82V2tzWmI2UkpCSXIzVXBPdGEwcFZlbFNPM2dnNzJkN0hhck9YczJuZ3pWL1hwSXE0OXBWTWZHM292emRrbXNNVGlzWDEvWm1NdExQMWRkZm9RTEgxYTNyZlNCdld6L2V0dUNYQkx2dUpLK21CcHh6STVsdDl0MjF4TzNXUThDZ09wZjRuRlpUbyswOFphWG5wYjZQckVDeWRPOWIxMUE2M29mMnJISExnbWVOSitxUGNFeU9YZmNiVjlNQ001UGxQd1prZXBvN0dXeGtlUXlNOXJLUnZlOXFGYnFVTDM4QURXaHJRN1ZxVE5tMDhlU3Q2UC8xRzVCdEtvZzQzOVYrTE1nUEVQSjNQWXFMNnppTGhjckdxN2RFVDA1UnJaT2tKUFVOQWVEMUVuUVgzcXNuN0ttUzF2UzN2ZkQvMzc4aTBrN1VsVEh1eHJkZnh6L3dnYzBNMXZNOXZjUlBGTEV4UjBkU3JLd09pQ0Q0SVB0VlkwNFhabGttb2xkWkZ0UVNLQVVBb0JRQ2dGQVNqZy9sOW1lTFpSS0ZleXNPa3NidVNJbFc3a2FRZHVzN0JCMGREUjJkNkIzYVdobVZPT1VPdjQxTktzcllhVllZeGFkWC9BTitWbXpoN2hIQWNNUkJNVFlJa3BYcGU0ZjhBRksvWWIyeDlqMGc5STB1L1lWME1pbWxVNnRBc2RlSnpzMnBtei8zSXIvWFN5MTFaOW1zNWdLaFRVa1hLNkZCY2FGQ0xqUW9MalFvVGNvVk5CY3BVRW54dUllRWNCeFJDVXkxZ2pTaGVsTGhQd3lwMk90TU81QTZpZWs3WGZ0V0NmU3lxaGZyV092RXp5YWliSWY4QTg0cmVYRHA1WHowWmhQakhsL2wrRVpmVUlhOHNDb0l1NDR5RlU3QTA0NzlCMlJyWjBkalIzc0RuYXFpbVVydThWcitkRG9LU3ZsMUt0RmFHSytWODg4c3I0SzcwK1NMMXBtK0tBVUFvQlFFNTVkY3U1ZUpwbHl1V1I0OFRHM1liS3Rjc0QzVlQ3S0QyTGYwSGZaV3lvYUYxRDM0L0Q5OWNlclZ0ZFhLblhaeS9GOWY3cDFmT01NTVZ2RWx2YnhKSEZHb1JFUlFGVlFOQUFEd0FQYXVpU1VLc3NqblczRTd0NG5JQjg2OUhoc3JRZ3JVQVVBb0JRQ2dGQVVxUVVJb1RjNDVvWXA0bmduaVNTT1JTam82aGxaU05FRUhzUVI3VkRTaVZua2VrM0M3cDRtRGVZbkx1WGhpVnNyaWtlVEZTTjNIY3RiTVQyVmo3cVQ0YitoNzZMYzVYVUxwMzJrdncvWCtlZlQ2T2hybFVMczVuaSsvOTE2dEI2clN5RkFLQWxITC9BSU9sNHV5K3BDcTJGbXlTWFpKTzJVbnRHTkVIYmFJMzdBRStkQTdsRlN1cW1XZVN6L0h1YUZmVnFtbDdxdnZSWHQ1ZWVUV0Y4bm5wYTVzRkRGRkJFa0VFU1J4eHFFUkVVQlZVRFFBQThBRDJycVVrbFpITXR0NHM1UUtrOHRsYWdnVUFvQ2ZjcHVSUE5MbmJrbngvTHZoYTR5RWNEQmJtOWNpSzF0dC85SksybEIxMzZSdGlQQU5ZWjFSTHAxZVl6UElwcHRRN1MwYlA0VDZMYmp1NHRGazRoNXFZS3d1U05tS3pzWnJwQWZsMXNZLy9BSXF1aTJ2QW4rbUZsbERzZU5yOVVTSXJ6QitqYjUyOEsyY3VSNFN5ZUc0dGlpQlkyOXM3VzEyUVBjUnlmZ1AvQUdDVFo5Z2F5U3RxeVkzYUs2TVUzWk02QlhnYVpxdmxzVGxjRGtybkRadkczV1B2N09ReFhGcmRSTkZMRTQ4cXlNQVZQOGpWa21vbGRaRlpGQzRYYUxNNmxTUUtBVUJhUlU1a3BuSE5ERmNSUGIzRVNTUlNLVWRIVU1yS1JvZ2crUWFocE5OTTl3eE9GN3l6TmZlWUhCMHZDT1lJajZUWVhqUEphRUh1cWdqYUhaSjJ1d04rNDBmT3dPV3JhVjBzekR3dkw4ZXgwdEJWcXBsN3I4VUtWL1B6eVN4dGtzdVJGNjB6ZkxvWVpiaVZJSUlua2xrWUlpSXBMTXhPZ0FCNUpOU2s0blpFTnFGWGVSc3B3bmdJdUdlSDdURG9JekpFblZPNkFmN3lWdTdIWUFMRGZZRWpmU0ZIdFhXMDBoVThwUzE3K3ZYd2NoVVRlMm14VE1jWHEvVFYyeXhTd3ZkNXRuMkFLMkRBeTZvSUZBS0F5cDhOWEl6SmZFQnpRc3VDNEpaTFhGd0liM0wzaUFiZ3RFSURkTyszV3hLb3ZudTJ5Q0FhMTZxb1ZOTGNmSGdiTkpUT3BtcURoeFBZbmd6Z3ZoZmw3dzFZOEljSFlhM3htSng4WWpndDRWMEI4MlkrV1ludVdPeVNTU1NhNVdaTWlteE9LTjNaMWt1WERLaFVFQ3NqN2RlRDJLQTF5K01UNFc4Tnp6NE51dUkrSDhkRkR4emhyZHBiQzRqVUsxL0dnMmJXUS80dGpmUVQvQzJ1NEJiZS9RMWpwNDkyTHd2NDh6UXJxTlZNRzlDdjFMNThqeVZkSGpkbzVGS3NwSVpTTkVINUd1bU9XS1VBb0JRRnBIdlVrbytOeGR3OUR4UmdMckV5QlJLNjlkdTdhSFJLUDRUdlIwTjlqb2I2U1I3MXIxVWhWRXB5MzdlcHNVMDNzSnNNelQ2L3YzNDJaclpORE5ielBiM0VUeFN4TVVkSFVxeXNEb2dnK0NEN1Z5VFRoZG1kY21vbGRaRTg1TzhQUlpYUHk1YTVDdEZpbFYxUTZPNVgyRU9pRDJBVmp2WUlZS2FzdGx5Vk1tNzcvajk5ZkpXYlVxSExscVd2NWNmSlcrL3E1bSt1ak9kTHFIa3JVQVVBb0QwaStpNzRWczdUbHJ4ZHhyNlMvVzhsbTF4cGNqdUlyZUJKQUI4Z1d1Vy9zUGxWRHRlTnVaREJvcjljam9OandKUzRvOVg5ZittNjFWQmNDZ0ZBS0E4WS9pMjRWdE9EUGlQNDh3VmhFc1Z2OXAvWGtSUm9JTG1OTGpwQTlnUFcwQjhxNnlpamN5UkRFOVByQTVHdWdVdW9qaFd2M2lZanJaTlVVQW9DbFNDMm9QUmhEbkZ3OUZpcy9GbDdib1dQS3F6c2c3YWxUUWM2QUEwUXluZXlTeFluMnJudHFTRkxtS1l2NWZhL1AzYzZQWmM1ekpXNDg0ZnJoL1pQdVUrTSt6dURMYVJrbFNTK2trdW5XUWExczlLbFJyK0VvaWtlZDczNElxejJiTDNLZFBXNzY5a1ZlMG85K29mbFpmMzlzbVFGYjVvTXVxRHlLQVVBb0QwYitpNjR4czduZ1BqRGdGcFZGM2o4c21XVkNlN1JUd3BFU1BtQTF1Ti9Mckh6cWgydkxhamhqOHJIUWJIbUp3UlFhTzV1N1ZRWEFvQlFDZ1BGejRxT01iUGp6NGh1T3VKY2ZLc3RySmxHdElKRk8xa2p0MFczVndma1JFQ1A1R3VzbzVibHlJWVhwOTRuSTFzeFRLaUtKYS9XQmlxdGsxUlFDZ0ZBV2tWSktJZHpZeG4yandYY3lLa3p5V1VrZDBpeDkvQjZXTERSN0JIYysydGIzb0dxL2FVdHpLZDI0WTljeXcyZE1VdW9WK09IWHVrU1hFV0gyVmlyTEdlcjZ2MU8zamc2K25wNnVoUXU5Yk90NjhicmNsd2RuQW9ORlkwNWtmYVJ1UFYzNW5kSGlzaGpaV29JRkFLQVVCa2JrQnpvemZJWG1aanVQY1JHYmlDTUcyeVZuMWRJdTdOeVBVajM3SHNyS2Zaa1VuWTJEZ3FaQ3FaYmdac1UxUkZUVEZHajJKNWJjek9DK2JYQ2xyeGx3TG1vY2pqcnBSdnBJRWtFbXRtS1ZQS09OOTFQOGlOZ2dubFpzcU9URnVSckU2eVZPZ253NzhEdWlVMWpNZ29EVmo0MHZpenczS1BoZSs1ZThGNVNPNDQ0eTBCZ1BvUHY3SmhjYU16a2Z3eWxUK0JmSUpEbnNBR3NxQ2ljNkpUSTErbGZKVzE5YXBFTGdnZjZuOEhsZDVyb3ptUlFDZ0ZBS0FvM2lwSlIwc3RZREs0cTh4Wm05SVhsdkpCNm5UMWRIV3BYZXRqZXQrTjFqbVFkcEE0TlUxek1rdVBzNDFHbGV6dWR1c2g0UmNQRkR5eXRRQlFDZ0ZBS0FsUEx6bWp6QjVVWnIvYURsNXhWZllTOUlDeUdCd1k1bEIyRmtqWUZKRjM3TUNLeHpaTUU1YnN4WE1zcWRNa1BlbHV4c25oUHBOdWVlUHRGdHN2dzF3amxaRUd2ckQyczhNakg1c0VsQ2YyVVZYeGJKa3Q0Tm9zSWRyemtzVW1SVG1EOUlEOFJQSFZuTGpiTE00N2hhMW1CVnhnN1pvcG1YL3ZwR2VSVC9OQ3ByTEwyYklsdTdWL1V4VGRwMUV4V1R0Nkd1VnpjM0Y1Y1MzZDNQSlBQTTVra2xrWXM3c1Rzc3hQY2tuM05iNlZzRVY3YmVMT09nRkFLQVVBb0NoOFZJUmJROUNnUmNQRkR5eXRRQlFDZ0ZBU2ZnL2xmekg1Z3llbndQd0xuYzRPcnBaN0d3a2xqUS82blVkSy8xSXJISE9seXZIRWtaSmNtWk44RUxabURBL0FKOFQrYlJaWnVCclhGUnYzRFgrVXQxT3Y1cWpzdy9xQldyRnRLbmgvbGYyTnVIWmxURi9HM3VTdUg2TS80aEpVRFNaZmd1RS81WHlVNUkvOEFUQVJXUHZXUm8rdmN5clpNL1ZkZXgxYi9BT2piK0kyelF0YnR3cmZFRCtHM3lqZ24vd0J5TlJVcmFzaDY4aUhzbW9Xbk14OXhSOEczeEw4Skk4MlI1VDVXNmlRYjY4WThWL3NmTUxBenQvY1ZuZ3JxZVBLTCt2c3dSMEZSQm5EeXgrakVPVHhlVHd0N0pqc3hqcnF4dTRUcVNDNWhhS1JEL05XQUlyWlRVU3VqVWNMaGRtZGFwSUZBS0FVQlErS2tJdG9lanFZbS93RHRURldXVDlMMHZybHZIUDBkWFYwOWFodGIwTjYzNTFXT1hIMmtDajFTWjdtUWRuRzRMM3M3Y2p1anhXUXhzclVFQ2dNajhrT1FQTVBuN3hJY0R3UmpsRnZiZExYK1N1ZHJhMlNId1hZQTdZNk9rVUZqbzl0QWtZS2lwbDAwTzlHYkZQVFRLbUxkZzVubzl5YitBdmtqeXdnZ3Z1SXNXdkdtY1FBdmQ1YUlOYkszL1YydXlnSGorUHJiNUVlS29aKzBaMDdDRjdxOHZ5ZEJJMmJKazR4TGVmbitEWTYydGJheXQ0N1N6dDRvSUlsQ1J4UklGUkZIZ0FEc0JXZzIzaXl3U3RnamxxQUtBVUFvQ09jYTh1T0F1WStPT0s0NzRReFdjdHRFS3Q3YkxJMGUvZEhJNmtQODFJTlpKYzJPVTd3T3hqbVNvSnF0R3Jtay9QNzZOdTNqdExuaWJrSGZUZXJHR2tmaDYvbTZ1c2ZLM25idnY1TElUdjhBempzRGIwMjFjZDJmei9KVDFPeVZiZWtjdndhRlpISFpERDVDNXhXV3NwN085czVXZ3VMZWVNcEpGSXAweU1wN2dnZ2dnMWRKcUpYUlNOT0YyZVoxNkVDZ0tIeFVrbzZXV3Z4aXNWZVpRdytxTE8za245UHE2ZXZvVXRyZWpyZXZPcXh6SSt6Z2NlaWI1R1NYQTVrYWdUdGQyNWthNVQ1TVpIZ3Uxalo1bmtzWkpMVjJrTy9CNmxDblovQ0VkQVBHdGE4QVZwN05tT1pUcFBoaDF6TnphTXZzNmgyNDQ5ZTZaTVFhc0N2WmRVRUhaeG1PdTh2a3JURTJFZnFYTjdQSGJ3cHZYVkk3QlZIOXlLaHRRcTdKU2NUc2oyMjVMOHBlSE9Tbkx2RmNCY09XOFlXemlEWGx5RjA5NWRFRDFaM1BrbGo0MzRVS283QVZ5TlJPaXFKamppT3hwNUVOUExVRUpPYXdtWVVBb0JRQ2dGQUtBVUJvVjlKZnlWdzhXTXhYUEhDMmtjRisxMG1KelBwcnI2d3JJeGdtYi9VdlFVSjhrTWc4TFYxc3FvZDNKZnFpazJ2VHF5bkxQSm5uNVYyVVFvQzBtcEpSRHViR1QrenVDN3FOWG1TUzlranRVYU02MXM5VEJqc2ZoS0k0OTk3MXJSTlYrMHBqbDA3dHh3NjVHL3M2V3BsUXI4TWV2ZG9nSEozaUNMRlorWEUzSlZZc3Fxb3JuUTFNbXlnMlNPeERNUEJKWXFLck5sejFMbTdqeWkrK0JaN1ZrT1pMVXlIK1BEeWZ0dzVXdjVHYjY2STU0dXFUeVN6bEwveFY0TS84d1k3L0FQVEhXS2QrMUY2TXl5UDNZZlZIdWJYSEhaaWdGQUtBVUFvQlFDZ0ZBYXkvU0ovOHMrUy84VnNQL3NxdzJaLzBMMFpYYlUvNW42bzhvYTZVNWdvZTFTQzJvUFJoRG5GeEREbGM5RmliYm9hUEZLeU00N2t5dm91TmdrYUhTbzhBaHVvSDJybnRxejFNbUtYRC9IN2Y0KzduUjdMa3VYS2NjV2NYMXcvc2djTTB0dktrOEVyeHl4c0hSMFlobFlIWUlJOEVHcXhOd3U2TEpwUkt6eU5sT0VzL0h4TncvWjVkVEdKSlU2WjBVajhFcTltR2dTVjc5d0QzNlNwOTY2Mm1ucW9sS05lL3IxOEhJVkV2c1owVXJUMXl6WERIMVdGN3JOTSt3RDdWc0dCbmZ3ZVl2ZUhzMWo4L2pXUmJ2R1hVVjVibDE2bEVrYmgxSkh1TmdkcTh4UXFKT0Y4UkRFNFdvbHdOanZ2RlBpWC9BRG5CZnBNZjcxb2QyVStqNWxoM3JVYXJrUHZGUGlYL0FEbkJmcE1mNzA3c3A5SHpIZXRScXVRKzhVK0pmODV3WDZUSCs5TzdLZlI4eDNyVWFya1B2RlBpWC9PY0Yra3gvdlR1eW4wZk1kNjFHcTVEN3hUNGwvem5CZnBNZjcwN3NwOUh6SGV0UnF1USs4VStKZjhBT2NGK2t4L3ZUdXluMGZNZDYxR3E1RDd4VDRsL3puQmZwTWY3MDdzcDlIekhldFJxdVErOFUrSmY4NXdYNlRIKzlPN0tmUjh4M3JVYXJrUHZGUGlYL09jRitreC92VHV5bjBmTWQ2MUdxNUVQNXFmR0J6cDV5Y0lUY0Q4YjVIRnpZdWVhSzRkYmZIcEUvWEdkcitJZC9OWlpOREprUmI4R1ppblYwNm9nM0k4akNsYlpwbHBQdFVrcEh4ZUx1SVl1RjhCZFpaeWhsUmVpM1J2OGNwN0tOYkd4N25SMzBnMXIxTTlVOHB6SDdldlh3YkZQSzdlYkRMMSt2Njk4TDJOYlpwcGJpVjU1NVhrbGtZdTd1eExNeE95U1Q1Sk5jazI0bmQ1blhKS0ZXUmJVRWtvNWY4WXk4STVjR1RwTmhlTWtkMkNEdFZCT3BCb0U3WFpPdmNFanpvamNvcXAwc3pId3ZQOEFQc2FGZlNLcGw3eXZ2UTN0NStXT0dOcytHdHJtd1VNMFZ4RWx4YnlwSkZJb2RIUmd5c3BHd1FSNUJycVU3cTZPWmFhd1p5QTFPWjVhTHFnZ1VBb0JRQ2dGQUtBVUFvQlFGcE5Ua1NrY2MwMFZ2RTl4Y1NwSEZHcGQzZGdxcW9HeVNUNEFxRzBrMnozREM0bnVyTTE5NWdjWXk4WFpnbVBwRmhaczhkb0FPN0tTTnlIWUIyM1NEcjJHaDUyVHkxYlZPcW1YV1N5L0owdEJTS21sN3o4VVNWL0x5emF3dm1zK1JGNjB6ZkZBS0FuSEx2bUpMd3hLdUt5cnZKaXBHN0h1eld6RTkyVWU2aytWL3FPK3cxbFExenAzMmN6dy9YK2VYVHJhNmhWUXQrWDR2dnJoMWJPVU0wVnhFazhFcVNSU0tIUjBZRldVallJSThnaXVqVFRWMHpuR21uWm81QWZuVW5sb3JVRUZhQVVBb0JRQ2dGQVUzcXBCUW41VUpTT09hYUszaWU0dUpVamlqVXU3dXdDcW9HeVNUNEFGUTJsaXowbGQyUmczbUp6RWw0bWxiRllwM2p4VWJkejNEWExBOW1ZZXlqMlgrcDc2Qzg1WFZ6cUh1UWVINzY2OHVqb2FGVTY3U1B4ZlhYWG5CNnJTeUZBS0FVQW9DVThIOHc4MXduSXNKZDc3SGhDZ3M1WlNGVHVXM0dlL1FlcGlUb2FPenNiMFJ1VXRiTXBuYk9IVDhhRmZWYk9sMUY0b0xReE4zYnRua3NjcjRLeWZDeTRZR2JjQnhaZ09Kb2cySXlNY3NnUU84RGZobGo3S1R0VDNJQllBc05ydndUWFJTYW1WVUs4dCszSHI0T2ZtMDg2VCs1RGJGL2ZsZlBOWHh0bWs4RDY5WnpDVkRHcElzVjZoUVdHeDg2RVdHeDg2Q3c2aFFteFFzYUN4U29KUGtaL2kzaC9obU10bDhqSEZJVUxwQXY0cFpPekVhVWR4c3FRR09sMzVJckJQcVpWT3J6SDdjZXZnelNxZWJQOEEyNGI0cGNNT2RzczN4dGttOERDUEdQTURMOFhTK21TMW5ZQlFCYVJ5a3F4MkR0ejI2enNEV3hvYUdodlpQTzFWYk1xblo0TFQ4Nm5SVXRCTHBrbkZhS0xXM3JsbmJCMmV2d1JldE0zaFFDZ0ZBS0FVQW9DNkdhVzNsU2VDVjQ1WTJEbzZNUXlzRHNFRWVDRFVwdUYzUkRTaVZua1R6aDduRm44VkVMYkxRSmxZbFhTTTcrbktPd0EyNEI2aDJQa0ZpVHNtcktUdFNiTFZvMXZMNTYrZk1xNSt5cGN4M2x2ZDE0cmp5K3JLMWlmNHpteHdYa2VsWkw2V3lrZVQwMVM2aEs3OGFZc3ZVcWp2NUxEV2p2UTcxWnk5cFU4eDJ2YjE2Wld6Tm5WRXRYdGYwNlQrQ1MyR1d4V1ZFaHhlU3Rid1JhOVQwSmxrNk43MXZwSjF2Ui9zYTNJSmtFendOUDBkelRqbHh5N0tOTlgxTzNXUThDZ09wZjVmRTRybyswOG5hV2ZxN0tldk1zZlZyenJxSTM1SDk2eHh6SUpmamFYcXpKQkxqbWVCTitpSTFrK2EvQmVONmxTL2x2WkVsTWJKYXhGdkc5c0dicFJsN2VReDNzYTJPOWFjemFWUExkcjM5T2w4RzFMMmRVVEZlMXZYcHRjaUFjUWM0cy9sWWpiWW1CTVZFeTZka2YxSlRzRUhUa0FLTzQ4RHFCR3cxVmsvYWsyWmhCK2xmUE10Skd5cGN0NzB4NzJuQmNPZkh5eHk0a0RtbW11Sm51TGlWNVpaV0x1N3NXWm1KMlNTZTVKUHZWYTI0bmRsbWtvVlpaRnRRU0tBVUFvRC85az0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9rdi10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XHJcbiAgY29uZmlnITogVGFibGVDb25maWc7XHJcbiAgZ2xvYmFsRmlsdGVyRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZFNpemU6IHN0cmluZyA9ICcnO1xyXG5cclxuICB0YW1hbmhvVGVsYSE6IG51bWJlcjtcclxuXHJcbiAgLy9tZW51Q29sdW1uczogS3ZNZW51SXRlbVtdID0gW107XHJcbiAgY2hlY2tlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbHVtbnM6IFRhYmxlQ29uZmlnQ29sdW1uW10gPSBbXTtcclxuICBkZWxldGVkQ29sdW5zOiBUYWJsZUNvbmZpZ0NvbHVtbltdID0gW107XHJcblxyXG4gIG1lbnVGaWx0cm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGVja2JveENsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2hvd0ZpbHRyb3NBdmFuY2Fkb3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHRhYmxlRGF0YTogeyBkYXRhOiBhbnksIGFjdGlvbnM/OiBNZW51SXRlbVtdIH1bXSA9IFtdO1xyXG4gIGN1cnJEYXRhU291cmNlOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8YW55PjtcclxuICBASW5wdXQoJ3RlbXBsYXRlcycpIF90ZW1wbGF0ZXMhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlITogVGFibGU7XHJcbiAgZGVsZXRlZENvbHVtbnNJbmRleCE6IGFueVtdO1xyXG5cclxuICBASW5wdXQoJ2NvbmZpZycpIHNldCBzZXRDb25maWcodmFsdWU6IFRhYmxlQ29uZmlnKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHtcclxuICAgICAgZW5hYmxlQ2F0aW9uOiB2YWx1ZS5lbmFibGVDYXRpb24gfHwgdHJ1ZSxcclxuICAgICAgZW5hYmxlU2VsZWN0OiB2YWx1ZS5lbmFibGVTZWxlY3QgfHwgZmFsc2UsXHJcbiAgICAgIGVuYWJsZUZpbHRlcjogdmFsdWUuZW5hYmxlRmlsdGVyIHx8IHRydWUsXHJcbiAgICAgIC4uLnZhbHVlLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuZW5hYmxlRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLmNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMucHVzaChjb2wuZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGRlZmF1bHRTb3J0RmllbGQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2U6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgcGFnaW5hdG9yOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnMhOiBudW1iZXJbXTtcclxuICBASW5wdXQoKSByb3dzOiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgpIHBhZ2VMaW5rc09wdGlvbnM6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgc2hvd0ZpcnN0TGFzdEljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJsZVNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgYXBwbHlTdHlsZTogRnVuY3Rpb24gPSAocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKSA9PiAnJztcclxuICBASW5wdXQoKSBmaWx0ZXJDb2x1bW5zQnRuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmlsdHJvc0F2YW5jYWRvczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgaXNUYWJsZVNjcm9sbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJsZUNhcHRhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcm93VHJhY2tCeTogRnVuY3Rpb24gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSA9PiBpdGVtO1xyXG5cclxuICBASW5wdXQoKSByZXNwb25zaXZlTGF5b3V0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpIG9uQWN0aXZlSXRlbTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQWN0aXZlSXRlbUxvdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblBhZ2luYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkb3VibGVDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyRmllbGQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0cm9zQXZhbmNhZG9zRW1pdDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblN3aXRjaFRhYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWVudUZpbHRyb0RpdicpIG1lbnVGaWx0cm9EaXYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JvdGFvRmlsdHJvJykgYm90YW9GaWx0cm8hOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNwZkNucGpQaXBlOiBDcGZDbnBqUGlwZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVsZWZvbmVQaXBlOiBUZWxlZm9uZVBpcGVcclxuICApIHtcclxuICAgIHRoaXMuaXNSb3dTZWxlY3RhYmxlID0gdGhpcy5pc1Jvd1NlbGVjdGFibGUuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgIT09IHRoaXMuY3VyckRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmRhdGFTb3VyY2U/Lm1hcCh4ID0+ICh7IGRhdGE6IHgsIGFjdGlvbnM6IHRoaXMuY29uZmlnLmFjdGlvbnMgPyB0aGlzLmNvbmZpZy5hY3Rpb25zLm1hcCh5ID0+IG1hcFRvTWVudUl0ZW0oeSwgeCkpIDogdW5kZWZpbmVkIH0pKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpXHJcbiAgICAgICAgdGhpcy5jdXJyRGF0YVNvdXJjZSA9IFsuLi50aGlzLmRhdGFTb3VyY2VdO1xyXG4gICAgICBlbHNlIHRoaXMuY3VyckRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYWRqdXN0VGFibGVTaXplKCk7XHJcbiAgICB0aGlzLnRhbWFuaG9UZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAvLyB0aGlzLmNyaWFyTWVudUNvbHVtbnMoKTtcclxuICAgIHRoaXMuY29uZmlnLmNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY29sKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja0hpZGVDb2x1bW5zKCk7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0U29ydEZpZWxkICYmIHRoaXMuZGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGFbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGJbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHJldHVybiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0ubG9jYWxlQ29tcGFyZShiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiBiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgcmV0dXJuIGFbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA9PT0gYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID8gMCA6IChhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPyAxIDogLTEpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIHJldHVybiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gLSBiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAwOyAvLyBPdSBvdXRyYSBsw7NnaWNhIGRlcGVuZGVuZG8gZG8gY2Fzb1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvbldpbmRvd1Jlc2l6ZSgpIHtcclxuICAgIHRoaXMuYWRqdXN0VGFibGVTaXplKCk7XHJcbiAgICB0aGlzLnRhbWFuaG9UZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbUxvdGUocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbUxvdGUuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIGdldE9yRXhlY3V0ZTxUPihhY3Rpb246IFZhbHVlT3JGbjxUPiwgZGF0YTogYW55KTogVCB7XHJcbiAgICByZXR1cm4gZ2V0T3JFeGVjdXRlKGFjdGlvbiwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBpc0Jvb2xlYW5GaWVsZChyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2Ygcm93RGF0YVtjb2wuZmllbGRdID09ICdib29sZWFuJztcclxuICB9XHJcblxyXG4gIGlzQ2hpcEZpZWxkKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb2wuZmllbGRUeXBlID09ICdjaGlwJztcclxuICB9XHJcblxyXG4gIGlzSW1hZ2VGaWVsZChjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmV0b3JubyA9IGNvbC5maWVsZFR5cGUgJiYgY29sLmZpZWxkVHlwZSA9PT0gJ2ltYWdlJyA/IHRydWUgOiBmYWxzZTtcclxuICAgIHJldHVybiByZXRvcm5vO1xyXG4gIH1cclxuXHJcbiAgaXNTd2l0Y2hGaWVsZChjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmV0b3JubyA9IGNvbC5maWVsZFR5cGUgJiYgY29sLmZpZWxkVHlwZSA9PT0gJ3N3aXRjaCcgPyB0cnVlIDogZmFsc2U7XHJcbiAgICByZXR1cm4gcmV0b3JubztcclxuICB9XHJcblxyXG4gIGlzUm93U2VsZWN0YWJsZShldmVudDogYW55KSB7XHJcbiAgICByZXR1cm4gIXRoaXMuaXNEaXNhYmxlZENoZWNrYm94KGV2ZW50LmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvblxyXG4gICAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvbihyb3dEYXRhKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbG9hZEltYWdlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICAvKlxyXG4gICAgICBOb3NzYSBjb2x1bmEgZGUgaW1hZ2VtIHRyYWJhbGhhIGNvbSBzdHJpbmdzIGRvIHRpcG86IGJhc2U2NCBvdSB1cmxcclxuICAgICovXHJcbiAgICBsZXQgcmV0b3JubyA9IGBkYXRhOmltYWdlL2pwZztiYXNlNjQsICR7aW1nRGVmYXVsdH1gO1xyXG4gICAgaWYgKHJvd0RhdGEgJiYgY29sICYmIHJvd0RhdGFbY29sLmZpZWxkXSAmJiByb3dEYXRhW2NvbC5maWVsZF0gIT09ICcnKSB7XHJcbiAgICAgIGlmIChyb3dEYXRhW2NvbC5maWVsZF0uaW5jbHVkZXMoJ2h0dHAnKSkgcmV0b3JubyA9IHJvd0RhdGFbY29sLmZpZWxkXTtcclxuICAgICAgZWxzZSByZXRvcm5vID0gYGRhdGE6aW1hZ2UvanBnO2Jhc2U2NCwgJHtyb3dEYXRhW2NvbC5maWVsZF19YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0b3JubztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkdsb2JhbEZpbHRlcih0YWJsZTogVGFibGUsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5maWx0ZXJGaWVsZC5lbWl0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hSW5pY2lhbCA9IChldmVudD8uZmlyc3QgPiAwID8gZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzIDogZXZlbnQuZmlyc3QpICsgMTtcclxuICAgICAgbGV0IHRlcm1vUGVzcXVpc2EgPSAnJztcclxuICAgICAgbGV0IG9yZGVuYWNhbyA9ICcnO1xyXG5cclxuICAgICAgaWYgKGV2ZW50Lmdsb2JhbEZpbHRlcikgdGVybW9QZXNxdWlzYSA9IGV2ZW50Lmdsb2JhbEZpbHRlcjtcclxuXHJcbiAgICAgIGlmIChldmVudC5zb3J0RmllbGQpXHJcbiAgICAgICAgb3JkZW5hY2FvID0gYCR7ZXZlbnQuc29ydEZpZWxkfSAke2V2ZW50LnNvcnRPcmRlciA9PT0gMSA/ICdBU0MnIDogJ0RFU0MnfWA7XHJcblxyXG4gICAgICBjb25zdCBvYmpldG86IFRhYmxlUGFnaW5hdGUgPSB7XHJcbiAgICAgICAgcGFnaW5hSW5pY2lhbDogcGFnaW5hSW5pY2lhbCxcclxuICAgICAgICB0YW1hbmhvUGFnaW5hOiBldmVudC5yb3dzLFxyXG4gICAgICAgIHRlcm1vUGVzcXVpc2E6IHRlcm1vUGVzcXVpc2EsXHJcbiAgICAgICAgb3JkZW5hY2FvOiBvcmRlbmFjYW8sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLm9uUGFnaW5hdGUuZW1pdChvYmpldG8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlKHZhbHVlID0gW10pIHtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm5Sb3dDbGFzcyhyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pIHtcclxuICAgIGxldCB2YWx1ZSA9IHJvd0RhdGFbY29sLmZpZWxkXTtcclxuICAgIGxldCByb3dDbGFzczogc3RyaW5nO1xyXG5cclxuICAgIHRoaXMudGFibGVTaXplID4gODAwID8gKHJvd0NsYXNzID0gJ3RleHQtYmFzZScpIDogKHJvd0NsYXNzID0gJ3RleHQtc20nKTtcclxuXHJcbiAgICBpZiAoY29sLmV4cGlyZWREYXRlID09IHRydWUpIHtcclxuICAgICAgbmV3IERhdGUodmFsdWUpIDwgbmV3IERhdGUoKVxyXG4gICAgICAgID8gKHJvd0NsYXNzID0gcm93Q2xhc3MgKyAnIHRleHQtcmVkLTQwMCBmb250LXNlbWlib2xkJylcclxuICAgICAgICA6ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvd0NsYXNzO1xyXG4gIH1cclxuXHJcbiAgZXhwaXJlZEZpbGUocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsdWUgPSByb3dEYXRhWydkYXRhdmVuY2ltZW50byddO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKSA8IG5ldyBEYXRlKCkgJiYgY29sLmZpZWxkID09ICdhcmVhJztcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybVZhbHVlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVtjb2wuZmllbGRdO1xyXG5cclxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICghY29sLnBpcGUpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN3aXRjaCAoY29sLnBpcGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICBjYXNlICdkYXRlTW9udGhZZWFyJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ01NL3l5eXknKTtcclxuICAgICAgICBjYXNlICdkZWNpbWFsJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJzEuMi0yJywgJ3B0LUJSJyk7XHJcbiAgICAgICAgY2FzZSAnY3BmY25waic6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcGZDbnBqUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ3RlbGVmb25lJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLnRlbGVmb25lUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ21vbmV5JzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGFyVmFsb3IodmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ3BlcmNlbnRhZ2UnOlxyXG4gICAgICAgICAgcmV0dXJuIGAke3ZhbHVlfSAlYDtcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRhclZhbG9yKHZhbG9yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbG9yKTtcclxuICB9XHJcblxyXG4gIGFkanVzdFRhYmxlU2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA8IDgwMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2l6ZSA9ICdwLWRhdGF0YWJsZS1zbSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2l6ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG91YmxlQ2xpY2soZTogYW55LCByb3dEYXRhOiBhbnkpIHtcclxuICAgIGxldCBldmVudERvdWJsZUNsaWNrID0geyBldmVudDogZSwgcm93RGF0YTogcm93RGF0YSB9O1xyXG5cclxuICAgIGxldCBhcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgIGUudGFyZ2V0LmNsYXNzTGlzdC5mb3JFYWNoKCh4OiBhbnkpID0+IGFycmF5LnB1c2goeCkpO1xyXG5cclxuICAgIHRoaXMuZG91YmxlQ2xpY2tFdmVudC5lbWl0KGV2ZW50RG91YmxlQ2xpY2spO1xyXG4gIH1cclxuXHJcbiAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuY2VudHJhbGl6ZSkge1xyXG4gICAgICByZXR1cm4gJ3RleHQtYWxpZ246IGNlbnRlcic7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ25Db2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuYWxpZ24pIHtcclxuICAgICAgcmV0dXJuIGB0ZXh0LWFsaWduOiAke2NvbC5hbGlnbn1gO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGFsaWduQ29sdW5hc0hlYWRlcihjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmFsaWduKSB7XHJcbiAgICAgIGlmIChjb2wuYWxpZ24gPT0gJ3JpZ2h0JykgcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQ6IGVuZCc7XHJcbiAgICAgIGVsc2UgcmV0dXJuICcnO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHJldG9ybmFyUm93KHJvd0RhdGE6IGFueSwgY29sOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgX3Jvd2FjdGlvbiA9IHRoaXMuY29uZmlnLnJvd3MgPyB0aGlzLmNvbmZpZy5yb3dzW2NvbC5maWVsZF0gOiBudWxsO1xyXG4gICAgY29uc3QgX2ZpZWxkOiBzdHJpbmcgPVxyXG4gICAgICBfcm93YWN0aW9uICYmIF9yb3dhY3Rpb25bZmllbGRdXHJcbiAgICAgICAgPyBfcm93YWN0aW9uW2ZpZWxkXS5jb25zdHJ1Y3RvciA9PT0gRnVuY3Rpb25cclxuICAgICAgICAgID8gX3Jvd2FjdGlvbltmaWVsZF0uYXBwbHkodGhpcywgW3Jvd0RhdGFdKVxyXG4gICAgICAgICAgOiBfcm93YWN0aW9uW2ZpZWxkXVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIHJldHVybiBfZmllbGQ7XHJcbiAgfVxyXG5cclxuICBleGliaXJDYW1wbyhmaWVsZDogYW55LCByb3dEYXRhOiBhbnkpIHtcclxuICAgIGxldCB2aXNpYmxlID0gZmllbGQudmlzaWJsZSA/IGZpZWxkLnZpc2libGUocm93RGF0YSkgOiB0cnVlO1xyXG5cclxuICAgIHJldHVybiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuQ2xhc3NDaGlwKHJvd0RhdGE6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGBjaGlwLXN0eWxlIHctYXV0byBib3JkZXItcm91bmQtMnhsIHAtMiB0ZXh0LSR7dGhpcy5yZXRvcm5hclJvdyhcclxuICAgICAgcm93RGF0YSxcclxuICAgICAgY29sLFxyXG4gICAgICAnc3R5bGVjaGlwJ1xyXG4gICAgKX0gYm9yZGVyLSR7dGhpcy5yZXRvcm5hclJvdyhyb3dEYXRhLCBjb2wsICdzdHlsZWNoaXAnKX1gO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuQ2xhc3NJY29uKHJvd0RhdGE6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmV0b3JuYXJSb3cocm93RGF0YSwgY29sLCAnaWNvbnJvdycpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuVG9vbHRpcEljb24ocm93RGF0YTogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXRvcm5hclJvdyhyb3dEYXRhLCBjb2wsICd0b29sdGlwaWNvbnJvdycpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuVG9vbHRpcFJvdyhyb3dEYXRhOiBhbnksIGNvbDogYW55KTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnJldG9ybmFyUm93KHJvd0RhdGEsIGNvbCwgJ3Rvb2x0aXByb3cnKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbHVtbihmaWVsZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXg6IG51bWJlcjtcclxuXHJcbiAgICBsZXQgY29sdW1uOiBUYWJsZUNvbmZpZ0NvbHVtbiB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnLmNvbHVtbnMuZmluZChcclxuICAgICAgeCA9PiB4LmZpZWxkID09IGZpZWxkXHJcbiAgICApO1xyXG4gICAgaWYgKGNvbHVtbikge1xyXG4gICAgICBpbmRleCA9IHRoaXMuY29uZmlnLmNvbHVtbnMuaW5kZXhPZihjb2x1bW4pO1xyXG4gICAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZGVsZXRlZENvbHVucy5wdXNoKGNvbHVtbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDb2x1bW4oZmllbGQ6IHN0cmluZykge1xyXG4gICAgbGV0IGluZGV4OiBudW1iZXI7XHJcblxyXG4gICAgbGV0IGNvbHVtbjogVGFibGVDb25maWdDb2x1bW4gfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgIHggPT4geC5maWVsZCA9PSBmaWVsZFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIWNvbHVtbikge1xyXG4gICAgICBsZXQgZGVsZXRlZENvbHVtbjogVGFibGVDb25maWdDb2x1bW4gfCB1bmRlZmluZWQgPVxyXG4gICAgICAgIHRoaXMuZGVsZXRlZENvbHVucy5maW5kKHggPT4geC5maWVsZCA9PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZGVsZXRlZENvbHVtbiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpbmRleCA9IHRoaXMuZGVsZXRlZENvbHVucy5pbmRleE9mKGRlbGV0ZWRDb2x1bW4pO1xyXG4gICAgICAgIHRoaXMuZGVsZXRlZENvbHVucy5zbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5wdXNoKGRlbGV0ZWRDb2x1bW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaW5hbWljQ29sdW1uU2V0KGU6IGFueSwgY29sOiBhbnkpIHtcclxuICAgIGNvbC5jaGVja2VkID0gZS5jaGVja2VkO1xyXG4gICAgaWYgKGUuY2hlY2tlZCkgdGhpcy5hZGRDb2x1bW4oY29sLmZpZWxkKTtcclxuICAgIGVsc2UgdGhpcy5kZWxldGVDb2x1bW4oY29sLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoY29sLnBvc2l0aW9uKSB0aGlzLmNvbmZpZy5jb2x1bW5zLnNvcnQodGhpcy5zb3J0QnlQb3NpdGlvbigpKTtcclxuICB9XHJcblxyXG4gIC8vIGFicmlyTWVudUZpbHRybyhlOiBhbnkpIHtcclxuICAvLyAgIHRoaXMubWVudUZpbHRybyA9ICF0aGlzLm1lbnVGaWx0cm87XHJcbiAgLy8gICB0aGlzLmNoZWNrYm94Q2xpY2tlZCA9IGZhbHNlO1xyXG5cclxuICAvLyAgIGlmICh0aGlzLnRhbWFuaG9UZWxhIDwgNzAwKVxyXG4gIC8vICAgICB0aGlzLnN0eWxlU2V0dGVyKCdsZWZ0JywgKHRoaXMuYm90YW9GaWx0cm8ubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gMjg4KSArICdweCcpXHJcbiAgLy8gICBlbHNlXHJcbiAgLy8gICAgIHRoaXMuc3R5bGVTZXR0ZXIoJ2xlZnQnLCAodGhpcy5ib3Rhb0ZpbHRyby5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgKyA0MCkgKyAncHgnKVxyXG5cclxuICAvLyAgIHRoaXMuc3R5bGVTZXR0ZXIoJ3RvcCcsIHRoaXMuYm90YW9GaWx0cm8ubmF0aXZlRWxlbWVudC5vZmZzZXRUb3AgKyAncHgnKVxyXG4gIC8vICAgdGhpcy5zdHlsZVNldHRlcigndmlzaWJpbGl0eScsIHRoaXMubWVudUZpbHRybyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gZmVjaGFyTWVudUZpbHRybygpIHtcclxuICAvLyAgIHRoaXMubWVudUZpbHRybyA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5jaGVja2JveENsaWNrZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gICB0aGlzLnN0eWxlU2V0dGVyKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpXHJcbiAgLy8gfVxyXG5cclxuICAvLyBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXHJcbiAgLy8gb25Fc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAvLyAgIGlmICh0aGlzLmZpbHRlckNvbHVtbnNCdG4gPT0gdHJ1ZSAmJiB0aGlzLm1lbnVGaWx0cm8gPT0gdHJ1ZSkge1xyXG4gIC8vICAgICB0aGlzLmZlY2hhck1lbnVGaWx0cm8oKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAvLyBvbkNsaWNrRXZlbnQoZXZlbnQ6IGFueSkge1xyXG4gIC8vICAgaWYgKHRoaXMuZmlsdGVyQ29sdW1uc0J0biA9PSB0cnVlICYmIHRoaXMubWVudUZpbHRybyA9PSB0cnVlKSB7XHJcbiAgLy8gICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gIC8vICAgICBjb25zdCBtZW51RmlsdHJvRGl2ID1cclxuICAvLyAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbWVudUZpbHRyb0RpdicpO1xyXG4gIC8vICAgICBjb25zdCBib3Rhb0ZpbHRybyA9XHJcbiAgLy8gICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI2JvdGFvRmlsdHJvJyk7XHJcbiAgLy8gICAgIGNvbnN0IGlzQ2hlY2tib3hDbGlja2VkID1cclxuICAvLyAgICAgICBjbGlja2VkRWxlbWVudC5jbGFzc0xpc3QudG9TdHJpbmcoKS5pbmNsdWRlcygncC1jaGVja2JveCcpIHx8XHJcbiAgLy8gICAgICAgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC50b1N0cmluZygpID09ICcnO1xyXG4gIC8vICAgICBjb25zdCBpc0luc2lkZU1lbnUgPVxyXG4gIC8vICAgICAgIG1lbnVGaWx0cm9EaXY/LmNvbnRhaW5zKGNsaWNrZWRFbGVtZW50KSB8fFxyXG4gIC8vICAgICAgIGJvdGFvRmlsdHJvPy5jb250YWlucyhjbGlja2VkRWxlbWVudCkgfHxcclxuICAvLyAgICAgICBpc0NoZWNrYm94Q2xpY2tlZDtcclxuXHJcbiAgLy8gICAgIGlmICghaXNJbnNpZGVNZW51KSB0aGlzLmZlY2hhck1lbnVGaWx0cm8oKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGNoZWNrTWVudUZpbHRybyhjb2w6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRDb2x1bW46IFRhYmxlQ29uZmlnQ29sdW1uIHwgdW5kZWZpbmVkID0gdGhpcy5kZWxldGVkQ29sdW5zLmZpbmQoXHJcbiAgICAgICh4OiBUYWJsZUNvbmZpZ0NvbHVtbikgPT4geC5maWVsZCA9PSBjb2wuZmllbGRcclxuICAgICk7XHJcbiAgICBpZiAoZGVsZXRlZENvbHVtbikgY29sLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIGVsc2UgY29sLmNoZWNrZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGVsZW0xOiBhbnksIGVsZW0yOiBhbnkpIHtcclxuICAgICAgaWYgKGVsZW0xLnBvc2l0aW9uIDwgZWxlbTIucG9zaXRpb24pIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbTEucG9zaXRpb24gPiBlbGVtMi5wb3NpdGlvbikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZGluYW1pY0Rpc2FibGVDb2x1bW4oY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGNvbC5maXhlZENvbHVtbikgcmV0dXJuIGNvbC5maXhlZENvbHVtbjtcclxuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tIaWRlQ29sdW1ucygpIHtcclxuICAgIGxldCBoaWRlQ29sdW1uc0NvbmZpZyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoXHJcbiAgICAgIChjb2wpID0+IGNvbC5oaWRlQ29sdW1uID09IHRydWVcclxuICAgICk7XHJcbiAgICBoaWRlQ29sdW1uc0NvbmZpZy5mb3JFYWNoKChjb2wpID0+IHRoaXMuZGVsZXRlQ29sdW1uKGNvbC5maWVsZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VzdG9tVGVtcGxhdGUodGVtcGxhdGVuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXNbdGVtcGxhdGVuYW1lXTtcclxuICB9XHJcblxyXG4gIC8vIHN0eWxlU2V0dGVyKHN0eWxlOiBzdHJpbmcsIGRhdGE6IHN0cmluZykge1xyXG4gIC8vICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoXHJcbiAgLy8gICAgIHRoaXMubWVudUZpbHRyb0Rpdi5uYXRpdmVFbGVtZW50LFxyXG4gIC8vICAgICBzdHlsZSxcclxuICAvLyAgICAgZGF0YVxyXG4gIC8vICAgKTtcclxuICAvLyB9XHJcblxyXG4gIGZpbHRyb3NBdmFuY2Fkb3NFdmVudChlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd0ZpbHRyb3NBdmFuY2Fkb3MgPSAhdGhpcy5zaG93RmlsdHJvc0F2YW5jYWRvcztcclxuICAgIHRoaXMuZmlsdHJvc0F2YW5jYWRvc0VtaXQuZW1pdCh0aGlzLnNob3dGaWx0cm9zQXZhbmNhZG9zKTtcclxuICB9XHJcblxyXG4gIG9uU3dpdGNoQ2hhbmdlKGVzdGFkbzogYW55LCByb3dEYXRhOiBib29sZWFuLCBjb2w6IGFueSkge1xyXG4gICAgdGhpcy5vblN3aXRjaFRhYmxlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBlc3RhZG86IGVzdGFkbyxcclxuICAgICAgcm93RGF0YTogcm93RGF0YSxcclxuICAgICAgY29sOiBjb2xcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgQGlmIChmaWx0cm9zQXZhbmNhZG9zKSB7XHJcbiAgPHAtcGFuZWxcclxuICAgIGhlYWRlcj1cIkZpbHRyb3MgYXZhbsOnYWRvc1wiXHJcbiAgICBbdG9nZ2xlYWJsZV09XCJ0cnVlXCJcclxuICAgIFtjb2xsYXBzZWRdPVwidHJ1ZVwiXHJcbiAgICAoY29sbGFwc2VkQ2hhbmdlKT1cImNvbGxhcHNlZCA9ICFjb2xsYXBzZWRcIlxyXG4gICAgW3N0eWxlXT1cInsgJ21hcmdpbi1ib3R0b20nOiAnMnB4JyB9XCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyaWNvbnNcIj5cclxuICAgICAgQGlmICghY29sbGFwc2VkKSB7XHJcbiAgICAgIDxpIGNsYXNzPVwicGkgcGktZmlsdGVyXCI+PC9pPlxyXG4gICAgICB9XHJcbiAgICAgIDwhLS0gw41jb25lIHF1YW5kbyBvIHBhaW5lbCBlc3TDoSBhYmVydG8gLS0+XHJcbiAgICAgIEBpZiAoY29sbGFwc2VkKSB7XHJcbiAgICAgIDxpIGNsYXNzPVwicGkgcGktbWludXNcIj48L2k+XHJcbiAgICAgIH1cclxuICAgICAgPCEtLSDDjWNvbmUgcXVhbmRvIG8gcGFpbmVsIGVzdMOhIGZlY2hhZG8gLS0+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvcC1wYW5lbD5cclxuICB9XHJcblxyXG4gIEBpZiAoY29uZmlnKSB7XHJcbiAgPHAtdGFibGVcclxuICAgICNkdFxyXG4gICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXNtXCJcclxuICAgIFt2YWx1ZV09XCJ0YWJsZURhdGFcIlxyXG4gICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgW3Jvd1NlbGVjdGFibGVdPVwiaXNSb3dTZWxlY3RhYmxlXCJcclxuICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcclxuICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzXCJcclxuICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxyXG4gICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnNcIlxyXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IC0ge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9XCJcclxuICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcclxuICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcclxuICAgIChvbkxhenlMb2FkKT1cInBhZ2luYXRlKCRldmVudClcIlxyXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICByb3dHcm91cE1vZGU9XCJyb3dzcGFuXCJcclxuICAgIFtncm91cFJvd3NCeV09XCJjb25maWcuZmllbGRHcm91cFwiXHJcbiAgICBbc2hvd0ZpcnN0TGFzdEljb25dPVwic2hvd0ZpcnN0TGFzdEljb25cIlxyXG4gICAgW3BhZ2VMaW5rc109XCJwYWdlTGlua3NPcHRpb25zXCJcclxuICAgIFtyZXNwb25zaXZlXT1cInRydWVcIlxyXG4gICAgW3Jlc3BvbnNpdmVMYXlvdXRdPVwicmVzcG9uc2l2ZUxheW91dCA/ICdzdGFjaycgOiAnJ1wiXHJcbiAgICBbc2Nyb2xsYWJsZV09XCJpc1RhYmxlU2Nyb2xsYWJsZVwiXHJcbiAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXHJcbiAgICBbcm93VHJhY2tCeV09XCJyb3dUcmFja0J5IFwiXHJcbiAgPlxyXG4gICAgQGlmIChjb25maWcuZW5hYmxlQ2F0aW9uKSB7XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdyaWQgZm9ybWdyaWQgcC1mbHVpZCBjb2wtMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgIEBpZiAoY29uZmlnLnRpdGxlKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBmb250LWJvbGQgbXktM1wiPlxyXG4gICAgICAgICAgICB7eyBjb25maWcudGl0bGUgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChjb25maWcuc3VidGl0bGUpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIG1iLTQgZm9udC1tZWRpdW1cIj5cclxuICAgICAgICAgICAge3sgY29uZmlnLnN1YnRpdGxlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIG1kOmNvbC02IGxnOmNvbC00IHt7XHJcbiAgICAgICAgICAgIHRhbWFuaG9UZWxhIDwgNzY4ID8gJ2NvbC0xMCcgOiAnY29sLTEyJ1xyXG4gICAgICAgICAgfX0gbXQtMSBtYi0yIFwiPlxyXG4gICAgICAgICAgQGlmIChjb25maWcuZW5hYmxlRmlsdGVyKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgIHBBdXRvRm9jdXNcclxuICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAoaW5wdXQpPVwib25HbG9iYWxGaWx0ZXIoZHQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGVzcXVpc2FyLi4uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImgtMnJlbVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAjbWVudUZpbHRyb0RpdlxyXG4gICAgICAgICAgaWQgPSBcIm1lbnVGaWx0cm9EaXZcIlxyXG4gICAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiJ2hpZGRlbidcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB6LTQgYmctZ3JheS0yMDBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICA+IC0tPlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgI21lbnVGaWx0cm9EaXZcclxuICAgICAgICAgICAgaWQ9XCJtZW51RmlsdHJvRGl2XCJcclxuICAgICAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiJ2hpZGRlbidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHotNCBiZy1ncmF5LTIwMCBtZW51LWNvbHVtbnMtZmlsdHJvXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHAtY2FyZD5cclxuICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gdGV4dC1tZWRpdW0gdy0xNXJlbVwiPlxyXG4gICAgICAgICAgICAgICAge3sgY2hlY2tNZW51RmlsdHJvKGNvbCkgfX1cclxuICAgICAgICAgICAgICAgIEBpZiAoIWRpbmFtaWNEaXNhYmxlQ29sdW1uKGNvbCkpIHtcclxuICAgICAgICAgICAgICAgIDxwLWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICNmaWx0ZXJDb2x1bW5zXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgW2JpbmFyeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveC1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiZGluYW1pY0NvbHVtblNldCgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgID48L3AtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3AtY2FyZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBjb2wtMSBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICBAZm9yIChhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNMb3RlOyB0cmFjayBpOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0bnMtb3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnN3B4JyB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgQGlmICgoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwIHx8IGFjdGlvbi5zaG93QWNvZXNMb3RlKSAmJlxyXG4gICAgICAgICAgICAgICAgZXhpYmlyQ2FtcG8oYWN0aW9uLCB0aGlzLmFjdGlvbikpIHtcclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGlkPVwiYWN0aW9uTG90ZUJ0bnNcIlxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbkxvdGVCdG5zIHAtYnV0dG9uLXJhaXNlZCBwLWJ1dHRvbi10ZXh0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICBhY3Rpb24/LmNvbW1hbmQoKTsgYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICMxREE3NTBcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLnRvb2x0aXAsIHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cImdldE9yRXhlY3V0ZShhY3Rpb24udG9vbHRpcCwgc2VsZWN0ZWRJdGVtcyk/Lmxlbmd0aCA/PyAwID4gNyAmJiBjb25maWcuYWN0aW9uc0xvdGUgJiYgaSA9PSBjb25maWcuYWN0aW9uc0xvdGUubGVuZ3RoIC0gMSAgPyAnbGVmdCcgOiAnYm90dG9tJ1wiIFxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLmRpc2FibGVkLCBzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbWQtMjJcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0T3JFeGVjdXRlKGFjdGlvbi5pY29uLCBzZWxlY3RlZEl0ZW1zKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIHBUZW1wbGF0ZT1cImhlYWRlclwiXHJcbiAgICAgIGxldC1jb2x1bW5zXHJcbiAgICA+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVTZWxlY3QpIHtcclxuICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNHJlbTsgYm9yZGVyLWxlZnQ6IHNvbGlkIDRweCB0cmFuc3BhcmVudFwiPlxyXG4gICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveCAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIj48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDx0aFxyXG4gICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbl09J1wiZGF0YS5cIiArIGNvbC5maWVsZCdcclxuICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSAmJiBhbGlnbkNvbHVuYXNIZWFkZXIoY29sKSA9PSAnJ1xyXG4gICAgICAgICAgICAgICAgPyAnZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgICAgOiAnZmxleCBmbGV4LXJvdydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cImFsaWduQ29sdW5hc0hlYWRlcihjb2wpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgQGlmIChjb2wuc29ydGFibGUpIHtcclxuICAgICAgICAgICAgPHAtc29ydEljb25cclxuICAgICAgICAgICAgICBbZmllbGRdPSdcImRhdGEuXCIgKyBjb2wuZmllbGQnXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEwcHhcIlxyXG4gICAgICAgICAgICA+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZiAoY29sLmhlYWRlclRvb2x0aXApIHtcclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgID5pbmZvPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNvbmZpZy5hY3Rpb25zICYmIGNvbmZpZy5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgbGV0LXJvd0RhdGFcclxuICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgbGV0LXJvd2dyb3VwPVwicm93Z3JvdXBcIlxyXG4gICAgICBsZXQtcm93c3Bhbj1cInJvd3NwYW5cIlxyXG4gICAgPlxyXG4gICAgICA8dHIgKGRibGNsaWNrKT1cImRvdWJsZUNsaWNrKCRldmVudCwgcm93RGF0YS5kYXRhKVwiIFtuZ0NsYXNzXT1cInsgJ2NhcGl0YWxpemUnOiB0YWJsZUNhcHRhbGl6ZWQgfVwiPlxyXG4gICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZVNlbGVjdCkge1xyXG4gICAgICAgIDx0ZCBbc3R5bGVdPVwiYXBwbHlTdHlsZShyb3dEYXRhLmRhdGEsIHsgZmllbGQ6ICdjaGVjay1ib3gnLCBoZWFkZXI6ICcnIH0pXCI+XHJcbiAgICAgICAgICA8IS0tPHAtdGFibGVDaGVja2JveCAqbmdJZj1cImlzVmlzaWJsZUNoZWNrYm94KHJvd0RhdGEuZGF0YSlcIi0tPlxyXG4gICAgICAgICAgPHAtdGFibGVDaGVja2JveFxyXG4gICAgICAgICAgICBbdmFsdWVdPVwicm93RGF0YS5kYXRhXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRDaGVja2JveChyb3dEYXRhLmRhdGEpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgID48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICBAaWYgKHJvd2dyb3VwICYmICFjb2wudGVtcGxhdGUpIHtcclxuICAgICAgICAgIDx0ZCBcclxuICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJyb3dncm91cCAmJiBjb2wuZ3JvdXBlZCA/IHJvd3NwYW4gOiBudWxsXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3dUYWJsZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJcclxuICAgICAgICAgICAgICBhcHBseVN0eWxlKHJvd0RhdGEuZGF0YSwgY29sKSArXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgK1xyXG4gICAgICAgICAgICAgIGFsaWduQ29sdW5hcyhjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwUm93KHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wuaGVhZGVyIH19Ojwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNCb29sZWFuRmllbGQocm93RGF0YS5kYXRhLCBjb2wpOyBlbHNlIGJvb2xlYW5GaWVsZFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cInJldHVyblJvd0NsYXNzKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBAaWYgKCFpc0NoaXBGaWVsZChjb2wpICYmICFjb2wuaWNvbkZpZWxkICYmICFpc0ltYWdlRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgQGlmIChjb2wuaWNvbikge1xyXG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImNvbC5pY29uICsgJyBtci0yJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEuZGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCkge1xyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuQ2xhc3NDaGlwKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEuZGF0YSwgY29sKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBpZiAoaXNJbWFnZUZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cImxvYWRJbWFnZShyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmIChjb2wuaWNvbkZpZWxkKSB7XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLWljb25zJzogY29sLmluZEljb25NYXRlcmlhbCxcclxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1yLTInOiAhY29sLmluZEljb25NYXRlcmlhbFxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgcmV0dXJuQ2xhc3NJY29uKHJvd0RhdGEuZGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9vbGVhbkZpZWxkPlxyXG4gICAgICAgICAgICAgIEBpZiAoIWNvbC5pY29uRmllbGQgJiYgIWlzU3dpdGNoRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cInJvd0RhdGEuZGF0YVtjb2wuZmllbGRdID8gJ3RleHQtZ3JlZW4tNTAwJyA6ICd0ZXh0LXJlZC01MDAnXCJcclxuICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByb3dEYXRhLmRhdGFbY29sLmZpZWxkXSA/IFwiY2hlY2tcIiA6IFwiY2xvc2VcIiB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBAaWYgKGlzU3dpdGNoRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJyZXR1cm5Sb3dDbGFzcyhyb3dEYXRhLmRhdGEsIGNvbClcIj5cclxuICAgICAgICAgICAgICAgIDxrdi1zd2l0Y2hcclxuICAgICAgICAgICAgICAgICAgKG9uU3dpdGNoQ2hhbmdlKT1cIm9uU3dpdGNoQ2hhbmdlKCRldmVudCwgcm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbD8ub25seVJlYWRGaWVsZCA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3N3aXRjaFZhbHVlXT1cInRyYW5zZm9ybVZhbHVlKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2t2LXN3aXRjaD5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgQGlmICghcm93Z3JvdXAgJiYgIWNvbC5ncm91cGVkICYmICFjb2wudGVtcGxhdGUpIHtcclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLmRhdGEsIGNvbCkgK1xyXG4gICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICtcclxuICAgICAgICAgICAgICBhbGlnbkNvbHVuYXMoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInJvd1RhYmxlXCJcclxuICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBSb3cocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5oZWFkZXIgfX06PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc0Jvb2xlYW5GaWVsZChyb3dEYXRhLmRhdGEsIGNvbCk7IGVsc2UgYm9vbGVhbkZpZWxkXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEBpZiAoIWlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGQgJiYgIWlzSW1hZ2VGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNvbC5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY29sLmljb24gKyAnIG1yLTInXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAge3sgdHJhbnNmb3JtVmFsdWUocm93RGF0YS5kYXRhLCBjb2wpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGlmIChpc0NoaXBGaWVsZChjb2wpICYmICFjb2wuaWNvbkZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJyZXR1cm5DbGFzc0NoaXAocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBJY29uKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEuZGF0YSwgY29sKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBpZiAoaXNJbWFnZUZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1hZ2VcIiBbc3JjXT1cImxvYWRJbWFnZShyb3dEYXRhLmRhdGEsIGNvbClcIiAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBAaWYgKGNvbC5pY29uRmllbGQpIHtcclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtaWNvbnMnOiBjb2wuaW5kSWNvbk1hdGVyaWFsLFxyXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXItMic6ICFjb2wuaW5kSWNvbk1hdGVyaWFsXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBJY29uKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyByZXR1cm5DbGFzc0ljb24ocm93RGF0YS5kYXRhLCBjb2wpIH19XHJcbiAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNib29sZWFuRmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoIWNvbC5pY29uRmllbGQgJiYgIWlzU3dpdGNoRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cInJvd0RhdGEuZGF0YVtjb2wuZmllbGRdID8gJ3RleHQtZ3JlZW4tNTAwJyA6ICd0ZXh0LXJlZC01MDAnXCJcclxuICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByb3dEYXRhLmRhdGFbY29sLmZpZWxkXSA/IFwiY2hlY2tcIiA6IFwiY2xvc2VcIiB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBAaWYgKGlzU3dpdGNoRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJyZXR1cm5Sb3dDbGFzcyhyb3dEYXRhLmRhdGEsIGNvbClcIj5cclxuICAgICAgICAgICAgICAgIDxrdi1zd2l0Y2hcclxuICAgICAgICAgICAgICAgICAgKG9uU3dpdGNoQ2hhbmdlKT1cIm9uU3dpdGNoQ2hhbmdlKCRldmVudCwgcm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbD8ub25seVJlYWRGaWVsZCA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3N3aXRjaFZhbHVlXT1cInRyYW5zZm9ybVZhbHVlKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2t2LXN3aXRjaD5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgQGlmIChjb2wudGVtcGxhdGUpIHtcclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLmRhdGEsIGNvbCkgK1xyXG4gICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICtcclxuICAgICAgICAgICAgICBhbGlnbkNvbHVuYXMoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInJvd1RhYmxlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5oZWFkZXIgfX06PC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYgKGdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKSkge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEuZGF0YSB9XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGNvbmZpZy5hY3Rpb25zICYmIGNvbmZpZy5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8dGQgW3N0eWxlXT1cImFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCB7IGZpZWxkOiAnYnRucy1vcHRpb25zJywgaGVhZGVyOiAnJyB9KVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWVuZCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgaWQ9XCJtb3JlVmVydEJ0blwiXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uQnRucyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudCk7IGFjdGl2ZUl0ZW0ocm93RGF0YS5kYXRhKVwiXHJcbiAgICAgICAgICAgID4gLS0+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIwcHhcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEuZGF0YSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgbW9yZV9ob3JpelxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgPHAtdGllcmVkTWVudVxyXG4gICAgICAgICAgICAgICNtZW51XHJcbiAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJyb3dEYXRhLmFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgID48L3AtdGllcmVkTWVudT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCJcclxuICAgICAgbGV0LWNvbHVtbnNcclxuICAgID5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDEwcHggIWltcG9ydGFudFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJmb250LW1lZGl1bSBtLTBcIj5OZW5odW0gcmVnaXN0cm8gZW5jb250cmFkbzwvcD5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdGFibGU+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnNcIlxyXG4vPlxyXG5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1NYXRlcmlhbCtTeW1ib2xzK091dGxpbmVkOm9wc3osd2dodCxGSUxMLEdSQURANDgsNDAwLDAsMFwiXHJcbi8+XHJcbiJdfQ==
500
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBR2YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQWMsWUFBWSxFQUFhLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSzVHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRixNQUFNLFVBQVUsR0FDZCwwcVBBQTBxUCxDQUFDO0FBTzdxUCxNQUFNLE9BQU8sZ0JBQWdCO0lBOEIzQixJQUFxQixTQUFTLENBQUMsS0FBa0I7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUk7WUFDeEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSztZQUN6QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3hDLEdBQUcsS0FBSztTQUNULENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0Is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QXhCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNBLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFrRHhCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERhdGVQaXBlLFxyXG4gIERlY2ltYWxQaXBlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBEb0NoZWNrLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuXHJcbmltcG9ydCB7IENwZkNucGpQaXBlIH0gZnJvbSAnLi4vLi4vYXBpL3BpcGVzL2NwZmNucGoucGlwZSc7XHJcbmltcG9ydCB7IEt2TWVudUl0ZW0sIGdldE9yRXhlY3V0ZSwgVmFsdWVPckZuLCBtYXBUb01lbnVJdGVtIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdGFibGUva3YtbWVudWl0ZW0nO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZyc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnQ29sdW1uIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29uZmlnLmNvbHVtbic7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZSc7XHJcbmltcG9ydCB7IFRlbGVmb25lUGlwZSB9IGZyb20gJy4uLy4uL2FwaS9waXBlcy90ZWxlZm9uZS5waXBlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hcGkvZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5cclxuY29uc3QgaW1nRGVmYXVsdCA9XHJcbiAgJy85ai80QUFRU2taSlJnQUJBUUlBZGdCMkFBRC80UUJpUlhocFpnQUFUVTBBS2dBQUFBZ0FCUUVTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVNnRWJBQVVBQUFBQkFBQUFVZ0VvQUFNQUFBQUJBQU1BQUFJVEFBTUFBQUFCQUFFQUFBQUFBQUFBQUFCMkFBQUFBUUFBQUhZQUFBQUIvOXNBUXdBREFnSUNBZ0lEQWdJQ0F3TURBd1FHQkFRRUJBUUlCZ1lGQmdrSUNnb0pDQWtKQ2d3UERBb0xEZ3NKQ1EwUkRRNFBFQkFSRUFvTUVoTVNFQk1QRUJBUS85c0FRd0VEQXdNRUF3UUlCQVFJRUFzSkN4QVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRLzhBQUVRZ0FrQUNRQXdFUkFBSVJBUU1SQWYvRUFCMEFBUUFCQkFNQkFBQUFBQUFBQUFBQUFBQUdBUUlIQ0FNRUNRWC94QUJCRUFBQ0FRUUFCUUlDQ0FRREJBc0FBQUFCQWdNQUJBVVJCZ2NTSVRFVFFRaFJDUlFWR1NKVmxkRXlZWUdSUWxKaUZpTTNPRk5qY1hOMWRwS1RzYk8wLzhRQUdnRUJBQUlEQVFBQUFBQUFBQUFBQUFBQUFBRUZBd1FHQXYvRUFESVJBQUlBQkFNRkNBRUZBUUVCQUFBQUFBQUJBZ01FRVNFeFVRVVNRWkh3RXhVeVlYR0JvYkhSSWpOQ3dlRTA4U1AvMmdBTUF3RUFBaEVERVFBL0FQS3FnRkFLQVVCZERETGNTcEJCRThrc2pCRVJGSlptSjBBQVBKSnFVbkU3SWh0UXE3eUo1dzl5ZHoyVmkrczVlNFhGUk11MFYwOVNVNzBSdEFSMGpSUGs5UUkwVjk2czVHeXBreFhtUGQrWC9uMzVGYk8ycEtsNFFmcWZ4eko5ak9VL0JtTzZXa3NaYjZSSkJJcjNVcE90YTBwVmVsU08zZ2c3MmQ3SGFyT1hzMm5nelYvWHBJcTQ5cFZNZkczb3Z6ZGttc01UaXNYMS9abU10TFAxZGRmb1FMSDFhM3JmU0J2V3ovZXR1Q1hCTHZ1SksrbUJweHpJNWx0OXQyMXhPM1dROENnT3BmNG5GWlRvKzA4WmFYbnBiNlByRUN5ZE85YjExQTYzb2YyckhITGdtZU5KK3FQY0V5T1hmY2JWOU1DTTVQbFB3WmtlcG83R1d4a2VReU05cktSdmU5cUZicVVMMzhBRFdoclE3VnFUTm0wOGVTdDZQLzFHNUJ0S29nNDM5VitMTWdQRVBKM1BZcUw2emlMaGNyR3E3ZEVUMDVSclpPa0pQVU5BZUQxRW5RWDNxc243S21TMXZTM3ZmRC8zNzhpMGs3VWxUSHV4cmRmeHovd2djME0xdk05dmNSUEZMRXhSMGRTckt3T2lDRDRJUHRWWTA0WFpsa21vbGRaRnRRU0tBVUFvQlFDZ0ZBU2pnL2w5bWVMWlJLRmV5c09rc2J1U0lsVzdrYVFkdXM3QkIwZERSMmQ2QjNhV2htVk9PVU92NDFOS3NyWWFWWVl4YWRYL0FOK1Ztemg3aEhBY01SQk1UWUlrcFhwZTRmOEFGSy9ZYjJ4OWowZzlJMHUvWVYwTWltbFU2dEFzZGVKenMycG16LzNJci9YU3kxMVo5bXM1Z0toVFVrWEs2RkJjYUZDTGpRb0xqUW9UY29WTkJjcFVFbnh1SWVFY0J4UkNVeTFnalNoZWxMaFB3eXAyT3RNTzVBNmllazdYZnRXQ2ZTeXFoZnJXT3ZFenlhaWJJZjhBODRyZVhEcDVYejBaaFBqSGwvbCtFWmZVSWE4c0NvSXU0NHlGVTdBMDQ3OUIyUnJaMGRqUjNzRG5hcWltVXJ1OFZyK2REb0tTdmwxS3RGYUdLK1Y4ODhzcjRLNzArU0wxcG0rS0FVQW9CUUU1NWRjdTVlSnBseXVXUjQ4VEczWWJLdGNzRDNWVDdLRDJMZjBIZlpXeW9hRjFEMzQvRDk5Y2VyVnRkWEtuWFp5L0Y5ZjdwMWZPTU1NVnZFbHZieEpIRkdvUkVSUUZWUU5BQUR3QVBhdWlTVUtzc2puVzNFN3Q0bklCODY5SGhzclFnclVBVUFvQlFDZ0ZBVXFRVUlvVGM0NW9ZcDRuZ25pU1NPUlNqbzZobFpTTkVFSHNRUjdWRFNpVm5rZWszQzdwNG1EZVluTHVYaGlWc3Jpa2VURlNOM0hjdGJNVDJWajdxVDRiK2g3NkxjNVhVTHAzMmt2dy9YK2VmVDZPaHJsVUxzNW5pKy85MTZ0QjZyU3lGQUtBbEhML0FJT2w0dXkrcENxMkZteVNYWkpPMlVudEdORUhiYUkzN0FFK2RBN2xGU3VxbVdlU3ovSHVhRmZWcW1sN3F2dlJYdDVlZVRXRjhubnBhNXNGREZGQkVrRUVTUnh4cUVSRVVCVlVEUUFBOEFEMnJxVWtsWkhNdHQ0czVRS2s4dGxhZ2dVQW9DZmNwdVJQTkxuYmtueC9MdmhhNHlFY0RCYm05Y2lLMXR0LzlKSzJsQjEzNlJ0aVBBTllaMVJMcDFlWXpQSXBwdFE3UzBiUDRUNkxianU0dEZrNGg1cVlLd3VTTm1LenNacnBBZmwxc1kvL0FJcXVpMnZBbittRmxsRHNlTnI5VVNJcnpCK2piNTI4SzJjdVI0U3llRzR0aWlCWTI5czdXMTJRUGNSeWZnUC9BR0NUWjlnYXlTdHF5WTNhSzZNVTNaTTZCWGdhWnF2bHNUbGNEa3JuRFp2RzNXUHY3T1F4WEZyZFJORkxFNDhxeU1BVlA4alZrbW9sZFpGWkZDNFhhTE02bFNRS0FVQmFSVTVrcG5ITkRGY1JQYjNFU1NSU0tVZEhVTXJLUm9nZytRYWhwTk5NOXd4T0Y3eXpOZmVZSEIwdkNPWUlqNlRZWGpQSmFFSHVxZ2phSFpKMnV3Tis0MGZPd09XcmFWMHN6RHd2TDhleDB0QlZxcGw3cjhVS1YvUHp5U3h0a3N1UkY2MHpmTG9ZWmJpVklJSW5rbGtZSWlJcExNeE9nQUI1Sk5TazRuWkVOcUZYZVJzcHduZ0l1R2VIN1REb0l6SkVuVk82QWY3eVZ1N0hZQUxEZllFamZTRkh0WFcwMGhVOHBTMTcrdlh3Y2hVVGUybXhUTWNYcS9UVjJ5eFN3dmQ1dG4yQUsyREF5Nm9JRkFLQXlwOE5YSXpKZkVCelFzdUM0SlpMWEZ3SWIzTDNpQWJndEVJRGRPKzNXeEtvdm51MnlDQWExNnFvVk5MY2ZIZ2JOSlRPcG1xRGh4UFluZ3pndmhmbDd3MVk4SWNIWWEzeG1KeDhZamd0NFYwQjgyWStXWW51V095U1NTU2E1V1pNaW14T0tOM1oxa3VYREtoVUVDc2o3ZGVEMktBMXkrTVQ0VzhOeno0TnV1SStIOGRGRHh6aHJkcGJDNGpVSzEvR2cyYldRLzR0amZRVC9DMnU0QmJlL1ExanA0OTJMd3Y0OHpRcnFOVk1HOUN2MUw1OGp5VmRIamRvNUZLc3BJWlNORUg1R3VtT1dLVUFvQlFGcEh2VWtvK054ZHc5RHhSZ0xyRXlCUks2OWR1N2FIUktQNFR2UjBOOWpvYjZTUjcxcjFVaFZFcHkzN2Vwc1UwM3NKc016VDYvdjM0MlpyWk5ETmJ6UGIzRVR4U3hNVWRIVXF5c0RvZ2crQ0Q3VnlUVGhkbWRjbW9sZFpFODVPOFBSWlhQeTVhNUN0RmlsVjFRNk81WDJFT2lEMkFWanZZSVlLYXN0bHlWTW03Ny9qOTlmSldiVXFITGxxV3Y1Y2ZKVysvcTVtK3VqT2RMcUhrclVBVUFvRDBpK2k3NFZzN1RscnhkeHI2Uy9XOGxtMXhwY2p1SXJlQkpBQjhnV3VXL3NQbFZEdGVOdVpEQm9yOWNqb05qd0pTNG85WDlmK202MVZCY0NnRkFLQThZL2kyNFZ0T0RQaVA0OHdWaEVzVnY5cC9Ya1JSb0lMbU5ManBBOWdQVzBCOHE2eWlqY3lSREU5UHJBNUd1Z1V1b2poV3YzaVlqclpOVVVBb0NsU0Myb1BSaERuRnc5RmlzL0ZsN2JvV1BLcXpzZzdhbFRRYzZBQTBReW5leVN4WW4ycm50cVNGTG1LWXY1ZmEvUDNjNlBaYzV6Slc0ODRmcmgvWlB1VStNK3p1RExhUmtsU1Mra2t1bldRYTFzOUtsUnIrRW9pa2VkNzM0SXF6MmJMM0tkUFc3NjlrVmUwbzkrb2ZsWmYzOXNtUUZiNW9NdXFEeUtBVUFvRDBiK2k2NHhzN25nUGpEZ0ZwVkYzajhzbVdWQ2U3UlR3cEVTUG1BMXVOL0xySHpxaDJ2TGFqaGo4ckhRYkhtSndSUWFPNXU3VlFYQW9CUUNnUEZ6NHFPTWJQano0aHVPdUpjZktzdHJKbEd0SUpGTzFranQwVzNWd2ZrUkVDUDVHdXNvNWJseUlZWHA5NG5JMXN4VEtpS0phL1dCaXF0azFSUUNnRkFXa1ZKS0lkell4bjJqd1hjeUtrenlXVWtkMGl4OS9CNldMRFI3QkhjKzJ0YjNvR3EvYVV0ektkMjRZOWN5dzJkTVV1b1YrT0hYdWtTWEVXSDJWaXJMR2VyNnYxTzNqZzYrbnA2dWhRdTliT3Q2OGJyY2x3ZG5Bb05GWTA1a2ZhUnVQVjM1bmRIaXNoalpXb0lGQUtBVUJrYmtCem96ZklYbVpqdVBjUkdiaUNNRzJ5Vm4xZEl1N055UFVqMzdIc3JLZlprVW5ZMkRncVpDcVpiZ1pzVTFSRlRURkdqMko1YmN6T0MrYlhDbHJ4bHdMbW9jampycFJ2cElFa0VtdG1LVlBLT045MVA4aU5nZ25sWnNxT1RGdVJyRTZ5Vk9nbnc3OER1aVUxak1nb0RWajQwdml6dzNLUGhlKzVlOEY1U080NDR5MEJnUG9QdjdKaGNhTXprZnd5bFQrQmZJSkRuc0FHc3FDaWM2SlRJMStsZkpXMTlhcEVMZ2dmNm44SGxkNXJvem1SUUNnRkFLQW8zaXBKUjBzdFlESzRxOHhabTlJWGx2SkI2blQxZEhXcFhldGpldCtOMWptUWRwQTROVTF6TWt1UHM0MUdsZXp1ZHVzaDRSY1BGRHl5dFFCUUNnRkFLQWxQTHptanpCNVVaci9hRGw1eFZmWVM5SUN5R0J3WTVsQjJGa2pZRkpGMzdNQ0t4elpNRTVic3hYTXNxZE1rUGVsdXhzbmhQcE51ZWVQdEZ0c3Z3MXdqbFpFR3ZyRDJzOE1qSDVzRWxDZjJVVlh4YkprdDROb3NJZHJ6a3NVbVJUbUQ5SUQ4UlBIVm5MamJMTTQ3aGExbUJWeGc3Wm9wbVgvdnBHZVJUL05DcHJMTDJiSWx1N1YvVXhUZHAxRXhXVHQ2R3VWemMzRjVjUzNkM1BKUFBNNWtrbGtZczdzVHNzeFBja24zTmI2VnNFVjdiZUxPT2dGQUtBVUFvQ2g4VklSYlE5Q2dSY1BGRHl5dFFCUUNnRkFTZmcvbGZ6SDVneWVud1B3TG5jNE9ycFo3R3drbGpRLzZuVWRLLzFJckhIT2x5dkhFa1pKY21aTjhFTFptREEvQUo4VCtiUlpadUJyWEZSdjNEWCtVdDFPdjVxanN3L3FCV3JGdEtuaC9sZjJOdUhabFRGL0czdVN1SDZNLzRoSlVEU1pmZ3VFLzVYeVU1SS84QVRBUldQdldSbyt2Y3lyWk0vVmRleDFiL0FPamIrSTJ6UXRidHdyZkVEK0czeWpnbi93QnlOUlVyYXNoNjhpSHNtb1duTXg5eFI4RzN4TDhKSTgyUjVUNVc2aVFiNjhZOFYvc2ZNTEF6dC9jVm5ncnFlUEtMK3Zzd1IwRlJCbkR5eCtqRU9UeGVUd3Q3SmpzeGpycXh1NFRxU0M1aGFLUkQvTldBSXJaVFVTdWpVY0xoZG1kYXBJRkFLQVVCUStLa0l0b2VqcVltL3dEdFRGV1dUOUwwdnJsdkhQMGRYVjA5YWh0YjBONjM1MVdPWEgya0NqMVNaN21RZG5HNEwzczdjanVqeFdReHNyVUVDZ01qOGtPUVBNUG43eEljRHdSamxGdmJkTFgrU3VkcmEyU0h3WFlBN1k2T2tVRmpvOXRBa1lLaXBsMDBPOUdiRlBUVEttTGRnNW5vOXliK0F2a2p5d2dndnVJc1d2R21jUUF2ZDVhSU5iSzMvVjJ1eWdIaitQcmI1RWVLb1orMFowN0NGN3E4dnlkQkkyYkprNHhMZWZuK0RZNjJ0YmF5dDQ3U3p0NG9JSWxDUnhSSUZSRkhnQURzQldnMjNpeXdTdGdqbHFBS0FVQW9DT2NhOHVPQXVZK09PSzQ3NFF4V2N0dEVLdDdiTEkwZS9kSEk2a1A4MUlOWkpjMk9VN3dPeGptU29KcXRHcm1rL1A3Nk51M2p0TG5pYmtIZlRlckdHa2ZoNi9tNnVzZkszbmJ2djVMSVR2OEF6anNEYjAyMWNkMmZ6L0pUMU95VmJla2N2d2FGWkhIWkRENUM1eFdXc3A3TzlzNVdndUxlZU1wSkZJcDB5TXA3Z2dnZ2cxZEpxSlhSU05PRjJlWjE2RUNnS0h4VWtvNldXdnhpc1ZlWlF3K3FMTzNrbjlQcTZldm9VdHJlanJldk9xeHpJK3pnY2VpYjVHU1hBNWthZ1R0ZDI1a2E1VDVNWkhndTFqWjVua3NaSkxWMmtPL0I2bENuWi9DRWRBUEd0YThBVnA3Tm1PWlRwUGhoMXpOemFNdnM2aDI0NDllNlpNUWFzQ3ZaZFVFSFp4bU91OHZrclRFMkVmcVhON1BIYndwdlhWSTdCVkg5eUtodFFxN0pTY1RzajIyNUw4cGVIT1NuTHZGY0JjT1c4WVd6aURYbHlGMDk1ZEVEMVozUGtsajQzNFVLbzdBVnlOUk9pcUpqamlPeHA1RU5QTFVFSk9hd21ZVUFvQlFDZ0ZBS0FVQm9WOUpmeVZ3OFdNeFhQSEMya2NGKzEwbUp6UHBycjZ3ckl4Z21iL1V2UVVKOGtNZzhMVjFzcW9kM0pmcWlrMnZUcXluTFBKbm41VjJVUW9DMG1wSlJEdWJHVCt6dUM3cU5YbVNTOWtqdFVhTTYxczlUQmpzZmhLSTQ5OTcxclJOViswcGpsMDd0eHc2NUcvczZXcGxRcjhNZXZkb2dISjNpQ0xGWitYRTNKVllzcXFvcm5RMU1teWcyU094RE1QQkpZcUtyTmx6MUxtN2p5aSsrQlo3VmtPWkxVeUgrUER5ZnR3NVd2NUdiNjZJNTR1cVR5U3psTC94VjRNLzh3WTcvQVBUSFdLZCsxRjZNeXlQM1lmVkh1YlhISFppZ0ZBS0FVQW9CUUNnRkFheS9TSi84cytTLzhWc1Avc3F3MlovMEwwWlhiVS81bjZvOG9hNlU1Z29lMVNDMm9QUmhEbkZ4RERsYzlGaWJib2FQRkt5TTQ3a3l2b3VOZ2thSFNvOEFodW9IMnJudHF6MU1tS1hEL0g3ZjQrN25SN0xrdVhLY2NXY1gxdy9zZ2NNMHR2S2s4RXJ4eXhzSFIwWWhsWUhZSUk4RUdxeE53dTZMSnBSS3p5TmxPRXMvSHhOdy9aNWRUR0pKVTZaMFVqOEVxOW1HZ1NWNzl3RDM2U3A5NjYybW5xb2xLTmUvcjE4SElWRXZzWjBVclQxeXpYREgxV0Y3ck5NK3dEN1ZzR0JuZndlWXZlSHMxajgvaldSYnZHWFVWNWJsMTZsRWtiaDFKSHVOZ2RxOHhRcUpPRjhSREU0V29sd05qdnZGUGlYL0FEbkJmcE1mNzFvZDJVK2o1bGgzclVhcmtQdkZQaVgvQURuQmZwTWY3MDdzcDlIekhldFJxdVErOFUrSmY4NXdYNlRIKzlPN0tmUjh4M3JVYXJrUHZGUGlYL09jRitreC92VHV5bjBmTWQ2MUdxNUQ3eFQ0bC96bkJmcE1mNzA3c3A5SHpIZXRScXVRKzhVK0pmOEFPY0Yra3gvdlR1eW4wZk1kNjFHcTVEN3hUNGwvem5CZnBNZjcwN3NwOUh6SGV0UnF1USs4VStKZjg1d1g2VEgrOU83S2ZSOHgzclVhcmtQdkZQaVgvT2NGK2t4L3ZUdXluMGZNZDYxR3E1RVA1cWZHQnpwNXljSVRjRDhiNUhGell1ZWFLNGRiZkhwRS9YR2RyK0lkL05aWk5ESmtSYjhHWmluVjA2b2czSThqQ2xiWnBscFB0VWtwSHhlTHVJWXVGOEJkWlp5aGxSZWkzUnY4Y3A3S05iR3g3blIzMGcxcjFNOVU4cHpIN2V2WHdiRlBLN2ViREwxK3Y2OThMMk5iWnBwYmlWNTU1WGtsa1l1N3V4TE14T3lTVDVKTmNrMjRuZDVuWEpLRldSYlVFa281ZjhZeThJNWNHVHBOaGVNa2QyQ0R0VkJPcEJvRTdYWk92Y0Vqem9qY29xcDBzekh3dlA4QVBzYUZmU0twbDd5dnZRM3Q1K1dPR05zK0d0cm13VU0wVnhFbHhieXBKRklvZEhSZ3lzcEd3UVI1QnJxVTdxNk9aYWF3WnlBMU9aNWFMcWdnVUFvQlFDZ0ZBS0FVQW9CUUZwTlRrU2tjYzAwVnZFOXhjU3BIRkdwZDNkZ3Fxb0d5U1Q0QXFHMGsyejNEQzRudXJNMTk1Z2NZeThYWmdtUHBGaFpzOGRvQU83S1NOeUhZQjIzU0RyMkdoNTJUeTFiVk9xbVhXU3kvSjB0QlNLbWw3ejhVU1YvTHl6YXd2bXMrUkY2MHpmRkFLQW5ITHZtSkx3eEt1S3lydkppcEc3SHV6V3pFOTJVZTZrK1YvcU8rdzFsUTF6cDMyY3p3L1grZVhUcmE2aFZRdCtYNHZ2cmgxYk9VTTBWeEVrOEVxU1JTS0hSMFlGV1VqWUlJOGdpdWpUVFYwem5HbW5abzVBZm5VbmxvclVFRmFBVUFvQlFDZ0ZBVTNxcEJRbjVVSlNPT2FhSzNpZTR1SlVqaWpVdTd1d0Nxb0d5U1Q0QUZRMmxpejBsZDJSZzNtSnpFbDRtbGJGWXAzanhVYmR6M0RYTEE5bVlleWoyWCtwNzZDODVYVnpxSHVRZUg3NjY4dWpvYUZVNjdTUHhmWFhYbkI2clN5RkFLQVVBb0NVOEg4dzgxd25Jc0pkNzdIaENnczVaU0ZUdVczR2UvUWVwaVRvYU96c2IwUnVVdGJNcG5iT0hUOGFGZlZiT2wxRjRvTFF4TjNidG5rc2NyNEt5ZkN5NFlHYmNCeFpnT0pvZzJJeU1jc2dRTzhEZmhsajdLVHRUM0lCWUFzTnJ2d1RYUlNhbVZVSzh0KzNIcjRPZm0wODZUKzVEYkYvZmxmUE5YeHRtazhENjlaekNWREdwSXNWNmhRV0d4ODZFV0d4ODZDdzZoUW14UXNhQ3hTb0pQa1ovaTNoL2htTXRsOGpIRklVTHBBdjRwWk96RWFVZHhzcVFHT2wzNUlyQlBxWlZPcnpIN2Nldmd6U3FlYlA4QTI0YjRwY01PZHNzM3h0a204RENQR1BNREw4WFMrbVMxbllCUUJhUnlrcXgyRHR6MjZ6c0RXeG9hR2h2WlBPMVZiTXFuWjRMVDg2blJVdEJMcGtuRmFLTFczcmxuYkIyZXZ3UmV0TTNoUUNnRkFLQVVBb0M2R2FXM2xTZUNWNDVZMkRvNk1ReXNEc0VFZUNEVXB1RjNSRFNpVm5rVHpoN25GbjhWRUxiTFFKbFlsWFNNNytuS093QTI0QjZoMlBrRmlUc21yS1R0U2JMVm8xdkw1NitmTXE1K3lwY3gzbHZkMTRyankrcksxaWY0em14d1hrZWxaTDZXeWtlVDAxUzZoSzc4YVlzdlVxanY1TERXanZRNzFaeTlwVTh4MnZiMTZaV3pOblZFdFh0ZjA2VCtDUzJHV3hXVkVoeGVTdGJ3UmE5VDBKbGs2TjcxdnBKMXZSL3NhM0lKa0V6d05QMGR6VGpseHk3S05OWDFPM1dROENnT3BmNWZFNHJvKzA4bmFXZnE3S2V2TXNmVnJ6cnFJMzVIOTZ4eHpJSmZqYVhxekpCTGptZUJOK2lJMWsrYS9CZU42bFMvbHZaRWxNYkpheEZ2RzlzR2JwUmw3ZVF4M3NhMk85YWN6YVZQTGRyMzlPbDhHMUwyZFVURmUxdlhwdGNpQWNRYzRzL2xZamJZbUJNVkV5NmRrZjFKVHNFSFRrQUtPNDhEcUJHdzFWay9hazJaaEIrbGZQTXRKR3lwY3Q3MHg3Mm5CY09mSHl4eTRrRG1tbXVKbnVMaVY1WlpXTHU3c1dabUoyU1NlNUpQdlZhMjRuZGxta29WWlpGdFFTS0FVQW9ELzlrPSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdlRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcclxuICBjb25maWchOiBUYWJsZUNvbmZpZztcclxuICBnbG9iYWxGaWx0ZXJGaWVsZHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHNlbGVjdGVkU2l6ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIHRhbWFuaG9UZWxhITogbnVtYmVyO1xyXG5cclxuICAvL21lbnVDb2x1bW5zOiBLdk1lbnVJdGVtW10gPSBbXTtcclxuICBjaGVja2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29sdW1uczogVGFibGVDb25maWdDb2x1bW5bXSA9IFtdO1xyXG4gIGRlbGV0ZWRDb2x1bnM6IFRhYmxlQ29uZmlnQ29sdW1uW10gPSBbXTtcclxuXHJcbiAgbWVudUZpbHRybzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNoZWNrYm94Q2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzaG93RmlsdHJvc0F2YW5jYWRvczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgdGFibGVEYXRhOiB7IGRhdGE6IGFueSwgYWN0aW9ucz86IE1lbnVJdGVtW10gfVtdID0gW107XHJcbiAgY3VyckRhdGFTb3VyY2U6IGFueVtdID0gW107XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxhbnk+O1xyXG4gIEBJbnB1dCgndGVtcGxhdGVzJykgX3RlbXBsYXRlcyE6IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFibGUhOiBUYWJsZTtcclxuICBkZWxldGVkQ29sdW1uc0luZGV4ITogYW55W107XHJcblxyXG4gIEBJbnB1dCgnY29uZmlnJykgc2V0IHNldENvbmZpZyh2YWx1ZTogVGFibGVDb25maWcpIHtcclxuICAgIHRoaXMuY29uZmlnID0ge1xyXG4gICAgICBlbmFibGVDYXRpb246IHZhbHVlLmVuYWJsZUNhdGlvbiB8fCB0cnVlLFxyXG4gICAgICBlbmFibGVTZWxlY3Q6IHZhbHVlLmVuYWJsZVNlbGVjdCB8fCBmYWxzZSxcclxuICAgICAgZW5hYmxlRmlsdGVyOiB2YWx1ZS5lbmFibGVGaWx0ZXIgfHwgdHJ1ZSxcclxuICAgICAgLi4udmFsdWUsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5lbmFibGVGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcy5wdXNoKGNvbC5maWVsZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZGVmYXVsdFNvcnRGaWVsZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZTogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHRvdGFsUmVjb3JkcyE6IG51bWJlcjtcclxuICBASW5wdXQoKSBwYWdpbmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHJvd3NQZXJQYWdlT3B0aW9ucyE6IG51bWJlcltdO1xyXG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCkgcGFnZUxpbmtzT3B0aW9uczogbnVtYmVyID0gMTtcclxuICBASW5wdXQoKSBzaG93Rmlyc3RMYXN0SWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRhYmxlU2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBhcHBseVN0eWxlOiBGdW5jdGlvbiA9IChyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pID0+ICcnO1xyXG4gIEBJbnB1dCgpIGZpbHRlckNvbHVtbnNCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmaWx0cm9zQXZhbmNhZG9zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBpc1RhYmxlU2Nyb2xsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRhYmxlQ2FwdGFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSByb3dUcmFja0J5OiBGdW5jdGlvbiA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpID0+IGl0ZW07XHJcblxyXG4gIEBJbnB1dCgpIHJlc3BvbnNpdmVMYXlvdXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtTG90ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRvdWJsZUNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJGaWVsZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbHRyb3NBdmFuY2Fkb3NFbWl0OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU3dpdGNoVGFibGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdtZW51RmlsdHJvRGl2JykgbWVudUZpbHRyb0RpdiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYm90YW9GaWx0cm8nKSBib3Rhb0ZpbHRybyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3BmQ25walBpcGU6IENwZkNucGpQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZWxlZm9uZVBpcGU6IFRlbGVmb25lUGlwZVxyXG4gICkge1xyXG4gICAgdGhpcy5pc1Jvd1NlbGVjdGFibGUgPSB0aGlzLmlzUm93U2VsZWN0YWJsZS5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ2RhdGFTb3VyY2UgMCcsIHRoaXMuZGF0YVNvdXJjZSlcclxuICAgIGNvbnNvbGUubG9nKCdjdXJyRGF0YVNvdXJjZSAwJywgdGhpcy5jdXJyRGF0YVNvdXJjZSlcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgIT09IHRoaXMuY3VyckRhdGFTb3VyY2UpIHtcclxuICAgICAgY29uc29sZS5sb2coJ2RhdGFTb3VyY2UgMScsIHRoaXMuZGF0YVNvdXJjZSlcclxuICAgICAgY29uc29sZS5sb2coJ2N1cnJEYXRhU291cmNlIDEnLCB0aGlzLmN1cnJEYXRhU291cmNlKVxyXG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGFTb3VyY2UgMicsIHRoaXMuZGF0YVNvdXJjZSlcclxuICAgICAgICBjb25zb2xlLmxvZygnY3VyckRhdGFTb3VyY2UgMicsIHRoaXMuY3VyckRhdGFTb3VyY2UpXHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmRhdGFTb3VyY2UubWFwKHggPT4gKHsgZGF0YTogeCwgYWN0aW9uczogdGhpcy5jb25maWcuYWN0aW9ucyA/IHRoaXMuY29uZmlnLmFjdGlvbnMubWFwKHkgPT4gbWFwVG9NZW51SXRlbSh5LCB4KSkgOiB1bmRlZmluZWQgfSkpO1xyXG4gICAgICAgIHRoaXMuY3VyckRhdGFTb3VyY2UgPSBbLi4udGhpcy5kYXRhU291cmNlXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFkanVzdFRhYmxlU2l6ZSgpO1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgLy8gdGhpcy5jcmlhck1lbnVDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tIaWRlQ29sdW1ucygpO1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdFNvcnRGaWVsZCAmJiB0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdzdHJpbmcnICYmIHR5cGVvZiBiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdLmxvY2FsZUNvbXBhcmUoYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdib29sZWFuJyAmJiB0eXBlb2YgYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgIHJldHVybiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09IGJbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA/IDAgOiAoYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID8gMSA6IC0xKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdudW1iZXInICYmIHR5cGVvZiBiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICByZXR1cm4gYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdIC0gYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMDsgLy8gT3Ugb3V0cmEgbMOzZ2ljYSBkZXBlbmRlbmRvIGRvIGNhc29cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLmFkanVzdFRhYmxlU2l6ZSgpO1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW0ocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW1Mb3RlKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW1Mb3RlLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRPckV4ZWN1dGU8VD4oYWN0aW9uOiBWYWx1ZU9yRm48VD4sIGRhdGE6IGFueSk6IFQge1xyXG4gICAgcmV0dXJuIGdldE9yRXhlY3V0ZShhY3Rpb24sIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgaXNCb29sZWFuRmllbGQocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHJvd0RhdGFbY29sLmZpZWxkXSA9PSAnYm9vbGVhbic7XHJcbiAgfVxyXG5cclxuICBpc0NoaXBGaWVsZChjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sLmZpZWxkVHlwZSA9PSAnY2hpcCc7XHJcbiAgfVxyXG5cclxuICBpc0ltYWdlRmllbGQoY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJldG9ybm8gPSBjb2wuZmllbGRUeXBlICYmIGNvbC5maWVsZFR5cGUgPT09ICdpbWFnZScgPyB0cnVlIDogZmFsc2U7XHJcbiAgICByZXR1cm4gcmV0b3JubztcclxuICB9XHJcblxyXG4gIGlzU3dpdGNoRmllbGQoY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJldG9ybm8gPSBjb2wuZmllbGRUeXBlICYmIGNvbC5maWVsZFR5cGUgPT09ICdzd2l0Y2gnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIHJldG9ybm87XHJcbiAgfVxyXG5cclxuICBpc1Jvd1NlbGVjdGFibGUoZXZlbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWRDaGVja2JveChldmVudC5kYXRhKTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWRDaGVja2JveChyb3dEYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb25cclxuICAgICAgPyB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb24ocm93RGF0YSlcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxvYWRJbWFnZShyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgLypcclxuICAgICAgTm9zc2EgY29sdW5hIGRlIGltYWdlbSB0cmFiYWxoYSBjb20gc3RyaW5ncyBkbyB0aXBvOiBiYXNlNjQgb3UgdXJsXHJcbiAgICAqL1xyXG4gICAgbGV0IHJldG9ybm8gPSBgZGF0YTppbWFnZS9qcGc7YmFzZTY0LCAke2ltZ0RlZmF1bHR9YDtcclxuICAgIGlmIChyb3dEYXRhICYmIGNvbCAmJiByb3dEYXRhW2NvbC5maWVsZF0gJiYgcm93RGF0YVtjb2wuZmllbGRdICE9PSAnJykge1xyXG4gICAgICBpZiAocm93RGF0YVtjb2wuZmllbGRdLmluY2x1ZGVzKCdodHRwJykpIHJldG9ybm8gPSByb3dEYXRhW2NvbC5maWVsZF07XHJcbiAgICAgIGVsc2UgcmV0b3JubyA9IGBkYXRhOmltYWdlL2pwZztiYXNlNjQsICR7cm93RGF0YVtjb2wuZmllbGRdfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJldG9ybm87XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25HbG9iYWxGaWx0ZXIodGFibGU6IFRhYmxlLCBldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuZmlsdGVyRmllbGQuZW1pdCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcclxuICAgIHRhYmxlLmZpbHRlckdsb2JhbCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCAnY29udGFpbnMnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdpbmF0ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgbGV0IHBhZ2luYUluaWNpYWwgPSAoZXZlbnQ/LmZpcnN0ID4gMCA/IGV2ZW50LmZpcnN0IC8gZXZlbnQucm93cyA6IGV2ZW50LmZpcnN0KSArIDE7XHJcbiAgICAgIGxldCB0ZXJtb1Blc3F1aXNhID0gJyc7XHJcbiAgICAgIGxldCBvcmRlbmFjYW8gPSAnJztcclxuXHJcbiAgICAgIGlmIChldmVudC5nbG9iYWxGaWx0ZXIpIHRlcm1vUGVzcXVpc2EgPSBldmVudC5nbG9iYWxGaWx0ZXI7XHJcblxyXG4gICAgICBpZiAoZXZlbnQuc29ydEZpZWxkKVxyXG4gICAgICAgIG9yZGVuYWNhbyA9IGAke2V2ZW50LnNvcnRGaWVsZH0gJHtldmVudC5zb3J0T3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ31gO1xyXG5cclxuICAgICAgY29uc3Qgb2JqZXRvOiBUYWJsZVBhZ2luYXRlID0ge1xyXG4gICAgICAgIHBhZ2luYUluaWNpYWw6IHBhZ2luYUluaWNpYWwsXHJcbiAgICAgICAgdGFtYW5ob1BhZ2luYTogZXZlbnQucm93cyxcclxuICAgICAgICB0ZXJtb1Blc3F1aXNhOiB0ZXJtb1Blc3F1aXNhLFxyXG4gICAgICAgIG9yZGVuYWNhbzogb3JkZW5hY2FvLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vblBhZ2luYXRlLmVtaXQob2JqZXRvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGlvbkNoYW5nZSh2YWx1ZSA9IFtdKSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuUm93Q2xhc3Mocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKSB7XHJcbiAgICBsZXQgdmFsdWUgPSByb3dEYXRhW2NvbC5maWVsZF07XHJcbiAgICBsZXQgcm93Q2xhc3M6IHN0cmluZztcclxuXHJcbiAgICB0aGlzLnRhYmxlU2l6ZSA+IDgwMCA/IChyb3dDbGFzcyA9ICd0ZXh0LWJhc2UnKSA6IChyb3dDbGFzcyA9ICd0ZXh0LXNtJyk7XHJcblxyXG4gICAgaWYgKGNvbC5leHBpcmVkRGF0ZSA9PSB0cnVlKSB7XHJcbiAgICAgIG5ldyBEYXRlKHZhbHVlKSA8IG5ldyBEYXRlKClcclxuICAgICAgICA/IChyb3dDbGFzcyA9IHJvd0NsYXNzICsgJyB0ZXh0LXJlZC00MDAgZm9udC1zZW1pYm9sZCcpXHJcbiAgICAgICAgOiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiByb3dDbGFzcztcclxuICB9XHJcblxyXG4gIGV4cGlyZWRGaWxlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVsnZGF0YXZlbmNpbWVudG8nXTtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkgPCBuZXcgRGF0ZSgpICYmIGNvbC5maWVsZCA9PSAnYXJlYSc7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pIHtcclxuICAgIGxldCB2YWx1ZSA9IHJvd0RhdGFbY29sLmZpZWxkXTtcclxuXHJcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoIWNvbC5waXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzd2l0Y2ggKGNvbC5waXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95eXl5Jyk7XHJcbiAgICAgICAgY2FzZSAnZGF0ZU1vbnRoWWVhcic6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdNTS95eXl5Jyk7XHJcbiAgICAgICAgY2FzZSAnZGVjaW1hbCc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUsICcxLjItMicsICdwdC1CUicpO1xyXG4gICAgICAgIGNhc2UgJ2NwZmNucGonOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3BmQ25walBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICBjYXNlICd0ZWxlZm9uZSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50ZWxlZm9uZVBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdtb25leSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRhclZhbG9yKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcclxuICAgICAgICAgIHJldHVybiBgJHt2YWx1ZX0gJWA7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0YXJWYWxvcih2YWxvcjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgncHQtQlInLCB7XHJcbiAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxyXG4gICAgICBjdXJyZW5jeTogJ0JSTCcsXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWxvcik7XHJcbiAgfVxyXG5cclxuICBhZGp1c3RUYWJsZVNpemUoKSB7XHJcbiAgICBpZiAodGhpcy50YWJsZVNpemUgPCA4MDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNpemUgPSAncC1kYXRhdGFibGUtc20nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNpemUgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvdWJsZUNsaWNrKGU6IGFueSwgcm93RGF0YTogYW55KSB7XHJcbiAgICBsZXQgZXZlbnREb3VibGVDbGljayA9IHsgZXZlbnQ6IGUsIHJvd0RhdGE6IHJvd0RhdGEgfTtcclxuXHJcbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdID0gW107XHJcbiAgICBlLnRhcmdldC5jbGFzc0xpc3QuZm9yRWFjaCgoeDogYW55KSA9PiBhcnJheS5wdXNoKHgpKTtcclxuXHJcbiAgICB0aGlzLmRvdWJsZUNsaWNrRXZlbnQuZW1pdChldmVudERvdWJsZUNsaWNrKTtcclxuICB9XHJcblxyXG4gIGNlbnRyYWxpemFyQ29sdW5hcyhjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmNlbnRyYWxpemUpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0LWFsaWduOiBjZW50ZXInO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGFsaWduQ29sdW5hcyhjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmFsaWduKSB7XHJcbiAgICAgIHJldHVybiBgdGV4dC1hbGlnbjogJHtjb2wuYWxpZ259YDtcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBhbGlnbkNvbHVuYXNIZWFkZXIoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5hbGlnbikge1xyXG4gICAgICBpZiAoY29sLmFsaWduID09ICdyaWdodCcpIHJldHVybiAnanVzdGlmeS1jb250ZW50OiBlbmQnO1xyXG4gICAgICBlbHNlIHJldHVybiAnJztcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICByZXRvcm5hclJvdyhyb3dEYXRhOiBhbnksIGNvbDogYW55LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF9yb3dhY3Rpb24gPSB0aGlzLmNvbmZpZy5yb3dzID8gdGhpcy5jb25maWcucm93c1tjb2wuZmllbGRdIDogbnVsbDtcclxuICAgIGNvbnN0IF9maWVsZDogc3RyaW5nID1cclxuICAgICAgX3Jvd2FjdGlvbiAmJiBfcm93YWN0aW9uW2ZpZWxkXVxyXG4gICAgICAgID8gX3Jvd2FjdGlvbltmaWVsZF0uY29uc3RydWN0b3IgPT09IEZ1bmN0aW9uXHJcbiAgICAgICAgICA/IF9yb3dhY3Rpb25bZmllbGRdLmFwcGx5KHRoaXMsIFtyb3dEYXRhXSlcclxuICAgICAgICAgIDogX3Jvd2FjdGlvbltmaWVsZF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICByZXR1cm4gX2ZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZXhpYmlyQ2FtcG8oZmllbGQ6IGFueSwgcm93RGF0YTogYW55KSB7XHJcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHJldHVybkNsYXNzQ2hpcChyb3dEYXRhOiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgY2hpcC1zdHlsZSB3LWF1dG8gYm9yZGVyLXJvdW5kLTJ4bCBwLTIgdGV4dC0ke3RoaXMucmV0b3JuYXJSb3coXHJcbiAgICAgIHJvd0RhdGEsXHJcbiAgICAgIGNvbCxcclxuICAgICAgJ3N0eWxlY2hpcCdcclxuICAgICl9IGJvcmRlci0ke3RoaXMucmV0b3JuYXJSb3cocm93RGF0YSwgY29sLCAnc3R5bGVjaGlwJyl9YDtcclxuICB9XHJcblxyXG4gIHJldHVybkNsYXNzSWNvbihyb3dEYXRhOiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJldG9ybmFyUm93KHJvd0RhdGEsIGNvbCwgJ2ljb25yb3cnKTtcclxuICB9XHJcblxyXG4gIHJldHVyblRvb2x0aXBJY29uKHJvd0RhdGE6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmV0b3JuYXJSb3cocm93RGF0YSwgY29sLCAndG9vbHRpcGljb25yb3cnKTtcclxuICB9XHJcblxyXG4gIHJldHVyblRvb2x0aXBSb3cocm93RGF0YTogYW55LCBjb2w6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXRvcm5hclJvdyhyb3dEYXRhLCBjb2wsICd0b29sdGlwcm93Jyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb2x1bW4oZmllbGQ6IHN0cmluZykge1xyXG4gICAgbGV0IGluZGV4OiBudW1iZXI7XHJcblxyXG4gICAgbGV0IGNvbHVtbjogVGFibGVDb25maWdDb2x1bW4gfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgIHggPT4geC5maWVsZCA9PSBmaWVsZFxyXG4gICAgKTtcclxuICAgIGlmIChjb2x1bW4pIHtcclxuICAgICAgaW5kZXggPSB0aGlzLmNvbmZpZy5jb2x1bW5zLmluZGV4T2YoY29sdW1uKTtcclxuICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmRlbGV0ZWRDb2x1bnMucHVzaChjb2x1bW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQ29sdW1uKGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyO1xyXG5cclxuICAgIGxldCBjb2x1bW46IFRhYmxlQ29uZmlnQ29sdW1uIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWcuY29sdW1ucy5maW5kKFxyXG4gICAgICB4ID0+IHguZmllbGQgPT0gZmllbGRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgbGV0IGRlbGV0ZWRDb2x1bW46IFRhYmxlQ29uZmlnQ29sdW1uIHwgdW5kZWZpbmVkID1cclxuICAgICAgICB0aGlzLmRlbGV0ZWRDb2x1bnMuZmluZCh4ID0+IHguZmllbGQgPT0gZmllbGQpO1xyXG5cclxuICAgICAgaWYgKGRlbGV0ZWRDb2x1bW4gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaW5kZXggPSB0aGlzLmRlbGV0ZWRDb2x1bnMuaW5kZXhPZihkZWxldGVkQ29sdW1uKTtcclxuICAgICAgICB0aGlzLmRlbGV0ZWRDb2x1bnMuc2xpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmNvbHVtbnMucHVzaChkZWxldGVkQ29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGluYW1pY0NvbHVtblNldChlOiBhbnksIGNvbDogYW55KSB7XHJcbiAgICBjb2wuY2hlY2tlZCA9IGUuY2hlY2tlZDtcclxuICAgIGlmIChlLmNoZWNrZWQpIHRoaXMuYWRkQ29sdW1uKGNvbC5maWVsZCk7XHJcbiAgICBlbHNlIHRoaXMuZGVsZXRlQ29sdW1uKGNvbC5maWVsZCk7XHJcblxyXG4gICAgaWYgKGNvbC5wb3NpdGlvbikgdGhpcy5jb25maWcuY29sdW1ucy5zb3J0KHRoaXMuc29ydEJ5UG9zaXRpb24oKSk7XHJcbiAgfVxyXG5cclxuICAvLyBhYnJpck1lbnVGaWx0cm8oZTogYW55KSB7XHJcbiAgLy8gICB0aGlzLm1lbnVGaWx0cm8gPSAhdGhpcy5tZW51RmlsdHJvO1xyXG4gIC8vICAgdGhpcy5jaGVja2JveENsaWNrZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gICBpZiAodGhpcy50YW1hbmhvVGVsYSA8IDcwMClcclxuICAvLyAgICAgdGhpcy5zdHlsZVNldHRlcignbGVmdCcsICh0aGlzLmJvdGFvRmlsdHJvLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIDI4OCkgKyAncHgnKVxyXG4gIC8vICAgZWxzZVxyXG4gIC8vICAgICB0aGlzLnN0eWxlU2V0dGVyKCdsZWZ0JywgKHRoaXMuYm90YW9GaWx0cm8ubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0ICsgNDApICsgJ3B4JylcclxuXHJcbiAgLy8gICB0aGlzLnN0eWxlU2V0dGVyKCd0b3AnLCB0aGlzLmJvdGFvRmlsdHJvLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wICsgJ3B4JylcclxuICAvLyAgIHRoaXMuc3R5bGVTZXR0ZXIoJ3Zpc2liaWxpdHknLCB0aGlzLm1lbnVGaWx0cm8gPyAndmlzaWJsZScgOiAnaGlkZGVuJylcclxuICAvLyB9XHJcblxyXG4gIC8vIGZlY2hhck1lbnVGaWx0cm8oKSB7XHJcbiAgLy8gICB0aGlzLm1lbnVGaWx0cm8gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuY2hlY2tib3hDbGlja2VkID0gZmFsc2U7XHJcblxyXG4gIC8vICAgdGhpcy5zdHlsZVNldHRlcigndmlzaWJpbGl0eScsICdoaWRkZW4nKVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxyXG4gIC8vIG9uRXNjYXBlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgLy8gICBpZiAodGhpcy5maWx0ZXJDb2x1bW5zQnRuID09IHRydWUgJiYgdGhpcy5tZW51RmlsdHJvID09IHRydWUpIHtcclxuICAvLyAgICAgdGhpcy5mZWNoYXJNZW51RmlsdHJvKCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgLy8gb25DbGlja0V2ZW50KGV2ZW50OiBhbnkpIHtcclxuICAvLyAgIGlmICh0aGlzLmZpbHRlckNvbHVtbnNCdG4gPT0gdHJ1ZSAmJiB0aGlzLm1lbnVGaWx0cm8gPT0gdHJ1ZSkge1xyXG4gIC8vICAgICBjb25zdCBjbGlja2VkRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAvLyAgICAgY29uc3QgbWVudUZpbHRyb0RpdiA9XHJcbiAgLy8gICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI21lbnVGaWx0cm9EaXYnKTtcclxuICAvLyAgICAgY29uc3QgYm90YW9GaWx0cm8gPVxyXG4gIC8vICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNib3Rhb0ZpbHRybycpO1xyXG4gIC8vICAgICBjb25zdCBpc0NoZWNrYm94Q2xpY2tlZCA9XHJcbiAgLy8gICAgICAgY2xpY2tlZEVsZW1lbnQuY2xhc3NMaXN0LnRvU3RyaW5nKCkuaW5jbHVkZXMoJ3AtY2hlY2tib3gnKSB8fFxyXG4gIC8vICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QudG9TdHJpbmcoKSA9PSAnJztcclxuICAvLyAgICAgY29uc3QgaXNJbnNpZGVNZW51ID1cclxuICAvLyAgICAgICBtZW51RmlsdHJvRGl2Py5jb250YWlucyhjbGlja2VkRWxlbWVudCkgfHxcclxuICAvLyAgICAgICBib3Rhb0ZpbHRybz8uY29udGFpbnMoY2xpY2tlZEVsZW1lbnQpIHx8XHJcbiAgLy8gICAgICAgaXNDaGVja2JveENsaWNrZWQ7XHJcblxyXG4gIC8vICAgICBpZiAoIWlzSW5zaWRlTWVudSkgdGhpcy5mZWNoYXJNZW51RmlsdHJvKCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBjaGVja01lbnVGaWx0cm8oY29sOiBhbnkpIHtcclxuICAgIGxldCBkZWxldGVkQ29sdW1uOiBUYWJsZUNvbmZpZ0NvbHVtbiB8IHVuZGVmaW5lZCA9IHRoaXMuZGVsZXRlZENvbHVucy5maW5kKFxyXG4gICAgICAoeDogVGFibGVDb25maWdDb2x1bW4pID0+IHguZmllbGQgPT0gY29sLmZpZWxkXHJcbiAgICApO1xyXG4gICAgaWYgKGRlbGV0ZWRDb2x1bW4pIGNvbC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICBlbHNlIGNvbC5jaGVja2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNvcnRCeVBvc2l0aW9uKCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtMTogYW55LCBlbGVtMjogYW55KSB7XHJcbiAgICAgIGlmIChlbGVtMS5wb3NpdGlvbiA8IGVsZW0yLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0xLnBvc2l0aW9uID4gZWxlbTIucG9zaXRpb24pIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGRpbmFtaWNEaXNhYmxlQ29sdW1uKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIGlmIChjb2wuZml4ZWRDb2x1bW4pIHJldHVybiBjb2wuZml4ZWRDb2x1bW47XHJcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNoZWNrSGlkZUNvbHVtbnMoKSB7XHJcbiAgICBsZXQgaGlkZUNvbHVtbnNDb25maWcgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAoY29sKSA9PiBjb2wuaGlkZUNvbHVtbiA9PSB0cnVlXHJcbiAgICApO1xyXG4gICAgaGlkZUNvbHVtbnNDb25maWcuZm9yRWFjaCgoY29sKSA9PiB0aGlzLmRlbGV0ZUNvbHVtbihjb2wuZmllbGQpKTtcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVRlbXBsYXRlKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfVxyXG5cclxuICAvLyBzdHlsZVNldHRlcihzdHlsZTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcclxuICAvLyAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxyXG4gIC8vICAgICB0aGlzLm1lbnVGaWx0cm9EaXYubmF0aXZlRWxlbWVudCxcclxuICAvLyAgICAgc3R5bGUsXHJcbiAgLy8gICAgIGRhdGFcclxuICAvLyAgICk7XHJcbiAgLy8gfVxyXG5cclxuICBmaWx0cm9zQXZhbmNhZG9zRXZlbnQoZTogYW55KSB7XHJcbiAgICB0aGlzLnNob3dGaWx0cm9zQXZhbmNhZG9zID0gIXRoaXMuc2hvd0ZpbHRyb3NBdmFuY2Fkb3M7XHJcbiAgICB0aGlzLmZpbHRyb3NBdmFuY2Fkb3NFbWl0LmVtaXQodGhpcy5zaG93RmlsdHJvc0F2YW5jYWRvcyk7XHJcbiAgfVxyXG5cclxuICBvblN3aXRjaENoYW5nZShlc3RhZG86IGFueSwgcm93RGF0YTogYm9vbGVhbiwgY29sOiBhbnkpIHtcclxuICAgIHRoaXMub25Td2l0Y2hUYWJsZUNoYW5nZS5lbWl0KHtcclxuICAgICAgZXN0YWRvOiBlc3RhZG8sXHJcbiAgICAgIHJvd0RhdGE6IHJvd0RhdGEsXHJcbiAgICAgIGNvbDogY29sXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2PlxyXG4gIEBpZiAoZmlsdHJvc0F2YW5jYWRvcykge1xyXG4gIDxwLXBhbmVsXHJcbiAgICBoZWFkZXI9XCJGaWx0cm9zIGF2YW7Dp2Fkb3NcIlxyXG4gICAgW3RvZ2dsZWFibGVdPVwidHJ1ZVwiXHJcbiAgICBbY29sbGFwc2VkXT1cInRydWVcIlxyXG4gICAgKGNvbGxhcHNlZENoYW5nZSk9XCJjb2xsYXBzZWQgPSAhY29sbGFwc2VkXCJcclxuICAgIFtzdHlsZV09XCJ7ICdtYXJnaW4tYm90dG9tJzogJzJweCcgfVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlcmljb25zXCI+XHJcbiAgICAgIEBpZiAoIWNvbGxhcHNlZCkge1xyXG4gICAgICA8aSBjbGFzcz1cInBpIHBpLWZpbHRlclwiPjwvaT5cclxuICAgICAgfVxyXG4gICAgICA8IS0tIMONY29uZSBxdWFuZG8gbyBwYWluZWwgZXN0w6EgYWJlcnRvIC0tPlxyXG4gICAgICBAaWYgKGNvbGxhcHNlZCkge1xyXG4gICAgICA8aSBjbGFzcz1cInBpIHBpLW1pbnVzXCI+PC9pPlxyXG4gICAgICB9XHJcbiAgICAgIDwhLS0gw41jb25lIHF1YW5kbyBvIHBhaW5lbCBlc3TDoSBmZWNoYWRvIC0tPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L3AtcGFuZWw+XHJcbiAgfVxyXG5cclxuICBAaWYgKGNvbmZpZykge1xyXG4gIDxwLXRhYmxlXHJcbiAgICAjZHRcclxuICAgIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiXHJcbiAgICBbdmFsdWVdPVwidGFibGVEYXRhXCJcclxuICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgIFtyb3dTZWxlY3RhYmxlXT1cImlzUm93U2VsZWN0YWJsZVwiXHJcbiAgICBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiXHJcbiAgICBbcm93c109XCJyb3dzXCJcclxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcclxuICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VPcHRpb25zXCJcclxuICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcbiAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSAtIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfVwiXHJcbiAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXHJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICBbbGF6eV09XCJjb25maWcubGF6eVwiXHJcbiAgICAob25MYXp5TG9hZCk9XCJwYWdpbmF0ZSgkZXZlbnQpXCJcclxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgcm93R3JvdXBNb2RlPVwicm93c3BhblwiXHJcbiAgICBbZ3JvdXBSb3dzQnldPVwiY29uZmlnLmZpZWxkR3JvdXBcIlxyXG4gICAgW3Nob3dGaXJzdExhc3RJY29uXT1cInNob3dGaXJzdExhc3RJY29uXCJcclxuICAgIFtwYWdlTGlua3NdPVwicGFnZUxpbmtzT3B0aW9uc1wiXHJcbiAgICBbcmVzcG9uc2l2ZV09XCJ0cnVlXCJcclxuICAgIFtyZXNwb25zaXZlTGF5b3V0XT1cInJlc3BvbnNpdmVMYXlvdXQgPyAnc3RhY2snIDogJydcIlxyXG4gICAgW3Njcm9sbGFibGVdPVwiaXNUYWJsZVNjcm9sbGFibGVcIlxyXG4gICAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIlxyXG4gICAgW3Jvd1RyYWNrQnldPVwicm93VHJhY2tCeSBcIlxyXG4gID5cclxuICAgIEBpZiAoY29uZmlnLmVuYWJsZUNhdGlvbikge1xyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBncmlkIGZvcm1ncmlkIHAtZmx1aWQgY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBmbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICBAaWYgKGNvbmZpZy50aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIj5cclxuICAgICAgICAgICAge3sgY29uZmlnLnRpdGxlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoY29uZmlnLnN1YnRpdGxlKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBtYi00IGZvbnQtbWVkaXVtXCI+XHJcbiAgICAgICAgICAgIHt7IGNvbmZpZy5zdWJ0aXRsZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBtZDpjb2wtNiBsZzpjb2wtNCB7e1xyXG4gICAgICAgICAgICB0YW1hbmhvVGVsYSA8IDc2OCA/ICdjb2wtMTAnIDogJ2NvbC0xMidcclxuICAgICAgICAgIH19IG10LTEgbWItMiBcIj5cclxuICAgICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZUZpbHRlcikge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICBwQXV0b0ZvY3VzXHJcbiAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKGR0LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTJyZW1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgI21lbnVGaWx0cm9EaXZcclxuICAgICAgICAgIGlkID0gXCJtZW51RmlsdHJvRGl2XCJcclxuICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIidoaWRkZW4nXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgei00IGJnLWdyYXktMjAwXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgPiAtLT5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICNtZW51RmlsdHJvRGl2XHJcbiAgICAgICAgICAgIGlkPVwibWVudUZpbHRyb0RpdlwiXHJcbiAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIidoaWRkZW4nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB6LTQgYmctZ3JheS0yMDAgbWVudS1jb2x1bW5zLWZpbHRyb1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwLWNhcmQ+XHJcbiAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIHRleHQtbWVkaXVtIHctMTVyZW1cIj5cclxuICAgICAgICAgICAgICAgIHt7IGNoZWNrTWVudUZpbHRybyhjb2wpIH19XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFkaW5hbWljRGlzYWJsZUNvbHVtbihjb2wpKSB7XHJcbiAgICAgICAgICAgICAgICA8cC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAjZmlsdGVyQ29sdW1uc1xyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImRpbmFtaWNDb2x1bW5TZXQoJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9wLWNhcmQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgY29sLTEganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zTG90ZTsgdHJhY2sgaTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJidG5zLW9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwieyAnbWFyZ2luLXJpZ2h0JzogJzdweCcgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEBpZiAoKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgICAgIGV4aWJpckNhbXBvKGFjdGlvbiwgdGhpcy5hY3Rpb24pKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBpZD1cImFjdGlvbkxvdGVCdG5zXCJcclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25Mb3RlQnRucyBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tdGV4dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgYWN0aW9uPy5jb21tYW5kKCk7IGFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjMURBNzUwXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi50b29sdGlwLCBzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLnRvb2x0aXAsIHNlbGVjdGVkSXRlbXMpPy5sZW5ndGggPz8gMCA+IDcgJiYgY29uZmlnLmFjdGlvbnNMb3RlICYmIGkgPT0gY29uZmlnLmFjdGlvbnNMb3RlLmxlbmd0aCAtIDEgID8gJ2xlZnQnIDogJ2JvdHRvbSdcIiBcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi5kaXNhYmxlZCwgc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1kLTIyXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgIHt7IGdldE9yRXhlY3V0ZShhY3Rpb24uaWNvbiwgc2VsZWN0ZWRJdGVtcykgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgfVxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICBwVGVtcGxhdGU9XCJoZWFkZXJcIlxyXG4gICAgICBsZXQtY29sdW1uc1xyXG4gICAgPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgQGlmIChjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDRyZW07IGJvcmRlci1sZWZ0OiBzb2xpZCA0cHggdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8dGhcclxuICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5dPSdcImRhdGEuXCIgKyBjb2wuZmllbGQnXHJcbiAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uRGlzYWJsZWRdPVwiY29sLnNvcnRhYmxlID09PSBmYWxzZVwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1zbVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgJiYgYWxpZ25Db2x1bmFzSGVhZGVyKGNvbCkgPT0gJydcclxuICAgICAgICAgICAgICAgID8gJ2ZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICAgIDogJ2ZsZXggZmxleC1yb3cnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJhbGlnbkNvbHVuYXNIZWFkZXIoY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIEBpZiAoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgIDxwLXNvcnRJY29uXHJcbiAgICAgICAgICAgICAgW2ZpZWxkXT0nXCJkYXRhLlwiICsgY29sLmZpZWxkJ1xyXG4gICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4XCJcclxuICAgICAgICAgICAgPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYgKGNvbC5oZWFkZXJUb29sdGlwKSB7XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICA+aW5mbzwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjb25maWcuYWN0aW9ucyAmJiBjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgcFRlbXBsYXRlPVwiYm9keVwiXHJcbiAgICAgIGxldC1yb3dEYXRhXHJcbiAgICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICAgIGxldC1yb3dncm91cD1cInJvd2dyb3VwXCJcclxuICAgICAgbGV0LXJvd3NwYW49XCJyb3dzcGFuXCJcclxuICAgID5cclxuICAgICAgPHRyIChkYmxjbGljayk9XCJkb3VibGVDbGljaygkZXZlbnQsIHJvd0RhdGEuZGF0YSlcIiBbbmdDbGFzc109XCJ7ICdjYXBpdGFsaXplJzogdGFibGVDYXB0YWxpemVkIH1cIj5cclxuICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVTZWxlY3QpIHtcclxuICAgICAgICA8dGQgW3N0eWxlXT1cImFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCB7IGZpZWxkOiAnY2hlY2stYm94JywgaGVhZGVyOiAnJyB9KVwiPlxyXG4gICAgICAgICAgPCEtLTxwLXRhYmxlQ2hlY2tib3ggKm5nSWY9XCJpc1Zpc2libGVDaGVja2JveChyb3dEYXRhLmRhdGEpXCItLT5cclxuICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3hcclxuICAgICAgICAgICAgW3ZhbHVlXT1cInJvd0RhdGEuZGF0YVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkQ2hlY2tib3gocm93RGF0YS5kYXRhKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICA+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgQGlmIChyb3dncm91cCAmJiAhY29sLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8dGQgXHJcbiAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwicm93Z3JvdXAgJiYgY29sLmdyb3VwZWQgPyByb3dzcGFuIDogbnVsbFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93VGFibGVcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLmRhdGEsIGNvbCkgK1xyXG4gICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICtcclxuICAgICAgICAgICAgICBhbGlnbkNvbHVuYXMoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcFJvdyhyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmhlYWRlciB9fTo8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWlzQm9vbGVhbkZpZWxkKHJvd0RhdGEuZGF0YSwgY29sKTsgZWxzZSBib29sZWFuRmllbGRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyZXR1cm5Sb3dDbGFzcyhyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQGlmICghaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCAmJiAhaXNJbWFnZUZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIEBpZiAoY29sLmljb24pIHtcclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjb2wuaWNvbiArICcgbXItMidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBAaWYgKGlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGQpIHtcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInJldHVybkNsYXNzQ2hpcChyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcEljb24ocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgID57eyB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYgKGlzSW1hZ2VGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgW3NyY109XCJsb2FkSW1hZ2Uocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAoY29sLmljb25GaWVsZCkge1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1pY29ucyc6IGNvbC5pbmRJY29uTWF0ZXJpYWwsXHJcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtci0yJzogIWNvbC5pbmRJY29uTWF0ZXJpYWxcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcEljb24ocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHJldHVybkNsYXNzSWNvbihyb3dEYXRhLmRhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Jvb2xlYW5GaWVsZD5cclxuICAgICAgICAgICAgICBAaWYgKCFjb2wuaWNvbkZpZWxkICYmICFpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3dEYXRhLmRhdGFbY29sLmZpZWxkXSA/ICd0ZXh0LWdyZWVuLTUwMCcgOiAndGV4dC1yZWQtNTAwJ1wiXHJcbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgcm93RGF0YS5kYXRhW2NvbC5maWVsZF0gPyBcImNoZWNrXCIgOiBcImNsb3NlXCIgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGlmIChpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YS5kYXRhLCBjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8a3Ytc3dpdGNoXHJcbiAgICAgICAgICAgICAgICAgIChvblN3aXRjaENoYW5nZSk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQsIHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2w/Lm9ubHlSZWFkRmllbGQgPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzd2l0Y2hWYWx1ZV09XCJ0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9rdi1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoIXJvd2dyb3VwICYmICFjb2wuZ3JvdXBlZCAmJiAhY29sLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgW3N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgIGFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3dUYWJsZVwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwUm93KHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wuaGVhZGVyIH19Ojwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNCb29sZWFuRmllbGQocm93RGF0YS5kYXRhLCBjb2wpOyBlbHNlIGJvb2xlYW5GaWVsZFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cInJldHVyblJvd0NsYXNzKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBAaWYgKCFpc0NoaXBGaWVsZChjb2wpICYmICFjb2wuaWNvbkZpZWxkICYmICFpc0ltYWdlRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgQGlmIChjb2wuaWNvbikge1xyXG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImNvbC5pY29uICsgJyBtci0yJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEuZGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCkge1xyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuQ2xhc3NDaGlwKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYgKGlzSW1hZ2VGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlXCIgW3NyY109XCJsb2FkSW1hZ2Uocm93RGF0YS5kYXRhLCBjb2wpXCIgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmIChjb2wuaWNvbkZpZWxkKSB7XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLWljb25zJzogY29sLmluZEljb25NYXRlcmlhbCxcclxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1yLTInOiAhY29sLmluZEljb25NYXRlcmlhbFxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgcmV0dXJuQ2xhc3NJY29uKHJvd0RhdGEuZGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9vbGVhbkZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICBAaWYgKCFjb2wuaWNvbkZpZWxkICYmICFpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3dEYXRhLmRhdGFbY29sLmZpZWxkXSA/ICd0ZXh0LWdyZWVuLTUwMCcgOiAndGV4dC1yZWQtNTAwJ1wiXHJcbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgcm93RGF0YS5kYXRhW2NvbC5maWVsZF0gPyBcImNoZWNrXCIgOiBcImNsb3NlXCIgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGlmIChpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YS5kYXRhLCBjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8a3Ytc3dpdGNoXHJcbiAgICAgICAgICAgICAgICAgIChvblN3aXRjaENoYW5nZSk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQsIHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2w/Lm9ubHlSZWFkRmllbGQgPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzd2l0Y2hWYWx1ZV09XCJ0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9rdi1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoY29sLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgW3N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgIGFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3dUYWJsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wuaGVhZGVyIH19Ojwvc3Bhbj5cclxuICAgICAgICAgICAgQGlmIChnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3dEYXRhLmRhdGEgfVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChjb25maWcuYWN0aW9ucyAmJiBjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPHRkIFtzdHlsZV09XCJhcHBseVN0eWxlKHJvd0RhdGEuZGF0YSwgeyBmaWVsZDogJ2J0bnMtb3B0aW9ucycsIGhlYWRlcjogJycgfSlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1lbmQgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGlkPVwibW9yZVZlcnRCdG5cIlxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbkJ0bnMgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEuZGF0YSlcIlxyXG4gICAgICAgICAgICA+IC0tPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjdXJzb3ItcG9pbnRlciBpY29uLW1vcmUtaG9yaXpcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KTsgYWN0aXZlSXRlbShyb3dEYXRhLmRhdGEpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIG1vcmVfaG9yaXpcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDxwLXRpZXJlZE1lbnVcclxuICAgICAgICAgICAgICAjbWVudVxyXG4gICAgICAgICAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbW9kZWxdPVwicm93RGF0YS5hY3Rpb25zXCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICA+PC9wLXRpZXJlZE1lbnU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiXHJcbiAgICAgIGxldC1jb2x1bW5zXHJcbiAgICA+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAyXCJcclxuICAgICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1tZWRpdW0gbS0wXCI+TmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG88L3A+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRhYmxlPlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48bGlua1xyXG4gIHJlbD1cInN0eWxlc2hlZXRcIlxyXG4gIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zXCJcclxuLz5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9TWF0ZXJpYWwrU3ltYm9scytPdXRsaW5lZDpvcHN6LHdnaHQsRklMTCxHUkFEQDQ4LDQwMCwwLDBcIlxyXG4vPlxyXG4iXX0=
@@ -2468,24 +2468,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
2468
2468
  }] });
2469
2469
 
2470
2470
  class KvCarouselComponent {
2471
- constructor() {
2471
+ constructor(cd) {
2472
+ this.cd = cd;
2472
2473
  this.carouselData = [];
2473
2474
  }
2475
+ ngAfterViewInit() {
2476
+ this.getCarouselHeight();
2477
+ this.cd.detectChanges();
2478
+ }
2474
2479
  navigateToLink(link) {
2475
2480
  window.open(link, '_blank');
2476
2481
  }
2477
2482
  getCarouselHeight() {
2478
- let divCarouselHeight = document.getElementById('carousel')?.offsetHeight;
2479
- if (divCarouselHeight)
2480
- this.heightCarousel = divCarouselHeight;
2483
+ const divCarousel = document.getElementById('carousel');
2484
+ if (divCarousel) {
2485
+ this.heightCarousel = divCarousel.offsetHeight;
2486
+ }
2481
2487
  }
2482
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2483
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvCarouselComponent, selector: "kv-carousel", inputs: { carouselData: "carouselData" }, ngImport: i0, template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n\r\n{{getCarouselHeight()}}", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important}\n"], dependencies: [{ kind: "directive", type: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2$2.Carousel, selector: "p-carousel", inputs: ["page", "numVisible", "numScroll", "responsiveOptions", "orientation", "verticalViewPortHeight", "contentClass", "indicatorsContentClass", "indicatorsContentStyle", "indicatorStyleClass", "indicatorStyle", "value", "circular", "showIndicators", "showNavigators", "autoplayInterval", "style", "styleClass"], outputs: ["onPage"] }] }); }
2488
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvCarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2489
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvCarouselComponent, selector: "kv-carousel", inputs: { carouselData: "carouselData" }, ngImport: i0, template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important;max-height:500px}\n"], dependencies: [{ kind: "directive", type: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2$2.Carousel, selector: "p-carousel", inputs: ["page", "numVisible", "numScroll", "responsiveOptions", "orientation", "verticalViewPortHeight", "contentClass", "indicatorsContentClass", "indicatorsContentStyle", "indicatorStyleClass", "indicatorStyle", "value", "circular", "showIndicators", "showNavigators", "autoplayInterval", "style", "styleClass"], outputs: ["onPage"] }] }); }
2484
2490
  }
2485
2491
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvCarouselComponent, decorators: [{
2486
2492
  type: Component,
2487
- args: [{ selector: 'kv-carousel', template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n\r\n{{getCarouselHeight()}}", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important}\n"] }]
2488
- }], ctorParameters: () => [], propDecorators: { carouselData: [{
2493
+ args: [{ selector: 'kv-carousel', template: "<p-carousel id=\"carousel\" [value]=\"carouselData\" [indicatorStyleClass]=\"'carousel-indicator'\" [autoplayInterval]=\"5000\" \r\n [showIndicators]=\"true\" [showNavigators]=\"false\" [numVisible]=\"1\" [numScroll]=\"1\" [circular]=\"true\" styleClass=\"h-full\">\r\n>\r\n <ng-template pTemplate=\"item\" let-banner class=\"justify-content-center align-items-center \">\r\n <img [src]=\"banner.img\" class=\"w-full border-round-banner\" [style.height.px]=\"heightCarousel\"\r\n (click)=\"navigateToLink(banner.link)\">\r\n </ng-template>\r\n</p-carousel>\r\n", styles: ["::ng-deep .p-carousel-indicators{position:absolute;left:50%;transform:translate(-50%);bottom:-1rem}::ng-deep .carousel-indicator{width:15px!important;height:4px!important;margin:-3px!important;padding:0!important;background-color:#eeeeeed0}::ng-deep .carousel-indicator:hover{background-color:#efefef}button.p-carousel-indicator.p-link{background-color:#f0f8ff!important}::ng-deep .p-carousel .p-carousel-content{overflow:hidden!important;position:relative}::ng-deep .border-round-banner{border-radius:20px!important;max-height:500px}\n"] }]
2494
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { carouselData: [{
2489
2495
  type: Input
2490
2496
  }] } });
2491
2497
 
@@ -4861,12 +4867,17 @@ class KvTableComponent {
4861
4867
  this.isRowSelectable = this.isRowSelectable.bind(this);
4862
4868
  }
4863
4869
  ngDoCheck() {
4870
+ console.log('dataSource 0', this.dataSource);
4871
+ console.log('currDataSource 0', this.currDataSource);
4864
4872
  if (this.dataSource !== this.currDataSource) {
4865
- this.tableData = this.dataSource?.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
4866
- if (this.dataSource)
4873
+ console.log('dataSource 1', this.dataSource);
4874
+ console.log('currDataSource 1', this.currDataSource);
4875
+ if (this.dataSource) {
4876
+ console.log('dataSource 2', this.dataSource);
4877
+ console.log('currDataSource 2', this.currDataSource);
4878
+ this.tableData = this.dataSource.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
4867
4879
  this.currDataSource = [...this.dataSource];
4868
- else
4869
- this.currDataSource = this.dataSource;
4880
+ }
4870
4881
  }
4871
4882
  }
4872
4883
  ngOnInit() {