@bizdoc/core 2.1.9 → 2.1.10
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.
- package/assets/themes/brown.min.css +1 -1
- package/assets/themes/dark.min.css +1 -1
- package/assets/themes/deep-purple-light-blue.min.css +1 -1
- package/assets/themes/deep-purple-teal.min.css +1 -1
- package/assets/themes/default.min.css +1 -1
- package/assets/themes/green.min.css +1 -1
- package/assets/themes/indigo.min.css +1 -1
- package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/declarations.mjs +1 -1
- package/esm2022/lib/admin/architecture/designer-element.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/designer.component.mjs +5 -3
- package/esm2022/lib/admin/architecture/elements/action.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/elements/cube.component.mjs +3 -4
- package/esm2022/lib/admin/architecture/elements/folder.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/elements/form.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/elements/guide.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/elements/job.component.mjs +59 -0
- package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +3 -3
- package/esm2022/lib/admin/architecture/elements/type.component.mjs +3 -3
- package/esm2022/lib/admin/document-trace/trace-element.component.mjs +3 -3
- package/esm2022/lib/admin/form/designer/box-designer.component.mjs +3 -3
- package/esm2022/lib/admin/profiler/outofoffice.component.mjs +3 -3
- package/esm2022/lib/admin/profiler/profiler.component.mjs +3 -3
- package/esm2022/lib/admin/system.service.mjs +7 -1
- package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
- package/esm2022/lib/compose/box/box.component.mjs +3 -3
- package/esm2022/lib/compose/comments/edits.component.mjs +3 -3
- package/esm2022/lib/compose/comments/votes.component.mjs +3 -3
- package/esm2022/lib/compose/form.component.mjs +3 -3
- package/esm2022/lib/compose/trace/trace.component.mjs +3 -3
- package/esm2022/lib/compose/version-compare/version.pane.component.mjs +3 -3
- package/esm2022/lib/core/animations.mjs +2 -2
- package/esm2022/lib/core/checkbox.mjs +3 -3
- package/esm2022/lib/core/fields/options.component.mjs +3 -3
- package/esm2022/lib/core/guide/guide.component.mjs +3 -3
- package/esm2022/lib/core/guide/help-tip.component.mjs +3 -3
- package/esm2022/lib/core/none.component.mjs +5 -5
- package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +3 -3
- package/esm2022/lib/core/save-changes.dialog.mjs +3 -3
- package/esm2022/lib/cube/matrix/table.component.mjs +3 -3
- package/esm2022/lib/dashboard/score/activity.widget.mjs +3 -3
- package/esm2022/lib/home/options/options.component.mjs +3 -3
- package/esm2022/lib/impersonate/impersonate.component.mjs +3 -3
- package/esm2022/lib/scheduler/schedule.component.mjs +3 -3
- package/esm2022/lib/system.module.mjs +6 -3
- package/fesm2022/bizdoc-core.mjs +127 -76
- package/fesm2022/bizdoc-core.mjs.map +1 -1
- package/lib/admin/architecture/declarations.d.ts +1 -0
- package/lib/admin/architecture/elements/cube.component.d.ts +1 -2
- package/lib/admin/architecture/elements/job.component.d.ts +19 -0
- package/lib/admin/system.service.d.ts +5 -0
- package/lib/system.module.d.ts +56 -55
- package/package.json +9 -9
@@ -258,7 +258,7 @@ export let ProfilerComponent = class ProfilerComponent {
|
|
258
258
|
this._destroy.complete();
|
259
259
|
}
|
260
260
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ProfilerComponent, deps: [{ token: i1.PromptService }, { token: i2.UtilityRef }, { token: i3.SessionService }, { token: i4.MatDialog }, { token: i5.DocumentInfo }, { token: i6.ChatInfo }, { token: i7.GuideService }, { token: i8.PanesRouter }, { token: i0.ChangeDetectorRef }, { token: i9.PaneRef }, { token: i10.TranslateService }, { token: i11.AccountService }, { token: i12.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
261
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assignTpl", first: true, predicate: ["assignTpl"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"], dependencies: [{ kind: "directive", type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i12.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: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i12.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i12.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i14.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { kind: "directive", type: i14.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { kind: "component", type: i15.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i15.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i15.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i15.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i15.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i18.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i17.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i19.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i20.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i21.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i21.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i22.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: i23.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i13.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DifferencePipe, name: "amDifference" }, { kind: "pipe", type: i26.DurationPipe, name: "amDuration" }, { kind: "pipe", type: i27.RolePipe, name: "role" }, { kind: "pipe", type: i28.TranslatePipe, name: "translate" }] }); }
|
261
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assignTpl", first: true, predicate: ["assignTpl"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-mdc-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-mdc-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\">{{p.value }}</td>\r\n <td class=\"mat-mdc-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-mdc-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-mdc-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"], dependencies: [{ kind: "directive", type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i12.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: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i12.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i12.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i14.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { kind: "directive", type: i14.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { kind: "component", type: i15.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i15.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i15.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i15.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i15.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i18.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i17.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i19.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i20.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i21.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i21.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i22.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: i23.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i13.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DifferencePipe, name: "amDifference" }, { kind: "pipe", type: i26.DurationPipe, name: "amDuration" }, { kind: "pipe", type: i27.RolePipe, name: "role" }, { kind: "pipe", type: i28.TranslatePipe, name: "translate" }] }); }
|
262
262
|
};
|
263
263
|
ProfilerComponent = __decorate([
|
264
264
|
BizDoc({ selector: 'bizdoc-user-profiler' })
|
@@ -268,7 +268,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
268
268
|
type: Component,
|
269
269
|
args: [{ host: {
|
270
270
|
class: 'pane'
|
271
|
-
}, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"] }]
|
271
|
+
}, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-mdc-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-mdc-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\">{{p.value }}</td>\r\n <td class=\"mat-mdc-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-mdc-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-mdc-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"] }]
|
272
272
|
}], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i2.UtilityRef }, { type: i3.SessionService }, { type: i4.MatDialog }, { type: i5.DocumentInfo }, { type: i6.ChatInfo }, { type: i7.GuideService }, { type: i8.PanesRouter }, { type: i0.ChangeDetectorRef }, { type: i9.PaneRef }, { type: i10.TranslateService }, { type: i11.AccountService }, { type: i12.FormBuilder }]; }, propDecorators: { chart: [{
|
273
273
|
type: ViewChild,
|
274
274
|
args: ['activity']
|
@@ -282,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
282
282
|
type: HostListener,
|
283
283
|
args: ['window:keydown.f1', ['$event']]
|
284
284
|
}] } });
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9wcm9maWxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVzFFLFdBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBcUQ1QixXQUFXO0lBQ1gsWUFBb0IsR0FB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QUFTLEdBQUcsRUFBRSxDQUFDO1lBQzdCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGFBQWEsQ0FBQyxDQUEwQjtRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBeE9VLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9UQUdHLFVBQVUsc0hDdEMzQyx3NUpBOEdBOztBRDNFYSxpQkFBaUI7SUFGN0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsZUFBZTtHQUNGLGlCQUFpQixDQXlPN0I7MkZBek9ZLGlCQUFpQjtrQkFUN0IsU0FBUzsyQkFHRjt3QkFDSixLQUFLLEVBQUUsTUFBTTtxQkFDZDt3YUFNc0IsS0FBSztzQkFBM0IsU0FBUzt1QkFBQyxVQUFVO2dCQUN3QixZQUFZO3NCQUF4RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ25CLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFpRnRCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBDT01NQSwgRU5URVIsIFNFTUlDT0xPTiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEF4aXNNb2RlbCwgQm9yZGVyTW9kZWwsIENoYXJ0Q29tcG9uZW50LCBJUG9pbnRFdmVudEFyZ3MsIElUb29sdGlwUmVuZGVyRXZlbnRBcmdzLCBMZWdlbmRTZXJpZXNNb2RlbCwgTWFya2VyT3B0aW9uc01vZGVsLCBTZXJpZXNNb2RlbCwgVG9vbHRpcFNldHRpbmdzTW9kZWwsIFpvb21TZXR0aW5nc01vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgc3dpdGNoTWFwLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEdyYW50U2V0dGluZ3MsIEd1aWRlU3RlcCwgT3V0T2ZPZmZpY2VTZXR0aW5ncywgVXNlckluZm8gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tICcuLi91dGlsaXR5LXJlZic7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uL2NvcmUvaW5mby9kb2N1bWVudC1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9ndWlkZS9ndWlkZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhdEluZm8gfSBmcm9tICcuLi8uLi9jaGF0L2NoYXQtaW5mbyc7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmJztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFByb2ZpbGVTZXR0aW5nc0RpYWxvZywgT3V0T2ZPZmZpY2VEYXRhIH0gZnJvbSAnLi9vdXRvZm9mZmljZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9LFxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdXNlci1wcm9maWxlcicgfSlcclxuLyoqIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWFkb25seSBzZWFyY2ggPSB0aGlzLl9mYi5jb250cm9sKG51bGwpO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JykgY2hhcnQ6IENoYXJ0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNoYXJ0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhc3NpZ25UcGwnKSBhc3NpZ25UcGw6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcmVhZG9ubHkgd2hvID0gdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICByZWFkb25seSBwcmltYXJ5WEF4aXMgPSB7XHJcbiAgICB2YWx1ZVR5cGU6ICdEYXRlVGltZScsXHJcbiAgICBsYWJlbEZvcm1hdDogJ01NTSBkZCcsXHJcbiAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVlBeGlzID0ge1xyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBzaXplOiAnMHB4J1xyXG4gICAgfSxcclxuICB9IGFzIEF4aXNNb2RlbDtcclxuICByZWFkb25seSB6b29tU2V0dGluZ3M6IFpvb21TZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IHRydWUsXHJcbiAgICBlbmFibGVQaW5jaFpvb21pbmc6IHRydWUsXHJcbiAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsXHJcbiAgICBlbmFibGVTY3JvbGxiYXI6IHRydWVcclxuICB9O1xyXG4gIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gICAgc2hhcmVkOiB0cnVlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBsZWdlbmQ6IExlZ2VuZFNlcmllc01vZGVsID0ge1xyXG4gICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgIH1cclxuICB9O1xyXG4gIHJlYWRvbmx5IGJvcmRlciA9IHsgd2lkdGg6IDAgfSBhcyBCb3JkZXJNb2RlbDtcclxuICByZWFkb25seSBtYXJrZXI6IE1hcmtlck9wdGlvbnNNb2RlbCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICB3aWR0aDogMTAsXHJcbiAgICBoZWlnaHQ6IDEwXHJcbiAgfVxyXG4gIHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBhc3NpZ25hYmxlJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBwYWxldHRlczogc3RyaW5nW10gPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgdGhlbWU6ICdNYXRlcmlhbCcgfCAnTWF0ZXJpYWxEYXJrJyA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICBkYXRhOiBQcm9maWxlSW5mbztcclxuICBjb2xzID0gMjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWFkb25seSBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQSwgU0VNSUNPTE9OXTtcclxuICBwcml2YXRlIF91c2VySWQ6IHN0cmluZztcclxuICAvKiogY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdXRpbGl0eVJlZjogVXRpbGl0eVJlZjxib29sZWFuLCBQcm9maWxlck1vZGVsLCBQcm9maWxlSW5mbywgc3RyaW5nPixcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudEluZm86IERvY3VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgX2NoYXQ6IENoYXRJbmZvLFxyXG4gICAgcHJpdmF0ZSBfZ3VpZGU6IEd1aWRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPFByb2ZpbGVyQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5jb2xzID0gMjtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgICAgIHRoaXMucGFsZXR0ZXMgPSBfc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGFuZS5xdWVyeVBhcmFtc0NoYW5nZSgpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgY29uc3QgeyB1c2VySWQgfSA9IHA7XHJcbiAgICAgIHVzZXJJZCAmJiB0aGlzLl9vcGVuKHVzZXJJZCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucmVzaXplZCgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFydD8uY2hhcnRSZXNpemUoKSk7XHJcbiAgICB0aGlzLnVzZXJzJCA9IHRoaXMuc2VhcmNoLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcclxuICAgICAgZGVib3VuY2VUaW1lKDI1MCksXHJcbiAgICAgIGZpbHRlcih2ID0+ICFpc09iamVjdCh2KSksXHJcbiAgICAgIHN3aXRjaE1hcCh2ID0+IHRoaXMuX2FjY291bnRzLmZpbmRBbGwodikpKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1zZXR0aW5nc10nLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ091dE9mT2ZmaWNlSGVscCcpXHJcbiAgICAgIH0pO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRhdGEuYWN0aXZpdHkpLmxlbmd0aCAmJlxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPWFjdGl2aXR5XScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpdml0eUhlbHAnKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGEucGVuZGluZy5sZW5ndGggJiZcclxuICAgICAgICBzdGVwcy5wdXNoKHtcclxuICAgICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1wZW5kaW5nXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQZW5kaW5nSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMubGVuZ3RoICYmXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9cG9zaXRpb25zXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQb3NpdGlvbnNIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXJlYXNzaWduXScsXHJcbiAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnUmVhc3NpZ25IZWxwJylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHN0ZXBzLnB1c2goe1xyXG4gICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9c2VhcmNoXScsXHJcbiAgICAgIHBvc2l0aW9uOiAnQmVsb3cnLFxyXG4gICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQcm9maWxlclNlYXJjaEhlbHAnKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9ndWlkZS5zdGFydCh7XHJcbiAgICAgIG5hbWU6ICdwcm9maWxlcicsXHJcbiAgICAgIHN0ZXBzXHJcbiAgICB9KTtcclxuICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgY2hhbmdlKGV2dDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgeyBpZDogdXNlcklkIH0gPSBldnQub3B0aW9uLnZhbHVlO1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiB7IHVzZXJJZCB9IH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXNlcklkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfb3Blbih1c2VySWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdXNlcklkID0gdXNlcklkO1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5wb3B1bGF0ZSh1c2VySWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2gucmVzZXQobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB3aGlsZSAodGhpcy5jaGFydC5zZXJpZXMubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5jaGFydD8ucmVtb3ZlU2VyaWVzKDApO1xyXG4gICAgICAgIHRoaXMuY2hhcnQ/LmFkZFNlcmllcyh0aGlzLl9zZXJpZXMoKSk7XHJcbiAgICAgIH0sIGVycm9yOiAoKSA9PiB0aGlzLl9zYi5lcnJvcigpXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBfc2VyaWVzKCk6IFNlcmllc01vZGVsW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZGF0YS5hY3Rpdml0eSkubWFwKGEgPT4ge1xyXG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmRhdGEuYWN0aXZpdHlbYV07XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogJ1NjYXR0ZXInLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuX2FjdGlvbk5hbWUoYSksXHJcbiAgICAgICAgeE5hbWU6ICd0aW1lJyxcclxuICAgICAgICB5TmFtZTogJ2R1cmF0aW9uJyxcclxuICAgICAgICBkYXRhU291cmNlOiBsb2cubWFwKGwgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGwuaWQsXHJcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKGwudGltZSksXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiBsLmR1cmF0aW9uXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FjdGlvbk5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIGFjdGlvbiA/IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZSA6IG5hbWU7XHJcbiAgfVxyXG4gIHBvaW50Q2xpY2soZXZ0OiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgaWQgfSA9IGV2dC5zZXJpZXMuZGF0YVNvdXJjZVtldnQucG9pbnRJbmRleF07XHJcbiAgICB0aGlzLl9kb2N1bWVudEluZm8ub3BlbihpZCk7XHJcbiAgfVxyXG4gIHVzZXJEaXNwbGF5KGl0ZW06IFVzZXJJbmZvKSB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IG51bGw7XHJcbiAgfVxyXG4gIHRyYWNlKGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2FkbWluJywgJ3Rvb2xzJywgJ2RvY3VtZW50LXRyYWNlJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgZG9jdW1lbnRJZDogaWQuZW5jb2RlSWQoKSB9LFxyXG4gICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuRGVmZXIgfCBPcGVuUG9saWN5LlBpbm5hYmxlXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY2hhdCgpIHtcclxuICAgIHRoaXMuX2NoYXQub3Blbih0aGlzLl91c2VySWQpO1xyXG4gIH1cclxuICByZWFzc2lnbihwb3NpdGlvbj86IFBvc2l0aW9uSW5mbykge1xyXG4gICAgdGhpcy5hc3NpZ25hYmxlJCA9IHRoaXMuX2FjY291bnRzLmZpbmRBbGwoKS5waXBlKG1hcCh1ID0+IHUuZmlsdGVyKHUgPT4gdS5pZCAhPT0gdGhpcy5fdXNlcklkKSkpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4odGhpcy5hc3NpZ25UcGwsIHt9KS5hZnRlckNsb3NlZCgpLlxyXG4gICAgICBzdWJzY3JpYmUodSA9PlxyXG4gICAgICAgIHUgJiYgdGhpcy5fcmVhc3NpZ24odSwgcG9zaXRpb24pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIHNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oUHJvZmlsZVNldHRpbmdzRGlhbG9nLCB7XHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdXNlcklkOiB0aGlzLl91c2VySWQsXHJcbiAgICAgICAgZ3JhbnRBY2Nlc3M6IHRoaXMuZGF0YS5ncmFudEFjY2VzcyxcclxuICAgICAgICBvdXRPZk9mZmljZTogdGhpcy5kYXRhLm91dE9mT2ZmaWNlXHJcbiAgICAgIH0gYXMgT3V0T2ZPZmZpY2VEYXRhXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLlxyXG4gICAgICBzdWJzY3JpYmUodiA9PlxyXG4gICAgICAgIHYgJiYgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHtcclxuICAgICAgICAgIG91dE9mT2ZmaWNlOiB2Lm91dE9mT2ZmaWNlLFxyXG4gICAgICAgICAgZ3JhbnRBY2Nlc3M6IHYuZ3JhbnRBY2Nlc3MsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuX3VzZXJJZFxyXG4gICAgICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhLCB2KTtcclxuICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgICAgICAgfSwgZXJyb3I6ICgpID0+XHJcbiAgICAgICAgICAgIHRoaXMuX3NiLmVycm9yKClcclxuICAgICAgICB9KSk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3JlYXNzaWduKHdobzogc3RyaW5nLCBwb3NpdGlvbj86IFBvc2l0aW9uSW5mbykge1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHsgcmVhc3NpZ246IHsgd2hvLCAuLi5wb3NpdGlvbiB9LCB1c2VySWQ6IHRoaXMuX3VzZXJJZCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0Fzc2lnbmVkJyk7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uKVxyXG4gICAgICAgICAgdGhpcy5kYXRhLnBvc2l0aW9ucy5yZW1vdmUocG9zaXRpb24pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMgPSBbXTtcclxuICAgICAgfSwgZXJyb3I6ICgpID0+XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRvb2x0aXBSZW5kZXIoZTogSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MpIHtcclxuICAgIGUudGV4dCA9IGAke2RheWpzLmR1cmF0aW9uKGUucG9pbnQueSBhcyBudW1iZXIsICdzJykuaHVtYW5pemUoKX1gO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIFByb2ZpbGVJbmZvIHtcclxuICBvdXRPZk9mZmljZTogT3V0T2ZPZmZpY2VTZXR0aW5ncztcclxuICBncmFudEFjY2VzczogR3JhbnRTZXR0aW5ncztcclxuICBwb3NpdGlvbnM6IFBvc2l0aW9uSW5mb1tdO1xyXG4gIGFjdGl2aXR5OiB7XHJcbiAgICBbYWN0aW9uOiBzdHJpbmddOiB7XHJcbiAgICAgIGlkOiBudW1iZXI7XHJcbiAgICAgIC8qKiBzZWNvbmRzICovXHJcbiAgICAgIGR1cmF0aW9uOiBudW1iZXI7XHJcbiAgICAgIG51bWJlcjogc3RyaW5nO1xyXG4gICAgICB0aW1lOiBEYXRlO1xyXG4gICAgfVtdXHJcbiAgfTtcclxuICBwZW5kaW5nOiB7XHJcbiAgICBpZDogbnVtYmVyO1xyXG4gICAgcmVjZWl2ZWQ6IERhdGU7XHJcbiAgICBudW1iZXI6IHN0cmluZztcclxuICB9W107XHJcbiAgaW5mbzogVXNlckluZm87XHJcbn1cclxuaW50ZXJmYWNlIFBvc2l0aW9uSW5mbyB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgcm9sZTogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBQcm9maWxlck1vZGVsIHtcclxuICBvdXRPZk9mZmljZT86IE91dE9mT2ZmaWNlU2V0dGluZ3M7XHJcbiAgZ3JhbnRBY2Nlc3M/OiBHcmFudFNldHRpbmdzO1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIHJlYXNzaWduPzoge1xyXG4gICAgd2hvOiBzdHJpbmc7XHJcbiAgICByb2xlPzogc3RyaW5nO1xyXG4gICAga2V5PzogYW55O1xyXG4gIH1cclxufVxyXG5cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxtYXQtaWNvbiAoY2xpY2spPVwibnVsbFwiIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoXCIgZGF0YS1oZWxwPVwic2VhcmNoXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwidXNlckRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJjaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidVwiPlxyXG4gICAgICA8c3Bhbj57e3UubmFtZX19PC9zcGFuPlxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImd1aWRlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInSGVscCcgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPGRpdiAqbmdJZj1cImRhdGFcIiBjbGFzcz1cInJvdyB3cmFwXCI+XHJcbiAgPCEtLSBpbmZvIC0tPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZsZXhcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICA8c3Bhbj57e2RhdGEuaW5mby5uYW1lfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8YnIgLz5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2hhdCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NoYXQnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkYXRhXCI+PG1hdC1pY29uPmNoYXQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZXR0aW5ncygpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YVwiIGRhdGEtaGVscD1cInNldHRpbmdzXCI+PG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICA8L21hdC1jYXJkPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZsZXhcIiBkYXRhLWhlbHA9XCJhY3Rpdml0eVwiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIHt7J0FjdGl2aXR5JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8ZWpzLWNoYXJ0ICNhY3Rpdml0eSBbcHJpbWFyeVhBeGlzXT1cInByaW1hcnlYQXhpc1wiIFtwcmltYXJ5WUF4aXNdPVwicHJpbWFyeVlBeGlzXCIgW3pvb21TZXR0aW5nc109XCJ6b29tU2V0dGluZ3NcIiBbdG9vbHRpcF09J3Rvb2x0aXAnICh0b29sdGlwUmVuZGVyKT1cInRvb2x0aXBSZW5kZXIoJGV2ZW50KVwiIFtwYWxldHRlc109XCJwYWxldHRlc1wiIGJhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiIFt0aGVtZV09J3RoZW1lJyBbYm9yZGVyXT1cImJvcmRlclwiIChwb2ludENsaWNrKT1cInBvaW50Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxlLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDwvZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgPC9lanMtY2hhcnQ+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8IS0tIHBlbmRpbmcgLS0+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwiZmxleFwiIGRhdGEtaGVscD1cInBlbmRpbmdcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICB7eydQZW5kaW5nJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJtYXQtdGFibGVcIiAqbmdJZj1cImRhdGEucGVuZGluZy5sZW5ndGg7IGVsc2Ugbm9uZVwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+PC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHIgb2YgZGF0YS5wZW5kaW5nXCIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsXCI+PGEgKGNsaWNrKT1cInRyYWNlKHIuaWQpXCI+e3tyLm51bWJlcn19PC9hPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsXCI+e3sgci5yZWNlaXZlZCB8IGFtRGlmZmVyZW5jZSA6IG51bGwgOiAncycgfCBhbUR1cmF0aW9uIDogJ3MnfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbiAgPCEtLSBwb3NpdGlvbnMgLS0+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwiZmxleFwiIGRhdGEtaGVscD1cInBvc2l0aW9uc1wiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIHt7J1Bvc2l0aW9ucycgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwibWF0LXRhYmxlXCIgKm5nSWY9XCJkYXRhLnBvc2l0aW9ucy5sZW5ndGg7IGVsc2Ugbm9uZVwiPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBkYXRhLnBvc2l0aW9uc1wiIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIj57e3AudmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIj57e3Aucm9sZSB8IHJvbGV9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVhc3NpZ24ocClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVhc3NpZ24nIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPnN3YXBfaG9yaXo8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLWFjdGlvbnM+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlYXNzaWduKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVhc3NpZ25BbGwnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkYXRhIHx8ICFkYXRhLnBvc2l0aW9ucy5sZW5ndGhcIiBkYXRhLWhlbHA9XCJyZWFzc2lnblwiPjxtYXQtaWNvbj5zd2FwX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICA8L21hdC1jYXJkPlxyXG48L2Rpdj5cclxuPCEtLSBhc3NpZ24gZGlhbG9nIC0tPlxyXG48bmctdGVtcGxhdGUgI2Fzc2lnblRwbD5cclxuICA8aDIgbWF0LWRpYWxvZy10aXRsZT57eydSZWFzc2lnbicgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvbHVtblwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eydXaG8nIHwgdHJhbnNsYXRlfX1cIiBbZm9ybUNvbnRyb2xdPVwid2hvXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdSBvZiBhc3NpZ25hYmxlJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInUuaWRcIj57e3UubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZm9ybT5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cIndoby52YWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhd2hvLnZhbGlkXCI+e3snT0snIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPnt7J0NhbmNlbCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI25vbmU+XHJcbiAgPHNwYW4gY2xhc3M9XCJtYXQtYm9keS0yXCI+e3snTm9uZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9wcm9maWxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVzFFLFdBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBcUQ1QixXQUFXO0lBQ1gsWUFBb0IsR0FB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QUFTLEdBQUcsRUFBRSxDQUFDO1lBQzdCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGFBQWEsQ0FBQyxDQUEwQjtRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBeE9VLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9UQUdHLFVBQVUsc0hDdEMzQyxzOUpBOEdBOztBRDNFYSxpQkFBaUI7SUFGN0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsZUFBZTtHQUNGLGlCQUFpQixDQXlPN0I7MkZBek9ZLGlCQUFpQjtrQkFUN0IsU0FBUzsyQkFHRjt3QkFDSixLQUFLLEVBQUUsTUFBTTtxQkFDZDt3YUFNc0IsS0FBSztzQkFBM0IsU0FBUzt1QkFBQyxVQUFVO2dCQUN3QixZQUFZO3NCQUF4RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ25CLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFpRnRCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBDT01NQSwgRU5URVIsIFNFTUlDT0xPTiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEF4aXNNb2RlbCwgQm9yZGVyTW9kZWwsIENoYXJ0Q29tcG9uZW50LCBJUG9pbnRFdmVudEFyZ3MsIElUb29sdGlwUmVuZGVyRXZlbnRBcmdzLCBMZWdlbmRTZXJpZXNNb2RlbCwgTWFya2VyT3B0aW9uc01vZGVsLCBTZXJpZXNNb2RlbCwgVG9vbHRpcFNldHRpbmdzTW9kZWwsIFpvb21TZXR0aW5nc01vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgc3dpdGNoTWFwLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEdyYW50U2V0dGluZ3MsIEd1aWRlU3RlcCwgT3V0T2ZPZmZpY2VTZXR0aW5ncywgVXNlckluZm8gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tICcuLi91dGlsaXR5LXJlZic7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uL2NvcmUvaW5mby9kb2N1bWVudC1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9ndWlkZS9ndWlkZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhdEluZm8gfSBmcm9tICcuLi8uLi9jaGF0L2NoYXQtaW5mbyc7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmJztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFByb2ZpbGVTZXR0aW5nc0RpYWxvZywgT3V0T2ZPZmZpY2VEYXRhIH0gZnJvbSAnLi9vdXRvZm9mZmljZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9LFxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdXNlci1wcm9maWxlcicgfSlcclxuLyoqIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWFkb25seSBzZWFyY2ggPSB0aGlzLl9mYi5jb250cm9sKG51bGwpO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JykgY2hhcnQ6IENoYXJ0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNoYXJ0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhc3NpZ25UcGwnKSBhc3NpZ25UcGw6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcmVhZG9ubHkgd2hvID0gdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICByZWFkb25seSBwcmltYXJ5WEF4aXMgPSB7XHJcbiAgICB2YWx1ZVR5cGU6ICdEYXRlVGltZScsXHJcbiAgICBsYWJlbEZvcm1hdDogJ01NTSBkZCcsXHJcbiAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVlBeGlzID0ge1xyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBzaXplOiAnMHB4J1xyXG4gICAgfSxcclxuICB9IGFzIEF4aXNNb2RlbDtcclxuICByZWFkb25seSB6b29tU2V0dGluZ3M6IFpvb21TZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IHRydWUsXHJcbiAgICBlbmFibGVQaW5jaFpvb21pbmc6IHRydWUsXHJcbiAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsXHJcbiAgICBlbmFibGVTY3JvbGxiYXI6IHRydWVcclxuICB9O1xyXG4gIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gICAgc2hhcmVkOiB0cnVlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBsZWdlbmQ6IExlZ2VuZFNlcmllc01vZGVsID0ge1xyXG4gICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgIH1cclxuICB9O1xyXG4gIHJlYWRvbmx5IGJvcmRlciA9IHsgd2lkdGg6IDAgfSBhcyBCb3JkZXJNb2RlbDtcclxuICByZWFkb25seSBtYXJrZXI6IE1hcmtlck9wdGlvbnNNb2RlbCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICB3aWR0aDogMTAsXHJcbiAgICBoZWlnaHQ6IDEwXHJcbiAgfVxyXG4gIHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBhc3NpZ25hYmxlJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBwYWxldHRlczogc3RyaW5nW10gPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgdGhlbWU6ICdNYXRlcmlhbCcgfCAnTWF0ZXJpYWxEYXJrJyA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICBkYXRhOiBQcm9maWxlSW5mbztcclxuICBjb2xzID0gMjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWFkb25seSBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQSwgU0VNSUNPTE9OXTtcclxuICBwcml2YXRlIF91c2VySWQ6IHN0cmluZztcclxuICAvKiogY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdXRpbGl0eVJlZjogVXRpbGl0eVJlZjxib29sZWFuLCBQcm9maWxlck1vZGVsLCBQcm9maWxlSW5mbywgc3RyaW5nPixcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudEluZm86IERvY3VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgX2NoYXQ6IENoYXRJbmZvLFxyXG4gICAgcHJpdmF0ZSBfZ3VpZGU6IEd1aWRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPFByb2ZpbGVyQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5jb2xzID0gMjtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgICAgIHRoaXMucGFsZXR0ZXMgPSBfc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGFuZS5xdWVyeVBhcmFtc0NoYW5nZSgpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgY29uc3QgeyB1c2VySWQgfSA9IHA7XHJcbiAgICAgIHVzZXJJZCAmJiB0aGlzLl9vcGVuKHVzZXJJZCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucmVzaXplZCgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFydD8uY2hhcnRSZXNpemUoKSk7XHJcbiAgICB0aGlzLnVzZXJzJCA9IHRoaXMuc2VhcmNoLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcclxuICAgICAgZGVib3VuY2VUaW1lKDI1MCksXHJcbiAgICAgIGZpbHRlcih2ID0+ICFpc09iamVjdCh2KSksXHJcbiAgICAgIHN3aXRjaE1hcCh2ID0+IHRoaXMuX2FjY291bnRzLmZpbmRBbGwodikpKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1zZXR0aW5nc10nLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ091dE9mT2ZmaWNlSGVscCcpXHJcbiAgICAgIH0pO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRhdGEuYWN0aXZpdHkpLmxlbmd0aCAmJlxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPWFjdGl2aXR5XScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpdml0eUhlbHAnKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGEucGVuZGluZy5sZW5ndGggJiZcclxuICAgICAgICBzdGVwcy5wdXNoKHtcclxuICAgICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1wZW5kaW5nXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQZW5kaW5nSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMubGVuZ3RoICYmXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9cG9zaXRpb25zXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQb3NpdGlvbnNIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXJlYXNzaWduXScsXHJcbiAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnUmVhc3NpZ25IZWxwJylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHN0ZXBzLnB1c2goe1xyXG4gICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9c2VhcmNoXScsXHJcbiAgICAgIHBvc2l0aW9uOiAnQmVsb3cnLFxyXG4gICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQcm9maWxlclNlYXJjaEhlbHAnKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9ndWlkZS5zdGFydCh7XHJcbiAgICAgIG5hbWU6ICdwcm9maWxlcicsXHJcbiAgICAgIHN0ZXBzXHJcbiAgICB9KTtcclxuICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgY2hhbmdlKGV2dDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgeyBpZDogdXNlcklkIH0gPSBldnQub3B0aW9uLnZhbHVlO1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiB7IHVzZXJJZCB9IH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXNlcklkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfb3Blbih1c2VySWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdXNlcklkID0gdXNlcklkO1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5wb3B1bGF0ZSh1c2VySWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2gucmVzZXQobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB3aGlsZSAodGhpcy5jaGFydC5zZXJpZXMubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5jaGFydD8ucmVtb3ZlU2VyaWVzKDApO1xyXG4gICAgICAgIHRoaXMuY2hhcnQ/LmFkZFNlcmllcyh0aGlzLl9zZXJpZXMoKSk7XHJcbiAgICAgIH0sIGVycm9yOiAoKSA9PiB0aGlzLl9zYi5lcnJvcigpXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBfc2VyaWVzKCk6IFNlcmllc01vZGVsW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZGF0YS5hY3Rpdml0eSkubWFwKGEgPT4ge1xyXG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmRhdGEuYWN0aXZpdHlbYV07XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogJ1NjYXR0ZXInLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuX2FjdGlvbk5hbWUoYSksXHJcbiAgICAgICAgeE5hbWU6ICd0aW1lJyxcclxuICAgICAgICB5TmFtZTogJ2R1cmF0aW9uJyxcclxuICAgICAgICBkYXRhU291cmNlOiBsb2cubWFwKGwgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGwuaWQsXHJcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKGwudGltZSksXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiBsLmR1cmF0aW9uXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FjdGlvbk5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIGFjdGlvbiA/IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZSA6IG5hbWU7XHJcbiAgfVxyXG4gIHBvaW50Q2xpY2soZXZ0OiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgaWQgfSA9IGV2dC5zZXJpZXMuZGF0YVNvdXJjZVtldnQucG9pbnRJbmRleF07XHJcbiAgICB0aGlzLl9kb2N1bWVudEluZm8ub3BlbihpZCk7XHJcbiAgfVxyXG4gIHVzZXJEaXNwbGF5KGl0ZW06IFVzZXJJbmZvKSB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IG51bGw7XHJcbiAgfVxyXG4gIHRyYWNlKGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2FkbWluJywgJ3Rvb2xzJywgJ2RvY3VtZW50LXRyYWNlJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgZG9jdW1lbnRJZDogaWQuZW5jb2RlSWQoKSB9LFxyXG4gICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuRGVmZXIgfCBPcGVuUG9saWN5LlBpbm5hYmxlXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY2hhdCgpIHtcclxuICAgIHRoaXMuX2NoYXQub3Blbih0aGlzLl91c2VySWQpO1xyXG4gIH1cclxuICByZWFzc2lnbihwb3NpdGlvbj86IFBvc2l0aW9uSW5mbykge1xyXG4gICAgdGhpcy5hc3NpZ25hYmxlJCA9IHRoaXMuX2FjY291bnRzLmZpbmRBbGwoKS5waXBlKG1hcCh1ID0+IHUuZmlsdGVyKHUgPT4gdS5pZCAhPT0gdGhpcy5fdXNlcklkKSkpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4odGhpcy5hc3NpZ25UcGwsIHt9KS5hZnRlckNsb3NlZCgpLlxyXG4gICAgICBzdWJzY3JpYmUodSA9PlxyXG4gICAgICAgIHUgJiYgdGhpcy5fcmVhc3NpZ24odSwgcG9zaXRpb24pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIHNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oUHJvZmlsZVNldHRpbmdzRGlhbG9nLCB7XHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdXNlcklkOiB0aGlzLl91c2VySWQsXHJcbiAgICAgICAgZ3JhbnRBY2Nlc3M6IHRoaXMuZGF0YS5ncmFudEFjY2VzcyxcclxuICAgICAgICBvdXRPZk9mZmljZTogdGhpcy5kYXRhLm91dE9mT2ZmaWNlXHJcbiAgICAgIH0gYXMgT3V0T2ZPZmZpY2VEYXRhXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLlxyXG4gICAgICBzdWJzY3JpYmUodiA9PlxyXG4gICAgICAgIHYgJiYgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHtcclxuICAgICAgICAgIG91dE9mT2ZmaWNlOiB2Lm91dE9mT2ZmaWNlLFxyXG4gICAgICAgICAgZ3JhbnRBY2Nlc3M6IHYuZ3JhbnRBY2Nlc3MsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuX3VzZXJJZFxyXG4gICAgICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhLCB2KTtcclxuICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgICAgICAgfSwgZXJyb3I6ICgpID0+XHJcbiAgICAgICAgICAgIHRoaXMuX3NiLmVycm9yKClcclxuICAgICAgICB9KSk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3JlYXNzaWduKHdobzogc3RyaW5nLCBwb3NpdGlvbj86IFBvc2l0aW9uSW5mbykge1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHsgcmVhc3NpZ246IHsgd2hvLCAuLi5wb3NpdGlvbiB9LCB1c2VySWQ6IHRoaXMuX3VzZXJJZCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0Fzc2lnbmVkJyk7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uKVxyXG4gICAgICAgICAgdGhpcy5kYXRhLnBvc2l0aW9ucy5yZW1vdmUocG9zaXRpb24pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMgPSBbXTtcclxuICAgICAgfSwgZXJyb3I6ICgpID0+XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRvb2x0aXBSZW5kZXIoZTogSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MpIHtcclxuICAgIGUudGV4dCA9IGAke2RheWpzLmR1cmF0aW9uKGUucG9pbnQueSBhcyBudW1iZXIsICdzJykuaHVtYW5pemUoKX1gO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIFByb2ZpbGVJbmZvIHtcclxuICBvdXRPZk9mZmljZTogT3V0T2ZPZmZpY2VTZXR0aW5ncztcclxuICBncmFudEFjY2VzczogR3JhbnRTZXR0aW5ncztcclxuICBwb3NpdGlvbnM6IFBvc2l0aW9uSW5mb1tdO1xyXG4gIGFjdGl2aXR5OiB7XHJcbiAgICBbYWN0aW9uOiBzdHJpbmddOiB7XHJcbiAgICAgIGlkOiBudW1iZXI7XHJcbiAgICAgIC8qKiBzZWNvbmRzICovXHJcbiAgICAgIGR1cmF0aW9uOiBudW1iZXI7XHJcbiAgICAgIG51bWJlcjogc3RyaW5nO1xyXG4gICAgICB0aW1lOiBEYXRlO1xyXG4gICAgfVtdXHJcbiAgfTtcclxuICBwZW5kaW5nOiB7XHJcbiAgICBpZDogbnVtYmVyO1xyXG4gICAgcmVjZWl2ZWQ6IERhdGU7XHJcbiAgICBudW1iZXI6IHN0cmluZztcclxuICB9W107XHJcbiAgaW5mbzogVXNlckluZm87XHJcbn1cclxuaW50ZXJmYWNlIFBvc2l0aW9uSW5mbyB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgcm9sZTogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBQcm9maWxlck1vZGVsIHtcclxuICBvdXRPZk9mZmljZT86IE91dE9mT2ZmaWNlU2V0dGluZ3M7XHJcbiAgZ3JhbnRBY2Nlc3M/OiBHcmFudFNldHRpbmdzO1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIHJlYXNzaWduPzoge1xyXG4gICAgd2hvOiBzdHJpbmc7XHJcbiAgICByb2xlPzogc3RyaW5nO1xyXG4gICAga2V5PzogYW55O1xyXG4gIH1cclxufVxyXG5cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxtYXQtaWNvbiAoY2xpY2spPVwibnVsbFwiIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoXCIgZGF0YS1oZWxwPVwic2VhcmNoXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwidXNlckRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJjaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidVwiPlxyXG4gICAgICA8c3Bhbj57e3UubmFtZX19PC9zcGFuPlxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImd1aWRlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInSGVscCcgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPGRpdiAqbmdJZj1cImRhdGFcIiBjbGFzcz1cInJvdyB3cmFwXCI+XHJcbiAgPCEtLSBpbmZvIC0tPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZsZXhcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICA8c3Bhbj57e2RhdGEuaW5mby5uYW1lfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8YnIgLz5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2hhdCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NoYXQnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkYXRhXCI+PG1hdC1pY29uPmNoYXQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZXR0aW5ncygpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YVwiIGRhdGEtaGVscD1cInNldHRpbmdzXCI+PG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICA8L21hdC1jYXJkPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZsZXhcIiBkYXRhLWhlbHA9XCJhY3Rpdml0eVwiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIHt7J0FjdGl2aXR5JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8ZWpzLWNoYXJ0ICNhY3Rpdml0eSBbcHJpbWFyeVhBeGlzXT1cInByaW1hcnlYQXhpc1wiIFtwcmltYXJ5WUF4aXNdPVwicHJpbWFyeVlBeGlzXCIgW3pvb21TZXR0aW5nc109XCJ6b29tU2V0dGluZ3NcIiBbdG9vbHRpcF09J3Rvb2x0aXAnICh0b29sdGlwUmVuZGVyKT1cInRvb2x0aXBSZW5kZXIoJGV2ZW50KVwiIFtwYWxldHRlc109XCJwYWxldHRlc1wiIGJhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiIFt0aGVtZV09J3RoZW1lJyBbYm9yZGVyXT1cImJvcmRlclwiIChwb2ludENsaWNrKT1cInBvaW50Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxlLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDwvZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgPC9lanMtY2hhcnQ+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8IS0tIHBlbmRpbmcgLS0+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwiZmxleFwiIGRhdGEtaGVscD1cInBlbmRpbmdcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICB7eydQZW5kaW5nJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJtYXQtbWRjLXRhYmxlXCIgKm5nSWY9XCJkYXRhLnBlbmRpbmcubGVuZ3RoOyBlbHNlIG5vbmVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJtYXQtbWRjLXJvd1wiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj48L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSByb2xlPVwicm93Z3JvdXBcIj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgciBvZiBkYXRhLnBlbmRpbmdcIiBjbGFzcz1cIm1hdC1tZGMtcm93XCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtY2VsbFwiPjxhIChjbGljayk9XCJ0cmFjZShyLmlkKVwiPnt7ci5udW1iZXJ9fTwvYT48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj57eyByLnJlY2VpdmVkIHwgYW1EaWZmZXJlbmNlIDogbnVsbCA6ICdzJyB8IGFtRHVyYXRpb24gOiAncyd9fTwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8IS0tIHBvc2l0aW9ucyAtLT5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJmbGV4XCIgZGF0YS1oZWxwPVwicG9zaXRpb25zXCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAge3snUG9zaXRpb25zJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJtYXQtbWRjLXRhYmxlXCIgKm5nSWY9XCJkYXRhLnBvc2l0aW9ucy5sZW5ndGg7IGVsc2Ugbm9uZVwiPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBkYXRhLnBvc2l0aW9uc1wiIGNsYXNzPVwibWF0LW1kYy1yb3dcIj5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtY2VsbFwiPnt7cC52YWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj57e3Aucm9sZSB8IHJvbGV9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlYXNzaWduKHApXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlYXNzaWduJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zd2FwX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZWFzc2lnbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlYXNzaWduQWxsJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YSB8fCAhZGF0YS5wb3NpdGlvbnMubGVuZ3RoXCIgZGF0YS1oZWxwPVwicmVhc3NpZ25cIj48bWF0LWljb24+c3dhcF9ob3JpejwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9kaXY+XHJcbjwhLS0gYXNzaWduIGRpYWxvZyAtLT5cclxuPG5nLXRlbXBsYXRlICNhc3NpZ25UcGw+XHJcbiAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3snUmVhc3NpZ24nIHwgdHJhbnNsYXRlIH19PC9oMj5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3snV2hvJyB8IHRyYW5zbGF0ZX19XCIgW2Zvcm1Db250cm9sXT1cIndob1wiIHJlcXVpcmVkPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgYXNzaWduYWJsZSQgfCBhc3luY1wiIFt2YWx1ZV09XCJ1LmlkXCI+e3t1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ3aG8udmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIXdoby52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNub25lPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LW1kYy1ib2R5LTJcIj57eydOb25lJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
@@ -10,6 +10,9 @@ export class SystemService {
|
|
10
10
|
synchrinize(name) {
|
11
11
|
return this._http.post(`/api/system/cube/${encodeURIComponent(name)}/synchronize`, {});
|
12
12
|
}
|
13
|
+
execute(name) {
|
14
|
+
return this._http.post(`/api/system/job/${encodeURIComponent(name)}/execute`, {});
|
15
|
+
}
|
13
16
|
static { this._cache = {}; }
|
14
17
|
findAll(options) {
|
15
18
|
const params = {};
|
@@ -59,6 +62,9 @@ export class SystemService {
|
|
59
62
|
cube(name) {
|
60
63
|
return this._http.get(`/api/system/cube/${encodeURIComponent(name)}`);
|
61
64
|
}
|
65
|
+
job(name) {
|
66
|
+
return this._http.get(`/api/system/job/${encodeURIComponent(name)}`);
|
67
|
+
}
|
62
68
|
/**
|
63
69
|
*
|
64
70
|
* @param name
|
@@ -111,4 +117,4 @@ export class SystemService {
|
|
111
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SystemService, decorators: [{
|
112
118
|
type: Injectable
|
113
119
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFJN0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsS0FBSyxDQUFDLElBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFTLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLG9CQUFvQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7YUFDYyxXQUFNLEdBQUcsRUFBRSxBQUFMLENBQU07SUFHM0IsT0FBTyxDQUFDLE9BQWdGO1FBQ3RGLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQzthQUN4QjtZQUNILElBQUksT0FBTyxDQUFDLE1BQU07Z0JBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDdEQsSUFBSSxPQUFPLENBQUMsTUFBTTtnQkFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN0RCxJQUFJLE9BQU8s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Q0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM3Qjs7b0JBQ0ksWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQzs4R0E1R1UsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRmllbGRJbmZvLCBGb3JtIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgRWxlbWVudEZhbWlseSB9IGZyb20gJy4vYXJjaGl0ZWN0dXJlL2RlY2xhcmF0aW9ucyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTeXN0ZW1TZXJ2aWNlIHtcclxuICBydWxlcyhhcmdzPzogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UnVsZVtdPignL2FwaS9zeXN0ZW0vZm9ybS9ydWxlcycsIHsgcGFyYW1zOiBhcmdzIH0pO1xyXG4gIH1cclxuICBzeW5jaHJpbml6ZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8QmFja2dyb3VuZEpvYkluZm8+KGAvYXBpL3N5c3RlbS9jdWJlLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpfS9zeW5jaHJvbml6ZWAsIHt9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlID0ge307XHJcbiAgZmluZEFsbChvcHRpb25zOiB7IHNlYXJjaD86IHN0cmluZywgc3RhcnQ/OiBEYXRlLCBlbmQ/OiBEYXRlLCBmb3JtSWQ/OiBzdHJpbmcgfSlcclxuICBmaW5kQWxsKHNlYXJjaD86IHN0cmluZylcclxuICBmaW5kQWxsKG9wdGlvbnM6IHN0cmluZyB8IHsgc2VhcmNoPzogc3RyaW5nLCBzdGFydD86IERhdGUsIGVuZD86IERhdGUsIGZvcm1JZD86IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxEb2N1bWVudEluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoaXNTdHJpbmcob3B0aW9ucykpXHJcbiAgICAgIHBhcmFtc1snc2VhcmNoJ10gPSBvcHRpb25zO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChvcHRpb25zLnNlYXJjaCkgcGFyYW1zWydzZWFyY2gnXSA9IG9wdGlvbnMuc2VhcmNoO1xyXG4gICAgICBpZiAob3B0aW9ucy5mb3JtSWQpIHBhcmFtc1snZm9ybUlkJ10gPSBvcHRpb25zLmZvcm1JZDtcclxuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHBhcmFtc1snc3RhcnQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuc3RhcnQpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIGlmIChvcHRpb25zLmVuZCkgcGFyYW1zWydlbmQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuZW5kKS50b0lTT1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50SW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9maW5kQWxsJywge1xyXG4gICAgICBwYXJhbXNcclxuICAgIH0pO1xyXG4gIH1cclxuICByb2xlcygpOiBPYnNlcnZhYmxlPFJvbGVbXT4ge1xyXG4gICAgcmV0dXJuIFN5c3RlbVNlcnZpY2UuX2NhY2hlWydyb2xlcyddIHx8IChTeXN0ZW1TZXJ2aWNlLl9jYWNoZVsncm9sZXMnXSA9XHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0PFJvbGVbXT4oJy9hcGkvc3lzdGVtL3Bvc2l0aW9ucy9yb2xlcycpLnBpcGUoc2hhcmVSZXBsYXkoKSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZm9ybUlkXHJcbiAgICovXHJcbiAgcmFuZ2UoZm9ybUlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxSYW5nZUluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoZm9ybUlkKSBwYXJhbXNbJ2Zvcm1JZCddID0gZm9ybUlkO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJhbmdlSW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9yYW5nZScsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKHRhcCgocjogUmFuZ2VJbmZvW10pID0+XHJcbiAgICAgIHIuZm9yRWFjaChwID0+IHAuZGF0ZSA9IG5ldyBEYXRlKHAuZGF0ZSkpXHJcbiAgICApKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGZvcm1JZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgaW52aXRlKGZvcm1JZDogc3RyaW5nLCBvcHRpb25zOiB7IGdyb3Vwczogc3RyaW5nW10sIG1lc3NhZ2U/OiBzdHJpbmc7IGRldmljZXM6IEludml0ZURldmljZVtdLCBkdWU/OiBEYXRlIH0pIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDx7IHRhcmdldDogbnVtYmVyOyBvazogbnVtYmVyOyBpbT86IG51bWJlcjsgZW1haWw/OiBudW1iZXI7IHNtcz86IG51bWJlciB9PihgL2FwaS9zeXN0ZW0vZm9ybS9pbnZpdGUvJHtmb3JtSWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIHByb2plY3Rpb24ob3B0aW9uczogeyBncm91cHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PG51bWJlcj4oJy9hcGkvc3lzdGVtL2Zvcm0vcHJvamVjdGlvbi8nLCBvcHRpb25zKTtcclxuICB9XHJcbiAgY3ViZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDdWJlSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICovXHJcbiAgZm9ybShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZvcm0+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxGb3JtPihgL2FwaS9zeXN0ZW0vZm9ybS8ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX1gKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY29udHJvbHM6IE9ic2VydmFibGU8Q29udHJvbEluZm9bXT47XHJcbiAgY29udHJvbHMoKTogT2JzZXJ2YWJsZTxDb250cm9sSW5mb1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHMgfHwgKHRoaXMuX2NvbnRyb2xzID0gdGhpcy5faHR0cC5nZXQ8Q29udHJvbEluZm9bXT4oYC9hcGkvc3lzdGVtL2Zvcm0vY29udHJvbHNgKS5cclxuICAgICAgcGlwZShcclxuICAgICAgICB0YXAoYyA9PlxyXG4gICAgICAgICAgYy5mb3JFYWNoKGkgPT4gY1tpLm5hbWVdID0gaSkpLFxyXG4gICAgICAgIHNoYXJlUmVwbGF5KCkpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGF0YXR5cGVzOiBPYnNlcnZhYmxlPERhdGFUeXBlSW5mb1tdPjtcclxuICBkYXRhdHlwZXMoKTogT2JzZXJ2YWJsZTxEYXRhVHlwZUluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGF0eXBlcyB8fCAodGhpcy5fZGF0YXR5cGVzID0gdGhpcy5faHR0cC5nZXQ8RGF0YVR5cGVJbmZvW10+KGAvYXBpL3N5c3RlbS9mb3JtL2RhdGF0eXBlc2ApLlxyXG4gICAgICBwaXBlKFxyXG4gICAgICAgIHRhcCh0ID0+XHJcbiAgICAgICAgICB0LmZvckVhY2goaSA9PiB0W2kubmFtZV0gPSBpKSksXHJcbiAgICAgICAgc2hhcmVSZXBsYXkoKSkpO1xyXG4gIH1cclxuICBzYXZlKGZvcm06IEZvcm0pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgY29uc3QgeyB3b3JrZmxvdyB9ID0gZm9ybTtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxudW1iZXI+KGAvYXBpL3N5c3RlbS9mb3JtLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGZvcm0ubmFtZSl9YCwgeyB3b3JrZmxvdyB9KTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCkge1xyXG5cclxuICB9XHJcbiAgcHVibGljIHR5cGVncm91cHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhdHlwZXMoKS5waXBlKG1hcCh0ID0+IHtcclxuICAgICAgY29uc3RcclxuICAgICAgICBkZWZhdWx0Z3JvdXAgPSB7IGVsZW1lbnRzOiBbXSB9LFxyXG4gICAgICAgIGdyb3VwcyA9IFtdIGFzIEVsZW1lbnRGYW1pbHlbXTtcclxuICAgICAgZ3JvdXBzWydfJ10gPSBkZWZhdWx0Z3JvdXA7XHJcbiAgICAgIHQuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICBpZiAodC5mYW1pbHkpIHtcclxuICAgICAgICAgIGxldCBncm91cCA9IGdyb3Vwc1t0LmZhbWlseV07XHJcbiAgICAgICAgICBpZiAoIWdyb3VwKSB7XHJcbiAgICAgICAgICAgIGdyb3VwID0ge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiB0LmZhbWlseSxcclxuICAgICAgICAgICAgICBlbGVtZW50czogW3RdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGdyb3Vwcy5wdXNoKGdyb3VwKTtcclxuICAgICAgICAgICAgZ3JvdXBzW3QuZmFtaWx5XSA9IGdyb3VwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBncm91cC5lbGVtZW50cy5wdXNoKHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGRlZmF1bHRncm91cC5lbGVtZW50cy5wdXNoKHQpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGdyb3VwcztcclxuICAgIH0pKVxyXG4gIH1cclxufVxyXG5leHBvcnQgdHlwZSBJbnZpdGVEZXZpY2UgPSAnU21zJyB8ICdFbWFpbCcgfCAnSU0nO1xyXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlSW5mbyB7XHJcbiAgY291bnQ6IG51bWJlcjtcclxuICBkYXRlOiBEYXRlO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRJbmZvIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG51bWJlcjogc3RyaW5nO1xyXG4gIHN1YmplY3Q6IHN0cmluZztcclxuICBzdGF0ZUlkOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sSW5mbyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgc3lzdGVtPzogYm9vbGVhbjtcclxuICB2aXNpYmxlPzogYm9vbGVhbjtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHRlbXBsYXRlPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVR5cGVJbmZvIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBhc3NpZ25hYmxlPzogYm9vbGVhbjtcclxuICBjb2x1bW5zPzogRmllbGRJbmZvW107XHJcbiAgZmFtaWx5Pzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3ViZUluZm8ge1xyXG4gIGpvYkluZm86IEJhY2tncm91bmRKb2JJbmZvO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFja2dyb3VuZEpvYkluZm8ge1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5leHRFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RKb2JTdGF0ZT86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgUnVsZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSb2xlIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxufVxyXG4iXX0=
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFJN0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsS0FBSyxDQUFDLElBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFTLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLG9CQUFvQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFvQixtQkFBbUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RyxDQUFDO2FBQ2MsV0FBTSxHQUFHLEVBQUUsQUFBTCxDQUFNO0lBRzNCLE9BQU8sQ0FBQyxPQUFnRjtRQUN0RixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDeEI7WUFDSCxJQUFJLE9BQU8sQ0FBQyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3RELElBQUksT0FBTyxDQUFDLE1BQU07Z0JBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDdEQsSUFBSSxPQUFPLENBQUMsS0FBSztnQkFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNFLElBQUksT0FBTyxDQUFDLEdBQUc7Z0JBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0RTtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQWlCLDBCQUEwQixFQUFFO1lBQ2hFLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsS0FBSztRQUNILE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFTLDZCQUE2QixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQWU7UUFDbkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksTUFBTTtZQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYyx3QkFBd0IsRUFBRTtZQUMzRCxNQUFNO1NBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUM3QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsTUFBYyxFQUFFLE9BQW9GO1FBQ3pHLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQTRFLDJCQUEyQixNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqSixDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQTZCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVMsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELElBQUksQ0FBQyxJQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBVyxvQkFBb0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxHQUFHLENBQUMsSUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVUsbUJBQW1CLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLElBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFPLG9CQUFvQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFnQiwyQkFBMkIsQ0FBQztZQUNuRyxJQUFJLENBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ04sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDaEMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBaUIsNEJBQTRCLENBQUM7WUFDdkcsSUFBSSxDQUNGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNOLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQVU7UUFDYixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVMsb0JBQW9CLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBQ0QsWUFBb0IsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUVyQyxDQUFDO0lBQ00sVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsTUFDRSxZQUFZLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQy9CLE1BQU0sR0FBRyxFQUFxQixDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7WUFDM0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ1osSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRTt3QkFDVixLQUFLLEdBQUc7NEJBQ04sS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNOzRCQUNmLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDZCxDQUFDO3dCQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO3FCQUMxQjs7d0JBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCOztvQkFDSSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDOzhHQWxIVSxhQUFhO2tIQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWVsZEluZm8sIEZvcm0gfSBmcm9tICcuLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBFbGVtZW50RmFtaWx5IH0gZnJvbSAnLi9hcmNoaXRlY3R1cmUvZGVjbGFyYXRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xyXG4gIHJ1bGVzKGFyZ3M/OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSdWxlW10+KCcvYXBpL3N5c3RlbS9mb3JtL3J1bGVzJywgeyBwYXJhbXM6IGFyZ3MgfSk7XHJcbiAgfVxyXG4gIHN5bmNocmluaXplKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxCYWNrZ3JvdW5kSm9iSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9L3N5bmNocm9uaXplYCwge30pO1xyXG4gIH1cclxuICBleGVjdXRlKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxCYWNrZ3JvdW5kSm9iSW5mbz4oYC9hcGkvc3lzdGVtL2pvYi8ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX0vZXhlY3V0ZWAsIHt9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlID0ge307XHJcbiAgZmluZEFsbChvcHRpb25zOiB7IHNlYXJjaD86IHN0cmluZywgc3RhcnQ/OiBEYXRlLCBlbmQ/OiBEYXRlLCBmb3JtSWQ/OiBzdHJpbmcgfSlcclxuICBmaW5kQWxsKHNlYXJjaD86IHN0cmluZylcclxuICBmaW5kQWxsKG9wdGlvbnM6IHN0cmluZyB8IHsgc2VhcmNoPzogc3RyaW5nLCBzdGFydD86IERhdGUsIGVuZD86IERhdGUsIGZvcm1JZD86IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxEb2N1bWVudEluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoaXNTdHJpbmcob3B0aW9ucykpXHJcbiAgICAgIHBhcmFtc1snc2VhcmNoJ10gPSBvcHRpb25zO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChvcHRpb25zLnNlYXJjaCkgcGFyYW1zWydzZWFyY2gnXSA9IG9wdGlvbnMuc2VhcmNoO1xyXG4gICAgICBpZiAob3B0aW9ucy5mb3JtSWQpIHBhcmFtc1snZm9ybUlkJ10gPSBvcHRpb25zLmZvcm1JZDtcclxuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHBhcmFtc1snc3RhcnQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuc3RhcnQpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIGlmIChvcHRpb25zLmVuZCkgcGFyYW1zWydlbmQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuZW5kKS50b0lTT1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50SW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9maW5kQWxsJywge1xyXG4gICAgICBwYXJhbXNcclxuICAgIH0pO1xyXG4gIH1cclxuICByb2xlcygpOiBPYnNlcnZhYmxlPFJvbGVbXT4ge1xyXG4gICAgcmV0dXJuIFN5c3RlbVNlcnZpY2UuX2NhY2hlWydyb2xlcyddIHx8IChTeXN0ZW1TZXJ2aWNlLl9jYWNoZVsncm9sZXMnXSA9XHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0PFJvbGVbXT4oJy9hcGkvc3lzdGVtL3Bvc2l0aW9ucy9yb2xlcycpLnBpcGUoc2hhcmVSZXBsYXkoKSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZm9ybUlkXHJcbiAgICovXHJcbiAgcmFuZ2UoZm9ybUlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxSYW5nZUluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoZm9ybUlkKSBwYXJhbXNbJ2Zvcm1JZCddID0gZm9ybUlkO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJhbmdlSW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9yYW5nZScsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKHRhcCgocjogUmFuZ2VJbmZvW10pID0+XHJcbiAgICAgIHIuZm9yRWFjaChwID0+IHAuZGF0ZSA9IG5ldyBEYXRlKHAuZGF0ZSkpXHJcbiAgICApKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGZvcm1JZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgaW52aXRlKGZvcm1JZDogc3RyaW5nLCBvcHRpb25zOiB7IGdyb3Vwczogc3RyaW5nW10sIG1lc3NhZ2U/OiBzdHJpbmc7IGRldmljZXM6IEludml0ZURldmljZVtdLCBkdWU/OiBEYXRlIH0pIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDx7IHRhcmdldDogbnVtYmVyOyBvazogbnVtYmVyOyBpbT86IG51bWJlcjsgZW1haWw/OiBudW1iZXI7IHNtcz86IG51bWJlciB9PihgL2FwaS9zeXN0ZW0vZm9ybS9pbnZpdGUvJHtmb3JtSWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIHByb2plY3Rpb24ob3B0aW9uczogeyBncm91cHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PG51bWJlcj4oJy9hcGkvc3lzdGVtL2Zvcm0vcHJvamVjdGlvbi8nLCBvcHRpb25zKTtcclxuICB9XHJcbiAgY3ViZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDdWJlSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YCk7XHJcbiAgfVxyXG4gIGpvYihuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxKb2JJbmZvPihgL2FwaS9zeXN0ZW0vam9iLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpfWApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIGZvcm0obmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxGb3JtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Rm9ybT4oYC9hcGkvc3lzdGVtL2Zvcm0vJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbnRyb2xzOiBPYnNlcnZhYmxlPENvbnRyb2xJbmZvW10+O1xyXG4gIGNvbnRyb2xzKCk6IE9ic2VydmFibGU8Q29udHJvbEluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzIHx8ICh0aGlzLl9jb250cm9scyA9IHRoaXMuX2h0dHAuZ2V0PENvbnRyb2xJbmZvW10+KGAvYXBpL3N5c3RlbS9mb3JtL2NvbnRyb2xzYCkuXHJcbiAgICAgIHBpcGUoXHJcbiAgICAgICAgdGFwKGMgPT5cclxuICAgICAgICAgIGMuZm9yRWFjaChpID0+IGNbaS5uYW1lXSA9IGkpKSxcclxuICAgICAgICBzaGFyZVJlcGxheSgpKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGF0eXBlczogT2JzZXJ2YWJsZTxEYXRhVHlwZUluZm9bXT47XHJcbiAgZGF0YXR5cGVzKCk6IE9ic2VydmFibGU8RGF0YVR5cGVJbmZvW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhdHlwZXMgfHwgKHRoaXMuX2RhdGF0eXBlcyA9IHRoaXMuX2h0dHAuZ2V0PERhdGFUeXBlSW5mb1tdPihgL2FwaS9zeXN0ZW0vZm9ybS9kYXRhdHlwZXNgKS5cclxuICAgICAgcGlwZShcclxuICAgICAgICB0YXAodCA9PlxyXG4gICAgICAgICAgdC5mb3JFYWNoKGkgPT4gdFtpLm5hbWVdID0gaSkpLFxyXG4gICAgICAgIHNoYXJlUmVwbGF5KCkpKTtcclxuICB9XHJcbiAgc2F2ZShmb3JtOiBGb3JtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IHsgd29ya2Zsb3cgfSA9IGZvcm07XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8bnVtYmVyPihgL2FwaS9zeXN0ZW0vZm9ybS8ke2VuY29kZVVSSUNvbXBvbmVudChmb3JtLm5hbWUpfWAsIHsgd29ya2Zsb3cgfSk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgfVxyXG4gIHB1YmxpYyB0eXBlZ3JvdXBzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YXR5cGVzKCkucGlwZShtYXAodCA9PiB7XHJcbiAgICAgIGNvbnN0XHJcbiAgICAgICAgZGVmYXVsdGdyb3VwID0geyBlbGVtZW50czogW10gfSxcclxuICAgICAgICBncm91cHMgPSBbXSBhcyBFbGVtZW50RmFtaWx5W107XHJcbiAgICAgIGdyb3Vwc1snXyddID0gZGVmYXVsdGdyb3VwO1xyXG4gICAgICB0LmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgaWYgKHQuZmFtaWx5KSB7XHJcbiAgICAgICAgICBsZXQgZ3JvdXAgPSBncm91cHNbdC5mYW1pbHldO1xyXG4gICAgICAgICAgaWYgKCFncm91cCkge1xyXG4gICAgICAgICAgICBncm91cCA9IHtcclxuICAgICAgICAgICAgICB0aXRsZTogdC5mYW1pbHksXHJcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFt0XVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBncm91cHMucHVzaChncm91cCk7XHJcbiAgICAgICAgICAgIGdyb3Vwc1t0LmZhbWlseV0gPSBncm91cDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgZ3JvdXAuZWxlbWVudHMucHVzaCh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBkZWZhdWx0Z3JvdXAuZWxlbWVudHMucHVzaCh0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9KSlcclxuICB9XHJcbn1cclxuZXhwb3J0IHR5cGUgSW52aXRlRGV2aWNlID0gJ1NtcycgfCAnRW1haWwnIHwgJ0lNJztcclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUluZm8ge1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbiAgZGF0ZTogRGF0ZTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50SW5mbyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBudW1iZXI6IHN0cmluZztcclxuICBzdWJqZWN0OiBzdHJpbmc7XHJcbiAgc3RhdGVJZDogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbEluZm8ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHN5c3RlbT86IGJvb2xlYW47XHJcbiAgdmlzaWJsZT86IGJvb2xlYW47XHJcbiAgaWNvbj86IHN0cmluZztcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUeXBlSW5mbyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgYXNzaWduYWJsZT86IGJvb2xlYW47XHJcbiAgY29sdW1ucz86IEZpZWxkSW5mb1tdO1xyXG4gIGZhbWlseT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1YmVJbmZvIHtcclxuICBqb2JJbmZvOiBCYWNrZ3JvdW5kSm9iSW5mbztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEpvYkluZm8ge1xyXG4gIGpvYkluZm86IEJhY2tncm91bmRKb2JJbmZvO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFja2dyb3VuZEpvYkluZm8ge1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5leHRFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RKb2JTdGF0ZT86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgUnVsZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSb2xlIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxufVxyXG4iXX0=
|
@@ -96,7 +96,7 @@ export class AttachmentPreview {
|
|
96
96
|
this.animationState = 'leave';
|
97
97
|
}
|
98
98
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AttachmentPreview, deps: [{ token: i1.Directionality }, { token: i0.Renderer2 }, { token: FILE_PREVIEW_DIALOG_DATA }, { token: i2.DomSanitizer }, { token: i3.MailboxService }, { token: i4.OverlayRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AttachmentPreview, selector: "bizdoc-attachment-preview", host: { listeners: { "document:resize": "resize()", "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "obj", first: true, predicate: ["obj"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AttachmentPreview, selector: "bizdoc-attachment-preview", host: { listeners: { "document:resize": "resize()", "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "obj", first: true, predicate: ["obj"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-mdc-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj width=\"250\"\r\n height=\"200\">\r\n </object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 auto}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], animations: [
|
100
100
|
trigger('fade', [
|
101
101
|
state('fadeOut', style({ opacity: 0 })),
|
102
102
|
state('fadeIn', style({ opacity: 1 })),
|
@@ -136,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
136
136
|
state('leave', style({ transform: 'translate3d(0, 25%, 0)', opacity: 0 })),
|
137
137
|
transition('* => *', animate(ANIMATION_TIMINGS)),
|
138
138
|
])
|
139
|
-
], template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper
|
139
|
+
], template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-mdc-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj width=\"250\"\r\n height=\"200\">\r\n </object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 auto}\n"] }]
|
140
140
|
}], ctorParameters: function () { return [{ type: i1.Directionality }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
141
141
|
type: Inject,
|
142
142
|
args: [FILE_PREVIEW_DIALOG_DATA]
|
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
153
153
|
type: HostListener,
|
154
154
|
args: ['document:keydown.escape', []]
|
155
155
|
}] } });
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9hdHRhY2htZW50cy9wcmV2aWV3L2F0dGFjaG1lbnQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvYXR0YWNobWVudHMvcHJldmlldy9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUV2SixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7QUFHbEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQWMsMEJBQTBCLENBQUMsQ0FBQztBQUVwRyxNQUFNLGlCQUFpQixHQUFHLHdDQUF3QyxDQUFDO0FBMEJuRSxrQ0FBa0M7QUFDbEMsTUFBTSxPQUFPLGlCQUFpQjtJQWE1Qiw4QkFBOEI7SUFDOUIsWUFBWSxlQUErQixFQUNqQyxTQUFvQixFQUEyQyxJQUFpQixFQUN4RixTQUF1QixFQUNmLFFBQXdCLEVBQ3hCLFdBQXVCO1FBSHZCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBMkMs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QyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1DQUFtQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwRixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3hELEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUMxRSxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3lCQUNqRCxDQUFDO3FCQUNIOzswQkFrQmdDLE1BQU07MkJBQUMsd0JBQXdCOzZIQWQzQixHQUFHO3NCQUF2QyxTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsR0FBRztzQkFBdEMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXlCbEMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBb0NuQyxLQUFLO3NCQURKLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdCwgSG9zdExpc3RlbmVyLCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlLCBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHksIERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgdGFrZSwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGlzSW1hZ2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZJTEVfUFJFVklFV19ESUFMT0dfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcmV2aWV3RGF0YT4oJ0ZJTEVfUFJFVklFV19ESUFMT0dfREFUQScpO1xyXG5cclxuY29uc3QgQU5JTUFUSU9OX1RJTUlOR1MgPSAnNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYXR0YWNobWVudC1wcmV2aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNobWVudC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xyXG4gICAgICBzdGF0ZSgnZmFkZU91dCcsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSksXHJcbiAgICAgIHN0YXRlKCdmYWRlSW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGZhZGVJbicsIGFuaW1hdGUoQU5JTUFUSU9OX1RJTUlOR1MpKVxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScgfSkpLFxyXG4gICAgICBzdGF0ZSgnZW50ZXInLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKSxcclxuICAgICAgc3RhdGUoJ2xlYXZlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScpKVxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZUNvbnRlbnQnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAyNSUsIDApIHNjYWxlKDAuOSknLCBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgc3RhdGUoJ2VudGVyJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdub25lJywgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHN0YXRlKCdsZWF2ZScsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMjUlLCAwKScsIG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKEFOSU1BVElPTl9USU1JTkdTKSksXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuLyoqIGF0dGFjaG1lbnQtcHJldmlldyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFByZXZpZXcgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ29iaicsIHsgc3RhdGljOiBmYWxzZSB9KSBvYmo6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW1nJywgeyBzdGF0aWM6IHRydWUgfSkgaW1nOiBFbGVtZW50UmVmO1xyXG4gIG9iamVjdERhdGE6IFNhZmVVcmw7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgZGlyOiBEaXJlY3Rpb247XHJcbiAgaXNJbWFnZTogYm9vbGVhbjtcclxuICBhbmltYXRpb25TdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyB8ICdsZWF2ZScgPSAnZW50ZXInO1xyXG4gIHNsaWRlRG93bjogJ2VudGVyJyB8ICdsZWF2ZScgfCAndm9pZCcgPSAnZW50ZXInO1xyXG4gIHJlYWRvbmx5IGFuaW1hdGlvblN0YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XHJcbiAgcHJpdmF0ZSBfZGVnID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9iZWZvcmVDbG9zZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiBhdHRhY2htZW50LXByZXZpZXcgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKF9kaXJlY3Rpb25hbGl0eTogRGlyZWN0aW9uYWxpdHksXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBASW5qZWN0KEZJTEVfUFJFVklFV19ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFByZXZpZXdEYXRhLFxyXG4gICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBNYWlsYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHtcclxuICAgIHRoaXMuZGlyID0gX2RpcmVjdGlvbmFsaXR5LnZhbHVlO1xyXG4gICAgdGhpcy5pc0ltYWdlID0gaXNJbWFnZSh0aGlzLmRhdGEuZmlsZS5jb250ZW50VHlwZSk7XHJcbiAgICBsZXQgdXJsID0gdGhpcy5fdXJsKCk7XHJcbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPiAwID8gJyYnIDogJz8nKSArICdpbmxpbmU9dHJ1ZSc7XHJcbiAgICB0aGlzLm9iamVjdERhdGEgPSBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XHJcbiAgICB0aGlzLmJlZm9yZUNsb3NlKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2xpZGVEb3duID0gJ2xlYXZlJyk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnJlc2l6ZScsIFtdKVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0ltYWdlKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMub2JqLm5hdGl2ZUVsZW1lbnQsICdtaW4td2lkdGgnLCBgJHt3aW5kb3cuaW5uZXJXaWR0aH1weGApO1xyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm9iai5uYXRpdmVFbGVtZW50LCAnbWluLWhlaWdodCcsIGAke3dpbmRvdy5pbm5lckhlaWdodH1weGApXHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKCkge1xyXG4gICAgbG9jYXRpb24uYXNzaWduKHRoaXMuX3VybCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZS5mb3JtYXREb3dubG9hZFVybCh0aGlzLmRhdGEuZG9jdW1lbnRJZCwgdGhpcy5kYXRhLmZpbGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgcm90YXRlKCkge1xyXG4gICAgY29uc3QgZWxlbSA9ICh0aGlzLmlzSW1hZ2UgPyB0aGlzLmltZyA6IHRoaXMub2JqKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZGVnID0gdGhpcy5fZGVnID09PSAyNzAgPyAwIDogdGhpcy5fZGVnICsgOTA7XHJcbiAgICBlbGVtLnN0eWxlLnRyYW5zZm9ybSA9IGByb3RhdGUoJHt0aGlzLl9kZWd9ZGVnKWA7XHJcbiAgfVxyXG4gIG9uTG9hZChfZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIGFmdGVyQ2xvc2VkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyQ2xvc2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgYmVmb3JlQ2xvc2UoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgW10pXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICAvLyBMaXN0ZW4gZm9yIGFuaW1hdGlvbiAnc3RhcnQnIGV2ZW50c1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShcclxuICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnBoYXNlTmFtZSA9PT0gJ3N0YXJ0JyksXHJcbiAgICAgIHRha2UoMSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fYmVmb3JlQ2xvc2UubmV4dCgpO1xyXG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZS5jb21wbGV0ZSgpO1xyXG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBMaXN0ZW4gZm9yIGFuaW1hdGlvbiAnZG9uZScgZXZlbnRzXHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ2xlYXZlJyksXHJcbiAgICAgIHRha2UoMSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQoKTtcclxuICAgICAgdGhpcy5fYWZ0ZXJDbG9zZWQuY29tcGxldGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFN0YXJ0IGV4aXQgYW5pbWF0aW9uXHJcbiAgICB0aGlzLnN0YXJ0RXhpdEFuaW1hdGlvbigpO1xyXG4gIH1cclxuICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhcnRFeGl0QW5pbWF0aW9uKCkge1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9ICdsZWF2ZSc7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0RhdGEge1xyXG4gIGRvY3VtZW50SWQ6IG51bWJlcjtcclxuICBmaWxlOiBBdHRhY2htZW50O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJvdmVybGF5LWNvbnRlbnRcIiBbQHNsaWRlQ29udGVudF09XCJhbmltYXRpb25TdGF0ZVwiIChAc2xpZGVDb250ZW50LnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXHJcbiAgICAgW2Rpcl09XCJkaXJcIiAoQHNsaWRlQ29udGVudC5kb25lKT1cIm9uQW5pbWF0aW9uRG9uZSgkZXZlbnQpXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRvb2xiYXItd3JhcHBlclwiIGNsYXNzPVwicm93XCIgW0BzbGlkZURvd25dPVwic2xpZGVEb3duXCIgKm5nSWY9XCIhbG9hZGluZ1wiPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiBiaXpkb2NUb29sdGlwPVwie3snQmFjaycgfCB0cmFuc2xhdGV9fVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktMVwiPnt7ZGF0YS5maWxlLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicm90YXRlKClcIiBiaXpkb2NUb29sdGlwPVwie3snUm90YXRlJyB8IHRyYW5zbGF0ZSB9fVwiPjxtYXQtaWNvbj5zY3JlZW5fcm90YXRpb248L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRvd25sb2FkKClcIiBiaXpkb2NUb29sdGlwPVwie3snRG93bmxvYWQnIHwgdHJhbnNsYXRlfX1cIj48bWF0LWljb24+c2F2ZV9hbHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzcGlubmVyLXdyYXBwZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxvYmplY3QgKGxvYWQpPVwib25Mb2FkKCRldmVudClcIiBbZGF0YV09XCJvYmplY3REYXRhXCIgW3R5cGVdPVwiZGF0YS5maWxlLmNvbnRlbnRUeXBlXCIgKm5nSWY9XCIhaXNJbWFnZVwiICNvYmogd2lkdGg9XCIyNTBcIlxyXG4gICAgICAgICAgaGVpZ2h0PVwiMjAwXCI+XHJcbiAgPC9vYmplY3Q+XHJcbiAgPGltZyAqbmdJZj1cImlzSW1hZ2VcIiAobG9hZCk9XCJvbkxvYWQoJGV2ZW50KVwiIFtzdHlsZS5vcGFjaXR5XT1cImxvYWRpbmcgPyAwIDogMVwiIFtAZmFkZV09XCJsb2FkaW5nID8gJ2ZhZGVPdXQnIDogJ2ZhZGVJbidcIiBbc3JjXT1cIm9iamVjdERhdGFcIiAjaW1nPlxyXG48L2Rpdj5cclxuIl19
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9hdHRhY2htZW50cy9wcmV2aWV3L2F0dGFjaG1lbnQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvYXR0YWNobWVudHMvcHJldmlldy9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUV2SixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7QUFHbEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQWMsMEJBQTBCLENBQUMsQ0FBQztBQUVwRyxNQUFNLGlCQUFpQixHQUFHLHdDQUF3QyxDQUFDO0FBMEJuRSxrQ0FBa0M7QUFDbEMsTUFBTSxPQUFPLGlCQUFpQjtJQWE1Qiw4QkFBOEI7SUFDOUIsWUFBWSxlQUErQixFQUNqQyxTQUFvQixFQUEyQyxJQUFpQixFQUN4RixTQUF1QixFQUNmLFFBQXdCLEVBQ3hCLFdBQXVCO1FBSHZCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBMkMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUVoRixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWRqQyxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBR2YsbUJBQWMsR0FBK0IsT0FBTyxDQUFDO1FBQ3JELGNBQVMsR0FBK0IsT0FBTyxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQzVELFNBQUksR0FBRyxDQUFDLENBQUM7UUFDQSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbkMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT2xELElBQUksQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFBO1NBQ3pGO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBQ0QsUUFBUTtRQUNOLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNPLElBQUk7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxVQUFVLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUNuRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUs7UUFDSCxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsRUFDNUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLEVBQ3hFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILHVCQUF1QjtRQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBcUI7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXFCO1FBQ25DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUNoQyxDQUFDOzhHQWhHVSxpQkFBaUIseUVBZVksd0JBQXdCO2tHQWZyRCxpQkFBaUIsc1ZDeEM5QixveENBaUJBLDQxQ0RFYztZQUNWLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUN0RCxDQUFDO1lBQ0YsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDbkIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7YUFDeEUsQ0FBQztZQUNGLE9BQU8sQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1DQUFtQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRSxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ2pELENBQUM7U0FDSDs7MkZBR1UsaUJBQWlCO2tCQXpCN0IsU0FBUzsrQkFDRSwyQkFBMkIsY0FHekI7d0JBQ1YsT0FBTyxDQUFDLE1BQU0sRUFBRTs0QkFDZCxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN2QyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN0QyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3lCQUN0RCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ25CLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQzs0QkFDeEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs0QkFDckQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO3lCQUN4RSxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1DQUFtQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwRixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3hELEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUMxRSxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3lCQUNqRCxDQUFDO3FCQUNIOzswQkFrQmdDLE1BQU07MkJBQUMsd0JBQXdCOzZIQWQzQixHQUFHO3NCQUF2QyxTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsR0FBRztzQkFBdEMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXlCbEMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBb0NuQyxLQUFLO3NCQURKLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdCwgSG9zdExpc3RlbmVyLCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlLCBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHksIERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgdGFrZSwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGlzSW1hZ2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZJTEVfUFJFVklFV19ESUFMT0dfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcmV2aWV3RGF0YT4oJ0ZJTEVfUFJFVklFV19ESUFMT0dfREFUQScpO1xyXG5cclxuY29uc3QgQU5JTUFUSU9OX1RJTUlOR1MgPSAnNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYXR0YWNobWVudC1wcmV2aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNobWVudC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xyXG4gICAgICBzdGF0ZSgnZmFkZU91dCcsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSksXHJcbiAgICAgIHN0YXRlKCdmYWRlSW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGZhZGVJbicsIGFuaW1hdGUoQU5JTUFUSU9OX1RJTUlOR1MpKVxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScgfSkpLFxyXG4gICAgICBzdGF0ZSgnZW50ZXInLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKSxcclxuICAgICAgc3RhdGUoJ2xlYXZlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScpKVxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZUNvbnRlbnQnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAyNSUsIDApIHNjYWxlKDAuOSknLCBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgc3RhdGUoJ2VudGVyJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdub25lJywgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHN0YXRlKCdsZWF2ZScsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMjUlLCAwKScsIG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKEFOSU1BVElPTl9USU1JTkdTKSksXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuLyoqIGF0dGFjaG1lbnQtcHJldmlldyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFByZXZpZXcgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ29iaicsIHsgc3RhdGljOiBmYWxzZSB9KSBvYmo6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW1nJywgeyBzdGF0aWM6IHRydWUgfSkgaW1nOiBFbGVtZW50UmVmO1xyXG4gIG9iamVjdERhdGE6IFNhZmVVcmw7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgZGlyOiBEaXJlY3Rpb247XHJcbiAgaXNJbWFnZTogYm9vbGVhbjtcclxuICBhbmltYXRpb25TdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyB8ICdsZWF2ZScgPSAnZW50ZXInO1xyXG4gIHNsaWRlRG93bjogJ2VudGVyJyB8ICdsZWF2ZScgfCAndm9pZCcgPSAnZW50ZXInO1xyXG4gIHJlYWRvbmx5IGFuaW1hdGlvblN0YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XHJcbiAgcHJpdmF0ZSBfZGVnID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9iZWZvcmVDbG9zZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiBhdHRhY2htZW50LXByZXZpZXcgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKF9kaXJlY3Rpb25hbGl0eTogRGlyZWN0aW9uYWxpdHksXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBASW5qZWN0KEZJTEVfUFJFVklFV19ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFByZXZpZXdEYXRhLFxyXG4gICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBNYWlsYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHtcclxuICAgIHRoaXMuZGlyID0gX2RpcmVjdGlvbmFsaXR5LnZhbHVlO1xyXG4gICAgdGhpcy5pc0ltYWdlID0gaXNJbWFnZSh0aGlzLmRhdGEuZmlsZS5jb250ZW50VHlwZSk7XHJcbiAgICBsZXQgdXJsID0gdGhpcy5fdXJsKCk7XHJcbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPiAwID8gJyYnIDogJz8nKSArICdpbmxpbmU9dHJ1ZSc7XHJcbiAgICB0aGlzLm9iamVjdERhdGEgPSBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XHJcbiAgICB0aGlzLmJlZm9yZUNsb3NlKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2xpZGVEb3duID0gJ2xlYXZlJyk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnJlc2l6ZScsIFtdKVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0ltYWdlKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMub2JqLm5hdGl2ZUVsZW1lbnQsICdtaW4td2lkdGgnLCBgJHt3aW5kb3cuaW5uZXJXaWR0aH1weGApO1xyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm9iai5uYXRpdmVFbGVtZW50LCAnbWluLWhlaWdodCcsIGAke3dpbmRvdy5pbm5lckhlaWdodH1weGApXHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKCkge1xyXG4gICAgbG9jYXRpb24uYXNzaWduKHRoaXMuX3VybCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZS5mb3JtYXREb3dubG9hZFVybCh0aGlzLmRhdGEuZG9jdW1lbnRJZCwgdGhpcy5kYXRhLmZpbGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgcm90YXRlKCkge1xyXG4gICAgY29uc3QgZWxlbSA9ICh0aGlzLmlzSW1hZ2UgPyB0aGlzLmltZyA6IHRoaXMub2JqKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZGVnID0gdGhpcy5fZGVnID09PSAyNzAgPyAwIDogdGhpcy5fZGVnICsgOTA7XHJcbiAgICBlbGVtLnN0eWxlLnRyYW5zZm9ybSA9IGByb3RhdGUoJHt0aGlzLl9kZWd9ZGVnKWA7XHJcbiAgfVxyXG4gIG9uTG9hZChfZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIGFmdGVyQ2xvc2VkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyQ2xvc2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgYmVmb3JlQ2xvc2UoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgW10pXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICAvLyBMaXN0ZW4gZm9yIGFuaW1hdGlvbiAnc3RhcnQnIGV2ZW50c1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShcclxuICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnBoYXNlTmFtZSA9PT0gJ3N0YXJ0JyksXHJcbiAgICAgIHRha2UoMSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fYmVmb3JlQ2xvc2UubmV4dCgpO1xyXG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZS5jb21wbGV0ZSgpO1xyXG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBMaXN0ZW4gZm9yIGFuaW1hdGlvbiAnZG9uZScgZXZlbnRzXHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ2xlYXZlJyksXHJcbiAgICAgIHRha2UoMSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQoKTtcclxuICAgICAgdGhpcy5fYWZ0ZXJDbG9zZWQuY29tcGxldGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFN0YXJ0IGV4aXQgYW5pbWF0aW9uXHJcbiAgICB0aGlzLnN0YXJ0RXhpdEFuaW1hdGlvbigpO1xyXG4gIH1cclxuICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhcnRFeGl0QW5pbWF0aW9uKCkge1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9ICdsZWF2ZSc7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0RhdGEge1xyXG4gIGRvY3VtZW50SWQ6IG51bWJlcjtcclxuICBmaWxlOiBBdHRhY2htZW50O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJvdmVybGF5LWNvbnRlbnRcIiBbQHNsaWRlQ29udGVudF09XCJhbmltYXRpb25TdGF0ZVwiIChAc2xpZGVDb250ZW50LnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXHJcbiAgICAgW2Rpcl09XCJkaXJcIiAoQHNsaWRlQ29udGVudC5kb25lKT1cIm9uQW5pbWF0aW9uRG9uZSgkZXZlbnQpXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRvb2xiYXItd3JhcHBlciByb3dcIiBbQHNsaWRlRG93bl09XCJzbGlkZURvd25cIiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIGJpemRvY1Rvb2x0aXA9XCJ7eydCYWNrJyB8IHRyYW5zbGF0ZX19XCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtYXQtbWRjLWJvZHktMVwiPnt7ZGF0YS5maWxlLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicm90YXRlKClcIiBiaXpkb2NUb29sdGlwPVwie3snUm90YXRlJyB8IHRyYW5zbGF0ZSB9fVwiPjxtYXQtaWNvbj5zY3JlZW5fcm90YXRpb248L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRvd25sb2FkKClcIiBiaXpkb2NUb29sdGlwPVwie3snRG93bmxvYWQnIHwgdHJhbnNsYXRlfX1cIj48bWF0LWljb24+c2F2ZV9hbHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzcGlubmVyLXdyYXBwZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxvYmplY3QgKGxvYWQpPVwib25Mb2FkKCRldmVudClcIiBbZGF0YV09XCJvYmplY3REYXRhXCIgW3R5cGVdPVwiZGF0YS5maWxlLmNvbnRlbnRUeXBlXCIgKm5nSWY9XCIhaXNJbWFnZVwiICNvYmogd2lkdGg9XCIyNTBcIlxyXG4gICAgICAgICAgaGVpZ2h0PVwiMjAwXCI+XHJcbiAgPC9vYmplY3Q+XHJcbiAgPGltZyAqbmdJZj1cImlzSW1hZ2VcIiAobG9hZCk9XCJvbkxvYWQoJGV2ZW50KVwiIFtzdHlsZS5vcGFjaXR5XT1cImxvYWRpbmcgPyAwIDogMVwiIFtAZmFkZV09XCJsb2FkaW5nID8gJ2ZhZGVPdXQnIDogJ2ZhZGVJbidcIiBbc3JjXT1cIm9iamVjdERhdGFcIiAjaW1nPlxyXG48L2Rpdj5cclxuIl19
|