ets-fe-ng-sdk 17.0.217 → 17.0.218
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/Shared/components/btn/btn.component.mjs +8 -27
- package/esm2022/lib/Shared/components/btn/btn.service.mjs +43 -47
- package/fesm2022/ets-fe-ng-sdk.mjs +46 -70
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +2 -2
- package/lib/Shared/components/btn/btn.service.d.ts +2 -2
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -7,8 +7,8 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
|
7
7
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
8
8
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
9
9
|
import { NgClass, NgIf, AsyncPipe } from '@angular/common';
|
|
10
|
-
import {
|
|
11
|
-
import { BehaviorSubject,
|
|
10
|
+
import { isEqual } from 'lodash-es';
|
|
11
|
+
import { BehaviorSubject, merge, tap } from 'rxjs';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
import * as i1 from "@angular/material/tooltip";
|
|
14
14
|
import * as i2 from "@angular/material/badge";
|
|
@@ -125,20 +125,20 @@ export class BtnComponent {
|
|
|
125
125
|
set _form(v) {
|
|
126
126
|
this.formSub?.unsubscribe();
|
|
127
127
|
this.form = v;
|
|
128
|
-
this.btnS.setFormState(
|
|
128
|
+
this.btnS.setFormState(this);
|
|
129
129
|
if (this.debug())
|
|
130
130
|
debugger;
|
|
131
131
|
if (v)
|
|
132
|
-
this.formSub = this.btnS.
|
|
132
|
+
this.formSub = v.statusChanges.pipe(tap((r) => this.btnS.setFormState(this))).subscribe(() => { });
|
|
133
133
|
}
|
|
134
134
|
set _forms(v) {
|
|
135
135
|
this.formsSub?.unsubscribe();
|
|
136
136
|
this.forms = v;
|
|
137
|
-
this.btnS.setFormsState(
|
|
137
|
+
this.btnS.setFormsState(this);
|
|
138
138
|
if (this.debug())
|
|
139
139
|
debugger;
|
|
140
140
|
if (v)
|
|
141
|
-
this.formsSub = this.btnS.
|
|
141
|
+
this.formsSub = merge(v.map((f) => f.statusChanges)).pipe(tap((r) => this.btnS.setFormsState(this))).subscribe(() => { });
|
|
142
142
|
}
|
|
143
143
|
/**
|
|
144
144
|
* @deprecated no longer needed to detect the correct spacing between icon and text
|
|
@@ -168,7 +168,6 @@ export class BtnComponent {
|
|
|
168
168
|
this.centerBtn = input(true);
|
|
169
169
|
this.danger = input();
|
|
170
170
|
this.warning = input();
|
|
171
|
-
this.counter = signal(0);
|
|
172
171
|
this.iconBtn = signal(false);
|
|
173
172
|
this.loading = signal(false);
|
|
174
173
|
this._mclass = signal(null);
|
|
@@ -220,29 +219,11 @@ export class BtnComponent {
|
|
|
220
219
|
const disabled = this.disabled(), valid = this.valid(), onFormInvalid = this.onFormInvalid(), form = this.formState(), forms = this.formsState();
|
|
221
220
|
return disabled || !valid || (onFormInvalid == OnFormInvalid.disable && (form?.invalid || form?.pending || forms?.pending)) || false;
|
|
222
221
|
});
|
|
223
|
-
const sub = this.checkFormState$.pipe().subscribe(() => {
|
|
224
|
-
this.checkFormStateSub?.unsubscribe();
|
|
225
|
-
let c = 0;
|
|
226
|
-
this.checkFormStateSub = timer(0, 1000)
|
|
227
|
-
.pipe(tap(() => {
|
|
228
|
-
console.log(++c);
|
|
229
|
-
}), take(3))
|
|
230
|
-
.subscribe(() => {
|
|
231
|
-
this.counter?.set(this.counter() + 1);
|
|
232
|
-
this.formState.set(cloneDeep({
|
|
233
|
-
pending: this.form?.pending,
|
|
234
|
-
dirty: this.form?.dirty,
|
|
235
|
-
invalid: this.form?.invalid,
|
|
236
|
-
pristine: this.form?.pristine,
|
|
237
|
-
valid: this.form?.valid,
|
|
238
|
-
}));
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
222
|
this.destroyRef.onDestroy(() => {
|
|
242
223
|
this.formSub?.unsubscribe();
|
|
243
224
|
this.formsSub?.unsubscribe();
|
|
244
|
-
sub?.unsubscribe();
|
|
245
225
|
this.checkFormStateSub?.unsubscribe();
|
|
226
|
+
this.checkFormsStateSub?.unsubscribe();
|
|
246
227
|
});
|
|
247
228
|
effect(() => {
|
|
248
229
|
const fs = this.formState();
|
|
@@ -337,4 +318,4 @@ var OnFormInvalid;
|
|
|
337
318
|
OnFormInvalid["disable"] = "disable";
|
|
338
319
|
OnFormInvalid["warn"] = "warn";
|
|
339
320
|
})(OnFormInvalid || (OnFormInvalid = {}));
|
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUErQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtB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R25DLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsU0FBUztnQkFNeUIsZ0JBQWdCO3NCQUF4RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUtLLGVBQWU7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUXhCLE1BQU07c0JBQWYsTUFBTTtnQkFDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXOztBQTJGeEIsSUFBSyxhQUdKO0FBSEQsV0FBSyxhQUFhO0lBQ2hCLG9DQUFtQixDQUFBO0lBQ25CLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBSEksYUFBYSxLQUFiLGFBQWEsUUFHakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sU3RhdHVzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24sIGZhTG9jayB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBCdG5TZXJ2aWNlIH0gZnJvbSAnLi9idG4uc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdHJhbnNsYXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQgeyBJY29uVHlwZSwgQnRuVHlwZSwgQnRuR3JvdXAgfSBmcm9tICcuL2J0bi5tb2RlbCc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgaW50ZXJ2YWwsIG1lcmdlLCB0YWtlLCB0YXAsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbmZ1bmN0aW9uIGJvb2xlYW5BdHRyaWJ1dGUyKHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiBib29sZWFuQXR0cmlidXRlKHZhbHVlKTtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1idG4nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnRuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnRuLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIC8vXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBOZ0lmLCBNYXRUb29sdGlwTW9kdWxlLCBNYXRCYWRnZU1vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGUsIFRyYW5zbGF0b3JEaXJlY3RpdmUsIEFzeW5jUGlwZSwgVHJhbnNsYXRlUGlwZV0sXG59KSAvLyBJbmhlcml0ZWRcbmV4cG9ydCBjbGFzcyBCdG5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogVG8gYmUgcGFzc2VkIHdoZW4gdG8gY2hlY2sgZm9yIHNwZWNpZmljIGludmFsaWQgZm9ybSBmaWVsZHMgKi9cbiAgZm9ybVNjaGVtYSA9IGlucHV0PElGb3JtU2NoZW1hW10+KCk7XG4gIGRlYnVnID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZm9ybUlzSW52YWxpZCA9IGNvbXB1dGVkPGJvb2xlYW4+KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1TdGF0ZSgpLFxuICAgICAgICBvbkZvcm1JbnZhbGlkID0gdGhpcy5vbkZvcm1JbnZhbGlkKCksXG4gICAgICAgIGZvcm1TY2hlbWEgPSB0aGlzLmZvcm1TY2hlbWEoKTtcblxuICAgICAgcmV0dXJuIGZvcm0gJiYgZm9ybS5pbnZhbGlkICYmIG9uRm9ybUludmFsaWQgPT0gT25Gb3JtSW52YWxpZC53YXJuICYmIGZvcm1TY2hlbWE/Lmxlbmd0aFxuICAgICAgICA/IGZvcm1TY2hlbWEuc29tZSgoZikgPT4gKDxGb3JtR3JvdXA+Zm9ybSkuY29udHJvbHNbZi5maWVsZD8udG9TdHJpbmcoKV0/LmludmFsaWQpXG4gICAgICAgIDogbnVsbDtcbiAgICB9LFxuICAgIHsgZXF1YWw6IGlzRXF1YWwgfSxcbiAgKTtcbiAgY2VudGVyQnRuID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGRhbmdlciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHdhcm5pbmcgPSBpbnB1dDxib29sZWFuPigpO1xuICBjb3VudGVyID0gc2lnbmFsKDApO1xuXG4gIHByb3RlY3RlZCBpY29uVHlwZTogSWNvblR5cGU7XG4gIGljb25CdG4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgZm9ybXM6IChGb3JtR3JvdXA8YW55PiB8IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBGb3JtQ29udHJvbDxhbnk+IHwgRm9ybUFycmF5PGFueT4pW107XG4gIGZvcm06IEZvcm1Hcm91cDxhbnk+IHwgRm9ybUNvbnRyb2w8YW55PiB8IEZvcm1BcnJheTxhbnk+IHwgQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcblxuICBASW5wdXQoJ2ljb24nKSBzZXQgX2ljb24odjogSWNvblR5cGUpIHtcbiAgICB0aGlzLmljb25UeXBlID0gdjtcbiAgICBjb25zdCByZXMgPSB0aGlzLmJ0blMuZ2V0SWNvbih2KTtcbiAgICBpZiAoIXJlcykgcmV0dXJuO1xuICAgIGlmIChyZXMuaWNvblBvc2l0aW9uID09ICdyaWdodCcpIHtcbiAgICAgIHRoaXMucmlnaHRJY29uLnNldChyZXMuaWNvbik7XG4gICAgICB0aGlzLnJpZ2h0Q3VzdG9tSWNvbi5zZXQocmVzLmljb25TdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxlZnRJY29uLnNldChyZXMuaWNvbik7XG4gICAgICB0aGlzLmxlZnRDdXN0b21JY29uLnNldChyZXMuaWNvblN0cmluZyk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgncmlnaHRJY29uJykgc2V0IF9yaWdodEljb24odjogSWNvblR5cGUpIHtcbiAgICB0aGlzLmljb25UeXBlID0gdjtcbiAgICBjb25zdCByZXMgPSB0aGlzLmJ0blMuZ2V0SWNvbih2KTtcbiAgICB0aGlzLnJpZ2h0SWNvbi5zZXQocmVzLmljb24pO1xuICAgIHRoaXMucmlnaHRDdXN0b21JY29uLnNldChyZXMuaWNvblN0cmluZyk7XG4gIH1cbiAgQElucHV0KCdsZWZ0SWNvbicpIHNldCBfbGVmdEljb24odjogSWNvblR5cGUpIHtcbiAgICB0aGlzLmljb25UeXBlID0gdjtcbiAgICBjb25zdCByZXMgPSB0aGlzLmJ0blMuZ2V0SWNvbih2KTtcbiAgICB0aGlzLmxlZnRJY29uLnNldChyZXMuaWNvbik7XG4gICAgdGhpcy5sZWZ0Q3VzdG9tSWNvbi5zZXQocmVzLmljb25TdHJpbmcpO1xuICB9XG5cbiAgQElucHV0KCd0eXBlJykgc2V0IF90eXBlKHY6IEJ0blR5cGUpIHtcbiAgICBjb25zdCB7IF9pY29uLCBfbWNsYXNzLCBfdHlwZSB9ID0gdGhpcy5idG5TLmdldFR5cGUodik7XG4gICAgdGhpcy5fbWNsYXNzLnVwZGF0ZSgobWNsYXNzKSA9PiBfbWNsYXNzIHx8IG1jbGFzcyk7XG4gICAgaWYgKF9pY29uKSB0aGlzLl9pY29uID0gX2ljb247XG4gICAgaWYgKF90eXBlKSB0aGlzLl90eXBlID0gX3R5cGU7XG4gIH1cblxuICBASW5wdXQoJ2dyb3VwJykgc2V0IF9ncm91cCh2OiBCdG5Hcm91cCkge1xuICAgIHN3aXRjaCAodikge1xuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdvdXRsaW5lJztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdhZGQnO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Nsb25lJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2Nsb25lJztcbiAgICAgICAgdGhpcy5fdGV4dC5zZXQoJ0Nsb25lJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3JlYXRlJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdvdXRsaW5lJztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdhZGQnO1xuICAgICAgICB0aGlzLl90ZXh0LnNldCgnQ3JlYXRlJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ2Rhbmdlci1vdXRsaW5lJztcbiAgICAgICAgdGhpcy5jdXN0b21JY29uID0gdGhpcy5idG5TLmdldEljb24oJ2Nsb3NlJykuaWNvblN0cmluZztcbiAgICAgICAgdGhpcy5pY29uQnRuLnNldCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ2Rhbmdlci1vdXRsaW5lJztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdkZWxldGUnO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rvd25sb2FkJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2Rvd25sb2FkJztcbiAgICAgICAgdGhpcy5pY29uQnRuLnNldCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlZGl0JzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2VkaXQnO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuY3VzdG9tSWNvbiA9ICdmYSBmYS1leWUnO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlYXJjaCc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdzZWFyY2gnO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnc2hvdyc7XG4gICAgICAgIHRoaXMuX3RleHQuc2V0KCdTaG93Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3VibWl0JzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLl9pY29uID0gJ3NhdmUnO1xuICAgICAgICB0aGlzLl90ZXh0LnNldCgnU3VibWl0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2F2ZSc6XG4gICAgICAgIHRoaXMuX2dyb3VwID0gJ3N1Ym1pdCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBfbWNsYXNzID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XG4gIGFjdGlvblR5cGUgPSBpbnB1dDwnc3VibWl0JyB8ICdidXR0b24nIHwgJ3Jlc2V0Jz4oJ2J1dHRvbicpO1xuICBhbmltYXRlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiBhcyB1bmRlZmluZWQgfSk7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZTIgfSkgZXhjbHVkZUxvZ2dpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9nZ2luZ1ZhbHVlOiBzdHJpbmc7XG4gIGJhZGdlID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyPihudWxsKTtcbiAgY2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsZWZ0IHNpZGUgaWNvblxuICAgKi9cbiAgQElucHV0KCkgc2V0IGN1c3RvbUljb24odjogc3RyaW5nKSB7XG4gICAgdGhpcy5sZWZ0Q3VzdG9tSWNvbi5zZXQodik7XG4gIH1cbiAgQElucHV0KHsgYWxpYXM6ICdkaXNhYmxlZCcgfSkgc2V0IF9kaXNhYmxlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQodiB8fCBmYWxzZSk7XG4gIH1cbiAgLy8gZm9ybVN0YXRlID0gY29tcHV0ZWQ8SUZvcm1TdGF0ZT4oKCkgPT4ge1xuICAvLyAgIGNvbnN0IGQgPSB0aGlzLmNoZWNrRm9ybVN0YXRlKCk7XG5cbiAgLy8gICBpZiAodGhpcy5kZWJ1ZygpKSB7XG4gIC8vICAgICBkZWJ1Z2dlcjtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHtcbiAgLy8gICAgIHBlbmRpbmc6IHRoaXMuZm9ybT8ucGVuZGluZyxcbiAgLy8gICAgIGRpcnR5OiB0aGlzLmZvcm0/LmRpcnR5LFxuICAvLyAgICAgaW52YWxpZDogdGhpcy5mb3JtPy5pbnZhbGlkLFxuICAvLyAgICAgcHJpc3RpbmU6IHRoaXMuZm9ybT8ucHJpc3RpbmUsXG4gIC8vICAgICB2YWxpZDogdGhpcy5mb3JtPy52YWxpZCxcbiAgLy8gICB9O1xuICAvLyB9KTtcbiAgZm9ybVN0YXRlID0gc2lnbmFsPElGb3JtU3RhdGU+KHt9KTtcbiAgY2hlY2tGb3JtU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRm9ybVN0YXRlPih7fSk7XG4gIHByb3RlY3RlZCBmb3JtU3ViOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBmb3Jtc1N1YjogU3Vic2NyaXB0aW9uO1xuICBASW5wdXQoJ2Zvcm0nKSBzZXQgX2Zvcm0odjogRm9ybUdyb3VwIHwgRm9ybUNvbnRyb2wgfCBGb3JtQXJyYXkgfCBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICB0aGlzLmZvcm1TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5mb3JtID0gdjtcbiAgICB0aGlzLmJ0blMuc2V0Rm9ybVN0YXRlKHYsIHRoaXMpO1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGlmICh2KSB0aGlzLmZvcm1TdWIgPSB0aGlzLmJ0blMuaGFuZGxlRm9ybSh2LCB0aGlzKTtcbiAgfVxuXG4gIGZvcm1zU3RhdGUgPSBzaWduYWw8T21pdDxJRm9ybVN0YXRlLCAnc3RhdHVzJz4+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnZm9ybXMnKSBzZXQgX2Zvcm1zKHY6IChGb3JtR3JvdXAgfCBGb3JtQ29udHJvbCB8IEZvcm1BcnJheSB8IEFic3RyYWN0Q29udHJvbClbXSkge1xuICAgIHRoaXMuZm9ybXNTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5mb3JtcyA9IHY7XG4gICAgdGhpcy5idG5TLnNldEZvcm1zU3RhdGUodiwgdGhpcyk7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgaWYgKHYpIHRoaXMuZm9ybXNTdWIgPSB0aGlzLmJ0blMuaGFuZGxlRm9ybXModiwgdGhpcyk7XG4gIH1cbiAgaGVscCA9IGlucHV0PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBubyBsb25nZXIgbmVlZGVkIHRvIGRldGVjdCB0aGUgY29ycmVjdCBzcGFjaW5nIGJldHdlZW4gaWNvbiBhbmQgdGV4dFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiwgYWxpYXM6ICdpY29uQnRuJyB9KSBzZXQgX2ljb25CdG4odjogYm9vbGVhbikge1xuICAgIHRoaXMuaWNvbkJ0bi5zZXQodiB8fCBmYWxzZSk7XG4gIH1cbiAgQElucHV0KCdsb2FkaW5nJykgc2V0IF9sb2FkaW5nKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHYpO1xuICB9XG4gIG1jbGFzcyA9IGlucHV0PHN0cmluZz4obnVsbCk7XG4gIHNob3dIZWxwSWNvbiA9IGlucHV0KHRydWUpO1xuICByaWdodEljb24gPSBzaWduYWw8SWNvbkRlZmluaXRpb24+KG51bGwpO1xuICBASW5wdXQoeyBhbGlhczogJ3JpZ2h0Q3VzdG9tSWNvbicgfSkgc2V0IF9yaWdodEN1c3RvbUljb24odjogc3RyaW5nKSB7XG4gICAgdGhpcy5yaWdodEN1c3RvbUljb24uc2V0KHYpO1xuICB9XG4gIHJpZ2h0Q3VzdG9tSWNvbiA9IHNpZ25hbDxzdHJpbmc+KG51bGwpO1xuICBsZWZ0SWNvbiA9IHNpZ25hbDxJY29uRGVmaW5pdGlvbj4obnVsbCk7XG4gIEBJbnB1dCh7IGFsaWFzOiAnbGVmdEN1c3RvbUljb24nIH0pIHNldCBfbGVmdEN1c3RvbUljb24odjogc3RyaW5nKSB7XG4gICAgdGhpcy5sZWZ0Q3VzdG9tSWNvbi5zZXQodik7XG4gIH1cbiAgbGVmdEN1c3RvbUljb24gPSBzaWduYWw8c3RyaW5nPihudWxsKTtcbiAgdGV4dCA9IGlucHV0PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gIHZhbGlkID0gaW5wdXQodHJ1ZSk7XG4gIG1pbmkgPSBpbnB1dDxib29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUyIGFzIHVuZGVmaW5lZCB9KTtcbiAgb25Gb3JtSW52YWxpZCA9IGlucHV0PGtleW9mIHR5cGVvZiBPbkZvcm1JbnZhbGlkPihPbkZvcm1JbnZhbGlkLmRpc2FibGUpO1xuICBAT3V0cHV0KCkgbWNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdpbm5lclRleHQnKSBpbm5lclRleHQ6IEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50PjtcbiAgbG9ja2VkID0gc2lnbmFsKGZhTG9jayk7XG4gIHByb3RlY3RlZCBfdGV4dCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgZGlzYWJsZWQgPSBzaWduYWw8Ym9vbGVhbiB8IG51bGw+KHVuZGVmaW5lZCk7XG4gIGNvbXB1dGVkVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMudGV4dCgpLFxuICAgICAgbG9jYWwgPSB0aGlzLl90ZXh0KCk7XG4gICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBsb2NhbCA6IGlucHV0O1xuICB9KTtcbiAgY2hlY2tGb3JtU3RhdGVTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGJ0blMgPSBpbmplY3QoQnRuU2VydmljZSk7XG4gIHB1YmxpYyBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuY2hlY2tGb3JtU3RhdGUkLnBpcGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jaGVja0Zvcm1TdGF0ZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIGxldCBjID0gMDtcbiAgICAgIHRoaXMuY2hlY2tGb3JtU3RhdGVTdWIgPSB0aW1lcigwLCAxMDAwKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coKytjKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlKDMpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY291bnRlcj8uc2V0KHRoaXMuY291bnRlcigpICsgMSk7XG4gICAgICAgICAgdGhpcy5mb3JtU3RhdGUuc2V0KFxuICAgICAgICAgICAgY2xvbmVEZWVwKHtcbiAgICAgICAgICAgICAgcGVuZGluZzogdGhpcy5mb3JtPy5wZW5kaW5nLFxuICAgICAgICAgICAgICBkaXJ0eTogdGhpcy5mb3JtPy5kaXJ0eSxcbiAgICAgICAgICAgICAgaW52YWxpZDogdGhpcy5mb3JtPy5pbnZhbGlkLFxuICAgICAgICAgICAgICBwcmlzdGluZTogdGhpcy5mb3JtPy5wcmlzdGluZSxcbiAgICAgICAgICAgICAgdmFsaWQ6IHRoaXMuZm9ybT8udmFsaWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuZm9ybXNTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICBzdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNoZWNrRm9ybVN0YXRlU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBmcyA9IHRoaXMuZm9ybVN0YXRlKCk7XG4gICAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBldmVyeSBjaGVjayBvZiB0aGUgY29tcG9uZW50J3Mgdmlldy4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCcgdG8gdGhlIGNsYXNzLlxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9tY2xhc3MoKSkgdGhpcy5fdHlwZSA9IHRoaXMuYnRuUy5kZWZhdWx0VHlwZTtcbiAgfVxuXG4gIHNldExvYWRlcih2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHZhbCk7XG4gIH1cbiAgZ2V0IGV4dHJhY3RUZXh0KCkge1xuICAgIHJldHVybiBgQ2xpY2tlZCBvbiAke3RoaXMudGV4dCgpIHx8IHRoaXMuaW5uZXJUZXh0Py5uYXRpdmVFbGVtZW50Py5pbm5lckhUTUwgfHwgdGhpcy5pY29uVHlwZSB8fCAnYnV0dG9uJ30gJHtcbiAgICAgIHRoaXMubG9nZ2luZ1ZhbHVlID8gJ1xcblRyYWNrIHZhbHVlOiAnICsgdGhpcy5sb2dnaW5nVmFsdWUgOiAnJ1xuICAgIH1gO1xuICB9XG4gIGNsaWNrKCRldmVudCkge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpIHx8IHRoaXMubG9hZGluZygpKSByZXR1cm47XG4gICAgdGhpcy5tY2xpY2suZW1pdCgkZXZlbnQpO1xuICAgIHRoaXMuYnRuUy5sb2dDbGljayh0aGlzKTtcbiAgfVxuXG4gIGlzRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKCksXG4gICAgICB2YWxpZCA9IHRoaXMudmFsaWQoKSxcbiAgICAgIG9uRm9ybUludmFsaWQgPSB0aGlzLm9uRm9ybUludmFsaWQoKSxcbiAgICAgIGZvcm0gPSB0aGlzLmZvcm1TdGF0ZSgpLFxuICAgICAgZm9ybXMgPSB0aGlzLmZvcm1zU3RhdGUoKTtcbiAgICByZXR1cm4gZGlzYWJsZWQgfHwgIXZhbGlkIHx8IChvbkZvcm1JbnZhbGlkID09IE9uRm9ybUludmFsaWQuZGlzYWJsZSAmJiAoZm9ybT8uaW52YWxpZCB8fCBmb3JtPy5wZW5kaW5nIHx8IGZvcm1zPy5wZW5kaW5nKSkgfHwgZmFsc2U7XG4gIH0pO1xuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQodHJ1ZSk7XG4gIH1cblxuICBlbmFibGUoKSB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQoZmFsc2UpO1xuICB9XG59XG5lbnVtIE9uRm9ybUludmFsaWQge1xuICBkaXNhYmxlID0gJ2Rpc2FibGUnLFxuICB3YXJuID0gJ3dhcm4nLFxufVxuaW50ZXJmYWNlIElGb3JtU3RhdGUge1xuICBwZW5kaW5nPzogYm9vbGVhbjtcbiAgZGlydHk/OiBib29sZWFuO1xuICBpbnZhbGlkPzogYm9vbGVhbjtcbiAgcHJpc3RpbmU/OiBib29sZWFuO1xuICB2YWxpZD86IGJvb2xlYW47XG4gIHN0YXR1cz86IEZvcm1Db250cm9sU3RhdHVzO1xufVxuIiwiPHNwYW5cbiAgY2xhc3M9XCJ7eyBjbGFzcygpIH19ICBkLWZsZXggIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZCgpLCBtaW5pOiBtaW5pKCkgfVwiXG4gIChjbGljayk9XCJidG5TLmNoZWNrRm9ybSh0aGlzKVwiPlxuICBAaWYgKHNob3dIZWxwSWNvbigpICYmIGhlbHAoKSkge1xuICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mby1jaXJjbGUgbWUtMiB0ZXh0LXByaW1hcnlcIiBbbWF0VG9vbHRpcF09XCJoZWxwKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luY1wiPjwvaT5cbiAgfVxuICA8YnV0dG9uXG4gICAgdHlwZT1cInt7IGFjdGlvblR5cGUoKSB9fVwiXG4gICAgY2xhc3M9XCJ7eyBtY2xhc3MoKSB9fSB7eyBfbWNsYXNzKCkgfX0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBcIlxuICAgIFttYXRCYWRnZV09XCJiYWRnZSgpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICBjaGFuZ2Vjb2xvcjogdmFsaWQoKSxcbiAgICAgICdidG4tcmFpc2VkJzogYW5pbWF0ZSgpLFxuICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoKSxcbiAgICAgIGlzRGFuZ2VyOiBkYW5nZXIoKSxcbiAgICAgIGlzV2FybmluZzogd2FybmluZygpLFxuICAgICAgaW52YWxpZDogZm9ybUlzSW52YWxpZCgpLFxuICAgICAgJ2p1c3RpZnktY29udGVudC1jZW50ZXInOiBjZW50ZXJCdG4oKVxuICAgIH1cIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgIChjbGljayk9XCJjbGljaygkZXZlbnQpXCJcbiAgICBbbWF0VG9vbHRpcF09XCJzaG93SGVscEljb24oKSA/IG51bGwgOiAoaGVscCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMpXCI+XG4gICAgQGlmICghbG9hZGluZygpKSB7XG4gICAgICBAaWYgKGxlZnRJY29uKCkpIHtcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXNEaXNhYmxlZCgpID8gbG9ja2VkKCkgOiBsZWZ0SWNvbigpXCI+PC9mYS1pY29uPlxuICAgICAgfSBAZWxzZSBpZiAobGVmdEN1c3RvbUljb24oKSkge1xuICAgICAgICA8aSBjbGFzcz1cInt7IGxlZnRDdXN0b21JY29uKCkgfX1cIj48L2k+XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmIChjb21wdXRlZFRleHQoKSkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJcIiBbbmdDbGFzc109XCJ7ICdtcy0xJzogbGVmdEljb24oKSB8fCBsZWZ0Q3VzdG9tSWNvbigpLCAnbWUtMSc6IHJpZ2h0SWNvbigpIHx8IHJpZ2h0Q3VzdG9tSWNvbigpIH1cIj5cbiAgICAgICAge3sgY29tcHV0ZWRUZXh0KCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCIgXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdtcy0xJzogaW5uZXJUZXh0LmlubmVyVGV4dCAmJiAobGVmdEljb24oKSB8fCBsZWZ0Q3VzdG9tSWNvbigpKSxcbiAgICAgICAgICAnbWUtMSc6IGlubmVyVGV4dC5pbm5lclRleHQgJiYgKHJpZ2h0SWNvbigpIHx8IHJpZ2h0Q3VzdG9tSWNvbigpKVxuICAgICAgICB9XCJcbiAgICAgICAgI2lubmVyVGV4dFxuICAgICAgICBhcHBUcmFuc2xhdG9yPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuXG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBtcy17eyBpY29uQnRuKCkgPyAnJyA6ICcyJyB9fSBmYS1zcGluXCI+PC9zcGFuPlxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIChyaWdodEljb24oKSkge1xuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpc0Rpc2FibGVkKCkgPyBsb2NrZWQoKSA6IHJpZ2h0SWNvbigpXCI+PC9mYS1pY29uPlxuICAgICAgfSBAZWxzZSBpZiAocmlnaHRDdXN0b21JY29uKCkpIHtcbiAgICAgICAgPGkgY2xhc3M9XCJ7eyByaWdodEN1c3RvbUljb24oKSB9fVwiPjwvaT5cbiAgICAgIH1cbiAgICB9XG4gIDwvYnV0dG9uPlxuPC9zcGFuPlxuIl19
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczRCxPQUFPLEVBQWEsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQXdDLEtBQUssRUFBUSxHQUFHLEVBQVMsTUFBTSxNQUFNLENB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QyxNQUFNO2dCQU9PLE1BQU07c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFpRTJCLGNBQWM7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQzlCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTU8sVUFBVTtzQkFBdEIsS0FBSztnQkFHNEIsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBcUJULEtBQUs7c0JBQXZCLEtBQUs7dUJBQUMsTUFBTTtnQkFTTyxNQUFNO3NCQUF6QixLQUFLO3VCQUFDLE9BQU87Z0JBV2lELFFBQVE7c0JBQXRFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFHbkMsUUFBUTtzQkFBN0IsS0FBSzt1QkFBQyxTQUFTO2dCQU15QixnQkFBZ0I7c0JBQXhELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0JBS0ssZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFReEIsTUFBTTtzQkFBZixNQUFNO2dCQUNpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7O0FBcUV4QixJQUFLLGFBR0o7QUFIRCxXQUFLLGFBQWE7SUFDaEIsb0NBQW1CLENBQUE7SUFDbkIsOEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFISSxhQUFhLEtBQWIsYUFBYSxRQUdqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2xTdGF0dXMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJY29uRGVmaW5pdGlvbiwgZmFMb2NrIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IEJ0blNlcnZpY2UgfSBmcm9tICcuL2J0bi5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90cmFuc2xhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElGb3JtU2NoZW1hIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tc2NoZW1hLm1vZGVsJztcbmltcG9ydCB7IEljb25UeXBlLCBCdG5UeXBlLCBCdG5Hcm91cCB9IGZyb20gJy4vYnRuLm1vZGVsJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lLCBpbnRlcnZhbCwgbWVyZ2UsIHRha2UsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuZnVuY3Rpb24gYm9vbGVhbkF0dHJpYnV0ZTIodmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpO1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJ0bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9idG4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9idG4uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gLy9cbiAgaW1wb3J0czogW05nQ2xhc3MsIE5nSWYsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdEJhZGdlTW9kdWxlLCBGb250QXdlc29tZU1vZHVsZSwgVHJhbnNsYXRvckRpcmVjdGl2ZSwgQXN5bmNQaXBlLCBUcmFuc2xhdGVQaXBlXSxcbn0pIC8vIEluaGVyaXRlZFxuZXhwb3J0IGNsYXNzIEJ0bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKiBUbyBiZSBwYXNzZWQgd2hlbiB0byBjaGVjayBmb3Igc3BlY2lmaWMgaW52YWxpZCBmb3JtIGZpZWxkcyAqL1xuICBmb3JtU2NoZW1hID0gaW5wdXQ8SUZvcm1TY2hlbWFbXT4oKTtcbiAgZGVidWcgPSBpbnB1dDxib29sZWFuPigpO1xuICBmb3JtSXNJbnZhbGlkID0gY29tcHV0ZWQ8Ym9vbGVhbj4oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgICAgIG9uRm9ybUludmFsaWQgPSB0aGlzLm9uRm9ybUludmFsaWQoKSxcbiAgICAgICAgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpO1xuXG4gICAgICByZXR1cm4gZm9ybSAmJiBmb3JtLmludmFsaWQgJiYgb25Gb3JtSW52YWxpZCA9PSBPbkZvcm1JbnZhbGlkLndhcm4gJiYgZm9ybVNjaGVtYT8ubGVuZ3RoXG4gICAgICAgID8gZm9ybVNjaGVtYS5zb21lKChmKSA9PiAoPEZvcm1Hcm91cD5mb3JtKS5jb250cm9sc1tmLmZpZWxkPy50b1N0cmluZygpXT8uaW52YWxpZClcbiAgICAgICAgOiBudWxsO1xuICAgIH0sXG4gICAgeyBlcXVhbDogaXNFcXVhbCB9LFxuICApO1xuICBjZW50ZXJCdG4gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgZGFuZ2VyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgd2FybmluZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIC8vIGNvdW50ZXIgPSBzaWduYWwoMCk7XG5cbiAgcHJvdGVjdGVkIGljb25UeXBlOiBJY29uVHlwZTtcbiAgaWNvbkJ0biA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBmb3JtczogKEZvcm1Hcm91cDxhbnk+IHwgQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB8IEZvcm1Db250cm9sPGFueT4gfCBGb3JtQXJyYXk8YW55PilbXTtcbiAgZm9ybTogRm9ybUdyb3VwPGFueT4gfCBGb3JtQ29udHJvbDxhbnk+IHwgRm9ybUFycmF5PGFueT4gfCBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuXG4gIEBJbnB1dCgnaWNvbicpIHNldCBfaWNvbih2OiBJY29uVHlwZSkge1xuICAgIHRoaXMuaWNvblR5cGUgPSB2O1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuYnRuUy5nZXRJY29uKHYpO1xuICAgIGlmICghcmVzKSByZXR1cm47XG4gICAgaWYgKHJlcy5pY29uUG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xuICAgICAgdGhpcy5yaWdodEljb24uc2V0KHJlcy5pY29uKTtcbiAgICAgIHRoaXMucmlnaHRDdXN0b21JY29uLnNldChyZXMuaWNvblN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGVmdEljb24uc2V0KHJlcy5pY29uKTtcbiAgICAgIHRoaXMubGVmdEN1c3RvbUljb24uc2V0KHJlcy5pY29uU3RyaW5nKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCdyaWdodEljb24nKSBzZXQgX3JpZ2h0SWNvbih2OiBJY29uVHlwZSkge1xuICAgIHRoaXMuaWNvblR5cGUgPSB2O1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuYnRuUy5nZXRJY29uKHYpO1xuICAgIHRoaXMucmlnaHRJY29uLnNldChyZXMuaWNvbik7XG4gICAgdGhpcy5yaWdodEN1c3RvbUljb24uc2V0KHJlcy5pY29uU3RyaW5nKTtcbiAgfVxuICBASW5wdXQoJ2xlZnRJY29uJykgc2V0IF9sZWZ0SWNvbih2OiBJY29uVHlwZSkge1xuICAgIHRoaXMuaWNvblR5cGUgPSB2O1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuYnRuUy5nZXRJY29uKHYpO1xuICAgIHRoaXMubGVmdEljb24uc2V0KHJlcy5pY29uKTtcbiAgICB0aGlzLmxlZnRDdXN0b21JY29uLnNldChyZXMuaWNvblN0cmluZyk7XG4gIH1cblxuICBASW5wdXQoJ3R5cGUnKSBzZXQgX3R5cGUodjogQnRuVHlwZSkge1xuICAgIGNvbnN0IHsgX2ljb24sIF9tY2xhc3MsIF90eXBlIH0gPSB0aGlzLmJ0blMuZ2V0VHlwZSh2KTtcbiAgICB0aGlzLl9tY2xhc3MudXBkYXRlKChtY2xhc3MpID0+IF9tY2xhc3MgfHwgbWNsYXNzKTtcbiAgICBpZiAoX2ljb24pIHRoaXMuX2ljb24gPSBfaWNvbjtcbiAgICBpZiAoX3R5cGUpIHRoaXMuX3R5cGUgPSBfdHlwZTtcbiAgfVxuXG4gIEBJbnB1dCgnZ3JvdXAnKSBzZXQgX2dyb3VwKHY6IEJ0bkdyb3VwKSB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlICdhZGQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ291dGxpbmUnO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2FkZCc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvbmUnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnY2xvbmUnO1xuICAgICAgICB0aGlzLl90ZXh0LnNldCgnQ2xvbmUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ291dGxpbmUnO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2FkZCc7XG4gICAgICAgIHRoaXMuX3RleHQuc2V0KCdDcmVhdGUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnZGFuZ2VyLW91dGxpbmUnO1xuICAgICAgICB0aGlzLmN1c3RvbUljb24gPSB0aGlzLmJ0blMuZ2V0SWNvbignY2xvc2UnKS5pY29uU3RyaW5nO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnZGFuZ2VyLW91dGxpbmUnO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2RlbGV0ZSc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZG93bmxvYWQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnZG93bmxvYWQnO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnZWRpdCc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5jdXN0b21JY29uID0gJ2ZhIGZhLWV5ZSc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VhcmNoJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLl9pY29uID0gJ3NlYXJjaCc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2hvdyc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdzaG93JztcbiAgICAgICAgdGhpcy5fdGV4dC5zZXQoJ1Nob3cnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnc2F2ZSc7XG4gICAgICAgIHRoaXMuX3RleHQuc2V0KCdTdWJtaXQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5fZ3JvdXAgPSAnc3VibWl0JztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIF9tY2xhc3MgPSBzaWduYWw8c3RyaW5nPihudWxsKTtcbiAgYWN0aW9uVHlwZSA9IGlucHV0PCdzdWJtaXQnIHwgJ2J1dHRvbicgfCAncmVzZXQnPignYnV0dG9uJyk7XG4gIGFuaW1hdGUgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUyIGFzIHVuZGVmaW5lZCB9KTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiB9KSBleGNsdWRlTG9nZ2luZyA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2dnaW5nVmFsdWU6IHN0cmluZztcbiAgYmFkZ2UgPSBpbnB1dDxzdHJpbmcgfCBudW1iZXI+KG51bGwpO1xuICBjbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGxlZnQgc2lkZSBpY29uXG4gICAqL1xuICBASW5wdXQoKSBzZXQgY3VzdG9tSWNvbih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxlZnRDdXN0b21JY29uLnNldCh2KTtcbiAgfVxuICBASW5wdXQoeyBhbGlhczogJ2Rpc2FibGVkJyB9KSBzZXQgX2Rpc2FibGVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldCh2IHx8IGZhbHNlKTtcbiAgfVxuICAvLyBmb3JtU3RhdGUgPSBjb21wdXRlZDxJRm9ybVN0YXRlPigoKSA9PiB7XG4gIC8vICAgY29uc3QgZCA9IHRoaXMuY2hlY2tGb3JtU3RhdGUoKTtcblxuICAvLyAgIGlmICh0aGlzLmRlYnVnKCkpIHtcbiAgLy8gICAgIGRlYnVnZ2VyO1xuICAvLyAgIH1cbiAgLy8gICByZXR1cm4ge1xuICAvLyAgICAgcGVuZGluZzogdGhpcy5mb3JtPy5wZW5kaW5nLFxuICAvLyAgICAgZGlydHk6IHRoaXMuZm9ybT8uZGlydHksXG4gIC8vICAgICBpbnZhbGlkOiB0aGlzLmZvcm0/LmludmFsaWQsXG4gIC8vICAgICBwcmlzdGluZTogdGhpcy5mb3JtPy5wcmlzdGluZSxcbiAgLy8gICAgIHZhbGlkOiB0aGlzLmZvcm0/LnZhbGlkLFxuICAvLyAgIH07XG4gIC8vIH0pO1xuICBmb3JtU3RhdGUgPSBzaWduYWw8SUZvcm1TdGF0ZT4oe30pO1xuICBjaGVja0Zvcm1TdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGb3JtU3RhdGU+KHt9KTtcbiAgcHJvdGVjdGVkIGZvcm1TdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGZvcm1zU3ViOiBTdWJzY3JpcHRpb247XG4gIEBJbnB1dCgnZm9ybScpIHNldCBfZm9ybSh2OiBGb3JtR3JvdXAgfCBGb3JtQ29udHJvbCB8IEZvcm1BcnJheSB8IEFic3RyYWN0Q29udHJvbCkge1xuICAgIHRoaXMuZm9ybVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmZvcm0gPSB2O1xuICAgIHRoaXMuYnRuUy5zZXRGb3JtU3RhdGUodGhpcyk7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgaWYgKHYpIHRoaXMuZm9ybVN1YiA9IHYuc3RhdHVzQ2hhbmdlcy5waXBlKHRhcCgocikgPT4gdGhpcy5idG5TLnNldEZvcm1TdGF0ZSh0aGlzKSkpLnN1YnNjcmliZSgoKSA9PiB7fSk7XG4gIH1cblxuICBmb3Jtc1N0YXRlID0gc2lnbmFsPE9taXQ8SUZvcm1TdGF0ZSwgJ3N0YXR1cyc+Pih1bmRlZmluZWQpO1xuICBASW5wdXQoJ2Zvcm1zJykgc2V0IF9mb3Jtcyh2OiAoRm9ybUdyb3VwIHwgRm9ybUNvbnRyb2wgfCBGb3JtQXJyYXkgfCBBYnN0cmFjdENvbnRyb2wpW10pIHtcbiAgICB0aGlzLmZvcm1zU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZm9ybXMgPSB2O1xuICAgIHRoaXMuYnRuUy5zZXRGb3Jtc1N0YXRlKCB0aGlzKTtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBpZiAodikgdGhpcy5mb3Jtc1N1YiA9ICAgbWVyZ2Uodi5tYXAoKGYpID0+IGYuc3RhdHVzQ2hhbmdlcykpLnBpcGUodGFwKChyKSA9PiB0aGlzLmJ0blMuc2V0Rm9ybXNTdGF0ZSh0aGlzKSkpLnN1YnNjcmliZSgoKSA9PiB7fSk7XG4gIH1cbiAgaGVscCA9IGlucHV0PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBubyBsb25nZXIgbmVlZGVkIHRvIGRldGVjdCB0aGUgY29ycmVjdCBzcGFjaW5nIGJldHdlZW4gaWNvbiBhbmQgdGV4dFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiwgYWxpYXM6ICdpY29uQnRuJyB9KSBzZXQgX2ljb25CdG4odjogYm9vbGVhbikge1xuICAgIHRoaXMuaWNvbkJ0bi5zZXQodiB8fCBmYWxzZSk7XG4gIH1cbiAgQElucHV0KCdsb2FkaW5nJykgc2V0IF9sb2FkaW5nKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHYpO1xuICB9XG4gIG1jbGFzcyA9IGlucHV0PHN0cmluZz4obnVsbCk7XG4gIHNob3dIZWxwSWNvbiA9IGlucHV0KHRydWUpO1xuICByaWdodEljb24gPSBzaWduYWw8SWNvbkRlZmluaXRpb24+KG51bGwpO1xuICBASW5wdXQoeyBhbGlhczogJ3JpZ2h0Q3VzdG9tSWNvbicgfSkgc2V0IF9yaWdodEN1c3RvbUljb24odjogc3RyaW5nKSB7XG4gICAgdGhpcy5yaWdodEN1c3RvbUljb24uc2V0KHYpO1xuICB9XG4gIHJpZ2h0Q3VzdG9tSWNvbiA9IHNpZ25hbDxzdHJpbmc+KG51bGwpO1xuICBsZWZ0SWNvbiA9IHNpZ25hbDxJY29uRGVmaW5pdGlvbj4obnVsbCk7XG4gIEBJbnB1dCh7IGFsaWFzOiAnbGVmdEN1c3RvbUljb24nIH0pIHNldCBfbGVmdEN1c3RvbUljb24odjogc3RyaW5nKSB7XG4gICAgdGhpcy5sZWZ0Q3VzdG9tSWNvbi5zZXQodik7XG4gIH1cbiAgbGVmdEN1c3RvbUljb24gPSBzaWduYWw8c3RyaW5nPihudWxsKTtcbiAgdGV4dCA9IGlucHV0PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gIHZhbGlkID0gaW5wdXQodHJ1ZSk7XG4gIG1pbmkgPSBpbnB1dDxib29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUyIGFzIHVuZGVmaW5lZCB9KTtcbiAgb25Gb3JtSW52YWxpZCA9IGlucHV0PGtleW9mIHR5cGVvZiBPbkZvcm1JbnZhbGlkPihPbkZvcm1JbnZhbGlkLmRpc2FibGUpO1xuICBAT3V0cHV0KCkgbWNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdpbm5lclRleHQnKSBpbm5lclRleHQ6IEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50PjtcbiAgbG9ja2VkID0gc2lnbmFsKGZhTG9jayk7XG4gIHByb3RlY3RlZCBfdGV4dCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgZGlzYWJsZWQgPSBzaWduYWw8Ym9vbGVhbiB8IG51bGw+KHVuZGVmaW5lZCk7XG4gIGNvbXB1dGVkVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMudGV4dCgpLFxuICAgICAgbG9jYWwgPSB0aGlzLl90ZXh0KCk7XG4gICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBsb2NhbCA6IGlucHV0O1xuICB9KTtcbiAgY2hlY2tGb3JtU3RhdGVTdWI6IFN1YnNjcmlwdGlvbjtcbiAgY2hlY2tGb3Jtc1N0YXRlU3ViOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBidG5TID0gaW5qZWN0KEJ0blNlcnZpY2UpO1xuICBwdWJsaWMgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgXG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm1TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmZvcm1zU3ViPy51bnN1YnNjcmliZSgpOyBcbiAgICAgIHRoaXMuY2hlY2tGb3JtU3RhdGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNoZWNrRm9ybXNTdGF0ZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZnMgPSB0aGlzLmZvcm1TdGF0ZSgpO1xuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgYWZ0ZXIgZXZlcnkgY2hlY2sgb2YgdGhlIGNvbXBvbmVudCdzIHZpZXcuIEFwcGxpZXMgdG8gY29tcG9uZW50cyBvbmx5LlxuICAgIC8vQWRkICdpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQnIHRvIHRoZSBjbGFzcy5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fbWNsYXNzKCkpIHRoaXMuX3R5cGUgPSB0aGlzLmJ0blMuZGVmYXVsdFR5cGU7XG4gIH1cblxuICBzZXRMb2FkZXIodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh2YWwpO1xuICB9XG4gIGdldCBleHRyYWN0VGV4dCgpIHtcbiAgICByZXR1cm4gYENsaWNrZWQgb24gJHt0aGlzLnRleHQoKSB8fCB0aGlzLmlubmVyVGV4dD8ubmF0aXZlRWxlbWVudD8uaW5uZXJIVE1MIHx8IHRoaXMuaWNvblR5cGUgfHwgJ2J1dHRvbid9ICR7XG4gICAgICB0aGlzLmxvZ2dpbmdWYWx1ZSA/ICdcXG5UcmFjayB2YWx1ZTogJyArIHRoaXMubG9nZ2luZ1ZhbHVlIDogJydcbiAgICB9YDtcbiAgfVxuICBjbGljaygkZXZlbnQpIHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSB8fCB0aGlzLmxvYWRpbmcoKSkgcmV0dXJuO1xuICAgIHRoaXMubWNsaWNrLmVtaXQoJGV2ZW50KTtcbiAgICB0aGlzLmJ0blMubG9nQ2xpY2sodGhpcyk7XG4gIH1cblxuICBpc0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCgpLFxuICAgICAgdmFsaWQgPSB0aGlzLnZhbGlkKCksXG4gICAgICBvbkZvcm1JbnZhbGlkID0gdGhpcy5vbkZvcm1JbnZhbGlkKCksXG4gICAgICBmb3JtID0gdGhpcy5mb3JtU3RhdGUoKSxcbiAgICAgIGZvcm1zID0gdGhpcy5mb3Jtc1N0YXRlKCk7XG4gICAgcmV0dXJuIGRpc2FibGVkIHx8ICF2YWxpZCB8fCAob25Gb3JtSW52YWxpZCA9PSBPbkZvcm1JbnZhbGlkLmRpc2FibGUgJiYgKGZvcm0/LmludmFsaWQgfHwgZm9ybT8ucGVuZGluZyB8fCBmb3Jtcz8ucGVuZGluZykpIHx8IGZhbHNlO1xuICB9KTtcblxuICBkaXNhYmxlKCkge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgZW5hYmxlKCkge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGZhbHNlKTtcbiAgfVxufVxuZW51bSBPbkZvcm1JbnZhbGlkIHtcbiAgZGlzYWJsZSA9ICdkaXNhYmxlJyxcbiAgd2FybiA9ICd3YXJuJyxcbn1cbmludGVyZmFjZSBJRm9ybVN0YXRlIHtcbiAgcGVuZGluZz86IGJvb2xlYW47XG4gIGRpcnR5PzogYm9vbGVhbjtcbiAgaW52YWxpZD86IGJvb2xlYW47XG4gIHByaXN0aW5lPzogYm9vbGVhbjtcbiAgdmFsaWQ/OiBib29sZWFuO1xuICBzdGF0dXM/OiBGb3JtQ29udHJvbFN0YXR1cztcbn1cbiIsIjxzcGFuXG4gIGNsYXNzPVwie3sgY2xhc3MoKSB9fSAgZC1mbGV4ICBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoKSwgbWluaTogbWluaSgpIH1cIlxuICAoY2xpY2spPVwiYnRuUy5jaGVja0Zvcm0odGhpcylcIj5cbiAgQGlmIChzaG93SGVscEljb24oKSAmJiBoZWxwKCkpIHtcbiAgICA8aSBjbGFzcz1cImZhIGZhLWluZm8tY2lyY2xlIG1lLTIgdGV4dC1wcmltYXJ5XCIgW21hdFRvb2x0aXBdPVwiaGVscCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmNcIj48L2k+XG4gIH1cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJ7eyBhY3Rpb25UeXBlKCkgfX1cIlxuICAgIGNsYXNzPVwie3sgbWNsYXNzKCkgfX0ge3sgX21jbGFzcygpIH19IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgXCJcbiAgICBbbWF0QmFkZ2VdPVwiYmFkZ2UoKVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgY2hhbmdlY29sb3I6IHZhbGlkKCksXG4gICAgICAnYnRuLXJhaXNlZCc6IGFuaW1hdGUoKSxcbiAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkKCksXG4gICAgICBpc0RhbmdlcjogZGFuZ2VyKCksXG4gICAgICBpc1dhcm5pbmc6IHdhcm5pbmcoKSxcbiAgICAgIGludmFsaWQ6IGZvcm1Jc0ludmFsaWQoKSxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogY2VudGVyQnRuKClcbiAgICB9XCJcbiAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCJcbiAgICAoY2xpY2spPVwiY2xpY2soJGV2ZW50KVwiXG4gICAgW21hdFRvb2x0aXBdPVwic2hvd0hlbHBJY29uKCkgPyBudWxsIDogKGhlbHAoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jKVwiPlxuICAgIEBpZiAoIWxvYWRpbmcoKSkge1xuICAgICAgQGlmIChsZWZ0SWNvbigpKSB7XG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cImlzRGlzYWJsZWQoKSA/IGxvY2tlZCgpIDogbGVmdEljb24oKVwiPjwvZmEtaWNvbj5cbiAgICAgIH0gQGVsc2UgaWYgKGxlZnRDdXN0b21JY29uKCkpIHtcbiAgICAgICAgPGkgY2xhc3M9XCJ7eyBsZWZ0Q3VzdG9tSWNvbigpIH19XCI+PC9pPlxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoY29tcHV0ZWRUZXh0KCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwieyAnbXMtMSc6IGxlZnRJY29uKCkgfHwgbGVmdEN1c3RvbUljb24oKSwgJ21lLTEnOiByaWdodEljb24oKSB8fCByaWdodEN1c3RvbUljb24oKSB9XCI+XG4gICAgICAgIHt7IGNvbXB1dGVkVGV4dCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiIFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbXMtMSc6IGlubmVyVGV4dC5pbm5lclRleHQgJiYgKGxlZnRJY29uKCkgfHwgbGVmdEN1c3RvbUljb24oKSksXG4gICAgICAgICAgJ21lLTEnOiBpbm5lclRleHQuaW5uZXJUZXh0ICYmIChyaWdodEljb24oKSB8fCByaWdodEN1c3RvbUljb24oKSlcbiAgICAgICAgfVwiXG4gICAgICAgICNpbm5lclRleHRcbiAgICAgICAgYXBwVHJhbnNsYXRvcj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgIH1cblxuICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXNwaW5uZXIgbXMte3sgaWNvbkJ0bigpID8gJycgOiAnMicgfX0gZmEtc3BpblwiPjwvc3Bhbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAocmlnaHRJY29uKCkpIHtcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXNEaXNhYmxlZCgpID8gbG9ja2VkKCkgOiByaWdodEljb24oKVwiPjwvZmEtaWNvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHJpZ2h0Q3VzdG9tSWNvbigpKSB7XG4gICAgICAgIDxpIGNsYXNzPVwie3sgcmlnaHRDdXN0b21JY29uKCkgfX1cIj48L2k+XG4gICAgICB9XG4gICAgfVxuICA8L2J1dHRvbj5cbjwvc3Bhbj5cbiJdfQ==
|
|
@@ -3,7 +3,8 @@ import { faPaperPlane } from '@fortawesome/free-regular-svg-icons';
|
|
|
3
3
|
import { faArrowLeft, faArrowRight, faCheck, faClone, faCogs, faDownload, faEdit, faEye, faFile, faFileExport, faFileImport, faHistory, faListAlt, faLock, faMoneyCheck, faPen, faPenFancy, faPlus, faRecycle, faSave, faSearch, faSlidersH, faTrash, faUnlock, faFilter, faUpload, faUserShield, faHome, faUsers, faBellSlash, faInfoCircle, faTruck, faTag, faReceipt, faBank, faArrowsH, faPlay, faPercent, faCancel, faCircleExclamation, faHandshake, faTable, faSpoon, } from '@fortawesome/free-solid-svg-icons';
|
|
4
4
|
import { EUA } from '../../../Reusables/reusable-pages/user-activity/ua-extras/user-activity.model';
|
|
5
5
|
import { FormGroup } from '@angular/forms';
|
|
6
|
-
import {
|
|
6
|
+
import { merge, take, tap, timer } from 'rxjs';
|
|
7
|
+
import { cloneDeep } from 'lodash-es';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "../../../Reusables/reusable-pages/user-activity/ua-extras/user-activity.service";
|
|
9
10
|
export class BtnService {
|
|
@@ -206,59 +207,54 @@ export class BtnService {
|
|
|
206
207
|
return index[iconType];
|
|
207
208
|
};
|
|
208
209
|
this.defaultType = 'secondary';
|
|
209
|
-
this.setFormState = (
|
|
210
|
-
btn?.
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
210
|
+
this.setFormState = (btn) => {
|
|
211
|
+
btn.checkFormStateSub?.unsubscribe();
|
|
212
|
+
btn.checkFormStateSub = timer(0, 1000)
|
|
213
|
+
.pipe(take(3))
|
|
214
|
+
.subscribe(() => {
|
|
215
|
+
// btn.counter?.set(btn.counter() + 1);
|
|
216
|
+
btn.formState.set(cloneDeep({
|
|
217
|
+
pending: btn.form?.pending,
|
|
218
|
+
dirty: btn.form?.dirty,
|
|
219
|
+
invalid: btn.form?.invalid,
|
|
220
|
+
pristine: btn.form?.pristine,
|
|
221
|
+
valid: btn.form?.valid,
|
|
222
|
+
}));
|
|
216
223
|
});
|
|
217
|
-
// console.log(JSON.stringify({
|
|
218
|
-
// pending: form?.pending,
|
|
219
|
-
// dirty: form?.dirty,
|
|
220
|
-
// invalid: form?.invalid,
|
|
221
|
-
// pristine: form?.pristine,
|
|
222
|
-
// valid: form?.valid,
|
|
223
|
-
// }))
|
|
224
|
-
// btn.formState.set(
|
|
225
|
-
// cloneDeep({
|
|
226
|
-
// pending: form?.pending,
|
|
227
|
-
// dirty: form?.dirty,
|
|
228
|
-
// invalid: form?.invalid,
|
|
229
|
-
// pristine: form?.pristine,
|
|
230
|
-
// valid: form?.valid,
|
|
231
|
-
// }),
|
|
232
|
-
// );
|
|
233
224
|
};
|
|
234
|
-
this.setFormsState = (
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
225
|
+
this.setFormsState = (btn) => {
|
|
226
|
+
btn.checkFormsStateSub?.unsubscribe();
|
|
227
|
+
btn.checkFormsStateSub = timer(0, 1000)
|
|
228
|
+
.pipe(take(3))
|
|
229
|
+
.subscribe(() => {
|
|
230
|
+
const fs = {
|
|
231
|
+
pending: true,
|
|
232
|
+
dirty: true,
|
|
233
|
+
invalid: true,
|
|
234
|
+
pristine: true,
|
|
235
|
+
valid: true,
|
|
236
|
+
};
|
|
237
|
+
btn.forms?.forEach((x) => {
|
|
238
|
+
if (!x.pending)
|
|
239
|
+
fs.pending = x.pending;
|
|
240
|
+
if (!x.dirty)
|
|
241
|
+
fs.dirty = x.dirty;
|
|
242
|
+
if (!x.invalid)
|
|
243
|
+
fs.invalid = x.invalid;
|
|
244
|
+
if (!x.pristine)
|
|
245
|
+
fs.pristine = x.pristine;
|
|
246
|
+
if (!x.valid)
|
|
247
|
+
fs.valid = x.valid;
|
|
248
|
+
});
|
|
249
|
+
btn.formsState.set(fs);
|
|
253
250
|
});
|
|
254
|
-
btn.formsState.set(fs);
|
|
255
251
|
};
|
|
256
252
|
// protected debouncerArray = [200].concat(new Array(3).fill(1).map((x, i) => (i + 1) * 1000));
|
|
257
253
|
this.handleForm = (form, btn) => form.statusChanges
|
|
258
|
-
.pipe(tap((r) => this.setFormState(
|
|
254
|
+
.pipe(tap((r) => this.setFormState(btn)))
|
|
259
255
|
.subscribe(() => { });
|
|
260
256
|
this.handleForms = (v, btn) => merge(v.map((f) => f.statusChanges))
|
|
261
|
-
.pipe(tap((r) => this.setFormsState(
|
|
257
|
+
.pipe(tap((r) => this.setFormsState(btn)))
|
|
262
258
|
.subscribe(() => { });
|
|
263
259
|
}
|
|
264
260
|
getType(v) {
|
|
@@ -299,4 +295,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
299
295
|
providedIn: 'root',
|
|
300
296
|
}]
|
|
301
297
|
}], ctorParameters: () => [{ type: i1.UserActivityService }] });
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvYnRuL2J0bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE9BQU8sRUFDUCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sT0FBTyxFQUNQLFdBQVcsRUFDWCxZQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBRU4sU0FBUyxFQUNULFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLE9BQU8sRUFDUCxPQUFPLEdBRVIsTUFBTSxtQ0FBbUMsQ0FBQztBQUkzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sK0VBQStFLENBQUM7QUFDcEcsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7QUFNOUQsTUFBTSxPQUFPLFVBQVU7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Q0FBQyxFQUN4QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXhDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXZDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXZDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXZDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXZDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXZDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ3hDO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpCLGdCQUFXLEdBQUcsQ0FBQyxDQUFvQixFQUFFLEdBQWlCLEVBQUUsRUFBRSxDQUN4RCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2pDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXRDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXJDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXJDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXJDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBRXJDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ3RDO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBeFNxQixDQUFDO0lBMksvQyxPQUFPLENBQUMsQ0FBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUdELFFBQVEsQ0FBQyxHQUFpQjtRQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckQsSUFBSSxHQUFHLENBQUMsY0FBYztZQUFFLE9BQU87UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDWCxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDakIsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFdBQVc7U0FDckMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQThDRCxTQUFTLENBQUMsR0FBaUI7UUFDekIsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtZQUNoQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRTtnQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7cUJBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztxQkFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hDLENBQUM7YUFDSDtTQUNGO1FBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtZQUNqQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNyRCw0QkFBNEI7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7SUFDSCxDQUFDOzhHQXpSVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZhUGFwZXJQbGFuZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXJlZ3VsYXItc3ZnLWljb25zJztcbmltcG9ydCB7XG4gIGZhQXJyb3dMZWZ0LFxuICBmYUFycm93UmlnaHQsXG4gIGZhQ2hlY2ssXG4gIGZhQ2xvbmUsXG4gIGZhQ29ncyxcbiAgZmFEb3dubG9hZCxcbiAgZmFFZGl0LFxuICBmYUV5ZSxcbiAgZmFGaWxlLFxuICBmYUZpbGVFeHBvcnQsXG4gIGZhRmlsZUltcG9ydCxcbiAgZmFIaXN0b3J5LFxuICBmYUxpc3RBbHQsXG4gIGZhTG9jayxcbiAgZmFNb25leUNoZWNrLFxuICBmYVBlbixcbiAgZmFQZW5GYW5jeSxcbiAgZmFQbHVzLFxuICBmYVJlY3ljbGUsXG4gIGZhU2F2ZSxcbiAgZmFTZWFyY2gsXG4gIGZhU2xpZGVyc0gsXG4gIGZhVHJhc2gsXG4gIGZhVW5sb2NrLFxuICBmYUZpbHRlcixcbiAgZmFVcGxvYWQsXG4gIGZhVXNlclNoaWVsZCxcbiAgZmFIb21lLFxuICBmYVVzZXJzLFxuICBmYUJlbGxTbGFzaCxcbiAgZmFJbmZvQ2lyY2xlLFxuICBmYVRydWNrLFxuICBmYVRhZyxcbiAgZmFSZWNlaXB0LFxuICBmYUJhbmssXG4gIGZhQXJyb3dzSCxcbiAgZmFQbGF5LFxuICBmYUxpbmssXG4gIGZhUGVyY2VudCxcbiAgZmFDYW5jZWwsXG4gIGZhQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhSGFuZHNoYWtlLFxuICBmYVRhYmxlLFxuICBmYVNwb29uLFxuICBJY29uRGVmaW5pdGlvbixcbn0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5UeXBlLCBJY29uVHlwZSB9IGZyb20gJy4vYnRuLm1vZGVsJztcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9SZXVzYWJsZXMvcmV1c2FibGUtcGFnZXMvdXNlci1hY3Rpdml0eS91YS1leHRyYXMvdXNlci1hY3Rpdml0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVVQSB9IGZyb20gJy4uLy4uLy4uL1JldXNhYmxlcy9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5Lm1vZGVsJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtZXJnZSwgdGFwLCB0aW1lSW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBCdG5TZXJ2aWNlIHtcbiAgYnRuQ2xhc3NDb25maWc6IEJ0bkNsYXNzID0ge1xuICAgIFsncHJpbWFyeSddOiB7XG4gICAgICBfbWNsYXNzOiAnYnRuIGJ0bi1wcmltYXJ5IGJ0bi1sZyB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ3NlY29uZGFyeSddOiB7XG4gICAgICBfbWNsYXNzOiAnYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLWNsb25lIGJ0bi1sZyB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ291dGxpbmUnXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi1sZyB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ2NsZWFyJ106IHtcbiAgICAgIF9tY2xhc3M6ICdidG4gdy0xMDAnLFxuICAgIH0sXG4gICAgWydkYXJrLW91dGxpbmUnXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tb3V0bGluZS1kYXJrIGJ0bi1sZyB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ291dGxpbmUtbm0nXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tb3V0bGluZS1wcmltYXJ5IHctMTAwJyxcbiAgICB9LFxuICAgIFsnZGFyayddOiB7XG4gICAgICBfbWNsYXNzOiAnYnRuIGJ0bi1kYXJrIGJ0bi1sZyB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ2RhbmdlciddOiB7XG4gICAgICBfbWNsYXNzOiAnYnRuIGJ0bi1kYW5nZXIgYnRuLWxnIHctMTAwJyxcbiAgICB9LFxuICAgIFsnZGFuZ2VyLW91dGxpbmUnXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tb3V0bGluZS1kYW5nZXIgYnRuLWxnIHctMTAwJyxcbiAgICB9LFxuICAgIFsnY2xvc2UnXTogeyBfbWNsYXNzOiAnYnRuIGJ0bi1sZyAgdGV4dC1kYW5nZXInLCBfaWNvbjogJ2Nsb3NlJyB9LFxuICAgIFsnc3VjY2VzcyddOiB7XG4gICAgICBfbWNsYXNzOiAnYnRuIGJ0bi1sZyBidG4tc3VjY2VzcyB3LTEwMCcsXG4gICAgfSxcbiAgfTtcbiAgY29uc3RydWN0b3IocHVibGljIHVhUzogVXNlckFjdGl2aXR5U2VydmljZSkge31cbiAgZ2V0SWNvbiA9IChpY29uVHlwZTogSWNvblR5cGUpID0+IHtcbiAgICBjb25zdCBpbmRleDoge1xuICAgICAgW2sgaW4gSWNvblR5cGVdPzoge1xuICAgICAgICBpY29uPzogSWNvbkRlZmluaXRpb247XG4gICAgICAgIGljb25TdHJpbmc/OiBzdHJpbmc7XG4gICAgICAgIGljb25Qb3NpdGlvbj86ICdyaWdodCcgfCAnbGVmdCc7XG4gICAgICB9O1xuICAgIH0gPSB7XG4gICAgICBhZGQ6IHtcbiAgICAgICAgaWNvbjogZmFQbHVzLFxuICAgICAgfSxcbiAgICAgIGFkanVzdDoge1xuICAgICAgICBpY29uOiBmYVNsaWRlcnNILFxuICAgICAgfSxcbiAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgIGljb25TdHJpbmc6ICdmYXMgZmEtY2FsZW5kYXItYWx0JyxcbiAgICAgIH0sXG4gICAgICBjYXNoOiB7XG4gICAgICAgIGljb246IGZhTW9uZXlDaGVjayxcbiAgICAgIH0sXG4gICAgICBjYW5jZWw6IHtcbiAgICAgICAgaWNvbjogZmFDYW5jZWwsXG4gICAgICB9LFxuICAgICAgY2hlY2tlZDoge1xuICAgICAgICBpY29uOiBmYUNoZWNrLFxuICAgICAgfSxcbiAgICAgIGNoZWNrbGlzdDoge1xuICAgICAgICBpY29uOiBmYUxpc3RBbHQsXG4gICAgICB9LFxuICAgICAgY2xvbmU6IHtcbiAgICAgICAgaWNvbjogZmFDbG9uZSxcbiAgICAgIH0sXG4gICAgICBjbG9zZToge1xuICAgICAgICBpY29uU3RyaW5nOiAnZmEgZmEtY2xvc2UnLFxuICAgICAgfSxcbiAgICAgIGNvZ3M6IHtcbiAgICAgICAgaWNvbjogZmFDb2dzLFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZToge1xuICAgICAgICBpY29uOiBmYVRyYXNoLFxuICAgICAgfSxcbiAgICAgIGRvd25sb2FkOiB7XG4gICAgICAgIGljb246IGZhRG93bmxvYWQsXG4gICAgICB9LFxuICAgICAgZHJvcGRvd246IHtcbiAgICAgICAgaWNvblBvc2l0aW9uOiAncmlnaHQnLFxuICAgICAgICBpY29uU3RyaW5nOiAnZmEgZmEtY2hldnJvbi1kb3duJyxcbiAgICAgIH0sXG4gICAgICBlZGl0OiB7XG4gICAgICAgIGljb246IGZhRWRpdCxcbiAgICAgIH0sXG4gICAgICBleHBvcnQ6IHtcbiAgICAgICAgaWNvbjogZmFGaWxlRXhwb3J0LFxuICAgICAgfSxcbiAgICAgIGZpbGU6IHtcbiAgICAgICAgaWNvbjogZmFGaWxlLFxuICAgICAgfSxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBpY29uOiBmYUZpbHRlcixcbiAgICAgIH0sXG4gICAgICBnZW5lcmF0ZToge1xuICAgICAgICBpY29uOiBmYVBlbkZhbmN5LFxuICAgICAgfSxcbiAgICAgIGd1YXJkOiB7XG4gICAgICAgIGljb246IGZhVXNlclNoaWVsZCxcbiAgICAgIH0sXG4gICAgICBhY2Nlc3M6IHtcbiAgICAgICAgaWNvbjogZmFVc2VyU2hpZWxkLFxuICAgICAgfSxcbiAgICAgIGhpc3Rvcnk6IHtcbiAgICAgICAgaWNvbjogZmFIaXN0b3J5LFxuICAgICAgfSxcbiAgICAgIGhvbWU6IHtcbiAgICAgICAgaWNvbjogZmFIb21lLFxuICAgICAgfSxcbiAgICAgIGltcG9ydDoge1xuICAgICAgICBpY29uOiBmYUZpbGVJbXBvcnQsXG4gICAgICB9LFxuICAgICAgaW5mbzoge1xuICAgICAgICBpY29uOiBmYUluZm9DaXJjbGUsXG4gICAgICB9LFxuICAgICAgbGluazoge1xuICAgICAgICBpY29uU3RyaW5nOiAnZmFzIGZhLWNoYWluJyxcbiAgICAgIH0sXG4gICAgICBsb2NrOiB7XG4gICAgICAgIGljb246IGZhTG9jayxcbiAgICAgIH0sXG4gICAgICBuZXh0OiB7XG4gICAgICAgIGljb246IGZhQXJyb3dSaWdodCxcbiAgICAgICAgaWNvblBvc2l0aW9uOiAncmlnaHQnLFxuICAgICAgfSxcbiAgICAgIHBlbjoge1xuICAgICAgICBpY29uOiBmYVBlbixcbiAgICAgIH0sXG4gICAgICBwb3N0OiB7XG4gICAgICAgIGljb246IGZhUGFwZXJQbGFuZSxcbiAgICAgIH0sXG4gICAgICBwcmV2aW91czoge1xuICAgICAgICBpY29uOiBmYUFycm93TGVmdCxcbiAgICAgIH0sXG4gICAgICByZW5ldzoge1xuICAgICAgICBpY29uOiBmYVJlY3ljbGUsXG4gICAgICB9LFxuICAgICAgc2F2ZToge1xuICAgICAgICBpY29uOiBmYVNhdmUsXG4gICAgICB9LFxuICAgICAgc2VhcmNoOiB7XG4gICAgICAgIGljb246IGZhU2VhcmNoLFxuICAgICAgfSxcbiAgICAgIHNob3c6IHtcbiAgICAgICAgaWNvbjogZmFFeWUsXG4gICAgICB9LFxuICAgICAgdmlldzoge1xuICAgICAgICBpY29uOiBmYUV5ZSxcbiAgICAgIH0sXG4gICAgICBzbm9vemU6IHtcbiAgICAgICAgaWNvbjogZmFCZWxsU2xhc2gsXG4gICAgICB9LFxuICAgICAgdXBsb2FkOiB7XG4gICAgICAgIGljb246IGZhVXBsb2FkLFxuICAgICAgfSxcbiAgICAgIHVubG9jazoge1xuICAgICAgICBpY29uOiBmYVVubG9jayxcbiAgICAgIH0sXG4gICAgICB1c2Vyczoge1xuICAgICAgICBpY29uOiBmYVVzZXJzLFxuICAgICAgfSxcbiAgICAgIHJlY3ljbGU6IHtcbiAgICAgICAgaWNvbjogZmFSZWN5Y2xlLFxuICAgICAgfSxcbiAgICAgIHJlZnJlc2g6IHtcbiAgICAgICAgaWNvblN0cmluZzogJ2ZhIGZhLXJlZnJlc2gnLFxuICAgICAgfSxcbiAgICAgIHRydWNrOiB7XG4gICAgICAgIGljb246IGZhVHJ1Y2ssXG4gICAgICB9LFxuICAgICAgdGFnOiB7XG4gICAgICAgIGljb246IGZhVGFnLFxuICAgICAgfSxcbiAgICAgIHJlY2VpcHQ6IHtcbiAgICAgICAgaWNvbjogZmFSZWNlaXB0LFxuICAgICAgfSxcbiAgICAgIGJhbms6IHtcbiAgICAgICAgaWNvbjogZmFCYW5rLFxuICAgICAgfSxcbiAgICAgIGFycm93aDoge1xuICAgICAgICBpY29uOiBmYUFycm93c0gsXG4gICAgICB9LFxuICAgICAgcGxheToge1xuICAgICAgICBpY29uOiBmYVBsYXksXG4gICAgICB9LFxuICAgICAgcGVyY2VudDoge1xuICAgICAgICBpY29uOiBmYVBlcmNlbnQsXG4gICAgICB9LFxuICAgICAgc2hha2U6IHtcbiAgICAgICAgaWNvbjogZmFIYW5kc2hha2UsXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgaWNvbjogZmFDaXJjbGVFeGNsYW1hdGlvbixcbiAgICAgIH0sXG4gICAgICB0YWJsZToge1xuICAgICAgICBpY29uOiBmYVRhYmxlLFxuICAgICAgfSxcbiAgICAgIHNwb29uOiB7XG4gICAgICAgIGljb246IGZhU3Bvb24sXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIGluZGV4W2ljb25UeXBlXTtcbiAgfTtcblxuICBnZXRUeXBlKHY6IEJ0blR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5idG5DbGFzc0NvbmZpZ1t2XSB8fCB7IF90eXBlOiAncHJpbWFyeScgfTtcbiAgfVxuICBkZWZhdWx0VHlwZTogQnRuVHlwZSA9ICdzZWNvbmRhcnknO1xuXG4gIGxvZ0NsaWNrKGJ0bjogQnRuQ29tcG9uZW50KSB7XG4gICAgY29uc29sZS5sb2coJ2J0bi5leHRyYWN0VGV4dCcsIGJ0bi5leHRyYWN0VGV4dCwgYnRuKTtcbiAgICBpZiAoYnRuLmV4Y2x1ZGVMb2dnaW5nKSByZXR1cm47XG4gICAgdGhpcy51YVMuYWRkKHtcbiAgICAgIGNvZGU6IEVVQS5jbGlja2VkLFxuICAgICAgYWN0aXZpdHlEZXNjcmlwdGlvbjogYnRuLmV4dHJhY3RUZXh0LFxuICAgIH0pO1xuICB9XG5cbiAgc2V0Rm9ybVN0YXRlID0gKGZvcm06IEFic3RyYWN0Q29udHJvbCwgYnRuOiBCdG5Db21wb25lbnQpID0+IHtcbiAgICBidG4/LmNoZWNrRm9ybVN0YXRlJD8ubmV4dCh7XG4gICAgICBwZW5kaW5nOiBmb3JtPy5wZW5kaW5nLFxuICAgICAgZGlydHk6IGZvcm0/LmRpcnR5LFxuICAgICAgaW52YWxpZDogZm9ybT8uaW52YWxpZCxcbiAgICAgIHByaXN0aW5lOiBmb3JtPy5wcmlzdGluZSxcbiAgICAgIHZhbGlkOiBmb3JtPy52YWxpZCxcbiAgICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgLy8gICBwZW5kaW5nOiBmb3JtPy5wZW5kaW5nLFxuICAgIC8vICAgZGlydHk6IGZvcm0/LmRpcnR5LFxuICAgIC8vICAgaW52YWxpZDogZm9ybT8uaW52YWxpZCxcbiAgICAvLyAgIHByaXN0aW5lOiBmb3JtPy5wcmlzdGluZSxcbiAgICAvLyAgIHZhbGlkOiBmb3JtPy52YWxpZCxcbiAgICAvLyB9KSlcbiAgICAvLyBidG4uZm9ybVN0YXRlLnNldChcbiAgICAvLyAgIGNsb25lRGVlcCh7XG4gICAgLy8gICAgIHBlbmRpbmc6IGZvcm0/LnBlbmRpbmcsXG4gICAgLy8gICAgIGRpcnR5OiBmb3JtPy5kaXJ0eSxcbiAgICAvLyAgICAgaW52YWxpZDogZm9ybT8uaW52YWxpZCxcbiAgICAvLyAgICAgcHJpc3RpbmU6IGZvcm0/LnByaXN0aW5lLFxuICAgIC8vICAgICB2YWxpZDogZm9ybT8udmFsaWQsXG4gICAgLy8gICB9KSxcbiAgICAvLyApO1xuICB9O1xuXG4gIHNldEZvcm1zU3RhdGUgPSAoZm9ybXM6IEFic3RyYWN0Q29udHJvbFtdLCBidG46IEJ0bkNvbXBvbmVudCkgPT4ge1xuICAgIGNvbnN0IGZzID0ge1xuICAgICAgcGVuZGluZzogdHJ1ZSxcbiAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgaW52YWxpZDogdHJ1ZSxcbiAgICAgIHByaXN0aW5lOiB0cnVlLFxuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgfTtcbiAgICBmb3Jtcz8uZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgaWYgKCF4LnBlbmRpbmcpIGZzLnBlbmRpbmcgPSB4LnBlbmRpbmc7XG4gICAgICBpZiAoIXguZGlydHkpIGZzLmRpcnR5ID0geC5kaXJ0eTtcbiAgICAgIGlmICgheC5pbnZhbGlkKSBmcy5pbnZhbGlkID0geC5pbnZhbGlkO1xuICAgICAgaWYgKCF4LnByaXN0aW5lKSBmcy5wcmlzdGluZSA9IHgucHJpc3RpbmU7XG4gICAgICBpZiAoIXgudmFsaWQpIGZzLnZhbGlkID0geC52YWxpZDtcbiAgICB9KTtcbiAgICBidG4uZm9ybXNTdGF0ZS5zZXQoZnMpO1xuICB9O1xuXG4gIGNoZWNrRm9ybShidG46IEJ0bkNvbXBvbmVudCkge1xuICAgIGlmIChidG4uaXNEaXNhYmxlZCgpICYmIGJ0bi5mb3JtKSB7XG4gICAgICBidG4uZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICBjb25zdCBmb3JtID0gYnRuLmZvcm07XG4gICAgICBjb25zb2xlLmxvZyhmb3JtKTtcbiAgICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiAhZm9ybS5jb250cm9sc1t4XS52YWxpZClcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IGZvcm0uY29udHJvbHNbeF0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYnRuLmlzRGlzYWJsZWQoKSAmJiBidG4uZm9ybXMpIHtcbiAgICAgIGJ0bi5mb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiBmb3JtLm1hcmtBbGxBc1RvdWNoZWQoKSk7XG4gICAgICAvLyB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBjb25zb2xlLmxvZyhidG4uZm9ybXMpO1xuICAgIH1cbiAgfVxuICAvLyBwcm90ZWN0ZWQgZGVib3VuY2VyQXJyYXkgPSBbMjAwXS5jb25jYXQobmV3IEFycmF5KDMpLmZpbGwoMSkubWFwKCh4LCBpKSA9PiAoaSArIDEpICogMTAwMCkpO1xuXG4gIGhhbmRsZUZvcm0gPSAoZm9ybTogQWJzdHJhY3RDb250cm9sLCBidG46IEJ0bkNvbXBvbmVudCkgPT5cbiAgICBmb3JtLnN0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHIpID0+IHRoaXMuc2V0Rm9ybVN0YXRlKGZvcm0sIGJ0bikpLFxuICAgICAgICB0YXAoKHIpID0+IHRoaXMuc2V0Rm9ybVN0YXRlKGZvcm0sIGJ0bikpLFxuXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdGUoZm9ybSwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdGUoZm9ybSwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdGUoZm9ybSwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdGUoZm9ybSwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdGUoZm9ybSwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdGUoZm9ybSwgYnRuKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcblxuICBoYW5kbGVGb3JtcyA9ICh2OiBBYnN0cmFjdENvbnRyb2xbXSwgYnRuOiBCdG5Db21wb25lbnQpID0+XG4gICAgbWVyZ2Uodi5tYXAoKGYpID0+IGYuc3RhdHVzQ2hhbmdlcykpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChyKSA9PiB0aGlzLnNldEZvcm1zU3RhdGUodiwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1zU3RhdGUodiwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3Jtc1N0YXRlKHYsIGJ0bikpLFxuXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0Rm9ybXNTdGF0ZSh2LCBidG4pKSxcblxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1zU3RhdGUodiwgYnRuKSksXG5cbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRGb3Jtc1N0YXRlKHYsIGJ0bikpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XG59XG5cbnR5cGUgQnRuQ2xhc3MgPSB7IFtrIGluIEJ0blR5cGVdOiB7IF9tY2xhc3M/OiBzdHJpbmc7IF9pY29uPzogSWNvblR5cGU7IF90eXBlPzogQnRuVHlwZSB9IH07XG4iXX0=
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvYnRuL2J0bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE9BQU8sRUFDUCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sT0FBTyxFQUNQLFdBQVcsRUFDWCxZQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBRU4sU0FBUyxFQUNULFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLE9BQU8sRUFDUCxPQUFPLEdBRVIsTUFBTSxtQ0FBbUMsQ0FBQztBQUkzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sK0VBQStFLENBQUM7QUFDcEcsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQWdCLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxF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O2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZhUGFwZXJQbGFuZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXJlZ3VsYXItc3ZnLWljb25zJztcbmltcG9ydCB7XG4gIGZhQXJyb3dMZWZ0LFxuICBmYUFycm93UmlnaHQsXG4gIGZhQ2hlY2ssXG4gIGZhQ2xvbmUsXG4gIGZhQ29ncyxcbiAgZmFEb3dubG9hZCxcbiAgZmFFZGl0LFxuICBmYUV5ZSxcbiAgZmFGaWxlLFxuICBmYUZpbGVFeHBvcnQsXG4gIGZhRmlsZUltcG9ydCxcbiAgZmFIaXN0b3J5LFxuICBmYUxpc3RBbHQsXG4gIGZhTG9jayxcbiAgZmFNb25leUNoZWNrLFxuICBmYVBlbixcbiAgZmFQZW5GYW5jeSxcbiAgZmFQbHVzLFxuICBmYVJlY3ljbGUsXG4gIGZhU2F2ZSxcbiAgZmFTZWFyY2gsXG4gIGZhU2xpZGVyc0gsXG4gIGZhVHJhc2gsXG4gIGZhVW5sb2NrLFxuICBmYUZpbHRlcixcbiAgZmFVcGxvYWQsXG4gIGZhVXNlclNoaWVsZCxcbiAgZmFIb21lLFxuICBmYVVzZXJzLFxuICBmYUJlbGxTbGFzaCxcbiAgZmFJbmZvQ2lyY2xlLFxuICBmYVRydWNrLFxuICBmYVRhZyxcbiAgZmFSZWNlaXB0LFxuICBmYUJhbmssXG4gIGZhQXJyb3dzSCxcbiAgZmFQbGF5LFxuICBmYUxpbmssXG4gIGZhUGVyY2VudCxcbiAgZmFDYW5jZWwsXG4gIGZhQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhSGFuZHNoYWtlLFxuICBmYVRhYmxlLFxuICBmYVNwb29uLFxuICBJY29uRGVmaW5pdGlvbixcbn0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5UeXBlLCBJY29uVHlwZSB9IGZyb20gJy4vYnRuLm1vZGVsJztcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9SZXVzYWJsZXMvcmV1c2FibGUtcGFnZXMvdXNlci1hY3Rpdml0eS91YS1leHRyYXMvdXNlci1hY3Rpdml0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVVQSB9IGZyb20gJy4uLy4uLy4uL1JldXNhYmxlcy9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5Lm1vZGVsJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtZXJnZSwgdGFrZSwgdGFwLCB0aW1lSW50ZXJ2YWwsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQnRuU2VydmljZSB7XG4gIGJ0bkNsYXNzQ29uZmlnOiBCdG5DbGFzcyA9IHtcbiAgICBbJ3ByaW1hcnknXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tcHJpbWFyeSBidG4tbGcgdy0xMDAnLFxuICAgIH0sXG4gICAgWydzZWNvbmRhcnknXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi1jbG9uZSBidG4tbGcgdy0xMDAnLFxuICAgIH0sXG4gICAgWydvdXRsaW5lJ106IHtcbiAgICAgIF9tY2xhc3M6ICdidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tbGcgdy0xMDAnLFxuICAgIH0sXG4gICAgWydjbGVhciddOiB7XG4gICAgICBfbWNsYXNzOiAnYnRuIHctMTAwJyxcbiAgICB9LFxuICAgIFsnZGFyay1vdXRsaW5lJ106IHtcbiAgICAgIF9tY2xhc3M6ICdidG4gYnRuLW91dGxpbmUtZGFyayBidG4tbGcgdy0xMDAnLFxuICAgIH0sXG4gICAgWydvdXRsaW5lLW5tJ106IHtcbiAgICAgIF9tY2xhc3M6ICdidG4gYnRuLW91dGxpbmUtcHJpbWFyeSB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ2RhcmsnXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tZGFyayBidG4tbGcgdy0xMDAnLFxuICAgIH0sXG4gICAgWydkYW5nZXInXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tZGFuZ2VyIGJ0bi1sZyB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ2Rhbmdlci1vdXRsaW5lJ106IHtcbiAgICAgIF9tY2xhc3M6ICdidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJ0bi1sZyB3LTEwMCcsXG4gICAgfSxcbiAgICBbJ2Nsb3NlJ106IHsgX21jbGFzczogJ2J0biBidG4tbGcgIHRleHQtZGFuZ2VyJywgX2ljb246ICdjbG9zZScgfSxcbiAgICBbJ3N1Y2Nlc3MnXToge1xuICAgICAgX21jbGFzczogJ2J0biBidG4tbGcgYnRuLXN1Y2Nlc3Mgdy0xMDAnLFxuICAgIH0sXG4gIH07XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1YVM6IFVzZXJBY3Rpdml0eVNlcnZpY2UpIHt9XG4gIGdldEljb24gPSAoaWNvblR5cGU6IEljb25UeXBlKSA9PiB7XG4gICAgY29uc3QgaW5kZXg6IHtcbiAgICAgIFtrIGluIEljb25UeXBlXT86IHtcbiAgICAgICAgaWNvbj86IEljb25EZWZpbml0aW9uO1xuICAgICAgICBpY29uU3RyaW5nPzogc3RyaW5nO1xuICAgICAgICBpY29uUG9zaXRpb24/OiAncmlnaHQnIHwgJ2xlZnQnO1xuICAgICAgfTtcbiAgICB9ID0ge1xuICAgICAgYWRkOiB7XG4gICAgICAgIGljb246IGZhUGx1cyxcbiAgICAgIH0sXG4gICAgICBhZGp1c3Q6IHtcbiAgICAgICAgaWNvbjogZmFTbGlkZXJzSCxcbiAgICAgIH0sXG4gICAgICBjYWxlbmRhcjoge1xuICAgICAgICBpY29uU3RyaW5nOiAnZmFzIGZhLWNhbGVuZGFyLWFsdCcsXG4gICAgICB9LFxuICAgICAgY2FzaDoge1xuICAgICAgICBpY29uOiBmYU1vbmV5Q2hlY2ssXG4gICAgICB9LFxuICAgICAgY2FuY2VsOiB7XG4gICAgICAgIGljb246IGZhQ2FuY2VsLFxuICAgICAgfSxcbiAgICAgIGNoZWNrZWQ6IHtcbiAgICAgICAgaWNvbjogZmFDaGVjayxcbiAgICAgIH0sXG4gICAgICBjaGVja2xpc3Q6IHtcbiAgICAgICAgaWNvbjogZmFMaXN0QWx0LFxuICAgICAgfSxcbiAgICAgIGNsb25lOiB7XG4gICAgICAgIGljb246IGZhQ2xvbmUsXG4gICAgICB9LFxuICAgICAgY2xvc2U6IHtcbiAgICAgICAgaWNvblN0cmluZzogJ2ZhIGZhLWNsb3NlJyxcbiAgICAgIH0sXG4gICAgICBjb2dzOiB7XG4gICAgICAgIGljb246IGZhQ29ncyxcbiAgICAgIH0sXG4gICAgICBkZWxldGU6IHtcbiAgICAgICAgaWNvbjogZmFUcmFzaCxcbiAgICAgIH0sXG4gICAgICBkb3dubG9hZDoge1xuICAgICAgICBpY29uOiBmYURvd25sb2FkLFxuICAgICAgfSxcbiAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgIGljb25Qb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgaWNvblN0cmluZzogJ2ZhIGZhLWNoZXZyb24tZG93bicsXG4gICAgICB9LFxuICAgICAgZWRpdDoge1xuICAgICAgICBpY29uOiBmYUVkaXQsXG4gICAgICB9LFxuICAgICAgZXhwb3J0OiB7XG4gICAgICAgIGljb246IGZhRmlsZUV4cG9ydCxcbiAgICAgIH0sXG4gICAgICBmaWxlOiB7XG4gICAgICAgIGljb246IGZhRmlsZSxcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgaWNvbjogZmFGaWx0ZXIsXG4gICAgICB9LFxuICAgICAgZ2VuZXJhdGU6IHtcbiAgICAgICAgaWNvbjogZmFQZW5GYW5jeSxcbiAgICAgIH0sXG4gICAgICBndWFyZDoge1xuICAgICAgICBpY29uOiBmYVVzZXJTaGllbGQsXG4gICAgICB9LFxuICAgICAgYWNjZXNzOiB7XG4gICAgICAgIGljb246IGZhVXNlclNoaWVsZCxcbiAgICAgIH0sXG4gICAgICBoaXN0b3J5OiB7XG4gICAgICAgIGljb246IGZhSGlzdG9yeSxcbiAgICAgIH0sXG4gICAgICBob21lOiB7XG4gICAgICAgIGljb246IGZhSG9tZSxcbiAgICAgIH0sXG4gICAgICBpbXBvcnQ6IHtcbiAgICAgICAgaWNvbjogZmFGaWxlSW1wb3J0LFxuICAgICAgfSxcbiAgICAgIGluZm86IHtcbiAgICAgICAgaWNvbjogZmFJbmZvQ2lyY2xlLFxuICAgICAgfSxcbiAgICAgIGxpbms6IHtcbiAgICAgICAgaWNvblN0cmluZzogJ2ZhcyBmYS1jaGFpbicsXG4gICAgICB9LFxuICAgICAgbG9jazoge1xuICAgICAgICBpY29uOiBmYUxvY2ssXG4gICAgICB9LFxuICAgICAgbmV4dDoge1xuICAgICAgICBpY29uOiBmYUFycm93UmlnaHQsXG4gICAgICAgIGljb25Qb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICAgIH0sXG4gICAgICBwZW46IHtcbiAgICAgICAgaWNvbjogZmFQZW4sXG4gICAgICB9LFxuICAgICAgcG9zdDoge1xuICAgICAgICBpY29uOiBmYVBhcGVyUGxhbmUsXG4gICAgICB9LFxuICAgICAgcHJldmlvdXM6IHtcbiAgICAgICAgaWNvbjogZmFBcnJvd0xlZnQsXG4gICAgICB9LFxuICAgICAgcmVuZXc6IHtcbiAgICAgICAgaWNvbjogZmFSZWN5Y2xlLFxuICAgICAgfSxcbiAgICAgIHNhdmU6IHtcbiAgICAgICAgaWNvbjogZmFTYXZlLFxuICAgICAgfSxcbiAgICAgIHNlYXJjaDoge1xuICAgICAgICBpY29uOiBmYVNlYXJjaCxcbiAgICAgIH0sXG4gICAgICBzaG93OiB7XG4gICAgICAgIGljb246IGZhRXllLFxuICAgICAgfSxcbiAgICAgIHZpZXc6IHtcbiAgICAgICAgaWNvbjogZmFFeWUsXG4gICAgICB9LFxuICAgICAgc25vb3plOiB7XG4gICAgICAgIGljb246IGZhQmVsbFNsYXNoLFxuICAgICAgfSxcbiAgICAgIHVwbG9hZDoge1xuICAgICAgICBpY29uOiBmYVVwbG9hZCxcbiAgICAgIH0sXG4gICAgICB1bmxvY2s6IHtcbiAgICAgICAgaWNvbjogZmFVbmxvY2ssXG4gICAgICB9LFxuICAgICAgdXNlcnM6IHtcbiAgICAgICAgaWNvbjogZmFVc2VycyxcbiAgICAgIH0sXG4gICAgICByZWN5Y2xlOiB7XG4gICAgICAgIGljb246IGZhUmVjeWNsZSxcbiAgICAgIH0sXG4gICAgICByZWZyZXNoOiB7XG4gICAgICAgIGljb25TdHJpbmc6ICdmYSBmYS1yZWZyZXNoJyxcbiAgICAgIH0sXG4gICAgICB0cnVjazoge1xuICAgICAgICBpY29uOiBmYVRydWNrLFxuICAgICAgfSxcbiAgICAgIHRhZzoge1xuICAgICAgICBpY29uOiBmYVRhZyxcbiAgICAgIH0sXG4gICAgICByZWNlaXB0OiB7XG4gICAgICAgIGljb246IGZhUmVjZWlwdCxcbiAgICAgIH0sXG4gICAgICBiYW5rOiB7XG4gICAgICAgIGljb246IGZhQmFuayxcbiAgICAgIH0sXG4gICAgICBhcnJvd2g6IHtcbiAgICAgICAgaWNvbjogZmFBcnJvd3NILFxuICAgICAgfSxcbiAgICAgIHBsYXk6IHtcbiAgICAgICAgaWNvbjogZmFQbGF5LFxuICAgICAgfSxcbiAgICAgIHBlcmNlbnQ6IHtcbiAgICAgICAgaWNvbjogZmFQZXJjZW50LFxuICAgICAgfSxcbiAgICAgIHNoYWtlOiB7XG4gICAgICAgIGljb246IGZhSGFuZHNoYWtlLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGljb246IGZhQ2lyY2xlRXhjbGFtYXRpb24sXG4gICAgICB9LFxuICAgICAgdGFibGU6IHtcbiAgICAgICAgaWNvbjogZmFUYWJsZSxcbiAgICAgIH0sXG4gICAgICBzcG9vbjoge1xuICAgICAgICBpY29uOiBmYVNwb29uLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBpbmRleFtpY29uVHlwZV07XG4gIH07XG5cbiAgZ2V0VHlwZSh2OiBCdG5UeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuYnRuQ2xhc3NDb25maWdbdl0gfHwgeyBfdHlwZTogJ3ByaW1hcnknIH07XG4gIH1cbiAgZGVmYXVsdFR5cGU6IEJ0blR5cGUgPSAnc2Vjb25kYXJ5JztcblxuICBsb2dDbGljayhidG46IEJ0bkNvbXBvbmVudCkge1xuICAgIGNvbnNvbGUubG9nKCdidG4uZXh0cmFjdFRleHQnLCBidG4uZXh0cmFjdFRleHQsIGJ0bik7XG4gICAgaWYgKGJ0bi5leGNsdWRlTG9nZ2luZykgcmV0dXJuO1xuICAgIHRoaXMudWFTLmFkZCh7XG4gICAgICBjb2RlOiBFVUEuY2xpY2tlZCxcbiAgICAgIGFjdGl2aXR5RGVzY3JpcHRpb246IGJ0bi5leHRyYWN0VGV4dCxcbiAgICB9KTtcbiAgfVxuXG4gIHNldEZvcm1TdGF0ZSA9IChidG46IEJ0bkNvbXBvbmVudCkgPT4ge1xuICAgIGJ0bi5jaGVja0Zvcm1TdGF0ZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICBidG4uY2hlY2tGb3JtU3RhdGVTdWIgPSB0aW1lcigwLCAxMDAwKVxuICAgICAgLnBpcGUodGFrZSgzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBidG4uY291bnRlcj8uc2V0KGJ0bi5jb3VudGVyKCkgKyAxKTtcbiAgICAgICAgYnRuLmZvcm1TdGF0ZS5zZXQoXG4gICAgICAgICAgY2xvbmVEZWVwKHtcbiAgICAgICAgICAgIHBlbmRpbmc6IGJ0bi5mb3JtPy5wZW5kaW5nLFxuICAgICAgICAgICAgZGlydHk6IGJ0bi5mb3JtPy5kaXJ0eSxcbiAgICAgICAgICAgIGludmFsaWQ6IGJ0bi5mb3JtPy5pbnZhbGlkLFxuICAgICAgICAgICAgcHJpc3RpbmU6IGJ0bi5mb3JtPy5wcmlzdGluZSxcbiAgICAgICAgICAgIHZhbGlkOiBidG4uZm9ybT8udmFsaWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfTtcblxuICBzZXRGb3Jtc1N0YXRlID0gKGJ0bjogQnRuQ29tcG9uZW50KSA9PiB7XG4gICAgYnRuLmNoZWNrRm9ybXNTdGF0ZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICBidG4uY2hlY2tGb3Jtc1N0YXRlU3ViID0gdGltZXIoMCwgMTAwMClcbiAgICAgIC5waXBlKHRha2UoMykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHsgXG4gICAgICAgIGNvbnN0IGZzID0ge1xuICAgICAgICAgIHBlbmRpbmc6IHRydWUsXG4gICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgaW52YWxpZDogdHJ1ZSxcbiAgICAgICAgICBwcmlzdGluZTogdHJ1ZSxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgYnRuLmZvcm1zPy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKCF4LnBlbmRpbmcpIGZzLnBlbmRpbmcgPSB4LnBlbmRpbmc7XG4gICAgICAgICAgaWYgKCF4LmRpcnR5KSBmcy5kaXJ0eSA9IHguZGlydHk7XG4gICAgICAgICAgaWYgKCF4LmludmFsaWQpIGZzLmludmFsaWQgPSB4LmludmFsaWQ7XG4gICAgICAgICAgaWYgKCF4LnByaXN0aW5lKSBmcy5wcmlzdGluZSA9IHgucHJpc3RpbmU7XG4gICAgICAgICAgaWYgKCF4LnZhbGlkKSBmcy52YWxpZCA9IHgudmFsaWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBidG4uZm9ybXNTdGF0ZS5zZXQoZnMpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY2hlY2tGb3JtKGJ0bjogQnRuQ29tcG9uZW50KSB7XG4gICAgaWYgKGJ0bi5pc0Rpc2FibGVkKCkgJiYgYnRuLmZvcm0pIHtcbiAgICAgIGJ0bi5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIGNvbnN0IGZvcm0gPSBidG4uZm9ybTtcbiAgICAgIGNvbnNvbGUubG9nKGZvcm0pO1xuICAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scylcbiAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+ICFmb3JtLmNvbnRyb2xzW3hdLnZhbGlkKVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4gZm9ybS5jb250cm9sc1t4XSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChidG4uaXNEaXNhYmxlZCgpICYmIGJ0bi5mb3Jtcykge1xuICAgICAgYnRuLmZvcm1zLmZvckVhY2goKGZvcm0pID0+IGZvcm0ubWFya0FsbEFzVG91Y2hlZCgpKTtcbiAgICAgIC8vIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGNvbnNvbGUubG9nKGJ0bi5mb3Jtcyk7XG4gICAgfVxuICB9XG4gIC8vIHByb3RlY3RlZCBkZWJvdW5jZXJBcnJheSA9IFsyMDBdLmNvbmNhdChuZXcgQXJyYXkoMykuZmlsbCgxKS5tYXAoKHgsIGkpID0+IChpICsgMSkgKiAxMDAwKSk7XG5cbiAgaGFuZGxlRm9ybSA9IChmb3JtOiBBYnN0cmFjdENvbnRyb2wsIGJ0bjogQnRuQ29tcG9uZW50KSA9PlxuICAgIGZvcm0uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocikgPT4gdGhpcy5zZXRGb3JtU3RhdGUoYnRuKSksXG4gICAgICAgIC8vIHRhcCgocikgPT4gdGhpcy5zZXRGb3JtU3RhdGUoZm9ybSwgYnRuKSksXG5cbiAgICAgICAgLy8gZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0ZShmb3JtLCBidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0ZShmb3JtLCBidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0ZShmb3JtLCBidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0ZShmb3JtLCBidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0ZShmb3JtLCBidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0ZShmb3JtLCBidG4pKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge30pO1xuXG4gIGhhbmRsZUZvcm1zID0gKHY6IEFic3RyYWN0Q29udHJvbFtdLCBidG46IEJ0bkNvbXBvbmVudCkgPT5cbiAgICBtZXJnZSh2Lm1hcCgoZikgPT4gZi5zdGF0dXNDaGFuZ2VzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHIpID0+IHRoaXMuc2V0Rm9ybXNTdGF0ZShidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgLy8gdGFwKCgpID0+IHRoaXMuc2V0Rm9ybXNTdGF0ZSh2LCBidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1zU3RhdGUodiwgYnRuKSksXG5cbiAgICAgICAgLy8gZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICAvLyB0YXAoKCkgPT4gdGhpcy5zZXRGb3Jtc1N0YXRlKHYsIGJ0bikpLFxuXG4gICAgICAgIC8vIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgLy8gdGFwKCgpID0+IHRoaXMuc2V0Rm9ybXNTdGF0ZSh2LCBidG4pKSxcblxuICAgICAgICAvLyBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLnNldEZvcm1zU3RhdGUodiwgYnRuKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcbn1cblxudHlwZSBCdG5DbGFzcyA9IHsgW2sgaW4gQnRuVHlwZV06IHsgX21jbGFzcz86IHN0cmluZzsgX2ljb24/OiBJY29uVHlwZTsgX3R5cGU/OiBCdG5UeXBlIH0gfTtcbiJdfQ==
|
|
@@ -8,7 +8,7 @@ import * as i1$1 from '@angular/common';
|
|
|
8
8
|
import { CommonModule, Location, CurrencyPipe, TitleCasePipe, DatePipe, DecimalPipe, NgClass, AsyncPipe, NgIf, NgFor, UpperCasePipe, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NgStyle, JsonPipe } from '@angular/common';
|
|
9
9
|
import { faPlus, faSlidersH, faMoneyCheck, faCancel, faCheck, faListAlt, faClone, faCogs, faTrash, faDownload, faEdit, faFileExport, faFile, faFilter, faPenFancy, faUserShield, faHistory, faHome, faFileImport, faInfoCircle, faLock, faArrowRight, faPen, faArrowLeft, faRecycle, faSave, faSearch, faEye, faBellSlash, faUpload, faUnlock, faUsers, faTruck, faTag, faReceipt, faBank, faArrowsH, faPlay, faPercent, faHandshake, faCircleExclamation, faTable, faSpoon } from '@fortawesome/free-solid-svg-icons';
|
|
10
10
|
import { faPaperPlane } from '@fortawesome/free-regular-svg-icons';
|
|
11
|
-
import {
|
|
11
|
+
import { timer, take, tap, merge, Observable, BehaviorSubject, debounceTime, filter, ReplaySubject, lastValueFrom, isObservable, of, firstValueFrom, throwError, map as map$1, distinct, interval, concat, distinctUntilChanged } from 'rxjs';
|
|
12
12
|
import { catchError, tap as tap$1, map, retry, debounceTime as debounceTime$1, filter as filter$1, startWith, switchMap, first, timeout } from 'rxjs/operators';
|
|
13
13
|
import { HttpClient, HttpHeaders, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
|
14
14
|
import * as i1$2 from '@angular/material/dialog';
|
|
@@ -1466,59 +1466,54 @@ class BtnService {
|
|
|
1466
1466
|
return index[iconType];
|
|
1467
1467
|
};
|
|
1468
1468
|
this.defaultType = 'secondary';
|
|
1469
|
-
this.setFormState = (
|
|
1470
|
-
btn?.
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1469
|
+
this.setFormState = (btn) => {
|
|
1470
|
+
btn.checkFormStateSub?.unsubscribe();
|
|
1471
|
+
btn.checkFormStateSub = timer(0, 1000)
|
|
1472
|
+
.pipe(take(3))
|
|
1473
|
+
.subscribe(() => {
|
|
1474
|
+
// btn.counter?.set(btn.counter() + 1);
|
|
1475
|
+
btn.formState.set(cloneDeep({
|
|
1476
|
+
pending: btn.form?.pending,
|
|
1477
|
+
dirty: btn.form?.dirty,
|
|
1478
|
+
invalid: btn.form?.invalid,
|
|
1479
|
+
pristine: btn.form?.pristine,
|
|
1480
|
+
valid: btn.form?.valid,
|
|
1481
|
+
}));
|
|
1476
1482
|
});
|
|
1477
|
-
// console.log(JSON.stringify({
|
|
1478
|
-
// pending: form?.pending,
|
|
1479
|
-
// dirty: form?.dirty,
|
|
1480
|
-
// invalid: form?.invalid,
|
|
1481
|
-
// pristine: form?.pristine,
|
|
1482
|
-
// valid: form?.valid,
|
|
1483
|
-
// }))
|
|
1484
|
-
// btn.formState.set(
|
|
1485
|
-
// cloneDeep({
|
|
1486
|
-
// pending: form?.pending,
|
|
1487
|
-
// dirty: form?.dirty,
|
|
1488
|
-
// invalid: form?.invalid,
|
|
1489
|
-
// pristine: form?.pristine,
|
|
1490
|
-
// valid: form?.valid,
|
|
1491
|
-
// }),
|
|
1492
|
-
// );
|
|
1493
1483
|
};
|
|
1494
|
-
this.setFormsState = (
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1484
|
+
this.setFormsState = (btn) => {
|
|
1485
|
+
btn.checkFormsStateSub?.unsubscribe();
|
|
1486
|
+
btn.checkFormsStateSub = timer(0, 1000)
|
|
1487
|
+
.pipe(take(3))
|
|
1488
|
+
.subscribe(() => {
|
|
1489
|
+
const fs = {
|
|
1490
|
+
pending: true,
|
|
1491
|
+
dirty: true,
|
|
1492
|
+
invalid: true,
|
|
1493
|
+
pristine: true,
|
|
1494
|
+
valid: true,
|
|
1495
|
+
};
|
|
1496
|
+
btn.forms?.forEach((x) => {
|
|
1497
|
+
if (!x.pending)
|
|
1498
|
+
fs.pending = x.pending;
|
|
1499
|
+
if (!x.dirty)
|
|
1500
|
+
fs.dirty = x.dirty;
|
|
1501
|
+
if (!x.invalid)
|
|
1502
|
+
fs.invalid = x.invalid;
|
|
1503
|
+
if (!x.pristine)
|
|
1504
|
+
fs.pristine = x.pristine;
|
|
1505
|
+
if (!x.valid)
|
|
1506
|
+
fs.valid = x.valid;
|
|
1507
|
+
});
|
|
1508
|
+
btn.formsState.set(fs);
|
|
1513
1509
|
});
|
|
1514
|
-
btn.formsState.set(fs);
|
|
1515
1510
|
};
|
|
1516
1511
|
// protected debouncerArray = [200].concat(new Array(3).fill(1).map((x, i) => (i + 1) * 1000));
|
|
1517
1512
|
this.handleForm = (form, btn) => form.statusChanges
|
|
1518
|
-
.pipe(tap((r) => this.setFormState(
|
|
1513
|
+
.pipe(tap((r) => this.setFormState(btn)))
|
|
1519
1514
|
.subscribe(() => { });
|
|
1520
1515
|
this.handleForms = (v, btn) => merge(v.map((f) => f.statusChanges))
|
|
1521
|
-
.pipe(tap((r) => this.setFormsState(
|
|
1516
|
+
.pipe(tap((r) => this.setFormsState(btn)))
|
|
1522
1517
|
.subscribe(() => { });
|
|
1523
1518
|
}
|
|
1524
1519
|
getType(v) {
|
|
@@ -3490,20 +3485,20 @@ class BtnComponent {
|
|
|
3490
3485
|
set _form(v) {
|
|
3491
3486
|
this.formSub?.unsubscribe();
|
|
3492
3487
|
this.form = v;
|
|
3493
|
-
this.btnS.setFormState(
|
|
3488
|
+
this.btnS.setFormState(this);
|
|
3494
3489
|
if (this.debug())
|
|
3495
3490
|
debugger;
|
|
3496
3491
|
if (v)
|
|
3497
|
-
this.formSub = this.btnS.
|
|
3492
|
+
this.formSub = v.statusChanges.pipe(tap((r) => this.btnS.setFormState(this))).subscribe(() => { });
|
|
3498
3493
|
}
|
|
3499
3494
|
set _forms(v) {
|
|
3500
3495
|
this.formsSub?.unsubscribe();
|
|
3501
3496
|
this.forms = v;
|
|
3502
|
-
this.btnS.setFormsState(
|
|
3497
|
+
this.btnS.setFormsState(this);
|
|
3503
3498
|
if (this.debug())
|
|
3504
3499
|
debugger;
|
|
3505
3500
|
if (v)
|
|
3506
|
-
this.formsSub = this.btnS.
|
|
3501
|
+
this.formsSub = merge(v.map((f) => f.statusChanges)).pipe(tap((r) => this.btnS.setFormsState(this))).subscribe(() => { });
|
|
3507
3502
|
}
|
|
3508
3503
|
/**
|
|
3509
3504
|
* @deprecated no longer needed to detect the correct spacing between icon and text
|
|
@@ -3533,7 +3528,6 @@ class BtnComponent {
|
|
|
3533
3528
|
this.centerBtn = input(true);
|
|
3534
3529
|
this.danger = input();
|
|
3535
3530
|
this.warning = input();
|
|
3536
|
-
this.counter = signal(0);
|
|
3537
3531
|
this.iconBtn = signal(false);
|
|
3538
3532
|
this.loading = signal(false);
|
|
3539
3533
|
this._mclass = signal(null);
|
|
@@ -3585,29 +3579,11 @@ class BtnComponent {
|
|
|
3585
3579
|
const disabled = this.disabled(), valid = this.valid(), onFormInvalid = this.onFormInvalid(), form = this.formState(), forms = this.formsState();
|
|
3586
3580
|
return disabled || !valid || (onFormInvalid == OnFormInvalid.disable && (form?.invalid || form?.pending || forms?.pending)) || false;
|
|
3587
3581
|
});
|
|
3588
|
-
const sub = this.checkFormState$.pipe().subscribe(() => {
|
|
3589
|
-
this.checkFormStateSub?.unsubscribe();
|
|
3590
|
-
let c = 0;
|
|
3591
|
-
this.checkFormStateSub = timer(0, 1000)
|
|
3592
|
-
.pipe(tap(() => {
|
|
3593
|
-
console.log(++c);
|
|
3594
|
-
}), take(3))
|
|
3595
|
-
.subscribe(() => {
|
|
3596
|
-
this.counter?.set(this.counter() + 1);
|
|
3597
|
-
this.formState.set(cloneDeep({
|
|
3598
|
-
pending: this.form?.pending,
|
|
3599
|
-
dirty: this.form?.dirty,
|
|
3600
|
-
invalid: this.form?.invalid,
|
|
3601
|
-
pristine: this.form?.pristine,
|
|
3602
|
-
valid: this.form?.valid,
|
|
3603
|
-
}));
|
|
3604
|
-
});
|
|
3605
|
-
});
|
|
3606
3582
|
this.destroyRef.onDestroy(() => {
|
|
3607
3583
|
this.formSub?.unsubscribe();
|
|
3608
3584
|
this.formsSub?.unsubscribe();
|
|
3609
|
-
sub?.unsubscribe();
|
|
3610
3585
|
this.checkFormStateSub?.unsubscribe();
|
|
3586
|
+
this.checkFormsStateSub?.unsubscribe();
|
|
3611
3587
|
});
|
|
3612
3588
|
effect(() => {
|
|
3613
3589
|
const fs = this.formState();
|