@bizdoc/core 1.16.14 → 1.16.17
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/bizdoc-schema.json +6 -0
- package/esm2020/lib/admin/configuration-designer/declarations.mjs +17 -4
- package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +35 -32
- package/esm2020/lib/admin/configuration-designer/designer.base.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/designer.component.mjs +25 -3
- package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +7 -4
- package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +9 -8
- package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +9 -6
- package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +2 -2
- package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +26 -11
- package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +3 -3
- package/esm2020/lib/admin/form/designer/designer.component.mjs +3 -4
- package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
- package/esm2020/lib/core/functions.mjs +3 -2
- package/esm2020/lib/core/translations.mjs +6 -2
- package/fesm2015/bizdoc-core.mjs +133 -76
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +131 -76
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/configuration-designer/declarations.d.ts +9 -3
- package/lib/admin/configuration-designer/designer-element.component.d.ts +6 -3
- package/lib/admin/configuration-designer/elements/form.component.d.ts +2 -0
- package/lib/admin/configuration-designer/elements/matrix-view.component.d.ts +4 -5
- package/lib/admin/configuration-designer/elements/role.component.d.ts +2 -0
- package/lib/admin/configuration-designer/elements/type.component.d.ts +11 -0
- package/lib/admin/form/designer/designer.component.d.ts +0 -1
- package/lib/core/translations.d.ts +5 -1
- package/package.json +1 -1
@@ -153,7 +153,7 @@ let PatternsComponent = class PatternsComponent {
|
|
153
153
|
}
|
154
154
|
};
|
155
155
|
PatternsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PatternsComponent, deps: [{ token: i1.SessionService }, { token: i2.Directionality }, { token: i3.FormBuilder }, { token: UtilityRef }, { token: i4.DatasourceService }, { token: i5.SystemService }, { token: i6.PromptService }, { token: i7.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
156
|
-
PatternsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PatternsComponent, selector: "ng-component", viewQueries: [{ propertyName: "properties", first: true, predicate: ["properties"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"create()\" [bizdocTooltip]=\"'Add'|translate\" data-guide=\"create\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<table mat-table [dataSource]=\"dataSource\" matSort>\r\n <ng-container matColumnDef=\"title\" sticky>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Title'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let r of roles\" [matColumnDef]=\"r.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{r.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <mat-checkbox [checked]=\"element.roles && element.roles.indexOf(r.name) > -1\" (change)=\"toggle(element, r.name, $event)\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <button mat-menu-item (click)=\"edit(element)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(element)\">{{'Discard'|translate}}</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\"></tr>\r\n</table>\r\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons *ngIf=\"paging\"></mat-paginator>\r\n<!-- dialog -->\r\n<ng-template #properties>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'|translate\" required />\r\n </mat-form-field>\r\n <div formGroupName=\"axes\" *ngIf=\"cube\" fxLayout.gt-sm=\"row wrap\" fxLayout=\"column wrap\"\r\n fxLayoutGap=\"5px grid\">\r\n <ng-container *ngFor=\"let a of cube.axes\">\r\n <mat-form-field *ngIf=\"include.indexOf(a.name)>-1\" fxFlex=\"50\">\r\n <input matInput\r\n [matAutocomplete]=\"segment\" [pattern]=\"pattern\"\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment>\r\n <mat-option *ngFor=\"let o of segments[a.name] | async\" [value]=\"o.key\">{{o.value}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"axes.controls[a.name].invalid\">{{'PatternErr' |translate}}</mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <mat-form-field>\r\n <mat-select formControlName=\"roles\" [placeholder]=\"'Roles'|translate\" multiple required>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.roles.hasError('required')\">{{'Required'|translate:('Roles'|translate)}}</mat-error>\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]=\"form.value\" [disabled]=\"!form.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<style scoped>\r\n table {\r\n width: 100%\r\n }\r\n</style>\r\n", styles: ["\n table {\n width: 100%\n }\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i9.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i9.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i9.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i11.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i11.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i7.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i7.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i14.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i15.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i15.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i16.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i17.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i17.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i18.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i19.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i20.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i21.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: i22.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i23.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i23.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i23.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.TranslatePipe, name: "translate" }] });
|
156
|
+
PatternsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PatternsComponent, selector: "ng-component", viewQueries: [{ propertyName: "properties", first: true, predicate: ["properties"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"create()\" [bizdocTooltip]=\"'Add'|translate\" data-guide=\"create\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<table mat-table [dataSource]=\"dataSource\" matSort>\r\n <ng-container matColumnDef=\"title\" sticky>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Title'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let r of roles\" [matColumnDef]=\"r.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{r.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <mat-checkbox [checked]=\"element.roles && element.roles.indexOf(r.name) > -1\" (change)=\"toggle(element, r.name, $event)\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <button mat-menu-item (click)=\"edit(element)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(element)\">{{'Discard'|translate}}</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\"></tr>\r\n</table>\r\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons *ngIf=\"paging\"></mat-paginator>\r\n<!-- dialog -->\r\n<ng-template #properties>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'|translate\" required />\r\n </mat-form-field>\r\n <div formGroupName=\"axes\" *ngIf=\"cube\" fxLayout.gt-sm=\"row wrap\" fxLayout=\"column wrap\"\r\n fxLayoutGap=\"5px grid\">\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-form-field *ngIf=\"include.indexOf(a.name)>-1\" fxFlex=\"50\">\r\n <input matInput\r\n [matAutocomplete]=\"segment\" [pattern]=\"pattern\"\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment>\r\n <mat-option *ngFor=\"let o of segments[a.name] | async\" [value]=\"o.key\">{{o.value}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"axes.controls[a.name].invalid\">{{'PatternErr' |translate}}</mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <mat-form-field>\r\n <mat-select formControlName=\"roles\" [placeholder]=\"'Roles'|translate\" multiple required>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.roles.hasError('required')\">{{'Required'|translate:('Roles'|translate)}}</mat-error>\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]=\"form.value\" [disabled]=\"!form.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<style scoped>\r\n table {\r\n width: 100%\r\n }\r\n</style>\r\n", styles: ["\n table {\n width: 100%\n }\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i9.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i9.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i9.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i11.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i11.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i7.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i7.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i14.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i15.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i15.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i16.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i17.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i17.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i18.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i19.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i20.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i21.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: i22.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i23.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i23.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i23.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.TranslatePipe, name: "translate" }] });
|
157
157
|
PatternsComponent = __decorate([
|
158
158
|
BizDoc({
|
159
159
|
selector: 'bizdoc-patterns'
|
@@ -162,7 +162,7 @@ PatternsComponent = __decorate([
|
|
162
162
|
export { PatternsComponent };
|
163
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PatternsComponent, decorators: [{
|
164
164
|
type: Component,
|
165
|
-
args: [{ template: "<mat-toolbar>\r\n <button mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"create()\" [bizdocTooltip]=\"'Add'|translate\" data-guide=\"create\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<table mat-table [dataSource]=\"dataSource\" matSort>\r\n <ng-container matColumnDef=\"title\" sticky>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Title'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let r of roles\" [matColumnDef]=\"r.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{r.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <mat-checkbox [checked]=\"element.roles && element.roles.indexOf(r.name) > -1\" (change)=\"toggle(element, r.name, $event)\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <button mat-menu-item (click)=\"edit(element)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(element)\">{{'Discard'|translate}}</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\"></tr>\r\n</table>\r\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons *ngIf=\"paging\"></mat-paginator>\r\n<!-- dialog -->\r\n<ng-template #properties>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'|translate\" required />\r\n </mat-form-field>\r\n <div formGroupName=\"axes\" *ngIf=\"cube\" fxLayout.gt-sm=\"row wrap\" fxLayout=\"column wrap\"\r\n fxLayoutGap=\"5px grid\">\r\n <ng-container *ngFor=\"let a of cube
|
165
|
+
args: [{ template: "<mat-toolbar>\r\n <button mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"create()\" [bizdocTooltip]=\"'Add'|translate\" data-guide=\"create\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<table mat-table [dataSource]=\"dataSource\" matSort>\r\n <ng-container matColumnDef=\"title\" sticky>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Title'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let r of roles\" [matColumnDef]=\"r.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{r.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <mat-checkbox [checked]=\"element.roles && element.roles.indexOf(r.name) > -1\" (change)=\"toggle(element, r.name, $event)\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <button mat-menu-item (click)=\"edit(element)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(element)\">{{'Discard'|translate}}</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\"></tr>\r\n</table>\r\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons *ngIf=\"paging\"></mat-paginator>\r\n<!-- dialog -->\r\n<ng-template #properties>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'|translate\" required />\r\n </mat-form-field>\r\n <div formGroupName=\"axes\" *ngIf=\"cube\" fxLayout.gt-sm=\"row wrap\" fxLayout=\"column wrap\"\r\n fxLayoutGap=\"5px grid\">\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-form-field *ngIf=\"include.indexOf(a.name)>-1\" fxFlex=\"50\">\r\n <input matInput\r\n [matAutocomplete]=\"segment\" [pattern]=\"pattern\"\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment>\r\n <mat-option *ngFor=\"let o of segments[a.name] | async\" [value]=\"o.key\">{{o.value}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"axes.controls[a.name].invalid\">{{'PatternErr' |translate}}</mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <mat-form-field>\r\n <mat-select formControlName=\"roles\" [placeholder]=\"'Roles'|translate\" multiple required>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.roles.hasError('required')\">{{'Required'|translate:('Roles'|translate)}}</mat-error>\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]=\"form.value\" [disabled]=\"!form.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<style scoped>\r\n table {\r\n width: 100%\r\n }\r\n</style>\r\n" }]
|
166
166
|
}], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.Directionality }, { type: i3.FormBuilder }, { type: i26.UtilityRef, decorators: [{
|
167
167
|
type: Inject,
|
168
168
|
args: [UtilityRef]
|
@@ -176,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
176
176
|
type: ViewChild,
|
177
177
|
args: [MatPaginator]
|
178
178
|
}] } });
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wYXR0ZXJucy9wYXR0ZXJucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3BhdHRlcm5zL3BhdHRlcm5zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBYSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUczRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFRUixpQkFBaUIsU0FBakIsaUJBQWlCO0lBcUI1QixZQUFvQixRQUF3QixFQUNsQyxJQUFvQixFQUNwQixHQUFnQixFQUNJLElBQTZELEVBQ2pGLEtBQXdCLEVBQ3hCLFFBQXVCLEVBQ3ZCLEdBQWtCLEVBQ2xCLE9BQWtCO1FBUFIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNJLFNBQUksR0FBSixJQUFJLENBQXlEO1FBQ2pGLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWU7UUFDdkIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBM0JuQixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxrQkFBa0IsQ0FBQztRQUV0QyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ0wsYUFBUSxHQUE0QyxFQUFFLENBQUM7UUFDaEUsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQU1WLHFCQUFnQixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsU0FBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLFNBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEQsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2pELENBQUMsQ0FBQztRQUNjLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBVTlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdHLElBQUksQ0FBQyxLQUFLO1lBQ1IsTUFBTSxpQkFBaUIsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDTyxXQUFXLENBQUMsSUFBZTtRQUNqQyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzdDLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBZ0IsRUFBRSxJQUFZLEVBQUUsR0FBc0I7UUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1lBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDdkMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztTQUN0QjthQUNJO1lBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUMxQixRQUFRLEVBQUUsTUFBTTtZQUNoQixpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDOUMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNPLFVBQVUsQ0FBQyxPQUFnQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJO2dCQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWdCO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBSSxDQUFDLE9BQWdCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLEVBQUU7Z0JBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRixDQUFBOzhHQTFIWSxpQkFBaUIseUdBd0JsQixVQUFVO2tHQXhCVCxpQkFBaUIsbU1BUWpCLE9BQU8sNEVBQ1AsWUFBWSxnREN0Q3pCLDhySEFzRUE7QUR6Q2EsaUJBQWlCO0lBSDdCLE1BQU0sQ0FBQztRQUNOLFFBQVEsRUFBRSxpQkFBaUI7S0FDNUIsQ0FBQztHQUNXLGlCQUFpQixDQTBIN0I7U0ExSFksaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBTjdCLFNBQVM7OzswQkE4QkwsTUFBTTsyQkFBQyxVQUFVOzRKQWpCdUIsVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNyQixJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ08sU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ3ViZSwgQXhpc1ZhbHVlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tIFwiLi4vdXRpbGl0eS1yZWZcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFYSVNfVkFMVUVfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2N1YmUvY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vc3lzdGVtLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgUEFHRV9TSVpFID0gMjA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcGF0dGVybnMuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbkBCaXpEb2Moe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXBhdHRlcm5zJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGF0dGVybnNDb21wb25lbnQgaW1wbGVtZW50cyBVdGlsaXR5Q29tcG9uZW50PGJvb2xlYW4sIGFueT4sIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWFkb25seSBQQUdFX1NJWkUgPSBQQUdFX1NJWkU7XHJcbiAgcmVhZG9ubHkgcGF0dGVybiA9IEFYSVNfVkFMVUVfUEFUVEVSTjtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8UGF0dGVybj47XHJcbiAgZGlydHkgPSBmYWxzZTtcclxuICByZWFkb25seSBzZWdtZW50czogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPFNvdXJjZVtdPiB9ID0ge307XHJcbiAgcm9sZXM6IFJvbGVbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ3Byb3BlcnRpZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcm9wZXJ0aWVzOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgaW5jbHVkZTogc3RyaW5nW107XHJcbiAgY3ViZTogQ3ViZTtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gWyd0aXRsZSddO1xyXG4gIHJlYWRvbmx5IGF4ZXMgPSB0aGlzLl9mYi5ncm91cCh7fSk7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGF4ZXM6IHRoaXMuYXhlcyxcclxuICAgIHRpdGxlOiB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgcm9sZXM6IHRoaXMuX2ZiLmNvbnRyb2woW10sIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgfSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcGFnaW5nOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZikgcHJpdmF0ZSBfcmVmOiBVdGlsaXR5UmVmPGJvb2xlYW4sIFBhdHRlcm5bXSwgUGF0dGVybltdLCBhbnksIE9wdGlvbnM+LFxyXG4gICAgcHJpdmF0ZSBfdHlwZTogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgY29uc3QgeyBjdWJlLCBheGVzIH0gPSB0aGlzLl9yZWYub3B0aW9ucztcclxuICAgIGNvbnN0IGNjdWJlID0gY3ViZSA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBjdWJlKSA6IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIGlmICghY2N1YmUpXHJcbiAgICAgIHRocm93ICdjdWJlIG5vdCBmb3VuZC4nO1xyXG4gICAgdGhpcy5jdWJlID0gY2N1YmU7XHJcbiAgICB0aGlzLmluY2x1ZGUgPSBheGVzIHx8IGNjdWJlLmF4ZXMuZmlsdGVyKGEgPT4gYS5zZWxlY3Rpb25Nb2RlICE9PSAnTm9uZScgJiYgYS5jb21iaW5hdGlvbikubWFwKGEgPT4gYS5uYW1lKTtcclxuICAgIHRoaXMuY3ViZS5heGVzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgIHRoaXMuYXhlcy5hZGRDb250cm9sKGEubmFtZSwgdGhpcy5fZmIuY29udHJvbChudWxsKSk7XHJcbiAgICAgIHRoaXMuc2VnbWVudHNbYS5uYW1lXSA9IHRoaXMuX3R5cGUuYWxsKGEuZGF0YVR5cGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlydHkgPSB0cnVlKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uucm9sZXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMuX3JlZi5wb3B1bGF0ZSgpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgICB0aGlzLl9jb2x1bW5zKHIpO1xyXG4gICAgICAgIHRoaXMuX2RhdGFzb3VyY2UocCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGFzb3VyY2UoZGF0YTogUGF0dGVybltdKSB7XHJcbiAgICAvLyByb2xlcyBzb3J0aW5nXHJcbiAgICBkYXRhLmZvckVhY2gocCA9PiBwLnJvbGVzICYmIHAucm9sZXMuZm9yRWFjaChyID0+IHBbcl0gPSB0cnVlKSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGRhdGEgfHwgW10pO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICB0aGlzLnBhZ2luZyA9IGRhdGEubGVuZ3RoID4gUEFHRV9TSVpFO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29sdW1ucyhyb2xlczogUm9sZVtdKSB7XHJcbiAgICB0aGlzLnJvbGVzID0gcm9sZXM7XHJcbiAgICByb2xlcy5mb3JFYWNoKGUgPT4gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goZS5uYW1lKSk7XHJcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgnb3B0aW9ucycpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKHBhdHRlcm46IFBhdHRlcm4sIHJvbGU6IHN0cmluZywgZXZ0OiBNYXRDaGVja2JveENoYW5nZSkge1xyXG4gICAgaWYgKCFwYXR0ZXJuLnJvbGVzKSBwYXR0ZXJuLnJvbGVzID0gW107XHJcbiAgICBpZiAoZXZ0LmNoZWNrZWQpIHtcclxuICAgICAgcGF0dGVybi5yb2xlcy5wdXNoKHJvbGUpO1xyXG4gICAgICBwYXR0ZXJuW3JvbGVdID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBwYXR0ZXJuLnJvbGVzLnJlbW92ZShyb2xlKTtcclxuICAgICAgcGF0dGVybltyb2xlXSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGNyZWF0ZSgpIHtcclxuICAgIHRoaXMuZm9ybS5yZXNldCh7IGF4ZXM6IHt9LCByb2xlczogW10gfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4odGhpcy5wcm9wZXJ0aWVzLCB7XHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlLFxyXG4gICAgICBtaW5XaWR0aDogJzY2dncnLFxyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHBhdHRlcm46IFBhdHRlcm4pID0+IHtcclxuICAgICAgaWYgKHBhdHRlcm4pIHtcclxuICAgICAgICBwYXR0ZXJuLm5hbWUgPSBwYXR0ZXJuLnRpdGxlLm5vcm1hbGl6ZSgpO1xyXG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZShwYXR0ZXJuKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5wdXNoKHBhdHRlcm4pO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX25vcm1hbGl6ZShwYXR0ZXJuOiBQYXR0ZXJuKSB7XHJcbiAgICB0aGlzLnJvbGVzLmZvckVhY2gociA9PiBwYXR0ZXJuW3IubmFtZV0gPSBwYXR0ZXJuLnJvbGVzLmluZGV4T2Yoci5uYW1lKSA+IC0xKTtcclxuICAgIE9iamVjdC5rZXlzKHBhdHRlcm4uYXhlcykuZm9yRWFjaChrID0+IHtcclxuICAgICAgaWYgKHBhdHRlcm4uYXhlc1trXSA9PT0gbnVsbClcclxuICAgICAgICBkZWxldGUgcGF0dGVybi5heGVzW2tdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUocGF0dGVybjogUGF0dGVybikge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEucmVtb3ZlKHBhdHRlcm4pO1xyXG4gIH1cclxuICBlZGl0KHBhdHRlcm46IFBhdHRlcm4pIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHBhdHRlcm4sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMucHJvcGVydGllcykuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIGlmIChyKSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwYXR0ZXJuLCByKTtcclxuICAgICAgICB0aGlzLl9ub3JtYWxpemUocGF0dGVybik7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5fcmVmLmV4ZWN1dGUodGhpcy5kYXRhU291cmNlLmRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5fc2IudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBPcHRpb25zIHtcclxuICBjdWJlOiBzdHJpbmc7XHJcbiAgYXhlczogc3RyaW5nW107XHJcbn1cclxuaW50ZXJmYWNlIFBhdHRlcm4ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHJvbGVzOiBzdHJpbmdbXTtcclxuICBheGVzOiB7XHJcbiAgICBbYXhpczogc3RyaW5nXTogQXhpc1ZhbHVlO1xyXG4gIH07XHJcbn1cclxuaW50ZXJmYWNlIFJvbGUge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBTb3VyY2Uge1xyXG4gIGtleTogYW55O1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFkaXJ0eVwiPnt7J1NhdmVDaGFuZ2VzJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQWRkJ3x0cmFuc2xhdGVcIiBkYXRhLWd1aWRlPVwiY3JlYXRlXCI+PG1hdC1pY29uPmFkZDwvbWF0LWljb24+PC9idXR0b24+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIG1hdFNvcnQ+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0aXRsZVwiIHN0aWNreT5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1RpdGxlJ3x0cmFuc2xhdGV9fTwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQudGl0bGV9fSA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHIgb2Ygcm9sZXNcIiBbbWF0Q29sdW1uRGVmXT1cInIubmFtZVwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3tyLnRpdGxlfX08L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgPG1hdC1jaGVja2JveCBbY2hlY2tlZF09XCJlbGVtZW50LnJvbGVzICYmIGVsZW1lbnQucm9sZXMuaW5kZXhPZihyLm5hbWUpID4gLTFcIiAoY2hhbmdlKT1cInRvZ2dsZShlbGVtZW50LCByLm5hbWUsICRldmVudClcIj48L21hdC1jaGVja2JveD5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcHRpb25zXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc1wiPjxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8bWF0LW1lbnUgI29wdGlvbnM+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJlZGl0KGVsZW1lbnQpXCI+e3snRWRpdCd8dHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRlbGV0ZShlbGVtZW50KVwiPnt7J0Rpc2NhcmQnfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGVsZW1lbnQ7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cclxuPC90YWJsZT5cclxuPG1hdC1wYWdpbmF0b3IgW3BhZ2VTaXplXT1cIlBBR0VfU0laRVwiIGhpZGVQYWdlU2l6ZSBzaG93Rmlyc3RMYXN0QnV0dG9ucyAqbmdJZj1cInBhZ2luZ1wiPjwvbWF0LXBhZ2luYXRvcj5cclxuPCEtLSBkaWFsb2cgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjcHJvcGVydGllcz5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIFtwbGFjZWhvbGRlcl09XCInVGl0bGUnfHRyYW5zbGF0ZVwiIHJlcXVpcmVkIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImF4ZXNcIiAqbmdJZj1cImN1YmVcIiBmeExheW91dC5ndC1zbT1cInJvdyB3cmFwXCIgZnhMYXlvdXQ9XCJjb2x1bW4gd3JhcFwiXHJcbiAgICAgICAgICAgZnhMYXlvdXRHYXA9XCI1cHggZ3JpZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGEgb2YgY3ViZS5heGVzXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJpbmNsdWRlLmluZGV4T2YoYS5uYW1lKT4tMVwiIGZ4RmxleD1cIjUwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJzZWdtZW50XCIgW3BhdHRlcm5dPVwicGF0dGVyblwiXHJcbiAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImEubmFtZVwiIFtwbGFjZWhvbGRlcl09XCJhLnRpdGxlXCIgLz5cclxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI3NlZ21lbnQ+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG8gb2Ygc2VnbWVudHNbYS5uYW1lXSB8IGFzeW5jXCIgW3ZhbHVlXT1cIm8ua2V5XCI+e3tvLnZhbHVlfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImF4ZXMuY29udHJvbHNbYS5uYW1lXS5pbnZhbGlkXCI+e3snUGF0dGVybkVycicgfHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInJvbGVzXCIgW3BsYWNlaG9sZGVyXT1cIidSb2xlcyd8dHJhbnNsYXRlXCIgbXVsdGlwbGUgcmVxdWlyZWQ+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgciBvZiByb2xlc1wiIFt2YWx1ZV09XCJyLm5hbWVcIj57e3IudGl0bGV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMucm9sZXMuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57eydSZXF1aXJlZCd8dHJhbnNsYXRlOignUm9sZXMnfHRyYW5zbGF0ZSl9fTwvbWF0LWVycm9yPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZm9ybS52YWx1ZVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiPnt7J09LJ3wgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPnt7J0NhbmNlbCd8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxzdHlsZSBzY29wZWQ+XHJcbiAgdGFibGUge1xyXG4gICAgd2lkdGg6IDEwMCVcclxuICB9XHJcbjwvc3R5bGU+XHJcbiJdfQ==
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wYXR0ZXJucy9wYXR0ZXJucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3BhdHRlcm5zL3BhdHRlcm5zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBYSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUczRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFRUixpQkFBaUIsU0FBakIsaUJBQWlCO0lBcUI1QixZQUFvQixRQUF3QixFQUNsQyxJQUFvQixFQUNwQixHQUFnQixFQUNJLElBQTZELEVBQ2pGLEtBQXdCLEVBQ3hCLFFBQXVCLEVBQ3ZCLEdBQWtCLEVBQ2xCLE9BQWtCO1FBUFIsYUFB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Q0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRixDQUFBOzhHQTFIWSxpQkFBaUIseUdBd0JsQixVQUFVO2tHQXhCVCxpQkFBaUIsbU1BUWpCLE9BQU8sNEVBQ1AsWUFBWSxnREN0Q3pCLCtySEFzRUE7QUR6Q2EsaUJBQWlCO0lBSDdCLE1BQU0sQ0FBQztRQUNOLFFBQVEsRUFBRSxpQkFBaUI7S0FDNUIsQ0FBQztHQUNXLGlCQUFpQixDQTBIN0I7U0ExSFksaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBTjdCLFNBQVM7OzswQkE4QkwsTUFBTTsyQkFBQyxVQUFVOzRKQWpCdUIsVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNyQixJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ08sU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ3ViZSwgQXhpc1ZhbHVlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tIFwiLi4vdXRpbGl0eS1yZWZcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFYSVNfVkFMVUVfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2N1YmUvY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vc3lzdGVtLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgUEFHRV9TSVpFID0gMjA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcGF0dGVybnMuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbkBCaXpEb2Moe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXBhdHRlcm5zJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGF0dGVybnNDb21wb25lbnQgaW1wbGVtZW50cyBVdGlsaXR5Q29tcG9uZW50PGJvb2xlYW4sIGFueT4sIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWFkb25seSBQQUdFX1NJWkUgPSBQQUdFX1NJWkU7XHJcbiAgcmVhZG9ubHkgcGF0dGVybiA9IEFYSVNfVkFMVUVfUEFUVEVSTjtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8UGF0dGVybj47XHJcbiAgZGlydHkgPSBmYWxzZTtcclxuICByZWFkb25seSBzZWdtZW50czogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPFNvdXJjZVtdPiB9ID0ge307XHJcbiAgcm9sZXM6IFJvbGVbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ3Byb3BlcnRpZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcm9wZXJ0aWVzOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgaW5jbHVkZTogc3RyaW5nW107XHJcbiAgY3ViZTogQ3ViZTtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gWyd0aXRsZSddO1xyXG4gIHJlYWRvbmx5IGF4ZXMgPSB0aGlzLl9mYi5ncm91cCh7fSk7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGF4ZXM6IHRoaXMuYXhlcyxcclxuICAgIHRpdGxlOiB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgcm9sZXM6IHRoaXMuX2ZiLmNvbnRyb2woW10sIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgfSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcGFnaW5nOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZikgcHJpdmF0ZSBfcmVmOiBVdGlsaXR5UmVmPGJvb2xlYW4sIFBhdHRlcm5bXSwgUGF0dGVybltdLCBhbnksIE9wdGlvbnM+LFxyXG4gICAgcHJpdmF0ZSBfdHlwZTogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgY29uc3QgeyBjdWJlLCBheGVzIH0gPSB0aGlzLl9yZWYub3B0aW9ucztcclxuICAgIGNvbnN0IGNjdWJlID0gY3ViZSA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBjdWJlKSA6IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIGlmICghY2N1YmUpXHJcbiAgICAgIHRocm93ICdjdWJlIG5vdCBmb3VuZC4nO1xyXG4gICAgdGhpcy5jdWJlID0gY2N1YmU7XHJcbiAgICB0aGlzLmluY2x1ZGUgPSBheGVzIHx8IGNjdWJlLmF4ZXMuZmlsdGVyKGEgPT4gYS5zZWxlY3Rpb25Nb2RlICE9PSAnTm9uZScgJiYgYS5jb21iaW5hdGlvbikubWFwKGEgPT4gYS5uYW1lKTtcclxuICAgIHRoaXMuY3ViZS5heGVzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgIHRoaXMuYXhlcy5hZGRDb250cm9sKGEubmFtZSwgdGhpcy5fZmIuY29udHJvbChudWxsKSk7XHJcbiAgICAgIHRoaXMuc2VnbWVudHNbYS5uYW1lXSA9IHRoaXMuX3R5cGUuYWxsKGEuZGF0YVR5cGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlydHkgPSB0cnVlKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uucm9sZXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMuX3JlZi5wb3B1bGF0ZSgpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgICB0aGlzLl9jb2x1bW5zKHIpO1xyXG4gICAgICAgIHRoaXMuX2RhdGFzb3VyY2UocCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGFzb3VyY2UoZGF0YTogUGF0dGVybltdKSB7XHJcbiAgICAvLyByb2xlcyBzb3J0aW5nXHJcbiAgICBkYXRhLmZvckVhY2gocCA9PiBwLnJvbGVzICYmIHAucm9sZXMuZm9yRWFjaChyID0+IHBbcl0gPSB0cnVlKSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGRhdGEgfHwgW10pO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICB0aGlzLnBhZ2luZyA9IGRhdGEubGVuZ3RoID4gUEFHRV9TSVpFO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29sdW1ucyhyb2xlczogUm9sZVtdKSB7XHJcbiAgICB0aGlzLnJvbGVzID0gcm9sZXM7XHJcbiAgICByb2xlcy5mb3JFYWNoKGUgPT4gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goZS5uYW1lKSk7XHJcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgnb3B0aW9ucycpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKHBhdHRlcm46IFBhdHRlcm4sIHJvbGU6IHN0cmluZywgZXZ0OiBNYXRDaGVja2JveENoYW5nZSkge1xyXG4gICAgaWYgKCFwYXR0ZXJuLnJvbGVzKSBwYXR0ZXJuLnJvbGVzID0gW107XHJcbiAgICBpZiAoZXZ0LmNoZWNrZWQpIHtcclxuICAgICAgcGF0dGVybi5yb2xlcy5wdXNoKHJvbGUpO1xyXG4gICAgICBwYXR0ZXJuW3JvbGVdID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBwYXR0ZXJuLnJvbGVzLnJlbW92ZShyb2xlKTtcclxuICAgICAgcGF0dGVybltyb2xlXSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGNyZWF0ZSgpIHtcclxuICAgIHRoaXMuZm9ybS5yZXNldCh7IGF4ZXM6IHt9LCByb2xlczogW10gfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4odGhpcy5wcm9wZXJ0aWVzLCB7XHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlLFxyXG4gICAgICBtaW5XaWR0aDogJzY2dncnLFxyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHBhdHRlcm46IFBhdHRlcm4pID0+IHtcclxuICAgICAgaWYgKHBhdHRlcm4pIHtcclxuICAgICAgICBwYXR0ZXJuLm5hbWUgPSBwYXR0ZXJuLnRpdGxlLm5vcm1hbGl6ZSgpO1xyXG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZShwYXR0ZXJuKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5wdXNoKHBhdHRlcm4pO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX25vcm1hbGl6ZShwYXR0ZXJuOiBQYXR0ZXJuKSB7XHJcbiAgICB0aGlzLnJvbGVzLmZvckVhY2gociA9PiBwYXR0ZXJuW3IubmFtZV0gPSBwYXR0ZXJuLnJvbGVzLmluZGV4T2Yoci5uYW1lKSA+IC0xKTtcclxuICAgIE9iamVjdC5rZXlzKHBhdHRlcm4uYXhlcykuZm9yRWFjaChrID0+IHtcclxuICAgICAgaWYgKHBhdHRlcm4uYXhlc1trXSA9PT0gbnVsbClcclxuICAgICAgICBkZWxldGUgcGF0dGVybi5heGVzW2tdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUocGF0dGVybjogUGF0dGVybikge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEucmVtb3ZlKHBhdHRlcm4pO1xyXG4gIH1cclxuICBlZGl0KHBhdHRlcm46IFBhdHRlcm4pIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHBhdHRlcm4sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMucHJvcGVydGllcykuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIGlmIChyKSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwYXR0ZXJuLCByKTtcclxuICAgICAgICB0aGlzLl9ub3JtYWxpemUocGF0dGVybik7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5fcmVmLmV4ZWN1dGUodGhpcy5kYXRhU291cmNlLmRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5fc2IudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBPcHRpb25zIHtcclxuICBjdWJlOiBzdHJpbmc7XHJcbiAgYXhlczogc3RyaW5nW107XHJcbn1cclxuaW50ZXJmYWNlIFBhdHRlcm4ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHJvbGVzOiBzdHJpbmdbXTtcclxuICBheGVzOiB7XHJcbiAgICBbYXhpczogc3RyaW5nXTogQXhpc1ZhbHVlO1xyXG4gIH07XHJcbn1cclxuaW50ZXJmYWNlIFJvbGUge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBTb3VyY2Uge1xyXG4gIGtleTogYW55O1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFkaXJ0eVwiPnt7J1NhdmVDaGFuZ2VzJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQWRkJ3x0cmFuc2xhdGVcIiBkYXRhLWd1aWRlPVwiY3JlYXRlXCI+PG1hdC1pY29uPmFkZDwvbWF0LWljb24+PC9idXR0b24+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIG1hdFNvcnQ+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0aXRsZVwiIHN0aWNreT5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1RpdGxlJ3x0cmFuc2xhdGV9fTwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQudGl0bGV9fSA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHIgb2Ygcm9sZXNcIiBbbWF0Q29sdW1uRGVmXT1cInIubmFtZVwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3tyLnRpdGxlfX08L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgPG1hdC1jaGVja2JveCBbY2hlY2tlZF09XCJlbGVtZW50LnJvbGVzICYmIGVsZW1lbnQucm9sZXMuaW5kZXhPZihyLm5hbWUpID4gLTFcIiAoY2hhbmdlKT1cInRvZ2dsZShlbGVtZW50LCByLm5hbWUsICRldmVudClcIj48L21hdC1jaGVja2JveD5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcHRpb25zXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc1wiPjxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8bWF0LW1lbnUgI29wdGlvbnM+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJlZGl0KGVsZW1lbnQpXCI+e3snRWRpdCd8dHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRlbGV0ZShlbGVtZW50KVwiPnt7J0Rpc2NhcmQnfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGVsZW1lbnQ7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cclxuPC90YWJsZT5cclxuPG1hdC1wYWdpbmF0b3IgW3BhZ2VTaXplXT1cIlBBR0VfU0laRVwiIGhpZGVQYWdlU2l6ZSBzaG93Rmlyc3RMYXN0QnV0dG9ucyAqbmdJZj1cInBhZ2luZ1wiPjwvbWF0LXBhZ2luYXRvcj5cclxuPCEtLSBkaWFsb2cgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjcHJvcGVydGllcz5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIFtwbGFjZWhvbGRlcl09XCInVGl0bGUnfHRyYW5zbGF0ZVwiIHJlcXVpcmVkIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImF4ZXNcIiAqbmdJZj1cImN1YmVcIiBmeExheW91dC5ndC1zbT1cInJvdyB3cmFwXCIgZnhMYXlvdXQ9XCJjb2x1bW4gd3JhcFwiXHJcbiAgICAgICAgICAgZnhMYXlvdXRHYXA9XCI1cHggZ3JpZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGEgb2YgY3ViZT8uYXhlc1wiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiaW5jbHVkZS5pbmRleE9mKGEubmFtZSk+LTFcIiBmeEZsZXg9XCI1MFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwic2VnbWVudFwiIFtwYXR0ZXJuXT1cInBhdHRlcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJhLm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiYS50aXRsZVwiIC8+XHJcbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNzZWdtZW50PlxyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIHNlZ21lbnRzW2EubmFtZV0gfCBhc3luY1wiIFt2YWx1ZV09XCJvLmtleVwiPnt7by52YWx1ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJheGVzLmNvbnRyb2xzW2EubmFtZV0uaW52YWxpZFwiPnt7J1BhdHRlcm5FcnInIHx0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJyb2xlc1wiIFtwbGFjZWhvbGRlcl09XCInUm9sZXMnfHRyYW5zbGF0ZVwiIG11bHRpcGxlIHJlcXVpcmVkPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2Ygcm9sZXNcIiBbdmFsdWVdPVwici5uYW1lXCI+e3tyLnRpdGxlfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnJvbGVzLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3snUmVxdWlyZWQnfHRyYW5zbGF0ZTooJ1JvbGVzJ3x0cmFuc2xhdGUpfX08L21hdC1lcnJvcj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZm9ybT5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImZvcm0udmFsdWVcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIj57eydPSyd8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48L25nLXRlbXBsYXRlPlxyXG48c3R5bGUgc2NvcGVkPlxyXG4gIHRhYmxlIHtcclxuICAgIHdpZHRoOiAxMDAlXHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iXX0=
|
@@ -17,7 +17,8 @@ export function cleanup(params) {
|
|
17
17
|
if (val.length === 0)
|
18
18
|
delete params[k];
|
19
19
|
else
|
20
|
-
val.
|
20
|
+
for (let i = 0; i < val.length; i++)
|
21
|
+
isObject(val[i]) && cleanup(val[i]);
|
21
22
|
}
|
22
23
|
else if (isObject(val)) {
|
23
24
|
cleanup(val);
|
@@ -215,4 +216,4 @@ function getParameterByName(name, url = window.location.href) {
|
|
215
216
|
return '';
|
216
217
|
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
217
218
|
}
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJN0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQTJCO0lBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLFdBQW1CO0lBQ3pDLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFNO0lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLFlBQVksSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFNBQVM7WUFBRSxPQUFPO2FBQ3ZGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxH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cUJBQ2IsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDO29CQUNsQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO3FCQUN0QixJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU07d0JBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDM0Q7O29CQUVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO0lBQzFELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLG1CQUFtQixDQUFDLEVBQ3pELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMzQixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BVEVSSUFMX1BBTEVUVEVTIH0gZnJvbSBcIi4vY29sb3JzXCI7XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIE1hdGVyaWFsTW9kZSA9IDUwIHwgMTAwIHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAwIHwgJ0ExMDAnIHwgJ0EyMDAnIHwgJ0E0MDAnIHwgJ0E3MDAnO1xyXG5cclxuY29uc3QgSU1BR0VfVFlQRSA9IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBnJywgJ2ltYWdlL2dpZiddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkubWFwKGsgPT4gKHsga2V5OiBrLCB2YWx1ZTogbWFwW2tdIH0pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1hZ2UoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBJTUFHRV9UWVBFLmluZGV4T2YoY29udGVudFR5cGUpID4gLTE7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwKHBhcmFtcykge1xyXG4gIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrID0+IHtcclxuICAgIGNvbnN0IHZhbCA9IHBhcmFtc1trXTtcclxuICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIGRlbGV0ZSBwYXJhbXNba107XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB2YWwgaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJykgcmV0dXJuO1xyXG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSBkZWxldGUgcGFyYW1zW2tdO1xyXG4gICAgICBlbHNlIHZhbC5mb3JFYWNoKGUgPT4gY2xlYW51cChlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XHJcbiAgICAgIGNsZWFudXAodmFsKTtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbCkubGVuZ3RoID09PSAwKSBkZWxldGUgcGFyYW1zW2tdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBwYXJhbXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvdXRPZkJvdW5kKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgY29uc3QgYm91bmRpbmcgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gIHJldHVybiBib3VuZGluZy50b3AgPCAwIHx8XHJcbiAgICBib3VuZGluZy5sZWZ0IDwgMCB8fFxyXG4gICAgYm91bmRpbmcucmlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHxcclxuICAgIGJvdW5kaW5nLmJvdHRvbSA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbn1cclxuXHJcbmNvbnN0IElTX01PQklMRSA9IC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcclxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9iaWxlKCkge1xyXG4gIHJldHVybiBJU19NT0JJTEUgLyp8fCBkb2N1bWVudC5jb29raWUuaW5kZXhPZignYXJpYT0xJykgPiAtMSovO1xyXG59IGV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCk6IHZhbCBpcyBGdW5jdGlvbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbih2YWwpOiB2YWwgaXMgYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdib29sZWFuJztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XHJcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgIT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbCk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZShvYmopOiBvYmogaXMgUHJvbWlzZTxhbnk+IHtcclxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUHJvbWlzZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbCk6IHZhbCBpcyBEYXRlIHtcclxuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJheSh2YWwpOiB2YWwgaXMgQXJyYXk8YW55PiB7XHJcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdmFsIGluc3RhbmNlb2YgU3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Fybihtb2RlOiBNYXRlcmlhbE1vZGUgPSA1MDApIHtcclxuICByZXR1cm4gTUFURVJJQUxfUEFMRVRURVNbJ3JlZCddW21vZGVdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGxheUF1ZGlvKG5hbWU6ICdub3RpZmljYXRpb25fc2ltcGxlLTAxJyB8ICdhbGVydF9lcnJvci0wMycpIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oKTtcclxuICAgIGF1ZGlvLnNyYyA9IGAvYXNzZXRzL3NvdW5kcy8ke25hbWV9Lm9nZ2A7XHJcbiAgICBhdWRpby5sb2FkKCk7XHJcbiAgICBhdWRpby5wbGF5KCk7XHJcbiAgfSBjYXRjaCAoZSkge1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBvMVxyXG4gKiBAcGFyYW0gbzJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWVwQXNzaWduKG8xLCBvMikge1xyXG4gIG8yICYmIE9iamVjdC5rZXlzKG8yKS5mb3JFYWNoKHAgPT4ge1xyXG4gICAgY29uc3QgdmFsMiA9IG8yW3BdLCB2YWwxID0gbzFbcF07XHJcbiAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkIHx8IHZhbDEgPT09IG51bGwgfHwgaXNQcmltaXRpdmUodmFsMikpIC8vIHZhbCAhPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKVxyXG4gICAgICBvMVtwXSA9IHZhbDI7XHJcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbDIpKSB7XHJcbiAgICAgIGlmICh2YWwyLmxlbmd0aCAmJiAhaXNQcmltaXRpdmUodmFsMlswXSkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbDIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh2YWwxW2ldICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIGRlZXBBc3NpZ24odmFsMVtpXSwgdmFsMltpXSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHZhbDEucHVzaCh2YWwyW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKHZhbDEgYXMgYW55W10pLnNwbGljZSh2YWwyLmxlbmd0aCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIC8vKHZhbDIgYXMgYW55W10pLnNwbGljZSgwLCB2YWwyLmxlbmd0aCwgLi4udmFsKTtcclxuICAgICAgICBvMVtwXSA9IHZhbDI7XHJcbiAgICB9XHJcbiAgICBlbHNlIC8vaWYgKGlzT2JqZWN0KHZhbDIpKVxyXG4gICAgICBkZWVwQXNzaWduKHZhbDEsIHZhbDIpO1xyXG4gIH0pO1xyXG4gIHJldHVybiBvMTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVFbmNyeXB0aW9uTWFwKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xyXG4gIGNvbnN0IHZhbHVlcyA9IHt9O1xyXG4gIGZvciAobGV0IGkgPSA2NTsgaSA8IDkxOyBpKyspIHtcclxuICAgIGNvbnN0IGQgPSAoaSAtIDY1KS50b1N0cmluZygpLFxyXG4gICAgICBjID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcclxuICAgIHZhbHVlc1tkXSA9IGM7XHJcbiAgICB2YWx1ZXNbY10gPSBkO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gOTc7IGkgPCAxMjM7IGkrKykge1xyXG4gICAgY29uc3QgZCA9IChpIC0gNzEpLnRvU3RyaW5nKCksXHJcbiAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpO1xyXG4gICAgdmFsdWVzW2RdID0gYztcclxuICAgIHZhbHVlc1tjXSA9IGQ7XHJcbiAgfVxyXG4gIHJldHVybiB2YWx1ZXM7XHJcbn1cclxuY29uc3QgZGVjb2RlID0gZ2VuZXJhdGVFbmNyeXB0aW9uTWFwKCk7XHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgU3RyaW5nIHtcclxuICAgIGRlY29kZUlkOiAoKSA9PiBudW1iZXI7XHJcbiAgfVxyXG4gIGludGVyZmFjZSBOdW1iZXIge1xyXG4gICAgZW5jb2RlSWQ6ICgpID0+IHN0cmluZztcclxuICB9XHJcbn1cclxuU3RyaW5nLnByb3RvdHlwZS5kZWNvZGVJZCA9IGZ1bmN0aW9uICgpOiBudW1iZXIge1xyXG4gIGxldCB2ID0gJyc7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBjID0gdGhpcy5jaGFyQXQoaSk7XHJcbiAgICB2ICs9IGRlY29kZVtjXTtcclxuICB9XHJcbiAgcmV0dXJuIHBhcnNlSW50KHYpO1xyXG59O1xyXG5OdW1iZXIucHJvdG90eXBlLmVuY29kZUlkID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XHJcbiAgbGV0IHYgPSAnJyxcclxuICAgIGQgPSB0aGlzLnRvU3RyaW5nKCk7XHJcbiAgd2hpbGUgKGQubGVuZ3RoID4gMCkge1xyXG4gICAgbGV0IGkgPSA1MSxcclxuICAgICAgYyA9IGkudG9TdHJpbmcoKTtcclxuICAgIHdoaWxlICghZC5zdGFydHNXaXRoKGMpKSB7XHJcbiAgICAgIC0taSwgYyA9IGkudG9TdHJpbmcoKTtcclxuICAgIH0gdiArPSBkZWNvZGVbY107XHJcbiAgICBkID0gZC5zdWJzdHJpbmcoYy5sZW5ndGgpO1xyXG4gIH1cclxuICByZXR1cm4gdjtcclxufTtcclxuXHJcbi8qKiBnbG9iYWwgZXh0ZW5kZWQgYXJyYXkgZnVuY3Rpb25zICovXHJcbih3aW5kb3cgYXMgYW55KS5nbG9iYWwgPSB3aW5kb3c7XHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgQXJyYXk8VD4ge1xyXG4gICAgcmVtb3ZlKGl0ZW06IFQpOiBUW107XHJcbiAgICBsYXN0KCk6IFQ7XHJcbiAgICBhdmVyYWdlKHByZWRpY2F0ZTogKGk6IFQpID0+IG51bWJlcik6IG51bWJlcjtcclxuICAgIGRpc3RpbmN0PE0+KHByZWRpY2F0ZTogKGk6IFQpID0+IE0pOiBTZXQ8TT47XHJcbiAgICBzdW0ocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyO1xyXG4gICAgbWF4KHByZWRpY2F0ZTogKGk6IFQpID0+IG51bWJlcik6IG51bWJlcjtcclxuICB9XHJcbiAgaW50ZXJmYWNlIFN0cmluZyB7XHJcbiAgICBmb3JtYXRBcmdzKC4uLmFyZ3MpOiBzdHJpbmc7XHJcbiAgICBub3JtYWxpemUoKTogc3RyaW5nO1xyXG4gIH1cclxufVxyXG5TdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uICgpIHtcclxuICByZXR1cm4gdGhpcy5yZXBsYWNlKC8gL2csICdfJykucmVwbGFjZSgvW15cXHddL2csICcnKS50b0xvd2VyQ2FzZSgpO1xyXG59XHJcblxyXG5TdHJpbmcucHJvdG90eXBlLmZvcm1hdEFyZ3MgPSBmdW5jdGlvbiAoLi4uYXJncyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHRoaXMucmVwbGFjZSgveyhcXGQrKX0vZywgKF8sIGluZGV4KSA9PiBhcmdzW2luZGV4XSB8fCAnJyk7XHJcbn1cclxuQXJyYXkucHJvdG90eXBlLmxhc3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgcmV0dXJuIHRoaXNbdGhpcy5sZW5ndGggLSAxXTtcclxufVxyXG4vKiogcmVtb3ZlIGVsZW1lbnQgZnJvbSBhcnJheSAqL1xyXG5BcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gPFQ+KHZhbHVlOiBUKTogVFtdIHtcclxuICBjb25zdCBpbmRleCA9IHRoaXMuaW5kZXhPZih2YWx1ZSk7XHJcbiAgaWYgKGluZGV4ID4gLTEpIHRoaXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICByZXR1cm4gdGhpcztcclxufTtcclxuLyoqIGNhbGN1bGF0ZSBhdmVyYWdlIHVzaW5nIGVsZW1lbnQgcHJlZGljYXRlICovXHJcbkFycmF5LnByb3RvdHlwZS5hdmVyYWdlID0gZnVuY3Rpb24gPFQ+KHByZWRpY2F0ZT86IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGxldCBhdmVyYWdlID0gMDtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgYXZlcmFnZSArPSBwcmVkaWNhdGUoaSlcclxuICApO1xyXG4gIHJldHVybiBhdmVyYWdlICE9PSAwID8gYXZlcmFnZSAvIHRoaXMubGVuZ3RoIDogMDtcclxufVxyXG5BcnJheS5wcm90b3R5cGUuZGlzdGluY3QgPSBmdW5jdGlvbiA8VCwgTT4ocHJlZGljYXRlPzogKGk6IFQpID0+IE0pOiBTZXQ8TT4ge1xyXG4gIGNvbnN0IHZhbHVlcyA9IG5ldyBTZXQ8TT4oKTtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgdmFsdWVzLmFkZChwcmVkaWNhdGUoaSkpXHJcbiAgKTtcclxuICByZXR1cm4gdmFsdWVzO1xyXG59XHJcbkFycmF5LnByb3RvdHlwZS5tYXggPSBmdW5jdGlvbiA8VD4ocHJlZGljYXRlPzogKGk6IFQpID0+IG51bWJlcik6IG51bWJlciB7XHJcbiAgbGV0IG4gPSAwO1xyXG4gIHRoaXMuZm9yRWFjaChpID0+XHJcbiAgICBuID0gTWF0aC5tYXgobiwgcHJlZGljYXRlKGkpKVxyXG4gICk7XHJcbiAgcmV0dXJuIG47XHJcbn1cclxuLyoqIHN1bSBlbGVtZW50cyB1c2luZyBwcmVkaWNhdGUgKi9cclxuQXJyYXkucHJvdG90eXBlLnN1bSA9IGZ1bmN0aW9uIDxUPihwcmVkaWNhdGU/OiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyIHtcclxuICBsZXQgbiA9IDA7XHJcbiAgdGhpcy5mb3JFYWNoKGkgPT5cclxuICAgIG4gKz0gcHJlZGljYXRlKGkpXHJcbiAgKTtcclxuICByZXR1cm4gbjtcclxufVxyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBhcmdzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlQYXJhbXMoYXJnczogYW55KSB7XHJcbiAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgYXJncyAmJlxyXG4gICAgT2JqZWN0LmtleXMoYXJncykuZm9yRWFjaChrID0+IHtcclxuICAgICAgY29uc3QgdmFsID0gYXJnc1trXTtcclxuXHJcbiAgICAgIGlmICh2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoaXNTdHJpbmcodmFsKSlcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbDtcclxuICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkgJiYgdmFsLmxlbmd0aClcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbDtcclxuICAgICAgICBlbHNlIGlmIChpc0RhdGUodmFsKSlcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbC50b0pTT04oKTtcclxuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XHJcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXModmFsKS5sZW5ndGgpIHBhcmFtc1trXSA9IHF1ZXJ5UGFyYW1zKHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgcmV0dXJuIHBhcmFtcztcclxufVxyXG5mdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZSwgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpIHtcclxuICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCAnXFxcXCQmJyk7XHJcbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnWz8mXScgKyBuYW1lICsgJyg9KFteJiNdKil8JnwjfCQpJyksXHJcbiAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gIGlmICghcmVzdWx0cykgcmV0dXJuIG51bGw7XHJcbiAgaWYgKCFyZXN1bHRzWzJdKSByZXR1cm4gJyc7XHJcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcclxufVxyXG4iXX0=
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJN0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQTJCO0lBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLFdBQW1CO0lBQ3pDLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFNO0lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLFlBQVksSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFNBQVM7WUFBRSxPQUFPO2FBQ3ZGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxH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VEVSSUFMX1BBTEVUVEVTIH0gZnJvbSBcIi4vY29sb3JzXCI7XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIE1hdGVyaWFsTW9kZSA9IDUwIHwgMTAwIHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAwIHwgJ0ExMDAnIHwgJ0EyMDAnIHwgJ0E0MDAnIHwgJ0E3MDAnO1xyXG5cclxuY29uc3QgSU1BR0VfVFlQRSA9IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBnJywgJ2ltYWdlL2dpZiddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkubWFwKGsgPT4gKHsga2V5OiBrLCB2YWx1ZTogbWFwW2tdIH0pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1hZ2UoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBJTUFHRV9UWVBFLmluZGV4T2YoY29udGVudFR5cGUpID4gLTE7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwKHBhcmFtcykge1xyXG4gIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrID0+IHtcclxuICAgIGNvbnN0IHZhbCA9IHBhcmFtc1trXTtcclxuICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIGRlbGV0ZSBwYXJhbXNba107XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB2YWwgaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJykgcmV0dXJuO1xyXG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSBkZWxldGUgcGFyYW1zW2tdO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspIFxyXG4gICAgICAgICAgaXNPYmplY3QodmFsW2ldKSAmJiBjbGVhbnVwKHZhbFtpXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XHJcbiAgICAgIGNsZWFudXAodmFsKTtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbCkubGVuZ3RoID09PSAwKSBkZWxldGUgcGFyYW1zW2tdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBwYXJhbXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvdXRPZkJvdW5kKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgY29uc3QgYm91bmRpbmcgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gIHJldHVybiBib3VuZGluZy50b3AgPCAwIHx8XHJcbiAgICBib3VuZGluZy5sZWZ0IDwgMCB8fFxyXG4gICAgYm91bmRpbmcucmlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHxcclxuICAgIGJvdW5kaW5nLmJvdHRvbSA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbn1cclxuXHJcbmNvbnN0IElTX01PQklMRSA9IC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcclxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9iaWxlKCkge1xyXG4gIHJldHVybiBJU19NT0JJTEUgLyp8fCBkb2N1bWVudC5jb29raWUuaW5kZXhPZignYXJpYT0xJykgPiAtMSovO1xyXG59IGV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCk6IHZhbCBpcyBGdW5jdGlvbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbih2YWwpOiB2YWwgaXMgYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdib29sZWFuJztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XHJcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgIT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbCk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZShvYmopOiBvYmogaXMgUHJvbWlzZTxhbnk+IHtcclxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUHJvbWlzZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbCk6IHZhbCBpcyBEYXRlIHtcclxuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJheSh2YWwpOiB2YWwgaXMgQXJyYXk8YW55PiB7XHJcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdmFsIGluc3RhbmNlb2YgU3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Fybihtb2RlOiBNYXRlcmlhbE1vZGUgPSA1MDApIHtcclxuICByZXR1cm4gTUFURVJJQUxfUEFMRVRURVNbJ3JlZCddW21vZGVdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGxheUF1ZGlvKG5hbWU6ICdub3RpZmljYXRpb25fc2ltcGxlLTAxJyB8ICdhbGVydF9lcnJvci0wMycpIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oKTtcclxuICAgIGF1ZGlvLnNyYyA9IGAvYXNzZXRzL3NvdW5kcy8ke25hbWV9Lm9nZ2A7XHJcbiAgICBhdWRpby5sb2FkKCk7XHJcbiAgICBhdWRpby5wbGF5KCk7XHJcbiAgfSBjYXRjaCAoZSkge1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBvMVxyXG4gKiBAcGFyYW0gbzJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWVwQXNzaWduKG8xLCBvMikge1xyXG4gIG8yICYmIE9iamVjdC5rZXlzKG8yKS5mb3JFYWNoKHAgPT4ge1xyXG4gICAgY29uc3QgdmFsMiA9IG8yW3BdLCB2YWwxID0gbzFbcF07XHJcbiAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkIHx8IHZhbDEgPT09IG51bGwgfHwgaXNQcmltaXRpdmUodmFsMikpIC8vIHZhbCAhPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKVxyXG4gICAgICBvMVtwXSA9IHZhbDI7XHJcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbDIpKSB7XHJcbiAgICAgIGlmICh2YWwyLmxlbmd0aCAmJiAhaXNQcmltaXRpdmUodmFsMlswXSkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbDIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh2YWwxW2ldICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIGRlZXBBc3NpZ24odmFsMVtpXSwgdmFsMltpXSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHZhbDEucHVzaCh2YWwyW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKHZhbDEgYXMgYW55W10pLnNwbGljZSh2YWwyLmxlbmd0aCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIC8vKHZhbDIgYXMgYW55W10pLnNwbGljZSgwLCB2YWwyLmxlbmd0aCwgLi4udmFsKTtcclxuICAgICAgICBvMVtwXSA9IHZhbDI7XHJcbiAgICB9XHJcbiAgICBlbHNlIC8vaWYgKGlzT2JqZWN0KHZhbDIpKVxyXG4gICAgICBkZWVwQXNzaWduKHZhbDEsIHZhbDIpO1xyXG4gIH0pO1xyXG4gIHJldHVybiBvMTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVFbmNyeXB0aW9uTWFwKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xyXG4gIGNvbnN0IHZhbHVlcyA9IHt9O1xyXG4gIGZvciAobGV0IGkgPSA2NTsgaSA8IDkxOyBpKyspIHtcclxuICAgIGNvbnN0IGQgPSAoaSAtIDY1KS50b1N0cmluZygpLFxyXG4gICAgICBjID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcclxuICAgIHZhbHVlc1tkXSA9IGM7XHJcbiAgICB2YWx1ZXNbY10gPSBkO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gOTc7IGkgPCAxMjM7IGkrKykge1xyXG4gICAgY29uc3QgZCA9IChpIC0gNzEpLnRvU3RyaW5nKCksXHJcbiAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpO1xyXG4gICAgdmFsdWVzW2RdID0gYztcclxuICAgIHZhbHVlc1tjXSA9IGQ7XHJcbiAgfVxyXG4gIHJldHVybiB2YWx1ZXM7XHJcbn1cclxuY29uc3QgZGVjb2RlID0gZ2VuZXJhdGVFbmNyeXB0aW9uTWFwKCk7XHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgU3RyaW5nIHtcclxuICAgIGRlY29kZUlkOiAoKSA9PiBudW1iZXI7XHJcbiAgfVxyXG4gIGludGVyZmFjZSBOdW1iZXIge1xyXG4gICAgZW5jb2RlSWQ6ICgpID0+IHN0cmluZztcclxuICB9XHJcbn1cclxuU3RyaW5nLnByb3RvdHlwZS5kZWNvZGVJZCA9IGZ1bmN0aW9uICgpOiBudW1iZXIge1xyXG4gIGxldCB2ID0gJyc7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBjID0gdGhpcy5jaGFyQXQoaSk7XHJcbiAgICB2ICs9IGRlY29kZVtjXTtcclxuICB9XHJcbiAgcmV0dXJuIHBhcnNlSW50KHYpO1xyXG59O1xyXG5OdW1iZXIucHJvdG90eXBlLmVuY29kZUlkID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XHJcbiAgbGV0IHYgPSAnJyxcclxuICAgIGQgPSB0aGlzLnRvU3RyaW5nKCk7XHJcbiAgd2hpbGUgKGQubGVuZ3RoID4gMCkge1xyXG4gICAgbGV0IGkgPSA1MSxcclxuICAgICAgYyA9IGkudG9TdHJpbmcoKTtcclxuICAgIHdoaWxlICghZC5zdGFydHNXaXRoKGMpKSB7XHJcbiAgICAgIC0taSwgYyA9IGkudG9TdHJpbmcoKTtcclxuICAgIH0gdiArPSBkZWNvZGVbY107XHJcbiAgICBkID0gZC5zdWJzdHJpbmcoYy5sZW5ndGgpO1xyXG4gIH1cclxuICByZXR1cm4gdjtcclxufTtcclxuXHJcbi8qKiBnbG9iYWwgZXh0ZW5kZWQgYXJyYXkgZnVuY3Rpb25zICovXHJcbih3aW5kb3cgYXMgYW55KS5nbG9iYWwgPSB3aW5kb3c7XHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgQXJyYXk8VD4ge1xyXG4gICAgcmVtb3ZlKGl0ZW06IFQpOiBUW107XHJcbiAgICBsYXN0KCk6IFQ7XHJcbiAgICBhdmVyYWdlKHByZWRpY2F0ZTogKGk6IFQpID0+IG51bWJlcik6IG51bWJlcjtcclxuICAgIGRpc3RpbmN0PE0+KHByZWRpY2F0ZTogKGk6IFQpID0+IE0pOiBTZXQ8TT47XHJcbiAgICBzdW0ocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyO1xyXG4gICAgbWF4KHByZWRpY2F0ZTogKGk6IFQpID0+IG51bWJlcik6IG51bWJlcjtcclxuICB9XHJcbiAgaW50ZXJmYWNlIFN0cmluZyB7XHJcbiAgICBmb3JtYXRBcmdzKC4uLmFyZ3MpOiBzdHJpbmc7XHJcbiAgICBub3JtYWxpemUoKTogc3RyaW5nO1xyXG4gIH1cclxufVxyXG5TdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uICgpIHtcclxuICByZXR1cm4gdGhpcy5yZXBsYWNlKC8gL2csICdfJykucmVwbGFjZSgvW15cXHddL2csICcnKS50b0xvd2VyQ2FzZSgpO1xyXG59XHJcblxyXG5TdHJpbmcucHJvdG90eXBlLmZvcm1hdEFyZ3MgPSBmdW5jdGlvbiAoLi4uYXJncyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHRoaXMucmVwbGFjZSgveyhcXGQrKX0vZywgKF8sIGluZGV4KSA9PiBhcmdzW2luZGV4XSB8fCAnJyk7XHJcbn1cclxuQXJyYXkucHJvdG90eXBlLmxhc3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgcmV0dXJuIHRoaXNbdGhpcy5sZW5ndGggLSAxXTtcclxufVxyXG4vKiogcmVtb3ZlIGVsZW1lbnQgZnJvbSBhcnJheSAqL1xyXG5BcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gPFQ+KHZhbHVlOiBUKTogVFtdIHtcclxuICBjb25zdCBpbmRleCA9IHRoaXMuaW5kZXhPZih2YWx1ZSk7XHJcbiAgaWYgKGluZGV4ID4gLTEpIHRoaXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICByZXR1cm4gdGhpcztcclxufTtcclxuLyoqIGNhbGN1bGF0ZSBhdmVyYWdlIHVzaW5nIGVsZW1lbnQgcHJlZGljYXRlICovXHJcbkFycmF5LnByb3RvdHlwZS5hdmVyYWdlID0gZnVuY3Rpb24gPFQ+KHByZWRpY2F0ZT86IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGxldCBhdmVyYWdlID0gMDtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgYXZlcmFnZSArPSBwcmVkaWNhdGUoaSlcclxuICApO1xyXG4gIHJldHVybiBhdmVyYWdlICE9PSAwID8gYXZlcmFnZSAvIHRoaXMubGVuZ3RoIDogMDtcclxufVxyXG5BcnJheS5wcm90b3R5cGUuZGlzdGluY3QgPSBmdW5jdGlvbiA8VCwgTT4ocHJlZGljYXRlPzogKGk6IFQpID0+IE0pOiBTZXQ8TT4ge1xyXG4gIGNvbnN0IHZhbHVlcyA9IG5ldyBTZXQ8TT4oKTtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgdmFsdWVzLmFkZChwcmVkaWNhdGUoaSkpXHJcbiAgKTtcclxuICByZXR1cm4gdmFsdWVzO1xyXG59XHJcbkFycmF5LnByb3RvdHlwZS5tYXggPSBmdW5jdGlvbiA8VD4ocHJlZGljYXRlPzogKGk6IFQpID0+IG51bWJlcik6IG51bWJlciB7XHJcbiAgbGV0IG4gPSAwO1xyXG4gIHRoaXMuZm9yRWFjaChpID0+XHJcbiAgICBuID0gTWF0aC5tYXgobiwgcHJlZGljYXRlKGkpKVxyXG4gICk7XHJcbiAgcmV0dXJuIG47XHJcbn1cclxuLyoqIHN1bSBlbGVtZW50cyB1c2luZyBwcmVkaWNhdGUgKi9cclxuQXJyYXkucHJvdG90eXBlLnN1bSA9IGZ1bmN0aW9uIDxUPihwcmVkaWNhdGU/OiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyIHtcclxuICBsZXQgbiA9IDA7XHJcbiAgdGhpcy5mb3JFYWNoKGkgPT5cclxuICAgIG4gKz0gcHJlZGljYXRlKGkpXHJcbiAgKTtcclxuICByZXR1cm4gbjtcclxufVxyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBhcmdzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlQYXJhbXMoYXJnczogYW55KSB7XHJcbiAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgYXJncyAmJlxyXG4gICAgT2JqZWN0LmtleXMoYXJncykuZm9yRWFjaChrID0+IHtcclxuICAgICAgY29uc3QgdmFsID0gYXJnc1trXTtcclxuXHJcbiAgICAgIGlmICh2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoaXNTdHJpbmcodmFsKSlcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbDtcclxuICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkgJiYgdmFsLmxlbmd0aClcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbDtcclxuICAgICAgICBlbHNlIGlmIChpc0RhdGUodmFsKSlcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbC50b0pTT04oKTtcclxuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XHJcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXModmFsKS5sZW5ndGgpIHBhcmFtc1trXSA9IHF1ZXJ5UGFyYW1zKHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHBhcmFtc1trXSA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgcmV0dXJuIHBhcmFtcztcclxufVxyXG5mdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZSwgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpIHtcclxuICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCAnXFxcXCQmJyk7XHJcbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnWz8mXScgKyBuYW1lICsgJyg9KFteJiNdKil8JnwjfCQpJyksXHJcbiAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gIGlmICghcmVzdWx0cykgcmV0dXJuIG51bGw7XHJcbiAgaWYgKCFyZXN1bHRzWzJdKSByZXR1cm4gJyc7XHJcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcclxufVxyXG4iXX0=
|