@bizdoc/core 2.3.35 → 2.3.39

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.
Files changed (36) hide show
  1. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +3 -4
  2. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +5 -4
  3. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +3 -3
  4. package/esm2022/lib/admin/utility.pane.component.mjs +10 -12
  5. package/esm2022/lib/browse/browse.pane.component.mjs +3 -3
  6. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
  7. package/esm2022/lib/core/animations.mjs +5 -2
  8. package/esm2022/lib/core/slots/slots.component.mjs +3 -3
  9. package/esm2022/lib/core/sticky-toolbar.exp.mjs +30 -0
  10. package/esm2022/lib/core/translations.mjs +6 -2
  11. package/esm2022/lib/core/virtual-tabs.component.exp.mjs +84 -0
  12. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  13. package/esm2022/lib/cube/filter/filter.component.mjs +3 -3
  14. package/esm2022/lib/modules/chart.module.mjs +3 -3
  15. package/esm2022/lib/options/options.component.mjs +3 -3
  16. package/esm2022/lib/reports/cube/role-performance.component.mjs +152 -33
  17. package/esm2022/lib/reports/cube/role-performance1.component.mjs +178 -0
  18. package/esm2022/lib/reports/report-viewer.component.mjs +10 -6
  19. package/esm2022/lib/reports/report.pane.component.mjs +2 -2
  20. package/esm2022/lib/shared.module.mjs +11 -9
  21. package/esm2022/public-api.mjs +3 -2
  22. package/fesm2022/bizdoc-core.mjs +440 -75
  23. package/fesm2022/bizdoc-core.mjs.map +1 -1
  24. package/lib/admin/architecture/elements/performance-report.component.d.ts +0 -1
  25. package/lib/admin/utility.pane.component.d.ts +2 -2
  26. package/lib/core/translations.d.ts +4 -0
  27. package/lib/core/virtual-tabs.component.exp.d.ts +22 -0
  28. package/lib/reports/cube/role-performance.component.d.ts +35 -21
  29. package/lib/reports/cube/role-performance1.component.d.ts +49 -0
  30. package/lib/reports/report-viewer.component.d.ts +1 -1
  31. package/lib/reports/report.pane.component.d.ts +1 -1
  32. package/lib/shared.module.d.ts +195 -193
  33. package/package.json +1 -1
  34. package/public-api.d.ts +2 -1
  35. package/esm2022/lib/core/StickyToolbar.mjs +0 -30
  36. /package/lib/core/{StickyToolbar.d.ts → sticky-toolbar.exp.d.ts} +0 -0
@@ -134,11 +134,11 @@ export class BrowsePaneComponent {
134
134
  this._destroy.complete();
135
135
  }
136
136
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BrowsePaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.SessionService }, { token: i3.Popup }, { token: i4.PanesRouter }, { token: i5.Directionality }, { token: i6.TranslateService }, { token: i7.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: BrowsePaneComponent, selector: "bizdoc-browse.pane", host: { listeners: { "document:keydown": "handleKeydown($event)" } }, viewQueries: [{ propertyName: "items", first: true, predicate: BrowseItemsComponent, descendants: true, static: true }, { propertyName: "filterEl", first: true, predicate: ["filterEl"], descendants: true, read: ElementRef }, { propertyName: "search", first: true, predicate: ["searchEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\n @if (!items.selection.isEmpty()) {\n <!--<button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>-->\n @if (items.isAllDraft()) {\n <button mat-icon-button (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\n <button mat-button color=\"primary\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\n }\n @if (items.sharedActions.length === 1) {\n <button mat-button color=\"primary\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\">\n @if (items.sharedActions[0].icon) {\n <mat-icon>{{items.sharedActions[0].icon}}</mat-icon>\n }{{'SendSelected' | translate : items.selection.selected.length}}\n </button>\n }\n @else if (items.sharedActions.length > 1) {\n <button mat-button color=\"primary\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\n {{'SendSelected'| translate : items.selection.selected.length }}\n </button>\n <mat-menu #action>\n @for (a of items.sharedActions | sort : 'group'; track a; let i = $index) {\n @if (i > 0 && items.sharedActions[i-1].group !== a.group) {\n <mat-divider>\n </mat-divider>\n }\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\n {{ a.title }}\n </button>\n }\n </mat-menu>\n }\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n } @else {\n <!--<button mat-icon-button (click)=\"openSearch()\"\n [bizdocTooltip]=\"'Search'|translate\" class=\"tool\">\n <mat-icon>search</mat-icon>\n </button>\n [@search]=\"searching\"\n (@search.done)=\"searching && focus()\"-->\n <input matInput\n [formControl]=\"contains\" autocomplete=\"off\" placeholder=\"{{'SearchFolders' | translate}}\"\n class=\"mat-body search-box\"\n #searchEl\n (keydown.escape)=\"clearSearch($event)\">\n @if (contains.value) {\n <mat-icon (click)=\"clearSearch()\">close</mat-icon>\n }\n <span class=\"divider\"></span>\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\" #filterEl><mat-icon>filter_list</mat-icon></button>\n }\n</mat-toolbar>\n<bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\"\n (open)=\"open($event)\" (view)=\"view($event) \" #items></bizdoc-browse-items>\n", styles: [":host{min-width:540px;display:contents!important}\n"], dependencies: [{ kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i10.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i14.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i14.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i15.BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: ["folderId", "filterType", "filters"], outputs: ["open", "view"] }, { kind: "directive", type: i16.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i17.ArraySortPipe, name: "sort" }, { kind: "pipe", type: i18.TranslatePipe, name: "translate" }], animations: [searchAnimation] }); }
137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: BrowsePaneComponent, selector: "bizdoc-browse.pane", host: { listeners: { "document:keydown": "handleKeydown($event)" } }, viewQueries: [{ propertyName: "items", first: true, predicate: BrowseItemsComponent, descendants: true, static: true }, { propertyName: "filterEl", first: true, predicate: ["filterEl"], descendants: true, read: ElementRef }, { propertyName: "search", first: true, predicate: ["searchEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\n @if (!items.selection.isEmpty()) {\n <!--<button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>-->\n @if (items.isAllDraft()) {\n <button mat-icon-button (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\n <button mat-button color=\"primary\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\n }\n @if (items.sharedActions.length === 1) {\n <button mat-button color=\"primary\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\">\n @if (items.sharedActions[0].icon) {\n <mat-icon>{{items.sharedActions[0].icon}}</mat-icon>\n }{{'SendSelected' | translate : items.selection.selected.length}}\n </button>\n }\n @else if (items.sharedActions.length > 1) {\n <button mat-button color=\"primary\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\n {{'SendSelected'| translate : items.selection.selected.length }}\n </button>\n <mat-menu #action>\n @for (a of items.sharedActions | sort : 'group'; track a; let i = $index) {\n @if (i > 0 && items.sharedActions[i-1].group !== a.group) {\n <mat-divider>\n </mat-divider>\n }\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\n {{ a.title }}\n </button>\n }\n </mat-menu>\n }\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n } @else {\n <!--<button mat-icon-button (click)=\"openSearch()\"\n [bizdocTooltip]=\"'Search'|translate\" class=\"tool\">\n <mat-icon>search</mat-icon>\n </button>\n [@search]=\"searching\"\n (@search.done)=\"searching && focus()\"-->\n <input matInput\n [formControl]=\"contains\" autocomplete=\"off\" placeholder=\"{{'SearchFolders' | translate}}\"\n class=\"mat-body search-box\"\n #searchEl\n (keydown.escape)=\"clearSearch($event)\">\n @if (contains.value) {\n <mat-icon (click)=\"clearSearch()\">close</mat-icon>\n }\n <span class=\"divider\"></span>\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\" #filterEl><mat-icon>filter_list</mat-icon></button>\n }\n</mat-toolbar>\n<bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\"\n (open)=\"open($event)\" (view)=\"view($event) \" #items></bizdoc-browse-items>\n", styles: [""], dependencies: [{ kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i10.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i14.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i14.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i15.BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: ["folderId", "filterType", "filters"], outputs: ["open", "view"] }, { kind: "directive", type: i16.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i17.ArraySortPipe, name: "sort" }, { kind: "pipe", type: i18.TranslatePipe, name: "translate" }], animations: [searchAnimation] }); }
138
138
  }
