@cqa-lib/cqa-ui 1.0.123 → 1.1.1

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.
@@ -1,6 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, ViewChildren, } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
3
+ import * as i1 from "@angular/material/icon";
4
+ import * as i2 from "@angular/common";
4
5
  export class SegmentControlComponent {
5
6
  constructor() {
6
7
  this.segments = [
@@ -208,10 +209,10 @@ export class SegmentControlComponent {
208
209
  }
209
210
  }
210
211
  SegmentControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SegmentControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
211
- SegmentControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SegmentControlComponent, selector: "cqa-segment-control", inputs: { segments: "segments", value: "value", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "segmentContainer", first: true, predicate: ["segmentContainer"], descendants: true }, { propertyName: "segmentButtons", predicate: ["segmentButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-10 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-muted': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-disabled': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\" [disabled]=\"disabled || segment.disabled\" [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\" (keydown)=\"onKeyDown($event, index)\">\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n {{ segment.label }}\n </span>\n </button>\n </div>\n</div>", directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
212
+ SegmentControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SegmentControlComponent, selector: "cqa-segment-control", inputs: { segments: "segments", value: "value", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "segmentContainer", first: true, predicate: ["segmentContainer"], descendants: true }, { propertyName: "segmentButtons", predicate: ["segmentButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-10 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-muted': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-disabled': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\" [disabled]=\"disabled || segment.disabled\" [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\" (keydown)=\"onKeyDown($event, index)\">\n <span\n class=\"cqa-flex cqa-gap-1 cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n \n <mat-icon *ngIf=\"segment?.icon\" class=\"!cqa-w-[12px] !cqa-h-[12px] !cqa-text-[12px]\" >\n {{ segment?.icon }}\n </mat-icon>\n\n {{ segment.label }}\n </span>\n </button>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
212
213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SegmentControlComponent, decorators: [{
213
214
  type: Component,
214
- args: [{ selector: 'cqa-segment-control', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-10 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-muted': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-disabled': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\" [disabled]=\"disabled || segment.disabled\" [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\" (keydown)=\"onKeyDown($event, index)\">\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n {{ segment.label }}\n </span>\n </button>\n </div>\n</div>", styles: [] }]
215
+ args: [{ selector: 'cqa-segment-control', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-10 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-muted': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-disabled': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\" [disabled]=\"disabled || segment.disabled\" [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\" (keydown)=\"onKeyDown($event, index)\">\n <span\n class=\"cqa-flex cqa-gap-1 cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n \n <mat-icon *ngIf=\"segment?.icon\" class=\"!cqa-w-[12px] !cqa-h-[12px] !cqa-text-[12px]\" >\n {{ segment?.icon }}\n </mat-icon>\n\n {{ segment.label }}\n </span>\n </button>\n</div>", styles: [] }]
215
216
  }], propDecorators: { segments: [{
216
217
  type: Input
217
218
  }], value: [{
@@ -227,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
227
228
  type: ViewChild,
228
229
  args: ['segmentContainer']
229
230
  }] } });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDOzs7QUFldkIsTUFBTSxPQUFPLHVCQUF1QjtJQU5wQztRQVFXLGFBQVEsR0FBb0I7WUFDbkMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDNUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7U0FDN0MsQ0FBQztRQU9PLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFaEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBS25ELG1CQUFjLEdBQTJCLEVBQUUsQ0FBQztRQUM1QyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7S0FpTzFCO0lBOU5DLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLG1CQUFtQixFQUFF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OytCQUNFLHFCQUFxQixRQUd6QixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBSXJCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBU0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFFd0IsY0FBYztzQkFBNUMsWUFBWTt1QkFBQyxlQUFlO2dCQUNFLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgU2VnbWVudE9wdGlvbiA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXNlZ21lbnQtY29udHJvbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VnbWVudENvbnRyb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgc2VnbWVudHM6IFNlZ21lbnRPcHRpb25bXSA9IFtcbiAgICB7IGxhYmVsOiAnVGFiIEdyb3VwJywgdmFsdWU6ICd0YWItZ3JvdXAtMScgfSxcbiAgICB7IGxhYmVsOiAnVGFiIEdyb3VwJywgdmFsdWU6ICd0YWItZ3JvdXAtMicgfSxcbiAgXTtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzZWdtZW50IHZhbHVlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHRzIHRvIHRoZSBmaXJzdCBlbmFibGVkIHNlZ21lbnQuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkcmVuKCdzZWdtZW50QnV0dG9uJykgc2VnbWVudEJ1dHRvbnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD4+O1xuICBAVmlld0NoaWxkKCdzZWdtZW50Q29udGFpbmVyJykgc2VnbWVudENvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIGluZGljYXRvclN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGluZGljYXRvclZpc2libGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBidXR0b25DaGFuZ2VzU3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc2VnbWVudHMnXSB8fCBjaGFuZ2VzWyd2YWx1ZSddKSB7XG4gICAgICB0aGlzLmVuc3VyZVNlbGVjdGVkVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5idXR0b25DaGFuZ2VzU3ViID0gdGhpcy5zZWdtZW50QnV0dG9ucy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUluZGljYXRvcigpKTtcbiAgICB0aGlzLmVuc3VyZVNlbGVjdGVkVmFsdWUoKTtcbiAgICB0aGlzLnVwZGF0ZUluZGljYXRvcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5idXR0b25DaGFuZ2VzU3ViPy51bnN1YnNjcmliZT8uKCk7XG4gIH1cblxuICB0cmFja0J5VmFsdWUoX2luZGV4OiBudW1iZXIsIG9wdGlvbjogU2VnbWVudE9wdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQob3B0aW9uOiBTZWdtZW50T3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9wdGlvbi52YWx1ZSA9PT0gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIHNlbGVjdChvcHRpb246IFNlZ21lbnRPcHRpb24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCBvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0VmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgaWYgKG5leHRWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5leHRWYWx1ZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXh0VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuZm9jdXNCdXR0b24oaW5kZXgpO1xuICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24oMSwgY3VycmVudEluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbigtMSwgY3VycmVudEluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RGaXJzdEVuYWJsZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdExhc3RFbmFibGVkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnICc6XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VnbWVudHNbY3VycmVudEluZGV4XSwgY3VycmVudEluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1vdmVTZWxlY3Rpb24oc3RlcDogMSB8IC0xLCBzdGFydEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkSW5kZXhlcyA9IHRoaXMuZ2V0RW5hYmxlZEluZGV4ZXMoKTtcbiAgICBpZiAoZW5hYmxlZEluZGV4ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudEVuYWJsZWRJbmRleCA9IGVuYWJsZWRJbmRleGVzLmluZGV4T2Yoc3RhcnRJbmRleCk7XG4gICAgY29uc3QgZmFsbGJhY2tJbmRleCA9IHRoaXMuZ2V0U2VsZWN0ZWRJbmRleChlbmFibGVkSW5kZXhlcyk7XG4gICAgY29uc3QgYmFzZUluZGV4ID0gY3VycmVudEVuYWJsZWRJbmRleCA+PSAwID8gY3VycmVudEVuYWJsZWRJbmRleCA6IGZhbGxiYWNrSW5kZXg7XG4gICAgY29uc3QgbmV4dFBvc2l0aW9uID0gKGJhc2VJbmRleCArIHN0ZXAgKyBlbmFibGVkSW5kZXhlcy5sZW5ndGgpICUgZW5hYmxlZEluZGV4ZXMubGVuZ3RoO1xuICAgIGNvbnN0IHRhcmdldEluZGV4ID0gZW5hYmxlZEluZGV4ZXNbbmV4dFBvc2l0aW9uXTtcblxuICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VnbWVudHNbdGFyZ2V0SW5kZXhdLCB0YXJnZXRJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEZpcnN0RW5hYmxlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkSW5kZXhlcyA9IHRoaXMuZ2V0RW5hYmxlZEluZGV4ZXMoKTtcbiAgICBpZiAoZW5hYmxlZEluZGV4ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW5kZXggPSBlbmFibGVkSW5kZXhlc1swXTtcbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VnbWVudHNbaW5kZXhdLCBpbmRleCk7XG4gICAgICB0aGlzLnVwZGF0ZUluZGljYXRvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0TGFzdEVuYWJsZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZEluZGV4ZXMgPSB0aGlzLmdldEVuYWJsZWRJbmRleGVzKCk7XG4gICAgaWYgKGVuYWJsZWRJbmRleGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZW5hYmxlZEluZGV4ZXNbZW5hYmxlZEluZGV4ZXMubGVuZ3RoIC0gMV07XG4gICAgICB0aGlzLnNlbGVjdCh0aGlzLnNlZ21lbnRzW2luZGV4XSwgaW5kZXgpO1xuICAgICAgdGhpcy51cGRhdGVJbmRpY2F0b3IoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVuYWJsZWRJbmRleGVzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5zZWdtZW50c1xuICAgICAgLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKHsgb3B0aW9uLCBpbmRleCB9KSlcbiAgICAgIC5maWx0ZXIoKHsgb3B0aW9uIH0pID0+ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAubWFwKCh7IGluZGV4IH0pID0+IGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRJbmRleChlbmFibGVkSW5kZXhlczogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlZ21lbnRzLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUgJiYgIW9wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKGN1cnJlbnQgPj0gMCkge1xuICAgICAgcmV0dXJuIGVuYWJsZWRJbmRleGVzLmluZGV4T2YoY3VycmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyBhIHZhbGlkIHZhbHVlIGlzIHNlbGVjdGVkLlxuICAgKiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCBvciB0aGUgdmFsdWUgaXMgaW52YWxpZCwgZGVmYXVsdHMgdG8gdGhlIGZpcnN0IGVuYWJsZWQgc2VnbWVudC5cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlU2VsZWN0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkID0gdGhpcy5zZWdtZW50cy5maWx0ZXIoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKGVuYWJsZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIG5vIHZhbHVlIGlzIHNldCwgb3IgdmFsdWUgZG9lc24ndCBleGlzdCBpbiBzZWdtZW50cywgZGVmYXVsdCB0byBmaXJzdCBlbmFibGVkIHNlZ21lbnRcbiAgICBpZiAoIXRoaXMudmFsdWUgfHwgIXRoaXMuc2VnbWVudHMuc29tZSgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUpKSB7XG4gICAgICBjb25zdCBmaXJzdEVuYWJsZWRWYWx1ZSA9IGVuYWJsZWRbMF0udmFsdWU7XG4gICAgICAvLyBPbmx5IGVtaXQgaWYgdmFsdWUgYWN0dWFsbHkgY2hhbmdlZFxuICAgICAgaWYgKHRoaXMudmFsdWUgIT09IGZpcnN0RW5hYmxlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBmaXJzdEVuYWJsZWRWYWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlZ21lbnRzLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IGZpcnN0RW5hYmxlZFZhbHVlKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMuZm9jdXNCdXR0b24oaW5kZXgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUluZGljYXRvcihpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHNlbGVjdGVkIHZhbHVlIGlzIGRpc2FibGVkLCBzd2l0Y2ggdG8gZmlyc3QgZW5hYmxlZCBzZWdtZW50XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlZ21lbnRzLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlKTtcbiAgICBpZiAoc2VsZWN0ZWQ/LmRpc2FibGVkKSB7XG4gICAgICBjb25zdCBmaXJzdEVuYWJsZWRWYWx1ZSA9IGVuYWJsZWRbMF0udmFsdWU7XG4gICAgICAvLyBPbmx5IGVtaXQgaWYgdmFsdWUgYWN0dWFsbHkgY2hhbmdlZFxuICAgICAgaWYgKHRoaXMudmFsdWUgIT09IGZpcnN0RW5hYmxlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBmaXJzdEVuYWJsZWRWYWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlZ21lbnRzLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IGZpcnN0RW5hYmxlZFZhbHVlKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMuZm9jdXNCdXR0b24oaW5kZXgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUluZGljYXRvcihpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQnV0dG9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLnNlZ21lbnRCdXR0b25zPy5nZXQoaW5kZXgpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgYnV0dG9uPy5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbmRpY2F0b3IocHJlZmVycmVkSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnNlZ21lbnRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBidXR0b25zID0gdGhpcy5zZWdtZW50QnV0dG9ucz8udG9BcnJheSgpID8/IFtdO1xuICAgICAgaWYgKCFjb250YWluZXIgfHwgYnV0dG9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7fTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbmRleCA9IHByZWZlcnJlZEluZGV4ID8/IGJ1dHRvbnMuZmluZEluZGV4KChidXR0b24sIGlkeCkgPT4gdGhpcy5zZWdtZW50c1tpZHhdPy52YWx1ZSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluZGljYXRvclN0eWxlID0ge307XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnV0dG9uRWwgPSBidXR0b25zW2luZGV4XT8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICghYnV0dG9uRWwpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7fTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgYnV0dG9uUmVjdCA9IGJ1dHRvbkVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IGJ1dHRvbkVsLm9mZnNldExlZnQ7XG4gICAgICBjb25zdCBvZmZzZXRUb3AgPSBidXR0b25FbC5vZmZzZXRUb3A7XG4gICAgICBjb25zdCB3aWR0aCA9IGJ1dHRvbkVsLm9mZnNldFdpZHRoO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gYnV0dG9uRWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNlZ21lbnRzW2luZGV4XT8uZGlzYWJsZWQ7XG4gICAgICB0aGlzLmluZGljYXRvclN0eWxlID0ge1xuICAgICAgICB3aWR0aDogYCR7d2lkdGh9cHhgLFxuICAgICAgICBoZWlnaHQ6IGAke2hlaWdodH1weGAsXG4gICAgICAgIGxlZnQ6IGAke29mZnNldExlZnR9cHhgLFxuICAgICAgICB0b3A6IGAke29mZnNldFRvcH1weGAsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/ICcjOUJBMEY0JyA6ICcjM0Y0M0VFJyxcbiAgICAgIH07XG4gICAgICB0aGlzLmluZGljYXRvclZpc2libGUgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzSW5kaWNhdG9yVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbmRpY2F0b3JWaXNpYmxlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLXVpLXJvb3RcIiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5cbiAgPGRpdlxuICAgICNzZWdtZW50Q29udGFpbmVyXG4gICAgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLWlubGluZS1mbGV4IGNxYS1mbGV4LXJvdyBjcWEtaXRlbXMtc3RhcnQgY3FhLXAtWzMuNXB4XSBjcWEtaC1bMzEuNXB4XSBjcWEtYmctc3VyZmFjZS1saWdodCBjcWEtcm91bmRlZC1bOHB4XVwiXG4gICAgcm9sZT1cInRhYmxpc3RcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcm91bmRlZC1bOHB4XSBjcWEtdHJhbnNpdGlvbi1hbGwgY3FhLWR1cmF0aW9uLTIwMCBjcWEtZWFzZS1pbi1vdXQgY3FhLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTBdPVwiIWlzSW5kaWNhdG9yVmlzaWJsZVwiIFtuZ1N0eWxlXT1cImluZGljYXRvclN0eWxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG5cbiAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBzZWdtZW50IG9mIHNlZ21lbnRzOyBpbmRleCBhcyBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVZhbHVlXCIgI3NlZ21lbnRCdXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS16LTEwIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcHgtWzE0cHhdIGNxYS1weS1bMy41cHhdIGNxYS1oLVsyNXB4XSBjcWEtcm91bmRlZC1bOHB4XSBjcWEtdHJhbnNpdGlvbi1hbGwgY3FhLWR1cmF0aW9uLTIwMCBjcWEtZWFzZS1pbi1vdXQgY3FhLXdoaXRlc3BhY2Utbm93cmFwIGNxYS10ZXh0LWNlbnRlciBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTAgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMCBjcWEtZmxleC1ub25lXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NxYS10ZXh0LXdoaXRlIGNxYS1mb250LW1lZGl1bSc6IGlzU2VsZWN0ZWQoc2VnbWVudCksXG4gICAgICAgICdjcWEtdGV4dC1tdXRlZCc6ICFpc1NlbGVjdGVkKHNlZ21lbnQpICYmICEoZGlzYWJsZWQgfHwgc2VnbWVudC5kaXNhYmxlZCksXG4gICAgICAgICdjcWEtY3Vyc29yLW5vdC1hbGxvd2VkJzogZGlzYWJsZWQgfHwgc2VnbWVudC5kaXNhYmxlZCxcbiAgICAgICAgJ2NxYS10ZXh0LWRpc2FibGVkJzogKGRpc2FibGVkIHx8IHNlZ21lbnQuZGlzYWJsZWQpICYmICFpc1NlbGVjdGVkKHNlZ21lbnQpLFxuICAgICAgICAnY3FhLWhvdmVyOmNxYS10ZXh0LWJsYWNrJzogIWlzU2VsZWN0ZWQoc2VnbWVudCkgJiYgIWRpc2FibGVkICYmICFzZWdtZW50LmRpc2FibGVkXG4gICAgICB9XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHNlZ21lbnQuZGlzYWJsZWRcIiBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoc2VnbWVudClcIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwiIWRpc2FibGVkICYmICFzZWdtZW50LmRpc2FibGVkID8gKGlzU2VsZWN0ZWQoc2VnbWVudCkgPyAwIDogLTEpIDogLTFcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdChzZWdtZW50LCBpbmRleClcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBpbmRleClcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzE4cHhdIGNxYS1mb250LVsnSW50ZXInXSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtdGV4dC1jZW50ZXIgY3FhLWFsaWduLW1pZGRsZVwiPlxuICAgICAgICB7eyBzZWdtZW50LmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+Il19
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDOzs7O0FBZ0J2QixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBUVcsYUFBUSxHQUFvQjtZQUNuQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUM1QyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtTQUM3QyxDQUFDO1FBT08sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLbkQsbUJBQWMsR0FBMkIsRUFBRSxDQUFDO1FBQzVDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQWlPMUI7SUE5TkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxNQUFxQjtRQUNoRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFxQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXFCLEVBQUUsS0FBYTtRQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CLEVBQUUsWUFBb0I7UUFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELFFBQVEsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNqQixLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFdBQVc7Z0JBQ2QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDcEMsTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssU0FBUztnQkFDWixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxHQUFHLENBQUM7WUFDVCxLQUFLLE9BQU87Z0JBQ1YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ3ZELE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVksRUFBRSxVQUFrQjtRQUNwRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ2pGLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN4RixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2pCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUMzQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDeEMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGNBQXdCO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckcsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLG1CQUFtQjtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkUsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN2QixPQUFPO1NBQ1I7UUFFRCwyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0UsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzNDLHNDQUFzQztZQUN0QyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssaUJBQWlCLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNuQztZQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLGlCQUFpQixDQUFDLENBQUM7WUFDdEYsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7WUFDRCxPQUFPO1NBQ1I7UUFFRCxxRUFBcUU7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdFLElBQUksUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN0QixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDM0Msc0NBQXNDO1lBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxpQkFBaUIsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssaUJBQWlCLENBQUMsQ0FBQztZQUN0RixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtZQUNELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWE7UUFDL0IsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUM7WUFDOUQsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxjQUF1QjtRQUM3QyxjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7WUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU87YUFDUjtZQUVELE1BQU0sS0FBSyxHQUFHLGNBQWMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdHLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsT0FBTzthQUNSO1lBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixPQUFPO2FBQ1I7WUFFRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDckMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBRXJDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUM7WUFDbkUsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsS0FBSyxFQUFFLEdBQUcsS0FBSyxJQUFJO2dCQUNuQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUk7Z0JBQ3JCLElBQUksRUFBRSxHQUFHLFVBQVUsSUFBSTtnQkFDdkIsR0FBRyxFQUFFLEdBQUcsU0FBUyxJQUFJO2dCQUNyQixlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDcEQsQ0FBQztZQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQzs7b0hBcFBVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHFiQzdCcEMsaW9FQWlDTTsyRkRKTyx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UscUJBQXFCLFFBR3pCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs4QkFJckIsUUFBUTtzQkFBaEIsS0FBSztnQkFTRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUV3QixjQUFjO3NCQUE1QyxZQUFZO3VCQUFDLGVBQWU7Z0JBQ0UsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxudHlwZSBTZWdtZW50T3B0aW9uID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc2VnbWVudC1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50Q29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBzZWdtZW50czogU2VnbWVudE9wdGlvbltdID0gW1xuICAgIHsgbGFiZWw6ICdUYWIgR3JvdXAnLCB2YWx1ZTogJ3RhYi1ncm91cC0xJyB9LFxuICAgIHsgbGFiZWw6ICdUYWIgR3JvdXAnLCB2YWx1ZTogJ3RhYi1ncm91cC0yJyB9LFxuICBdO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHNlZ21lbnQgdmFsdWUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gdGhlIGZpcnN0IGVuYWJsZWQgc2VnbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ3NlZ21lbnRCdXR0b24nKSBzZWdtZW50QnV0dG9ucyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoJ3NlZ21lbnRDb250YWluZXInKSBzZWdtZW50Q29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgaW5kaWNhdG9yU3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgaW5kaWNhdG9yVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIGJ1dHRvbkNoYW5nZXNTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzZWdtZW50cyddIHx8IGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkNoYW5nZXNTdWIgPSB0aGlzLnNlZ21lbnRCdXR0b25zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlSW5kaWNhdG9yKCkpO1xuICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkNoYW5nZXNTdWI/LnVuc3Vic2NyaWJlPy4oKTtcbiAgfVxuXG4gIHRyYWNrQnlWYWx1ZShfaW5kZXg6IG51bWJlciwgb3B0aW9uOiBTZWdtZW50T3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb3B0aW9uLnZhbHVlO1xuICB9XG5cbiAgaXNTZWxlY3RlZChvcHRpb246IFNlZ21lbnRPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlO1xuICB9XG5cbiAgc2VsZWN0KG9wdGlvbjogU2VnbWVudE9wdGlvbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRWYWx1ZSA9IG9wdGlvbi52YWx1ZTtcbiAgICBpZiAobmV4dFZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV4dFZhbHVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5leHRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgdGhpcy51cGRhdGVJbmRpY2F0b3IoKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbigxLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKC0xLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdEZpcnN0RW5hYmxlZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0TGFzdEVuYWJsZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcgJzpcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1tjdXJyZW50SW5kZXhdLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbW92ZVNlbGVjdGlvbihzdGVwOiAxIHwgLTEsIHN0YXJ0SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRJbmRleGVzID0gdGhpcy5nZXRFbmFibGVkSW5kZXhlcygpO1xuICAgIGlmIChlbmFibGVkSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50RW5hYmxlZEluZGV4ID0gZW5hYmxlZEluZGV4ZXMuaW5kZXhPZihzdGFydEluZGV4KTtcbiAgICBjb25zdCBmYWxsYmFja0luZGV4ID0gdGhpcy5nZXRTZWxlY3RlZEluZGV4KGVuYWJsZWRJbmRleGVzKTtcbiAgICBjb25zdCBiYXNlSW5kZXggPSBjdXJyZW50RW5hYmxlZEluZGV4ID49IDAgPyBjdXJyZW50RW5hYmxlZEluZGV4IDogZmFsbGJhY2tJbmRleDtcbiAgICBjb25zdCBuZXh0UG9zaXRpb24gPSAoYmFzZUluZGV4ICsgc3RlcCArIGVuYWJsZWRJbmRleGVzLmxlbmd0aCkgJSBlbmFibGVkSW5kZXhlcy5sZW5ndGg7XG4gICAgY29uc3QgdGFyZ2V0SW5kZXggPSBlbmFibGVkSW5kZXhlc1tuZXh0UG9zaXRpb25dO1xuXG4gICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1t0YXJnZXRJbmRleF0sIHRhcmdldEluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Rmlyc3RFbmFibGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRJbmRleGVzID0gdGhpcy5nZXRFbmFibGVkSW5kZXhlcygpO1xuICAgIGlmIChlbmFibGVkSW5kZXhlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGVuYWJsZWRJbmRleGVzWzBdO1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1tpbmRleF0sIGluZGV4KTtcbiAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RMYXN0RW5hYmxlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkSW5kZXhlcyA9IHRoaXMuZ2V0RW5hYmxlZEluZGV4ZXMoKTtcbiAgICBpZiAoZW5hYmxlZEluZGV4ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW5kZXggPSBlbmFibGVkSW5kZXhlc1tlbmFibGVkSW5kZXhlcy5sZW5ndGggLSAxXTtcbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VnbWVudHNbaW5kZXhdLCBpbmRleCk7XG4gICAgICB0aGlzLnVwZGF0ZUluZGljYXRvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW5hYmxlZEluZGV4ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnNlZ21lbnRzXG4gICAgICAubWFwKChvcHRpb24sIGluZGV4KSA9PiAoeyBvcHRpb24sIGluZGV4IH0pKVxuICAgICAgLmZpbHRlcigoeyBvcHRpb24gfSkgPT4gIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgIC5tYXAoKHsgaW5kZXggfSkgPT4gaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZEluZGV4KGVuYWJsZWRJbmRleGVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy52YWx1ZSAmJiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoY3VycmVudCA+PSAwKSB7XG4gICAgICByZXR1cm4gZW5hYmxlZEluZGV4ZXMuaW5kZXhPZihjdXJyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIGEgdmFsaWQgdmFsdWUgaXMgc2VsZWN0ZWQuXG4gICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkIG9yIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLCBkZWZhdWx0cyB0byB0aGUgZmlyc3QgZW5hYmxlZCBzZWdtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVTZWxlY3RlZFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWQgPSB0aGlzLnNlZ21lbnRzLmZpbHRlcigob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoZW5hYmxlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gdmFsdWUgaXMgc2V0LCBvciB2YWx1ZSBkb2Vzbid0IGV4aXN0IGluIHNlZ21lbnRzLCBkZWZhdWx0IHRvIGZpcnN0IGVuYWJsZWQgc2VnbWVudFxuICAgIGlmICghdGhpcy52YWx1ZSB8fCAhdGhpcy5zZWdtZW50cy5zb21lKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZFZhbHVlID0gZW5hYmxlZFswXS52YWx1ZTtcbiAgICAgIC8vIE9ubHkgZW1pdCBpZiB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZmlyc3RFbmFibGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpcnN0RW5hYmxlZFZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gZmlyc3RFbmFibGVkVmFsdWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgdmFsdWUgaXMgZGlzYWJsZWQsIHN3aXRjaCB0byBmaXJzdCBlbmFibGVkIHNlZ21lbnRcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VnbWVudHMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUpO1xuICAgIGlmIChzZWxlY3RlZD8uZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZFZhbHVlID0gZW5hYmxlZFswXS52YWx1ZTtcbiAgICAgIC8vIE9ubHkgZW1pdCBpZiB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZmlyc3RFbmFibGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpcnN0RW5hYmxlZFZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gZmlyc3RFbmFibGVkVmFsdWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy51cGRhdGVJbmRpY2F0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNCdXR0b24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuc2VnbWVudEJ1dHRvbnM/LmdldChpbmRleCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBidXR0b24/LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUluZGljYXRvcihwcmVmZXJyZWRJbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuc2VnbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLnNlZ21lbnRCdXR0b25zPy50b0FycmF5KCkgPz8gW107XG4gICAgICBpZiAoIWNvbnRhaW5lciB8fCBidXR0b25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmluZGljYXRvclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JTdHlsZSA9IHt9O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluZGV4ID0gcHJlZmVycmVkSW5kZXggPz8gYnV0dG9ucy5maW5kSW5kZXgoKGJ1dHRvbiwgaWR4KSA9PiB0aGlzLnNlZ21lbnRzW2lkeF0/LnZhbHVlID09PSB0aGlzLnZhbHVlKTtcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7fTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBidXR0b25FbCA9IGJ1dHRvbnNbaW5kZXhdPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKCFidXR0b25FbCkge1xuICAgICAgICB0aGlzLmluZGljYXRvclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JTdHlsZSA9IHt9O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBidXR0b25SZWN0ID0gYnV0dG9uRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBvZmZzZXRMZWZ0ID0gYnV0dG9uRWwub2Zmc2V0TGVmdDtcbiAgICAgIGNvbnN0IG9mZnNldFRvcCA9IGJ1dHRvbkVsLm9mZnNldFRvcDtcbiAgICAgIGNvbnN0IHdpZHRoID0gYnV0dG9uRWwub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSBidXR0b25FbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IHRoaXMuc2VnbWVudHNbaW5kZXhdPy5kaXNhYmxlZDtcbiAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiBgJHt3aWR0aH1weGAsXG4gICAgICAgIGhlaWdodDogYCR7aGVpZ2h0fXB4YCxcbiAgICAgICAgbGVmdDogYCR7b2Zmc2V0TGVmdH1weGAsXG4gICAgICAgIHRvcDogYCR7b2Zmc2V0VG9wfXB4YCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gJyM5QkEwRjQnIDogJyMzRjQzRUUnLFxuICAgICAgfTtcbiAgICAgIHRoaXMuaW5kaWNhdG9yVmlzaWJsZSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNJbmRpY2F0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZGljYXRvclZpc2libGU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxuICA8ZGl2XG4gICAgI3NlZ21lbnRDb250YWluZXJcbiAgICBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtaW5saW5lLWZsZXggY3FhLWZsZXgtcm93IGNxYS1pdGVtcy1zdGFydCBjcWEtcC1bMy41cHhdIGNxYS1oLVszMS41cHhdIGNxYS1iZy1zdXJmYWNlLWxpZ2h0IGNxYS1yb3VuZGVkLVs4cHhdXCJcbiAgICByb2xlPVwidGFibGlzdFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS10cmFuc2l0aW9uLWFsbCBjcWEtZHVyYXRpb24tMjAwIGNxYS1lYXNlLWluLW91dCBjcWEtcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICBbY2xhc3MuY3FhLW9wYWNpdHktMF09XCIhaXNJbmRpY2F0b3JWaXNpYmxlXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yU3R5bGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cblxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHNlZ21lbnQgb2Ygc2VnbWVudHM7IGluZGV4IGFzIGluZGV4OyB0cmFja0J5OiB0cmFja0J5VmFsdWVcIiAjc2VnbWVudEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLXotMTAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtY2VudGVyIGNxYS1weC1bMTRweF0gY3FhLXB5LVszLjVweF0gY3FhLWgtWzI1cHhdIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS10cmFuc2l0aW9uLWFsbCBjcWEtZHVyYXRpb24tMjAwIGNxYS1lYXNlLWluLW91dCBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLXRleHQtY2VudGVyIGZvY3VzOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMCBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0wIGNxYS1mbGV4LW5vbmVcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnY3FhLXRleHQtd2hpdGUgY3FhLWZvbnQtbWVkaXVtJzogaXNTZWxlY3RlZChzZWdtZW50KSxcbiAgICAgICAgJ2NxYS10ZXh0LW11dGVkJzogIWlzU2VsZWN0ZWQoc2VnbWVudCkgJiYgIShkaXNhYmxlZCB8fCBzZWdtZW50LmRpc2FibGVkKSxcbiAgICAgICAgJ2NxYS1jdXJzb3Itbm90LWFsbG93ZWQnOiBkaXNhYmxlZCB8fCBzZWdtZW50LmRpc2FibGVkLFxuICAgICAgICAnY3FhLXRleHQtZGlzYWJsZWQnOiAoZGlzYWJsZWQgfHwgc2VnbWVudC5kaXNhYmxlZCkgJiYgIWlzU2VsZWN0ZWQoc2VnbWVudCksXG4gICAgICAgICdjcWEtaG92ZXI6Y3FhLXRleHQtYmxhY2snOiAhaXNTZWxlY3RlZChzZWdtZW50KSAmJiAhZGlzYWJsZWQgJiYgIXNlZ21lbnQuZGlzYWJsZWRcbiAgICAgIH1cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc2VnbWVudC5kaXNhYmxlZFwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChzZWdtZW50KVwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCIhZGlzYWJsZWQgJiYgIXNlZ21lbnQuZGlzYWJsZWQgPyAoaXNTZWxlY3RlZChzZWdtZW50KSA/IDAgOiAtMSkgOiAtMVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0KHNlZ21lbnQsIGluZGV4KVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIGluZGV4KVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLTEgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzE4cHhdIGNxYS1mb250LVsnSW50ZXInXSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtdGV4dC1jZW50ZXIgY3FhLWFsaWduLW1pZGRsZVwiPlxuICAgICAgICBcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlZ21lbnQ/Lmljb25cIiBjbGFzcz1cIiFjcWEtdy1bMTJweF0gIWNxYS1oLVsxMnB4XSAhY3FhLXRleHQtWzEycHhdXCIgPlxuICAgICAgICB7eyBzZWdtZW50Py5pY29uIH19XG4gICAgICA8L21hdC1pY29uPlxuXG4gICAgICB7eyBzZWdtZW50LmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,186 @@
1
+ import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/material/icon";
4
+ import * as i2 from "../segment-control/segment-control.component";
5
+ import * as i3 from "@angular/common";
6
+ export class SimulatorComponent {
7
+ constructor() {
8
+ this.videoUrl = '';
9
+ this.videoCurrentDuration = 0;
10
+ this.stepMarkers = [];
11
+ this.screenShotUrl = '';
12
+ this.platformName = 'Web - Chrome';
13
+ this.platformType = 'browser';
14
+ this.videoTimeUpdate = new EventEmitter();
15
+ this.videoPlay = new EventEmitter();
16
+ this.videoPause = new EventEmitter();
17
+ this.progress = 0;
18
+ this.dragging = false;
19
+ this.isPlaying = false;
20
+ this.isFullScreen = false;
21
+ this.currentView = 'video';
22
+ this.segments = [
23
+ { label: 'Screenshots', value: 'screenshots', icon: 'videocam' },
24
+ { label: 'Video', value: 'video', icon: 'photo' },
25
+ ];
26
+ this.videoEventListenerCleanup = null;
27
+ this.lastSetDuration = -1;
28
+ }
29
+ ngAfterViewInit() {
30
+ this.attachVideoListeners();
31
+ }
32
+ ngOnChanges(changes) {
33
+ if (changes['videoCurrentDuration'] && !changes['videoCurrentDuration'].firstChange) {
34
+ const newDuration = changes['videoCurrentDuration'].currentValue;
35
+ if (newDuration !== this.lastSetDuration && this.vplayer?.nativeElement) {
36
+ this.seekToTime(newDuration);
37
+ }
38
+ }
39
+ }
40
+ ngOnDestroy() {
41
+ if (this.videoEventListenerCleanup) {
42
+ this.videoEventListenerCleanup();
43
+ }
44
+ }
45
+ seekToTime(milliseconds) {
46
+ if (!this.vplayer?.nativeElement || !this.vplayer.nativeElement.duration)
47
+ return;
48
+ const seconds = milliseconds / 1000;
49
+ const video = this.vplayer.nativeElement;
50
+ const targetTime = Math.max(0, Math.min(seconds, video.duration));
51
+ video.currentTime = targetTime;
52
+ this.lastSetDuration = milliseconds;
53
+ if (this.isPlaying) {
54
+ video.play().catch(err => console.error('Play failed:', err));
55
+ }
56
+ }
57
+ togglePlay() {
58
+ if (!this.vplayer?.nativeElement)
59
+ return;
60
+ if (this.isPlaying) {
61
+ this.vplayer.nativeElement.pause();
62
+ this.isPlaying = false;
63
+ this.videoPause.emit();
64
+ }
65
+ else {
66
+ this.vplayer.nativeElement.play();
67
+ this.isPlaying = true;
68
+ this.videoPlay.emit();
69
+ }
70
+ }
71
+ onTimelineClick(event) {
72
+ if (!this.timelineBar?.nativeElement || !this.vplayer?.nativeElement)
73
+ return;
74
+ const rect = this.timelineBar.nativeElement.getBoundingClientRect();
75
+ const clickX = event.clientX - rect.left;
76
+ const percent = Math.max(0, Math.min(1, clickX / rect.width));
77
+ const targetTimeSeconds = percent * this.vplayer.nativeElement.duration;
78
+ this.vplayer.nativeElement.currentTime = targetTimeSeconds;
79
+ this.lastSetDuration = targetTimeSeconds * 1000;
80
+ }
81
+ startDrag() {
82
+ this.dragging = true;
83
+ }
84
+ onDrag(event) {
85
+ if (!this.dragging || !this.timelineBar?.nativeElement)
86
+ return;
87
+ const rect = this.timelineBar.nativeElement.getBoundingClientRect();
88
+ const x = event.clientX - rect.left;
89
+ const percent = Math.max(0, Math.min(x / rect.width, 1));
90
+ this.progress = percent * 100;
91
+ }
92
+ stopDrag() {
93
+ if (!this.dragging || !this.vplayer?.nativeElement)
94
+ return;
95
+ this.dragging = false;
96
+ const targetTimeSeconds = (this.progress / 100) * this.vplayer.nativeElement.duration;
97
+ this.vplayer.nativeElement.currentTime = targetTimeSeconds;
98
+ this.lastSetDuration = targetTimeSeconds * 1000;
99
+ }
100
+ onVideoMetadataLoaded() {
101
+ this.attachVideoListeners();
102
+ }
103
+ onVideoCanPlay() {
104
+ this.attachVideoListeners();
105
+ }
106
+ attachVideoListeners() {
107
+ if (this.videoEventListenerCleanup) {
108
+ this.videoEventListenerCleanup();
109
+ this.videoEventListenerCleanup = null;
110
+ }
111
+ setTimeout(() => {
112
+ const video = this.vplayer?.nativeElement;
113
+ if (!video)
114
+ return;
115
+ let lastUpdate = 0;
116
+ const handler = () => {
117
+ const now = Date.now();
118
+ if (now - lastUpdate < 100)
119
+ return;
120
+ lastUpdate = now;
121
+ const currentMs = video.currentTime * 1000;
122
+ if (!this.dragging) {
123
+ const percent = (currentMs / (video.duration * 1000)) * 100;
124
+ this.progress = Math.min(100, Math.max(0, percent));
125
+ this.videoTimeUpdate.emit(currentMs);
126
+ }
127
+ };
128
+ video.addEventListener('timeupdate', handler);
129
+ this.videoEventListenerCleanup = () => {
130
+ video.removeEventListener('timeupdate', handler);
131
+ };
132
+ }, 100);
133
+ }
134
+ getStepLeftPosition(step) {
135
+ if (!this.vplayer?.nativeElement?.duration)
136
+ return 0;
137
+ return (step.cumulativeDuration / (this.vplayer.nativeElement.duration * 1000)) * 100;
138
+ }
139
+ getStepColor(step) {
140
+ return step.result === 'SUCCESS' ? '#28a745' : '#dc3545';
141
+ }
142
+ toggleFullScreen() {
143
+ this.isFullScreen = !this.isFullScreen;
144
+ }
145
+ onSegmentChange(value) {
146
+ this.currentView = value;
147
+ }
148
+ formatTime(seconds) {
149
+ if (!seconds || isNaN(seconds))
150
+ return '00:00';
151
+ const mins = Math.floor(seconds / 60);
152
+ const secs = Math.floor(seconds % 60);
153
+ return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
154
+ }
155
+ }
156
+ SimulatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SimulatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
157
+ SimulatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SimulatorComponent, selector: "cqa-simulator", inputs: { videoUrl: "videoUrl", videoCurrentDuration: "videoCurrentDuration", stepMarkers: "stepMarkers", screenShotUrl: "screenShotUrl", platformName: "platformName", platformType: "platformType" }, outputs: { videoTimeUpdate: "videoTimeUpdate", videoPlay: "videoPlay", videoPause: "videoPause" }, viewQueries: [{ propertyName: "vplayer", first: true, predicate: ["vplayer"], descendants: true }, { propertyName: "timelineBar", first: true, predicate: ["timelineBar"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"background-color: #F3F4F6; height: 100%; display: flex; flex-direction: column;\" [ngStyle]=\"isFullScreen && {\n position: 'fixed',\n inset: '1rem',\n zIndex: '50',\n boxShadow: '0px 13px 25px -12px rgba(0, 0, 0, 0.25)',\n borderRadius: '.5rem',\n border: '1px solid #E5E7EB',\n width: 'calc(100% - 32px)',\n height: 'calc(100% - 32px)',\n overflow: 'hidden'\n }\">\n <div class=\"cqa-w-full cqa-py-1 cqa-px-2 cqa-bg-[#FFFFFF]\" style=\"border-bottom: 1px solid #E5E7EB;box-shadow: 0px 1px 2px 0px #0000000D;\">\n <div class=\"cqa-w-full cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <mat-icon *ngIf=\"platformType === 'browser'\" style=\"width: 10px; height: 10px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <g clip-path=\"url(#clip0_935_15847)\">\n <path\n d=\"M0.625 5C0.625 6.16032 1.08594 7.27312 1.90641 8.09359C2.72688 8.91406 3.83968 9.375 5 9.375C6.16032 9.375 7.27312 8.91406 8.09359 8.09359C8.91406 7.27312 9.375 6.16032 9.375 5C9.375 3.83968 8.91406 2.72688 8.09359 1.90641C7.27312 1.08594 6.16032 0.625 5 0.625C3.83968 0.625 2.72688 1.08594 1.90641 1.90641C1.08594 2.72688 0.625 3.83968 0.625 5Z\"\n stroke=\"#9CA3AF\" stroke-width=\"0.6\" stroke-linejoin=\"round\" />\n <path\n d=\"M3.125 5C3.125 3.83968 3.32254 2.72688 3.67417 1.90641C4.02581 1.08594 4.50272 0.625 5 0.625C5.49728 0.625 5.97419 1.08594 6.32582 1.90641C6.67746 2.72688 6.875 3.83968 6.875 5C6.875 6.16032 6.67746 7.27312 6.32582 8.09359C5.97419 8.91406 5.49728 9.375 5 9.375C4.50272 9.375 4.02581 8.91406 3.67417 8.09359C3.32254 7.27312 3.125 6.16032 3.125 5Z\"\n stroke=\"#9CA3AF\" stroke-width=\"0.6\" stroke-linejoin=\"round\" />\n <path d=\"M0.9375 6.45866H9.0625M0.9375 3.54199H9.0625\" stroke=\"#9CA3AF\" stroke-width=\"0.6\"\n stroke-linecap=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_935_15847\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"platformType === 'device'\" style=\"width: 10px; height: 10px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M7.08325 0.833008H2.91659C2.45635 0.833008 2.08325 1.2061 2.08325 1.66634V8.33301C2.08325 8.79324 2.45635 9.16634 2.91659 9.16634H7.08325C7.54349 9.16634 7.91658 8.79324 7.91658 8.33301V1.66634C7.91658 1.2061 7.54349 0.833008 7.08325 0.833008Z\" stroke=\"#6B7280\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5 7.5H5.00417\" stroke=\"#6B7280\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </mat-icon>\n <p class=\"cqa-text-sm !cqa-text-[10px] cqa-text-[#6B7280] cqa-ml-2\">{{ platformName }}</p>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <cqa-segment-control \n [segments]=\"segments\" \n [value]=\"currentView\"\n (valueChange)=\"onSegmentChange($event)\">\n </cqa-segment-control>\n \n <div *ngIf=\"!isFullScreen\" \n class=\"cqa-p-1 cqa-cursor-pointer hover:cqa-bg-gray-100 cqa-rounded-sm cqa-transition-colors\"\n (click)=\"toggleFullScreen()\"\n title=\"Expand\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M6.25 1.25H8.75V3.75\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.74992 1.25L5.83325 4.16667\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M1.25 8.74967L4.16667 5.83301\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M3.75 8.75H1.25V6.25\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <div *ngIf=\"isFullScreen\" \n class=\"cqa-p-1 cqa-cursor-pointer hover:cqa-bg-gray-100 cqa-rounded-sm cqa-transition-colors\"\n (click)=\"toggleFullScreen()\"\n title=\"Exit full screen\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M8.75 6.25H6.25V8.75\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.25008 6.25L9.16675 9.16667\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M0.833252 0.833008L3.74992 3.74967\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M1.25 3.75H3.75V1.25\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cqa-w-full cqa-bg-[#F3F4F6] cqa-py-12 cqa-sm:cqa-py-16 cqa-my-auto h-[calc(100vh-32px)]\">\n <div *ngIf=\"currentView === 'video'\">\n <div class=\"cqa-w-full cqa-mb-4\" *ngIf=\"videoUrl\">\n <video\n #vplayer\n class=\"cqa-object-contain cqa-w-full cqa-min-h-[250px] cqa-max-h-[calc(100dvh-220px)] cqa-block cqa-bg-black\"\n [src]=\"videoUrl\"\n type=\"video/webm\"\n (loadedmetadata)=\"onVideoMetadataLoaded()\"\n (canplay)=\"onVideoCanPlay()\"\n ></video>\n </div>\n \n <div class=\"cqa-p-10 cqa-text-center cqa-text-gray-400 cqa-text-sm\" *ngIf=\"!videoUrl\">\n No video recording found\n </div>\n \n <div class=\"cqa-px-2 cqa-py-2 cqa-bg-white\" style=\"border-top: 1px solid #E5E7EB;\" *ngIf=\"videoUrl\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <button \n type=\"button\"\n class=\"cqa-bg-transparent cqa-border-none cqa-cursor-pointer !cqa-px-0 cqa-flex cqa-items-center cqa-justify-center hover:cqa-opacity-70 cqa-transition-opacity cqa-outline-none\"\n style=\"pointer-events: auto;\"\n (click)=\"togglePlay()\">\n <span *ngIf=\"!isPlaying\" class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 2L13 8L3 14V2Z\" fill=\"#374151\"/>\n </svg>\n </span>\n <span *ngIf=\"isPlaying\" class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"2\" width=\"3\" height=\"12\" fill=\"#374151\"/>\n <rect x=\"10\" y=\"2\" width=\"3\" height=\"12\" fill=\"#374151\"/>\n </svg>\n </span>\n </button>\n \n <span class=\"cqa-text-[#9CA3AF] cqa-text-[9px] cqa-font-normal cqa-whitespace-nowrap cqa-select-none cqa-mr-[20px]\">\n {{ formatTime(vplayer?.nativeElement?.currentTime || 0) }}\n </span>\n \n <div \n #timelineBar\n class=\"cqa-relative cqa-h-1 cqa-bg-gray-200 cqa-rounded-full cqa-cursor-pointer cqa-flex-1\"\n (click)=\"onTimelineClick($event)\" \n (mousemove)=\"onDrag($event)\"\n (mouseup)=\"stopDrag()\" \n (mouseleave)=\"stopDrag()\">\n \n <div \n *ngFor=\"let step of stepMarkers\" \n class=\"cqa-absolute cqa-w-1 cqa-h-full cqa-top-0 cqa-rounded-sm\"\n [style.left.%]=\"getStepLeftPosition(step)\"\n [style.background]=\"getStepColor(step)\"\n style=\"pointer-events: none; z-index: 20;\">\n </div>\n \n <div \n class=\"cqa-absolute cqa-left-0 cqa-top-0 cqa-h-full cqa-bg-green-500 cqa-rounded-full cqa-transition-[width] cqa-duration-100\"\n [style.width.%]=\"progress\"\n style=\"pointer-events: none; z-index: 2;\">\n </div>\n \n <div \n class=\"cqa-absolute cqa-top-1/2 cqa-w-3 cqa-h-3 cqa-bg-green-600 cqa-rounded-full cqa-cursor-grab active:cqa-cursor-grabbing cqa-shadow-md\"\n [style.left.%]=\"progress\"\n style=\"transform: translate(-50%, -50%); z-index: 10;\"\n (mousedown)=\"startDrag()\">\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"currentView === 'screenshots'\">\n <div class=\"cqa-w-full cqa-mb-4\" *ngIf=\"screenShotUrl\">\n <img\n [src]=\"screenShotUrl\"\n alt=\"Screenshot\"\n class=\"cqa-object-contain cqa-w-full cqa-max-h-[calc(100dvh-220px)] cqa-block cqa-bg-black cqa-mx-auto\"\n />\n </div>\n \n <div class=\"cqa-p-10 cqa-text-center cqa-text-gray-400 cqa-text-sm\" *ngIf=\"!screenShotUrl\">\n No screenshot available\n </div>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.SegmentControlComponent, selector: "cqa-segment-control", inputs: ["segments", "value", "disabled"], outputs: ["valueChange"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SimulatorComponent, decorators: [{
159
+ type: Component,
160
+ args: [{ selector: 'cqa-simulator', template: "<div class=\"cqa-ui-root\" style=\"background-color: #F3F4F6; height: 100%; display: flex; flex-direction: column;\" [ngStyle]=\"isFullScreen && {\n position: 'fixed',\n inset: '1rem',\n zIndex: '50',\n boxShadow: '0px 13px 25px -12px rgba(0, 0, 0, 0.25)',\n borderRadius: '.5rem',\n border: '1px solid #E5E7EB',\n width: 'calc(100% - 32px)',\n height: 'calc(100% - 32px)',\n overflow: 'hidden'\n }\">\n <div class=\"cqa-w-full cqa-py-1 cqa-px-2 cqa-bg-[#FFFFFF]\" style=\"border-bottom: 1px solid #E5E7EB;box-shadow: 0px 1px 2px 0px #0000000D;\">\n <div class=\"cqa-w-full cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <mat-icon *ngIf=\"platformType === 'browser'\" style=\"width: 10px; height: 10px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <g clip-path=\"url(#clip0_935_15847)\">\n <path\n d=\"M0.625 5C0.625 6.16032 1.08594 7.27312 1.90641 8.09359C2.72688 8.91406 3.83968 9.375 5 9.375C6.16032 9.375 7.27312 8.91406 8.09359 8.09359C8.91406 7.27312 9.375 6.16032 9.375 5C9.375 3.83968 8.91406 2.72688 8.09359 1.90641C7.27312 1.08594 6.16032 0.625 5 0.625C3.83968 0.625 2.72688 1.08594 1.90641 1.90641C1.08594 2.72688 0.625 3.83968 0.625 5Z\"\n stroke=\"#9CA3AF\" stroke-width=\"0.6\" stroke-linejoin=\"round\" />\n <path\n d=\"M3.125 5C3.125 3.83968 3.32254 2.72688 3.67417 1.90641C4.02581 1.08594 4.50272 0.625 5 0.625C5.49728 0.625 5.97419 1.08594 6.32582 1.90641C6.67746 2.72688 6.875 3.83968 6.875 5C6.875 6.16032 6.67746 7.27312 6.32582 8.09359C5.97419 8.91406 5.49728 9.375 5 9.375C4.50272 9.375 4.02581 8.91406 3.67417 8.09359C3.32254 7.27312 3.125 6.16032 3.125 5Z\"\n stroke=\"#9CA3AF\" stroke-width=\"0.6\" stroke-linejoin=\"round\" />\n <path d=\"M0.9375 6.45866H9.0625M0.9375 3.54199H9.0625\" stroke=\"#9CA3AF\" stroke-width=\"0.6\"\n stroke-linecap=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_935_15847\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"platformType === 'device'\" style=\"width: 10px; height: 10px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M7.08325 0.833008H2.91659C2.45635 0.833008 2.08325 1.2061 2.08325 1.66634V8.33301C2.08325 8.79324 2.45635 9.16634 2.91659 9.16634H7.08325C7.54349 9.16634 7.91658 8.79324 7.91658 8.33301V1.66634C7.91658 1.2061 7.54349 0.833008 7.08325 0.833008Z\" stroke=\"#6B7280\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5 7.5H5.00417\" stroke=\"#6B7280\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </mat-icon>\n <p class=\"cqa-text-sm !cqa-text-[10px] cqa-text-[#6B7280] cqa-ml-2\">{{ platformName }}</p>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <cqa-segment-control \n [segments]=\"segments\" \n [value]=\"currentView\"\n (valueChange)=\"onSegmentChange($event)\">\n </cqa-segment-control>\n \n <div *ngIf=\"!isFullScreen\" \n class=\"cqa-p-1 cqa-cursor-pointer hover:cqa-bg-gray-100 cqa-rounded-sm cqa-transition-colors\"\n (click)=\"toggleFullScreen()\"\n title=\"Expand\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M6.25 1.25H8.75V3.75\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.74992 1.25L5.83325 4.16667\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M1.25 8.74967L4.16667 5.83301\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M3.75 8.75H1.25V6.25\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <div *ngIf=\"isFullScreen\" \n class=\"cqa-p-1 cqa-cursor-pointer hover:cqa-bg-gray-100 cqa-rounded-sm cqa-transition-colors\"\n (click)=\"toggleFullScreen()\"\n title=\"Exit full screen\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M8.75 6.25H6.25V8.75\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.25008 6.25L9.16675 9.16667\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M0.833252 0.833008L3.74992 3.74967\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M1.25 3.75H3.75V1.25\" stroke=\"#9CA3AF\" stroke-width=\"0.833333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cqa-w-full cqa-bg-[#F3F4F6] cqa-py-12 cqa-sm:cqa-py-16 cqa-my-auto h-[calc(100vh-32px)]\">\n <div *ngIf=\"currentView === 'video'\">\n <div class=\"cqa-w-full cqa-mb-4\" *ngIf=\"videoUrl\">\n <video\n #vplayer\n class=\"cqa-object-contain cqa-w-full cqa-min-h-[250px] cqa-max-h-[calc(100dvh-220px)] cqa-block cqa-bg-black\"\n [src]=\"videoUrl\"\n type=\"video/webm\"\n (loadedmetadata)=\"onVideoMetadataLoaded()\"\n (canplay)=\"onVideoCanPlay()\"\n ></video>\n </div>\n \n <div class=\"cqa-p-10 cqa-text-center cqa-text-gray-400 cqa-text-sm\" *ngIf=\"!videoUrl\">\n No video recording found\n </div>\n \n <div class=\"cqa-px-2 cqa-py-2 cqa-bg-white\" style=\"border-top: 1px solid #E5E7EB;\" *ngIf=\"videoUrl\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <button \n type=\"button\"\n class=\"cqa-bg-transparent cqa-border-none cqa-cursor-pointer !cqa-px-0 cqa-flex cqa-items-center cqa-justify-center hover:cqa-opacity-70 cqa-transition-opacity cqa-outline-none\"\n style=\"pointer-events: auto;\"\n (click)=\"togglePlay()\">\n <span *ngIf=\"!isPlaying\" class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 2L13 8L3 14V2Z\" fill=\"#374151\"/>\n </svg>\n </span>\n <span *ngIf=\"isPlaying\" class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"2\" width=\"3\" height=\"12\" fill=\"#374151\"/>\n <rect x=\"10\" y=\"2\" width=\"3\" height=\"12\" fill=\"#374151\"/>\n </svg>\n </span>\n </button>\n \n <span class=\"cqa-text-[#9CA3AF] cqa-text-[9px] cqa-font-normal cqa-whitespace-nowrap cqa-select-none cqa-mr-[20px]\">\n {{ formatTime(vplayer?.nativeElement?.currentTime || 0) }}\n </span>\n \n <div \n #timelineBar\n class=\"cqa-relative cqa-h-1 cqa-bg-gray-200 cqa-rounded-full cqa-cursor-pointer cqa-flex-1\"\n (click)=\"onTimelineClick($event)\" \n (mousemove)=\"onDrag($event)\"\n (mouseup)=\"stopDrag()\" \n (mouseleave)=\"stopDrag()\">\n \n <div \n *ngFor=\"let step of stepMarkers\" \n class=\"cqa-absolute cqa-w-1 cqa-h-full cqa-top-0 cqa-rounded-sm\"\n [style.left.%]=\"getStepLeftPosition(step)\"\n [style.background]=\"getStepColor(step)\"\n style=\"pointer-events: none; z-index: 20;\">\n </div>\n \n <div \n class=\"cqa-absolute cqa-left-0 cqa-top-0 cqa-h-full cqa-bg-green-500 cqa-rounded-full cqa-transition-[width] cqa-duration-100\"\n [style.width.%]=\"progress\"\n style=\"pointer-events: none; z-index: 2;\">\n </div>\n \n <div \n class=\"cqa-absolute cqa-top-1/2 cqa-w-3 cqa-h-3 cqa-bg-green-600 cqa-rounded-full cqa-cursor-grab active:cqa-cursor-grabbing cqa-shadow-md\"\n [style.left.%]=\"progress\"\n style=\"transform: translate(-50%, -50%); z-index: 10;\"\n (mousedown)=\"startDrag()\">\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"currentView === 'screenshots'\">\n <div class=\"cqa-w-full cqa-mb-4\" *ngIf=\"screenShotUrl\">\n <img\n [src]=\"screenShotUrl\"\n alt=\"Screenshot\"\n class=\"cqa-object-contain cqa-w-full cqa-max-h-[calc(100dvh-220px)] cqa-block cqa-bg-black cqa-mx-auto\"\n />\n </div>\n \n <div class=\"cqa-p-10 cqa-text-center cqa-text-gray-400 cqa-text-sm\" *ngIf=\"!screenShotUrl\">\n No screenshot available\n </div>\n </div>\n </div>\n</div>", styles: [] }]
161
+ }], propDecorators: { videoUrl: [{
162
+ type: Input
163
+ }], videoCurrentDuration: [{
164
+ type: Input
165
+ }], stepMarkers: [{
166
+ type: Input
167
+ }], screenShotUrl: [{
168
+ type: Input
169
+ }], platformName: [{
170
+ type: Input
171
+ }], platformType: [{
172
+ type: Input
173
+ }], videoTimeUpdate: [{
174
+ type: Output
175
+ }], videoPlay: [{
176
+ type: Output
177
+ }], videoPause: [{
178
+ type: Output
179
+ }], vplayer: [{
180
+ type: ViewChild,
181
+ args: ['vplayer']
182
+ }], timelineBar: [{
183
+ type: ViewChild,
184
+ args: ['timelineBar']
185
+ }] } });
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltdWxhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2ltdWxhdG9yL3NpbXVsYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NpbXVsYXRvci9zaW11bGF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWtFLE1BQU0sZUFBZSxDQUFDOzs7OztBQWlCbEosTUFBTSxPQUFPLGtCQUFrQjtJQUwvQjtRQU9XLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIseUJBQW9CLEdBQVcsQ0FBQyxDQUFDO1FBQ2pDLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixpQkFBWSxHQUFXLGNBQWMsQ0FBQztRQUN0QyxpQkFBWSxHQUF5QixTQUFTLENBQUM7UUFFOUMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzdDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS2hELGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxPQUFPLENBQUM7UUFFOUIsYUFBUSxHQUFvQjtZQUMxQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7U0FDbEQsQ0FB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LEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFdEMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDbkYsQ0FBQzs7K0dBakxVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNqQkNqQi9CLHUwU0FrS007MkZEakpPLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzhCQU1oQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVlLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDTSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBNYXJrZXIge1xuICBjdW11bGF0aXZlRHVyYXRpb246IG51bWJlcjtcbiAgcmVzdWx0OiAnU1VDQ0VTUycgfCAnRkFJTFVSRSc7XG59XG5cbnR5cGUgU2VnbWVudE9wdGlvbiA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn07XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc2ltdWxhdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXVsYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgU2ltdWxhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIHZpZGVvVXJsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdmlkZW9DdXJyZW50RHVyYXRpb246IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHN0ZXBNYXJrZXJzOiBTdGVwTWFya2VyW10gPSBbXTtcbiAgQElucHV0KCkgc2NyZWVuU2hvdFVybDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYXRmb3JtTmFtZTogc3RyaW5nID0gJ1dlYiAtIENocm9tZSc7XG4gIEBJbnB1dCgpIHBsYXRmb3JtVHlwZTogJ2Jyb3dzZXInIHwgJ2RldmljZScgPSAnYnJvd3Nlcic7XG5cbiAgQE91dHB1dCgpIHZpZGVvVGltZVVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgdmlkZW9QbGF5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlkZW9QYXVzZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAVmlld0NoaWxkKCd2cGxheWVyJykgdnBsYXllciE6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RpbWVsaW5lQmFyJykgdGltZWxpbmVCYXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwcm9ncmVzcyA9IDA7XG4gIGRyYWdnaW5nID0gZmFsc2U7XG4gIGlzUGxheWluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0Z1bGxTY3JlZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VycmVudFZpZXc6IHN0cmluZyA9ICd2aWRlbyc7XG5cbiAgc2VnbWVudHM6IFNlZ21lbnRPcHRpb25bXSA9IFtcbiAgICB7IGxhYmVsOiAnU2NyZWVuc2hvdHMnLCB2YWx1ZTogJ3NjcmVlbnNob3RzJywgaWNvbjogJ3ZpZGVvY2FtJyB9LFxuICAgIHsgbGFiZWw6ICdWaWRlbycsIHZhbHVlOiAndmlkZW8nLCBpY29uOiAncGhvdG8nIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSB2aWRlb0V2ZW50TGlzdGVuZXJDbGVhbnVwOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0U2V0RHVyYXRpb246IG51bWJlciA9IC0xO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF0dGFjaFZpZGVvTGlzdGVuZXJzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3ZpZGVvQ3VycmVudER1cmF0aW9uJ10gJiYgIWNoYW5nZXNbJ3ZpZGVvQ3VycmVudER1cmF0aW9uJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG5ld0R1cmF0aW9uID0gY2hhbmdlc1sndmlkZW9DdXJyZW50RHVyYXRpb24nXS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAobmV3RHVyYXRpb24gIT09IHRoaXMubGFzdFNldER1cmF0aW9uICYmIHRoaXMudnBsYXllcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLnNlZWtUb1RpbWUobmV3RHVyYXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZGVvRXZlbnRMaXN0ZW5lckNsZWFudXApIHtcbiAgICAgIHRoaXMudmlkZW9FdmVudExpc3RlbmVyQ2xlYW51cCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlZWtUb1RpbWUobWlsbGlzZWNvbmRzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudnBsYXllcj8ubmF0aXZlRWxlbWVudCB8fCAhdGhpcy52cGxheWVyLm5hdGl2ZUVsZW1lbnQuZHVyYXRpb24pIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBzZWNvbmRzID0gbWlsbGlzZWNvbmRzIC8gMTAwMDtcbiAgICBjb25zdCB2aWRlbyA9IHRoaXMudnBsYXllci5uYXRpdmVFbGVtZW50O1xuICAgIFxuICAgIGNvbnN0IHRhcmdldFRpbWUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzZWNvbmRzLCB2aWRlby5kdXJhdGlvbikpO1xuICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdGFyZ2V0VGltZTtcbiAgICB0aGlzLmxhc3RTZXREdXJhdGlvbiA9IG1pbGxpc2Vjb25kcztcblxuICAgIGlmICh0aGlzLmlzUGxheWluZykge1xuICAgICAgdmlkZW8ucGxheSgpLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKCdQbGF5IGZhaWxlZDonLCBlcnIpKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVQbGF5KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52cGxheWVyPy5uYXRpdmVFbGVtZW50KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5pc1BsYXlpbmcpIHtcbiAgICAgIHRoaXMudnBsYXllci5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xuICAgICAgdGhpcy52aWRlb1BhdXNlLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52cGxheWVyLm5hdGl2ZUVsZW1lbnQucGxheSgpO1xuICAgICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xuICAgICAgdGhpcy52aWRlb1BsYXkuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uVGltZWxpbmVDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50aW1lbGluZUJhcj8ubmF0aXZlRWxlbWVudCB8fCAhdGhpcy52cGxheWVyPy5uYXRpdmVFbGVtZW50KSByZXR1cm47XG5cbiAgICBjb25zdCByZWN0ID0gdGhpcy50aW1lbGluZUJhci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNsaWNrWCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgY29uc3QgcGVyY2VudCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIGNsaWNrWCAvIHJlY3Qud2lkdGgpKTtcbiAgICBcbiAgICBjb25zdCB0YXJnZXRUaW1lU2Vjb25kcyA9IHBlcmNlbnQgKiB0aGlzLnZwbGF5ZXIubmF0aXZlRWxlbWVudC5kdXJhdGlvbjtcbiAgICB0aGlzLnZwbGF5ZXIubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSA9IHRhcmdldFRpbWVTZWNvbmRzO1xuICAgIHRoaXMubGFzdFNldER1cmF0aW9uID0gdGFyZ2V0VGltZVNlY29uZHMgKiAxMDAwO1xuICB9XG5cbiAgc3RhcnREcmFnKCk6IHZvaWQge1xuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICB9XG5cbiAgb25EcmFnKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nIHx8ICF0aGlzLnRpbWVsaW5lQmFyPy5uYXRpdmVFbGVtZW50KSByZXR1cm47XG5cbiAgICBjb25zdCByZWN0ID0gdGhpcy50aW1lbGluZUJhci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuICAgIGNvbnN0IHBlcmNlbnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih4IC8gcmVjdC53aWR0aCwgMSkpO1xuICAgIHRoaXMucHJvZ3Jlc3MgPSBwZXJjZW50ICogMTAwO1xuICB9XG5cbiAgc3RvcERyYWcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nIHx8ICF0aGlzLnZwbGF5ZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcblxuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICBjb25zdCB0YXJnZXRUaW1lU2Vjb25kcyA9ICh0aGlzLnByb2dyZXNzIC8gMTAwKSAqIHRoaXMudnBsYXllci5uYXRpdmVFbGVtZW50LmR1cmF0aW9uO1xuICAgIHRoaXMudnBsYXllci5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lID0gdGFyZ2V0VGltZVNlY29uZHM7XG4gICAgdGhpcy5sYXN0U2V0RHVyYXRpb24gPSB0YXJnZXRUaW1lU2Vjb25kcyAqIDEwMDA7XG4gIH1cblxuICBvblZpZGVvTWV0YWRhdGFMb2FkZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRhY2hWaWRlb0xpc3RlbmVycygpO1xuICB9XG5cbiAgb25WaWRlb0NhblBsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRhY2hWaWRlb0xpc3RlbmVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hWaWRlb0xpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWRlb0V2ZW50TGlzdGVuZXJDbGVhbnVwKSB7XG4gICAgICB0aGlzLnZpZGVvRXZlbnRMaXN0ZW5lckNsZWFudXAoKTtcbiAgICAgIHRoaXMudmlkZW9FdmVudExpc3RlbmVyQ2xlYW51cCA9IG51bGw7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWRlbyA9IHRoaXMudnBsYXllcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICghdmlkZW8pIHJldHVybjtcblxuICAgICAgbGV0IGxhc3RVcGRhdGUgPSAwO1xuICAgICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKG5vdyAtIGxhc3RVcGRhdGUgPCAxMDApIHJldHVybjtcblxuICAgICAgICBsYXN0VXBkYXRlID0gbm93O1xuICAgICAgICBjb25zdCBjdXJyZW50TXMgPSB2aWRlby5jdXJyZW50VGltZSAqIDEwMDA7XG5cbiAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgY29uc3QgcGVyY2VudCA9IChjdXJyZW50TXMgLyAodmlkZW8uZHVyYXRpb24gKiAxMDAwKSkgKiAxMDA7XG4gICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgcGVyY2VudCkpO1xuICAgICAgICAgIHRoaXMudmlkZW9UaW1lVXBkYXRlLmVtaXQoY3VycmVudE1zKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIGhhbmRsZXIpO1xuXG4gICAgICB0aGlzLnZpZGVvRXZlbnRMaXN0ZW5lckNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCBoYW5kbGVyKTtcbiAgICAgIH07XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIGdldFN0ZXBMZWZ0UG9zaXRpb24oc3RlcDogU3RlcE1hcmtlcik6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnZwbGF5ZXI/Lm5hdGl2ZUVsZW1lbnQ/LmR1cmF0aW9uKSByZXR1cm4gMDtcbiAgICByZXR1cm4gKHN0ZXAuY3VtdWxhdGl2ZUR1cmF0aW9uIC8gKHRoaXMudnBsYXllci5uYXRpdmVFbGVtZW50LmR1cmF0aW9uICogMTAwMCkpICogMTAwO1xuICB9XG5cbiAgZ2V0U3RlcENvbG9yKHN0ZXA6IFN0ZXBNYXJrZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGVwLnJlc3VsdCA9PT0gJ1NVQ0NFU1MnID8gJyMyOGE3NDUnIDogJyNkYzM1NDUnO1xuICB9XG5cbiAgdG9nZ2xlRnVsbFNjcmVlbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRnVsbFNjcmVlbiA9ICF0aGlzLmlzRnVsbFNjcmVlbjtcbiAgfVxuXG4gIG9uU2VnbWVudENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50VmlldyA9IHZhbHVlO1xuICB9XG5cbiAgZm9ybWF0VGltZShzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghc2Vjb25kcyB8fCBpc05hTihzZWNvbmRzKSkgcmV0dXJuICcwMDowMCc7XG4gICAgXG4gICAgY29uc3QgbWlucyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCBzZWNzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApO1xuICAgIFxuICAgIHJldHVybiBgJHttaW5zLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtzZWNzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI0YzRjRGNjsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiIFtuZ1N0eWxlXT1cImlzRnVsbFNjcmVlbiAmJiB7XG4gIHBvc2l0aW9uOiAnZml4ZWQnLFxuICBpbnNldDogJzFyZW0nLFxuICB6SW5kZXg6ICc1MCcsXG4gIGJveFNoYWRvdzogJzBweCAxM3B4IDI1cHggLTEycHggcmdiYSgwLCAwLCAwLCAwLjI1KScsXG4gIGJvcmRlclJhZGl1czogJy41cmVtJyxcbiAgYm9yZGVyOiAnMXB4IHNvbGlkICNFNUU3RUInLFxuICB3aWR0aDogJ2NhbGMoMTAwJSAtIDMycHgpJyxcbiAgaGVpZ2h0OiAnY2FsYygxMDAlIC0gMzJweCknLFxuICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgfVwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtcHktMSBjcWEtcHgtMiBjcWEtYmctWyNGRkZGRkZdXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U1RTdFQjtib3gtc2hhZG93OiAwcHggMXB4IDJweCAwcHggIzAwMDAwMDBEO1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwicGxhdGZvcm1UeXBlID09PSAnYnJvd3NlcidcIiBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7XCI+XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzkzNV8xNTg0NylcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAuNjI1IDVDMC42MjUgNi4xNjAzMiAxLjA4NTk0IDcuMjczMTIgMS45MDY0MSA4LjA5MzU5QzIuNzI2ODggOC45MTQwNiAzLjgzOTY4IDkuMzc1IDUgOS4zNzVDNi4xNjAzMiA5LjM3NSA3LjI3MzEyIDguOTE0MDYgOC4wOTM1OSA4LjA5MzU5QzguOTE0MDYgNy4yNzMxMiA5LjM3NSA2LjE2MDMyIDkuMzc1IDVDOS4zNzUgMy44Mzk2OCA4LjkxNDA2IDIuNzI2ODggOC4wOTM1OSAxLjkwNjQxQzcuMjczMTIgMS4wODU5NCA2LjE2MDMyIDAuNjI1IDUgMC42MjVDMy44Mzk2OCAwLjYyNSAyLjcyNjg4IDEuMDg1OTQgMS45MDY0MSAxLjkwNjQxQzEuMDg1OTQgMi43MjY4OCAwLjYyNSAzLjgzOTY4IDAuNjI1IDVaXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC42XCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMy4xMjUgNUMzLjEyNSAzLjgzOTY4IDMuMzIyNTQgMi43MjY4OCAzLjY3NDE3IDEuOTA2NDFDNC4wMjU4MSAxLjA4NTk0IDQuNTAyNzIgMC42MjUgNSAwLjYyNUM1LjQ5NzI4IDAuNjI1IDUuOTc0MTkgMS4wODU5NCA2LjMyNTgyIDEuOTA2NDFDNi42Nzc0NiAyLjcyNjg4IDYuODc1IDMuODM5NjggNi44NzUgNUM2Ljg3NSA2LjE2MDMyIDYuNjc3NDYgNy4yNzMxMiA2LjMyNTgyIDguMDkzNTlDNS45NzQxOSA4LjkxNDA2IDUuNDk3MjggOS4zNzUgNSA5LjM3NUM0LjUwMjcyIDkuMzc1IDQuMDI1ODEgOC45MTQwNiAzLjY3NDE3IDguMDkzNTlDMy4zMjI1NCA3LjI3MzEyIDMuMTI1IDYuMTYwMzIgMy4xMjUgNVpcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIwLjZcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC45Mzc1IDYuNDU4NjZIOS4wNjI1TTAuOTM3NSAzLjU0MTk5SDkuMDYyNVwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIwLjZcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzkzNV8xNTg0N1wiPlxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInBsYXRmb3JtVHlwZSA9PT0gJ2RldmljZSdcIiBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7XCI+XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTcuMDgzMjUgMC44MzMwMDhIMi45MTY1OUMyLjQ1NjM1IDAuODMzMDA4IDIuMDgzMjUgMS4yMDYxIDIuMDgzMjUgMS42NjYzNFY4LjMzMzAxQzIuMDgzMjUgOC43OTMyNCAyLjQ1NjM1IDkuMTY2MzQgMi45MTY1OSA5LjE2NjM0SDcuMDgzMjVDNy41NDM0OSA5LjE2NjM0IDcuOTE2NTggOC43OTMyNCA3LjkxNjU4IDguMzMzMDFWMS42NjYzNEM3LjkxNjU4IDEuMjA2MSA3LjU0MzQ5IDAuODMzMDA4IDcuMDgzMjUgMC44MzMwMDhaXCIgc3Ryb2tlPVwiIzZCNzI4MFwiIHN0cm9rZS13aWR0aD1cIjAuODMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUg1LjAwNDE3XCIgc3Ryb2tlPVwiIzZCNzI4MFwiIHN0cm9rZS13aWR0aD1cIjAuODMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LXNtICFjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tbC0yXCI+e3sgcGxhdGZvcm1OYW1lIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGNxYS1zZWdtZW50LWNvbnRyb2wgXG4gICAgICAgICAgW3NlZ21lbnRzXT1cInNlZ21lbnRzXCIgXG4gICAgICAgICAgW3ZhbHVlXT1cImN1cnJlbnRWaWV3XCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25TZWdtZW50Q2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9jcWEtc2VnbWVudC1jb250cm9sPlxuICAgICAgICBcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0Z1bGxTY3JlZW5cIiBcbiAgICAgICAgICAgICBjbGFzcz1cImNxYS1wLTEgY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1iZy1ncmF5LTEwMCBjcWEtcm91bmRlZC1zbSBjcWEtdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsU2NyZWVuKClcIlxuICAgICAgICAgICAgIHRpdGxlPVwiRXhwYW5kXCI+XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMS4yNUg4Ljc1VjMuNzVcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTguNzQ5OTIgMS4yNUw1LjgzMzI1IDQuMTY2NjdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEuMjUgOC43NDk2N0w0LjE2NjY3IDUuODMzMDFcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgOC43NUgxLjI1VjYuMjVcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0Z1bGxTY3JlZW5cIiBcbiAgICAgICAgICAgICBjbGFzcz1cImNxYS1wLTEgY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1iZy1ncmF5LTEwMCBjcWEtcm91bmRlZC1zbSBjcWEtdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsU2NyZWVuKClcIlxuICAgICAgICAgICAgIHRpdGxlPVwiRXhpdCBmdWxsIHNjcmVlblwiPlxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk04Ljc1IDYuMjVINi4yNVY4Ljc1XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjAuODMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1MDA4IDYuMjVMOS4xNjY3NSA5LjE2NjY3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjAuODMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0wLjgzMzI1MiAwLjgzMzAwOEwzLjc0OTkyIDMuNzQ5NjdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEuMjUgMy43NUgzLjc1VjEuMjVcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtYmctWyNGM0Y0RjZdIGNxYS1weS0xMiBjcWEtc206Y3FhLXB5LTE2IGNxYS1teS1hdXRvIGgtW2NhbGMoMTAwdmgtMzJweCldXCI+XG4gICAgPGRpdiAqbmdJZj1cImN1cnJlbnRWaWV3ID09PSAndmlkZW8nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtbWItNFwiICpuZ0lmPVwidmlkZW9VcmxcIj5cbiAgICAgICAgPHZpZGVvXG4gICAgICAgICAgI3ZwbGF5ZXJcbiAgICAgICAgICBjbGFzcz1cImNxYS1vYmplY3QtY29udGFpbiBjcWEtdy1mdWxsIGNxYS1taW4taC1bMjUwcHhdIGNxYS1tYXgtaC1bY2FsYygxMDBkdmgtMjIwcHgpXSBjcWEtYmxvY2sgY3FhLWJnLWJsYWNrXCJcbiAgICAgICAgICBbc3JjXT1cInZpZGVvVXJsXCJcbiAgICAgICAgICB0eXBlPVwidmlkZW8vd2VibVwiXG4gICAgICAgICAgKGxvYWRlZG1ldGFkYXRhKT1cIm9uVmlkZW9NZXRhZGF0YUxvYWRlZCgpXCJcbiAgICAgICAgICAoY2FucGxheSk9XCJvblZpZGVvQ2FuUGxheSgpXCJcbiAgICAgICAgPjwvdmlkZW8+XG4gICAgICA8L2Rpdj5cbiAgICBcbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcC0xMCBjcWEtdGV4dC1jZW50ZXIgY3FhLXRleHQtZ3JheS00MDAgY3FhLXRleHQtc21cIiAqbmdJZj1cIiF2aWRlb1VybFwiPlxuICAgICAgICBObyB2aWRlbyByZWNvcmRpbmcgZm91bmRcbiAgICAgIDwvZGl2PlxuICAgIFxuICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcHgtMiBjcWEtcHktMiBjcWEtYmctd2hpdGVcIiBzdHlsZT1cImJvcmRlci10b3A6IDFweCBzb2xpZCAjRTVFN0VCO1wiICpuZ0lmPVwidmlkZW9VcmxcIj5cbiAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICBjbGFzcz1cImNxYS1iZy10cmFuc3BhcmVudCBjcWEtYm9yZGVyLW5vbmUgY3FhLWN1cnNvci1wb2ludGVyICFjcWEtcHgtMCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBob3ZlcjpjcWEtb3BhY2l0eS03MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5IGNxYS1vdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBhdXRvO1wiXG4gICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQbGF5KClcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc1BsYXlpbmdcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDJMMTMgOEwzIDE0VjJaXCIgZmlsbD1cIiMzNzQxNTFcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1BsYXlpbmdcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIyXCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwiIzM3NDE1MVwiLz5cbiAgICAgICAgICAgICAgIDxyZWN0IHg9XCIxMFwiIHk9XCIyXCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwiIzM3NDE1MVwiLz5cbiAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgPC9idXR0b24+XG4gICBcbiAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM5Q0EzQUZdIGNxYS10ZXh0LVs5cHhdIGNxYS1mb250LW5vcm1hbCBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLXNlbGVjdC1ub25lIGNxYS1tci1bMjBweF1cIj5cbiAgICAgICAgICAge3sgZm9ybWF0VGltZSh2cGxheWVyPy5uYXRpdmVFbGVtZW50Py5jdXJyZW50VGltZSB8fCAwKSB9fVxuICAgICAgICAgPC9zcGFuPlxuICAgXG4gICAgICAgICA8ZGl2IFxuICAgICAgICAgICAjdGltZWxpbmVCYXJcbiAgICAgICAgICAgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLWgtMSBjcWEtYmctZ3JheS0yMDAgY3FhLXJvdW5kZWQtZnVsbCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLWZsZXgtMVwiXG4gICAgICAgICAgIChjbGljayk9XCJvblRpbWVsaW5lQ2xpY2soJGV2ZW50KVwiIFxuICAgICAgICAgICAobW91c2Vtb3ZlKT1cIm9uRHJhZygkZXZlbnQpXCJcbiAgICAgICAgICAgKG1vdXNldXApPVwic3RvcERyYWcoKVwiIFxuICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzdG9wRHJhZygpXCI+XG4gICAgICAgICAgIFxuICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBNYXJrZXJzXCIgXG4gICAgICAgICAgICAgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXctMSBjcWEtaC1mdWxsIGNxYS10b3AtMCBjcWEtcm91bmRlZC1zbVwiXG4gICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRTdGVwTGVmdFBvc2l0aW9uKHN0ZXApXCJcbiAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRTdGVwQ29sb3Ioc3RlcClcIlxuICAgICAgICAgICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDIwO1wiPlxuICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgXG4gICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLWxlZnQtMCBjcWEtdG9wLTAgY3FhLWgtZnVsbCBjcWEtYmctZ3JlZW4tNTAwIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRyYW5zaXRpb24tW3dpZHRoXSBjcWEtZHVyYXRpb24tMTAwXCJcbiAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJwcm9ncmVzc1wiXG4gICAgICAgICAgICAgc3R5bGU9XCJwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogMjtcIj5cbiAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgIFxuICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS10b3AtMS8yIGNxYS13LTMgY3FhLWgtMyBjcWEtYmctZ3JlZW4tNjAwIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWN1cnNvci1ncmFiIGFjdGl2ZTpjcWEtY3Vyc29yLWdyYWJiaW5nIGNxYS1zaGFkb3ctbWRcIlxuICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwicHJvZ3Jlc3NcIlxuICAgICAgICAgICAgIHN0eWxlPVwidHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IHotaW5kZXg6IDEwO1wiXG4gICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydERyYWcoKVwiPlxuICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50VmlldyA9PT0gJ3NjcmVlbnNob3RzJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLW1iLTRcIiAqbmdJZj1cInNjcmVlblNob3RVcmxcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFtzcmNdPVwic2NyZWVuU2hvdFVybFwiXG4gICAgICAgICAgYWx0PVwiU2NyZWVuc2hvdFwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtb2JqZWN0LWNvbnRhaW4gY3FhLXctZnVsbCBjcWEtbWF4LWgtW2NhbGMoMTAwZHZoLTIyMHB4KV0gY3FhLWJsb2NrIGNxYS1iZy1ibGFjayBjcWEtbXgtYXV0b1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICBcbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcC0xMCBjcWEtdGV4dC1jZW50ZXIgY3FhLXRleHQtZ3JheS00MDAgY3FhLXRleHQtc21cIiAqbmdJZj1cIiFzY3JlZW5TaG90VXJsXCI+XG4gICAgICAgIE5vIHNjcmVlbnNob3QgYXZhaWxhYmxlXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -50,6 +50,11 @@ import { TableTemplateComponent } from './templates/table-template.component';
50
50
  import { TailwindOverlayContainer } from './utils/tw-overlay-container';
51
51
  import { FullTableLoaderComponent } from './full-table-loader/full-table-loader.component';
52
52
  import { TableDataLoaderComponent } from './table-data-loader/table-data-loader.component';
53
+ import { SimulatorComponent } from './simulator/simulator.component';
54
+ import { ConsoleAlertComponent } from './console-alert/console-alert.component';
55
+ import { AiDebugAlertComponent } from './ai-debug-alert/ai-debug-alert.component';
56
+ import { NetworkRequestComponent } from './network-request/network-request.component';
57
+ import { RunHistoryCardComponent } from './run-history-card/run-history-card.component';
53
58
  import * as i0 from "@angular/core";
54
59
  import * as i1 from "@angular/material/icon";
55
60
  export class UiKitModule {
@@ -91,7 +96,12 @@ UiKitModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
91
96
  EmptyStateComponent,
92
97
  TableTemplateComponent,
93
98
  FullTableLoaderComponent,
94
- TableDataLoaderComponent], imports: [CommonModule,
99
+ TableDataLoaderComponent,
100
+ SimulatorComponent,
101
+ ConsoleAlertComponent,
102
+ AiDebugAlertComponent,
103
+ NetworkRequestComponent,
104
+ RunHistoryCardComponent], imports: [CommonModule,
95
105
  FormsModule,
96
106
  ReactiveFormsModule,
97
107
  MatIconModule,
@@ -139,7 +149,12 @@ UiKitModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
139
149
  EmptyStateComponent,
140
150
  TableTemplateComponent,
141
151
  FullTableLoaderComponent,
142
- TableDataLoaderComponent] });
152
+ TableDataLoaderComponent,
153
+ SimulatorComponent,
154
+ ConsoleAlertComponent,
155
+ AiDebugAlertComponent,
156
+ NetworkRequestComponent,
157
+ RunHistoryCardComponent] });
143
158
  UiKitModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UiKitModule, providers: [
144
159
  { provide: OverlayContainer, useClass: TailwindOverlayContainer }
145
160
  ], imports: [[
@@ -198,7 +213,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
198
213
  EmptyStateComponent,
199
214
  TableTemplateComponent,
200
215
  FullTableLoaderComponent,
201
- TableDataLoaderComponent
216
+ TableDataLoaderComponent,
217
+ SimulatorComponent,
218
+ ConsoleAlertComponent,
219
+ AiDebugAlertComponent,
220
+ NetworkRequestComponent,
221
+ RunHistoryCardComponent
202
222
  ],
203
223
  imports: [
204
224
  CommonModule,
@@ -252,11 +272,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
252
272
  EmptyStateComponent,
253
273
  TableTemplateComponent,
254
274
  FullTableLoaderComponent,
255
- TableDataLoaderComponent
275
+ TableDataLoaderComponent,
276
+ SimulatorComponent,
277
+ ConsoleAlertComponent,
278
+ AiDebugAlertComponent,
279
+ NetworkRequestComponent,
280
+ RunHistoryCardComponent
256
281
  ],
257
282
  providers: [
258
283
  { provide: OverlayContainer, useClass: TailwindOverlayContainer }
259
284
  ]
260
285
  }]
