ngx-techlify-core 18.10.0 → 18.12.0
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/esm2022/lib/app-admin/app-admin-home/app-admin-home.component.mjs +17 -0
- package/esm2022/lib/app-admin/app-admin-routing.module.mjs +29 -0
- package/esm2022/lib/app-admin/app-admin.module.mjs +22 -0
- package/esm2022/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.mjs +50 -0
- package/esm2022/lib/app-switcher/app-switcher.component.mjs +4 -12
- package/esm2022/lib/login/login-form-fields/login-form-fields.component.mjs +25 -10
- package/esm2022/lib/role/permission/permissions-management.component.mjs +10 -11
- package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +3 -3
- package/esm2022/lib/user/user-form.component.mjs +7 -8
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/ngx-techlify-core.mjs +287 -193
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/app-admin/app-admin-home/app-admin-home.component.d.ts +5 -0
- package/lib/app-admin/app-admin-routing.module.d.ts +7 -0
- package/lib/app-admin/app-admin.module.d.ts +8 -0
- package/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.d.ts +13 -0
- package/lib/app-switcher/app-switcher.component.d.ts +0 -2
- package/lib/login/login-form-fields/login-form-fields.component.d.ts +3 -1
- package/package.json +3 -2
- package/public-api.d.ts +3 -0
- package/esm2022/lib/app-switcher/app-switcher-icons.mjs +0 -10
- package/lib/app-switcher/app-switcher-icons.d.ts +0 -5
|
@@ -7,14 +7,13 @@ import * as i2 from "@angular/router";
|
|
|
7
7
|
import * as i3 from "../../user-config";
|
|
8
8
|
import * as i4 from "@angular/forms";
|
|
9
9
|
import * as i5 from "@angular/common";
|
|
10
|
-
import * as i6 from "@angular/
|
|
11
|
-
import * as i7 from "@angular/material/
|
|
12
|
-
import * as i8 from "@angular/material/
|
|
13
|
-
import * as i9 from "@angular/material/
|
|
14
|
-
import * as i10 from "@angular/material/
|
|
15
|
-
import * as i11 from "@angular/material/
|
|
16
|
-
import * as i12 from "@angular/material/
|
|
17
|
-
import * as i13 from "@angular/material/card";
|
|
10
|
+
import * as i6 from "@angular/material/button";
|
|
11
|
+
import * as i7 from "@angular/material/form-field";
|
|
12
|
+
import * as i8 from "@angular/material/icon";
|
|
13
|
+
import * as i9 from "@angular/material/input";
|
|
14
|
+
import * as i10 from "@angular/material/core";
|
|
15
|
+
import * as i11 from "@angular/material/select";
|
|
16
|
+
import * as i12 from "@angular/material/card";
|
|
18
17
|
/**
|
|
19
18
|
* Role Permissions management controller
|
|
20
19
|
*
|
|
@@ -120,12 +119,12 @@ export class PermissionsManagementComponent {
|
|
|
120
119
|
}
|
|
121
120
|
}
|
|
122
121
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PermissionsManagementComponent, deps: [{ token: i1.HttpService }, { token: i1.AlertService }, { token: i2.ActivatedRoute }, { token: i1.CredentialsService }, { token: i1.ErrorHandlerService }, { token: i3.UserConfigService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PermissionsManagementComponent, selector: "role-permissions-management", inputs: { clientId: "clientId" }, ngImport: i0, template: "<div
|
|
122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PermissionsManagementComponent, selector: "role-permissions-management", inputs: { clientId: "clientId" }, ngImport: i0, template: "<div class=\"d-flex flex-column justify-content-start gap-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"m-0 fw-bold\">\n Manage Role Permissions\n </h3>\n <button *ngIf=\"!config.permissionConfig.disableUsers\" [routerLink]=\"['../users']\" class=\"ml-1\"\n mat-raised-button>\n <i class=\"icon fas fa-users\"></i> Users\n </button>\n <button *ngIf=\"!config.permissionConfig.disableRoles\" [routerLink]=\"['../roles']\" class=\"ml-1\"\n mat-raised-button>\n <i class=\"fas fa-user-md\"></i> Manage Roles\n </button>\n </div>\n <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" formControlName=\"search\" matInput placeholder=\"Search Permissions\"\n type=\"text\"/>\n <button (click)=\"filterForm.get('search').setValue('')\" *ngIf=\"filterForm.get('search').value\" mat-icon-button matSuffix\n type=\"button\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"roles\" appearance=\"outline\" class=\"ml-2\">\n <mat-label>Show Roles</mat-label>\n <mat-select formControlName='role_ids' multiple>\n <mat-option *ngFor=\"let role of roles\" [value]=\"role?.id\">\n {{ role.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"mt-2\">\n <mat-card-content class=\"p-0\">\n <form>\n <table aria-describedby=\"Role Permissions\"\n class=\"table table-sm table-bordered table-condensed table-striped\">\n <thead>\n <tr>\n <th>Permissions</th>\n <ng-container *ngFor=\"let role of roles\">\n <th *ngIf=\"filterForm.get('role_ids').value.includes(role.id)\" class=\"text-center\">\n {{ role.label }}\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let permission of filteredPermissions\">\n <td>\n {{ permission.label }}\n </td>\n <ng-container *ngFor=\"let role of roles\">\n <td *ngIf=\"filterForm.get('role_ids').value.includes(role.id)\" class=\"text-center align-middle\">\n <div class=\"d-flex justify-content-center align-items-center h-100\">\n <input (change)=\"updateRolePermission(role, permission)\"\n [checked]=\"role.hasPermission(permission.slug)\"\n [disabled]=\"isDisabled(role.is_global, role.is_editable)\"\n name=\"{{role.id}}[{{permission?.label}}]\" type=\"checkbox\"/>\n </div>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </form>\n </mat-card-content>\n </mat-card>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.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: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i12.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
124
123
|
}
|
|
125
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PermissionsManagementComponent, decorators: [{
|
|
126
125
|
type: Component,
|
|
127
|
-
args: [{ selector: 'role-permissions-management', template: "<div
|
|
126
|
+
args: [{ selector: 'role-permissions-management', template: "<div class=\"d-flex flex-column justify-content-start gap-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"m-0 fw-bold\">\n Manage Role Permissions\n </h3>\n <button *ngIf=\"!config.permissionConfig.disableUsers\" [routerLink]=\"['../users']\" class=\"ml-1\"\n mat-raised-button>\n <i class=\"icon fas fa-users\"></i> Users\n </button>\n <button *ngIf=\"!config.permissionConfig.disableRoles\" [routerLink]=\"['../roles']\" class=\"ml-1\"\n mat-raised-button>\n <i class=\"fas fa-user-md\"></i> Manage Roles\n </button>\n </div>\n <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" formControlName=\"search\" matInput placeholder=\"Search Permissions\"\n type=\"text\"/>\n <button (click)=\"filterForm.get('search').setValue('')\" *ngIf=\"filterForm.get('search').value\" mat-icon-button matSuffix\n type=\"button\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"roles\" appearance=\"outline\" class=\"ml-2\">\n <mat-label>Show Roles</mat-label>\n <mat-select formControlName='role_ids' multiple>\n <mat-option *ngFor=\"let role of roles\" [value]=\"role?.id\">\n {{ role.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"mt-2\">\n <mat-card-content class=\"p-0\">\n <form>\n <table aria-describedby=\"Role Permissions\"\n class=\"table table-sm table-bordered table-condensed table-striped\">\n <thead>\n <tr>\n <th>Permissions</th>\n <ng-container *ngFor=\"let role of roles\">\n <th *ngIf=\"filterForm.get('role_ids').value.includes(role.id)\" class=\"text-center\">\n {{ role.label }}\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let permission of filteredPermissions\">\n <td>\n {{ permission.label }}\n </td>\n <ng-container *ngFor=\"let role of roles\">\n <td *ngIf=\"filterForm.get('role_ids').value.includes(role.id)\" class=\"text-center align-middle\">\n <div class=\"d-flex justify-content-center align-items-center h-100\">\n <input (change)=\"updateRolePermission(role, permission)\"\n [checked]=\"role.hasPermission(permission.slug)\"\n [disabled]=\"isDisabled(role.is_global, role.is_editable)\"\n name=\"{{role.id}}[{{permission?.label}}]\" type=\"checkbox\"/>\n </div>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </form>\n </mat-card-content>\n </mat-card>\n</div>\n" }]
|
|
128
127
|
}], ctorParameters: () => [{ type: i1.HttpService }, { type: i1.AlertService }, { type: i2.ActivatedRoute }, { type: i1.CredentialsService }, { type: i1.ErrorHandlerService }, { type: i3.UserConfigService }, { type: i4.FormBuilder }], propDecorators: { clientId: [{
|
|
129
128
|
type: Input
|
|
130
129
|
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3JvbGUvcGVybWlzc2lvbi9wZXJtaXNzaW9ucy1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9wZXJtaXNzaW9uL3Blcm1pc3Npb25zLW1hbmFnZW1lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUUxRDs7Ozs7R0FLRztBQUtILE1BQU0sT0FBTyw4QkFBOEI7SUFVdkMsWUFBb0IsSUFBaUIsRUFDekIsWUFBMEIsRUFDMUIsS0FBcUIsRUFDckIsa0JBQXNDLEVBQ3RDLFlBQWlDLEVBQ2xDLGlCQUFvQyxFQUNuQyxFQUFlO1FBTlAsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLE9BQUUsR0FBRixFQUFFLENBQWE7UUFFdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFF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LENBQUMsRUFBRSxHQUFHLGVBQWUsR0FBRyxVQUFVLENBQUMsRUFBRSxHQUFHLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQ3hHLEdBQUcsQ0FBQyxFQUFFO2dCQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUNKLENBQUM7UUFDTixDQUFDO2FBQ0ksQ0FBQztZQUNGLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxlQUFlLEdBQUcsVUFBVSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUNyRyxHQUFHLENBQUMsRUFBRTtnQkFDRixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RSxDQUFDLENBQ0osQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDOytHQWpJUSw4QkFBOEI7bUdBQTlCLDhCQUE4QixxR0NyQjNDLGd3R0FxRU07OzRGRGhETyw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0ksNkJBQTZCO3FRQVE5QixRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQ3JlZGVudGlhbHNTZXJ2aWNlLCBFcnJvckhhbmRsZXJTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnLi4vcm9sZS5tb2RlbCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uIH0gZnJvbSAnLi9wZXJtaXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZywgVXNlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBSb2xlIFBlcm1pc3Npb25zIG1hbmFnZW1lbnQgY29udHJvbGxlclxuICpcbiAqIEBhdXRob3IgSm9zaHVhIEtpc3Nvb25cbiAqIEBzaW5jZSAyMDE2MTAxM1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3JvbGUtcGVybWlzc2lvbnMtbWFuYWdlbWVudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Blcm1pc3Npb25zLW1hbmFnZW1lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNNYW5hZ2VtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICByb2xlczogUm9sZVtdO1xuICAgIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW107XG4gICAgZmlsdGVyZWRQZXJtaXNzaW9uczogUGVybWlzc2lvbltdO1xuICAgIG1vZHVsZUNvZGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBjbGllbnRJZDogbnVtYmVyO1xuICAgIGNvbmZpZzogTXVsdGlVc2VyQ29uZmlnO1xuXG4gICAgZmlsdGVyRm9ybTogRm9ybUdyb3VwO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgY3JlZGVudGlhbHNTZXJ2aWNlOiBDcmVkZW50aWFsc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdXNlckNvbmZpZ1NlcnZpY2U6IFVzZXJDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxuICAgICkge1xuICAgICAgICB0aGlzLm1vZHVsZUNvZGUgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMudXNlckNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICBzZWFyY2g6IFsnJ10sXG4gICAgICAgICAgICByb2xlX2lkczogW11cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0RmlsdGVyZWRQZXJtaXNzaW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkUGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocGVybWlzc2lvbjogUGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5sYWJlbC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZS50b1N0cmluZygpLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRQZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnM7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKF8gPT4gdGhpcy5zZXRGaWx0ZXJlZFBlcm1pc3Npb25zKCkpO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJhbXMubW9kdWxlX2NvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kdWxlQ29kZSA9IHBhcmFtcy5tb2R1bGVfY29kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRQZXJtaXNzaW9ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0Rpc2FibGVkKGlzR2xvYmFsOiBib29sZWFuLCBpc0VkaXRhYmxlOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0dsb2JhbCAmJiB0aGlzLmNyZWRlbnRpYWxzU2VydmljZS5jcmVkZW50aWFscz8udXNlcj8udXNlcl90eXBlX2lkICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gIWlzRWRpdGFibGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxvYWRQZXJtaXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyczogYW55ID0ge307XG4gICAgICAgIGlmICh0aGlzLm1vZHVsZUNvZGUpIHtcbiAgICAgICAgICAgIGZpbHRlcnMubW9kdWxlX2NvZGUgPSB0aGlzLm1vZHVsZUNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgICAgICAgIGZpbHRlcnMuY2xpZW50X2lkID0gdGhpcy5jbGllbnRJZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmh0dHAuZ2V0KCdhcGkvcGVybWlzc2lvbnMnLCB7IHBhcmFtczogZmlsdGVycyB9KS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJlZFBlcm1pc3Npb25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCB0aGUgUm9sZXMgZnJvbSB0aGUgREJcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWRSb2xlcygpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyczogYW55ID0ge1xuICAgICAgICAgICAgbG9hZFBlcm1pc3Npb25zOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5jbGllbnRJZCkge1xuICAgICAgICAgICAgZmlsdGVycy5jbGllbnRfaWQgPSB0aGlzLmNsaWVudElkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5odHRwLmdldCgnYXBpL3JvbGVzJywgeyBwYXJhbXM6IGZpbHRlcnMgfSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm9sZXMgPSBuZXcgQXJyYXk8Um9sZT4oKTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiByZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm9sZSA9IG5ldyBSb2xlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJvbGUubG9hZEZyb21Kc29uKHJvdyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm9sZXMucHVzaChyb2xlKTtcbiAgICAgICAgICAgICAgICAgICAgcm9sZS5zZXR1cEJsYW5rUGVybWlzc2lvbnNGb3JOZ01vZGVsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3JvbGVfaWRzJykuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm9sZXMubWFwKHJvbGUgPT4gcm9sZS5pZClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVSb2xlUGVybWlzc2lvbihyb2xlOiBSb2xlLCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uKSB7XG4gICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgcmlkOiByb2xlLmlkLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogcGVybWlzc2lvbi5zbHVnXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHJvbGUuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uLnNsdWcpKSB7XG4gICAgICAgICAgICAvKiBSZW1vdmUgdGhlIHBlcm1pc3Npb24gICovXG4gICAgICAgICAgICB0aGlzLmh0dHAucGF0Y2goJ2FwaS9yb2xlcy8nICsgcm9sZS5pZCArICcvcGVybWlzc2lvbnMvJyArIHBlcm1pc3Npb24uaWQgKyAnL3JlbW92ZScsIGRhdGEpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcm9sZS5yZW1vdmVQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChwZXJtaXNzaW9uLmxhYmVsICsgJyByZW1vdmVkJywgJ3dhcm5pbmcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyogQWRkIHRoZSBwZXJtaXNzaW9uICovXG4gICAgICAgICAgICB0aGlzLmh0dHAucGF0Y2goJ2FwaS9yb2xlcy8nICsgcm9sZS5pZCArICcvcGVybWlzc2lvbnMvJyArIHBlcm1pc3Npb24uaWQgKyAnL2FkZCcsIGRhdGEpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcm9sZS5hZGRQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChwZXJtaXNzaW9uLmxhYmVsICsgJyBhZGRlZCcsICdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwibS0yXCI+XG5cbiAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxuICAgICAgICA8aDUgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgIE1hbmFnZSBSb2xlIFBlcm1pc3Npb25zXG4gICAgICAgIDwvaDU+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycuLi91c2VycyddXCIgKm5nSWY9XCIhY29uZmlnLnBlcm1pc3Npb25Db25maWcuZGlzYWJsZVVzZXJzXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWwtMVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGZhcyBmYS11c2Vyc1wiPjwvaT4gVXNlcnNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycuLi9yb2xlcyddXCIgKm5nSWY9XCIhY29uZmlnLnBlcm1pc3Npb25Db25maWcuZGlzYWJsZVJvbGVzXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWwtMVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdXNlci1tZFwiPjwvaT4gTWFuYWdlIFJvbGVzXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cblxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TZWFyY2g8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQZXJtaXNzaW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJGb3JtLmdldCgnc2VhcmNoJykuc2V0VmFsdWUoJycpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyb2xlc1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TaG93IFJvbGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPSdyb2xlX2lkcycgbXVsdGlwbGU+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzXCIgW3ZhbHVlXT1cInJvbGU/LmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3JvbGUubGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvbWF0LWNhcmQ+XG5cbiAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJwLTAgbXQtMlwiPlxuICAgICAgICA8Zm9ybT5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1zdHJpcGVkXCJcbiAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiUm9sZSBQZXJtaXNzaW9uc1wiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlcm1pc3Npb25zPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiZmlsdGVyRm9ybS5nZXQoJ3JvbGVfaWRzJykudmFsdWUuaW5jbHVkZXMocm9sZS5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tyb2xlLmxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcGVybWlzc2lvbiBvZiBmaWx0ZXJlZFBlcm1pc3Npb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3twZXJtaXNzaW9uLmxhYmVsfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm9sZSBvZiByb2xlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJmaWx0ZXJGb3JtLmdldCgncm9sZV9pZHMnKS52YWx1ZS5pbmNsdWRlcyhyb2xlLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQocm9sZS5pc19nbG9iYWwsIHJvbGUuaXNfZWRpdGFibGUpXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ7e3JvbGUuaWR9fVt7e3Blcm1pc3Npb24/LmxhYmVsfX1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvbGUuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uLnNsdWcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlUm9sZVBlcm1pc3Npb24ocm9sZSwgcGVybWlzc2lvbilcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvbWF0LWNhcmQ+XG48L2Rpdj4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3JvbGUvcGVybWlzc2lvbi9wZXJtaXNzaW9ucy1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9wZXJtaXNzaW9uL3Blcm1pc3Npb25zLW1hbmFnZW1lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBRTFEOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLDhCQUE4QjtJQVV2QyxZQUFvQixJQUFpQixFQUN6QixZQUEwQixFQUMxQixLQUFxQixFQUNyQixrQkFBc0MsRUFDdEMsWUFBaUMsRUFDbEMsaUJBQW9DLEVBQ25DLEVBQWU7UUFOUCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbkMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUV2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVq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Q0FBQyxFQUFFLEdBQUcsZUFBZSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDeEcsR0FBRyxDQUFDLEVBQUU7Z0JBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQ0osQ0FBQztRQUNOLENBQUM7YUFDSSxDQUFDO1lBQ0Ysd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLGVBQWUsR0FBRyxVQUFVLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQ3JHLEdBQUcsQ0FBQyxFQUFFO2dCQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7K0dBaklRLDhCQUE4QjttR0FBOUIsOEJBQThCLHFHQ3JCM0MsaXdHQTRFQTs7NEZEdkRhLDhCQUE4QjtrQkFKMUMsU0FBUzsrQkFDSSw2QkFBNkI7cVFBUTlCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBDcmVkZW50aWFsc1NlcnZpY2UsIEVycm9ySGFuZGxlclNlcnZpY2UsIEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5cbmltcG9ydCB7IFJvbGUgfSBmcm9tICcuLi9yb2xlLm1vZGVsJztcbmltcG9ydCB7IFBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb24ubW9kZWwnO1xuaW1wb3J0IHsgTXVsdGlVc2VyQ29uZmlnLCBVc2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFJvbGUgUGVybWlzc2lvbnMgbWFuYWdlbWVudCBjb250cm9sbGVyXG4gKlxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxuICogQHNpbmNlIDIwMTYxMDEzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncm9sZS1wZXJtaXNzaW9ucy1tYW5hZ2VtZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGVybWlzc2lvbnMtbWFuYWdlbWVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uc01hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHJvbGVzOiBSb2xlW107XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgICBmaWx0ZXJlZFBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW107XG4gICAgbW9kdWxlQ29kZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNsaWVudElkOiBudW1iZXI7XG4gICAgY29uZmlnOiBNdWx0aVVzZXJDb25maWc7XG5cbiAgICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBjcmVkZW50aWFsc1NlcnZpY2U6IENyZWRlbnRpYWxzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyB1c2VyQ29uZmlnU2VydmljZTogVXNlckNvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMubW9kdWxlQ29kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy51c2VyQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcblxuICAgICAgICB0aGlzLmZpbHRlckZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIHNlYXJjaDogWycnXSxcbiAgICAgICAgICAgIHJvbGVfaWRzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRGaWx0ZXJlZFBlcm1pc3Npb25zKCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJGb3JtLmdldCgnc2VhcmNoJykudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRQZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwZXJtaXNzaW9uOiBQZXJtaXNzaW9uKSA9PiBwZXJtaXNzaW9uLmxhYmVsLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlLnRvU3RyaW5nKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoXyA9PiB0aGlzLnNldEZpbHRlcmVkUGVybWlzc2lvbnMoKSk7XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmFtcy5tb2R1bGVfY29kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2R1bGVDb2RlID0gcGFyYW1zLm1vZHVsZV9jb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5sb2FkUm9sZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZFBlcm1pc3Npb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzRGlzYWJsZWQoaXNHbG9iYWw6IGJvb2xlYW4sIGlzRWRpdGFibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzR2xvYmFsICYmIHRoaXMuY3JlZGVudGlhbHNTZXJ2aWNlLmNyZWRlbnRpYWxzPy51c2VyPy51c2VyX3R5cGVfaWQgIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiAhaXNFZGl0YWJsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbG9hZFBlcm1pc3Npb25zKCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJzOiBhbnkgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29kZSkge1xuICAgICAgICAgICAgZmlsdGVycy5tb2R1bGVfY29kZSA9IHRoaXMubW9kdWxlQ29kZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jbGllbnRJZCkge1xuICAgICAgICAgICAgZmlsdGVycy5jbGllbnRfaWQgPSB0aGlzLmNsaWVudElkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaHR0cC5nZXQoJ2FwaS9wZXJtaXNzaW9ucycsIHsgcGFyYW1zOiBmaWx0ZXJzIH0pLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcblxuICAgICAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlcmVkUGVybWlzc2lvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHRoZSBSb2xlcyBmcm9tIHRoZSBEQlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZFJvbGVzKCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJzOiBhbnkgPSB7XG4gICAgICAgICAgICBsb2FkUGVybWlzc2lvbnM6IHRydWUsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmNsaWVudElkKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLmNsaWVudF9pZCA9IHRoaXMuY2xpZW50SWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmh0dHAuZ2V0KCdhcGkvcm9sZXMnLCB7IHBhcmFtczogZmlsdGVycyB9KS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb2xlcyA9IG5ldyBBcnJheTxSb2xlPigpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIHJlcy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByb2xlID0gbmV3IFJvbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcm9sZS5sb2FkRnJvbUpzb24ocm93KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb2xlcy5wdXNoKHJvbGUpO1xuICAgICAgICAgICAgICAgICAgICByb2xlLnNldHVwQmxhbmtQZXJtaXNzaW9uc0Zvck5nTW9kZWwoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldCgncm9sZV9pZHMnKS5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb2xlcy5tYXAocm9sZSA9PiByb2xlLmlkKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVwZGF0ZVJvbGVQZXJtaXNzaW9uKHJvbGU6IFJvbGUsIHBlcm1pc3Npb246IFBlcm1pc3Npb24pIHtcbiAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgICByaWQ6IHJvbGUuaWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBwZXJtaXNzaW9uLnNsdWdcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocm9sZS5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24uc2x1ZykpIHtcbiAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgcGVybWlzc2lvbiAgKi9cbiAgICAgICAgICAgIHRoaXMuaHR0cC5wYXRjaCgnYXBpL3JvbGVzLycgKyByb2xlLmlkICsgJy9wZXJtaXNzaW9ucy8nICsgcGVybWlzc2lvbi5pZCArICcvcmVtb3ZlJywgZGF0YSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICByb2xlLnJlbW92ZVBlcm1pc3Npb24ocGVybWlzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KHBlcm1pc3Npb24ubGFiZWwgKyAnIHJlbW92ZWQnLCAnd2FybmluZycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvKiBBZGQgdGhlIHBlcm1pc3Npb24gKi9cbiAgICAgICAgICAgIHRoaXMuaHR0cC5wYXRjaCgnYXBpL3JvbGVzLycgKyByb2xlLmlkICsgJy9wZXJtaXNzaW9ucy8nICsgcGVybWlzc2lvbi5pZCArICcvYWRkJywgZGF0YSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICByb2xlLmFkZFBlcm1pc3Npb24ocGVybWlzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KHBlcm1pc3Npb24ubGFiZWwgKyAnIGFkZGVkJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1zdGFydCBnYXAtM1wiPlxuICA8bWF0LWNhcmQ+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwibS0wIGZ3LWJvbGRcIj5cbiAgICAgICAgICBNYW5hZ2UgUm9sZSBQZXJtaXNzaW9uc1xuICAgICAgICA8L2gzPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWNvbmZpZy5wZXJtaXNzaW9uQ29uZmlnLmRpc2FibGVVc2Vyc1wiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vdXNlcnMnXVwiIGNsYXNzPVwibWwtMVwiXG4gICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b24+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGZhcyBmYS11c2Vyc1wiPjwvaT4gVXNlcnNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhY29uZmlnLnBlcm1pc3Npb25Db25maWcuZGlzYWJsZVJvbGVzXCIgW3JvdXRlckxpbmtdPVwiWycuLi9yb2xlcyddXCIgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS11c2VyLW1kXCI+PC9pPiBNYW5hZ2UgUm9sZXNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU2VhcmNoIFBlcm1pc3Npb25zXCJcbiAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIi8+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZmlsdGVyRm9ybS5nZXQoJ3NlYXJjaCcpLnNldFZhbHVlKCcnKVwiICpuZ0lmPVwiZmlsdGVyRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyb2xlc1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5TaG93IFJvbGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPSdyb2xlX2lkcycgbXVsdGlwbGU+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgcm9sZSBvZiByb2xlc1wiIFt2YWx1ZV09XCJyb2xlPy5pZFwiPlxuICAgICAgICAgICAgICB7eyByb2xlLmxhYmVsIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9mb3JtPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cblxuICA8bWF0LWNhcmQgY2xhc3M9XCJtdC0yXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTBcIj5cbiAgICAgIDxmb3JtPlxuICAgICAgICA8dGFibGUgYXJpYS1kZXNjcmliZWRieT1cIlJvbGUgUGVybWlzc2lvbnNcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1jb25kZW5zZWQgdGFibGUtc3RyaXBlZFwiPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGg+UGVybWlzc2lvbnM8L3RoPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm9sZSBvZiByb2xlc1wiPlxuICAgICAgICAgICAgICA8dGggKm5nSWY9XCJmaWx0ZXJGb3JtLmdldCgncm9sZV9pZHMnKS52YWx1ZS5pbmNsdWRlcyhyb2xlLmlkKVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICB7eyByb2xlLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcGVybWlzc2lvbiBvZiBmaWx0ZXJlZFBlcm1pc3Npb25zXCI+XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIHt7IHBlcm1pc3Npb24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzXCI+XG4gICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImZpbHRlckZvcm0uZ2V0KCdyb2xlX2lkcycpLnZhbHVlLmluY2x1ZGVzKHJvbGUuaWQpXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhbGlnbi1taWRkbGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJ1cGRhdGVSb2xlUGVybWlzc2lvbihyb2xlLCBwZXJtaXNzaW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicm9sZS5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24uc2x1ZylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKHJvbGUuaXNfZ2xvYmFsLCByb2xlLmlzX2VkaXRhYmxlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInt7cm9sZS5pZH19W3t7cGVybWlzc2lvbj8ubGFiZWx9fV1cIiB0eXBlPVwiY2hlY2tib3hcIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuPC9kaXY+XG4iXX0=
|
|
@@ -279,7 +279,7 @@ export class SearchableSelectorComponent {
|
|
|
279
279
|
provide: MatFormFieldControl,
|
|
280
280
|
useExisting: SearchableSelectorComponent
|
|
281
281
|
}
|
|
282
|
-
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\" *ngIf=\"add\" (click)=\"addItem($event)\">\n add\n </mat-icon>\n <mat-icon class=\"cursor-pointer\" *ngIf=\"edit && selectedValue\" (click)=\"editItem($event)\">\n edit\n </mat-icon>\n </div>\n</ng-container
|
|
282
|
+
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\" style=\"margin-top: -12px;\" *ngIf=\"add\" (click)=\"addItem($event)\">\n add\n </mat-icon>\n <mat-icon class=\"cursor-pointer\" style=\"margin-top: -12px;\" *ngIf=\"edit && selectedValue\" (click)=\"editItem($event)\">\n edit\n </mat-icon>\n </div>\n</ng-container>\n", styles: [".searchable-selector-container{display:flex;align-items:center}.searchable-selector-container mat-select{flex-grow:1}.searchable-selector-container mat-icon{margin-left:2px}.relative-icon{position:relative;top:-4px}.searchable-selector-scrollable-container{max-height:175px;overflow-y:auto}:host ::ng-deep .mat-mdc-floating-label{pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.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: "directive", type: i9.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
|
|
283
283
|
}
|
|
284
284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchableSelectorComponent, decorators: [{
|
|
285
285
|
type: Component,
|
|
@@ -288,7 +288,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
288
288
|
provide: MatFormFieldControl,
|
|
289
289
|
useExisting: SearchableSelectorComponent
|
|
290
290
|
}
|
|
291
|
-
], template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\" *ngIf=\"add\" (click)=\"addItem($event)\">\n add\n </mat-icon>\n <mat-icon class=\"cursor-pointer\" *ngIf=\"edit && selectedValue\" (click)=\"editItem($event)\">\n edit\n </mat-icon>\n </div>\n</ng-container
|
|
291
|
+
], template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\" style=\"margin-top: -12px;\" *ngIf=\"add\" (click)=\"addItem($event)\">\n add\n </mat-icon>\n <mat-icon class=\"cursor-pointer\" style=\"margin-top: -12px;\" *ngIf=\"edit && selectedValue\" (click)=\"editItem($event)\">\n edit\n </mat-icon>\n </div>\n</ng-container>\n", styles: [".searchable-selector-container{display:flex;align-items:center}.searchable-selector-container mat-select{flex-grow:1}.searchable-selector-container mat-icon{margin-left:2px}.relative-icon{position:relative;top:-4px}.searchable-selector-scrollable-container{max-height:175px;overflow-y:auto}:host ::ng-deep .mat-mdc-floating-label{pointer-events:none!important}\n"] }]
|
|
292
292
|
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.FocusMonitor }, { type: i3.HttpService }, { type: i0.ElementRef }, { type: i4.MatDialog }, { type: i1.NgControl, decorators: [{
|
|
293
293
|
type: Optional
|
|
294
294
|
}, {
|
|
@@ -353,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
353
353
|
}], value: [{
|
|
354
354
|
type: Input
|
|
355
355
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8sMkJBQTJCO2FBZ0MvQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFXbEIsSUFBSSxLQUFLO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3ZCLENBQUM7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O3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLGlCQUFpQjtzQkFBekIsS0FBSztnQkF3QkYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YmplY3QsIG9mLCBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaGFibGUtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuICBASW5wdXQoKSB0aXRsZUZpZWxkOiBzdHJpbmcgPSAndGl0bGUnO1xuICBASW5wdXQoKSBzdWJ0aXRsZUZpZWxkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaVVybCE6IHN0cmluZztcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgYWRkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFkZENvbmZpZzogYW55O1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVkaXRDb25maWc6IGFueTtcbiAgQElucHV0KCkgc29ydDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNvcnRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZDogc3RyaW5nO1xuICBASW5wdXQoKSBpdGVtQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+IHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhcGlEYXRhUHJvcGVydHk6IHN0cmluZyA9ICdkYXRhJztcbiAgQElucHV0KCkgY2FjaGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGVyUGFnZTogbnVtYmVyID0gMjU7XG4gIEBJbnB1dCgpIGluRGF0YVNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYW5lbFdpZHRoOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBmb2N1c1NlYXJjaE9uT3BlbiA9IGZhbHNlO1xuXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfTtcbiAgc3RhdGljIG5leHRJZCA9IDA7XG4gIHNlbGVjdG9yRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBjb250cm9sVHlwZSA9ICdzZWFyY2hhYmxlLXNlbGN0b3InO1xuICBpZCA9IGBzZWFyY2hhYmxlLXNlbGN0b3ItJHtTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQubmV4dElkKyt9YDtcbiAgZGVzY3JpYmVkQnkgPSAnJztcbiAgZmlsdGVyczogYW55O1xuICBjYWNoZWRJdGVtczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIGNvbnN0IHsgdmFsdWU6IHsgc2VsZWN0X3ZhbHVlIH0gfSA9IHRoaXMuc2VsZWN0b3JGb3JtO1xuICAgIHJldHVybiAhc2VsZWN0X3ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7IHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7IH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9yZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuc2VsZWN0b3JGb3JtLmRpc2FibGUoKSA6IHRoaXMuc2VsZWN0b3JGb3JtLmVuYWJsZSgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpPy52YWx1ZSB8fCAnJztcbiAgfVxuICBzZXQgdmFsdWUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RvckZvcm0ucGF0Y2hWYWx1ZSh7IHNlbGVjdF92YWx1ZTogZGF0YSB8fCAnJyB9KTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCkge1xuXG4gICAgdGhpcy5zZWxlY3RvckZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzZWxlY3RfdmFsdWU6IFtudWxsXSxcbiAgICAgIHNlYXJjaDogJydcbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBfZm9jdXNNb25pdG9yLm1vbml0b3IoX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmICFvcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9ICEhb3JpZ2luO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgb3BlbmVkQ2hhbmdlKG9wZW5lZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRhdGFJdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wZW5lZCAmJiB0aGlzLmVuYWJsZVNlYXJjaCAmJiB0aGlzLmZvY3VzU2VhcmNoT25PcGVuKSB7XG4gICAgICAvLyBGb2N1cyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGF0YUl0ZW1zKCk6IGFueVtdIHtcbiAgICBsZXQgaXRlbXM6IGFueVtdID0gW107XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICYmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkpXG4gICAgICBpdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkVmFsdWUsIC4uLnRoaXMuaXRlbXNdO1xuICAgIGVsc2UgaWYgKCghdGhpcy5tdWx0aXBsZSkgJiYgdGhpcy5zZWxlY3RlZFZhbHVlKVxuICAgICAgaXRlbXMgPSBbdGhpcy5zZWxlY3RlZFZhbHVlLCAuLi50aGlzLml0ZW1zXTtcbiAgICBlbHNlXG4gICAgICBpdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKHYsIGksIGEpID0+IGEuZmluZEluZGV4KHYgPT4gdlt0aGlzLnZhbHVlRmllbGRdID09PSBhW2ldW3RoaXMudmFsdWVGaWVsZF0pID09PSBpKTtcbiAgICAvL0VtaXQgdGhlIGl0ZW1zIHRvIGFueSBjaGlsZCBjb21wb25lbnRcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVNlYXJjaClcbiAgICAgICAgICB0aGlzLnNlYXJjaCh2YWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcnMgPSB7XG4gICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UsXG4gICAgICBzZWFyY2g6ICcnLFxuICAgICAgcGFnZTogMSxcbiAgICAgIGxhc3RQYWdlOiAxXG4gICAgfVxuICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5zb3J0X2J5ID0gdGhpcy5zb3J0QnkgfHwgYCR7dGhpcy50aXRsZUZpZWxkfXxhc2NgO1xuICAgIH1cblxuICAgIC8vRmV0Y2ggSXRlbXMgb25seSBpZiBpdCBpcyBub3QgcHJlc2VudCwgY2FuIGJlIHVzZWQgaW4gcGxhY2VzIHdoZXJlIHdlIGxvYWQgbWFueSBlbnRyaWVzLlxuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5mZXRjaEl0ZW1MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hJdGVtTGlzdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBpVXJsLCB7IHBhcmFtczogdGhpcy5maWx0ZXJzIH0pXG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmh0dHAuY2FjaGUoKS5nZXQodGhpcy5hcGlVcmwsIHsgcGFyYW1zOiB0aGlzLmZpbHRlcnMgfSlcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIG9mKCkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICBzd2l0Y2hNYXAoKF8pID0+IGZyb20ocmVxdWVzdCkpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZyA9IGZhbHNlKSxcbiAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5jb25jYXQocmVzdWx0W3RoaXMuYXBpRGF0YVByb3BlcnR5XSk7XG4gICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgdGhpcy5jYWNoZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSByZXN1bHQ/LmN1cnJlbnRfcGFnZSB8fCAxO1xuICAgICAgICB0aGlzLmZpbHRlcnMubGFzdFBhZ2UgPSByZXN1bHQ/Lmxhc3RfcGFnZSB8fCAxO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gZGF0YTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVZhbHVlKGVsZTogYW55LCBrZXlTdHJpbmc6IHN0cmluZykge1xuICAgIGtleVN0cmluZyA9IGtleVN0cmluZy5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgXCIuJDFcIik7IC8vIGNvbnZlcnQgaW5kZXhlcyB0byBwcm9wZXJ0aWVzXG4gICAga2V5U3RyaW5nID0ga2V5U3RyaW5nLnJlcGxhY2UoL15cXC4vLCBcIlwiKTsgLy8gc3RyaXAgYSBsZWFkaW5nIGRvdFxuICAgIGNvbnN0IGtleUxpc3QgPSBrZXlTdHJpbmcuc3BsaXQoXCIuXCIpO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0ga2V5TGlzdC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleUxpc3RbaV07XG4gICAgICBpZiAoZWxlICYmIGtleSBpbiBlbGUpIHtcbiAgICAgICAgZWxlID0gZWxlW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGU7XG4gIH1cblxuICBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSlcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9ICh0aGlzLnZhbHVlIGFzIFtdKS5tYXAoeCA9PiB0aGlzLmRhdGFJdGVtcy5maW5kKHkgPT4geVt0aGlzLnZhbHVlRmllbGRdID09PSB4KSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5kYXRhSXRlbXMuZmluZCh4ID0+IHhbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmICh0aGlzLm5nQ29udHJvbC50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sLmRpcnR5KSk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICghdGhpcy5pc0xvYWRpbmcgJiYgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID4gdGhpcy5maWx0ZXJzLnBhZ2UpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5wYWdlICs9IDE7XG4gICAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWREYXRhKCkge1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID0gMTtcbiAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1t0aGlzLnNlYXJjaEZpZWxkXSA9IGV2ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gZXZlbnQ7XG4gICAgfVxuICAgIC8vIHdlIG5lZWQgc2VhcmNoIGZpZWxkIHRvIHNlYXJjaCBpbiBkYXRhXG4gICAgaWYgKHRoaXMuaW5EYXRhU2VhcmNoICYmIHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVySXRlbXMoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJJdGVtcyhldmVudDogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcy5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZVt0aGlzLnNlYXJjaEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuc2VhcmNoKGV2ZW50LnRvTG93ZXJDYXNlKCkpICE9IC0xXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcztcbiAgICB9XG4gIH1cblxuICBhZGRJdGVtKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuaXRlbUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICAuLi50aGlzLmFkZENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2gocmVzdWx0Lml0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbHVlKHJlc3VsdC5pdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xuICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZWRpdEl0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5pdGVtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0ZWRWYWx1ZVxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuZWRpdENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoeCA9PiB4W3RoaXMudmFsdWVGaWVsZF0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKS5zZXRWYWx1ZShyZXN1bHQuaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwic2VsZWN0b3JGb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLXNlbGVjdG9yLWNvbnRhaW5lclwiPlxuICAgIDwhLS0gU2VsZWN0b3IgYW5kIFN1ZmZpeCBJY29ucyAtLT5cbiAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RfdmFsdWVcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJfaGFuZGxlSW5wdXQoKVwiIChvcGVuZWRDaGFuZ2UpPVwib3BlbmVkQ2hhbmdlKCRldmVudClcIiBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCI+XG4gICAgICA8IS0tIFNlYXJjaCBGaWVsZCAtLT5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVuYWJsZVNlYXJjaFwiIGNsYXNzPVwicC0xIHctMTAwXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNzZWFyY2hJbnB1dD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDwhLS0gT3B0aW9ucyB3aXRoIFNjcm9sbGFibGUgQ29udGFpbmVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaGFibGUtc2VsZWN0b3Itc2Nyb2xsYWJsZS1jb250YWluZXJcIiBjZGtTY3JvbGxhYmxlIChzY3JvbGxlbmQpPVwib25TY3JvbGwoKVwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhSXRlbXNcIiBbdmFsdWVdPVwiZ2V0UHJvcGVydHlWYWx1ZShpdGVtLCB2YWx1ZUZpZWxkKVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGdldFByb3BlcnR5VmFsdWUoaXRlbSwgdGl0bGVGaWVsZCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJ0aXRsZUZpZWxkXCIgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxuICAgICAgICAgICAgLSB7eyBnZXRQcm9wZXJ0eVZhbHVlKGl0ZW0sIHN1YnRpdGxlRmllbGQpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICA8IS0tIEFkZCBhbmQgRWRpdCBCdXR0b25zIC0tPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJhZGRcIiAoY2xpY2spPVwiYWRkSXRlbSgkZXZlbnQpXCI+XG4gICAgICBhZGRcbiAgICA8L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJlZGl0ICYmIHNlbGVjdGVkVmFsdWVcIiAoY2xpY2spPVwiZWRpdEl0ZW0oJGV2ZW50KVwiPlxuICAgICAgZWRpdFxuICAgIDwvbWF0LWljb24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8sMkJBQTJCO2FBZ0MvQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFXbEIsSUFBSSxLQUFLO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3ZCLENBQUM7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O3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLGlCQUFpQjtzQkFBekIsS0FBSztnQkF3QkYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YmplY3QsIG9mLCBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaGFibGUtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuICBASW5wdXQoKSB0aXRsZUZpZWxkOiBzdHJpbmcgPSAndGl0bGUnO1xuICBASW5wdXQoKSBzdWJ0aXRsZUZpZWxkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaVVybCE6IHN0cmluZztcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgYWRkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFkZENvbmZpZzogYW55O1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVkaXRDb25maWc6IGFueTtcbiAgQElucHV0KCkgc29ydDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNvcnRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZDogc3RyaW5nO1xuICBASW5wdXQoKSBpdGVtQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+IHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhcGlEYXRhUHJvcGVydHk6IHN0cmluZyA9ICdkYXRhJztcbiAgQElucHV0KCkgY2FjaGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGVyUGFnZTogbnVtYmVyID0gMjU7XG4gIEBJbnB1dCgpIGluRGF0YVNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYW5lbFdpZHRoOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBmb2N1c1NlYXJjaE9uT3BlbiA9IGZhbHNlO1xuXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfTtcbiAgc3RhdGljIG5leHRJZCA9IDA7XG4gIHNlbGVjdG9yRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBjb250cm9sVHlwZSA9ICdzZWFyY2hhYmxlLXNlbGN0b3InO1xuICBpZCA9IGBzZWFyY2hhYmxlLXNlbGN0b3ItJHtTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQubmV4dElkKyt9YDtcbiAgZGVzY3JpYmVkQnkgPSAnJztcbiAgZmlsdGVyczogYW55O1xuICBjYWNoZWRJdGVtczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIGNvbnN0IHsgdmFsdWU6IHsgc2VsZWN0X3ZhbHVlIH0gfSA9IHRoaXMuc2VsZWN0b3JGb3JtO1xuICAgIHJldHVybiAhc2VsZWN0X3ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7IHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7IH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9yZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuc2VsZWN0b3JGb3JtLmRpc2FibGUoKSA6IHRoaXMuc2VsZWN0b3JGb3JtLmVuYWJsZSgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpPy52YWx1ZSB8fCAnJztcbiAgfVxuICBzZXQgdmFsdWUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RvckZvcm0ucGF0Y2hWYWx1ZSh7IHNlbGVjdF92YWx1ZTogZGF0YSB8fCAnJyB9KTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCkge1xuXG4gICAgdGhpcy5zZWxlY3RvckZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzZWxlY3RfdmFsdWU6IFtudWxsXSxcbiAgICAgIHNlYXJjaDogJydcbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBfZm9jdXNNb25pdG9yLm1vbml0b3IoX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmICFvcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9ICEhb3JpZ2luO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgb3BlbmVkQ2hhbmdlKG9wZW5lZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRhdGFJdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wZW5lZCAmJiB0aGlzLmVuYWJsZVNlYXJjaCAmJiB0aGlzLmZvY3VzU2VhcmNoT25PcGVuKSB7XG4gICAgICAvLyBGb2N1cyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGF0YUl0ZW1zKCk6IGFueVtdIHtcbiAgICBsZXQgaXRlbXM6IGFueVtdID0gW107XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICYmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkpXG4gICAgICBpdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkVmFsdWUsIC4uLnRoaXMuaXRlbXNdO1xuICAgIGVsc2UgaWYgKCghdGhpcy5tdWx0aXBsZSkgJiYgdGhpcy5zZWxlY3RlZFZhbHVlKVxuICAgICAgaXRlbXMgPSBbdGhpcy5zZWxlY3RlZFZhbHVlLCAuLi50aGlzLml0ZW1zXTtcbiAgICBlbHNlXG4gICAgICBpdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKHYsIGksIGEpID0+IGEuZmluZEluZGV4KHYgPT4gdlt0aGlzLnZhbHVlRmllbGRdID09PSBhW2ldW3RoaXMudmFsdWVGaWVsZF0pID09PSBpKTtcbiAgICAvL0VtaXQgdGhlIGl0ZW1zIHRvIGFueSBjaGlsZCBjb21wb25lbnRcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVNlYXJjaClcbiAgICAgICAgICB0aGlzLnNlYXJjaCh2YWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcnMgPSB7XG4gICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UsXG4gICAgICBzZWFyY2g6ICcnLFxuICAgICAgcGFnZTogMSxcbiAgICAgIGxhc3RQYWdlOiAxXG4gICAgfVxuICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5zb3J0X2J5ID0gdGhpcy5zb3J0QnkgfHwgYCR7dGhpcy50aXRsZUZpZWxkfXxhc2NgO1xuICAgIH1cblxuICAgIC8vRmV0Y2ggSXRlbXMgb25seSBpZiBpdCBpcyBub3QgcHJlc2VudCwgY2FuIGJlIHVzZWQgaW4gcGxhY2VzIHdoZXJlIHdlIGxvYWQgbWFueSBlbnRyaWVzLlxuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5mZXRjaEl0ZW1MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hJdGVtTGlzdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBpVXJsLCB7IHBhcmFtczogdGhpcy5maWx0ZXJzIH0pXG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmh0dHAuY2FjaGUoKS5nZXQodGhpcy5hcGlVcmwsIHsgcGFyYW1zOiB0aGlzLmZpbHRlcnMgfSlcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIG9mKCkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICBzd2l0Y2hNYXAoKF8pID0+IGZyb20ocmVxdWVzdCkpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZyA9IGZhbHNlKSxcbiAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5jb25jYXQocmVzdWx0W3RoaXMuYXBpRGF0YVByb3BlcnR5XSk7XG4gICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgdGhpcy5jYWNoZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSByZXN1bHQ/LmN1cnJlbnRfcGFnZSB8fCAxO1xuICAgICAgICB0aGlzLmZpbHRlcnMubGFzdFBhZ2UgPSByZXN1bHQ/Lmxhc3RfcGFnZSB8fCAxO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gZGF0YTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVZhbHVlKGVsZTogYW55LCBrZXlTdHJpbmc6IHN0cmluZykge1xuICAgIGtleVN0cmluZyA9IGtleVN0cmluZy5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgXCIuJDFcIik7IC8vIGNvbnZlcnQgaW5kZXhlcyB0byBwcm9wZXJ0aWVzXG4gICAga2V5U3RyaW5nID0ga2V5U3RyaW5nLnJlcGxhY2UoL15cXC4vLCBcIlwiKTsgLy8gc3RyaXAgYSBsZWFkaW5nIGRvdFxuICAgIGNvbnN0IGtleUxpc3QgPSBrZXlTdHJpbmcuc3BsaXQoXCIuXCIpO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0ga2V5TGlzdC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleUxpc3RbaV07XG4gICAgICBpZiAoZWxlICYmIGtleSBpbiBlbGUpIHtcbiAgICAgICAgZWxlID0gZWxlW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGU7XG4gIH1cblxuICBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSlcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9ICh0aGlzLnZhbHVlIGFzIFtdKS5tYXAoeCA9PiB0aGlzLmRhdGFJdGVtcy5maW5kKHkgPT4geVt0aGlzLnZhbHVlRmllbGRdID09PSB4KSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5kYXRhSXRlbXMuZmluZCh4ID0+IHhbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmICh0aGlzLm5nQ29udHJvbC50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sLmRpcnR5KSk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICghdGhpcy5pc0xvYWRpbmcgJiYgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID4gdGhpcy5maWx0ZXJzLnBhZ2UpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5wYWdlICs9IDE7XG4gICAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWREYXRhKCkge1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID0gMTtcbiAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1t0aGlzLnNlYXJjaEZpZWxkXSA9IGV2ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gZXZlbnQ7XG4gICAgfVxuICAgIC8vIHdlIG5lZWQgc2VhcmNoIGZpZWxkIHRvIHNlYXJjaCBpbiBkYXRhXG4gICAgaWYgKHRoaXMuaW5EYXRhU2VhcmNoICYmIHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVySXRlbXMoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJJdGVtcyhldmVudDogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcy5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZVt0aGlzLnNlYXJjaEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuc2VhcmNoKGV2ZW50LnRvTG93ZXJDYXNlKCkpICE9IC0xXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcztcbiAgICB9XG4gIH1cblxuICBhZGRJdGVtKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuaXRlbUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICAuLi50aGlzLmFkZENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2gocmVzdWx0Lml0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbHVlKHJlc3VsdC5pdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xuICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZWRpdEl0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5pdGVtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0ZWRWYWx1ZVxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuZWRpdENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoeCA9PiB4W3RoaXMudmFsdWVGaWVsZF0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKS5zZXRWYWx1ZShyZXN1bHQuaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwic2VsZWN0b3JGb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLXNlbGVjdG9yLWNvbnRhaW5lclwiPlxuICAgIDwhLS0gU2VsZWN0b3IgYW5kIFN1ZmZpeCBJY29ucyAtLT5cbiAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RfdmFsdWVcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJfaGFuZGxlSW5wdXQoKVwiIChvcGVuZWRDaGFuZ2UpPVwib3BlbmVkQ2hhbmdlKCRldmVudClcIiBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCI+XG4gICAgICA8IS0tIFNlYXJjaCBGaWVsZCAtLT5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVuYWJsZVNlYXJjaFwiIGNsYXNzPVwicC0xIHctMTAwXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNzZWFyY2hJbnB1dD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDwhLS0gT3B0aW9ucyB3aXRoIFNjcm9sbGFibGUgQ29udGFpbmVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaGFibGUtc2VsZWN0b3Itc2Nyb2xsYWJsZS1jb250YWluZXJcIiBjZGtTY3JvbGxhYmxlIChzY3JvbGxlbmQpPVwib25TY3JvbGwoKVwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhSXRlbXNcIiBbdmFsdWVdPVwiZ2V0UHJvcGVydHlWYWx1ZShpdGVtLCB2YWx1ZUZpZWxkKVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGdldFByb3BlcnR5VmFsdWUoaXRlbSwgdGl0bGVGaWVsZCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJ0aXRsZUZpZWxkXCIgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxuICAgICAgICAgICAgLSB7eyBnZXRQcm9wZXJ0eVZhbHVlKGl0ZW0sIHN1YnRpdGxlRmllbGQpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICA8IS0tIEFkZCBhbmQgRWRpdCBCdXR0b25zIC0tPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMTJweDtcIiAqbmdJZj1cImFkZFwiIChjbGljayk9XCJhZGRJdGVtKCRldmVudClcIj5cbiAgICAgIGFkZFxuICAgIDwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IC0xMnB4O1wiICpuZ0lmPVwiZWRpdCAmJiBzZWxlY3RlZFZhbHVlXCIgKGNsaWNrKT1cImVkaXRJdGVtKCRldmVudClcIj5cbiAgICAgIGVkaXRcbiAgICA8L21hdC1pY29uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|