139
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BrowsePaneComponent, decorators: [{
140
140
  type: Component,
141
- args: [{ selector: 'bizdoc-browse.pane', animations: [searchAnimation], template: "<mat-toolbar class=\"nav-toolbar\">\n @if (!items.selection.isEmpty()) {\n <!--<button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>-->\n @if (items.isAllDraft()) {\n <button mat-icon-button (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\n <button mat-button color=\"primary\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\n }\n @if (items.sharedActions.length === 1) {\n <button mat-button color=\"primary\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\">\n @if (items.sharedActions[0].icon) {\n <mat-icon>{{items.sharedActions[0].icon}}</mat-icon>\n }{{'SendSelected' | translate : items.selection.selected.length}}\n </button>\n }\n @else if (items.sharedActions.length > 1) {\n <button mat-button color=\"primary\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\n {{'SendSelected'| translate : items.selection.selected.length }}\n </button>\n <mat-menu #action>\n @for (a of items.sharedActions | sort : 'group'; track a; let i = $index) {\n @if (i > 0 && items.sharedActions[i-1].group !== a.group) {\n <mat-divider>\n </mat-divider>\n }\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\n {{ a.title }}\n </button>\n }\n </mat-menu>\n }\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n } @else {\n <!--<button mat-icon-button (click)=\"openSearch()\"\n [bizdocTooltip]=\"'Search'|translate\" class=\"tool\">\n <mat-icon>search</mat-icon>\n </button>\n [@search]=\"searching\"\n (@search.done)=\"searching && focus()\"-->\n <input matInput\n [formControl]=\"contains\" autocomplete=\"off\" placeholder=\"{{'SearchFolders' | translate}}\"\n class=\"mat-body search-box\"\n #searchEl\n (keydown.escape)=\"clearSearch($event)\">\n @if (contains.value) {\n <mat-icon (click)=\"clearSearch()\">close</mat-icon>\n }\n <span class=\"divider\"></span>\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\" #filterEl><mat-icon>filter_list</mat-icon></button>\n }\n</mat-toolbar>\n<bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\"\n (open)=\"open($event)\" (view)=\"view($event) \" #items></bizdoc-browse-items>\n", styles: [":host{min-width:540px;display:contents!important}\n"] }]
141
+ args: [{ selector: 'bizdoc-browse.pane', animations: [searchAnimation], template: "<mat-toolbar class=\"nav-toolbar\">\n @if (!items.selection.isEmpty()) {\n <!--<button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>-->\n @if (items.isAllDraft()) {\n <button mat-icon-button (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\n <button mat-button color=\"primary\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\n }\n @if (items.sharedActions.length === 1) {\n <button mat-button color=\"primary\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\">\n @if (items.sharedActions[0].icon) {\n <mat-icon>{{items.sharedActions[0].icon}}</mat-icon>\n }{{'SendSelected' | translate : items.selection.selected.length}}\n </button>\n }\n @else if (items.sharedActions.length > 1) {\n <button mat-button color=\"primary\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\n {{'SendSelected'| translate : items.selection.selected.length }}\n </button>\n <mat-menu #action>\n @for (a of items.sharedActions | sort : 'group'; track a; let i = $index) {\n @if (i > 0 && items.sharedActions[i-1].group !== a.group) {\n <mat-divider>\n </mat-divider>\n }\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\n {{ a.title }}\n </button>\n }\n </mat-menu>\n }\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n } @else {\n <!--<button mat-icon-button (click)=\"openSearch()\"\n [bizdocTooltip]=\"'Search'|translate\" class=\"tool\">\n <mat-icon>search</mat-icon>\n </button>\n [@search]=\"searching\"\n (@search.done)=\"searching && focus()\"-->\n <input matInput\n [formControl]=\"contains\" autocomplete=\"off\" placeholder=\"{{'SearchFolders' | translate}}\"\n class=\"mat-body search-box\"\n #searchEl\n (keydown.escape)=\"clearSearch($event)\">\n @if (contains.value) {\n <mat-icon (click)=\"clearSearch()\">close</mat-icon>\n }\n <span class=\"divider\"></span>\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\" #filterEl><mat-icon>filter_list</mat-icon></button>\n }\n</mat-toolbar>\n<bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\"\n (open)=\"open($event)\" (view)=\"view($event) \" #items></bizdoc-browse-items>\n" }]
142
142
  }], ctorParameters: () => [{ type: i1.PaneRef }, { type: i2.SessionService }, { type: i3.Popup }, { type: i4.PanesRouter }, { type: i5.Directionality }, { type: i6.TranslateService }, { type: i7.MatDialog }], propDecorators: { items: [{
143
143
  type: ViewChild,
144
144
  args: [BrowseItemsComponent, { static: true }]
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
152
152
  type: HostListener,
153
153
  args: ['document:keydown', ['$event']]
154
154
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlLnBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvYnJvd3NlLnBhbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvYnJvd3NlLnBhbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRSxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFzQixlQUFlLEVBQUUsZUFBZSxFQUFXLE1BQU0sd0JBQXdCLENBQUM7QUFDeEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNyRCxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixrQkFBa0I7SUFDbEIsWUFDVSxLQUFtQyxFQUNuQyxRQUF3QixFQUN4QixNQUFhLEVBQ2IsT0FBb0IsRUFDcEIsZUFBK0IsRUFDL0IsVUFBNEIsRUFDNUIsT0FB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QUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDckMsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNoQyxJQUFJO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0F2SFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsdUtBQ25CLG9CQUFvQixnSUFDQSxVQUFVLDZGQUNWLFVBQVUsNkJDN0IzQyx1MUhBdURBLGsxRkRoQ2MsQ0FBQyxlQUFlLENBQUM7OzJGQUdsQixtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLENBQUMsZUFBZSxDQUFDOzJPQUlzQixLQUFLO3NCQUF2RCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSixRQUFRO3NCQUFwRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ0UsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXlEM0MsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGb2xkZXIsIFJlY2lwaWVudE1vZGVsIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25EaWFsb2csIEFjdGlvbkRpYWxvZ0RhdGEgfSBmcm9tICcuLi9jb21wb3NlL2FjdGlvbi9hY3Rpb24uZGlhbG9nJztcclxuaW1wb3J0IHsgQnJvd3NlRmlsdGVyQXJncywgQnJvd3NlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25Gb2N1cywgTmF2aWdhdGlvblBhbmVCYXNlLCBOYXZpZ2F0aW9uU3RhcnQsIFBhcmFtTmF2aWdhdGlvbiwgUGFuZVJlZiB9IGZyb20gJy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBCcm93c2VJdGVtc0NvbXBvbmVudCB9IGZyb20gJy4vYnJvd3NlLWl0ZW1zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vY29yZS9wb3B1cC9wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9zZVBhbmVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb3NlL2NvbXBvc2UucGFuZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgc2VhcmNoQW5pbWF0aW9uIH0gZnJvbSAnLi4vY29yZS9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYnJvd3NlLnBhbmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9icm93c2UucGFuZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnJvd3NlLnBhbmUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbc2VhcmNoQW5pbWF0aW9uXVxyXG59KVxyXG4vKiogYnJvd3NlIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VQYW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKEJyb3dzZUl0ZW1zQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBpdGVtczogQnJvd3NlSXRlbXNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyRWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZmlsdGVyRWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEVsJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNlYXJjaDogRWxlbWVudFJlZjtcclxuICBmb2xkZXJJZDogc3RyaW5nO1xyXG4gIGZpbHRlclR5cGU6IEZpbHRlclR5cGU7XHJcbiAgZmlsdGVyczogQnJvd3NlRmlsdGVyQXJncztcclxuICBzZWFyY2hpbmcgPSBmYWxzZTtcclxuICBwYWdlU2l6ZTogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IGNvbnRhaW5zID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgLyoqIGJyb3dzZSBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPEJyb3dzZVBhbmVDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wb3B1cDogUG9wdXAsXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYW5lLnBhcmFtc0NoYW5nZSgpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgdGhpcy5mb2xkZXJJZCA9IHBbJ2lkJ107XHJcbiAgICAgIGlmICh0aGlzLmZvbGRlcklkKSB0aGlzLl9wYW5lLnRpdGxlID0gdGhpcy5mb2xkZXIudGl0bGU7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucXVlcnlQYXJhbXNDaGFuZ2UoKS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVHlwZSA9IHBbJ3R5cGUnXTtcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gJ2ZsYWdnZWQnKVxyXG4gICAgICAgIHRoaXMuX3BhbmUudGl0bGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdGbGFnZ2VkJyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBpZiAocFsndGFnJ10pXHJcbiAgICAgICAgICB0aGlzLl9wYW5lLnRpdGxlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnVGFncycpO1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSBwO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBmaWx0ZXIoZSA9PiAoZSBpbnN0YW5jZW9mIFBhcmFtTmF2aWdhdGlvbiB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRm9jdXMpXHJcbiAgICAgICAgJiYgZS5wYW5lLl9wb3J0YWwuY29tcG9uZW50ID09PSBDb21wb3NlUGFuZUNvbXBvbmVudCkpLlxyXG4gICAgICBzdWJzY3JpYmUoKGU6IE5hdmlnYXRpb25QYW5lQmFzZTxDb21wb3NlUGFuZUNvbXBvbmVudD4pID0+XHJcbiAgICAgICAgdGhpcy5pdGVtcy5zZWxlY3QoZS5wYW5lLmRhdGEuaXRlbS5pZClcclxuICAgICAgKTtcclxuICAgIHRoaXMuY29udGFpbnMudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKHYgPT4gdGhpcy5maWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMsIGNvbnRhaW5zOiB2IH0pO1xyXG4gIH1cclxuICBnZXQgZm9sZGVyKCk6IEZvbGRlciB7IHJldHVybiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSB0aGlzLmZvbGRlcklkKTsgfVxyXG5cclxuICBvcGVuRmlsdGVyKGV2dD86IEV2ZW50KSB7XHJcbiAgICAvL3RoaXMuZmlsdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgdGhpcy5fcG9wdXAub3BlbihCcm93c2VGaWx0ZXJDb21wb25lbnQsIHRoaXMuZmlsdGVyRWwubmF0aXZlRWxlbWVudCwgeyBwb3NpdGlvbjogJ2VuZCcgfSkuXHJcbiAgICAgIG9wZW5lZCgpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICBlLmZvbGRlcklkID0gdGhpcy5mb2xkZXJJZDtcclxuICAgICAgICBlLnZhbHVlcyA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICBlLmV4Y2x1ZGUgPSBbJ2NvbnRhaW5zJ107XHJcbiAgICAgICAgZS52YWx1ZXNDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh2ID0+IHRoaXMuZmlsdGVycyA9IHYpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAqIEFsdC1zLCBBbHQtcVxyXG4gKiBAcGFyYW0gZXZlbnRcclxuICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmFsdEtleSkge1xyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAncycgfHwgZXZlbnQua2V5ID09PSAnUycpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdxJyB8fCBldmVudC5rZXkgPT09ICdRJykge1xyXG4gICAgICAgIHRoaXMub3BlbkZpbHRlcigpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb3BlblNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoaW5nID0gIXRoaXMuc2VhcmNoaW5nO1xyXG4gICAgdGhpcy5zZWFyY2hpbmcgJiZcclxuICAgICAgdGhpcy5zZWFyY2gubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuICBjbGVhclNlYXJjaChldnQ/OiBFdmVudCkge1xyXG4gICAgdGhpcy5jb250YWlucy5zZXRWYWx1ZShudWxsKTtcclxuICAgIGlmIChldnQpIHtcclxuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuKGl0ZW06IFJlY2lwaWVudE1vZGVsPGFueT4pIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ21haWxib3gvaScsIGl0ZW0uaWQuZW5jb2RlSWQoKV0sXHJcbiAgICAgIHtcclxuICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgaXRlbTogeyAuLi5pdGVtIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgdmlldyhpdGVtOiBSZWNpcGllbnRNb2RlbDxhbnk+KSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94L2knLCBpdGVtLmlkLmVuY29kZUlkKCksICd2aWV3cyddLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgIGl0ZW06IHsgLi4uaXRlbSB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBzZW5kQWxsKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkIH0gPSB0aGlzLml0ZW1zLnNlbGVjdGlvbjtcclxuICAgIGNvbnN0IGRhdGE6IEFjdGlvbkRpYWxvZ0RhdGEgPSB7XHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgaXRlbXM6IHNlbGVjdGVkIGFzIFJlY2lwaWVudE1vZGVsW11cclxuICAgIH07XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihBY3Rpb25EaWFsb2csIHtcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXJlY3Rpb25hbGl0eS52YWx1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXJncyA9PlxyXG4gICAgICBhcmdzICYmXHJcbiAgICAgIHRoaXMuaXRlbXMuc2VuZEFsbChhY3Rpb24sIGFyZ3MpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwibmF2LXRvb2xiYXJcIj5cbiAgQGlmICghaXRlbXMuc2VsZWN0aW9uLmlzRW1wdHkoKSkge1xuICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0ZW1zLnJlZnJlc2goKVwiIFtiaXpkb2NUb29sdGlwXT1cIidSZWZyZXNoJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIG1hdEFuaW1hdGU9XCJyb3RhdGVcIj5hdXRvcmVuZXc8L21hdC1pY29uPjwvYnV0dG9uPi0tPlxuICBAaWYgKGl0ZW1zLmlzQWxsRHJhZnQoKSkge1xuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiaXRlbXMuZGlzY2FyZEFsbCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0Rpc2NhcmRTZWxlY3RlZCcgfCB0cmFuc2xhdGUgOiBpdGVtcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRGlzY2FyZFNlbGVjdGVkJyB8IHRyYW5zbGF0ZSA6IGl0ZW1zLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGhcIj48bWF0LWljb24+ZGVsZXRlX3N3ZWVwPC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJpdGVtcy5zdWJtaXRBbGwoKVwiPnt7J1N1Ym1pdFNlbGVjdGVkJyB8IHRyYW5zbGF0ZSA6IGl0ZW1zLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX08L2J1dHRvbj5cbiAgfVxuICBAaWYgKGl0ZW1zLnNoYXJlZEFjdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2VuZEFsbChpdGVtcy5zaGFyZWRBY3Rpb25zWzBdLm5hbWUpXCIgW2JpemRvY1Rvb2x0aXBdPVwiaXRlbXMuc2hhcmVkQWN0aW9uc1swXS50aXRsZVwiPlxuICAgIEBpZiAoaXRlbXMuc2hhcmVkQWN0aW9uc1swXS5pY29uKSB7XG4gICAgPG1hdC1pY29uPnt7aXRlbXMuc2hhcmVkQWN0aW9uc1swXS5pY29ufX08L21hdC1pY29uPlxuICAgIH17eydTZW5kU2VsZWN0ZWQnIHwgdHJhbnNsYXRlIDogaXRlbXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aH19XG4gIDwvYnV0dG9uPlxuICB9XG4gIEBlbHNlIGlmIChpdGVtcy5zaGFyZWRBY3Rpb25zLmxlbmd0aCA+IDEpIHtcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY3Rpb25cIiBbYml6ZG9jVG9vbHRpcF09XCInU2VuZCcgfCB0cmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZW5kJyB8IHRyYW5zbGF0ZVwiPlxuICAgIHt7J1NlbmRTZWxlY3RlZCd8IHRyYW5zbGF0ZSA6IGl0ZW1zLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX1cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjYWN0aW9uPlxuICAgIEBmb3IgKGEgb2YgaXRlbXMuc2hhcmVkQWN0aW9ucyB8IHNvcnQgOiAnZ3JvdXAnOyB0cmFjayBhOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIEBpZiAoaSA+IDAgJiYgaXRlbXMuc2hhcmVkQWN0aW9uc1tpLTFdLmdyb3VwICE9PSBhLmdyb3VwKSB7XG4gICAgPG1hdC1kaXZpZGVyPlxuICAgIDwvbWF0LWRpdmlkZXI+XG4gICAgfVxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VuZEFsbChhLm5hbWUpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhLnRpdGxlXCI+XG4gICAgICB7eyBhLnRpdGxlIH19XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L21hdC1tZW51PlxuICB9XG4gIDwhLS08YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiaXRlbXMucGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1ByZXZQYWdlJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ByZXZQYWdlJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhaXRlbXMucGFnaW5hdG9yLmhhc1ByZXZpb3VzUGFnZSgpXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPjwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiaXRlbXMucGFnaW5hdG9yLm5leHRQYWdlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInTmV4dFBhZ2UnIHwgdHJhbnNsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTmV4dFBhZ2UnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFpdGVtcy5wYWdpbmF0b3IuaGFzTmV4dFBhZ2UoKVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+PC9idXR0b24+LS0+XG4gIH0gQGVsc2Uge1xuICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5TZWFyY2goKVwiXG4gICAgW2JpemRvY1Rvb2x0aXBdPVwiJ1NlYXJjaCd8dHJhbnNsYXRlXCIgY2xhc3M9XCJ0b29sXCI+XG4gICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICBbQHNlYXJjaF09XCJzZWFyY2hpbmdcIlxuICAoQHNlYXJjaC5kb25lKT1cInNlYXJjaGluZyAmJiBmb2N1cygpXCItLT5cbiAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udGFpbnNcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cInt7J1NlYXJjaEZvbGRlcnMnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgY2xhc3M9XCJtYXQtYm9keSBzZWFyY2gtYm94XCJcbiAgICAgICAgICNzZWFyY2hFbFxuICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNsZWFyU2VhcmNoKCRldmVudClcIj5cbiAgQGlmIChjb250YWlucy52YWx1ZSkge1xuICA8bWF0LWljb24gKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5jbG9zZTwvbWF0LWljb24+XG4gIH1cbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxuICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0ZW1zLnBhZ2luYXRvci5wcmV2aW91c1BhZ2UoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQcmV2UGFnZScgfCB0cmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidQcmV2UGFnZScgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIWl0ZW1zLnBhZ2luYXRvci5oYXNQcmV2aW91c1BhZ2UoKVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0ZW1zLnBhZ2luYXRvci5uZXh0UGFnZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ05leHRQYWdlJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ05leHRQYWdlJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhaXRlbXMucGFnaW5hdG9yLmhhc05leHRQYWdlKClcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPjwvYnV0dG9uPi0tPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkZpbHRlcigkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidGaWx0ZXInIHwgdHJhbnNsYXRlXCIgI2ZpbHRlckVsPjxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+PC9idXR0b24+XG4gIH1cbjwvbWF0LXRvb2xiYXI+XG48Yml6ZG9jLWJyb3dzZS1pdGVtcyBbZmlsdGVyc109XCJmaWx0ZXJzXCIgW2ZvbGRlcklkXT1cImZvbGRlcklkXCIgW2ZpbHRlclR5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAob3Blbik9XCJvcGVuKCRldmVudClcIiAodmlldyk9XCJ2aWV3KCRldmVudCkgXCIgI2l0ZW1zPjwvYml6ZG9jLWJyb3dzZS1pdGVtcz5cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlLnBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvYnJvd3NlLnBhbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvYnJvd3NlLnBhbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRSxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFzQixlQUFlLEVBQUUsZUFBZSxFQUFXLE1BQU0sd0JBQXdCLENBQUM7QUFDeEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNyRCxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixrQkFBa0I7SUFDbEIsWUFDVSxLQUFtQyxFQUNuQyxRQUF3QixFQUN4QixNQUFhLEVBQ2IsT0FBb0IsRUFDcEIsZUFBK0IsRUFDL0IsVUFBNEIsRUFDNUIsT0FB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QUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDckMsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNoQyxJQUFJO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0F2SFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsdUtBQ25CLG9CQUFvQixnSUFDQSxVQUFVLDZGQUNWLFVBQVUsNkJDN0IzQyx1MUhBdURBLCt4RkRoQ2MsQ0FBQyxlQUFlLENBQUM7OzJGQUdsQixtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLENBQUMsZUFBZSxDQUFDOzJPQUlzQixLQUFLO3NCQUF2RCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSixRQUFRO3NCQUFwRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ0UsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXlEM0MsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGb2xkZXIsIFJlY2lwaWVudE1vZGVsIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25EaWFsb2csIEFjdGlvbkRpYWxvZ0RhdGEgfSBmcm9tICcuLi9jb21wb3NlL2FjdGlvbi9hY3Rpb24uZGlhbG9nJztcclxuaW1wb3J0IHsgQnJvd3NlRmlsdGVyQXJncywgQnJvd3NlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25Gb2N1cywgTmF2aWdhdGlvblBhbmVCYXNlLCBOYXZpZ2F0aW9uU3RhcnQsIFBhcmFtTmF2aWdhdGlvbiwgUGFuZVJlZiB9IGZyb20gJy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBCcm93c2VJdGVtc0NvbXBvbmVudCB9IGZyb20gJy4vYnJvd3NlLWl0ZW1zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vY29yZS9wb3B1cC9wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9zZVBhbmVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb3NlL2NvbXBvc2UucGFuZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgc2VhcmNoQW5pbWF0aW9uIH0gZnJvbSAnLi4vY29yZS9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYnJvd3NlLnBhbmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9icm93c2UucGFuZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnJvd3NlLnBhbmUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbc2VhcmNoQW5pbWF0aW9uXVxyXG59KVxyXG4vKiogYnJvd3NlIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VQYW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKEJyb3dzZUl0ZW1zQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBpdGVtczogQnJvd3NlSXRlbXNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyRWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZmlsdGVyRWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEVsJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNlYXJjaDogRWxlbWVudFJlZjtcclxuICBmb2xkZXJJZDogc3RyaW5nO1xyXG4gIGZpbHRlclR5cGU6IEZpbHRlclR5cGU7XHJcbiAgZmlsdGVyczogQnJvd3NlRmlsdGVyQXJncztcclxuICBzZWFyY2hpbmcgPSBmYWxzZTtcclxuICBwYWdlU2l6ZTogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IGNvbnRhaW5zID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgLyoqIGJyb3dzZSBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPEJyb3dzZVBhbmVDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wb3B1cDogUG9wdXAsXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYW5lLnBhcmFtc0NoYW5nZSgpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgdGhpcy5mb2xkZXJJZCA9IHBbJ2lkJ107XHJcbiAgICAgIGlmICh0aGlzLmZvbGRlcklkKSB0aGlzLl9wYW5lLnRpdGxlID0gdGhpcy5mb2xkZXIudGl0bGU7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucXVlcnlQYXJhbXNDaGFuZ2UoKS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVHlwZSA9IHBbJ3R5cGUnXTtcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gJ2ZsYWdnZWQnKVxyXG4gICAgICAgIHRoaXMuX3BhbmUudGl0bGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdGbGFnZ2VkJyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBpZiAocFsndGFnJ10pXHJcbiAgICAgICAgICB0aGlzLl9wYW5lLnRpdGxlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnVGFncycpO1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSBwO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBmaWx0ZXIoZSA9PiAoZSBpbnN0YW5jZW9mIFBhcmFtTmF2aWdhdGlvbiB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRm9jdXMpXHJcbiAgICAgICAgJiYgZS5wYW5lLl9wb3J0YWwuY29tcG9uZW50ID09PSBDb21wb3NlUGFuZUNvbXBvbmVudCkpLlxyXG4gICAgICBzdWJzY3JpYmUoKGU6IE5hdmlnYXRpb25QYW5lQmFzZTxDb21wb3NlUGFuZUNvbXBvbmVudD4pID0+XHJcbiAgICAgICAgdGhpcy5pdGVtcy5zZWxlY3QoZS5wYW5lLmRhdGEuaXRlbS5pZClcclxuICAgICAgKTtcclxuICAgIHRoaXMuY29udGFpbnMudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKHYgPT4gdGhpcy5maWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMsIGNvbnRhaW5zOiB2IH0pO1xyXG4gIH1cclxuICBnZXQgZm9sZGVyKCk6IEZvbGRlciB7IHJldHVybiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSB0aGlzLmZvbGRlcklkKTsgfVxyXG5cclxuICBvcGVuRmlsdGVyKGV2dD86IEV2ZW50KSB7XHJcbiAgICAvL3RoaXMuZmlsdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgdGhpcy5fcG9wdXAub3BlbihCcm93c2VGaWx0ZXJDb21wb25lbnQsIHRoaXMuZmlsdGVyRWwubmF0aXZlRWxlbWVudCwgeyBwb3NpdGlvbjogJ2VuZCcgfSkuXHJcbiAgICAgIG9wZW5lZCgpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICBlLmZvbGRlcklkID0gdGhpcy5mb2xkZXJJZDtcclxuICAgICAgICBlLnZhbHVlcyA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICBlLmV4Y2x1ZGUgPSBbJ2NvbnRhaW5zJ107XHJcbiAgICAgICAgZS52YWx1ZXNDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh2ID0+IHRoaXMuZmlsdGVycyA9IHYpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAqIEFsdC1zLCBBbHQtcVxyXG4gKiBAcGFyYW0gZXZlbnRcclxuICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmFsdEtleSkge1xyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAncycgfHwgZXZlbnQua2V5ID09PSAnUycpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdxJyB8fCBldmVudC5rZXkgPT09ICdRJykge1xyXG4gICAgICAgIHRoaXMub3BlbkZpbHRlcigpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb3BlblNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoaW5nID0gIXRoaXMuc2VhcmNoaW5nO1xyXG4gICAgdGhpcy5zZWFyY2hpbmcgJiZcclxuICAgICAgdGhpcy5zZWFyY2gubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuICBjbGVhclNlYXJjaChldnQ/OiBFdmVudCkge1xyXG4gICAgdGhpcy5jb250YWlucy5zZXRWYWx1ZShudWxsKTtcclxuICAgIGlmIChldnQpIHtcclxuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuKGl0ZW06IFJlY2lwaWVudE1vZGVsPGFueT4pIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ21haWxib3gvaScsIGl0ZW0uaWQuZW5jb2RlSWQoKV0sXHJcbiAgICAgIHtcclxuICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgaXRlbTogeyAuLi5pdGVtIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgdmlldyhpdGVtOiBSZWNpcGllbnRNb2RlbDxhbnk+KSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94L2knLCBpdGVtLmlkLmVuY29kZUlkKCksICd2aWV3cyddLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgIGl0ZW06IHsgLi4uaXRlbSB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBzZW5kQWxsKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkIH0gPSB0aGlzLml0ZW1zLnNlbGVjdGlvbjtcclxuICAgIGNvbnN0IGRhdGE6IEFjdGlvbkRpYWxvZ0RhdGEgPSB7XHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgaXRlbXM6IHNlbGVjdGVkIGFzIFJlY2lwaWVudE1vZGVsW11cclxuICAgIH07XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihBY3Rpb25EaWFsb2csIHtcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXJlY3Rpb25hbGl0eS52YWx1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXJncyA9PlxyXG4gICAgICBhcmdzICYmXHJcbiAgICAgIHRoaXMuaXRlbXMuc2VuZEFsbChhY3Rpb24sIGFyZ3MpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwibmF2LXRvb2xiYXJcIj5cbiAgQGlmICghaXRlbXMuc2VsZWN0aW9uLmlzRW1wdHkoKSkge1xuICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0ZW1zLnJlZnJlc2goKVwiIFtiaXpkb2NUb29sdGlwXT1cIidSZWZyZXNoJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIG1hdEFuaW1hdGU9XCJyb3RhdGVcIj5hdXRvcmVuZXc8L21hdC1pY29uPjwvYnV0dG9uPi0tPlxuICBAaWYgKGl0ZW1zLmlzQWxsRHJhZnQoKSkge1xuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiaXRlbXMuZGlzY2FyZEFsbCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0Rpc2NhcmRTZWxlY3RlZCcgfCB0cmFuc2xhdGUgOiBpdGVtcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRGlzY2FyZFNlbGVjdGVkJyB8IHRyYW5zbGF0ZSA6IGl0ZW1zLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGhcIj48bWF0LWljb24+ZGVsZXRlX3N3ZWVwPC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJpdGVtcy5zdWJtaXRBbGwoKVwiPnt7J1N1Ym1pdFNlbGVjdGVkJyB8IHRyYW5zbGF0ZSA6IGl0ZW1zLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX08L2J1dHRvbj5cbiAgfVxuICBAaWYgKGl0ZW1zLnNoYXJlZEFjdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2VuZEFsbChpdGVtcy5zaGFyZWRBY3Rpb25zWzBdLm5hbWUpXCIgW2JpemRvY1Rvb2x0aXBdPVwiaXRlbXMuc2hhcmVkQWN0aW9uc1swXS50aXRsZVwiPlxuICAgIEBpZiAoaXRlbXMuc2hhcmVkQWN0aW9uc1swXS5pY29uKSB7XG4gICAgPG1hdC1pY29uPnt7aXRlbXMuc2hhcmVkQWN0aW9uc1swXS5pY29ufX08L21hdC1pY29uPlxuICAgIH17eydTZW5kU2VsZWN0ZWQnIHwgdHJhbnNsYXRlIDogaXRlbXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aH19XG4gIDwvYnV0dG9uPlxuICB9XG4gIEBlbHNlIGlmIChpdGVtcy5zaGFyZWRBY3Rpb25zLmxlbmd0aCA+IDEpIHtcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY3Rpb25cIiBbYml6ZG9jVG9vbHRpcF09XCInU2VuZCcgfCB0cmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZW5kJyB8IHRyYW5zbGF0ZVwiPlxuICAgIHt7J1NlbmRTZWxlY3RlZCd8IHRyYW5zbGF0ZSA6IGl0ZW1zLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX1cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjYWN0aW9uPlxuICAgIEBmb3IgKGEgb2YgaXRlbXMuc2hhcmVkQWN0aW9ucyB8IHNvcnQgOiAnZ3JvdXAnOyB0cmFjayBhOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIEBpZiAoaSA+IDAgJiYgaXRlbXMuc2hhcmVkQWN0aW9uc1tpLTFdLmdyb3VwICE9PSBhLmdyb3VwKSB7XG4gICAgPG1hdC1kaXZpZGVyPlxuICAgIDwvbWF0LWRpdmlkZXI+XG4gICAgfVxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VuZEFsbChhLm5hbWUpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhLnRpdGxlXCI+XG4gICAgICB7eyBhLnRpdGxlIH19XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L21hdC1tZW51PlxuICB9XG4gIDwhLS08YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiaXRlbXMucGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1ByZXZQYWdlJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ByZXZQYWdlJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhaXRlbXMucGFnaW5hdG9yLmhhc1ByZXZpb3VzUGFnZSgpXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPjwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiaXRlbXMucGFnaW5hdG9yLm5leHRQYWdlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInTmV4dFBhZ2UnIHwgdHJhbnNsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTmV4dFBhZ2UnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFpdGVtcy5wYWdpbmF0b3IuaGFzTmV4dFBhZ2UoKVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+PC9idXR0b24+LS0+XG4gIH0gQGVsc2Uge1xuICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5TZWFyY2goKVwiXG4gICAgW2JpemRvY1Rvb2x0aXBdPVwiJ1NlYXJjaCd8dHJhbnNsYXRlXCIgY2xhc3M9XCJ0b29sXCI+XG4gICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICBbQHNlYXJjaF09XCJzZWFyY2hpbmdcIlxuICAoQHNlYXJjaC5kb25lKT1cInNlYXJjaGluZyAmJiBmb2N1cygpXCItLT5cbiAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udGFpbnNcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cInt7J1NlYXJjaEZvbGRlcnMnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgY2xhc3M9XCJtYXQtYm9keSBzZWFyY2gtYm94XCJcbiAgICAgICAgICNzZWFyY2hFbFxuICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNsZWFyU2VhcmNoKCRldmVudClcIj5cbiAgQGlmIChjb250YWlucy52YWx1ZSkge1xuICA8bWF0LWljb24gKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5jbG9zZTwvbWF0LWljb24+XG4gIH1cbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxuICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0ZW1zLnBhZ2luYXRvci5wcmV2aW91c1BhZ2UoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQcmV2UGFnZScgfCB0cmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidQcmV2UGFnZScgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIWl0ZW1zLnBhZ2luYXRvci5oYXNQcmV2aW91c1BhZ2UoKVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0ZW1zLnBhZ2luYXRvci5uZXh0UGFnZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ05leHRQYWdlJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ05leHRQYWdlJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhaXRlbXMucGFnaW5hdG9yLmhhc05leHRQYWdlKClcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPjwvYnV0dG9uPi0tPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkZpbHRlcigkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidGaWx0ZXInIHwgdHJhbnNsYXRlXCIgI2ZpbHRlckVsPjxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+PC9idXR0b24+XG4gIH1cbjwvbWF0LXRvb2xiYXI+XG48Yml6ZG9jLWJyb3dzZS1pdGVtcyBbZmlsdGVyc109XCJmaWx0ZXJzXCIgW2ZvbGRlcklkXT1cImZvbGRlcklkXCIgW2ZpbHRlclR5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAob3Blbik9XCJvcGVuKCRldmVudClcIiAodmlldyk9XCJ2aWV3KCRldmVudCkgXCIgI2l0ZW1zPjwvYml6ZG9jLWJyb3dzZS1pdGVtcz5cbiJdfQ==
@@ -303,14 +303,14 @@ export class ExpandedItemComponent {
303
303
  this._typingTask && clearTimeout(this._typingTask);
304
304
  }
305
305
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: i1.PromptService }, { token: i2.ChatInfo }, { token: i3.AccountService }, { token: i4.MailboxService }, { token: i5.SessionService }, { token: i6.Directionality }, { token: i7.MatDialog }, { token: i8.TranslateService }, { token: i9.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
306
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "@if (model.summary) {\n <div class=\"summary\" [innerHTML]=\"model.summary\">\n </div>\n}\n<div>\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\n <bizdoc-events [model]=\"model\"></bizdoc-events>\n</div>\n<div class=\"row\">\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\n <span class=\"divider\"></span>\n @for (a of actions; track a) {\n @if (a.icon) {\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\n <mat-icon>{{a.icon}}</mat-icon>\n </button>\n }\n }\n</div>\n<div class=\"row\">\n <div class=\"mat-small row\">\n <span>{{model.stateId | state : 'past' }}</span>\n &nbsp;\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\n &nbsp;\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\n </div>\n <span class=\"divider\"></span>\n <div class=\"center center\">\n @if (typing) {\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\n }\n @if (model.comments.length) {\n <div class=\"mat-small\">\n @if (!newComments) {\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\n } @else {\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\n }\n </div>\n }\n </div>\n @if (model.tags) {\n <mat-chip-set>\n @for (tag of model.tags; track tag) {\n <mat-chip [highlighted]=\"true\" [disableRipple]=\"true\">{{tag}}</mat-chip>\n }\n </mat-chip-set>\n }\n</div>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:fit-content}\n"], dependencies: [{ kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { kind: "component", type: i14.DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { kind: "directive", type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i16.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i17.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i18.TranslatePipe, name: "translate" }, { kind: "pipe", type: i19.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i20.StatePipe, name: "state" }] }); }
306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "@if (model.summary) {\n <div class=\"summary\" [innerHTML]=\"model.summary\">\n </div>\n}\n<div>\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\n <bizdoc-events [model]=\"model\"></bizdoc-events>\n</div>\n<div class=\"row\">\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\n <span class=\"divider\"></span>\n @for (a of actions; track a) {\n @if (a.icon) {\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\n <mat-icon>{{a.icon}}</mat-icon>\n </button>\n }\n }\n</div>\n<div class=\"row\">\n <div class=\"mat-small row\">\n <span>{{model.stateId | state : 'past' }}</span>\n &nbsp;\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\n &nbsp;\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\n </div>\n <span class=\"divider\"></span>\n <div class=\"center center\">\n @if (typing) {\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\n }\n @if (model.comments.length) {\n <div class=\"mat-small\">\n @if (!newComments) {\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\n } @else {\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\n }\n </div>\n }\n </div>\n @if (model.tags) {\n <mat-chip-set>\n @for (tag of model.tags; track tag) {\n <mat-chip [disabled]=\"true\">{{tag}}</mat-chip>\n }\n </mat-chip-set>\n }\n</div>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:fit-content}\n"], dependencies: [{ kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { kind: "component", type: i14.DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { kind: "directive", type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i16.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i17.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i18.TranslatePipe, name: "translate" }, { kind: "pipe", type: i19.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i20.StatePipe, name: "state" }] }); }
307
307
  }