261
286
  }], ctorParameters: function () { return [{ type: i1.MatIconRegistry }]; } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkta2l0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdWkta2l0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJB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O3dCQUNiLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQiw0QkFBNEI7d0JBQzVCLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3dCQUM3QixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3dCQUM1QiwyQkFBMkI7d0JBQzNCLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7cUJBQ2xFO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSwgT3ZlcmxheUNvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlZ21lbnRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9zZWdtZW50LWNvbnRyb2wvc2VnbWVudC1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljQ2VsbFRlbXBsYXRlRGlyZWN0aXZlLCBEeW5hbWljSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEeW5hbWljQ2VsbENvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLWNlbGwtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvbk1lbnVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2FjdGlvbi1tZW51L2FjdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPdGhlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vb3RoZXItYnV0dG9uL290aGVyLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9maWx0ZXJzL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGVyYW5nZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2x1bW5WaXNpYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW4tdmlzaWJpbGl0eS9jb2x1bW4tdmlzaWJpbGl0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBY3Rpb25Ub29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1hY3Rpb24tdG9vbGJhci90YWJsZS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljc0NhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvbWV0cmljcy1jYXJkL21ldHJpY3MtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljc0Jsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL21ldHJpY3MtY2FyZC9tZXRyaWNzLWJsb2NrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFydENhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvY2hhcnQtY2FyZC9jaGFydC1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9ncmVzc1RleHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL3Byb2dyZXNzLXRleHQtY2FyZC9wcm9ncmVzcy10ZXh0LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9kYXNoYm9hcmQtaGVhZGVyL2Rhc2hib2FyZC1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvdmVyYWdlTW9kdWxlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9jb3ZlcmFnZS1tb2R1bGUtY2FyZC9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdERpc3RyaWJ1dGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0ZWRGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3RlZC1maWx0ZXJzL3NlbGVjdGVkLWZpbHRlcnMuY29tcG9uZW50JztcbmltcG9ydCB7IEluc2lnaHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2luc2lnaHQtY2FyZC9pbnNpZ2h0LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJvcGRvd25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWJ1dHRvbi9kcm9wZG93bi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEhlYXRFcnJvck1hcENlbGxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvaGVhdC1lcnJvci1tYXAtY2VsbC9oZWF0LWVycm9yLW1hcC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdGVtcGxhdGVzL3RhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWlsd2luZE92ZXJsYXlDb250YWluZXIgfSBmcm9tICcuL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyJztcbmltcG9ydCB7IEZ1bGxUYWJsZUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZnVsbC10YWJsZS1sb2FkZXIvZnVsbC10YWJsZS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlRGF0YUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtZGF0YS1sb2FkZXIvdGFibGUtZGF0YS1sb2FkZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFNlYXJjaEJhckNvbXBvbmVudCxcbiAgICBTZWdtZW50Q29udHJvbENvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRHluYW1pY1RhYmxlQ29tcG9uZW50LFxuICAgIER5bmFtaWNDZWxsVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRHluYW1pY0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIER5bmFtaWNDZWxsQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgQWN0aW9uTWVudUJ1dHRvbkNvbXBvbmVudCxcbiAgICBPdGhlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBEeW5hbWljRmlsdGVyQ29tcG9uZW50LFxuICAgIERhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSxcbiAgICBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQsXG4gICAgQ29sdW1uVmlzaWJpbGl0eUNvbXBvbmVudCxcbiAgICBUYWJsZUFjdGlvblRvb2xiYXJDb21wb25lbnQsXG4gICAgTWV0cmljc0NhcmRDb21wb25lbnQsXG4gICAgTWV0cmljc0Jsb2NrQ29tcG9uZW50LFxuICAgIENoYXJ0Q2FyZENvbXBvbmVudCxcbiAgICBQcm9ncmVzc1RleHRDYXJkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZEhlYWRlckNvbXBvbmVudCxcbiAgICBDb3ZlcmFnZU1vZHVsZUNhcmRDb21wb25lbnQsXG4gICAgVGVzdERpc3RyaWJ1dGlvbkNhcmRDb21wb25lbnQsXG4gICAgRmFpbGVkVGVzdENhc2VzQ2FyZENvbXBvbmVudCxcbiAgICBEeW5hbWljU2VsZWN0RmllbGRDb21wb25lbnQsXG4gICAgU2VsZWN0ZWRGaWx0ZXJzQ29tcG9uZW50LFxuICAgIEluc2lnaHRDYXJkQ29tcG9uZW50LFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIERyb3Bkb3duQnV0dG9uQ29tcG9uZW50LFxuICAgIEhlYXRFcnJvck1hcENlbGxDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBUYWJsZVRlbXBsYXRlQ29tcG9uZW50LFxuICAgIEZ1bGxUYWJsZUxvYWRlckNvbXBvbmVudCxcbiAgICBUYWJsZURhdGFMb2FkZXJDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgU2VhcmNoQmFyQ29tcG9uZW50LFxuICAgIFNlZ21lbnRDb250cm9sQ29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEeW5hbWljVGFibGVDb21wb25lbnQsXG4gICAgRHluYW1pY0NlbGxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEeW5hbWljSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRHluYW1pY0NlbGxDb250YWluZXJEaXJlY3RpdmUsXG4gICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBBY3Rpb25NZW51QnV0dG9uQ29tcG9uZW50LFxuICAgIE90aGVyQnV0dG9uQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWx0ZXJDb21wb25lbnQsXG4gICAgRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLFxuICAgIERhdGVyYW5nZXBpY2tlckNvbXBvbmVudCxcbiAgICBDb2x1bW5WaXNpYmlsaXR5Q29tcG9uZW50LFxuICAgIFRhYmxlQWN0aW9uVG9vbGJhckNvbXBvbmVudCxcbiAgICBNZXRyaWNzQ2FyZENvbXBvbmVudCxcbiAgICBDaGFydENhcmRDb21wb25lbnQsXG4gICAgUHJvZ3Jlc3NUZXh0Q2FyZENvbXBvbmVudCxcbiAgICBEYXNoYm9hcmRIZWFkZXJDb21wb25lbnQsXG4gICAgQ292ZXJhZ2VNb2R1bGVDYXJkQ29tcG9uZW50LFxuICAgIFRlc3REaXN0cmlidXRpb25DYXJkQ29tcG9uZW50LFxuICAgIEZhaWxlZFRlc3RDYXNlc0NhcmRDb21wb25lbnQsXG4gICAgRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50LFxuICAgIFNlbGVjdGVkRmlsdGVyc0NvbXBvbmVudCxcbiAgICBJbnNpZ2h0Q2FyZENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICBIZWF0RXJyb3JNYXBDZWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICBGdWxsVGFibGVMb2FkZXJDb21wb25lbnQsXG4gICAgVGFibGVEYXRhTG9hZGVyQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogT3ZlcmxheUNvbnRhaW5lciwgdXNlQ2xhc3M6IFRhaWx3aW5kT3ZlcmxheUNvbnRhaW5lciB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVWlLaXRNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSkge1xuICAgIGljb25SZWdpc3RyeS5yZWdpc3RlckZvbnRDbGFzc0FsaWFzKCdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJywgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnKTtcbiAgfVxufVxuXG4iXX0=
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkta2l0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdWkta2l0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ3JILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ3BILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBMkd4RixNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFZLFlBQTZCO1FBQ3ZDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQywyQkFBMkIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7O3dHQUhVLFdBQVc7eUdBQVgsV0FBVyxpQkF2R3BCLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZixxQkFBcUI7UUFDckIsNEJBQTRCO1FBQzVCLDhCQUE4QjtRQUM5Qiw2QkFBNkI7UUFDN0IsbUJBQW1CO1FBQ25CLHlCQUF5QjtRQUN6QixvQkFBb0I7UUFDcEIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIseUJBQXlCO1FBQ3pCLDJCQUEyQjtRQUMzQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQix5QkFBeUI7UUFDekIsd0JBQXdCO1FBQ3hCLDJCQUEyQjtRQUMzQiw2QkFBNkI7UUFDN0IsNEJBQTRCO1FBQzVCLDJCQUEyQjtRQUMzQix3QkFBd0I7UUFDeEIsb0JBQW9CO1FBQ3BCLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIseUJBQXlCO1FBQ3pCLG1CQUFtQjtRQUNuQixzQkFBc0I7UUFDdEIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4QixrQkFBa0I7UUFDbEIscUJBQXFCO1FBQ3JCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsdUJBQXVCLGFBR3ZCLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixhQUFhO1FBQ2IsZUFBZTtRQUNmLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixZQUFZLGFBR1osZUFBZTtRQUNmLGtCQUFrQjtRQUNsQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLHFCQUFxQjtRQUNyQiw0QkFBNEI7UUFDNUIsOEJBQThCO1FBQzlCLDZCQUE2QjtRQUM3QixtQkFBbUI7UUFDbkIseUJBQXlCO1FBQ3pCLG9CQUFvQjtRQUNwQixzQkFBc0I7UUFDdEIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qix5QkFBeUI7UUFDekIsMkJBQTJCO1FBQzNCLG9CQUFvQjtRQUNwQixrQkFBa0I7UUFDbEIseUJBQXlCO1FBQ3pCLHdCQUF3QjtRQUN4QiwyQkFBMkI7UUFDM0IsNkJBQTZCO1FBQzdCLDRCQUE0QjtRQUM1QiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLG9CQUFvQjtRQUNwQixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixtQkFBbUI7UUFDbkIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLHVCQUF1Qjt5R0FNZCxXQUFXLGFBSlg7UUFDVCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7S0FDbEUsWUE3RFE7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsYUFBYTtZQUNiLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsd0JBQXdCO1lBQ3hCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsWUFBWTtTQUNiOzJGQTZDVSxXQUFXO2tCQXpHdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsMkJBQTJCO3dCQUMzQixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQix5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQiw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsMkJBQTJCO3dCQUMzQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCx1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHVCQUF1QjtxQkFDeEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsMkJBQTJCO3dCQUMzQixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3Qiw0QkFBNEI7d0JBQzVCLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3dCQUN4QixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7cUJBQ3hCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7cUJBQ2xFO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSwgT3ZlcmxheUNvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlZ21lbnRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9zZWdtZW50LWNvbnRyb2wvc2VnbWVudC1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljQ2VsbFRlbXBsYXRlRGlyZWN0aXZlLCBEeW5hbWljSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEeW5hbWljQ2VsbENvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLWNlbGwtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvbk1lbnVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2FjdGlvbi1tZW51L2FjdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPdGhlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vb3RoZXItYnV0dG9uL290aGVyLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9maWx0ZXJzL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGVyYW5nZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2x1bW5WaXNpYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW4tdmlzaWJpbGl0eS9jb2x1bW4tdmlzaWJpbGl0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBY3Rpb25Ub29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1hY3Rpb24tdG9vbGJhci90YWJsZS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljc0NhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvbWV0cmljcy1jYXJkL21ldHJpY3MtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljc0Jsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL21ldHJpY3MtY2FyZC9tZXRyaWNzLWJsb2NrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFydENhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvY2hhcnQtY2FyZC9jaGFydC1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9ncmVzc1RleHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL3Byb2dyZXNzLXRleHQtY2FyZC9wcm9ncmVzcy10ZXh0LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9kYXNoYm9hcmQtaGVhZGVyL2Rhc2hib2FyZC1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvdmVyYWdlTW9kdWxlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9jb3ZlcmFnZS1tb2R1bGUtY2FyZC9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdERpc3RyaWJ1dGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0ZWRGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3RlZC1maWx0ZXJzL3NlbGVjdGVkLWZpbHRlcnMuY29tcG9uZW50JztcbmltcG9ydCB7IEluc2lnaHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2luc2lnaHQtY2FyZC9pbnNpZ2h0LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJvcGRvd25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWJ1dHRvbi9kcm9wZG93bi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEhlYXRFcnJvck1hcENlbGxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvaGVhdC1lcnJvci1tYXAtY2VsbC9oZWF0LWVycm9yLW1hcC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdGVtcGxhdGVzL3RhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWlsd2luZE92ZXJsYXlDb250YWluZXIgfSBmcm9tICcuL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyJztcbmltcG9ydCB7IEZ1bGxUYWJsZUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZnVsbC10YWJsZS1sb2FkZXIvZnVsbC10YWJsZS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlRGF0YUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtZGF0YS1sb2FkZXIvdGFibGUtZGF0YS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNpbXVsYXRvckNvbXBvbmVudCB9IGZyb20gJy4vc2ltdWxhdG9yL3NpbXVsYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uc29sZUFsZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jb25zb2xlLWFsZXJ0L2NvbnNvbGUtYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFpRGVidWdBbGVydENvbXBvbmVudCB9IGZyb20gJy4vYWktZGVidWctYWxlcnQvYWktZGVidWctYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IE5ldHdvcmtSZXF1ZXN0Q29tcG9uZW50IH0gZnJvbSAnLi9uZXR3b3JrLXJlcXVlc3QvbmV0d29yay1yZXF1ZXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdW5IaXN0b3J5Q2FyZENvbXBvbmVudCB9IGZyb20gJy4vcnVuLWhpc3RvcnktY2FyZC9ydW4taGlzdG9yeS1jYXJkLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTZWFyY2hCYXJDb21wb25lbnQsXG4gICAgU2VnbWVudENvbnRyb2xDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIER5bmFtaWNUYWJsZUNvbXBvbmVudCxcbiAgICBEeW5hbWljQ2VsbFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIER5bmFtaWNIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEeW5hbWljQ2VsbENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIEFjdGlvbk1lbnVCdXR0b25Db21wb25lbnQsXG4gICAgT3RoZXJCdXR0b25Db21wb25lbnQsXG4gICAgRHluYW1pY0ZpbHRlckNvbXBvbmVudCxcbiAgICBEYXRlcmFuZ2VwaWNrZXJEaXJlY3RpdmUsXG4gICAgRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50LFxuICAgIENvbHVtblZpc2liaWxpdHlDb21wb25lbnQsXG4gICAgVGFibGVBY3Rpb25Ub29sYmFyQ29tcG9uZW50LFxuICAgIE1ldHJpY3NDYXJkQ29tcG9uZW50LFxuICAgIE1ldHJpY3NCbG9ja0NvbXBvbmVudCxcbiAgICBDaGFydENhcmRDb21wb25lbnQsXG4gICAgUHJvZ3Jlc3NUZXh0Q2FyZENvbXBvbmVudCxcbiAgICBEYXNoYm9hcmRIZWFkZXJDb21wb25lbnQsXG4gICAgQ292ZXJhZ2VNb2R1bGVDYXJkQ29tcG9uZW50LFxuICAgIFRlc3REaXN0cmlidXRpb25DYXJkQ29tcG9uZW50LFxuICAgIEZhaWxlZFRlc3RDYXNlc0NhcmRDb21wb25lbnQsXG4gICAgRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50LFxuICAgIFNlbGVjdGVkRmlsdGVyc0NvbXBvbmVudCxcbiAgICBJbnNpZ2h0Q2FyZENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICBIZWF0RXJyb3JNYXBDZWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICBGdWxsVGFibGVMb2FkZXJDb21wb25lbnQsXG4gICAgVGFibGVEYXRhTG9hZGVyQ29tcG9uZW50LFxuICAgIFNpbXVsYXRvckNvbXBvbmVudCxcbiAgICBDb25zb2xlQWxlcnRDb21wb25lbnQsXG4gICAgQWlEZWJ1Z0FsZXJ0Q29tcG9uZW50LFxuICAgIE5ldHdvcmtSZXF1ZXN0Q29tcG9uZW50LFxuICAgIFJ1bkhpc3RvcnlDYXJkQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFBvcnRhbE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFNlYXJjaEJhckNvbXBvbmVudCxcbiAgICBTZWdtZW50Q29udHJvbENvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRHluYW1pY1RhYmxlQ29tcG9uZW50LFxuICAgIER5bmFtaWNDZWxsVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRHluYW1pY0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIER5bmFtaWNDZWxsQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgQWN0aW9uTWVudUJ1dHRvbkNvbXBvbmVudCxcbiAgICBPdGhlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBEeW5hbWljRmlsdGVyQ29tcG9uZW50LFxuICAgIERhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSxcbiAgICBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQsXG4gICAgQ29sdW1uVmlzaWJpbGl0eUNvbXBvbmVudCxcbiAgICBUYWJsZUFjdGlvblRvb2xiYXJDb21wb25lbnQsXG4gICAgTWV0cmljc0NhcmRDb21wb25lbnQsXG4gICAgQ2hhcnRDYXJkQ29tcG9uZW50LFxuICAgIFByb2dyZXNzVGV4dENhcmRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkSGVhZGVyQ29tcG9uZW50LFxuICAgIENvdmVyYWdlTW9kdWxlQ2FyZENvbXBvbmVudCxcbiAgICBUZXN0RGlzdHJpYnV0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50LFxuICAgIER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCxcbiAgICBTZWxlY3RlZEZpbHRlcnNDb21wb25lbnQsXG4gICAgSW5zaWdodENhcmRDb21wb25lbnQsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgRHJvcGRvd25CdXR0b25Db21wb25lbnQsXG4gICAgSGVhdEVycm9yTWFwQ2VsbENvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFRhYmxlVGVtcGxhdGVDb21wb25lbnQsXG4gICAgRnVsbFRhYmxlTG9hZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlRGF0YUxvYWRlckNvbXBvbmVudCxcbiAgICBTaW11bGF0b3JDb21wb25lbnQsXG4gICAgQ29uc29sZUFsZXJ0Q29tcG9uZW50LFxuICAgIEFpRGVidWdBbGVydENvbXBvbmVudCxcbiAgICBOZXR3b3JrUmVxdWVzdENvbXBvbmVudCxcbiAgICBSdW5IaXN0b3J5Q2FyZENvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE92ZXJsYXlDb250YWluZXIsIHVzZUNsYXNzOiBUYWlsd2luZE92ZXJsYXlDb250YWluZXIgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFVpS2l0TW9kdWxlIHtcbiAgY29uc3RydWN0b3IoaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnkpIHtcbiAgICBpY29uUmVnaXN0cnkucmVnaXN0ZXJGb250Q2xhc3NBbGlhcygnbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCcsICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJyk7XG4gIH1cbn1cblxuIl19