@firestitch/form 18.0.29 → 18.0.30
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/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +14 -2
- package/app/directives/button.directive.d.ts +1 -1
- package/app/directives/form/form.directive.d.ts +87 -29
- package/app/directives/form-base/form-base.directive.d.ts +73 -5
- package/app/directives/form-container/form-container.directive.d.ts +80 -0
- package/app/directives/form-container/index.d.ts +1 -0
- package/app/directives/index.d.ts +1 -1
- package/app/fs-form.module.d.ts +2 -2
- package/app/interfaces/form-owner.d.ts +17 -0
- package/app/interfaces/index.d.ts +1 -0
- package/app/services/fsform.service.d.ts +5 -5
- package/esm2022/app/components/form-dialog-actions/form-dialog-actions.component.mjs +41 -17
- package/esm2022/app/directives/button.directive.mjs +13 -8
- package/esm2022/app/directives/form/form.directive.mjs +238 -241
- package/esm2022/app/directives/form-base/form-base.directive.mjs +239 -6
- package/esm2022/app/directives/form-container/form-container.directive.mjs +164 -0
- package/esm2022/app/directives/form-container/index.mjs +2 -0
- package/esm2022/app/directives/index.mjs +2 -2
- package/esm2022/app/fs-form.module.mjs +6 -6
- package/esm2022/app/guards/form-deactivate.guard.mjs +1 -1
- package/esm2022/app/interfaces/form-owner.mjs +2 -0
- package/esm2022/app/interfaces/index.mjs +2 -1
- package/esm2022/app/services/fsform.service.mjs +10 -7
- package/esm2022/public_api.mjs +2 -2
- package/fesm2022/firestitch-form.mjs +702 -317
- package/fesm2022/firestitch-form.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
- package/app/directives/form-group/form-group.directive.d.ts +0 -15
- package/app/directives/form-group/index.d.ts +0 -1
- package/esm2022/app/directives/form-group/form-group.directive.mjs +0 -35
- package/esm2022/app/directives/form-group/index.mjs +0 -2
|
@@ -1,38 +1,62 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { delay, filter, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { FsFormDirective } from '../../directives/form/form.directive';
|
|
5
1
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';
|
|
6
3
|
import { MatButton } from '@angular/material/button';
|
|
7
|
-
import { FsButtonDirective } from '../../directives/button.directive';
|
|
8
4
|
import { MatDialogClose } from '@angular/material/dialog';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { delay, takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { FsButtonDirective } from '../../directives/button.directive';
|
|
8
|
+
import { FsFormContainerDirective } from '../../directives/form-container';
|
|
9
9
|
import { FsFormDialogCloseDirective } from '../../directives/form-dialog-close.directive';
|
|
10
|
+
import { FsFormDirective } from '../../directives/form/form.directive';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
export class FsFormDialogActionsComponent {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
save = true;
|
|
13
|
+
/** Leave unset inside an `fsFormContainer` to follow whether it has anything to save. */
|
|
14
|
+
save;
|
|
15
15
|
create = false;
|
|
16
16
|
close = false;
|
|
17
|
-
|
|
17
|
+
/** Leave unset inside an `fsFormContainer` to fill in whenever Save does not apply. */
|
|
18
|
+
done;
|
|
18
19
|
closeData = null;
|
|
19
20
|
name;
|
|
20
21
|
dirty = false;
|
|
21
22
|
_destroy$ = new Subject();
|
|
23
|
+
_container = inject(FsFormContainerDirective, { optional: true });
|
|
24
|
+
_form = inject(FsFormDirective, { optional: true });
|
|
25
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
26
|
+
/**
|
|
27
|
+
* Inside a container these default to whether anything mounted can actually
|
|
28
|
+
* save, so a footer left as a bare `<fs-form-dialog-actions>` swaps Save for
|
|
29
|
+
* Done as tabs change without the dialog listing which tabs are savable. An
|
|
30
|
+
* explicit binding always wins, and outside a container Save stays on as it
|
|
31
|
+
* always did.
|
|
32
|
+
*/
|
|
33
|
+
get showSave() {
|
|
34
|
+
return this.save ?? (this._container ? this._container.submits : true);
|
|
35
|
+
}
|
|
36
|
+
get showDone() {
|
|
37
|
+
return this.done ?? (this._container ? !this._container.submits && !this.create : false);
|
|
38
|
+
}
|
|
22
39
|
ngOnInit() {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
const owner = this._container || this._form?.rootForm;
|
|
41
|
+
if (owner) {
|
|
42
|
+
// Track the whole set, not one form's own controls: with a form scoped to a
|
|
43
|
+
// tab's fields, the actions sit outside it in the dialog footer and that
|
|
44
|
+
// form's NgForm holds nothing of its own. Recomputed on every emission
|
|
45
|
+
// rather than latched, so a switch to a pristine tab clears it too.
|
|
46
|
+
owner.dirtyChange$
|
|
47
|
+
.pipe(takeUntil(this._destroy$))
|
|
26
48
|
.subscribe(() => {
|
|
27
|
-
this.dirty =
|
|
49
|
+
this.dirty = owner.dirtyLinked;
|
|
28
50
|
this._cdRef.markForCheck();
|
|
29
51
|
});
|
|
30
|
-
|
|
52
|
+
owner.submitted$
|
|
31
53
|
.pipe(delay(50), takeUntil(this._destroy$))
|
|
32
54
|
.subscribe(() => {
|
|
33
55
|
this.dirty = false;
|
|
34
56
|
this._cdRef.markForCheck();
|
|
35
57
|
});
|
|
58
|
+
}
|
|
59
|
+
if (this._form) {
|
|
36
60
|
this._form.reseted
|
|
37
61
|
.pipe(takeUntil(this._destroy$))
|
|
38
62
|
.subscribe(() => {
|
|
@@ -46,7 +70,7 @@ export class FsFormDialogActionsComponent {
|
|
|
46
70
|
this._destroy$.complete();
|
|
47
71
|
}
|
|
48
72
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, ngImport: i0, template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create':
|
|
73
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, ngImport: i0, template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': showSave || create }\">\n @if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n }\n @if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button{float:right}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "submitDisabled"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FsFormDialogCloseDirective, selector: "[fsFormDialogClose],[fs-form-dialog-close]", inputs: ["closeData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
50
74
|
}
|
|
51
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, decorators: [{
|
|
52
76
|
type: Component,
|
|
@@ -57,7 +81,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
57
81
|
MatDialogClose,
|
|
58
82
|
NgTemplateOutlet,
|
|
59
83
|
FsFormDialogCloseDirective,
|
|
60
|
-
], template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create':
|
|
84
|
+
], template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': showSave || create }\">\n @if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n }\n @if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button{float:right}\n"] }]
|
|
61
85
|
}], propDecorators: { save: [{
|
|
62
86
|
type: Input
|
|
63
87
|
}], create: [{
|
|
@@ -71,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
71
95
|
}], name: [{
|
|
72
96
|
type: Input
|
|
73
97
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLWRpYWxvZy1hY3Rpb25zL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFrQjFGLE1BQU0sT0FBTyw0QkFBNEI7SUFDL0IsS0FBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFHM0IsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNaLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNiLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsSUFBSSxDQUFTO0lBRXRCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFYixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVqQyxRQUFRO1FBQ2IsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZO2lCQUMzQixJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUVMLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztpQkFDakIsSUFBSSxDQUNILEtBQUssQ0FBQyxFQUFFLENBQUMsRUFDVCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO2lCQUNmLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt1R0FwRFUsNEJBQTRCOzJGQUE1Qiw0QkFBNEIsa01DN0J6Qyx5bkNBaURjLGlJRDVCTixPQUFPLG9GQUNQLFNBQVMsaUxBQ1QsaUJBQWlCLHVLQUNqQixjQUFjLHFMQUNkLGdCQUFnQixvSkFDaEIsMEJBQTBCOzsyRkFHckIsNEJBQTRCO2tCQWZ4QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsT0FBTzt3QkFDUCxTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLDBCQUEwQjtxQkFDN0I7OEJBT2EsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dDbG9zZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZzLWZvcm0tZGlhbG9nLWFjdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE1hdEJ1dHRvbixcbiAgICAgICAgRnNCdXR0b25EaXJlY3RpdmUsXG4gICAgICAgIE1hdERpYWxvZ0Nsb3NlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSxcbiAgICBdLFxufSlcclxuZXhwb3J0IGNsYXNzIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Zvcm0gPSBpbmplY3QoRnNGb3JtRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNhdmUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjcmVhdGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2xvc2UgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZG9uZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZURhdGEgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBkaXJ0eSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuX2Zvcm0pIHtcclxuICAgICAgdGhpcy5fZm9ybS5uZ0Zvcm0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUoICBcclxuICAgICAgICAgIGZpbHRlcigoKSA9PiAoIXRoaXMuZGlydHkpKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRoaXMuX2Zvcm0ubmdGb3JtLmRpcnR5O1xyXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLl9mb3JtLnN1Ym1pdHRlZFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZGVsYXkoNTApLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuX2Zvcm0ucmVzZXRlZFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XG4gIGNsYXNzPVwiZm9ybS1idXR0b25zXCJcbiAgW25nQ2xhc3NdPVwieyAnc2F2ZS1jcmVhdGUnOiBzYXZlIHx8IGNyZWF0ZSB9XCI+XG4gIEBpZiAoc2F2ZSB8fCBjcmVhdGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbbmFtZV09XCJuYW1lXCI+XG4gICAgICB7eyBjcmVhdGUgPyAnQ3JlYXRlJyA6ICdTYXZlJyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjbG9zZSAmJiAhZGlydHkgJiYgIWNyZWF0ZVwiXG4gICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKGRvbmUpIHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICBEb25lXG4gICAgPC9idXR0b24+XG4gIH1cbiAgQGlmIChzYXZlIHx8IGNyZWF0ZSkge1xuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgfVxuICBAaWYgKGNsb3NlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXG4gICAgICBmc0Zvcm1EaWFsb2dDbG9zZVxuICAgICAgW2Nsb3NlRGF0YV09XCJjbG9zZURhdGFcIlxuICAgICAgW2NvbG9yXT1cImRpcnR5ID8gJ2Jhc2ljJyA6ICdwcmltYXJ5J1wiPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKCEoc2F2ZSB8fCBjcmVhdGUpKSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLWRpYWxvZy1hY3Rpb25zL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQWtCdkUsTUFBTSxPQUFPLDRCQUE0QjtJQUV2Qyx5RkFBeUY7SUFDekUsSUFBSSxDQUFVO0lBQ2QsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDOUIsdUZBQXVG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LGNBQ25DLElBQUksV0FDUDt3QkFDUCxPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3FCQUMzQjs4QkFLZSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZ0Nsb3NlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVsYXksIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEZzQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9idXR0b24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRnNGb3JtQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IEZzRm9ybURpYWxvZ0Nsb3NlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWRpYWxvZy1jbG9zZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnMtZm9ybS1kaWFsb2ctYWN0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBGc0J1dHRvbkRpcmVjdGl2ZSxcclxuICAgIE1hdERpYWxvZ0Nsb3NlLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIEZzRm9ybURpYWxvZ0Nsb3NlRGlyZWN0aXZlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGc0Zvcm1EaWFsb2dBY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogTGVhdmUgdW5zZXQgaW5zaWRlIGFuIGBmc0Zvcm1Db250YWluZXJgIHRvIGZvbGxvdyB3aGV0aGVyIGl0IGhhcyBhbnl0aGluZyB0byBzYXZlLiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjcmVhdGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2xvc2UgPSBmYWxzZTtcclxuICAvKiogTGVhdmUgdW5zZXQgaW5zaWRlIGFuIGBmc0Zvcm1Db250YWluZXJgIHRvIGZpbGwgaW4gd2hlbmV2ZXIgU2F2ZSBkb2VzIG5vdCBhcHBseS4gKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZG9uZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VEYXRhID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgZGlydHkgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX2NvbnRhaW5lciA9IGluamVjdChGc0Zvcm1Db250YWluZXJEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJpdmF0ZSBfZm9ybSA9IGluamVjdChGc0Zvcm1EaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICAvKipcclxuICAgKiBJbnNpZGUgYSBjb250YWluZXIgdGhlc2UgZGVmYXVsdCB0byB3aGV0aGVyIGFueXRoaW5nIG1vdW50ZWQgY2FuIGFjdHVhbGx5XHJcbiAgICogc2F2ZSwgc28gYSBmb290ZXIgbGVmdCBhcyBhIGJhcmUgYDxmcy1mb3JtLWRpYWxvZy1hY3Rpb25zPmAgc3dhcHMgU2F2ZSBmb3JcclxuICAgKiBEb25lIGFzIHRhYnMgY2hhbmdlIHdpdGhvdXQgdGhlIGRpYWxvZyBsaXN0aW5nIHdoaWNoIHRhYnMgYXJlIHNhdmFibGUuIEFuXHJcbiAgICogZXhwbGljaXQgYmluZGluZyBhbHdheXMgd2lucywgYW5kIG91dHNpZGUgYSBjb250YWluZXIgU2F2ZSBzdGF5cyBvbiBhcyBpdFxyXG4gICAqIGFsd2F5cyBkaWQuXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBzaG93U2F2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNhdmUgPz8gKHRoaXMuX2NvbnRhaW5lciA/IHRoaXMuX2NvbnRhaW5lci5zdWJtaXRzIDogdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dEb25lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9uZSA/PyAodGhpcy5fY29udGFpbmVyID8gIXRoaXMuX2NvbnRhaW5lci5zdWJtaXRzICYmICF0aGlzLmNyZWF0ZSA6IGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG93bmVyID0gdGhpcy5fY29udGFpbmVyIHx8IHRoaXMuX2Zvcm0/LnJvb3RGb3JtO1xyXG5cclxuICAgIGlmKG93bmVyKSB7XHJcbiAgICAgIC8vIFRyYWNrIHRoZSB3aG9sZSBzZXQsIG5vdCBvbmUgZm9ybSdzIG93biBjb250cm9sczogd2l0aCBhIGZvcm0gc2NvcGVkIHRvIGFcclxuICAgICAgLy8gdGFiJ3MgZmllbGRzLCB0aGUgYWN0aW9ucyBzaXQgb3V0c2lkZSBpdCBpbiB0aGUgZGlhbG9nIGZvb3RlciBhbmQgdGhhdFxyXG4gICAgICAvLyBmb3JtJ3MgTmdGb3JtIGhvbGRzIG5vdGhpbmcgb2YgaXRzIG93bi4gUmVjb21wdXRlZCBvbiBldmVyeSBlbWlzc2lvblxyXG4gICAgICAvLyByYXRoZXIgdGhhbiBsYXRjaGVkLCBzbyBhIHN3aXRjaCB0byBhIHByaXN0aW5lIHRhYiBjbGVhcnMgaXQgdG9vLlxyXG4gICAgICBvd25lci5kaXJ0eUNoYW5nZSRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IG93bmVyLmRpcnR5TGlua2VkO1xyXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBvd25lci5zdWJtaXR0ZWQkXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBkZWxheSg1MCksXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuX2Zvcm0pIHtcclxuICAgICAgdGhpcy5fZm9ybS5yZXNldGVkXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcbiAgY2xhc3M9XCJmb3JtLWJ1dHRvbnNcIlxuICBbbmdDbGFzc109XCJ7ICdzYXZlLWNyZWF0ZSc6IHNob3dTYXZlIHx8IGNyZWF0ZSB9XCI+XG4gIEBpZiAoc2hvd1NhdmUgfHwgY3JlYXRlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW25hbWVdPVwibmFtZVwiPlxuICAgICAge3sgY3JlYXRlID8gJ0NyZWF0ZScgOiAnU2F2ZScgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiY2xvc2UgJiYgIWRpcnR5ICYmICFjcmVhdGVcIlxuICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gIH1cbiAgQGlmIChzaG93RG9uZSkge1xuICAgIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIj5cbiAgICAgIERvbmVcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKHNob3dTYXZlIHx8IGNyZWF0ZSkge1xuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgfVxuICBAaWYgKGNsb3NlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXG4gICAgICBmc0Zvcm1EaWFsb2dDbG9zZVxuICAgICAgW2Nsb3NlRGF0YV09XCJjbG9zZURhdGFcIlxuICAgICAgW2NvbG9yXT1cImRpcnR5ID8gJ2Jhc2ljJyA6ICdwcmltYXJ5J1wiPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKCEoc2hvd1NhdmUgfHwgY3JlYXRlKSkge1xuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgfVxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -3,7 +3,7 @@ import { MatButton } from '@angular/material/button';
|
|
|
3
3
|
import { fromEvent, Subject } from 'rxjs';
|
|
4
4
|
import { takeUntil } from 'rxjs/operators';
|
|
5
5
|
import { FsFormDirective } from './form';
|
|
6
|
-
import {
|
|
6
|
+
import { FsFormContainerDirective } from './form-container';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class FsButtonDirective {
|
|
9
9
|
name;
|
|
@@ -21,7 +21,7 @@ export class FsButtonDirective {
|
|
|
21
21
|
_formDisabled = false;
|
|
22
22
|
_previousDisabled = false;
|
|
23
23
|
_destroy$ = new Subject();
|
|
24
|
-
|
|
24
|
+
_container = inject(FsFormContainerDirective, { optional: true });
|
|
25
25
|
_form = inject(FsFormDirective, { optional: true });
|
|
26
26
|
_matButton = inject(MatButton, { optional: true, host: true });
|
|
27
27
|
_elementRef = inject(ElementRef);
|
|
@@ -29,12 +29,17 @@ export class FsButtonDirective {
|
|
|
29
29
|
_formBase;
|
|
30
30
|
ngOnInit() {
|
|
31
31
|
this.submit = this._elementRef.nativeElement.getAttribute('type') === 'submit';
|
|
32
|
-
// Prefer the enclosing
|
|
32
|
+
// Prefer the enclosing container over the form: the form's own button
|
|
33
33
|
// management (dirty-submit tracking, activeSubmitButton, reset) resolves its
|
|
34
|
-
// registry
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
|
|
34
|
+
// registry the same way, so buttons must register with the same owner.
|
|
35
|
+
// Registering with the form while the form reads the container leaves the
|
|
36
|
+
// container's button list empty and the submit button never gets
|
|
37
|
+
// dirty-disabled.
|
|
38
|
+
//
|
|
39
|
+
// Note this resolves the ROOT of the linked set, not the nearest form: the
|
|
40
|
+
// button that saves a tab's form typically sits outside it, down in the
|
|
41
|
+
// dialog footer, and drives the whole linked set from there.
|
|
42
|
+
this._formBase = this._container || this._form?.rootForm;
|
|
38
43
|
if (this._formBase) {
|
|
39
44
|
this._formBase.addButton(this);
|
|
40
45
|
if (this.submit) {
|
|
@@ -170,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
170
175
|
type: HostBinding,
|
|
171
176
|
args: ['style.transition']
|
|
172
177
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUN4QyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FDM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUdyQixJQUFJLENBQUM7SUFHTCxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBRTFCLElBQ1csY0FBYyxDQUFDLEtBQWM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFHTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBRXZCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZCxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFCLFVBQVUsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFR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QUNoZSxDQUFDO0lBQ0gsQ0FBQzt1R0F2TFUsaUJBQWlCOzJGQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlFQUF5RTtvQkFDbkYsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUlRLElBQUk7c0JBRFYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBV0MsZUFBZTtzQkFEckIsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZywgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtJztcbmltcG9ydCB7IEZzRm9ybUJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tYmFzZSc7XG5pbXBvcnQgeyBGc0Zvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1ncm91cCc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21hdC1yYWlzZWQtYnV0dG9uXSxbbWF0LWJ1dHRvbl0sW21hdC1mbGF0LWJ1dHRvbl0sW21hdC1zdHJva2VkLWJ1dHRvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGc0J1dHRvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlydHlTdWJtaXQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VibWl0RGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdWJtaXREaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuX2FwcGx5RGlzYWJsZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VibWl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N1Ym1pdERpc2FibGVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS50cmFuc2l0aW9uJylcbiAgcHVibGljIHRyYW5zaXRpb25TdHlsZSA9IG51bGw7XG5cbiAgcHVibGljIHN1Ym1pdCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3N1Ym1pdERpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Zvcm1EaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9wcmV2aW91c0Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9mb3JtR3JvdXAgPSBpbmplY3QoRnNGb3JtR3JvdXBEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2Zvcm0gPSBpbmplY3QoRnNGb3JtRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9tYXRCdXR0b24gPSBpbmplY3QoTWF0QnV0dG9uLCB7IG9wdGlvbmFsOiB0cnVlLCBob3N0OiB0cnVlIH0pO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX2Zvcm1CYXNlOiBGc0Zvcm1CYXNlRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1Ym1pdCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3N1Ym1pdCc7XG4gICAgLy8gUHJlZmVyIHRoZSBlbmNsb3NpbmcgZm9ybSBncm91cCBvdmVyIHRoZSBmb3JtOiB0aGUgZm9ybSdzIG93biBidXR0b25cbiAgICAvLyBtYW5hZ2VtZW50IChkaXJ0eS1zdWJtaXQgdHJhY2tpbmcsIGFjdGl2ZVN1Ym1pdEJ1dHRvbiwgcmVzZXQpIHJlc29sdmVzIGl0c1xuICAgIC8vIHJlZ2lzdHJ5IHZpYSBgX2Zvcm1Hcm91cCB8fCB0aGlzYCwgc28gYnV0dG9ucyBtdXN0IHJlZ2lzdGVyIHdpdGggdGhlIHNhbWVcbiAgICAvLyBvd25lci4gUmVnaXN0ZXJpbmcgd2l0aCB0aGUgZm9ybSB3aGlsZSB0aGUgZm9ybSByZWFkcyB0aGUgZ3JvdXAgbGVhdmVzIHRoZVxuICAgIC8vIGdyb3VwJ3MgYnV0dG9uIGxpc3QgZW1wdHkgYW5kIHRoZSBzdWJtaXQgYnV0dG9uIG5ldmVyIGdldHMgZGlydHktZGlzYWJsZWQuXG4gICAgdGhpcy5fZm9ybUJhc2UgPSB0aGlzLl9mb3JtR3JvdXAgfHwgdGhpcy5fZm9ybTtcblxuICAgIGlmICh0aGlzLl9mb3JtQmFzZSkge1xuICAgICAgdGhpcy5fZm9ybUJhc2UuYWRkQnV0dG9uKHRoaXMpO1xuXG4gICAgICBpZih0aGlzLnN1Ym1pdCkge1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQmFzZS5hY3RpdmVTdWJtaXRCdXR0b24gPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy5fZm9ybUJhc2UudHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudHJhbnNpdGlvblN0eWxlID0gJ25vbmUnO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25TdHlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbiAmJiAhdGhpcy5fZm9ybUJhc2UuYWN0aXZlU3VibWl0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c0Rpc2FibGVkID0gdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVkO1xuICAgICAgdGhpcy5fZm9ybURpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2FwcGx5RGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX2Zvcm1EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSB0cnVlO1xuICAgICAgdGhpcy5fYXBwbHlEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ3Byb2Nlc3MnKTtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Y2Nlc3MoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygnc3VjY2VzcycpO1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVycm9yKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ2Vycm9yJyk7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Q2xhc3MoY2xzKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5fZ2V0U3ZnKGNscyk7XG4gICAgdGhpcy5fcmVzZXRDbGFzcygpO1xuICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBmcy1mb3JtLXN1Ym1pdC1idXR0b24tJHtjbHN9YCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZChzdmcpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgaWYgKCF0aGlzLl9wcmV2aW91c0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3ZnLWljb24nKVxuICAgICAgLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGVsLnJlbW92ZSgpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9yZXNldENsYXNzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1CYXNlPy5yZW1vdmVCdXR0b24odGhpcyk7XG4gIH1cblxuICAvLyBFZmZlY3RpdmUgZGlzYWJsZWQgY29tYmluZXMgdGhlIGNvbnN1bWVyLWNvbnRyb2xsZWQgc3VibWl0RGlzYWJsZWQgaW5wdXQgd2l0aFxuICAvLyB0aGUgZm9ybSdzIHN1Ym1pdC1saWZlY3ljbGUgc3RhdGUsIHNvIGZvcm0gZW5hYmxlL2Rpc2FibGUgbmV2ZXIgY2xvYmJlcnMgYW5cbiAgLy8gZXhwbGljaXQgW3N1Ym1pdERpc2FibGVkXSBhbmQgdGhlIHR3byBjaGFubmVscyBzdGF5IGluZGVwZW5kZW50LlxuICBwcml2YXRlIF9hcHBseURpc2FibGVkKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMuX3N1Ym1pdERpc2FibGVkIHx8IHRoaXMuX2Zvcm1EaXNhYmxlZDtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q2xhc3MoKSB7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdFxuICAgICAgLnJlbW92ZShcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1zdWNjZXNzJywgXG4gICAgICAgICdmcy1mb3JtLXN1Ym1pdC1idXR0b24tZXJyb3InLCBcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1wcm9jZXNzJyxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTdmcodHlwZSkge1xuICAgIGlmICh0eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8c3ZnIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tc3VjY2Vzc1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2ZXJzaW9uPVwiMS4xXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgc3R5bGU9XCJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM4IDM4O1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgd2lkdGg9XCIzOHB4XCIgaGVpZ2h0PVwiMzhweFwiPlxuICAgICAgPGc+XG4gICAgICAgIDxnIGNsYXNzPVwiY2hlY2tcIj5cbiAgICAgICAgICA8Zz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjkuNiwxMS45Yy0wLjUtMC41LTEuMy0wLjUtMS44LDBMMTYuMywyMy40bC02LjEtNi4xYy0wLjUtMC41LTEuMy0wLjUtMS44LDBzLTAuNSwxLjMsMCwxLjhsNyw3YzAuMywwLjMsMC42LDAuNCwwLjksMC40czAuNy0wLjEsMC45LTAuNGwxMi40LTEyLjRDMzAuMSwxMy4yLDMwLjEsMTIuNCwyOS42LDExLjl6XCIvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPC9zdmc+YCwgJ3RleHQveG1sJykuZmlyc3RDaGlsZDtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhgPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByb2Nlc3NcIiB3aWR0aD1cIjM4XCIgaGVpZ2h0PVwiMzhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPGcgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxIDEpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9XCIuNVwiIGN4PVwiMThcIiBjeT1cIjE4XCIgcj1cIjE4XCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMThcIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDE4IDE4XCIgdG89XCIzNjAgMTggMThcIiBkdXI9XCIuN3NcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8L3N2Zz5gLCAndGV4dC94bWwnKS5maXJzdENoaWxkO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygnPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLWVycm9yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzhweFwiIGhlaWdodD1cIjM4cHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+PGc+PHBhdGggZD1cIk04IDFjMy45IDAgNyAzLjEgNyA3cy0zLjEgNy03IDctNy0zLjEtNy03IDMuMS03IDctN3pNOCAwYy00LjQgMC04IDMuNi04IDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh2MHpcIiBkYXRhLW9yaWdpbmFsPVwiIzQ0NDQ0NFwiIGRhdGEtb2xkX2NvbG9yPVwiIzQ0NDQ0NFwiLz48cGF0aCBkPVwiTTEyLjIgMTAuOGwtMi44LTIuOCAyLjgtMi44LTEuNC0xLjQtMi44IDIuOC0yLjgtMi44LTEuNCAxLjQgMi44IDIuOC0yLjggMi44IDEuNCAxLjQgMi44LTIuOCAyLjggMi44elwiLz48L2c+IDwvc3ZnPicsICd0ZXh0L3htbCcpLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUN4QyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FDM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU81RCxNQUFNLE9BQU8saUJBQWlCO0lBR3JCLElBQUksQ0FBQztJQUdMLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFMUIsSUFDVyxjQUFjLENBQUMsS0FBYztRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUdNLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFdkIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVkLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFFMUIsVUFBVSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFB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LE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUMsOFpBQThaLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2hlLENBQUM7SUFDSCxDQUFDO3VHQTVMVSxpQkFBaUI7MkZBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUVBQXlFO29CQUNuRixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBSVEsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssY0FBYztzQkFEeEIsS0FBSztnQkFXQyxlQUFlO3NCQURyQixXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0nO1xuaW1wb3J0IHsgRnNGb3JtQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1iYXNlJztcbmltcG9ydCB7IEZzRm9ybUNvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1jb250YWluZXInO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXQtcmFpc2VkLWJ1dHRvbl0sW21hdC1idXR0b25dLFttYXQtZmxhdC1idXR0b25dLFttYXQtc3Ryb2tlZC1idXR0b25dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRnNCdXR0b25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG5hbWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpcnR5U3VibWl0ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN1Ym1pdERpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc3VibWl0RGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl9hcHBseURpc2FibGVkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1Ym1pdERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdWJtaXREaXNhYmxlZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUudHJhbnNpdGlvbicpXG4gIHB1YmxpYyB0cmFuc2l0aW9uU3R5bGUgPSBudWxsO1xuXG4gIHB1YmxpYyBzdWJtaXQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9zdWJtaXREaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9mb3JtRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNEaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfY29udGFpbmVyID0gaW5qZWN0KEZzRm9ybUNvbnRhaW5lckRpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZm9ybSA9IGluamVjdChGc0Zvcm1EaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX21hdEJ1dHRvbiA9IGluamVjdChNYXRCdXR0b24sIHsgb3B0aW9uYWw6IHRydWUsIGhvc3Q6IHRydWUgfSk7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfZm9ybUJhc2U6IEZzRm9ybUJhc2VEaXJlY3RpdmU7XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3VibWl0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnc3VibWl0JztcbiAgICAvLyBQcmVmZXIgdGhlIGVuY2xvc2luZyBjb250YWluZXIgb3ZlciB0aGUgZm9ybTogdGhlIGZvcm0ncyBvd24gYnV0dG9uXG4gICAgLy8gbWFuYWdlbWVudCAoZGlydHktc3VibWl0IHRyYWNraW5nLCBhY3RpdmVTdWJtaXRCdXR0b24sIHJlc2V0KSByZXNvbHZlcyBpdHNcbiAgICAvLyByZWdpc3RyeSB0aGUgc2FtZSB3YXksIHNvIGJ1dHRvbnMgbXVzdCByZWdpc3RlciB3aXRoIHRoZSBzYW1lIG93bmVyLlxuICAgIC8vIFJlZ2lzdGVyaW5nIHdpdGggdGhlIGZvcm0gd2hpbGUgdGhlIGZvcm0gcmVhZHMgdGhlIGNvbnRhaW5lciBsZWF2ZXMgdGhlXG4gICAgLy8gY29udGFpbmVyJ3MgYnV0dG9uIGxpc3QgZW1wdHkgYW5kIHRoZSBzdWJtaXQgYnV0dG9uIG5ldmVyIGdldHNcbiAgICAvLyBkaXJ0eS1kaXNhYmxlZC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhpcyByZXNvbHZlcyB0aGUgUk9PVCBvZiB0aGUgbGlua2VkIHNldCwgbm90IHRoZSBuZWFyZXN0IGZvcm06IHRoZVxuICAgIC8vIGJ1dHRvbiB0aGF0IHNhdmVzIGEgdGFiJ3MgZm9ybSB0eXBpY2FsbHkgc2l0cyBvdXRzaWRlIGl0LCBkb3duIGluIHRoZVxuICAgIC8vIGRpYWxvZyBmb290ZXIsIGFuZCBkcml2ZXMgdGhlIHdob2xlIGxpbmtlZCBzZXQgZnJvbSB0aGVyZS5cbiAgICB0aGlzLl9mb3JtQmFzZSA9IHRoaXMuX2NvbnRhaW5lciB8fCB0aGlzLl9mb3JtPy5yb290Rm9ybTtcblxuICAgIGlmICh0aGlzLl9mb3JtQmFzZSkge1xuICAgICAgdGhpcy5fZm9ybUJhc2UuYWRkQnV0dG9uKHRoaXMpO1xuXG4gICAgICBpZih0aGlzLnN1Ym1pdCkge1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQmFzZS5hY3RpdmVTdWJtaXRCdXR0b24gPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy5fZm9ybUJhc2UudHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudHJhbnNpdGlvblN0eWxlID0gJ25vbmUnO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25TdHlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbiAmJiAhdGhpcy5fZm9ybUJhc2UuYWN0aXZlU3VibWl0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c0Rpc2FibGVkID0gdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVkO1xuICAgICAgdGhpcy5fZm9ybURpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2FwcGx5RGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX2Zvcm1EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSB0cnVlO1xuICAgICAgdGhpcy5fYXBwbHlEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ3Byb2Nlc3MnKTtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Y2Nlc3MoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygnc3VjY2VzcycpO1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVycm9yKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ2Vycm9yJyk7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Q2xhc3MoY2xzKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5fZ2V0U3ZnKGNscyk7XG4gICAgdGhpcy5fcmVzZXRDbGFzcygpO1xuICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBmcy1mb3JtLXN1Ym1pdC1idXR0b24tJHtjbHN9YCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZChzdmcpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgaWYgKCF0aGlzLl9wcmV2aW91c0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3ZnLWljb24nKVxuICAgICAgLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGVsLnJlbW92ZSgpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9yZXNldENsYXNzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1CYXNlPy5yZW1vdmVCdXR0b24odGhpcyk7XG4gIH1cblxuICAvLyBFZmZlY3RpdmUgZGlzYWJsZWQgY29tYmluZXMgdGhlIGNvbnN1bWVyLWNvbnRyb2xsZWQgc3VibWl0RGlzYWJsZWQgaW5wdXQgd2l0aFxuICAvLyB0aGUgZm9ybSdzIHN1Ym1pdC1saWZlY3ljbGUgc3RhdGUsIHNvIGZvcm0gZW5hYmxlL2Rpc2FibGUgbmV2ZXIgY2xvYmJlcnMgYW5cbiAgLy8gZXhwbGljaXQgW3N1Ym1pdERpc2FibGVkXSBhbmQgdGhlIHR3byBjaGFubmVscyBzdGF5IGluZGVwZW5kZW50LlxuICBwcml2YXRlIF9hcHBseURpc2FibGVkKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMuX3N1Ym1pdERpc2FibGVkIHx8IHRoaXMuX2Zvcm1EaXNhYmxlZDtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q2xhc3MoKSB7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdFxuICAgICAgLnJlbW92ZShcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1zdWNjZXNzJywgXG4gICAgICAgICdmcy1mb3JtLXN1Ym1pdC1idXR0b24tZXJyb3InLCBcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1wcm9jZXNzJyxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTdmcodHlwZSkge1xuICAgIGlmICh0eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8c3ZnIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tc3VjY2Vzc1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2ZXJzaW9uPVwiMS4xXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgc3R5bGU9XCJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM4IDM4O1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgd2lkdGg9XCIzOHB4XCIgaGVpZ2h0PVwiMzhweFwiPlxuICAgICAgPGc+XG4gICAgICAgIDxnIGNsYXNzPVwiY2hlY2tcIj5cbiAgICAgICAgICA8Zz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjkuNiwxMS45Yy0wLjUtMC41LTEuMy0wLjUtMS44LDBMMTYuMywyMy40bC02LjEtNi4xYy0wLjUtMC41LTEuMy0wLjUtMS44LDBzLTAuNSwxLjMsMCwxLjhsNyw3YzAuMywwLjMsMC42LDAuNCwwLjksMC40czAuNy0wLjEsMC45LTAuNGwxMi40LTEyLjRDMzAuMSwxMy4yLDMwLjEsMTIuNCwyOS42LDExLjl6XCIvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPC9zdmc+YCwgJ3RleHQveG1sJykuZmlyc3RDaGlsZDtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhgPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByb2Nlc3NcIiB3aWR0aD1cIjM4XCIgaGVpZ2h0PVwiMzhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPGcgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxIDEpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9XCIuNVwiIGN4PVwiMThcIiBjeT1cIjE4XCIgcj1cIjE4XCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMThcIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDE4IDE4XCIgdG89XCIzNjAgMTggMThcIiBkdXI9XCIuN3NcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8L3N2Zz5gLCAndGV4dC94bWwnKS5maXJzdENoaWxkO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygnPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLWVycm9yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzhweFwiIGhlaWdodD1cIjM4cHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+PGc+PHBhdGggZD1cIk04IDFjMy45IDAgNyAzLjEgNyA3cy0zLjEgNy03IDctNy0zLjEtNy03IDMuMS03IDctN3pNOCAwYy00LjQgMC04IDMuNi04IDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh2MHpcIiBkYXRhLW9yaWdpbmFsPVwiIzQ0NDQ0NFwiIGRhdGEtb2xkX2NvbG9yPVwiIzQ0NDQ0NFwiLz48cGF0aCBkPVwiTTEyLjIgMTAuOGwtMi44LTIuOCAyLjgtMi44LTEuNC0xLjQtMi44IDIuOC0yLjgtMi44LTEuNCAxLjQgMi44IDIuOC0yLjggMi44IDEuNCAxLjQgMi44LTIuOCAyLjggMi44elwiLz48L2c+IDwvc3ZnPicsICd0ZXh0L3htbCcpLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|