308
308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ExpandedItemComponent, decorators: [{
309
309
  type: Component,
310
- args: [{ selector: 'bizdoc-expanded-item', template: "@if (model.summary) {\n <div class=\"summary\" [innerHTML]=\"model.summary\">\n </div>\n}\n<div>\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\n <bizdoc-events [model]=\"model\"></bizdoc-events>\n</div>\n<div class=\"row\">\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\n <span class=\"divider\"></span>\n @for (a of actions; track a) {\n @if (a.icon) {\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\n <mat-icon>{{a.icon}}</mat-icon>\n </button>\n }\n }\n</div>\n<div class=\"row\">\n <div class=\"mat-small row\">\n <span>{{model.stateId | state : 'past' }}</span>\n &nbsp;\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\n &nbsp;\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\n </div>\n <span class=\"divider\"></span>\n <div class=\"center center\">\n @if (typing) {\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\n }\n @if (model.comments.length) {\n <div class=\"mat-small\">\n @if (!newComments) {\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\n } @else {\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\n }\n </div>\n }\n </div>\n @if (model.tags) {\n <mat-chip-set>\n @for (tag of model.tags; track tag) {\n <mat-chip [highlighted]=\"true\" [disableRipple]=\"true\">{{tag}}</mat-chip>\n }\n </mat-chip-set>\n }\n</div>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:fit-content}\n"] }]
310
+ args: [{ selector: 'bizdoc-expanded-item', template: "@if (model.summary) {\n <div class=\"summary\" [innerHTML]=\"model.summary\">\n </div>\n}\n<div>\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\n <bizdoc-events [model]=\"model\"></bizdoc-events>\n</div>\n<div class=\"row\">\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\n <span class=\"divider\"></span>\n @for (a of actions; track a) {\n @if (a.icon) {\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\n <mat-icon>{{a.icon}}</mat-icon>\n </button>\n }\n }\n</div>\n<div class=\"row\">\n <div class=\"mat-small row\">\n <span>{{model.stateId | state : 'past' }}</span>\n &nbsp;\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\n &nbsp;\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\n </div>\n <span class=\"divider\"></span>\n <div class=\"center center\">\n @if (typing) {\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\n }\n @if (model.comments.length) {\n <div class=\"mat-small\">\n @if (!newComments) {\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\n } @else {\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\n }\n </div>\n }\n </div>\n @if (model.tags) {\n <mat-chip-set>\n @for (tag of model.tags; track tag) {\n <mat-chip [disabled]=\"true\">{{tag}}</mat-chip>\n }\n </mat-chip-set>\n }\n</div>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:fit-content}\n"] }]
311
311
  }], ctorParameters: () => [{ type: i1.PromptService }, { type: i2.ChatInfo }, { type: i3.AccountService }, { type: i4.MailboxService }, { type: i5.SessionService }, { type: i6.Directionality }, { type: i7.MatDialog }, { type: i8.TranslateService }, { type: i9.HubService }], propDecorators: { model: [{
312
312
  type: Input
313
313
  }], sent: [{
314
314
  type: Output
315
315
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Jyb3dzZS9leHBhbmRlZC1pdGVtL2V4cGFuZGVkLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvZXhwYW5kZWQtaXRlbS9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRbkQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQU9wRCxNQUFNLE9BQU8scUJBQXFCO0lBYWhDLFlBQW9CLEdBQWtCLEVBQzVCLEtBQWUsRUFDZixTQUF5QixFQUN6QixRQUF3QixFQUN4QixRQUF3QixFQUN4QixJQUFvQixFQUNwQixPQUFrQixFQUNsQixVQUE0QixFQUM1QixVQUFzQjtRQVJaLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWdC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R0FBRztvQkFDTixDQUFDO3dCQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0JBQTZDLENBQUM7d0JBQ3pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN6QixNQUFNO29CQUNSLENBQUM7Z0JBQ0gsS0FBSyxHQUFHO29CQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUjtvQkFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0ExVFUscUJBQXFCO2tHQUFyQixxQkFBcUIsbUhDeEJsQyx3MERBbURBOzsyRkQzQmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLHNCQUFzQjs2U0FLdkIsS0FBSztzQkFBYixLQUFLO2dCQUNhLElBQUk7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVjaXBpZW50TW9kZWwsIEhlYWRlck1vZGVsLCBBY3Rpb24sIFVzZXJJbmZvLCBHZW5kZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvbkRpYWxvZywgQWN0aW9uRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvc2UvYWN0aW9uL2FjdGlvbi5kaWFsb2cnO1xyXG5pbXBvcnQgeyBDaGF0SW5mbyB9IGZyb20gJy4uLy4uL2NoYXQvY2hhdC1pbmZvJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuXHJcbmNvbnN0IFJFRlJFU0hfVElNRSA9IDMwMDAwLCBUWVBJTkdfSElOVF9USU1FID0gMTUwMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWV4cGFuZGVkLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGVkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjaXBpZW50TW9kZWw8YW55Pj4oKTtcclxuICBhY3Rpb25zPzogQWN0aW9uW107XHJcbiAgbmV3Q29tbWVudHM/OiBudW1iZXI7XHJcbiAgdHlwaW5nPzogYm9vbGVhbjtcclxuICBub3RlOiBzdHJpbmc7XHJcbiAgc2VuZGVyPzogc3RyaW5nO1xyXG4gIGF3YWl0aW5nPzogc3RyaW5nO1xyXG4gIG1vZGU6ICd3b3JraW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgbnVsbDtcclxuICBwcml2YXRlIF90eXBpbmdUYXNrOiBOb2RlSlMuVGltZW91dDtcclxuICBwcml2YXRlIF9yZWZyZXNoVGFzazogTm9kZUpTLlRpbWVvdXQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdpbmc6IEh1YlNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcuY29tbWVudCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgaWYgKGUuaWQgPT09IHRoaXMubW9kZWwuaWQgJiYgKGUubW9kZWwuYnlJZCB8fCBlLm1vZGVsLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLl9jb21tZW50cygpO1xyXG4gICAgICAgICAgdGhpcy5fYWNjb3VudHMuZ2V0KGUubW9kZWwudXNlcklkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnQ29tbWVudGVkJywgdS5nZW5kZXIsIHUubmFtZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcudXBkYXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICBpZiAoZS5tb2RlbC5pZCA9PT0gdGhpcy5tb2RlbC5pZCkge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgICAgICAoZS51c2VySWQgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSAmJiB0aGlzLl9hY2NvdW50cy5nZXQoZS51c2VySWQpLnN1YnNjcmliZSh1ID0+XHJcbiAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnTWFpbFZlcnNpb25VcGRhdGUnLCB0aGlzLm1vZGVsLm51bWJlciwgdS5uYW1lKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fbWFpbGJveC5jaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PlxyXG4gICAgICAoZS5pZCA9PT0gdGhpcy5tb2RlbC5pZCkgJiZcclxuICAgICAgdGhpcy5fcmVmcmVzaCgpKTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy5jb21tZW50VHlwaW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZmlsdGVyKGUgPT4gZS5pZCA9PT0gdGhpcy5tb2RlbC5kb2N1bWVudElkKSkuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICB0aGlzLnR5cGluZyA9IHRydWU7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICAgICAgdGhpcy5fdHlwaW5nVGFzayA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy50eXBpbmcgPSBmYWxzZSwgVFlQSU5HX0hJTlRfVElNRSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgIHRoaXMuX3JlZnJlc2hUYXNrID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVmcmVzaCgpLCBSRUZSRVNIX1RJTUUpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9ub3RlKCkge1xyXG4gICAgY29uc3QgeyBvd25lcklkLCBvd25lckJ5SWQsIGlzc3VlZCwgc3Vic3RpdHV0ZUlkLCByZWNlaXZlZCwgcmVwbGllZCwgbG9nLCBpZCwgbm90ZSwgYnlJZCwgYWN0aW9uLCBlc2NhbGF0ZWQsIG9yaWdpbklkLCBkcmFmdCB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGxldCB0YXJnZXQ6IHN0cmluZztcclxuICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgdGFyZ2V0ID0gYXdhaXQgdGhpcy5fdGFyZ2V0KGlkKTtcclxuICAgIH1cclxuICAgIGlmIChzdWJzdGl0dXRlSWQpIHtcclxuICAgICAgY29uc3Qgc3Vic3RpdHV0aW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHN1YnN0aXR1dGVJZCkpO1xyXG4gICAgICBpZiAocmVwbGllZCkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlcGxpZWQpLFxyXG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSxcclxuICAgICAgICAgIGFkamVjdGl2ZSA9IChhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJzdGl0dXRlQWN0aW9uVGFrZW5UbycsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSxcclxuICAgICAgICAgICAgdGFyZ2V0LFxyXG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGVBY3Rpb25UYWtlbicsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSwgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXNjYWxhdGVkKSB7XHJcbiAgICAgICAgY29uc3QgZXNjYWxhdGlvbiA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRXNjYWxhdGlvbicgJiYgbC5yZWNpcGllbnRJZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnRXNjYWxhdGVkRnJvbScsIHN1YnN0aXR1dGluZy5nZW5kZXIsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksIHRoaXMuX2R1cmF0aW9uKGVzY2FsYXRpb24uZHVyYXRpb24pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNlaXZlZCk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdOb3RlJywgc3Vic3RpdHV0aW5nLmdlbmRlcixcclxuICAgICAgICAgIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksXHJcbiAgICAgICAgICB0aW1lLFxyXG4gICAgICAgICAgbm90ZSB8fCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJlcGxpZWQpIHtcclxuICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVwbGllZCk7XHJcbiAgICAgIGlmIChieUlkKSB7XHJcbiAgICAgICAgaWYgKGJ5SWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUlkKSB7XHJcbiAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbkJ5WW91VG8nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLFxyXG4gICAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgICBlbHNlIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3UnLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuX2FjY291bnRzLmdldChieUlkKS5zdWJzY3JpYmUodSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeVRvJywgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgdS5nZW5kZXIpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeScsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHUuZ2VuZGVyKSwgdGltZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuVG8nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnQWN0aW9uVGFrZW4nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25UbycsIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCAneW91JyksIHRhcmdldCwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm90ZSlcclxuICAgICAgdGhpcy5ub3RlID0gbm90ZTtcclxuICAgIGVsc2UgaWYgKG9yaWdpbklkKSB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maW5kKHIgPT4gci5pZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBvcmlnaW4uYWN0aW9uKSxcclxuICAgICAgICBhZGplY3RpdmUgPSBhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZTtcclxuICAgICAgaWYgKChvcmlnaW4uYnlJZCB8fCBvcmlnaW4udXNlcklkKSA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnlZb3UnLCBhZGplY3RpdmUpO1xyXG4gICAgICBlbHNlIGlmIChvcmlnaW4uYnlJZCkge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLmJ5SWQpKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25CeUJ5JywgYWRqZWN0aXZlLCBieS5uYW1lLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oIHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnknLCBhZGplY3RpdmUsIHdoby5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgJiYgIWRyYWZ0KSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KGlzc3VlZCk7XHJcbiAgICAgIGlmIChvd25lckJ5SWQpIHtcclxuICAgICAgICBpZiAob3duZXJCeUlkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZClcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnWW91U3VibWl0dGVkTm90ZUJ5JywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5R2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBieSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvd25lckJ5SWQpKTtcclxuICAgICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlQnknLCBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoYnkpLFxyXG4gICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLFxyXG4gICAgICAgICAgICAgIHRpbWUpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGVZb3VCeScsIGJ5LmdlbmRlcixcclxuICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChieSksXHJcbiAgICAgICAgICAgICAgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VTdWJtaXR0ZWROb3RlJywgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfdGFyZ2V0KGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maWx0ZXIociA9PiByLm9yaWdpbklkID09PSBpZCk7XHJcbiAgICBpZiAob3JpZ2luLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1c2VycyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldEFsbChvcmlnaW4ubWFwKHIgPT4gci51c2VySWQpKSk7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuam9pbihcclxuICAgICAgICB1c2Vycy5tYXAodSA9PiB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh1KSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FjdGlvbk5hbWUobmFtZTogc3RyaW5nLCBnZW5kZXI6IEdlbmRlciB8ICd5b3UnKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIGlmICghYWN0aW9uKSByZXR1cm4gbmFtZTtcclxuICAgIGlmIChnZW5kZXIgPT09ICd5b3UnKSB7XHJcbiAgICAgIGNvbnN0IGdlbmRlciA9IHRoaXMuX3Nlc3Npb24uZ2VuZGVyO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi55b3VGZW1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgICBhY3Rpb24ueW91KSB8fCBhY3Rpb24ucGFzdCB8fFxyXG4gICAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi5wYXN0TWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi5wYXN0RmVtYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgICAgYWN0aW9uLnBhc3QpIHx8XHJcbiAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZnJvbU5vdyhkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuZnJvbU5vdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHVyYXRpb24odGltZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gZGF5anMuZHVyYXRpb24odGltZSwgJ3MnKS5odW1hbml6ZSgpO1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIGFzeW5jIF9yZWZyZXNoKCkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25zIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgdGhpcy5hY3Rpb25zID0gYWN0aW9ucyAmJiBhY3Rpb25zLmxlbmd0aCA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbHRlcihhID0+IGFjdGlvbnMuaW5kZXhPZihhLm5hbWUpID4gLTEpIDogbnVsbDtcclxuICAgIGNvbnN0IHsgc2VuZGVySWQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICAvLyBzZW5kZXJcclxuICAgIGlmIChzZW5kZXJJZCAmJiAoc2VuZGVySWQgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSkge1xyXG4gICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQoc2VuZGVySWQpKTtcclxuICAgICAgdGhpcy5zZW5kZXIgPSB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh3aG8pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY29tbWVudHMoKTtcclxuICAgIHRoaXMuX25vdGUoKTtcclxuICAgIHRoaXMuX2F3YWl0aW5nKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbW1lbnRzKCkge1xyXG4gICAgY29uc3QgeyB2aWV3ZWQsIGNvbW1lbnRzIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgdGhpcy5uZXdDb21tZW50cyA9IHZpZXdlZCA/XHJcbiAgICAgIGNvbW1lbnRzLmZpbHRlcihjID0+IGMudGltZSA+IHZpZXdlZCAmJiAoYy5ieUlkIHx8IGMudXNlcklkKSAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpLmxlbmd0aCB8fCBudWxsIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2F3YWl0aW5nKCkge1xyXG4gICAgLy9hd2FpdGluZ1xyXG4gICAgbGV0IHJlY2lwaWVudHMgPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5wZW5kaW5nICYmICFyLmVzdGltYXRlKS5cclxuICAgICAgc29ydCgocjAsIHIxKSA9PiByMC5yZWNlaXZlZCA+IHIxLnJlY2VpdmVkID8gMSA6IC0xKS5cclxuICAgICAgbWFwKHIgPT4gci51c2VySWQpO1xyXG4gICAgcmVjaXBpZW50cyA9IHJlY2lwaWVudHMuZmlsdGVyKChyLCBpKSA9PiByZWNpcGllbnRzLmluZGV4T2YocikgPT09IGkpOyAvKiB1bmlxdWUgKi9cclxuICAgIGlmIChyZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHJlY2lwaWVudHMuaW5kZXhPZih0aGlzLl9zZXNzaW9uLnVzZXJJZCkgPCAwIHx8IHJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0QWxsKHJlY2lwaWVudHMuZmlsdGVyKHIgPT4gciAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpKSk7XHJcbiAgICAgICAgY29uc3QgbmFtZXMgPSB1c2Vycy5tYXAocCA9PiB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChwKSk7XHJcbiAgICAgICAgcmVjaXBpZW50cy5pbmRleE9mKHRoaXMuX3Nlc3Npb24udXNlcklkKSA+IC0xICYmXHJcbiAgICAgICAgICBuYW1lcy5wdXNoKHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdXJzZWxmJykpO1xyXG4gICAgICAgIHRoaXMuYXdhaXRpbmcgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBd2FpdGluZycsIHRoaXMuX3RyYW5zbGF0ZS5qb2luKG5hbWVzKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgICogQ2hhdFxyXG4gICAgICogQHBhcmFtIGVcclxuICAgICAqL1xyXG4gIGNoYXQoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdXNlcklkID0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5mbycpO1xyXG4gICAgdXNlcklkICYmXHJcbiAgICAgIHRoaXMuX2NoYXQub3Blbih1c2VySWQpO1xyXG4gIH1cclxuICBwcml2YXRlIF9mb3JtYXRVc2VyRWxlbWVudChwZXJzb246IFVzZXJJbmZvKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hhdC5mb3JtYXQocGVyc29uKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGFjdGlvblxyXG4gICAqL1xyXG4gIHNlbmQoYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHsgaWQsIG51bWJlciwgdmVyc2lvbiwgZm9ybUlkIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgY29uc3QgZGF0YTogQWN0aW9uRGlhbG9nRGF0YSA9IHtcclxuICAgICAgYWN0aW9uLFxyXG4gICAgICBpdGVtOiB0aGlzLm1vZGVsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQWN0aW9uRGlhbG9nLCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhcmdzID0+IHtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICB0aGlzLm1vZGUgPSAnd29ya2luZyc7XHJcbiAgICAgICAgdGhpcy5fbWFpbGJveC5zZW5kKGlkLCB2ZXJzaW9uLCBmb3JtSWQsIG51bGwsIGFjdGlvbiwgYXJncykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IGFzeW5jIHIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSxcclxuICAgICAgICAgICAgICBhZGplY3RpdmUgPSBjYWN0aW9uLmFkamVjdGl2ZSB8fCBjYWN0aW9uLnRpdGxlO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCB0aGlzLl90YXJnZXQoaWQpO1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50VG8nLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5zZW50LmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdkb25lJztcclxuICAgICAgICAgIH0sIGVycm9yOiBlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmVzcG9uc2UoZSwgdGhpcy5tb2RlbCwgJ1NlbmRFcnInKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gcmVzcG9uc2VcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHJlc291cmNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaGFuZGxlUmVzcG9uc2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55LCBpdGVtOiBIZWFkZXJNb2RlbCwgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuY29uc3RydWN0b3IubmFtZSA9PT0gJ1Bvc2l0aW9uRXJyb3InKVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVXNlckRlbmllZEdlb0VycicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdHZW9FcnInKTtcclxuICAgICAgfVxyXG4gICAgZWxzZSBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICBjYXNlIDQwOTpcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVmVyc2lvbkVycicsIGl0ZW0ubnVtYmVyKTtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3BvbnNlLmVycm9yIC8qIHNlcmlhbGl6ZWQgbW9kZWwgKi8gYXMgUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgb2JqKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcmVmcmVzaFRhc2spO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl90eXBpbmdUYXNrICYmIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChtb2RlbC5zdW1tYXJ5KSB7XG4gIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCIgW2lubmVySFRNTF09XCJtb2RlbC5zdW1tYXJ5XCI+XG4gIDwvZGl2PlxufVxuPGRpdj5cbiAgPGJpemRvYy1hdHRhY2htZW50cyBbbW9kZWxdPVwibW9kZWxcIj48L2JpemRvYy1hdHRhY2htZW50cz5cbiAgPGJpemRvYy1ldmVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtZXZlbnRzPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxzcGFuIGNsYXNzPVwibm90ZVwiIFtpbm5lckhUTUxdPVwibm90ZSB8IHNhbml0aXplSHRtbFwiIChjbGljayk9XCJjaGF0KCRldmVudClcIj48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgQGZvciAoYSBvZiBhY3Rpb25zOyB0cmFjayBhKSB7XG4gICAgQGlmIChhLmljb24pIHtcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZW5kKGEubmFtZSlcIiBbYml6ZG9jVG9vbHRpcF09XCJhLnRpdGxlXCIgY2xhc3M9XCJ0b29sXCI+XG4gICAgICAgIDxtYXQtaWNvbj57e2EuaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgfVxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJtYXQtc21hbGwgcm93XCI+XG4gICAgPHNwYW4+e3ttb2RlbC5zdGF0ZUlkIHwgc3RhdGUgOiAncGFzdCcgfX08L3NwYW4+XG4gICAgJm5ic3A7XG4gICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCIgW2JpemRvY1Rvb2x0aXBdPVwibW9kZWwucmVjZWl2ZWQgfCBhbUNhbGVuZGFyXCI+e3ttb2RlbC5yZWNlaXZlZCB8IGFtVGltZUFnb319PC9zcGFuPlxuICAgICZuYnNwO1xuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwic2VuZGVyIHwgc2FuaXRpemVIdG1sXCIgKGNsaWNrKT1cImNoYXQoJGV2ZW50KVwiIGNsYXNzPVwid2hvXCI+PC9zcGFuPiZuYnNwO1xuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiYXdhaXRpbmcgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCIgY2xhc3M9XCJ3aG9cIj48L3NwYW4+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgQGlmICh0eXBpbmcpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LXNtYWxsXCI+e3snU29tZW9uZVR5cGluZyd8dHJhbnNsYXRlfX08L3NwYW4+XG4gICAgfVxuICAgIEBpZiAobW9kZWwuY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibWF0LXNtYWxsXCI+XG4gICAgICAgIEBpZiAoIW5ld0NvbW1lbnRzKSB7XG4gICAgICAgICAgPHNwYW4+e3ttb2RlbC5jb21tZW50cy5sZW5ndGggPiAxID8gKCdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCkgOiAnT25lQ29tbWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiJ05ld0NvbW1lbnRzQ291bnQnIHwgdHJhbnNsYXRlIDogbW9kZWwuY29tbWVudHMubGVuZ3RoIDogbmV3Q29tbWVudHMgfCBzYW5pdGl6ZUh0bWxcIj48L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIEBpZiAobW9kZWwudGFncykge1xuICAgIDxtYXQtY2hpcC1zZXQ+XG4gICAgICBAZm9yICh0YWcgb2YgbW9kZWwudGFnczsgdHJhY2sgdGFnKSB7XG4gICAgICAgIDxtYXQtY2hpcCBbaGlnaGxpZ2h0ZWRdPVwidHJ1ZVwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIj57e3RhZ319PC9tYXQtY2hpcD5cbiAgICAgIH1cbiAgICA8L21hdC1jaGlwLXNldD5cbiAgfVxuPC9kaXY+XG4iXX0=
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Jyb3dzZS9leHBhbmRlZC1pdGVtL2V4cGFuZGVkLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvZXhwYW5kZWQtaXRlbS9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRbkQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQU9wRCxNQUFNLE9BQU8scUJBQXFCO0lBYWhDLFlBQW9CLEdBQWtCLEVBQzVCLEtBQWUsRUFDZixTQUF5QixFQUN6QixRQUF3QixFQUN4QixRQUF3QixFQUN4QixJQUFvQixFQUNwQixPQUFrQixFQUNsQixVQUE0QixFQUM1QixVQUFzQjtRQVJaLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWdC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R0FBRztvQkFDTixDQUFDO3dCQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0JBQTZDLENBQUM7d0JBQ3pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN6QixNQUFNO29CQUNSLENBQUM7Z0JBQ0gsS0FBSyxHQUFHO29CQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUjtvQkFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0ExVFUscUJBQXFCO2tHQUFyQixxQkFBcUIsbUhDeEJsQyw0eURBbURBOzsyRkQzQmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLHNCQUFzQjs2U0FLdkIsS0FBSztzQkFBYixLQUFLO2dCQUNhLElBQUk7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVjaXBpZW50TW9kZWwsIEhlYWRlck1vZGVsLCBBY3Rpb24sIFVzZXJJbmZvLCBHZW5kZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvbkRpYWxvZywgQWN0aW9uRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvc2UvYWN0aW9uL2FjdGlvbi5kaWFsb2cnO1xyXG5pbXBvcnQgeyBDaGF0SW5mbyB9IGZyb20gJy4uLy4uL2NoYXQvY2hhdC1pbmZvJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuXHJcbmNvbnN0IFJFRlJFU0hfVElNRSA9IDMwMDAwLCBUWVBJTkdfSElOVF9USU1FID0gMTUwMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWV4cGFuZGVkLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGVkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjaXBpZW50TW9kZWw8YW55Pj4oKTtcclxuICBhY3Rpb25zPzogQWN0aW9uW107XHJcbiAgbmV3Q29tbWVudHM/OiBudW1iZXI7XHJcbiAgdHlwaW5nPzogYm9vbGVhbjtcclxuICBub3RlOiBzdHJpbmc7XHJcbiAgc2VuZGVyPzogc3RyaW5nO1xyXG4gIGF3YWl0aW5nPzogc3RyaW5nO1xyXG4gIG1vZGU6ICd3b3JraW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgbnVsbDtcclxuICBwcml2YXRlIF90eXBpbmdUYXNrOiBOb2RlSlMuVGltZW91dDtcclxuICBwcml2YXRlIF9yZWZyZXNoVGFzazogTm9kZUpTLlRpbWVvdXQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdpbmc6IEh1YlNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcuY29tbWVudCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgaWYgKGUuaWQgPT09IHRoaXMubW9kZWwuaWQgJiYgKGUubW9kZWwuYnlJZCB8fCBlLm1vZGVsLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLl9jb21tZW50cygpO1xyXG4gICAgICAgICAgdGhpcy5fYWNjb3VudHMuZ2V0KGUubW9kZWwudXNlcklkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnQ29tbWVudGVkJywgdS5nZW5kZXIsIHUubmFtZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcudXBkYXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICBpZiAoZS5tb2RlbC5pZCA9PT0gdGhpcy5tb2RlbC5pZCkge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgICAgICAoZS51c2VySWQgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSAmJiB0aGlzLl9hY2NvdW50cy5nZXQoZS51c2VySWQpLnN1YnNjcmliZSh1ID0+XHJcbiAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnTWFpbFZlcnNpb25VcGRhdGUnLCB0aGlzLm1vZGVsLm51bWJlciwgdS5uYW1lKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fbWFpbGJveC5jaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PlxyXG4gICAgICAoZS5pZCA9PT0gdGhpcy5tb2RlbC5pZCkgJiZcclxuICAgICAgdGhpcy5fcmVmcmVzaCgpKTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy5jb21tZW50VHlwaW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZmlsdGVyKGUgPT4gZS5pZCA9PT0gdGhpcy5tb2RlbC5kb2N1bWVudElkKSkuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICB0aGlzLnR5cGluZyA9IHRydWU7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICAgICAgdGhpcy5fdHlwaW5nVGFzayA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy50eXBpbmcgPSBmYWxzZSwgVFlQSU5HX0hJTlRfVElNRSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgIHRoaXMuX3JlZnJlc2hUYXNrID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVmcmVzaCgpLCBSRUZSRVNIX1RJTUUpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9ub3RlKCkge1xyXG4gICAgY29uc3QgeyBvd25lcklkLCBvd25lckJ5SWQsIGlzc3VlZCwgc3Vic3RpdHV0ZUlkLCByZWNlaXZlZCwgcmVwbGllZCwgbG9nLCBpZCwgbm90ZSwgYnlJZCwgYWN0aW9uLCBlc2NhbGF0ZWQsIG9yaWdpbklkLCBkcmFmdCB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGxldCB0YXJnZXQ6IHN0cmluZztcclxuICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgdGFyZ2V0ID0gYXdhaXQgdGhpcy5fdGFyZ2V0KGlkKTtcclxuICAgIH1cclxuICAgIGlmIChzdWJzdGl0dXRlSWQpIHtcclxuICAgICAgY29uc3Qgc3Vic3RpdHV0aW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHN1YnN0aXR1dGVJZCkpO1xyXG4gICAgICBpZiAocmVwbGllZCkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlcGxpZWQpLFxyXG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSxcclxuICAgICAgICAgIGFkamVjdGl2ZSA9IChhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJzdGl0dXRlQWN0aW9uVGFrZW5UbycsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSxcclxuICAgICAgICAgICAgdGFyZ2V0LFxyXG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGVBY3Rpb25UYWtlbicsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSwgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXNjYWxhdGVkKSB7XHJcbiAgICAgICAgY29uc3QgZXNjYWxhdGlvbiA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRXNjYWxhdGlvbicgJiYgbC5yZWNpcGllbnRJZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnRXNjYWxhdGVkRnJvbScsIHN1YnN0aXR1dGluZy5nZW5kZXIsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksIHRoaXMuX2R1cmF0aW9uKGVzY2FsYXRpb24uZHVyYXRpb24pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNlaXZlZCk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdOb3RlJywgc3Vic3RpdHV0aW5nLmdlbmRlcixcclxuICAgICAgICAgIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksXHJcbiAgICAgICAgICB0aW1lLFxyXG4gICAgICAgICAgbm90ZSB8fCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJlcGxpZWQpIHtcclxuICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVwbGllZCk7XHJcbiAgICAgIGlmIChieUlkKSB7XHJcbiAgICAgICAgaWYgKGJ5SWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUlkKSB7XHJcbiAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbkJ5WW91VG8nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLFxyXG4gICAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgICBlbHNlIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3UnLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuX2FjY291bnRzLmdldChieUlkKS5zdWJzY3JpYmUodSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeVRvJywgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgdS5nZW5kZXIpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeScsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHUuZ2VuZGVyKSwgdGltZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuVG8nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnQWN0aW9uVGFrZW4nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25UbycsIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCAneW91JyksIHRhcmdldCwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm90ZSlcclxuICAgICAgdGhpcy5ub3RlID0gbm90ZTtcclxuICAgIGVsc2UgaWYgKG9yaWdpbklkKSB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maW5kKHIgPT4gci5pZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBvcmlnaW4uYWN0aW9uKSxcclxuICAgICAgICBhZGplY3RpdmUgPSBhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZTtcclxuICAgICAgaWYgKChvcmlnaW4uYnlJZCB8fCBvcmlnaW4udXNlcklkKSA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnlZb3UnLCBhZGplY3RpdmUpO1xyXG4gICAgICBlbHNlIGlmIChvcmlnaW4uYnlJZCkge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLmJ5SWQpKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25CeUJ5JywgYWRqZWN0aXZlLCBieS5uYW1lLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oIHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnknLCBhZGplY3RpdmUsIHdoby5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgJiYgIWRyYWZ0KSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KGlzc3VlZCk7XHJcbiAgICAgIGlmIChvd25lckJ5SWQpIHtcclxuICAgICAgICBpZiAob3duZXJCeUlkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZClcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnWW91U3VibWl0dGVkTm90ZUJ5JywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5R2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBieSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvd25lckJ5SWQpKTtcclxuICAgICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlQnknLCBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoYnkpLFxyXG4gICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLFxyXG4gICAgICAgICAgICAgIHRpbWUpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGVZb3VCeScsIGJ5LmdlbmRlcixcclxuICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChieSksXHJcbiAgICAgICAgICAgICAgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VTdWJtaXR0ZWROb3RlJywgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfdGFyZ2V0KGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maWx0ZXIociA9PiByLm9yaWdpbklkID09PSBpZCk7XHJcbiAgICBpZiAob3JpZ2luLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1c2VycyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldEFsbChvcmlnaW4ubWFwKHIgPT4gci51c2VySWQpKSk7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuam9pbihcclxuICAgICAgICB1c2Vycy5tYXAodSA9PiB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh1KSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FjdGlvbk5hbWUobmFtZTogc3RyaW5nLCBnZW5kZXI6IEdlbmRlciB8ICd5b3UnKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIGlmICghYWN0aW9uKSByZXR1cm4gbmFtZTtcclxuICAgIGlmIChnZW5kZXIgPT09ICd5b3UnKSB7XHJcbiAgICAgIGNvbnN0IGdlbmRlciA9IHRoaXMuX3Nlc3Npb24uZ2VuZGVyO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi55b3VGZW1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgICBhY3Rpb24ueW91KSB8fCBhY3Rpb24ucGFzdCB8fFxyXG4gICAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi5wYXN0TWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi5wYXN0RmVtYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgICAgYWN0aW9uLnBhc3QpIHx8XHJcbiAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZnJvbU5vdyhkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuZnJvbU5vdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHVyYXRpb24odGltZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gZGF5anMuZHVyYXRpb24odGltZSwgJ3MnKS5odW1hbml6ZSgpO1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIGFzeW5jIF9yZWZyZXNoKCkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25zIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgdGhpcy5hY3Rpb25zID0gYWN0aW9ucyAmJiBhY3Rpb25zLmxlbmd0aCA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbHRlcihhID0+IGFjdGlvbnMuaW5kZXhPZihhLm5hbWUpID4gLTEpIDogbnVsbDtcclxuICAgIGNvbnN0IHsgc2VuZGVySWQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICAvLyBzZW5kZXJcclxuICAgIGlmIChzZW5kZXJJZCAmJiAoc2VuZGVySWQgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSkge1xyXG4gICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQoc2VuZGVySWQpKTtcclxuICAgICAgdGhpcy5zZW5kZXIgPSB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh3aG8pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY29tbWVudHMoKTtcclxuICAgIHRoaXMuX25vdGUoKTtcclxuICAgIHRoaXMuX2F3YWl0aW5nKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbW1lbnRzKCkge1xyXG4gICAgY29uc3QgeyB2aWV3ZWQsIGNvbW1lbnRzIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgdGhpcy5uZXdDb21tZW50cyA9IHZpZXdlZCA/XHJcbiAgICAgIGNvbW1lbnRzLmZpbHRlcihjID0+IGMudGltZSA+IHZpZXdlZCAmJiAoYy5ieUlkIHx8IGMudXNlcklkKSAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpLmxlbmd0aCB8fCBudWxsIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2F3YWl0aW5nKCkge1xyXG4gICAgLy9hd2FpdGluZ1xyXG4gICAgbGV0IHJlY2lwaWVudHMgPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5wZW5kaW5nICYmICFyLmVzdGltYXRlKS5cclxuICAgICAgc29ydCgocjAsIHIxKSA9PiByMC5yZWNlaXZlZCA+IHIxLnJlY2VpdmVkID8gMSA6IC0xKS5cclxuICAgICAgbWFwKHIgPT4gci51c2VySWQpO1xyXG4gICAgcmVjaXBpZW50cyA9IHJlY2lwaWVudHMuZmlsdGVyKChyLCBpKSA9PiByZWNpcGllbnRzLmluZGV4T2YocikgPT09IGkpOyAvKiB1bmlxdWUgKi9cclxuICAgIGlmIChyZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHJlY2lwaWVudHMuaW5kZXhPZih0aGlzLl9zZXNzaW9uLnVzZXJJZCkgPCAwIHx8IHJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0QWxsKHJlY2lwaWVudHMuZmlsdGVyKHIgPT4gciAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpKSk7XHJcbiAgICAgICAgY29uc3QgbmFtZXMgPSB1c2Vycy5tYXAocCA9PiB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChwKSk7XHJcbiAgICAgICAgcmVjaXBpZW50cy5pbmRleE9mKHRoaXMuX3Nlc3Npb24udXNlcklkKSA+IC0xICYmXHJcbiAgICAgICAgICBuYW1lcy5wdXNoKHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdXJzZWxmJykpO1xyXG4gICAgICAgIHRoaXMuYXdhaXRpbmcgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBd2FpdGluZycsIHRoaXMuX3RyYW5zbGF0ZS5qb2luKG5hbWVzKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgICogQ2hhdFxyXG4gICAgICogQHBhcmFtIGVcclxuICAgICAqL1xyXG4gIGNoYXQoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdXNlcklkID0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5mbycpO1xyXG4gICAgdXNlcklkICYmXHJcbiAgICAgIHRoaXMuX2NoYXQub3Blbih1c2VySWQpO1xyXG4gIH1cclxuICBwcml2YXRlIF9mb3JtYXRVc2VyRWxlbWVudChwZXJzb246IFVzZXJJbmZvKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hhdC5mb3JtYXQocGVyc29uKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGFjdGlvblxyXG4gICAqL1xyXG4gIHNlbmQoYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHsgaWQsIG51bWJlciwgdmVyc2lvbiwgZm9ybUlkIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgY29uc3QgZGF0YTogQWN0aW9uRGlhbG9nRGF0YSA9IHtcclxuICAgICAgYWN0aW9uLFxyXG4gICAgICBpdGVtOiB0aGlzLm1vZGVsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQWN0aW9uRGlhbG9nLCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhcmdzID0+IHtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICB0aGlzLm1vZGUgPSAnd29ya2luZyc7XHJcbiAgICAgICAgdGhpcy5fbWFpbGJveC5zZW5kKGlkLCB2ZXJzaW9uLCBmb3JtSWQsIG51bGwsIGFjdGlvbiwgYXJncykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IGFzeW5jIHIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSxcclxuICAgICAgICAgICAgICBhZGplY3RpdmUgPSBjYWN0aW9uLmFkamVjdGl2ZSB8fCBjYWN0aW9uLnRpdGxlO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCB0aGlzLl90YXJnZXQoaWQpO1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50VG8nLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5zZW50LmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdkb25lJztcclxuICAgICAgICAgIH0sIGVycm9yOiBlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmVzcG9uc2UoZSwgdGhpcy5tb2RlbCwgJ1NlbmRFcnInKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gcmVzcG9uc2VcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHJlc291cmNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaGFuZGxlUmVzcG9uc2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55LCBpdGVtOiBIZWFkZXJNb2RlbCwgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuY29uc3RydWN0b3IubmFtZSA9PT0gJ1Bvc2l0aW9uRXJyb3InKVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVXNlckRlbmllZEdlb0VycicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdHZW9FcnInKTtcclxuICAgICAgfVxyXG4gICAgZWxzZSBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICBjYXNlIDQwOTpcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVmVyc2lvbkVycicsIGl0ZW0ubnVtYmVyKTtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3BvbnNlLmVycm9yIC8qIHNlcmlhbGl6ZWQgbW9kZWwgKi8gYXMgUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgb2JqKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcmVmcmVzaFRhc2spO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl90eXBpbmdUYXNrICYmIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChtb2RlbC5zdW1tYXJ5KSB7XG4gIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCIgW2lubmVySFRNTF09XCJtb2RlbC5zdW1tYXJ5XCI+XG4gIDwvZGl2PlxufVxuPGRpdj5cbiAgPGJpemRvYy1hdHRhY2htZW50cyBbbW9kZWxdPVwibW9kZWxcIj48L2JpemRvYy1hdHRhY2htZW50cz5cbiAgPGJpemRvYy1ldmVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtZXZlbnRzPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxzcGFuIGNsYXNzPVwibm90ZVwiIFtpbm5lckhUTUxdPVwibm90ZSB8IHNhbml0aXplSHRtbFwiIChjbGljayk9XCJjaGF0KCRldmVudClcIj48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgQGZvciAoYSBvZiBhY3Rpb25zOyB0cmFjayBhKSB7XG4gICAgQGlmIChhLmljb24pIHtcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZW5kKGEubmFtZSlcIiBbYml6ZG9jVG9vbHRpcF09XCJhLnRpdGxlXCIgY2xhc3M9XCJ0b29sXCI+XG4gICAgICAgIDxtYXQtaWNvbj57e2EuaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgfVxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJtYXQtc21hbGwgcm93XCI+XG4gICAgPHNwYW4+e3ttb2RlbC5zdGF0ZUlkIHwgc3RhdGUgOiAncGFzdCcgfX08L3NwYW4+XG4gICAgJm5ic3A7XG4gICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCIgW2JpemRvY1Rvb2x0aXBdPVwibW9kZWwucmVjZWl2ZWQgfCBhbUNhbGVuZGFyXCI+e3ttb2RlbC5yZWNlaXZlZCB8IGFtVGltZUFnb319PC9zcGFuPlxuICAgICZuYnNwO1xuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwic2VuZGVyIHwgc2FuaXRpemVIdG1sXCIgKGNsaWNrKT1cImNoYXQoJGV2ZW50KVwiIGNsYXNzPVwid2hvXCI+PC9zcGFuPiZuYnNwO1xuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiYXdhaXRpbmcgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCIgY2xhc3M9XCJ3aG9cIj48L3NwYW4+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgQGlmICh0eXBpbmcpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LXNtYWxsXCI+e3snU29tZW9uZVR5cGluZyd8dHJhbnNsYXRlfX08L3NwYW4+XG4gICAgfVxuICAgIEBpZiAobW9kZWwuY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibWF0LXNtYWxsXCI+XG4gICAgICAgIEBpZiAoIW5ld0NvbW1lbnRzKSB7XG4gICAgICAgICAgPHNwYW4+e3ttb2RlbC5jb21tZW50cy5sZW5ndGggPiAxID8gKCdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCkgOiAnT25lQ29tbWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiJ05ld0NvbW1lbnRzQ291bnQnIHwgdHJhbnNsYXRlIDogbW9kZWwuY29tbWVudHMubGVuZ3RoIDogbmV3Q29tbWVudHMgfCBzYW5pdGl6ZUh0bWxcIj48L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIEBpZiAobW9kZWwudGFncykge1xuICAgIDxtYXQtY2hpcC1zZXQ+XG4gICAgICBAZm9yICh0YWcgb2YgbW9kZWwudGFnczsgdHJhY2sgdGFnKSB7XG4gICAgICAgIDxtYXQtY2hpcCBbZGlzYWJsZWRdPVwidHJ1ZVwiPnt7dGFnfX08L21hdC1jaGlwPlxuICAgICAgfVxuICAgIDwvbWF0LWNoaXAtc2V0PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -81,7 +81,10 @@ export const SwapAnimation = [
81
81
  transition(':decrement', [style({ transform: 'translateX(-100px)' }), animate('200ms', style({ transform: 'translateX(0)' }))])
82
82
  ];
83
83
  export const VerticalSwapAnimation = [
84
- transition(':increment', [style({ transform: 'translateY(50px)' }), animate('200ms', style({ transform: 'translateY(0)' }))]),
84
+ transition(':increment', [style({
85
+ transform: 'translateY(50px)',
86
+ overflow: 'hidden'
87
+ }), animate('200ms', style({ transform: 'translateY(0)' }))]),
85
88
  transition(':decrement', [style({ transform: 'translateY(-50px)' }), animate('200ms', style({ transform: 'translateY(0)' }))])
86
89
  ];
87
90
  export const matrixAnimation = trigger('table', [transition('void=>*', [
@@ -162,4 +165,4 @@ export const paramAnimation = trigger('param', [state('*', style({ backgroundCol
162
165
  transition('*<=>*', animate(200, style({ backgroundColor: 'unset', transform: 'scale(1)' })))]);
163
166
  export const queryAnimation = trigger('query', [state('*', style({})),
164
167
  transition('*<=>*', animate(0, style({})))]);
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQVksS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFTLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNJLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFO0lBQzNDLFVBQVUsQ0FBQyxRQUFRLEVBQ2pCO1FBQ0UsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7S0FDMUUsQ0FBQztDQUFDLENBQUMsQ0FBQztBQUVULE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUU7SUFDN0QsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsVUFBVSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ2pGLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsc0NB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U0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdEgsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxFQUM3QixLQUFLLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRSxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBhbmltYXRlLCBzdHlsZSwgc2VxdWVuY2UsIHF1ZXJ5LCBzdGFnZ2VyLCBhbmltYXRlQ2hpbGQsIHN0YXRlLCBncm91cCwga2V5ZnJhbWVzIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5leHBvcnQgY29uc3Qgbm9uZUFuaW1hdGlvbiA9IHRyaWdnZXIoJ25vbmUnLCBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJyxcclxuICAgIFtcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwcHgpJyB9KSxcclxuICAgICAgYW5pbWF0ZSgnNDAwbXMgZWFzZScsIHN0eWxlKHsgb3BhY2l0eTogLjIsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKVxyXG4gICAgXSldKTtcclxuXHJcbmV4cG9ydCBjb25zdCBleHBhbmRMaXN0SXRlbUFuaW1hdGlvbiA9IHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJywgZGlzcGxheTogJycgfSkpLFxyXG4gIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG1pbkhlaWdodDogJzUwcHgnLCBkaXNwbGF5OiAnJyB9KSksXHJcbiAgdHJhbnNpdGlvbignZXhwYW5kZWQgPT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA9PiBleHBhbmRlZCcsIGFuaW1hdGUoJzI1MG1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKVxyXG5dKTtcclxuZXhwb3J0IGNvbnN0IGxpc3RJdGVtVXBkYXRlZEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3VwZGF0ZWQnLCBbc3RhdGUoJ3RydWUnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIC8qYmFja2dyb3VuZDogJ3doaXRlJyovIH0pKSxcclxudHJhbnNpdGlvbignKj0+dHJ1ZScsIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAsIC8qYmFja2dyb3VuZDogJ2RhcmtncmF5JyovIH0pKSldKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWFyY2hBbmltYXRpb24gPSB0cmlnZ2VyKCdzZWFyY2gnLFxyXG4gIFtzdGF0ZSgnZmFsc2UnLCBzdHlsZSh7IHdpZHRoOiAwLCBwYWRkaW5nOiAwLCBib3JkZXJXaWR0aDogMCB9KSksXHJcbiAgc3RhdGUoJ3RydWUnLCBzdHlsZSh7IHdpZHRoOiAnMzAwcHgnLCBwYWRkaW5nOiAnMnB4IDZweCcsIGJvcmRlcldpZHRoOiAnMXB4JyB9KSksXHJcbiAgdHJhbnNpdGlvbignKiA8PT4gKicsIGFuaW1hdGUoMjAwLCBzdHlsZSh7fSkpKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlc2hib2FyZEFuaW1hdGlvbiA9IHRyaWdnZXIoJ2Rlc2hib2FyZCcsXHJcbiAgW3RyYW5zaXRpb24oJyogPD0+IConLCBbcXVlcnkoJ0BjYXJkJyxcclxuICAgIHN0YWdnZXIoMjUwLCBhbmltYXRlQ2hpbGQoKSksIHsgb3B0aW9uYWw6IHRydWUgfSldKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlc2hib2FyZENhcmRBbmltYXRpb24gPSB0cmlnZ2VyKCdjYXJkJywgW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAncm90YXRlWSgxODBkZWcpJyxcclxuICAgIH0pLFxyXG4gICAgYW5pbWF0ZShcIi41cyBlYXNlXCIsIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAncm90YXRlWSgwZGVnKScsXHJcbiAgICB9KSlcclxuICBdKVxyXG5dKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTaGFrZUFuaW1hdGlvbiA9IFtcclxuICBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgwKScgfSksXHJcbiAgYW5pbWF0ZSgnMC4xcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDJkZWcpJyB9KSksXHJcbiAgYW5pbWF0ZSgnMC4xcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKC0yZGVnKScgfSkpLFxyXG4gIGFuaW1hdGUoJzAuMXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgyZGVnKScgfSkpLFxyXG4gIGFuaW1hdGUoJzAuMXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgwKScgfSkpLFxyXG5dO1xyXG5leHBvcnQgY29uc3QgRW50ZXJFeGl0TGVmdCA9IFtcclxuICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTIwMHB4KScgfSksXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSlcclxuICAgICksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTIwMHB4KScgfSlcclxuICAgIClcclxuICBdKVxyXG5dO1xyXG5leHBvcnQgY29uc3QgRW50ZXJFeGl0UmlnaHQgPSBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDIwMHB4KScgfSksXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSlcclxuICAgICksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMjAwcHgpJyB9KVxyXG4gICAgKVxyXG4gIF0pXHJcbl07XHJcbmV4cG9ydCBjb25zdCBFbnRlckV4aXRUb3AgPSBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yMDBweCknIH0pLFxyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXHJcbiAgICApLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDIwMHB4KScgfSlcclxuICAgIClcclxuICBdKVxyXG5dO1xyXG5leHBvcnQgY29uc3QgRmFkZVNsaWRlSW5PdXQgPSBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJyB9KSxcclxuICAgIGFuaW1hdGUoJzUwMG1zJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTBweCknIH0pKSxcclxuICBdKSxcclxuXTtcclxuZXhwb3J0IGNvbnN0IFB1bHNlQW5pbWF0aW9uID0gYW5pbWF0ZSgnMXMnLCBrZXlmcmFtZXMoW1xyXG4gIHN0eWxlKHsgb3BhY2l0eTogMC4xLCBvZmZzZXQ6IDAuMSB9KSxcclxuICBzdHlsZSh7IG9wYWNpdHk6IDAuNiwgb2Zmc2V0OiAwLjIgfSksXHJcbiAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDAuNSB9KSxcclxuICBzdHlsZSh7IG9wYWNpdHk6IDAuMiwgb2Zmc2V0OiAwLjcgfSlcclxuXSkpO1xyXG5leHBvcnQgY29uc3QgU3dhcEFuaW1hdGlvbiA9IFtcclxuICAgIHRyYW5zaXRpb24oJzppbmNyZW1lbnQnLCBbc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMHB4KScgfSksIGFuaW1hdGUoJzIwMG1zJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSldKSxcclxuICAgIHRyYW5zaXRpb24oJzpkZWNyZW1lbnQnLCBbc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDBweCknIH0pLCBhbmltYXRlKCcyMDBtcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSlcclxuXTtcclxuZXhwb3J0IGNvbnN0IFZlcnRpY2FsU3dhcEFuaW1hdGlvbiA9IFtcclxuICB0cmFuc2l0aW9uKCc6aW5jcmVtZW50JywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSg1MHB4KScgfSksIGFuaW1hdGUoJzIwMG1zJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSldKSxcclxuICB0cmFuc2l0aW9uKCc6ZGVjcmVtZW50JywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTBweCknIH0pLCBhbmltYXRlKCcyMDBtcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSkpXSlcclxuXTtcclxuZXhwb3J0IGNvbnN0IG1hdHJpeEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3RhYmxlJyxcclxuICBbdHJhbnNpdGlvbigndm9pZD0+KicsXHJcbiAgICBbXHJcbiAgICAgIHF1ZXJ5KCcubWF0LW1kYy1yb3cnLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMHB4KScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDEwMCxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdub25lJyB9KSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgIF0pXSk7XHJcbmV4cG9ydCBjb25zdCBzd2FwQW5pbWF0aW9uID0gdHJpZ2dlcignc3dhcGUnLCBTd2FwQW5pbWF0aW9uKVxyXG5leHBvcnQgY29uc3QgdmVydGljYWxTd2FwQW5pbWF0aW9uID0gdHJpZ2dlcigndi1zd2FwZScsIFZlcnRpY2FsU3dhcEFuaW1hdGlvbilcclxuXHJcbmV4cG9ydCBjb25zdCBwYWdlQW5pbWF0aW9uID0gdHJpZ2dlcigncGFnZScsIFtcclxuICBzdGF0ZSgnOmVudGVyJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSksXHJcbiAgc3RhdGUoJzpsZWF2ZScsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtNTAlKScgfSkpLFxyXG4gIHRyYW5zaXRpb24oJyogPT4gKicsIGFuaW1hdGUoMzAwKSldKTtcclxuXHJcbmV4cG9ydCBjb25zdCBmYWJBbmltYXRpb24gPSB0cmlnZ2VyKCdmYWJGdWxsJywgW1xyXG4gIC8vc3RhdGUoJ3dvcmtpbmcnLCBzdHlsZSh7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH0pKSxcclxuICAvL3F1ZXJ5KCdtYXQtaWNvbicsIHN0eWxlKHsgJ2ZvbnQtc2l6ZSc6ICcyMDBweCcgfSkpXHJcbiAgdHJhbnNpdGlvbignKiA8PT4gd29ya2luZycsIFthbmltYXRlKCczNTBtcycpXSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc3VibWVudUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3N1Ym1lbnUnLCBbXHJcbiAgc3RhdGUoJ2Z1bGwnLCBzdHlsZSh7IG1pbldpZHRoOiAnMjAwcHgnLCB3aWR0aDogJyonIH0pKSxcclxuICBzdGF0ZSgnc2hyaW5rJywgc3R5bGUoeyBtaW5XaWR0aDogJzYwcHgnLCB3aWR0aDogJzYwcHgnIH0pKSxcclxuICB0cmFuc2l0aW9uKCdmdWxsPD0+c2hyaW5rLCB2b2lkPT5zaHJpbmsnLCBbYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnKV0pLFxyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgd2lkdGg6IDAgfSksXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgbWluV2lkdGg6ICcyMDBweCcsIHdpZHRoOiAnKicgfSlcclxuICAgICksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzIwMG1zIGVhc2Utb3V0JyxcclxuICAgICAgc3R5bGUoeyBtaW5XaWR0aDogMCwgd2lkdGg6IDAgfSlcclxuICAgIClcclxuICBdKVxyXG5dKTtcclxuXHJcbmV4cG9ydCBjb25zdCBsaXN0QW5pbWF0aW9uID0gdHJpZ2dlcignbGlzdCcsIFtcclxuICAvLyAgdHJhbnNpdGlvbignKiA8PT4gKicsIFtcclxuICAvLyAgICBxdWVyeSgnQGl0ZW0nLFxyXG4gIC8vICAgICAgc3RhZ2dlcig1MCwgYW5pbWF0ZUNoaWxkKCkpLCB7IG9wdGlvbmFsOiB0cnVlIH1cclxuICAvLyAgICApXHJcbiAgLy8gIF0pXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgaXRlbUFuaW1hdGlvbiA9XHJcbiAgdHJpZ2dlcignaXRlbScsIFtcclxuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMHB4KScgfSksXHJcbiAgICAgIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ25vbmUnIH0pKVxyXG4gICAgXSlcclxuICBdKTtcclxuXHJcbmV4cG9ydCBjb25zdCB0YWJzQW5pbWF0aW9uID0gdHJpZ2dlcigndGFicycsIFtcclxuICAvL3RyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAvLyAgc3R5bGUoeyB3aWR0aDogMCB9KSxcclxuICAvLyAgYW5pbWF0ZShcclxuICAvLyAgICAnMjUwbXMgZWFzZS1vdXQnLFxyXG4gIC8vICAgIHN0eWxlKHsgbWluV2lkdGg6ICcyMDBweCcsIHdpZHRoOiAnKicgfSlcclxuICAvLyAgKSxcclxuICAvL10pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICcyMDBtcyBlYXNlLW91dCdcclxuICAgICAgLCBzdHlsZSh7IG1pbldpZHRoOiAwLCB3aWR0aDogMCB9KSlcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqIDw9PiAqJyxcclxuICAgIFtzdHlsZSh7IHdpZHRoOiAne3tzdGFydFdpZHRofX1weCcgfSksIGFuaW1hdGUoJy41cyBlYXNlJyldLCB7IHBhcmFtczogeyBzdGFydFdpZHRoOiAwIH0gfSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3QgdGFiQW5pbWF0aW9uID0gdHJpZ2dlcigndGFiJywgU3dhcEFuaW1hdGlvbik7XHJcblxyXG5leHBvcnQgY29uc3QgcGFuZXNBbmltYXRpb24gPSB0cmlnZ2VyKCdwYW5lcycsIFt0cmFuc2l0aW9uKCc6ZW50ZXIsIDpsZWF2ZScsIFtcclxuICBxdWVyeSgnQHBhbmUnLFxyXG4gICAgc3RhZ2dlcigxNTAsIGFuaW1hdGVDaGlsZCgpKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXSldKTtcclxuZXhwb3J0IGNvbnN0IHBhbmVzVGl0bGVBbmltYXRpb24gPSB0cmlnZ2VyKCd0aXRsZScsIFtcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBxdWVyeSgnaDEnLFxyXG4gICAgICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMHB4KScgfSkpKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPD0+KicsIFtcclxuICAgIHF1ZXJ5KCdoMScsXHJcbiAgICAgIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pLFxyXG4gICAgICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgXSlcclxuXSk7XHJcbmV4cG9ydCBjb25zdCBwYW5lQW5pbWF0aW9uID0gdHJpZ2dlcigncGFuZScsIFtcclxuICAvL3RyYW5zaXRpb24oJzplbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLFxyXG4gIC8vICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgLy90cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pKV0pXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgcGFyYW1BbmltYXRpb24gPSB0cmlnZ2VyKCdwYXJhbScsIFtzdGF0ZSgnKicsIHN0eWxlKHsgYmFja2dyb3VuZENvbG9yOiAndW5zZXQnLCB0cmFuc2Zvcm06ICdzY2FsZSgxKScgfSkpLFxyXG50cmFuc2l0aW9uKCcqPD0+KicsIGFuaW1hdGUoMjAwLFxyXG4gIHN0eWxlKHsgYmFja2dyb3VuZENvbG9yOiAndW5zZXQnLCB0cmFuc2Zvcm06ICdzY2FsZSgxKScgfSkpKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHF1ZXJ5QW5pbWF0aW9uID0gdHJpZ2dlcigncXVlcnknLCBbc3RhdGUoJyonLCBzdHlsZSh7fSkpLFxyXG50cmFuc2l0aW9uKCcqPD0+KicsIGFuaW1hdGUoMCwgc3R5bGUoe30pKSldKTtcclxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQVksS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFTLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNJLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFO0lBQzNDLFVBQVUsQ0FBQyxRQUFRLEVBQ2pCO1FBQ0UsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7S0FDMUUsQ0FBQztDQUFDLENBQUMsQ0FBQztBQUVULE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUU7SUFDN0QsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsVUFBVSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ2pGLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsc0NB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QUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN0SCxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQzdCLEtBQUssQ0FBQyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIGFuaW1hdGUsIHN0eWxlLCBzZXF1ZW5jZSwgcXVlcnksIHN0YWdnZXIsIGFuaW1hdGVDaGlsZCwgc3RhdGUsIGdyb3VwLCBrZXlmcmFtZXMgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcbmV4cG9ydCBjb25zdCBub25lQW5pbWF0aW9uID0gdHJpZ2dlcignbm9uZScsIFtcclxuICB0cmFuc2l0aW9uKCc6ZW50ZXInLFxyXG4gICAgW1xyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pLFxyXG4gICAgICBhbmltYXRlKCc0MDBtcyBlYXNlJywgc3R5bGUoeyBvcGFjaXR5OiAuMiwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXHJcbiAgICBdKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGV4cGFuZExpc3RJdGVtQW5pbWF0aW9uID0gdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnLCBkaXNwbGF5OiAnJyB9KSksXHJcbiAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgbWluSGVpZ2h0OiAnNTBweCcsIGRpc3BsYXk6ICcnIH0pKSxcclxuICB0cmFuc2l0aW9uKCdleHBhbmRlZCA9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcxcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXHJcbiAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgbGlzdEl0ZW1VcGRhdGVkQW5pbWF0aW9uID0gdHJpZ2dlcigndXBkYXRlZCcsIFtzdGF0ZSgndHJ1ZScsIHN0eWxlKHsgb3BhY2l0eTogMSwgLypiYWNrZ3JvdW5kOiAnd2hpdGUnKi8gfSkpLFxyXG50cmFuc2l0aW9uKCcqPT50cnVlJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgLypiYWNrZ3JvdW5kOiAnZGFya2dyYXknKi8gfSkpKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlYXJjaEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NlYXJjaCcsXHJcbiAgW3N0YXRlKCdmYWxzZScsIHN0eWxlKHsgd2lkdGg6IDAsIHBhZGRpbmc6IDAsIGJvcmRlcldpZHRoOiAwIH0pKSxcclxuICBzdGF0ZSgndHJ1ZScsIHN0eWxlKHsgd2lkdGg6ICczMDBweCcsIHBhZGRpbmc6ICcycHggNnB4JywgYm9yZGVyV2lkdGg6ICcxcHgnIH0pKSxcclxuICB0cmFuc2l0aW9uKCcqIDw9PiAqJywgYW5pbWF0ZSgyMDAsIHN0eWxlKHt9KSkpXSk7XHJcblxyXG5leHBvcnQgY29uc3QgZGVzaGJvYXJkQW5pbWF0aW9uID0gdHJpZ2dlcignZGVzaGJvYXJkJyxcclxuICBbdHJhbnNpdGlvbignKiA8PT4gKicsIFtxdWVyeSgnQGNhcmQnLFxyXG4gICAgc3RhZ2dlcigyNTAsIGFuaW1hdGVDaGlsZCgpKSwgeyBvcHRpb25hbDogdHJ1ZSB9KV0pXSk7XHJcblxyXG5leHBvcnQgY29uc3QgZGVzaGJvYXJkQ2FyZEFuaW1hdGlvbiA9IHRyaWdnZXIoJ2NhcmQnLCBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoe1xyXG4gICAgICB0cmFuc2Zvcm06ICdyb3RhdGVZKDE4MGRlZyknLFxyXG4gICAgfSksXHJcbiAgICBhbmltYXRlKFwiLjVzIGVhc2VcIiwgc3R5bGUoe1xyXG4gICAgICB0cmFuc2Zvcm06ICdyb3RhdGVZKDBkZWcpJyxcclxuICAgIH0pKVxyXG4gIF0pXHJcbl0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNoYWtlQW5pbWF0aW9uID0gW1xyXG4gIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDApJyB9KSxcclxuICBhbmltYXRlKCcwLjFzJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMmRlZyknIH0pKSxcclxuICBhbmltYXRlKCcwLjFzJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoLTJkZWcpJyB9KSksXHJcbiAgYW5pbWF0ZSgnMC4xcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDJkZWcpJyB9KSksXHJcbiAgYW5pbWF0ZSgnMC4xcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDApJyB9KSksXHJcbl07XHJcbmV4cG9ydCBjb25zdCBFbnRlckV4aXRMZWZ0ID0gW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMjAwcHgpJyB9KSxcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KVxyXG4gICAgKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMjAwcHgpJyB9KVxyXG4gICAgKVxyXG4gIF0pXHJcbl07XHJcbmV4cG9ydCBjb25zdCBFbnRlckV4aXRSaWdodCA9IFtcclxuICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMjAwcHgpJyB9KSxcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KVxyXG4gICAgKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgyMDBweCknIH0pXHJcbiAgICApXHJcbiAgXSlcclxuXTtcclxuZXhwb3J0IGNvbnN0IEVudGVyRXhpdFRvcCA9IFtcclxuICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwMHB4KScgfSksXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSlcclxuICAgICksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMjAwcHgpJyB9KVxyXG4gICAgKVxyXG4gIF0pXHJcbl07XHJcbmV4cG9ydCBjb25zdCBGYWRlU2xpZGVJbk91dCA9IFtcclxuICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTBweCknIH0pLFxyXG4gICAgYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSkpLFxyXG4gIF0pLFxyXG5dO1xyXG5leHBvcnQgY29uc3QgUHVsc2VBbmltYXRpb24gPSBhbmltYXRlKCcxcycsIGtleWZyYW1lcyhbXHJcbiAgc3R5bGUoeyBvcGFjaXR5OiAwLjEsIG9mZnNldDogMC4xIH0pLFxyXG4gIHN0eWxlKHsgb3BhY2l0eTogMC42LCBvZmZzZXQ6IDAuMiB9KSxcclxuICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMC41IH0pLFxyXG4gIHN0eWxlKHsgb3BhY2l0eTogMC4yLCBvZmZzZXQ6IDAuNyB9KVxyXG5dKSk7XHJcbmV4cG9ydCBjb25zdCBTd2FwQW5pbWF0aW9uID0gW1xyXG4gIHRyYW5zaXRpb24oJzppbmNyZW1lbnQnLCBbc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMHB4KScgfSksIGFuaW1hdGUoJzIwMG1zJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSldKSxcclxuICB0cmFuc2l0aW9uKCc6ZGVjcmVtZW50JywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwcHgpJyB9KSwgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKV0pXHJcbl07XHJcbmV4cG9ydCBjb25zdCBWZXJ0aWNhbFN3YXBBbmltYXRpb24gPSBbXHJcbiAgdHJhbnNpdGlvbignOmluY3JlbWVudCcsIFtzdHlsZSh7XHJcbiAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDUwcHgpJyxcclxuICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xyXG4gIH0pLCBhbmltYXRlKCcyMDBtcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSkpXSksXHJcbiAgdHJhbnNpdGlvbignOmRlY3JlbWVudCcsIFtzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTUwcHgpJyB9KSwgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKV0pXHJcbl07XHJcbmV4cG9ydCBjb25zdCBtYXRyaXhBbmltYXRpb24gPSB0cmlnZ2VyKCd0YWJsZScsXHJcbiAgW3RyYW5zaXRpb24oJ3ZvaWQ9PionLFxyXG4gICAgW1xyXG4gICAgICBxdWVyeSgnLm1hdC1tZGMtcm93JyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcigxMDAsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnbm9uZScgfSkpXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICBdKV0pO1xyXG5leHBvcnQgY29uc3Qgc3dhcEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3N3YXBlJywgU3dhcEFuaW1hdGlvbilcclxuZXhwb3J0IGNvbnN0IHZlcnRpY2FsU3dhcEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3Ytc3dhcGUnLCBWZXJ0aWNhbFN3YXBBbmltYXRpb24pXHJcblxyXG5leHBvcnQgY29uc3QgcGFnZUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3BhZ2UnLCBbXHJcbiAgc3RhdGUoJzplbnRlcicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpLFxyXG4gIHN0YXRlKCc6bGVhdmUnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknIH0pKSxcclxuICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKDMwMCkpXSk7XHJcblxyXG5leHBvcnQgY29uc3QgZmFiQW5pbWF0aW9uID0gdHJpZ2dlcignZmFiRnVsbCcsIFtcclxuICAvL3N0YXRlKCd3b3JraW5nJywgc3R5bGUoeyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9KSksXHJcbiAgLy9xdWVyeSgnbWF0LWljb24nLCBzdHlsZSh7ICdmb250LXNpemUnOiAnMjAwcHgnIH0pKVxyXG4gIHRyYW5zaXRpb24oJyogPD0+IHdvcmtpbmcnLCBbYW5pbWF0ZSgnMzUwbXMnKV0pXHJcbl0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN1Ym1lbnVBbmltYXRpb24gPSB0cmlnZ2VyKCdzdWJtZW51JywgW1xyXG4gIHN0YXRlKCdmdWxsJywgc3R5bGUoeyBtaW5XaWR0aDogJzIwMHB4Jywgd2lkdGg6ICcqJyB9KSksXHJcbiAgc3RhdGUoJ3NocmluaycsIHN0eWxlKHsgbWluV2lkdGg6ICc2MHB4Jywgd2lkdGg6ICc2MHB4JyB9KSksXHJcbiAgdHJhbnNpdGlvbignZnVsbDw9PnNocmluaywgdm9pZD0+c2hyaW5rJywgW2FuaW1hdGUoJzEwMG1zIGVhc2Utb3V0JyldKSxcclxuICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICBzdHlsZSh7IHdpZHRoOiAwIH0pLFxyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzIwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG1pbldpZHRoOiAnMjAwcHgnLCB3aWR0aDogJyonIH0pXHJcbiAgICApLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICcyMDBtcyBlYXNlLW91dCcsXHJcbiAgICAgIHN0eWxlKHsgbWluV2lkdGg6IDAsIHdpZHRoOiAwIH0pXHJcbiAgICApXHJcbiAgXSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3QgbGlzdEFuaW1hdGlvbiA9IHRyaWdnZXIoJ2xpc3QnLCBbXHJcbiAgLy8gIHRyYW5zaXRpb24oJyogPD0+IConLCBbXHJcbiAgLy8gICAgcXVlcnkoJ0BpdGVtJyxcclxuICAvLyAgICAgIHN0YWdnZXIoNTAsIGFuaW1hdGVDaGlsZCgpKSwgeyBvcHRpb25hbDogdHJ1ZSB9XHJcbiAgLy8gICAgKVxyXG4gIC8vICBdKVxyXG5dKTtcclxuZXhwb3J0IGNvbnN0IGl0ZW1BbmltYXRpb24gPVxyXG4gIHRyaWdnZXIoJ2l0ZW0nLCBbXHJcbiAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDBweCknIH0pLFxyXG4gICAgICBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIiwgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdub25lJyB9KSlcclxuICAgIF0pXHJcbiAgXSk7XHJcblxyXG5leHBvcnQgY29uc3QgdGFic0FuaW1hdGlvbiA9IHRyaWdnZXIoJ3RhYnMnLCBbXHJcbiAgLy90cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgLy8gIHN0eWxlKHsgd2lkdGg6IDAgfSksXHJcbiAgLy8gIGFuaW1hdGUoXHJcbiAgLy8gICAgJzI1MG1zIGVhc2Utb3V0JyxcclxuICAvLyAgICBzdHlsZSh7IG1pbldpZHRoOiAnMjAwcHgnLCB3aWR0aDogJyonIH0pXHJcbiAgLy8gICksXHJcbiAgLy9dKSxcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMjAwbXMgZWFzZS1vdXQnXHJcbiAgICAgICwgc3R5bGUoeyBtaW5XaWR0aDogMCwgd2lkdGg6IDAgfSkpXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignKiA8PT4gKicsXHJcbiAgICBbc3R5bGUoeyB3aWR0aDogJ3t7c3RhcnRXaWR0aH19cHgnIH0pLCBhbmltYXRlKCcuNXMgZWFzZScpXSwgeyBwYXJhbXM6IHsgc3RhcnRXaWR0aDogMCB9IH0pXHJcbl0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRhYkFuaW1hdGlvbiA9IHRyaWdnZXIoJ3RhYicsIFN3YXBBbmltYXRpb24pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBhbmVzQW5pbWF0aW9uID0gdHJpZ2dlcigncGFuZXMnLCBbdHJhbnNpdGlvbignOmVudGVyLCA6bGVhdmUnLCBbXHJcbiAgcXVlcnkoJ0BwYW5lJyxcclxuICAgIHN0YWdnZXIoMTUwLCBhbmltYXRlQ2hpbGQoKSksIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcbl0pXSk7XHJcbmV4cG9ydCBjb25zdCBwYW5lc1RpdGxlQW5pbWF0aW9uID0gdHJpZ2dlcigndGl0bGUnLCBbXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgcXVlcnkoJ2gxJyxcclxuICAgICAgYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pKSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignKjw9PionLCBbXHJcbiAgICBxdWVyeSgnaDEnLFxyXG4gICAgICBbc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwcHgpJyB9KSxcclxuICAgICAgYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKV0pLFxyXG4gIF0pXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgcGFuZUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3BhbmUnLCBbXHJcbiAgLy90cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSxcclxuICAvLyAgYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKV0pLFxyXG4gIC8vdHJhbnNpdGlvbignOmxlYXZlJywgW2FuaW1hdGUoJzUwMG1zJywgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwcHgpJyB9KSldKVxyXG5dKTtcclxuZXhwb3J0IGNvbnN0IHBhcmFtQW5pbWF0aW9uID0gdHJpZ2dlcigncGFyYW0nLCBbc3RhdGUoJyonLCBzdHlsZSh7IGJhY2tncm91bmRDb2xvcjogJ3Vuc2V0JywgdHJhbnNmb3JtOiAnc2NhbGUoMSknIH0pKSxcclxudHJhbnNpdGlvbignKjw9PionLCBhbmltYXRlKDIwMCxcclxuICBzdHlsZSh7IGJhY2tncm91bmRDb2xvcjogJ3Vuc2V0JywgdHJhbnNmb3JtOiAnc2NhbGUoMSknIH0pKSldKTtcclxuXHJcbmV4cG9ydCBjb25zdCBxdWVyeUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3F1ZXJ5JywgW3N0YXRlKCcqJywgc3R5bGUoe30pKSxcclxudHJhbnNpdGlvbignKjw9PionLCBhbmltYXRlKDAsIHN0eWxlKHt9KSkpXSk7XHJcbiJdfQ==