chrv-components 1.5.70 → 1.5.71

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.
Binary file
@@ -11,6 +11,7 @@ import { ChrSearchSelectComponent } from "../chr-search-select/chr-search-select
11
11
  import { MatSlideToggleModule } from "@angular/material/slide-toggle";
12
12
  import { DatePipe, CommonModule, DATE_PIPE_DEFAULT_OPTIONS, } from "@angular/common";
13
13
  import { MatAutocompleteModule } from "@angular/material/autocomplete";
14
+ import { debounceTime } from "rxjs";
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "@angular/forms";
16
17
  import * as i2 from "@angular/common";
@@ -25,6 +26,7 @@ export class ChrFormComponent {
25
26
  this.modelChange = new EventEmitter();
26
27
  this.valuesChange = new EventEmitter();
27
28
  this.compact = false;
29
+ this.debounce = 0;
28
30
  this.formChange = new EventEmitter();
29
31
  this.form = this.builder.group({});
30
32
  this.updateValueAndValidity = () => {
@@ -88,7 +90,9 @@ export class ChrFormComponent {
88
90
  for (const section of this.sections) {
89
91
  for (const control of section.controls) {
90
92
  const formControl = this.form.get(control.name);
91
- formControl.valueChanges.subscribe((e) => {
93
+ formControl.valueChanges
94
+ .pipe(debounceTime(this.debounce))
95
+ .subscribe((e) => {
92
96
  this.formChange.emit({ [control.name]: e });
93
97
  });
94
98
  }
@@ -237,7 +241,7 @@ export class ChrFormComponent {
237
241
  }
238
242
  }
239
243
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DatePipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
240
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrFormComponent, isStandalone: true, selector: "app-chr-form", inputs: { sections: "sections", valid: "valid", model: "model", disabled: "disabled", submit: "submit", compact: "compact" }, outputs: { validChange: "validChange", modelChange: "modelChange", valuesChange: "valuesChange", formChange: "formChange" }, providers: [
244
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrFormComponent, isStandalone: true, selector: "app-chr-form", inputs: { sections: "sections", valid: "valid", model: "model", disabled: "disabled", submit: "submit", compact: "compact", debounce: "debounce" }, outputs: { validChange: "validChange", modelChange: "modelChange", valuesChange: "valuesChange", formChange: "formChange" }, providers: [
241
245
  DatePipe,
242
246
  {
243
247
  provide: DATE_PIPE_DEFAULT_OPTIONS,
@@ -284,7 +288,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
284
288
  type: Input
285
289
  }], compact: [{
286
290
  type: Input
291
+ }], debounce: [{
292
+ type: Input
287
293
  }], formChange: [{
288
294
  type: Output
289
295
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsR0FNdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQ04sUUFBUSxFQUNSLFlBQVksRUFDWix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUscUJBQXFC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QU87c0JBQWYsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRFdmVudEVtaXR0ZXIsXG5cdEFmdGVyVmlld0luaXQsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRWaWV3RW5jYXBzdWxhdGlvbixcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdE9uQ2hhbmdlcyxcblx0U2ltcGxlQ2hhbmdlcyxcblx0T25Jbml0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSwgdHlwZSB9IGZyb20gXCIuL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG5cdEZvcm1CdWlsZGVyLFxuXHRGb3JtR3JvdXAsXG5cdFZhbGlkYXRvcnMsXG5cdEZvcm1Db250cm9sLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGRlY2ltYWwgfSBmcm9tIFwiLi9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gXCIuL2Noci12YWxpZGF0b3JzL21heC1kYXRlLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgTWF0RXJyb3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IENoclNlYXJjaFNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xuaW1wb3J0IHtcblx0RGF0ZVBpcGUsXG5cdENvbW1vbk1vZHVsZSxcblx0REFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuXHRkaXNwbGF5OiBzdHJpbmc7XG5cdGNhbGxiYWNrPzogRnVuY3Rpb247XG5cdHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcblx0cnVsZTogc3RyaW5nO1xuXHR2YWx1ZT86IGFueTtcblx0ZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdHNwYW4/OiBzdHJpbmc7XG5cdHdpZHRoPzogXCJjb2xcIiB8IFwicm93XCI7XG5cdGNvbD86IG51bWJlcjtcblx0cm93PzogbnVtYmVyO1xuXHR0eXBlOlxuXHRcdHwgXCJ0ZXh0XCJcblx0XHR8IFwicGFzc3dvcmRcIlxuXHRcdHwgXCJ0ZXh0QXJlYVwiXG5cdFx0fCBcIm51bWJlclwiXG5cdFx0fCBcImRhdGVcIlxuXHRcdHwgXCJkYXRldGltZVwiXG5cdFx0fCBcInNlYXJjaFNlbGVjdFwiXG5cdFx0fCBcImNvbG9yXCJcblx0XHR8IFwidG9nZ2xlXCI7XG5cdHZhbHVlPzogYW55O1xuXHRkYXRhPzogYW55W10gfCBudWxsO1xuXHRpY29uPzogc3RyaW5nO1xuXHRpY29uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0aWNvbkNhbGxiYWNrRGlzYWJsZWQ/OiBib29sZWFuO1xuXHRpY29uVG9vbHRpcD86IHN0cmluZztcblx0Zm4/OiAob2JqZWN0OiBhbnkpID0+IHN0cmluZztcblx0ZmlsdGVycz86IElTZWFyY2hGaWx0ZXJbXTtcblx0dmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNlY3Rpb24ge1xuXHR0aXRsZT86IHN0cmluZztcblx0Y29udHJvbHM6IElDb250cm9sW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sIHtcblx0W2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImFwcC1jaHItZm9ybVwiLFxuXHR0ZW1wbGF0ZVVybDogXCIuL2Noci1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG5cdHN0eWxlVXJsczogW1xuXHRcdFwiLi9jaHItZm9ybS5jb21wb25lbnQuc2Nzc1wiLFxuXHRcdFwiLi4vLi4vLi4vLi4vLi4vdGFpbHdpbmRidWlsZC5jc3NcIixcblx0XHRcIi4uL2Noci1mb3JtL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXG5cdF0sXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXHRcdEZvcm1zTW9kdWxlLFxuXHRcdE1hdFRvb2x0aXBNb2R1bGUsXG5cdFx0TWF0SWNvbk1vZHVsZSxcblx0XHRNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcblx0XHRNYXRFcnJvcixcblx0XHRDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQsXG5cdFx0TWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuXHRcdERhdGVQaXBlLFxuXHRcdENvbW1vbk1vZHVsZSxcblx0XHRUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxuXHRdLFxuXHRwcm92aWRlcnM6IFtcblx0XHREYXRlUGlwZSxcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxuXHRcdFx0dXNlVmFsdWU6IHsgZGF0ZUZvcm1hdDogXCJzaG9ydERhdGVcIiB9LFxuXHRcdH0sXG5cdF0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cdEBJbnB1dCgpIHNlY3Rpb25zPzogSUZvcm1TZWN0aW9uW107XG5cdEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblx0QE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0QElucHV0KCkgbW9kZWw/OiBhbnk7XG5cdEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXHRASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW47XG5cdEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIHN1Ym1pdD86IEZ1bmN0aW9uO1xuXG5cdEBJbnB1dCgpIGNvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG5cdGZvcm06IEZvcm1Hcm91cCA9IHRoaXMuYnVpbGRlci5ncm91cCh7fSk7XG5cblx0dXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9ICgpID0+IHtcblx0XHR0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcblx0XHR0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcblx0fTtcblxuXHRwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuXHRcdHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuXHRcdHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG5cdCkge31cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9pbml0VmFsaWRhdG9ycygpO1xuXHRcdHRoaXMuX3JlZ2lzdGVySW5wdXRFbWl0dGVycygpO1xuXHRcdHRoaXMuX3JlZ2lzdGVySW5wdXRVcGRhdGVycygpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXHRcdC8vdGhpcy5faW5pdFZhbHVlcygpO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0XHR0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy5mb3JtLnZhbGlkKTtcblx0XHRcdHRoaXMudmFsdWVzQ2hhbmdlLmVtaXQocmVzKTtcblx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0XHR9KTtcblx0fVxuXG5cdHZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW2lucHV0XT8udmFsdWU7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybS52YWx1ZTtcblx0fTtcblxuXHRzZXRWYWx1ZSA9IChpbnB1dDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0aWYgKGlucHV0KSB0aGlzLmZvcm0uZ2V0KGlucHV0KT8uc2V0VmFsdWUodmFsdWUpO1xuXHR9O1xuXG5cdGlzVmFsaWQgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uZ2V0KGlucHV0KT8udmFsaWQ7XG5cdFx0cmV0dXJuIHRoaXMudmFsaWQ7XG5cdH07XG5cblx0aXNDb250cm9sUmVxdWlyZWQgPSAoY29udHJvbDogSUNvbnRyb2wpID0+IHtcblx0XHRyZXR1cm4gY29udHJvbC52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi5ydWxlLnRvTG93ZXJDYXNlKCkgPT0gXCJyZXF1aXJlZFwiKTtcblx0fTtcblxuXHRwYXRjaFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0dGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBba2V5XTogdmFsdWUgfSk7XG5cdH07XG5cblx0cGF0Y2ggPSAobW9kZWw6IGFueSkgPT4ge1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuXHRcdFx0dGhpcy5wYXRjaFZhbHVlKGtleSwgbW9kZWxba2V5XSk7XG5cdFx0fVxuXHRcdHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuXHRcdHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cdH07XG5cblx0cmVzZXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLnJlc2V0KCk7XG5cdH07XG5cblx0c2V0Q29udHJvbFZhbHVlID0gKFxuXHRcdG1vZGVsOiBhbnksXG5cdFx0Y29udHJvbDogSUNvbnRyb2wsXG5cdFx0dmFsdWU6IGFueSxcblx0XHRpbmRleD86IG51bWJlclxuXHQpID0+IHtcblx0XHRpZiAobW9kZWw/Lltjb250cm9sLm5hbWVdKSB7XG5cdFx0XHRtb2RlbFtjb250cm9sLm5hbWVdID0gdGhpcy5fY29udmVydFZhbHVlVG9UeXBlKHZhbHVlLCBjb250cm9sLnR5cGUpO1xuXHRcdH1cblx0XHRpZiAoY29udHJvbC52YWx1ZSlcblx0XHRcdGNvbnRyb2wudmFsdWUgPSB0aGlzLl9jb252ZXJ0VmFsdWVUb1R5cGUodmFsdWUsIGNvbnRyb2wudHlwZSk7XG5cblx0XHR0aGlzLnBhdGNoVmFsdWUoXG5cdFx0XHRjb250cm9sLm5hbWUsXG5cdFx0XHR0aGlzLl9jb252ZXJ0VmFsdWVUb1R5cGUodmFsdWUsIGNvbnRyb2wudHlwZSlcblx0XHQpO1xuXHR9O1xuXG5cdHB1YmxpYyByZXNpemUgPSAodGV4dEFyZWE6IEhUTUxUZXh0QXJlYUVsZW1lbnQpID0+IHtcblx0XHRjb25zdCBpbml0aWFsSGVpZ2h0ID0gdGV4dEFyZWEuc3R5bGUuaGVpZ2h0O1xuXHRcdHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IGluaXRpYWxIZWlnaHQ7XG5cdFx0dGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gXCJcIiArIHRleHRBcmVhLnNjcm9sbEhlaWdodCArIFwicHhcIjtcblx0fTtcblxuXHRwdWJsaWMgZG9TdWJtaXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblx0XHRpZiAodGhpcy52YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQpIHRoaXMuc3VibWl0Py4odGhpcy5mb3JtLnZhbHVlKTtcblx0fTtcblxuXHRwdWJsaWMgdHJhY2sgPSAoY29udHJvbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG5cdFx0dGhpcy5mb3JtLmdldChjb250cm9sKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXHRcdHJldHVybiBpbmRleDtcblx0fTtcblxuXHRwcml2YXRlIF9yZWdpc3RlcklucHV0RW1pdHRlcnMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuc2VjdGlvbnMhKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9scykge1xuXHRcdFx0XHRjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKTtcblx0XHRcdFx0Zm9ybUNvbnRyb2whLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGUpID0+IHtcblx0XHRcdFx0XHR0aGlzLmZvcm1DaGFuZ2UuZW1pdCh7IFtjb250cm9sLm5hbWVdOiBlIH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dFVwZGF0ZXJzID0gKCkgPT4ge1xuXHRcdGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLnNlY3Rpb25zISkge1xuXHRcdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcblx0XHRcdFx0Y29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGNvbnRyb2wubmFtZSkhO1xuXHRcdFx0XHRmb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLm1vZGVsKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gPSB2YWx1ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udHJvbC52YWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgX2luaXRWYWx1ZXMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuc2VjdGlvbnMgfHwgW10pIHtcblx0XHRcdGZvciAobGV0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9scykge1xuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IHRoaXMubW9kZWwgPyB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gOiBudWxsO1xuXHRcdFx0XHRpZiAoIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPSBcIm51bWJlclwiKSB7XG5cdFx0XHRcdFx0aWYgKGNvbnRyb2wudmFsdWUpXG5cdFx0XHRcdFx0XHR0aGlzLmZvcm1cblx0XHRcdFx0XHRcdFx0LmdldChjb250cm9sLm5hbWUpIVxuXHRcdFx0XHRcdFx0XHQucGF0Y2hWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHR0aGlzLl9jb252ZXJ0VmFsdWVUb1R5cGUoY29udHJvbC52YWx1ZSwgY29udHJvbC50eXBlKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGVsc2UgdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpIS5wYXRjaFZhbHVlKG51bGwpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuZm9ybVxuXHRcdFx0XHRcdFx0LmdldChjb250cm9sLm5hbWUpIVxuXHRcdFx0XHRcdFx0LnBhdGNoVmFsdWUodGhpcy5fY29udmVydFZhbHVlVG9UeXBlKHZhbHVlLCBjb250cm9sLnR5cGUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIF9jb252ZXJ0VmFsdWVUb1R5cGUgPSAoXG5cdFx0dmFsdWU6IGFueSxcblx0XHR0eXBlOlxuXHRcdFx0fCBcInRleHRcIlxuXHRcdFx0fCBcInBhc3N3b3JkXCJcblx0XHRcdHwgXCJ0ZXh0QXJlYVwiXG5cdFx0XHR8IFwibnVtYmVyXCJcblx0XHRcdHwgXCJkYXRlXCJcblx0XHRcdHwgXCJkYXRldGltZVwiXG5cdFx0XHR8IFwic2VhcmNoU2VsZWN0XCJcblx0XHRcdHwgXCJzZWxlY3RcIlxuXHRcdFx0fCBcImNvbG9yXCJcblx0XHRcdHwgXCJ0b2dnbGVcIlxuXHQpID0+IHtcblx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdGNhc2UgXCJ0ZXh0XCI6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBcIlwiO1xuXHRcdFx0Y2FzZSBcIm51bWJlclwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgfHwgMDtcblx0XHRcdGNhc2UgXCJzZWFyY2hTZWxlY3RcIjoge1xuXHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpID09IFwiXCIpIHZhbHVlID0gbnVsbDtcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IG51bGw7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwidGV4dEFyZWFcIjpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IFwiXCI7XG5cdFx0XHRjYXNlIFwicGFzc3dvcmRcIjpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IFwiXCI7XG5cdFx0XHRjYXNlIFwic2VsZWN0XCI6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBudWxsO1xuXHRcdFx0Y2FzZSBcImRhdGVcIjpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBcInl5eXktTU0tZGRcIik7XG5cdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBcInl5eXktTU0tZGRUSEg6bW1cIik7XG5cdFx0XHRjYXNlIFwiY29sb3JcIjpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IFwiXCI7XG5cdFx0XHRjYXNlIFwidG9nZ2xlXCI6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSBhcyBib29sZWFuO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblx0fTtcblxuXHRmb3JtYXREYXRlRm9ySW5wdXQgPSAoZGF0ZTogYW55KSA9PiB7XG5cdFx0dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgXCJ5eXl5LU1NLWRkXCIpO1xuXHR9O1xuXG5cdHByaXZhdGUgX2luaXRWYWxpZGF0b3JzKCkge1xuXHRcdGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLnNlY3Rpb25zIHx8IFtdKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGlucHV0IG9mIHNlY3Rpb24uY29udHJvbHMpIHtcblx0XHRcdFx0aWYgKGlucHV0LnR5cGUgPT0gXCJzZWFyY2hTZWxlY3RcIiAmJiAhaW5wdXQuZm4pXG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0XCJBbiBpbnB1dCBvZiB0eXBlICdzZWFyY2hTZWxlY3QnIG5lZWRzIGEgZGlzcGxheSBmdW5jdGlvbiAhXCJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFxuXHRcdFx0XHRcdHRoaXMuX2NvbnZlcnRWYWx1ZVRvVHlwZSh0aGlzLm1vZGVsPy5baW5wdXQubmFtZV0sIGlucHV0LnR5cGUpIHx8XG5cdFx0XHRcdFx0XHRpbnB1dC52YWx1ZSxcblx0XHRcdFx0XHR0aGlzLl9nZXRWYWxpZGF0b3JzKGlucHV0LnZhbGlkYXRpb25zKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLmZvcm0uYWRkQ29udHJvbChpbnB1dC5uYW1lLCBjb250cm9sKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9nZXRWYWxpZGF0b3JzID0gKHZhbGlkYXRpb25zPzogSUNvbnRyb2xWYWxpZGF0aW9uW10pID0+IHtcblx0XHRjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG5cdFx0aWYgKCF2YWxpZGF0aW9ucykgcmV0dXJuIHZhbGlkYXRvcnM7XG5cdFx0Ly9Td2l0Y2ggY2FzZSBicmVha3MgdGhlIG1vYmlsZSBhcHAgc28gd2UnbGwgZG8gaWYgc3RhdGVtZW50c1xuXHRcdGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuXHRcdFx0Y29uc3QgcnVsZSA9IHZhbGlkYXRpb24ucnVsZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtaW5cIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBwZXRpdGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJyZXF1aXJlZFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2UgY2hhbXBzIGVzdCByZXF1aXMgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcImVtYWlsXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSBhZHJlc3NlIGVtYWlsIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1pbmxlbmd0aFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heGxlbmd0aFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcInR5cGVcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBuJ2VzdCBwYXMgdmFsaWRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKHR5cGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJkZWNpbWFsXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gYExlIG5vbWJyZSBkZSBkw6ljaW1hbCBuJ2VzdCBwYXMgdmFsaWRlIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goZGVjaW1hbCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heGRhdGVcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBgQ2V0dGUgZGF0ZSBlc3QgdHJvcCBncmFuZGUgISAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKG1heERhdGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdmFsaWRhdG9ycztcblx0fTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIG1pbi1oLTUvNiBtdC0yXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgPGRpdj5cbiAgICAgICAgQGlmIChzZWN0aW9uLnRpdGxlKSB7XG4gICAgICAgIDxoMiBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQteGwgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XG4gICAgICAgIDwvaDI+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCIgW25nQ2xhc3NdPVwiXG4gICAgICAgIGNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgICAgICBAZm9yIChjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGluZGV4OyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldFxuICAgICAgICAgIGxhc3QgPVxuICAgICAgICAgICRsYXN0KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaC1taW4gbXQtMlwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdzbTpjb2wtc3Bhbi0yJzogKGNvbnRyb2wud2lkdGggPT0gJ3JvdycgJiYgIWNvbXBhY3QpIHx8IGNvbnRyb2wudHlwZT09J3RleHRBcmVhJyAmJiBjb21wYWN0ICYmIGNvbnRyb2wud2lkdGggIT0gJ3JvdycsXG4gICAgICAgICAgICAnc206Y29sLXNwYW4tNCc6IGNvbnRyb2wud2lkdGggPT0ncm93JyAmJiBjb21wYWN0LFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGU9PSdzZWFyY2hTZWxlY3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGFwcC1jaHItc2VhcmNoLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlIGlucHV0IHotMCB3LWZ1bGxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImNvbnRyb2wuZGF0YSB8fCBbXVwiIFtkaXNwbGF5XT1cImNvbnRyb2wuZm4hXCIgW25hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgICAgICAgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICAgICAgICBbKG1vZGVsKV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGFic29sdXRlIHRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIiBbZm9yXT1cImNvbnRyb2wubmFtZVwiPnt7XG4gICAgICAgICAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmXG4gICAgICAgICAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgei0wIHctZnVsbCBncm91cC9pbnB1dHMgY29udGVudFwiPlxuICAgICAgICAgICAgICA8IS0tIEhlcmUgd2Ugd2lsbCAqbmdJZiBlYWNoIHR5cGUgb2YgaW5wdXQgY2F1c2UgaXQncyB0aGUgY2xlYW5lc3Qgd2F5IEkgY2FuIGltYWdpbmUtLT5cbiAgICAgICAgICAgICAgPCEtLVRFWFQtLT5cbiAgICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZShtb2RlbCwgY29udHJvbCwgJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8IS0tUEFTU1dPUkQtLT5cbiAgICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgW3ZhbHVlXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0Q29udHJvbFZhbHVlKG1vZGVsLCBjb250cm9sLCAkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS1URVhUIEFSRUEtLT5cbiAgICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHRBcmVhJykge1xuICAgICAgICAgICAgICA8dGV4dGFyZWEgI3RleHRBcmVhIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZShtb2RlbCwgY29udHJvbCwgJGV2ZW50KVwiIChpbnB1dCk9XCJyZXNpemUodGV4dEFyZWEpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuby1zY3JvbGxiYXIgaW5wdXQgIXJlc2l6ZS1ub25lIGhlaWdodC1ub3JtYWxpemVkIGJsb2NrIHB5LTIgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLU5VTUJFUi0tPlxuICAgICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAwXCJcbiAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0Q29udHJvbFZhbHVlKG1vZGVsLCBjb250cm9sLCAkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS1EQVRFLS0+XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRlJykge1xuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUobW9kZWwsIGNvbnRyb2wsICRldmVudClcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yIHB4LTAgdy1mdWxsIGhlaWdodC1ub3JtYWxpemVkIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRldGltZScpIHtcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZShtb2RlbCwgY29udHJvbCwgJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLUNPTE9SLS0+XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdjb2xvcicpIHtcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZShtb2RlbCwgY29udHJvbCwgJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNDJweDtcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMS41IG0tMCBweC0wIHctZnVsbCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndG9nZ2xlJyl7XG4gICAgICAgICAgICAgIDxpbnB1dCAjdG9nZ2xlIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiaGlkZGVuIGNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZShtb2RlbCwgY29udHJvbCwgJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHRvZ2dsZS13cmFwcGVyIGJsb2NrIGlucHV0IGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlPy5jbGljaygpXCIgY2xhc3M9XCJyZWxhdGl2ZSBibG9jayBpbnB1dCB0b2dnbGVcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgIT0gJ3NlYXJjaFNlbGVjdCcpIHtcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgICAgICAgICBjb250cm9sLmxhYmVsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmXG4gICAgICAgICAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC5pY29uICYmICFkaXNhYmxlZCkge1xuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgPyAndGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS01MDAnOid0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcC0yLjUgYm90dG9tLTAgcmlnaHQtMFwiIFttYXRUb29sdGlwXT1cImNvbnRyb2wuaWNvblRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiIWNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgJiYgY29udHJvbC5pY29uQ2FsbGJhY2s/Lihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnZhbHVlKVwiPjxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGlucHV0IGp1c3RpZnktY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgdGV4dC1sZ1wiPnt7Y29udHJvbC5pY29ufX08L21hdC1pY29uPjwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wuc3Bhbikge1xuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiIWZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzIHx8ICFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgPyAndGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDAnIDogJyF0ZXh0LXJlZC01MDAgZGFyazohdGV4dC1yZWQtODAwJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0wIHRleHQteHNcIj57eyBjb250cm9sLnNwYW5cbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChpbmRleCAhPSAoc2VjdGlvbnN8fFtdKS5sZW5ndGggLSAxICYmICFjb21wYWN0KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweS00XCI+XG4gICAgICAgICAgPGhyIGNsYXNzPVwiXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZmllbGRzZXQ+XG4gIDwvZm9ybT5cbjwvZGl2PiJdfQ==
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsR0FNdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQ04sUUFBUSxFQUNSLFlBQVksRUFDWix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUscUJBQXFC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Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRFdmVudEVtaXR0ZXIsXG5cdEFmdGVyVmlld0luaXQsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRWaWV3RW5jYXBzdWxhdGlvbixcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdE9uQ2hhbmdlcyxcblx0U2ltcGxlQ2hhbmdlcyxcblx0T25Jbml0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSwgdHlwZSB9IGZyb20gXCIuL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG5cdEZvcm1CdWlsZGVyLFxuXHRGb3JtR3JvdXAsXG5cdFZhbGlkYXRvcnMsXG5cdEZvcm1Db250cm9sLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGRlY2ltYWwgfSBmcm9tIFwiLi9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gXCIuL2Noci12YWxpZGF0b3JzL21heC1kYXRlLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgTWF0RXJyb3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IENoclNlYXJjaFNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xuaW1wb3J0IHtcblx0RGF0ZVBpcGUsXG5cdENvbW1vbk1vZHVsZSxcblx0REFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgZGVib3VuY2UsIGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZpbHRlciB7XG5cdGRpc3BsYXk6IHN0cmluZztcblx0Y2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0dG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbFZhbGlkYXRpb24ge1xuXHRydWxlOiBzdHJpbmc7XG5cdHZhbHVlPzogYW55O1xuXHRkaXNwbGF5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sIHtcblx0bGFiZWw/OiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0c3Bhbj86IHN0cmluZztcblx0d2lkdGg/OiBcImNvbFwiIHwgXCJyb3dcIjtcblx0Y29sPzogbnVtYmVyO1xuXHRyb3c/OiBudW1iZXI7XG5cdHR5cGU6XG5cdFx0fCBcInRleHRcIlxuXHRcdHwgXCJwYXNzd29yZFwiXG5cdFx0fCBcInRleHRBcmVhXCJcblx0XHR8IFwibnVtYmVyXCJcblx0XHR8IFwiZGF0ZVwiXG5cdFx0fCBcImRhdGV0aW1lXCJcblx0XHR8IFwic2VhcmNoU2VsZWN0XCJcblx0XHR8IFwiY29sb3JcIlxuXHRcdHwgXCJ0b2dnbGVcIjtcblx0dmFsdWU/OiBhbnk7XG5cdGRhdGE/OiBhbnlbXSB8IG51bGw7XG5cdGljb24/OiBzdHJpbmc7XG5cdGljb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHRpY29uQ2FsbGJhY2tEaXNhYmxlZD86IGJvb2xlYW47XG5cdGljb25Ub29sdGlwPzogc3RyaW5nO1xuXHRmbj86IChvYmplY3Q6IGFueSkgPT4gc3RyaW5nO1xuXHRmaWx0ZXJzPzogSVNlYXJjaEZpbHRlcltdO1xuXHR2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2VjdGlvbiB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRjb250cm9sczogSUNvbnRyb2xbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2wge1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG59XG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiYXBwLWNoci1mb3JtXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcblx0c3R5bGVVcmxzOiBbXG5cdFx0XCIuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXG5cdFx0XCIuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzc1wiLFxuXHRcdFwiLi4vY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnNjc3NcIixcblx0XSxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1xuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdFx0Rm9ybXNNb2R1bGUsXG5cdFx0TWF0VG9vbHRpcE1vZHVsZSxcblx0XHRNYXRJY29uTW9kdWxlLFxuXHRcdE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuXHRcdE1hdEVycm9yLFxuXHRcdENoclNlYXJjaFNlbGVjdENvbXBvbmVudCxcblx0XHRNYXRBdXRvY29tcGxldGVNb2R1bGUsXG5cdFx0RGF0ZVBpcGUsXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUsXG5cdF0sXG5cdHByb3ZpZGVyczogW1xuXHRcdERhdGVQaXBlLFxuXHRcdHtcblx0XHRcdHByb3ZpZGU6IERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG5cdFx0XHR1c2VWYWx1ZTogeyBkYXRlRm9ybWF0OiBcInNob3J0RGF0ZVwiIH0sXG5cdFx0fSxcblx0XSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBDaHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblx0QElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcblx0QElucHV0KCkgdmFsaWQ/OiBib29sZWFuO1xuXHRAT3V0cHV0KCkgdmFsaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuXHRASW5wdXQoKSBtb2RlbD86IGFueTtcblx0QE91dHB1dCgpIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG5cdEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbjtcblx0QE91dHB1dCgpIHZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QElucHV0KCkgc3VibWl0PzogRnVuY3Rpb247XG5cblx0QElucHV0KCkgY29tcGFjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdEBJbnB1dCgpIGRlYm91bmNlOiBudW1iZXIgPSAwO1xuXG5cdEBPdXRwdXQoKSBmb3JtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPiA9XG5cdFx0bmV3IEV2ZW50RW1pdHRlcjxJRm9ybUNvbnRyb2w+KCk7XG5cblx0Zm9ybTogRm9ybUdyb3VwID0gdGhpcy5idWlsZGVyLmdyb3VwKHt9KTtcblxuXHR1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuXHRcdHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXHR9O1xuXG5cdHB1YmxpYyBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgYnVpbGRlcjogRm9ybUJ1aWxkZXIsXG5cdFx0cHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXG5cdFx0cHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcblx0KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuX2luaXRWYWxpZGF0b3JzKCk7XG5cdFx0dGhpcy5fcmVnaXN0ZXJJbnB1dEVtaXR0ZXJzKCk7XG5cdFx0dGhpcy5fcmVnaXN0ZXJJbnB1dFVwZGF0ZXJzKCk7XG5cdFx0dGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0Ly90aGlzLl9pbml0VmFsdWVzKCk7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0dGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0dGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcblx0XHRcdHRoaXMudmFsaWRDaGFuZ2UuZW1pdCh0aGlzLmZvcm0udmFsaWQpO1xuXHRcdFx0dGhpcy52YWx1ZXNDaGFuZ2UuZW1pdChyZXMpO1xuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH0pO1xuXHR9XG5cblx0dmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbaW5wdXRdPy52YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5mb3JtLnZhbHVlO1xuXHR9O1xuXG5cdHNldFZhbHVlID0gKGlucHV0OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHRpZiAoaW5wdXQpIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy5zZXRWYWx1ZSh2YWx1ZSk7XG5cdH07XG5cblx0aXNWYWxpZCA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuXHRcdGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy52YWxpZDtcblx0XHRyZXR1cm4gdGhpcy52YWxpZDtcblx0fTtcblxuXHRpc0NvbnRyb2xSZXF1aXJlZCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuXHRcdHJldHVybiBjb250cm9sLnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnJ1bGUudG9Mb3dlckNhc2UoKSA9PSBcInJlcXVpcmVkXCIpO1xuXHR9O1xuXG5cdHBhdGNoVmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHR0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcblx0fTtcblxuXHRwYXRjaCA9IChtb2RlbDogYW55KSA9PiB7XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobW9kZWwpKSB7XG5cdFx0XHR0aGlzLnBhdGNoVmFsdWUoa2V5LCBtb2RlbFtrZXldKTtcblx0XHR9XG5cdFx0dGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG5cdFx0dGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblx0fTtcblxuXHRyZXNldCA9ICgpID0+IHtcblx0XHR0aGlzLmZvcm0ucmVzZXQoKTtcblx0fTtcblxuXHRzZXRDb250cm9sVmFsdWUgPSAoXG5cdFx0bW9kZWw6IGFueSxcblx0XHRjb250cm9sOiBJQ29udHJvbCxcblx0XHR2YWx1ZTogYW55LFxuXHRcdGluZGV4PzogbnVtYmVyXG5cdCkgPT4ge1xuXHRcdGlmIChtb2RlbD8uW2NvbnRyb2wubmFtZV0pIHtcblx0XHRcdG1vZGVsW2NvbnRyb2wubmFtZV0gPSB0aGlzLl9jb252ZXJ0VmFsdWVUb1R5cGUodmFsdWUsIGNvbnRyb2wudHlwZSk7XG5cdFx0fVxuXHRcdGlmIChjb250cm9sLnZhbHVlKVxuXHRcdFx0Y29udHJvbC52YWx1ZSA9IHRoaXMuX2NvbnZlcnRWYWx1ZVRvVHlwZSh2YWx1ZSwgY29udHJvbC50eXBlKTtcblxuXHRcdHRoaXMucGF0Y2hWYWx1ZShcblx0XHRcdGNvbnRyb2wubmFtZSxcblx0XHRcdHRoaXMuX2NvbnZlcnRWYWx1ZVRvVHlwZSh2YWx1ZSwgY29udHJvbC50eXBlKVxuXHRcdCk7XG5cdH07XG5cblx0cHVibGljIHJlc2l6ZSA9ICh0ZXh0QXJlYTogSFRNTFRleHRBcmVhRWxlbWVudCkgPT4ge1xuXHRcdGNvbnN0IGluaXRpYWxIZWlnaHQgPSB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQ7XG5cdFx0dGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gaW5pdGlhbEhlaWdodDtcblx0XHR0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBcIlwiICsgdGV4dEFyZWEuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiO1xuXHR9O1xuXG5cdHB1YmxpYyBkb1N1Ym1pdCA9ICgpID0+IHtcblx0XHR0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuXHRcdGlmICh0aGlzLnZhbGlkICYmIHRoaXMuZm9ybS52YWxpZCkgdGhpcy5zdWJtaXQ/Lih0aGlzLmZvcm0udmFsdWUpO1xuXHR9O1xuXG5cdHB1YmxpYyB0cmFjayA9IChjb250cm9sOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcblx0XHR0aGlzLmZvcm0uZ2V0KGNvbnRyb2wpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cdFx0cmV0dXJuIGluZGV4O1xuXHR9O1xuXG5cdHByaXZhdGUgX3JlZ2lzdGVySW5wdXRFbWl0dGVycyA9ICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5zZWN0aW9ucyEpIHtcblx0XHRcdGZvciAoY29uc3QgY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG5cdFx0XHRcdGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpO1xuXHRcdFx0XHRmb3JtQ29udHJvbCEudmFsdWVDaGFuZ2VzXG5cdFx0XHRcdFx0LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpKVxuXHRcdFx0XHRcdC5zdWJzY3JpYmUoKGUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuZm9ybUNoYW5nZS5lbWl0KHsgW2NvbnRyb2wubmFtZV06IGUgfSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgX3JlZ2lzdGVySW5wdXRVcGRhdGVycyA9ICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5zZWN0aW9ucyEpIHtcblx0XHRcdGZvciAoY29uc3QgY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG5cdFx0XHRcdGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpITtcblx0XHRcdFx0Zm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5tb2RlbCkge1xuXHRcdFx0XHRcdFx0dGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID0gdmFsdWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnRyb2wudmFsdWUgPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIF9pbml0VmFsdWVzID0gKCkgPT4ge1xuXHRcdGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLnNlY3Rpb25zIHx8IFtdKSB7XG5cdFx0XHRmb3IgKGxldCBjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLm1vZGVsID8gdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdIDogbnVsbDtcblx0XHRcdFx0aWYgKCF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT0gXCJudW1iZXJcIikge1xuXHRcdFx0XHRcdGlmIChjb250cm9sLnZhbHVlKVxuXHRcdFx0XHRcdFx0dGhpcy5mb3JtXG5cdFx0XHRcdFx0XHRcdC5nZXQoY29udHJvbC5uYW1lKSFcblx0XHRcdFx0XHRcdFx0LnBhdGNoVmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fY29udmVydFZhbHVlVG9UeXBlKGNvbnRyb2wudmFsdWUsIGNvbnRyb2wudHlwZSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRlbHNlIHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKSEucGF0Y2hWYWx1ZShudWxsKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmZvcm1cblx0XHRcdFx0XHRcdC5nZXQoY29udHJvbC5uYW1lKSFcblx0XHRcdFx0XHRcdC5wYXRjaFZhbHVlKHRoaXMuX2NvbnZlcnRWYWx1ZVRvVHlwZSh2YWx1ZSwgY29udHJvbC50eXBlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBfY29udmVydFZhbHVlVG9UeXBlID0gKFxuXHRcdHZhbHVlOiBhbnksXG5cdFx0dHlwZTpcblx0XHRcdHwgXCJ0ZXh0XCJcblx0XHRcdHwgXCJwYXNzd29yZFwiXG5cdFx0XHR8IFwidGV4dEFyZWFcIlxuXHRcdFx0fCBcIm51bWJlclwiXG5cdFx0XHR8IFwiZGF0ZVwiXG5cdFx0XHR8IFwiZGF0ZXRpbWVcIlxuXHRcdFx0fCBcInNlYXJjaFNlbGVjdFwiXG5cdFx0XHR8IFwic2VsZWN0XCJcblx0XHRcdHwgXCJjb2xvclwiXG5cdFx0XHR8IFwidG9nZ2xlXCJcblx0KSA9PiB7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIFwidGV4dFwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgfHwgXCJcIjtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IDA7XG5cdFx0XHRjYXNlIFwic2VhcmNoU2VsZWN0XCI6IHtcblx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSA9PSBcIlwiKSB2YWx1ZSA9IG51bGw7XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBudWxsO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcInRleHRBcmVhXCI6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBcIlwiO1xuXHRcdFx0Y2FzZSBcInBhc3N3b3JkXCI6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBcIlwiO1xuXHRcdFx0Y2FzZSBcInNlbGVjdFwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgfHwgbnVsbDtcblx0XHRcdGNhc2UgXCJkYXRlXCI6XG5cdFx0XHRcdHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgXCJ5eXl5LU1NLWRkXCIpO1xuXHRcdFx0Y2FzZSBcImRhdGV0aW1lXCI6XG5cdFx0XHRcdHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgXCJ5eXl5LU1NLWRkVEhIOm1tXCIpO1xuXHRcdFx0Y2FzZSBcImNvbG9yXCI6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBcIlwiO1xuXHRcdFx0Y2FzZSBcInRvZ2dsZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgYXMgYm9vbGVhbjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Zm9ybWF0RGF0ZUZvcklucHV0ID0gKGRhdGU6IGFueSkgPT4ge1xuXHRcdHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIFwieXl5eS1NTS1kZFwiKTtcblx0fTtcblxuXHRwcml2YXRlIF9pbml0VmFsaWRhdG9ycygpIHtcblx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5zZWN0aW9ucyB8fCBbXSkge1xuXHRcdFx0Zm9yIChjb25zdCBpbnB1dCBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG5cdFx0XHRcdGlmIChpbnB1dC50eXBlID09IFwic2VhcmNoU2VsZWN0XCIgJiYgIWlucHV0LmZuKVxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFwiQW4gaW5wdXQgb2YgdHlwZSAnc2VhcmNoU2VsZWN0JyBuZWVkcyBhIGRpc3BsYXkgZnVuY3Rpb24gIVwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcblx0XHRcdFx0XHR0aGlzLl9jb252ZXJ0VmFsdWVUb1R5cGUodGhpcy5tb2RlbD8uW2lucHV0Lm5hbWVdLCBpbnB1dC50eXBlKSB8fFxuXHRcdFx0XHRcdFx0aW5wdXQudmFsdWUsXG5cdFx0XHRcdFx0dGhpcy5fZ2V0VmFsaWRhdG9ycyhpbnB1dC52YWxpZGF0aW9ucylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGhpcy5mb3JtLmFkZENvbnRyb2woaW5wdXQubmFtZSwgY29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBfZ2V0VmFsaWRhdG9ycyA9ICh2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdKSA9PiB7XG5cdFx0Y29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuXHRcdGlmICghdmFsaWRhdGlvbnMpIHJldHVybiB2YWxpZGF0b3JzO1xuXHRcdC8vU3dpdGNoIGNhc2UgYnJlYWtzIHRoZSBtb2JpbGUgYXBwIHNvIHdlJ2xsIGRvIGlmIHN0YXRlbWVudHNcblx0XHRmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcblx0XHRcdGNvbnN0IHJ1bGUgPSB2YWxpZGF0aW9uLnJ1bGUudG9Mb2NhbGVMb3dlckNhc2UoKTtcblx0XHRcdGlmIChydWxlID09IFwibWluXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4XCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwicmVxdWlyZWRcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNlIGNoYW1wcyBlc3QgcmVxdWlzICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJlbWFpbFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgYWRyZXNzZSBlbWFpbCBuJ2VzdCBwYXMgdmFsaWRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtaW5sZW5ndGhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBwZXRpdGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhsZW5ndGhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJ0eXBlXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaCh0eXBlKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwiZGVjaW1hbFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IGBMZSBub21icmUgZGUgZMOpY2ltYWwgbidlc3QgcGFzIHZhbGlkZSAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKGRlY2ltYWwodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhkYXRlXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gYENldHRlIGRhdGUgZXN0IHRyb3AgZ3JhbmRlICEgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChtYXhEYXRlKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHZhbGlkYXRvcnM7XG5cdH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBtaW4taC01LzYgbXQtMlwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIEBpZiAoc2VjdGlvbi50aXRsZSkge1xuICAgICAgICA8aDIgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgICA8L2gyPlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiIFtuZ0NsYXNzXT1cIlxuICAgICAgICBjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgICAgQGZvciAoY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXRcbiAgICAgICAgICBsYXN0ID1cbiAgICAgICAgICAkbGFzdClcbiAgICAgICAgICB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtbWluIG10LTJcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc206Y29sLXNwYW4tMic6IChjb250cm9sLndpZHRoID09ICdyb3cnICYmICFjb21wYWN0KSB8fCBjb250cm9sLnR5cGU9PSd0ZXh0QXJlYScgJiYgY29tcGFjdCAmJiBjb250cm9sLndpZHRoICE9ICdyb3cnLFxuICAgICAgICAgICAgJ3NtOmNvbC1zcGFuLTQnOiBjb250cm9sLndpZHRoID09J3JvdycgJiYgY29tcGFjdCxcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlPT0nc2VhcmNoU2VsZWN0Jykge1xuICAgICAgICAgICAgPGRpdiBhcHAtY2hyLXNlYXJjaC1zZWxlY3QgY2xhc3M9XCJyZWxhdGl2ZSBpbnB1dCB6LTAgdy1mdWxsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJjb250cm9sLmRhdGEgfHwgW11cIiBbZGlzcGxheV09XCJjb250cm9sLmZuIVwiIFtuYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgICAgICAgIFtmaWx0ZXJzXT1cImNvbnRyb2wuZmlsdGVyc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIgW2Zvcl09XCJjb250cm9sLm5hbWVcIj57e1xuICAgICAgICAgICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIEBpZiAoaXNDb250cm9sUmVxdWlyZWQoY29udHJvbCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJlxuICAgICAgICAgICAgICAgIGZvcm0uaGFzRXJyb3IodmFsaWRhdGlvbi5ydWxlLnRvTG93ZXJDYXNlKCksIGNvbnRyb2wubmFtZSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC1yZWQtNTAwIGRhcms6dGV4dC1yZWQtODAwXCI+e3sgdmFsaWRhdGlvbi5kaXNwbGF5IH19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHotMCB3LWZ1bGwgZ3JvdXAvaW5wdXRzIGNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPCEtLSBIZXJlIHdlIHdpbGwgKm5nSWYgZWFjaCB0eXBlIG9mIGlucHV0IGNhdXNlIGl0J3MgdGhlIGNsZWFuZXN0IHdheSBJIGNhbiBpbWFnaW5lLS0+XG4gICAgICAgICAgICAgIDwhLS1URVhULS0+XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUobW9kZWwsIGNvbnRyb2wsICRldmVudClcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLVBBU1NXT1JELS0+XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdwYXNzd29yZCcpIHtcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZShtb2RlbCwgY29udHJvbCwgJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8IS0tVEVYVCBBUkVBLS0+XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0QXJlYScpIHtcbiAgICAgICAgICAgICAgPHRleHRhcmVhICN0ZXh0QXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICAgICAgICAgIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUobW9kZWwsIGNvbnRyb2wsICRldmVudClcIiAoaW5wdXQpPVwicmVzaXplKHRleHRBcmVhKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm8tc2Nyb2xsYmFyIGlucHV0ICFyZXNpemUtbm9uZSBoZWlnaHQtbm9ybWFsaXplZCBibG9jayBweS0yIHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS1OVU1CRVItLT5cbiAgICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZShtb2RlbCwgY29udHJvbCwgJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8IS0tREFURS0tPlxuICAgICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZScpIHtcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgW3ZhbHVlXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0Q29udHJvbFZhbHVlKG1vZGVsLCBjb250cm9sLCAkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMiBweC0wIHctZnVsbCBoZWlnaHQtbm9ybWFsaXplZCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUobW9kZWwsIGNvbnRyb2wsICRldmVudClcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yIHB4LTAgdy1mdWxsIGhlaWdodC1ub3JtYWxpemVkIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS1DT0xPUi0tPlxuICAgICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnY29sb3InKSB7XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUobW9kZWwsIGNvbnRyb2wsICRldmVudClcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDQycHg7XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTEuNSBtLTAgcHgtMCB3LWZ1bGwgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RvZ2dsZScpe1xuICAgICAgICAgICAgICA8aW5wdXQgI3RvZ2dsZSB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImhpZGRlbiBjaGVja2JveFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUobW9kZWwsIGNvbnRyb2wsICRldmVudClcIiAvPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB0b2dnbGUtd3JhcHBlciBibG9jayBpbnB1dCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZT8uY2xpY2soKVwiIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgaW5wdXQgdG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlICE9ICdzZWFyY2hTZWxlY3QnKSB7XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGFic29sdXRlIHRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIiBbZm9yXT1cImNvbnRyb2wubmFtZVwiPnt7XG4gICAgICAgICAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgQGlmKGNvbnRyb2wubGFiZWwgJiYgY29udHJvbC5sYWJlbCAhPSAnJyAmJiBjb250cm9sLmxhYmVsICE9ICcgJyl7XG4gICAgICAgICAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJlxuICAgICAgICAgICAgICAgIGZvcm0uaGFzRXJyb3IodmFsaWRhdGlvbi5ydWxlLnRvTG93ZXJDYXNlKCksIGNvbnRyb2wubmFtZSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC1yZWQtNTAwIGRhcms6dGV4dC1yZWQtODAwXCI+e3sgdmFsaWRhdGlvbi5kaXNwbGF5IH19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGNvbnRyb2wuaWNvbiAmJiAhZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkID8gJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwJzondGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHAtMi41IGJvdHRvbS0wIHJpZ2h0LTBcIiBbbWF0VG9vbHRpcF09XCJjb250cm9sLmljb25Ub29sdGlwIHx8ICcnXCJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkICYmIGNvbnRyb2wuaWNvbkNhbGxiYWNrPy4oZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy52YWx1ZSlcIj48bWF0LWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpbnB1dCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHRleHQtbGdcIj57e2NvbnRyb2wuaWNvbn19PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChjb250cm9sLnNwYW4pIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIiFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycyB8fCAhZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkID8gJ3RleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwJyA6ICchdGV4dC1yZWQtNTAwIGRhcms6IXRleHQtcmVkLTgwMCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImgtMCB0ZXh0LXhzXCI+e3sgY29udHJvbC5zcGFuXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoaW5kZXggIT0gKHNlY3Rpb25zfHxbXSkubGVuZ3RoIC0gMSAmJiAhY29tcGFjdCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicHktNFwiPlxuICAgICAgICAgIDxociBjbGFzcz1cIlwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Zvcm0+XG48L2Rpdj4iXX0=
@@ -91,7 +91,7 @@ export class ChrPaginatorComponent {
91
91
  }
92
92
  ngOnInit() { }
93
93
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrPaginatorComponent, deps: [{ token: i1.PaginationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrPaginatorComponent, isStandalone: true, selector: "app-chr-paginator", inputs: { page: "page", pageSize: "pageSize", id: "id", allowSizeChange: "allowSizeChange" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n @if (allowSizeChange === true || allowSizeChange == 'true') {\n <div class=\"w-40\">\n <app-chr-form id=\"table-paginator-form\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n label:'\u00C9l\u00E9ments par page',\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n iconTooltip: 'Cliquez ici pour mettre \u00E0 jour la taille de la table'\n }]\n }]\">\n </app-chr-form>\n </div>\n }\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_right</mat-icon></button>\n </div>\n</div>", styles: ["", "*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.\\!pointer-events-none{pointer-events:none!important}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.right-0{right:0}.right-3{right:.75rem}.top-0{top:0}.top-3{top:.75rem}.-z-10{z-index:-10}.z-0{z-index:0}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.\\!m-0{margin:0!important}.m-0{margin:0}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-\\[10\\%\\]{margin-left:10%}.mr-\\[10\\%\\]{margin-right:10%}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0{height:0}.h-12{height:3rem}.h-14{height:3.5rem}.h-9{height:2.25rem}.h-\\[calc\\(100\\%_-_2px\\)\\]{height:calc(100% - 2px)}.h-full{height:100%}.h-min{height:-moz-min-content;height:min-content}.w-0{width:0}.w-24{width:6rem}.w-36{width:9rem}.w-40{width:10rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-min{width:-moz-min-content;width:min-content}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.flex-1{flex:1 1 0%}.table-auto{table-layout:auto}.origin-\\[0\\]{transform-origin:0}.-translate-y-6{--tw-translate-y:-1.5rem}.-translate-y-6,.scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\!cursor-none{cursor:none!important}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.\\!resize-none{resize:none!important}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.content-center{align-content:center}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-2{row-gap:.5rem}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.text-ellipsis{text-overflow:ellipsis}.text-nowrap{text-wrap:nowrap}.text-pretty{text-wrap:pretty}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-0{border-width:0}.border-b-0{border-bottom-width:0}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r-0{border-right-width:0}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-chrdblue{--tw-bg-opacity:1;background-color:rgb(10 70 147/var(--tw-bg-opacity))}.bg-chrlblue{--tw-bg-opacity:1;background-color:rgb(186 218 255/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-opacity-50{--tw-bg-opacity:.5}.p-0{padding:0}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.\\!text-black{--tw-text-opacity:1!important;color:rgb(0 0 0/var(--tw-text-opacity))!important}.\\!text-red-500{--tw-text-opacity:1!important;color:rgb(239 68 68/var(--tw-text-opacity))!important}.\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.opacity-100{opacity:1}.\\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.duration-300{transition-duration:.3s}.first\\:border-0:first-child{border-width:0}.hover\\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.focus\\:border-chrdblue:focus{--tw-border-opacity:1;border-color:rgb(10 70 147/var(--tw-border-opacity))}.focus\\:\\!bg-blue-500:focus{--tw-bg-opacity:1!important;background-color:rgb(59 130 246/var(--tw-bg-opacity))!important}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:\\!bg-red-500:focus-visible{--tw-bg-opacity:1!important;background-color:rgb(239 68 68/var(--tw-bg-opacity))!important}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:start-0{inset-inline-start:0}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6{--tw-translate-y:-1.5rem}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6,.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.peer\\/inputs:focus~.peer-focus\\/inputs\\:text-chrdblue{--tw-text-opacity:1;color:rgb(10 70 147/var(--tw-text-opacity))}@media (min-width:640px){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:col-span-4{grid-column:span 4/span 4}.sm\\:mb-0{margin-bottom:0}.sm\\:mb-2{margin-bottom:.5rem}.sm\\:table-row{display:table-row}.sm\\:w-0{width:0}.sm\\:w-36{width:9rem}.sm\\:w-min{width:-moz-min-content;width:min-content}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\\:border-t-2{border-top-width:2px}.sm\\:border-none{border-style:none}.sm\\:text-center{text-align:center}.sm\\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.sm\\:first\\:border-0:first-child{border-width:0}.sm\\:first\\:border-t-2:first-child{border-top-width:2px}.sm\\:odd\\:bg-gray-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:left-auto:where([dir=rtl],[dir=rtl] *){left:auto}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:translate-x-1\\/4:where([dir=rtl],[dir=rtl] *){--tw-translate-x:25%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (prefers-color-scheme:dark){.dark\\:border-none{border-style:none}.dark\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\\:\\!bg-slate-700{--tw-bg-opacity:1!important;background-color:rgb(51 65 85/var(--tw-bg-opacity))!important}.dark\\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.dark\\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.dark\\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.dark\\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark\\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.dark\\:\\!text-gray-400{--tw-text-opacity:1!important;color:rgb(156 163 175/var(--tw-text-opacity))!important}.dark\\:\\!text-red-800{--tw-text-opacity:1!important;color:rgb(153 27 27/var(--tw-text-opacity))!important}.dark\\:\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.dark\\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.dark\\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.dark\\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.dark\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.dark\\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.dark\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:focus\\:border-chrlblue:focus{--tw-border-opacity:1;border-color:rgb(186 218 255/var(--tw-border-opacity))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:dark\\:text-chrlblue{--tw-text-opacity:1;color:rgb(186 218 255/var(--tw-text-opacity))}}@media (min-width:640px){@media (prefers-color-scheme:dark){.sm\\:dark\\:odd\\:bg-slate-700:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}}}\n/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/\n"], dependencies: [{ kind: "component", type: ChrFormComponent, selector: "app-chr-form", inputs: ["sections", "valid", "model", "disabled", "submit", "compact"], outputs: ["validChange", "modelChange", "valuesChange", "formChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrPaginatorComponent, isStandalone: true, selector: "app-chr-paginator", inputs: { page: "page", pageSize: "pageSize", id: "id", allowSizeChange: "allowSizeChange" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n @if (allowSizeChange === true || allowSizeChange == 'true') {\n <div class=\"w-40\">\n <app-chr-form id=\"table-paginator-form\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n label:'\u00C9l\u00E9ments par page',\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n iconTooltip: 'Cliquez ici pour mettre \u00E0 jour la taille de la table'\n }]\n }]\">\n </app-chr-form>\n </div>\n }\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_right</mat-icon></button>\n </div>\n</div>", styles: ["", "*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.\\!pointer-events-none{pointer-events:none!important}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.right-0{right:0}.right-3{right:.75rem}.top-0{top:0}.top-3{top:.75rem}.-z-10{z-index:-10}.z-0{z-index:0}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.\\!m-0{margin:0!important}.m-0{margin:0}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-\\[10\\%\\]{margin-left:10%}.mr-\\[10\\%\\]{margin-right:10%}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0{height:0}.h-12{height:3rem}.h-14{height:3.5rem}.h-9{height:2.25rem}.h-\\[calc\\(100\\%_-_2px\\)\\]{height:calc(100% - 2px)}.h-full{height:100%}.h-min{height:-moz-min-content;height:min-content}.w-0{width:0}.w-24{width:6rem}.w-36{width:9rem}.w-40{width:10rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-min{width:-moz-min-content;width:min-content}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.flex-1{flex:1 1 0%}.table-auto{table-layout:auto}.origin-\\[0\\]{transform-origin:0}.-translate-y-6{--tw-translate-y:-1.5rem}.-translate-y-6,.scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\!cursor-none{cursor:none!important}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.\\!resize-none{resize:none!important}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.content-center{align-content:center}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-2{row-gap:.5rem}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.text-ellipsis{text-overflow:ellipsis}.text-nowrap{text-wrap:nowrap}.text-pretty{text-wrap:pretty}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-0{border-width:0}.border-b-0{border-bottom-width:0}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r-0{border-right-width:0}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-chrdblue{--tw-bg-opacity:1;background-color:rgb(10 70 147/var(--tw-bg-opacity))}.bg-chrlblue{--tw-bg-opacity:1;background-color:rgb(186 218 255/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-opacity-50{--tw-bg-opacity:.5}.p-0{padding:0}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.\\!text-black{--tw-text-opacity:1!important;color:rgb(0 0 0/var(--tw-text-opacity))!important}.\\!text-red-500{--tw-text-opacity:1!important;color:rgb(239 68 68/var(--tw-text-opacity))!important}.\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.opacity-100{opacity:1}.\\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.duration-300{transition-duration:.3s}.first\\:border-0:first-child{border-width:0}.hover\\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.focus\\:border-chrdblue:focus{--tw-border-opacity:1;border-color:rgb(10 70 147/var(--tw-border-opacity))}.focus\\:\\!bg-blue-500:focus{--tw-bg-opacity:1!important;background-color:rgb(59 130 246/var(--tw-bg-opacity))!important}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:\\!bg-red-500:focus-visible{--tw-bg-opacity:1!important;background-color:rgb(239 68 68/var(--tw-bg-opacity))!important}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:start-0{inset-inline-start:0}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6{--tw-translate-y:-1.5rem}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6,.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.peer\\/inputs:focus~.peer-focus\\/inputs\\:text-chrdblue{--tw-text-opacity:1;color:rgb(10 70 147/var(--tw-text-opacity))}@media (min-width:640px){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:col-span-4{grid-column:span 4/span 4}.sm\\:mb-0{margin-bottom:0}.sm\\:mb-2{margin-bottom:.5rem}.sm\\:table-row{display:table-row}.sm\\:w-0{width:0}.sm\\:w-36{width:9rem}.sm\\:w-min{width:-moz-min-content;width:min-content}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\\:border-t-2{border-top-width:2px}.sm\\:border-none{border-style:none}.sm\\:text-center{text-align:center}.sm\\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.sm\\:first\\:border-0:first-child{border-width:0}.sm\\:first\\:border-t-2:first-child{border-top-width:2px}.sm\\:odd\\:bg-gray-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:left-auto:where([dir=rtl],[dir=rtl] *){left:auto}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:translate-x-1\\/4:where([dir=rtl],[dir=rtl] *){--tw-translate-x:25%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (prefers-color-scheme:dark){.dark\\:border-none{border-style:none}.dark\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\\:\\!bg-slate-700{--tw-bg-opacity:1!important;background-color:rgb(51 65 85/var(--tw-bg-opacity))!important}.dark\\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.dark\\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.dark\\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.dark\\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark\\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.dark\\:\\!text-gray-400{--tw-text-opacity:1!important;color:rgb(156 163 175/var(--tw-text-opacity))!important}.dark\\:\\!text-red-800{--tw-text-opacity:1!important;color:rgb(153 27 27/var(--tw-text-opacity))!important}.dark\\:\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.dark\\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.dark\\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.dark\\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.dark\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.dark\\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.dark\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:focus\\:border-chrlblue:focus{--tw-border-opacity:1;border-color:rgb(186 218 255/var(--tw-border-opacity))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:dark\\:text-chrlblue{--tw-text-opacity:1;color:rgb(186 218 255/var(--tw-text-opacity))}}@media (min-width:640px){@media (prefers-color-scheme:dark){.sm\\:dark\\:odd\\:bg-slate-700:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}}}\n/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/\n"], dependencies: [{ kind: "component", type: ChrFormComponent, selector: "app-chr-form", inputs: ["sections", "valid", "model", "disabled", "submit", "compact", "debounce"], outputs: ["validChange", "modelChange", "valuesChange", "formChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrPaginatorComponent, decorators: [{
97
97
  type: Component,
@@ -109,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
109
109
  }], allowSizeChange: [{
110
110
  type: Input
111
111
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItcGFnaW5hdG9yL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXBhZ2luYXRvci9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFZdkQsTUFBTSxPQUFPLHFCQUFxQjtJQUdqQyxJQUNJLElBQUk7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBSUQsSUFDSSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQVVELFlBQ1EsT0FBMEIsRUFDekIsY0FBaUM7UUFEbEMsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBcENsQyxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM1QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQVk5QixlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFhOUQsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRSxPQUFFLEdBQXVCLHFCQUFxQixDQUFDO1FBRS9DLG9CQUFlLEdBQXFCLE1BQU0sQ0FBQztRQWlCN0MsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQUUsT0FBTztZQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsY0FBYztRQUNmLENBQUMsQ0FBQztRQUVLLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUFFLE9BQU87WUFDOUIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsY0FBYztRQUNmLENBQUMsQ0FBQztRQUVLLFlBQU8sR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ2pDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFBRSxPQUFPO1lBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNiLENBQUMsQ0FBQztRQUVLLHdCQUFtQixHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDM0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDO1FBRUssZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUM7UUFFSyxnQkFBVyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7WUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDO1FBRUssNEJBQXVCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMvQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUM7UUFFSyxlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDN0MsT0FBTyxDQUNOLElBQUksQ0FBQyxJQUFJO2dCQUNULElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FDaEUsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLHNEQUFzRDtRQUUvQyxhQUFRLEdBQUcsR0FBRyxFQUFFLENBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVTtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUUsU0FBSSxHQUFHLENBQUMsT0FBMkIsU0FBUyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLElBQUk7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOztnQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDO0lBbEVDLENBQUM7SUFFSixxQkFBcUI7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdkMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQ1UsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7OEdBOUNQLHFCQUFxQjtrR0FBckIscUJBQXFCLG9QQzFCbEMsc29EQWlDTSw0N2dCRFRLLGdCQUFnQix3TUFBRSxZQUFZLDRIQUFFLGFBQWE7OzJGQUUzQyxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0MsbUJBQW1CLGNBTWpCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxhQUFhLENBQUM7c0hBTXBELElBQUk7c0JBRFAsS0FBSztnQkFXSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdILFFBQVE7c0JBRFgsS0FBSztnQkFXSSxjQUFjO3NCQUF2QixNQUFNO2dCQUVFLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJDb250ZW50Q2hlY2tlZCxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdENvbXBvbmVudCxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T25DaGFuZ2VzLFxuXHRPbkluaXQsXG5cdE91dHB1dCxcblx0U2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFBhZ2luYXRpb25JbnN0YW5jZSwgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tIFwibmd4LXBhZ2luYXRpb25cIjtcbmltcG9ydCB7IE5nQ2xhc3MsIENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENockZvcm1Db21wb25lbnQgfSBmcm9tIFwiLi4vY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImFwcC1jaHItcGFnaW5hdG9yXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLXBhZ2luYXRvci5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcblx0XHRcIi4vY2hyLXBhZ2luYXRvci5jb21wb25lbnQuc2Nzc1wiLFxuXHRcdFwiLi4vLi4vLi4vLi4vLi4vdGFpbHdpbmRidWlsZC5jc3NcIixcblx0XSxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW0NockZvcm1Db21wb25lbnQsIENvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENoclBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG5cdHByaXZhdGUgX3BhZ2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIF9wYWdlU2l6ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cdEBJbnB1dCgpXG5cdGdldCBwYWdlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wYWdlIHx8IDE7XG5cdH1cblx0c2V0IHBhZ2UodmFsdWU6IG51bWJlcikge1xuXHRcdHRoaXMuX3BhZ2UgPSB2YWx1ZTtcblx0XHR0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdEBPdXRwdXQoKSBwYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG5cdEBJbnB1dCgpXG5cdGdldCBwYWdlU2l6ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcGFnZVNpemUgfHwgMjA7XG5cdH1cblx0c2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLl9wYWdlU2l6ZSA9IHZhbHVlO1xuXHRcdHRoaXMucGFnZVNpemVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHRASW5wdXQoKSBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gXCJjaHJfYmFzZS1kYXRhLXRhYmxlXCI7XG5cblx0QElucHV0KCkgYWxsb3dTaXplQ2hhbmdlOiBib29sZWFuIHwgc3RyaW5nID0gXCJ0cnVlXCI7XG5cblx0aW5zdGFuY2U/OiBQYWdpbmF0aW9uSW5zdGFuY2U7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHVibGljIHNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlLFxuXHRcdHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG5cdCkge31cblxuXHRuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5pbnN0YW5jZSA9IHRoaXMuc2VydmljZS5nZXRJbnN0YW5jZShcblx0XHRcdGAke3RoaXMuaWR9YFxuXHRcdCkgYXMgUGFnaW5hdGlvbkluc3RhbmNlO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7fVxuXG5cdHB1YmxpYyBwcmV2aW91cyA9ICgpID0+IHtcblx0XHRpZiAodGhpcy5pc0ZpcnN0UGFnZSgpKSByZXR1cm47XG5cdFx0dGhpcy5wYWdlLS07XG5cdFx0dGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlKTtcblx0XHQvL3RoaXMuZW1pdCgpO1xuXHR9O1xuXG5cdHB1YmxpYyBuZXh0ID0gKCkgPT4ge1xuXHRcdGlmICh0aGlzLmlzTGFzdFBhZ2UoKSkgcmV0dXJuO1xuXHRcdHRoaXMucGFnZSArPSAxO1xuXHRcdHRoaXMucGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZSk7XG5cdFx0Ly90aGlzLmVtaXQoKTtcblx0fTtcblxuXHRwdWJsaWMgc2V0UGFnZSA9IChwYWdlOiBudW1iZXIpID0+IHtcblx0XHRpZiAocGFnZSA8IDEgfHwgcGFnZSA+IHRoaXMubGFzdFBhZ2UoKSkgcmV0dXJuO1xuXHRcdHRoaXMucGFnZSA9IHBhZ2U7XG5cdFx0dGhpcy5lbWl0KCk7XG5cdH07XG5cblx0cHVibGljIHNldFBhZ2VFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuXHRcdHJldHVybiB0aGlzLnNldFBhZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcblx0fTtcblxuXHRwdWJsaWMgaXNGaXJzdFBhZ2UgPSAoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMucGFnZSA9PSAxO1xuXHR9O1xuXG5cdHB1YmxpYyBzZXRQYWdlU2l6ZSA9IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB7XG5cdFx0dGhpcy5zZXRQYWdlKDEpO1xuXHRcdGlmICh0aGlzLmluc3RhbmNlKSB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xuXHRcdHRoaXMucGFnZVNpemVDaGFuZ2UuZW1pdChwYWdlU2l6ZSk7XG5cdH07XG5cblx0cHVibGljIHNldFBhZ2VTaXplRXZlbnRIYW5kbGVyID0gKGV2ZW50OiBhbnkpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5zZXRQYWdlU2l6ZShldmVudC50YXJnZXQudmFsdWUpO1xuXHR9O1xuXG5cdHB1YmxpYyBpc0xhc3RQYWdlID0gKCkgPT4ge1xuXHRcdGlmICghdGhpcy5pbnN0YW5jZT8udG90YWxJdGVtcykgcmV0dXJuIGZhbHNlO1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLnBhZ2UgPj1cblx0XHRcdE1hdGguY2VpbCh0aGlzLmluc3RhbmNlLnRvdGFsSXRlbXMgLyB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSlcblx0XHQpO1xuXHR9O1xuXG5cdC8vIHB1YmxpYyBwYWdlU2l6ZSA9ICgpID0+IHRoaXMuaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xuXG5cdHB1YmxpYyBsYXN0UGFnZSA9ICgpID0+XG5cdFx0dGhpcy5pbnN0YW5jZT8udG90YWxJdGVtc1xuXHRcdFx0PyBNYXRoLmNlaWwodGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zIC8gdGhpcy5pbnN0YW5jZS5pdGVtc1BlclBhZ2UpXG5cdFx0XHQ6IDE7XG5cblx0cHJpdmF0ZSBlbWl0ID0gKHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xuXHRcdGlmICghcGFnZSkgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlKTtcblx0XHRlbHNlIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuXHR9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIGRhcms6dGV4dC1ncmF5LTQwMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktc3RhcnQgcHktMiBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgQGlmIChhbGxvd1NpemVDaGFuZ2UgPT09IHRydWUgfHwgYWxsb3dTaXplQ2hhbmdlID09ICd0cnVlJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidy00MFwiPlxuICAgICAgICAgICAgPGFwcC1jaHItZm9ybSBpZD1cInRhYmxlLXBhZ2luYXRvci1mb3JtXCIgKGtleXVwLmVudGVyKT1cInNldFBhZ2VTaXplRXZlbnRIYW5kbGVyKCRldmVudClcIiBbc2VjdGlvbnNdPVwiW1xuICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICBjb250cm9sczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6J8OJbMOpbWVudHMgcGFyIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BhZ2VTaXplJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJ3JvdycsXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdjaGVjaycsXG4gICAgICAgICAgICAgICAgICAgIGljb25DYWxsYmFjazogc2V0UGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIGljb25Ub29sdGlwOiAnQ2xpcXVleiBpY2kgcG91ciBtZXR0cmUgw6Agam91ciBsYSB0YWlsbGUgZGUgbGEgdGFibGUnXG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH1dXCI+XG4gICAgICAgICAgICA8L2FwcC1jaHItZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBweS0yIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciBcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIiBbbmdDbGFzc109XCJpc0ZpcnN0UGFnZSgpID8gJ2N1cnNvci1ub3QtYWxsb3dlZCc6J2N1cnNvci1wb2ludGVyJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInctZml0IGZsZXgganVzdGlmeS1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlclwiPjxtYXQtaWNvbj5hcnJvd19sZWZ0PC9tYXQtaWNvbj48L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgbXgtMiB3LWZpdFwiPlxuICAgICAgICAgICAge3twYWdlfX0gLyB7e2xhc3RQYWdlKCl9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiIWlzTGFzdFBhZ2UoKSA/ICdjdXJzb3ItcG9pbnRlcicgOiAnY3Vyc29yLW5vdC1hbGxvd2VkJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWlzTGFzdFBhZ2UoKSAmJiBuZXh0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZpdCBmbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXJcIj48bWF0LWljb24+YXJyb3dfcmlnaHQ8L21hdC1pY29uPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItcGFnaW5hdG9yL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXBhZ2luYXRvci9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFZdkQsTUFBTSxPQUFPLHFCQUFxQjtJQUdqQyxJQUNJLElBQUk7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBSUQsSUFDSSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFH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LElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVTtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUUsU0FBSSxHQUFHLENBQUMsT0FBMkIsU0FBUyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLElBQUk7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOztnQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDO0lBbEVDLENBQUM7SUFFSixxQkFBcUI7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdkMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQ1UsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7OEdBOUNQLHFCQUFxQjtrR0FBckIscUJBQXFCLG9QQzFCbEMsc29EQWlDTSw0N2dCRFRLLGdCQUFnQixvTkFBRSxZQUFZLDRIQUFFLGFBQWE7OzJGQUUzQyxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0MsbUJBQW1CLGNBTWpCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxhQUFhLENBQUM7c0hBTXBELElBQUk7c0JBRFAsS0FBSztnQkFXSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdILFFBQVE7c0JBRFgsS0FBSztnQkFXSSxjQUFjO3NCQUF2QixNQUFNO2dCQUVFLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJDb250ZW50Q2hlY2tlZCxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdENvbXBvbmVudCxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T25DaGFuZ2VzLFxuXHRPbkluaXQsXG5cdE91dHB1dCxcblx0U2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFBhZ2luYXRpb25JbnN0YW5jZSwgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tIFwibmd4LXBhZ2luYXRpb25cIjtcbmltcG9ydCB7IE5nQ2xhc3MsIENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENockZvcm1Db21wb25lbnQgfSBmcm9tIFwiLi4vY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImFwcC1jaHItcGFnaW5hdG9yXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLXBhZ2luYXRvci5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcblx0XHRcIi4vY2hyLXBhZ2luYXRvci5jb21wb25lbnQuc2Nzc1wiLFxuXHRcdFwiLi4vLi4vLi4vLi4vLi4vdGFpbHdpbmRidWlsZC5jc3NcIixcblx0XSxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW0NockZvcm1Db21wb25lbnQsIENvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENoclBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG5cdHByaXZhdGUgX3BhZ2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIF9wYWdlU2l6ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cdEBJbnB1dCgpXG5cdGdldCBwYWdlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wYWdlIHx8IDE7XG5cdH1cblx0c2V0IHBhZ2UodmFsdWU6IG51bWJlcikge1xuXHRcdHRoaXMuX3BhZ2UgPSB2YWx1ZTtcblx0XHR0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdEBPdXRwdXQoKSBwYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG5cdEBJbnB1dCgpXG5cdGdldCBwYWdlU2l6ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcGFnZVNpemUgfHwgMjA7XG5cdH1cblx0c2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLl9wYWdlU2l6ZSA9IHZhbHVlO1xuXHRcdHRoaXMucGFnZVNpemVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHRASW5wdXQoKSBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gXCJjaHJfYmFzZS1kYXRhLXRhYmxlXCI7XG5cblx0QElucHV0KCkgYWxsb3dTaXplQ2hhbmdlOiBib29sZWFuIHwgc3RyaW5nID0gXCJ0cnVlXCI7XG5cblx0aW5zdGFuY2U/OiBQYWdpbmF0aW9uSW5zdGFuY2U7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHVibGljIHNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlLFxuXHRcdHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG5cdCkge31cblxuXHRuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5pbnN0YW5jZSA9IHRoaXMuc2VydmljZS5nZXRJbnN0YW5jZShcblx0XHRcdGAke3RoaXMuaWR9YFxuXHRcdCkgYXMgUGFnaW5hdGlvbkluc3RhbmNlO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7fVxuXG5cdHB1YmxpYyBwcmV2aW91cyA9ICgpID0+IHtcblx0XHRpZiAodGhpcy5pc0ZpcnN0UGFnZSgpKSByZXR1cm47XG5cdFx0dGhpcy5wYWdlLS07XG5cdFx0dGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlKTtcblx0XHQvL3RoaXMuZW1pdCgpO1xuXHR9O1xuXG5cdHB1YmxpYyBuZXh0ID0gKCkgPT4ge1xuXHRcdGlmICh0aGlzLmlzTGFzdFBhZ2UoKSkgcmV0dXJuO1xuXHRcdHRoaXMucGFnZSArPSAxO1xuXHRcdHRoaXMucGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZSk7XG5cdFx0Ly90aGlzLmVtaXQoKTtcblx0fTtcblxuXHRwdWJsaWMgc2V0UGFnZSA9IChwYWdlOiBudW1iZXIpID0+IHtcblx0XHRpZiAocGFnZSA8IDEgfHwgcGFnZSA+IHRoaXMubGFzdFBhZ2UoKSkgcmV0dXJuO1xuXHRcdHRoaXMucGFnZSA9IHBhZ2U7XG5cdFx0dGhpcy5lbWl0KCk7XG5cdH07XG5cblx0cHVibGljIHNldFBhZ2VFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuXHRcdHJldHVybiB0aGlzLnNldFBhZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcblx0fTtcblxuXHRwdWJsaWMgaXNGaXJzdFBhZ2UgPSAoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMucGFnZSA9PSAxO1xuXHR9O1xuXG5cdHB1YmxpYyBzZXRQYWdlU2l6ZSA9IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB7XG5cdFx0dGhpcy5zZXRQYWdlKDEpO1xuXHRcdGlmICh0aGlzLmluc3RhbmNlKSB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xuXHRcdHRoaXMucGFnZVNpemVDaGFuZ2UuZW1pdChwYWdlU2l6ZSk7XG5cdH07XG5cblx0cHVibGljIHNldFBhZ2VTaXplRXZlbnRIYW5kbGVyID0gKGV2ZW50OiBhbnkpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5zZXRQYWdlU2l6ZShldmVudC50YXJnZXQudmFsdWUpO1xuXHR9O1xuXG5cdHB1YmxpYyBpc0xhc3RQYWdlID0gKCkgPT4ge1xuXHRcdGlmICghdGhpcy5pbnN0YW5jZT8udG90YWxJdGVtcykgcmV0dXJuIGZhbHNlO1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLnBhZ2UgPj1cblx0XHRcdE1hdGguY2VpbCh0aGlzLmluc3RhbmNlLnRvdGFsSXRlbXMgLyB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSlcblx0XHQpO1xuXHR9O1xuXG5cdC8vIHB1YmxpYyBwYWdlU2l6ZSA9ICgpID0+IHRoaXMuaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xuXG5cdHB1YmxpYyBsYXN0UGFnZSA9ICgpID0+XG5cdFx0dGhpcy5pbnN0YW5jZT8udG90YWxJdGVtc1xuXHRcdFx0PyBNYXRoLmNlaWwodGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zIC8gdGhpcy5pbnN0YW5jZS5pdGVtc1BlclBhZ2UpXG5cdFx0XHQ6IDE7XG5cblx0cHJpdmF0ZSBlbWl0ID0gKHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xuXHRcdGlmICghcGFnZSkgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlKTtcblx0XHRlbHNlIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuXHR9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIGRhcms6dGV4dC1ncmF5LTQwMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktc3RhcnQgcHktMiBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgQGlmIChhbGxvd1NpemVDaGFuZ2UgPT09IHRydWUgfHwgYWxsb3dTaXplQ2hhbmdlID09ICd0cnVlJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidy00MFwiPlxuICAgICAgICAgICAgPGFwcC1jaHItZm9ybSBpZD1cInRhYmxlLXBhZ2luYXRvci1mb3JtXCIgKGtleXVwLmVudGVyKT1cInNldFBhZ2VTaXplRXZlbnRIYW5kbGVyKCRldmVudClcIiBbc2VjdGlvbnNdPVwiW1xuICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICBjb250cm9sczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6J8OJbMOpbWVudHMgcGFyIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BhZ2VTaXplJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJ3JvdycsXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdjaGVjaycsXG4gICAgICAgICAgICAgICAgICAgIGljb25DYWxsYmFjazogc2V0UGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIGljb25Ub29sdGlwOiAnQ2xpcXVleiBpY2kgcG91ciBtZXR0cmUgw6Agam91ciBsYSB0YWlsbGUgZGUgbGEgdGFibGUnXG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH1dXCI+XG4gICAgICAgICAgICA8L2FwcC1jaHItZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBweS0yIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciBcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIiBbbmdDbGFzc109XCJpc0ZpcnN0UGFnZSgpID8gJ2N1cnNvci1ub3QtYWxsb3dlZCc6J2N1cnNvci1wb2ludGVyJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInctZml0IGZsZXgganVzdGlmeS1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlclwiPjxtYXQtaWNvbj5hcnJvd19sZWZ0PC9tYXQtaWNvbj48L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgbXgtMiB3LWZpdFwiPlxuICAgICAgICAgICAge3twYWdlfX0gLyB7e2xhc3RQYWdlKCl9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiIWlzTGFzdFBhZ2UoKSA/ICdjdXJzb3ItcG9pbnRlcicgOiAnY3Vyc29yLW5vdC1hbGxvd2VkJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWlzTGFzdFBhZ2UoKSAmJiBuZXh0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZpdCBmbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXJcIj48bWF0LWljb24+YXJyb3dfcmlnaHQ8L21hdC1pY29uPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -17,7 +17,7 @@ import { NG_VALIDATORS, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, Val
17
17
  import moment from 'moment';
18
18
  import { MatError } from '@angular/material/form-field';
19
19
  import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
20
- import { startWith, map, BehaviorSubject } from 'rxjs';
20
+ import { startWith, map, debounceTime, BehaviorSubject } from 'rxjs';
21
21
  import { MatOption } from '@angular/material/core';
22
22
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
23
23
  import * as i1 from 'ngx-pagination';
@@ -417,6 +417,7 @@ class ChrFormComponent {
417
417
  this.modelChange = new EventEmitter();
418
418
  this.valuesChange = new EventEmitter();
419
419
  this.compact = false;
420
+ this.debounce = 0;
420
421
  this.formChange = new EventEmitter();
421
422
  this.form = this.builder.group({});
422
423
  this.updateValueAndValidity = () => {
@@ -480,7 +481,9 @@ class ChrFormComponent {
480
481
  for (const section of this.sections) {
481
482
  for (const control of section.controls) {
482
483
  const formControl = this.form.get(control.name);
483
- formControl.valueChanges.subscribe((e) => {
484
+ formControl.valueChanges
485
+ .pipe(debounceTime(this.debounce))
486
+ .subscribe((e) => {
484
487
  this.formChange.emit({ [control.name]: e });
485
488
  });
486
489
  }
@@ -629,7 +632,7 @@ class ChrFormComponent {
629
632
  }
630
633
  }
631
634
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrFormComponent, deps: [{ token: i1$4.FormBuilder }, { token: i2$1.DatePipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
632
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrFormComponent, isStandalone: true, selector: "app-chr-form", inputs: { sections: "sections", valid: "valid", model: "model", disabled: "disabled", submit: "submit", compact: "compact" }, outputs: { validChange: "validChange", modelChange: "modelChange", valuesChange: "valuesChange", formChange: "formChange" }, providers: [
635
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrFormComponent, isStandalone: true, selector: "app-chr-form", inputs: { sections: "sections", valid: "valid", model: "model", disabled: "disabled", submit: "submit", compact: "compact", debounce: "debounce" }, outputs: { validChange: "validChange", modelChange: "modelChange", valuesChange: "valuesChange", formChange: "formChange" }, providers: [
633
636
  DatePipe,
634
637
  {
635
638
  provide: DATE_PIPE_DEFAULT_OPTIONS,
@@ -676,6 +679,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
676
679
  type: Input
677
680
  }], compact: [{
678
681
  type: Input
682
+ }], debounce: [{
683
+ type: Input
679
684
  }], formChange: [{
680
685
  type: Output
681
686
  }] } });
@@ -790,7 +795,7 @@ class ChrPaginatorComponent {
790
795
  }
791
796
  ngOnInit() { }
792
797
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrPaginatorComponent, deps: [{ token: i1.PaginationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
793
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrPaginatorComponent, isStandalone: true, selector: "app-chr-paginator", inputs: { page: "page", pageSize: "pageSize", id: "id", allowSizeChange: "allowSizeChange" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n @if (allowSizeChange === true || allowSizeChange == 'true') {\n <div class=\"w-40\">\n <app-chr-form id=\"table-paginator-form\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n label:'\u00C9l\u00E9ments par page',\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n iconTooltip: 'Cliquez ici pour mettre \u00E0 jour la taille de la table'\n }]\n }]\">\n </app-chr-form>\n </div>\n }\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_right</mat-icon></button>\n </div>\n</div>", styles: ["", "*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.\\!pointer-events-none{pointer-events:none!important}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.right-0{right:0}.right-3{right:.75rem}.top-0{top:0}.top-3{top:.75rem}.-z-10{z-index:-10}.z-0{z-index:0}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.\\!m-0{margin:0!important}.m-0{margin:0}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-\\[10\\%\\]{margin-left:10%}.mr-\\[10\\%\\]{margin-right:10%}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0{height:0}.h-12{height:3rem}.h-14{height:3.5rem}.h-9{height:2.25rem}.h-\\[calc\\(100\\%_-_2px\\)\\]{height:calc(100% - 2px)}.h-full{height:100%}.h-min{height:-moz-min-content;height:min-content}.w-0{width:0}.w-24{width:6rem}.w-36{width:9rem}.w-40{width:10rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-min{width:-moz-min-content;width:min-content}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.flex-1{flex:1 1 0%}.table-auto{table-layout:auto}.origin-\\[0\\]{transform-origin:0}.-translate-y-6{--tw-translate-y:-1.5rem}.-translate-y-6,.scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\!cursor-none{cursor:none!important}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.\\!resize-none{resize:none!important}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.content-center{align-content:center}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-2{row-gap:.5rem}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.text-ellipsis{text-overflow:ellipsis}.text-nowrap{text-wrap:nowrap}.text-pretty{text-wrap:pretty}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-0{border-width:0}.border-b-0{border-bottom-width:0}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r-0{border-right-width:0}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-chrdblue{--tw-bg-opacity:1;background-color:rgb(10 70 147/var(--tw-bg-opacity))}.bg-chrlblue{--tw-bg-opacity:1;background-color:rgb(186 218 255/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-opacity-50{--tw-bg-opacity:.5}.p-0{padding:0}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.\\!text-black{--tw-text-opacity:1!important;color:rgb(0 0 0/var(--tw-text-opacity))!important}.\\!text-red-500{--tw-text-opacity:1!important;color:rgb(239 68 68/var(--tw-text-opacity))!important}.\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.opacity-100{opacity:1}.\\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.duration-300{transition-duration:.3s}.first\\:border-0:first-child{border-width:0}.hover\\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.focus\\:border-chrdblue:focus{--tw-border-opacity:1;border-color:rgb(10 70 147/var(--tw-border-opacity))}.focus\\:\\!bg-blue-500:focus{--tw-bg-opacity:1!important;background-color:rgb(59 130 246/var(--tw-bg-opacity))!important}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:\\!bg-red-500:focus-visible{--tw-bg-opacity:1!important;background-color:rgb(239 68 68/var(--tw-bg-opacity))!important}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:start-0{inset-inline-start:0}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6{--tw-translate-y:-1.5rem}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6,.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.peer\\/inputs:focus~.peer-focus\\/inputs\\:text-chrdblue{--tw-text-opacity:1;color:rgb(10 70 147/var(--tw-text-opacity))}@media (min-width:640px){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:col-span-4{grid-column:span 4/span 4}.sm\\:mb-0{margin-bottom:0}.sm\\:mb-2{margin-bottom:.5rem}.sm\\:table-row{display:table-row}.sm\\:w-0{width:0}.sm\\:w-36{width:9rem}.sm\\:w-min{width:-moz-min-content;width:min-content}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\\:border-t-2{border-top-width:2px}.sm\\:border-none{border-style:none}.sm\\:text-center{text-align:center}.sm\\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.sm\\:first\\:border-0:first-child{border-width:0}.sm\\:first\\:border-t-2:first-child{border-top-width:2px}.sm\\:odd\\:bg-gray-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:left-auto:where([dir=rtl],[dir=rtl] *){left:auto}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:translate-x-1\\/4:where([dir=rtl],[dir=rtl] *){--tw-translate-x:25%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (prefers-color-scheme:dark){.dark\\:border-none{border-style:none}.dark\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\\:\\!bg-slate-700{--tw-bg-opacity:1!important;background-color:rgb(51 65 85/var(--tw-bg-opacity))!important}.dark\\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.dark\\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.dark\\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.dark\\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark\\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.dark\\:\\!text-gray-400{--tw-text-opacity:1!important;color:rgb(156 163 175/var(--tw-text-opacity))!important}.dark\\:\\!text-red-800{--tw-text-opacity:1!important;color:rgb(153 27 27/var(--tw-text-opacity))!important}.dark\\:\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.dark\\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.dark\\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.dark\\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.dark\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.dark\\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.dark\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:focus\\:border-chrlblue:focus{--tw-border-opacity:1;border-color:rgb(186 218 255/var(--tw-border-opacity))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:dark\\:text-chrlblue{--tw-text-opacity:1;color:rgb(186 218 255/var(--tw-text-opacity))}}@media (min-width:640px){@media (prefers-color-scheme:dark){.sm\\:dark\\:odd\\:bg-slate-700:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}}}\n/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/\n"], dependencies: [{ kind: "component", type: ChrFormComponent, selector: "app-chr-form", inputs: ["sections", "valid", "model", "disabled", "submit", "compact"], outputs: ["validChange", "modelChange", "valuesChange", "formChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
798
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: ChrPaginatorComponent, isStandalone: true, selector: "app-chr-paginator", inputs: { page: "page", pageSize: "pageSize", id: "id", allowSizeChange: "allowSizeChange" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n @if (allowSizeChange === true || allowSizeChange == 'true') {\n <div class=\"w-40\">\n <app-chr-form id=\"table-paginator-form\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n label:'\u00C9l\u00E9ments par page',\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n iconTooltip: 'Cliquez ici pour mettre \u00E0 jour la taille de la table'\n }]\n }]\">\n </app-chr-form>\n </div>\n }\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_right</mat-icon></button>\n </div>\n</div>", styles: ["", "*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.\\!pointer-events-none{pointer-events:none!important}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.right-0{right:0}.right-3{right:.75rem}.top-0{top:0}.top-3{top:.75rem}.-z-10{z-index:-10}.z-0{z-index:0}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.\\!m-0{margin:0!important}.m-0{margin:0}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-\\[10\\%\\]{margin-left:10%}.mr-\\[10\\%\\]{margin-right:10%}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0{height:0}.h-12{height:3rem}.h-14{height:3.5rem}.h-9{height:2.25rem}.h-\\[calc\\(100\\%_-_2px\\)\\]{height:calc(100% - 2px)}.h-full{height:100%}.h-min{height:-moz-min-content;height:min-content}.w-0{width:0}.w-24{width:6rem}.w-36{width:9rem}.w-40{width:10rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-min{width:-moz-min-content;width:min-content}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.flex-1{flex:1 1 0%}.table-auto{table-layout:auto}.origin-\\[0\\]{transform-origin:0}.-translate-y-6{--tw-translate-y:-1.5rem}.-translate-y-6,.scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\!cursor-none{cursor:none!important}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.\\!resize-none{resize:none!important}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.content-center{align-content:center}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-2{row-gap:.5rem}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.text-ellipsis{text-overflow:ellipsis}.text-nowrap{text-wrap:nowrap}.text-pretty{text-wrap:pretty}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-0{border-width:0}.border-b-0{border-bottom-width:0}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r-0{border-right-width:0}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-chrdblue{--tw-bg-opacity:1;background-color:rgb(10 70 147/var(--tw-bg-opacity))}.bg-chrlblue{--tw-bg-opacity:1;background-color:rgb(186 218 255/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-opacity-50{--tw-bg-opacity:.5}.p-0{padding:0}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.\\!text-black{--tw-text-opacity:1!important;color:rgb(0 0 0/var(--tw-text-opacity))!important}.\\!text-red-500{--tw-text-opacity:1!important;color:rgb(239 68 68/var(--tw-text-opacity))!important}.\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.opacity-100{opacity:1}.\\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.duration-300{transition-duration:.3s}.first\\:border-0:first-child{border-width:0}.hover\\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.focus\\:border-chrdblue:focus{--tw-border-opacity:1;border-color:rgb(10 70 147/var(--tw-border-opacity))}.focus\\:\\!bg-blue-500:focus{--tw-bg-opacity:1!important;background-color:rgb(59 130 246/var(--tw-bg-opacity))!important}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:\\!bg-red-500:focus-visible{--tw-bg-opacity:1!important;background-color:rgb(239 68 68/var(--tw-bg-opacity))!important}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:-moz-placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:placeholder-shown~.peer-placeholder-shown\\/inputs\\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:start-0{inset-inline-start:0}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6{--tw-translate-y:-1.5rem}.peer\\/inputs:focus~.peer-focus\\/inputs\\:-translate-y-6,.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.peer\\/inputs:focus~.peer-focus\\/inputs\\:text-chrdblue{--tw-text-opacity:1;color:rgb(10 70 147/var(--tw-text-opacity))}@media (min-width:640px){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:col-span-4{grid-column:span 4/span 4}.sm\\:mb-0{margin-bottom:0}.sm\\:mb-2{margin-bottom:.5rem}.sm\\:table-row{display:table-row}.sm\\:w-0{width:0}.sm\\:w-36{width:9rem}.sm\\:w-min{width:-moz-min-content;width:min-content}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\\:border-t-2{border-top-width:2px}.sm\\:border-none{border-style:none}.sm\\:text-center{text-align:center}.sm\\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.sm\\:first\\:border-0:first-child{border-width:0}.sm\\:first\\:border-t-2:first-child{border-top-width:2px}.sm\\:odd\\:bg-gray-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:left-auto:where([dir=rtl],[dir=rtl] *){left:auto}.peer\\/inputs:focus~.rtl\\:peer-focus\\/inputs\\:translate-x-1\\/4:where([dir=rtl],[dir=rtl] *){--tw-translate-x:25%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (prefers-color-scheme:dark){.dark\\:border-none{border-style:none}.dark\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\\:\\!bg-slate-700{--tw-bg-opacity:1!important;background-color:rgb(51 65 85/var(--tw-bg-opacity))!important}.dark\\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.dark\\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.dark\\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.dark\\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark\\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.dark\\:\\!text-gray-400{--tw-text-opacity:1!important;color:rgb(156 163 175/var(--tw-text-opacity))!important}.dark\\:\\!text-red-800{--tw-text-opacity:1!important;color:rgb(153 27 27/var(--tw-text-opacity))!important}.dark\\:\\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.dark\\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.dark\\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.dark\\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.dark\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.dark\\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.dark\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:focus\\:border-chrlblue:focus{--tw-border-opacity:1;border-color:rgb(186 218 255/var(--tw-border-opacity))}.peer\\/inputs:focus~.peer-focus\\/inputs\\:dark\\:text-chrlblue{--tw-text-opacity:1;color:rgb(186 218 255/var(--tw-text-opacity))}}@media (min-width:640px){@media (prefers-color-scheme:dark){.sm\\:dark\\:odd\\:bg-slate-700:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}}}\n/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/\n"], dependencies: [{ kind: "component", type: ChrFormComponent, selector: "app-chr-form", inputs: ["sections", "valid", "model", "disabled", "submit", "compact", "debounce"], outputs: ["validChange", "modelChange", "valuesChange", "formChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
794
799
  }
795
800
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrPaginatorComponent, decorators: [{
796
801
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"chrv-components.mjs","sources":["../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.ts","../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.html","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.ts","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.html","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.ts","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-validators/type-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/decimal-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/max-date-validator.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.html","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.html","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.ts","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.html","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.ts","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.html","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.ts","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.html","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.ts","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.html","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.html","../../../projects/chrv-components/src/lib/services/dialog.service.ts","../../../projects/chrv-components/src/lib/services/data.service.ts","../../../projects/chrv-components/src/public-api.ts","../../../projects/chrv-components/src/chrv-components.ts"],"sourcesContent":["import { Component, Input } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { MatButton } from \"@angular/material/button\";\n\nexport interface Breadcrumb {\n\tdisplay: string;\n\tlink?: string;\n\tcallback?: Function;\n}\n\n@Component({\n\tselector: \"app-chr-breadcrumb\",\n\ttemplateUrl: \"./chr-breadcrumb.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-breadcrumb.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [MatButton],\n})\nexport class BreadcrumbComponent {\n\t@Input() crumbs?: Breadcrumb[];\n\n\tconstructor(public router: Router) {}\n\n\tnavigateTo = (uri: string, data?: any) => {\n\t\tthis.router.navigate([uri], { state: data });\n\t};\n}\n","<div class=\"w-full flex flex-row flex-wrap dark:!text-gray-400\">\n @for (crumb of crumbs; track crumb) {\n <div class=\"w-fit min-w-fit\">\n <button class=\"dark:!text-gray-400\" [disabled]=\"!crumb.link && !crumb.callback\" mat-button\n (click)=\"crumb.callback?.() || crumb.link && navigateTo(crumb.link)\">\n {{ crumb.display }}\n </button>\n {{ (crumb.link || crumb.callback) && \">\" }}\n </div>\n }\n</div>","import { Component, Input } from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { MatButtonModule, MatFabButton } from \"@angular/material/button\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"app-chr-button\",\n\ttemplateUrl: \"./chr-button.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-button.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t\tMatButtonModule,\n\t\tCommonModule,\n\t\tMatFabButton,\n\t],\n})\nexport class ChrButtonComponent {\n\t@Input() display?: string = \"\";\n\t@Input() icon?: string = \"\";\n\t@Input() click?: Function;\n\t@Input() color:\n\t\t| \"primary\"\n\t\t| \"accent\"\n\t\t| \"warn\"\n\t\t| \"alert\"\n\t\t| \"darkeraccent\"\n\t\t| \"none\" = \"none\";\n\t@Input() textColor?: \"white\" | \"black\" | string = undefined;\n\t@Input() predicate?: boolean = true;\n\t@Input() type: \"responsive\" | \"table\" | \"full\" | \"fixed\" | \"small\" | \"none\" =\n\t\t\"none\";\n\t@Input() href?: string;\n\t@Input() target?: \"_blank\" | \"_parent\" | \"_self\" | \"_top\";\n\t@Input() disabled: boolean = false;\n\t@Input() tooltip?: string;\n\t@Input() tooltipPosition?:\n\t\t| \"above\"\n\t\t| \"below\"\n\t\t| \"left\"\n\t\t| \"right\"\n\t\t| \"before\"\n\t\t| \"after\";\n\n\tconstructor() {}\n\n\tsetDisabled = (is: boolean) => {\n\t\tthis.disabled = is;\n\t};\n\n\tdoClick = () => {\n\t\tthis.click?.();\n\t};\n}\n","@if (predicate) {\n@if(display){\n<a mat-button mat-flat-button [disabled]=\"disabled\" style=\"--textcolor: {{textColor}};\" class=\"flex h-9 m-0 p-0 sm:w-36\"\n [ngClass]=\"{\n 'pointer-events-none cursor-none' : disabled,\n 'w-36': type=='fixed',\n 'w-full': type=='full',\n 'w-min': type=='table',\n 'w-full sm:w-36' : type=='responsive',\n 'chr-button': textColor !== undefined\n }\" color=\"{{ color }}\" (click)=\"click?.()\" [attr.href]=\"href && href\" [attr.target]=\"target && target\"\n [matTooltip]=\"tooltip||''\" [matTooltipPosition]=\"tooltipPosition||'above'\">\n {{ display }}\n @if (icon) {\n <mat-icon class=\"!m-0\">{{ icon }}</mat-icon>\n }\n</a>\n}\n@if(!display && icon){\n<a mat-raised-button class=\"chr-button flex small-button\" style=\"--textcolor: {{textColor}};\" [ngClass]=\"{\n '!pointer-events-none !cursor-none' : disabled,\n 'chr-button': textColor !== undefined\n }\" [disabled]=\"disabled\" color=\"{{ color }}\" (click)=\"click?.()\" [attr.href]=\"href && href\"\n [attr.target]=\"target && target\" [matTooltip]=\"tooltip||''\" [matTooltipPosition]=\"tooltipPosition||'above'\">\n <i class=\"material-icons\">{{ icon }}</i>\n</a>\n}\n\n}\n\n<!--\n @if (predicate) {\n<a (click)=\"click?.()\" [attr.href]=\"href && href\"\n class=\"flex justify-center align-middle items-center py-2 px-2 text-pretty text-sm rounded-md cursor-pointer\"\n [ngClass]=\"{\n 'pointer-events-none cursor-none' : disabled,\n 'bg-chrdblue hover:bg-blue-700 !text-white opacity-100' : color=='primary',\n 'bg-chrlblue hover:bg-blue-300 !text-black' : color=='accent',\n 'bg-red-600 hover:bg-red-500 !text-white' : color=='warn',\n 'bg-slate-400 hover:bg-slate-600 !text-black' : color=='none',\n 'w-36': type=='fixed',\n 'w-full': type=='full',\n 'w-min': type=='table',\n 'w-full sm:w-36': type=='responsive',\n }\" [attr.target]=\"target && target\" [matTooltip]=\"tooltip||''\" [matTooltipPosition]=\"tooltipPosition||'above'\">\n {{ display }}\n @if (icon) {\n <mat-icon class=\"!m-0\">{{ icon }}</mat-icon>\n }\n</a>\n-->\n<!--\nIF\nClick\ncolor\ntype: table : full\nicon\n-->","import { Component } from \"@angular/core\";\nimport {\n\tMatDialogRef,\n\tMatDialogTitle,\n\tMatDialogContent,\n\tMatDialogActions,\n\tMatDialogClose,\n} from \"@angular/material/dialog\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { ChrButtonComponent } from \"../chr-button/chr-button.component\";\n\n@Component({\n\tselector: \"app-chr-delete-modal\",\n\ttemplateUrl: \"./chr-delete-modal.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-delete-modal.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [\n\t\tMatDialogTitle,\n\t\tMatDialogContent,\n\t\tMatDialogActions,\n\t\tChrButtonComponent,\n\t\tMatDialogClose,\n\t\tMatTooltip,\n\t],\n})\nexport class ChrDeleteModalComponent {\n\tpublic valid: boolean = false;\n\n\tconstructor(public dialogRef: MatDialogRef<ChrDeleteModalComponent>) {}\n\n\tngOnInit() {}\n\n\tpublic close = () => {\n\t\tthis.dialogRef.close(true);\n\t};\n}\n","<div class=\"dark:bg-slate-800 w-full overflow-auto overflow-x-hidden\">\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"mat-typography dark:!text-gray-400\">\n Attention:\n <br>\n <br>\n La suppression d'un élément est irréversible.\n <br>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <br>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <br>\n <br>\n En effectuant cette action et cliquant sur \"Confirmer\" vous certifiez que vous avez pris connaissance des\n conséquences possibles et souhaitez tout de même poursuivre.\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"w-full flex flex-row justify-between\">\n <app-chr-button class=\"w-36\" display=\"Annuler\" color=\"accent\" mat-dialog-close></app-chr-button>\n <app-chr-button class=\"w-36\" display=\"Confirmer\" color=\"warn\" [click]=\"close\"\n [matTooltip]=\"'Attention: cette action est irréversible !'\" matTooltipPosition=\"above\"></app-chr-button>\n </div>\n </mat-dialog-actions>\n</div>","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-type]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: TypeValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class TypeValidatorDirective implements Validator {\r\n @Input() type?: string;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.type ? type(this.type)(control) : null;\r\n }\r\n}\r\n\r\nexport function type(type: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const isType = typeof value == type;\r\n\r\n return !isType\r\n ? ({\r\n type: true,\r\n requiredType: type,\r\n actualType: typeof value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-decimal]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: DecimalValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class DecimalValidatorDirective implements Validator {\r\n @Input() amount?: number;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.amount ? decimal(this.amount)(control) : null;\r\n }\r\n}\r\n\r\nexport function decimal(amount: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n let isTooLong = false;\r\n\r\n const str = `${value}`;\r\n isTooLong =\r\n str.indexOf(',') != -1\r\n ? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount\r\n : str.indexOf('.') != -1\r\n ? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount\r\n : false;\r\n\r\n return isTooLong\r\n ? ({\r\n decimal: true,\r\n max: amount,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport moment from 'moment';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-max-date]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: MaxDateValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class MaxDateValidatorDirective implements Validator {\r\n @Input() date?: Date;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.date ? maxDate(this.date)(control) : null;\r\n }\r\n}\r\n\r\nexport function maxDate(date: Date): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const maxDate = moment(date);\r\n const inputDate = moment(value);\r\n\r\n return !(inputDate.isValid() && inputDate.isBefore(maxDate))\r\n ? ({\r\n maxdate: true,\r\n max: maxDate.toDate(),\r\n actual: value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tforwardRef,\n\tViewChild,\n\tViewEncapsulation,\n} from \"@angular/core\";\nimport {\n\tControlValueAccessor,\n\tFormControl,\n\tNG_VALUE_ACCESSOR,\n\tReactiveFormsModule,\n} from \"@angular/forms\";\nimport {\n\tMatAutocomplete,\n\tMatAutocompleteTrigger,\n} from \"@angular/material/autocomplete\";\nimport {\n\tObservable,\n\tstartWith,\n\tmap,\n\tof,\n\tcombineLatest,\n\tcombineLatestAll,\n} from \"rxjs\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { AsyncPipe } from \"@angular/common\";\n\nexport interface IInputSearchFilter {\n\tdisplay: string;\n\tcallback?: Function;\n\ttooltip?: string;\n}\n\n@Component({\n\tselector: \"app-chr-search-select, [app-chr-search-select]\",\n\ttemplateUrl: \"./chr-search-select.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-search-select.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tmulti: true,\n\t\t\tuseExisting: ChrSearchSelectComponent,\n\t\t},\n\t],\n\tstandalone: true,\n\timports: [\n\t\tReactiveFormsModule,\n\t\tMatAutocompleteTrigger,\n\t\tMatTooltip,\n\t\tMatAutocomplete,\n\t\tMatOption,\n\t\tAsyncPipe,\n\t],\n})\nexport class ChrSearchSelectComponent implements ControlValueAccessor {\n\tpublic predicate: boolean = true;\n\n\tpublic searchSelect: FormControl = new FormControl<string | null>(null);\n\tpublic filteredModelOptions?: Observable<any>;\n\n\tpublic onTouched: any = () => {};\n\n\t@Input() name?: string;\n\t@Input() placeholder?: string;\n\t@Input() data: any[] | null = [];\n\t@Input() display?: Function;\n\t@Input() disabled: boolean = false;\n\t@Input() model: any | null = null;\n\t@Input() id: any;\n\t@Output() modelChange: EventEmitter<any> = new EventEmitter();\n\t@Output() keyup: EventEmitter<KeyboardEvent> =\n\t\tnew EventEmitter<KeyboardEvent>();\n\n\t@Input() filters?: IInputSearchFilter[];\n\tpublic filterIndex: number = 0;\n\n\tngOnInit() {\n\t\tthis.registerFilters();\n\t\tthis.registerAutoComplete();\n\t}\n\n\tgetModelDisplay = (model: any) => {\n\t\treturn this.display?.(model) || \"\";\n\t};\n\n\temit = (event: any) => {\n\t\tthis.modelChange.emit(event);\n\t};\n\n\twriteValue = (obj: any): void => {\n\t\tthis.searchSelect.setValue(obj);\n\t};\n\n\tregisterOnChange = (fn: any): void => {\n\t\tthis.searchSelect.valueChanges.subscribe((value) => {\n\t\t\tfn(value || null);\n\t\t});\n\t};\n\n\tregisterOnTouched = (fn: any): void => {\n\t\tthis.searchSelect.markAsTouched = fn;\n\t};\n\n\tregisterFilters = () => {\n\t\tthis.filteredModelOptions = this.searchSelect.valueChanges.pipe(\n\t\t\tstartWith(\"\"),\n\t\t\tmap((value) => this._filterModel(value! || -1)),\n\t\t\tmap((values) => {\n\t\t\t\treturn this.filters && this.filters[this.filterIndex].callback\n\t\t\t\t\t? values.filter((r) => this.filters![this.filterIndex].callback!(r))\n\t\t\t\t\t: values;\n\t\t\t})\n\t\t);\n\t};\n\n\tregisterAutoComplete = () => {\n\t\t//If there is only one value left,\n\t\tthis.filteredModelOptions?.subscribe((values) => {\n\t\t\tif (values.length == 1) {\n\t\t\t\tthis.emit(values[0]);\n\t\t\t}\n\t\t});\n\t};\n\n\tsetDisabledState? = (isDisabled: boolean): void => {\n\t\tthis.disabled = isDisabled;\n\t\tisDisabled ? this.searchSelect.disable() : this.searchSelect.enable();\n\t};\n\n\tincrement = () => {\n\t\tthis.writeValue(\"\");\n\t\tconst modulo = this.filters ? this.filters.length : 1;\n\t\tthis.filterIndex = (this.filterIndex + 1) % modulo;\n\t};\n\n\tgetValue = () => {\n\t\treturn this.searchSelect.value;\n\t};\n\n\tvoid = () => {};\n\n\tprivate _filterModel = (value: number | string): any[] => {\n\t\treturn typeof value == \"string\"\n\t\t\t? this._doFilterModelString(`${value}`)\n\t\t\t: this._doFilterModelInt(value);\n\t};\n\n\tprivate _doFilterModelInt = (id: number) => {\n\t\tconst tmp = this.data?.find((r) => r.id == id);\n\t\treturn tmp ? tmp : [];\n\t};\n\n\tprivate _doFilterModelString = (input: string) => {\n\t\treturn this.data?.filter((r) => this._filterValues(r, input));\n\t};\n\n\tprivate _filterValues = (value: any, input: string) => {\n\t\t//Si l'utilisateur entre un espace, on renvoie true, afin que tous les résultats s'affichent.\n\t\tif (input == \" \") return true;\n\t\t//Sinon, on ne renvoie true que pour les éléments qui matchent son input\n\t\treturn `${this.getModelDisplay(value)}`\n\t\t\t.trim()\n\t\t\t.toLowerCase()\n\t\t\t.includes(input.trim().toLowerCase());\n\t};\n}\n","@if (predicate) {\n<input [matTooltip]=\"searchSelect.disabled ? '': 'Entrez un espace pour voir les choix disponibles'\"\n matTooltipPosition=\"above\" #input type=\"text\" name=\"{{name}}\" matInput [formControl]=\"searchSelect\"\n [value]=\"getModelDisplay(model)\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\"\n placeholder=\"{{ placeholder || ' ' }}\" required (keyup)=\"keyup.emit($event)\" [matAutocomplete]=\"auto\" />\n<ng-content></ng-content>\n@if (filters) {\n<span [matTooltip]=\"filters[filterIndex].tooltip || ''\" matTooltipPosition=\"above\" class=\"absolute inner-button cursor-pointer top-0 right-0 h-[calc(100%_-_2px)] border-gray-300 dark:border-gray-400 border-l-2 border-b-0 border-t-0 \n border-r-0 w-fit text-gray-900 dark:text-gray-400 px-1 text-center opacity-100 bg-slate-100 dark:bg-slate-700 bg-opacity-50 flex justify-center \n align-middle items-center\" (click)=\"filters ? increment() : void\">\n <p class=\"inline-block w-fit h-min overflow-hidden text-nowrap text-ellipsis\">{{ filters[filterIndex].display }}\n </p>\n</span>\n}\n<mat-autocomplete class=\"dark:!bg-slate-700 dark:!text-white rounded-lg no-scrollbar \" #auto=\"matAutocomplete\"\n id=\"{{id}}-auto\" [displayWith]=\"getModelDisplay.bind(this)\" (optionSelected)=\"emit($event.option.value)\">\n @for (model of filteredModelOptions | async; track model) {\n <mat-option class=\"dark:!text-gray-400 rounded-lg focus:!bg-blue-500 focus-visible:!bg-red-500\" [value]=\"model\"\n selected>\n {{ getModelDisplay(model) || '' }}\n </mat-option>\n }\n</mat-autocomplete>\n}","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tViewEncapsulation,\n\tChangeDetectorRef,\n\tOnChanges,\n\tSimpleChanges,\n\tOnInit,\n} from \"@angular/core\";\nimport { TypeValidatorDirective, type } from \"./chr-validators/type-validator\";\nimport { ValidatorFn, ReactiveFormsModule, FormsModule } from \"@angular/forms\";\nimport {\n\tFormBuilder,\n\tFormGroup,\n\tValidators,\n\tFormControl,\n} from \"@angular/forms\";\nimport { decimal } from \"./chr-validators/decimal-validator\";\nimport { maxDate } from \"./chr-validators/max-date-validator\";\nimport { MatError } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { ChrSearchSelectComponent } from \"../chr-search-select/chr-search-select.component\";\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\nimport {\n\tDatePipe,\n\tCommonModule,\n\tDATE_PIPE_DEFAULT_OPTIONS,\n} from \"@angular/common\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\n\nexport interface ISearchFilter {\n\tdisplay: string;\n\tcallback?: Function;\n\ttooltip?: string;\n}\n\nexport interface IControlValidation {\n\trule: string;\n\tvalue?: any;\n\tdisplay?: string;\n}\n\nexport interface IControl {\n\tlabel?: string;\n\tname: string;\n\tspan?: string;\n\twidth?: \"col\" | \"row\";\n\tcol?: number;\n\trow?: number;\n\ttype:\n\t\t| \"text\"\n\t\t| \"password\"\n\t\t| \"textArea\"\n\t\t| \"number\"\n\t\t| \"date\"\n\t\t| \"datetime\"\n\t\t| \"searchSelect\"\n\t\t| \"color\"\n\t\t| \"toggle\";\n\tvalue?: any;\n\tdata?: any[] | null;\n\ticon?: string;\n\ticonCallback?: Function;\n\ticonCallbackDisabled?: boolean;\n\ticonTooltip?: string;\n\tfn?: (object: any) => string;\n\tfilters?: ISearchFilter[];\n\tvalidations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n\ttitle?: string;\n\tcontrols: IControl[];\n}\n\nexport interface IFormControl {\n\t[key: string]: any;\n}\n@Component({\n\tselector: \"app-chr-form\",\n\ttemplateUrl: \"./chr-form.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-form.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t\t\"../chr-form/chr-form.component.scss\",\n\t],\n\tstandalone: true,\n\timports: [\n\t\tReactiveFormsModule,\n\t\tFormsModule,\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t\tMatSlideToggleModule,\n\t\tMatError,\n\t\tChrSearchSelectComponent,\n\t\tMatAutocompleteModule,\n\t\tDatePipe,\n\t\tCommonModule,\n\t\tTypeValidatorDirective,\n\t],\n\tproviders: [\n\t\tDatePipe,\n\t\t{\n\t\t\tprovide: DATE_PIPE_DEFAULT_OPTIONS,\n\t\t\tuseValue: { dateFormat: \"shortDate\" },\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.Default,\n})\nexport class ChrFormComponent implements OnInit, AfterViewInit {\n\t@Input() sections?: IFormSection[];\n\t@Input() valid?: boolean;\n\t@Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n\t@Input() model?: any;\n\t@Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n\t@Input() disabled?: boolean;\n\t@Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n\t@Input() submit?: Function;\n\n\t@Input() compact: boolean = false;\n\n\t@Output() formChange: EventEmitter<IFormControl> =\n\t\tnew EventEmitter<IFormControl>();\n\n\tform: FormGroup = this.builder.group({});\n\n\tupdateValueAndValidity = () => {\n\t\tthis.form.markAsDirty();\n\t\tthis.form.updateValueAndValidity({ emitEvent: true });\n\t};\n\n\tpublic initialized: boolean = false;\n\n\tconstructor(\n\t\tprivate builder: FormBuilder,\n\t\tprivate datePipe: DatePipe,\n\t\tprivate changeDetector: ChangeDetectorRef\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis._initValidators();\n\t\tthis._registerInputEmitters();\n\t\tthis._registerInputUpdaters();\n\t\tthis.initialized = true;\n\t}\n\n\tngAfterViewInit(): void {\n\t\t//this._initValues();\n\t\tthis.changeDetector.detectChanges();\n\t\tthis.form.valueChanges.subscribe((res) => {\n\t\t\tthis.valid = this.form.valid;\n\t\t\tthis.validChange.emit(this.form.valid);\n\t\t\tthis.valuesChange.emit(res);\n\t\t\tthis.changeDetector.markForCheck();\n\t\t\tthis.changeDetector.detectChanges();\n\t\t});\n\t}\n\n\tvalue = (input?: string) => {\n\t\tif (input) return this.form.controls[input]?.value;\n\t\treturn this.form.value;\n\t};\n\n\tsetValue = (input: string, value: any) => {\n\t\tif (input) this.form.get(input)?.setValue(value);\n\t};\n\n\tisValid = (input?: string) => {\n\t\tif (input) return this.form.get(input)?.valid;\n\t\treturn this.valid;\n\t};\n\n\tisControlRequired = (control: IControl) => {\n\t\treturn control.validations?.find((v) => v.rule.toLowerCase() == \"required\");\n\t};\n\n\tpatchValue = (key: string, value: any) => {\n\t\tthis.form.patchValue({ [key]: value });\n\t};\n\n\tpatch = (model: any) => {\n\t\tfor (const key of Object.keys(model)) {\n\t\t\tthis.patchValue(key, model[key]);\n\t\t}\n\t\tthis.form.markAsDirty();\n\t\tthis.form.updateValueAndValidity();\n\t};\n\n\treset = () => {\n\t\tthis.form.reset();\n\t};\n\n\tsetControlValue = (\n\t\tmodel: any,\n\t\tcontrol: IControl,\n\t\tvalue: any,\n\t\tindex?: number\n\t) => {\n\t\tif (model?.[control.name]) {\n\t\t\tmodel[control.name] = this._convertValueToType(value, control.type);\n\t\t}\n\t\tif (control.value)\n\t\t\tcontrol.value = this._convertValueToType(value, control.type);\n\n\t\tthis.patchValue(\n\t\t\tcontrol.name,\n\t\t\tthis._convertValueToType(value, control.type)\n\t\t);\n\t};\n\n\tpublic resize = (textArea: HTMLTextAreaElement) => {\n\t\tconst initialHeight = textArea.style.height;\n\t\ttextArea.style.height = initialHeight;\n\t\ttextArea.style.height = \"\" + textArea.scrollHeight + \"px\";\n\t};\n\n\tpublic doSubmit = () => {\n\t\tthis.form.markAllAsTouched();\n\t\tif (this.valid && this.form.valid) this.submit?.(this.form.value);\n\t};\n\n\tpublic track = (control: string, index: number) => {\n\t\tthis.form.get(control)?.updateValueAndValidity();\n\t\treturn index;\n\t};\n\n\tprivate _registerInputEmitters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tconst formControl = this.form.get(control.name);\n\t\t\t\tformControl!.valueChanges.subscribe((e) => {\n\t\t\t\t\tthis.formChange.emit({ [control.name]: e });\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _registerInputUpdaters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tconst formControl = this.form.get(control.name)!;\n\t\t\t\tformControl.valueChanges.subscribe((value) => {\n\t\t\t\t\tif (this.model) {\n\t\t\t\t\t\tthis.model[control.name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontrol.value = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _initValues = () => {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (let control of section.controls) {\n\t\t\t\tconst value = this.model ? this.model[control.name] : null;\n\t\t\t\tif (!value && typeof value != \"number\") {\n\t\t\t\t\tif (control.value)\n\t\t\t\t\t\tthis.form\n\t\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t\t.patchValue(\n\t\t\t\t\t\t\t\tthis._convertValueToType(control.value, control.type)\n\t\t\t\t\t\t\t);\n\t\t\t\t\telse this.form.get(control.name)!.patchValue(null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.form\n\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t.patchValue(this._convertValueToType(value, control.type));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _convertValueToType = (\n\t\tvalue: any,\n\t\ttype:\n\t\t\t| \"text\"\n\t\t\t| \"password\"\n\t\t\t| \"textArea\"\n\t\t\t| \"number\"\n\t\t\t| \"date\"\n\t\t\t| \"datetime\"\n\t\t\t| \"searchSelect\"\n\t\t\t| \"select\"\n\t\t\t| \"color\"\n\t\t\t| \"toggle\"\n\t) => {\n\t\tswitch (type) {\n\t\t\tcase \"text\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"number\":\n\t\t\t\treturn value || 0;\n\t\t\tcase \"searchSelect\": {\n\t\t\t\tif (typeof value == \"string\" && value.trim() == \"\") value = null;\n\t\t\t\treturn value || null;\n\t\t\t}\n\t\t\tcase \"textArea\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"password\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"select\":\n\t\t\t\treturn value || null;\n\t\t\tcase \"date\":\n\t\t\t\treturn this.datePipe.transform(value, \"yyyy-MM-dd\");\n\t\t\tcase \"datetime\":\n\t\t\t\treturn this.datePipe.transform(value, \"yyyy-MM-ddTHH:mm\");\n\t\t\tcase \"color\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"toggle\":\n\t\t\t\treturn value as boolean;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t};\n\n\tformatDateForInput = (date: any) => {\n\t\tthis.datePipe.transform(date, \"yyyy-MM-dd\");\n\t};\n\n\tprivate _initValidators() {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (const input of section.controls) {\n\t\t\t\tif (input.type == \"searchSelect\" && !input.fn)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"An input of type 'searchSelect' needs a display function !\"\n\t\t\t\t\t);\n\t\t\t\tconst control = new FormControl(\n\t\t\t\t\tthis._convertValueToType(this.model?.[input.name], input.type) ||\n\t\t\t\t\t\tinput.value,\n\t\t\t\t\tthis._getValidators(input.validations)\n\t\t\t\t);\n\t\t\t\tthis.form.addControl(input.name, control);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getValidators = (validations?: IControlValidation[]) => {\n\t\tconst validators: ValidatorFn[] = [];\n\t\tif (!validations) return validators;\n\t\t//Switch case breaks the mobile app so we'll do if statements\n\t\tfor (const validation of validations) {\n\t\t\tconst rule = validation.rule.toLocaleLowerCase();\n\t\t\tif (rule == \"min\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.min(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"max\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.max(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"required\") {\n\t\t\t\tvalidation.display = \"Ce champs est requis !\";\n\t\t\t\tvalidators.push(Validators.required);\n\t\t\t}\n\t\t\tif (rule == \"email\") {\n\t\t\t\tvalidation.display = \"Cette adresse email n'est pas valide !\";\n\t\t\t\tvalidators.push(Validators.email);\n\t\t\t}\n\t\t\tif (rule == \"minlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.minLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.maxLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"type\") {\n\t\t\t\tvalidation.display = \"Cette valeur n'est pas valide !\";\n\t\t\t\tvalidators.push(type(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"decimal\") {\n\t\t\t\tvalidation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(decimal(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxdate\") {\n\t\t\t\tvalidation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(maxDate(validation.value));\n\t\t\t}\n\t\t}\n\t\treturn validators;\n\t};\n}\n","<div class=\"flex flex-col justify-center min-h-5/6 mt-2\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n @for (section of sections; track section; let index = $index) {\n <div>\n @if (section.title) {\n <h2 class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n }\n <div *ngIf=\"initialized\" [ngClass]=\"\n compact ? 'grid gap-y-2 gap-x-6 sm:grid-cols-4':'grid gap-y-2 gap-x-6 sm:grid-cols-2'\">\n @for (control of section.controls; track index; let index = $index; let\n last =\n $last)\n {\n <div class=\"relative h-min mt-2\" [ngClass]=\"{\n 'sm:col-span-2': (control.width == 'row' && !compact) || control.type=='textArea' && compact && control.width != 'row',\n 'sm:col-span-4': control.width =='row' && compact,\n }\">\n @if (control.type=='searchSelect') {\n <div app-chr-search-select class=\"relative input z-0 w-full\" id=\"{{ control.name }}_{{ index }}\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n [data]=\"control.data || []\" [display]=\"control.fn!\" [name]=\"control.name\" placeholder=\" \"\n [filters]=\"control.filters\" [formControlName]=\"control.name\"\n [(model)]=\"model?.[control.name] || control.value\" (keyup.enter)=\"last ? doSubmit() : ''\">\n <label class=\"label absolute text-sm text-gray-500 dark:text-gray-400\" [for]=\"control.name\">{{\n control.label\n }}\n @if (isControlRequired(control)) {\n <span class=\"text-red-500\">*</span>\n }\n :\n @for (validation of control.validations; track validation) {\n @if (\n form.get([control.name])?.touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n ) {\n <mat-error class=\"text-red-500 dark:text-red-800\">{{ validation.display }}</mat-error>\n }\n }\n </label>\n </div>\n }\n <div class=\"relative z-0 w-full group/inputs content\">\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--TEXT-->\n @if (control.type == 'text') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--PASSWORD-->\n @if (control.type == 'password') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"password\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--TEXT AREA-->\n @if (control.type == 'textArea') {\n <textarea #textArea class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (input)=\"resize(textArea)\"\n (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"no-scrollbar input !resize-none height-normalized block py-2 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\"></textarea>\n }\n <!--NUMBER-->\n @if (control.type == 'number') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"number\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" placeholder=\" \"\n [formControlName]=\"control.name\" [value]=\"model?.[control.name] || control.value || 0\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--DATE-->\n @if (control.type == 'date') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2 px-0 w-full height-normalized text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n @if (control.type == 'datetime') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"datetime-local\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2 px-0 w-full height-normalized text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--COLOR-->\n @if (control.type == 'color') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"color\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n style=\"height: 42px;\"\n class=\"block input py-1.5 m-0 px-0 w-full bg-transparent border-0 border-b-2 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n @if (control.type == 'toggle'){\n <input #toggle type=\"checkbox\" class=\"hidden checkbox\" [formControlName]=\"control.name\" placeholder=\" \"\n [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" />\n <div\n class=\"relative toggle-wrapper block input bg-transparent border-0 border-b-2 border-gray-300 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\">\n <div (click)=\"toggle?.click()\" class=\"relative block input toggle\">\n </div>\n </div>\n }\n @if (control.type != 'searchSelect') {\n <label class=\"label absolute text-sm text-gray-500 dark:text-gray-400\" [for]=\"control.name\">{{\n control.label\n }}\n @if(control.label && control.label != '' && control.label != ' '){\n @if (isControlRequired(control)) {\n <span class=\"text-red-500\">*</span>\n }\n :\n }\n @for (validation of control.validations; track validation) {\n @if (\n form.get([control.name])?.touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n ) {\n <mat-error class=\"text-red-500 dark:text-red-800\">{{ validation.display }}</mat-error>\n }\n }\n </label>\n }\n @if (control.icon && !disabled) {\n <span\n [ngClass]=\"control.iconCallbackDisabled ? 'text-gray-400 dark:text-gray-500':'text-gray-900 dark:text-white'\"\n class=\"absolute p-2.5 bottom-0 right-0\" [matTooltip]=\"control.iconTooltip || ''\"\n matTooltipPosition=\"above\"\n (click)=\"!control.iconCallbackDisabled && control.iconCallback?.(form.get([control.name])?.value)\"><mat-icon\n class=\"flex input justify-center align-middle items-center content-center text-lg\">{{control.icon}}</mat-icon></span>\n }\n </div>\n @if (control.span) {\n <span\n [ngClass]=\"!form.get([control.name])?.errors || !form.get([control.name])?.touched ? 'text-gray-600 dark:text-gray-300' : '!text-red-500 dark:!text-red-800'\"\n class=\"h-0 text-xs\">{{ control.span\n }}</span>\n }\n </div>\n }\n </div>\n @if (index != (sections||[]).length - 1 && !compact) {\n <div class=\"py-4\">\n <hr class=\"\" />\n </div>\n }\n </div>\n }\n </fieldset>\n </form>\n</div>","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormControl, ReactiveFormsModule } from \"@angular/forms\";\n\n@Component({\n\tselector: \"app-chr-searchbar\",\n\ttemplateUrl: \"./chr-searchbar.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-searchbar.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [ReactiveFormsModule],\n})\nexport class ChrSearchbarComponent {\n\t@Input() model?: string | null;\n\t@Output() modelChange: EventEmitter<string> = new EventEmitter();\n\t@Input() placeholder?: string | null;\n\t@Input() label?: string | null;\n\tpublic searchBy = new FormControl<string>(\"\");\n\n\tconstructor() {\n\t\tthis.searchBy.valueChanges.subscribe((value) => this.emit(value));\n\t}\n\n\temit(event: any) {\n\t\tthis.modelChange.emit(event);\n\t}\n}\n","<div class=\"w-full relative z-0 group/inputs\">\n <input matInput [formControl]=\"searchBy\" placeholder=\" \" type=\"text\"\n class=\"block py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n <label\n class=\"peer/inputs-focus:font-medium absolute text-sm text-gray-500 dark:text-gray-400 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus/inputs:start-0 rtl:peer-focus/inputs:translate-x-1/4 rtl:peer-focus/inputs:left-auto peer-focus/inputs:text-chrdblue peer-focus/inputs:dark:text-chrlblue 0 peer-placeholder-shown/inputs:scale-100 peer-placeholder-shown/inputs:translate-y-0 peer-focus/inputs:scale-75 peer-focus/inputs:-translate-y-6\">{{\n label\n }}\n <!--\n @for (validation of control.validations; track validation) {\n @if (\n control?.touched &&\n form.hasError(validation.rule.toLowerCase(), name)\n ) {\n <mat-error class=\"text-red-500 dark:text-red-800\">{{ validation.display }}</mat-error>\n }\n }\n -->\n </label>\n</div>","import {\n\tAfterContentChecked,\n\tChangeDetectorRef,\n\tComponent,\n\tEventEmitter,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n} from \"@angular/core\";\nimport { PaginationInstance, PaginationService } from \"ngx-pagination\";\nimport { NgClass, CommonModule } from \"@angular/common\";\nimport { ChrFormComponent } from \"../chr-form/chr-form.component\";\nimport { MatIconModule } from \"@angular/material/icon\";\n\n@Component({\n\tselector: \"app-chr-paginator\",\n\ttemplateUrl: \"./chr-paginator.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-paginator.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [ChrFormComponent, CommonModule, MatIconModule],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n\tprivate _page: number | null = null;\n\tprivate _pageSize: number | null = null;\n\t@Input()\n\tget page() {\n\t\treturn this._page || 1;\n\t}\n\tset page(value: number) {\n\t\tthis._page = value;\n\t\tthis.pageChange.emit(value);\n\t\tthis.changeDetector.markForCheck();\n\t\tthis.changeDetector.detectChanges();\n\t}\n\n\t@Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n\n\t@Input()\n\tget pageSize() {\n\t\treturn this._pageSize || 20;\n\t}\n\tset pageSize(value: number) {\n\t\tthis._pageSize = value;\n\t\tthis.pageSizeChange.emit(value);\n\t\tthis.changeDetector.markForCheck();\n\t\tthis.changeDetector.detectChanges();\n\t}\n\n\t@Output() pageSizeChange: EventEmitter<number> = new EventEmitter<number>();\n\n\t@Input() id: string | undefined = \"chr_base-data-table\";\n\n\t@Input() allowSizeChange: boolean | string = \"true\";\n\n\tinstance?: PaginationInstance;\n\n\tconstructor(\n\t\tpublic service: PaginationService,\n\t\tprivate changeDetector: ChangeDetectorRef\n\t) {}\n\n\tngAfterContentChecked(): void {\n\t\tthis.instance = this.service.getInstance(\n\t\t\t`${this.id}`\n\t\t) as PaginationInstance;\n\t}\n\n\tngOnInit(): void {}\n\n\tpublic previous = () => {\n\t\tif (this.isFirstPage()) return;\n\t\tthis.page--;\n\t\tthis.pageChange.emit(this.page);\n\t\t//this.emit();\n\t};\n\n\tpublic next = () => {\n\t\tif (this.isLastPage()) return;\n\t\tthis.page += 1;\n\t\tthis.pageChange.emit(this.page);\n\t\t//this.emit();\n\t};\n\n\tpublic setPage = (page: number) => {\n\t\tif (page < 1 || page > this.lastPage()) return;\n\t\tthis.page = page;\n\t\tthis.emit();\n\t};\n\n\tpublic setPageEventHandler = (event: any) => {\n\t\treturn this.setPage(event.target.value);\n\t};\n\n\tpublic isFirstPage = () => {\n\t\treturn this.page == 1;\n\t};\n\n\tpublic setPageSize = (pageSize: number) => {\n\t\tthis.setPage(1);\n\t\tif (this.instance) this.instance.itemsPerPage = pageSize;\n\t\tthis.pageSizeChange.emit(pageSize);\n\t};\n\n\tpublic setPageSizeEventHandler = (event: any) => {\n\t\treturn this.setPageSize(event.target.value);\n\t};\n\n\tpublic isLastPage = () => {\n\t\tif (!this.instance?.totalItems) return false;\n\t\treturn (\n\t\t\tthis.page >=\n\t\t\tMath.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n\t\t);\n\t};\n\n\t// public pageSize = () => this.instance.itemsPerPage;\n\n\tpublic lastPage = () =>\n\t\tthis.instance?.totalItems\n\t\t\t? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n\t\t\t: 1;\n\n\tprivate emit = (page: number | undefined = undefined) => {\n\t\tif (!page) this.pageChange.emit(this.page);\n\t\telse this.pageChange.emit(page);\n\t};\n}\n","<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n @if (allowSizeChange === true || allowSizeChange == 'true') {\n <div class=\"w-40\">\n <app-chr-form id=\"table-paginator-form\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n label:'Éléments par page',\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n iconTooltip: 'Cliquez ici pour mettre à jour la taille de la table'\n }]\n }]\">\n </app-chr-form>\n </div>\n }\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_right</mat-icon></button>\n </div>\n</div>","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tDirective,\n} from \"@angular/core\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass } from \"@angular/common\";\n/**\n * This should only be used as a directive\n */\n@Component({\n\tselector: \"app-chr-table-header-cell, [app-chr-table-header-cell]\",\n\ttemplateUrl: \"./chr-table-header-cell.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-table-header-cell.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [NgClass, MatIcon],\n})\nexport class ChrTableHeaderCellComponent {\n\t@Input() display?: string;\n\t@Input() column?: string;\n\t@Input() alignment?: string;\n\t@Input() isAsc: boolean = true;\n\t@Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n\t@Input() sortBy?: string;\n\t@Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n\torderBy = (column?: string) => {\n\t\tif (!this.sortBy) this.sortBy = column;\n\n\t\tif (this.sortBy == column) {\n\t\t\tthis.isAsc = !this.isAsc;\n\t\t\tthis.sortBy = column;\n\t\t\tthis.isAscChange.emit(this.isAsc);\n\t\t\tthis.sortByChange.emit(this.sortBy);\n\t\t} else {\n\t\t\tthis.isAsc = true;\n\t\t\tthis.sortBy = column;\n\t\t\tthis.isAscChange.emit(this.isAsc);\n\t\t\tthis.sortByChange.emit(this.sortBy);\n\t\t}\n\t};\n}\n","<div class=\"relative w-full cursor-pointer flex flex-row align-middle self-center\" [ngClass]=\"\n alignment == 'left' ? 'justify-start' : \n alignment == 'center' ? 'justify-center' : \n alignment == 'right' ? 'justify-end' : \n 'justify-left'\" (click)=\"orderBy(column)\">\n <p>{{ display }}</p>\n @if (sortBy) {\n <div class=\"absolute right-3 top-0 h-0 w-0\">\n @if (sortBy == column && isAsc) {\n <mat-icon>arrow_upward</mat-icon>\n }\n @if (sortBy == column && !isAsc) {\n <mat-icon>arrow_downward</mat-icon>\n }\n </div>\n }\n</div>\n<ng-content></ng-content>","import * as moment from \"moment\";\nimport {\n\tComponent,\n\tInput,\n\tAfterViewInit,\n\tEventEmitter,\n\tOutput,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { ChrPaginatorComponent } from \"../chr-paginator/chr-paginator.component\";\nimport { ChrButtonComponent } from \"../chr-button/chr-button.component\";\nimport { ChrTableHeaderCellComponent } from \"../chr-table-header-cell/chr-table-header-cell.component\";\nimport { SortPipe } from \"chrv-pipes\";\nimport { NgxPaginationModule } from \"ngx-pagination\";\nimport {\n\tCommonModule,\n\tDATE_PIPE_DEFAULT_OPTIONS,\n\tDatePipe,\n} from \"@angular/common\";\nimport { callback } from \"chart.js/dist/helpers/helpers.core\";\n\nexport interface IColumn {\n\tdisplay: string;\n\talignment?: \"left\" | \"center\" | \"right\";\n\tchipsTarget?: string[];\n\tchipsDisplay?: string[];\n\tchipsCallback?: Function;\n\tproperties?: string[];\n\tcallback?: Function;\n\tdate?: string;\n\tisLink?: boolean;\n\tlinkStaticUrl?: string;\n}\n\nexport interface IComputedRow {\n\tcolumns: IComputedColumn[];\n}\n\nexport interface IComputedColumn {\n\tlabel?: string;\n\tvalue?: any;\n\tcallback?: Function;\n\talignment?: \"left\" | \"center\" | \"right\";\n\tafter?: string;\n}\n\nexport interface IAction {\n\tdisplay?: string;\n\ticon?: string;\n\tcallback: Function;\n\tdisabled?: boolean;\n\tdisabledCallback?: Function;\n\tcolor: \"primary\" | \"accent\" | \"warn\" | \"alert\" | \"darkeraccent\" | \"none\";\n}\n\n@Component({\n\tselector: \"app-chr-table, [app-chr-table]\",\n\ttemplateUrl: \"./chr-table.component.html\",\n\tstyleUrls: [\"./chr-table.component.scss\", \"../../../../../tailwindbuild.css\"],\n\tstandalone: true,\n\timports: [\n\t\tChrTableHeaderCellComponent,\n\t\tChrButtonComponent,\n\t\tChrPaginatorComponent,\n\t\tSortPipe,\n\t\tNgxPaginationModule,\n\t\tCommonModule,\n\t\tDatePipe,\n\t],\n\tproviders: [\n\t\tDatePipe,\n\t\t{\n\t\t\tprovide: DATE_PIPE_DEFAULT_OPTIONS,\n\t\t\tuseValue: { dateFormat: \"shortDate\" },\n\t\t},\n\t],\n})\nexport class ChrTableComponent implements AfterViewInit {\n\t@Input() computedRows?: IComputedRow[];\n\t@Input() columns?: IColumn[];\n\t@Input() data: any[] | null = [];\n\t@Input() actions?: IAction[];\n\n\t@Input() isAsc: boolean = true;\n\t@Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n\t@Input() sortBy?: string;\n\t@Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n\t@Input() pageSize: number = 50;\n\t@Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n\n\t@Input() id?: string = \"chr_base-data-table\";\n\n\t@Input() color: \"primary\" | \"accent\" | \"warn\" | \"alert\" | \"darkeraccent\" =\n\t\t\"accent\";\n\n\t@Input() textColor:\n\t\t| \"primary\"\n\t\t| \"accent\"\n\t\t| \"warn\"\n\t\t| \"alert\"\n\t\t| \"darkeraccent\"\n\t\t| \"white\"\n\t\t| \"black\" = \"black\";\n\n\tprivate _page: number = 1;\n\t@Input()\n\tget currentPage() {\n\t\treturn this._page;\n\t}\n\tset currentPage(value: number) {\n\t\tthis._page = value;\n\t\tthis.currentPageChange.emit(value);\n\t\tthis.changeDetector.markForCheck();\n\t\tthis.changeDetector.detectChanges();\n\t}\n\t@Output() currentPageChange: EventEmitter<number> = new EventEmitter();\n\n\tcurrentProperty: any | null = null;\n\tcurrentText: string | null = null;\n\n\tconstructor(\n\t\tprivate _date: DatePipe,\n\t\tprivate changeDetector: ChangeDetectorRef\n\t) {}\n\n\tngAfterViewInit(): void {}\n\n\temitIsAsc(isAsc: any) {\n\t\tthis.isAscChange.emit(isAsc);\n\t}\n\n\temitSortBy(sortBy: any) {\n\t\tthis.sortByChange.emit(sortBy);\n\t}\n\n\temitPageSize(pageSize: any) {\n\t\tthis.pageSize = pageSize;\n\t\tthis.pageSizeChange.emit(pageSize);\n\t}\n\n\temitCurrentPage(currentPage: any) {\n\t\tthis.currentPage = currentPage;\n\t\tthis.currentPageChange.emit(currentPage);\n\t}\n\n\tgetProperty = (entry: any, properties?: any[]) => {\n\t\tthis.currentProperty = null;\n\t\tthis.currentText = null;\n\n\t\tif (!properties) {\n\t\t\tthis.currentProperty = entry;\n\t\t\treturn entry;\n\t\t}\n\t\tlet value = entry;\n\t\tfor (const i of properties) {\n\t\t\tvalue = (value as any)?.[i];\n\t\t}\n\t\tthis.currentProperty = value;\n\t\treturn value;\n\t};\n\n\tgetText = (property: any, column: IColumn) => {\n\t\tlet text = null;\n\n\t\tif (column.callback) text = column.callback(property);\n\n\t\tif (text == null && column.date)\n\t\t\ttext = this._date.transform(property, column.date);\n\n\t\tthis.currentText = text || property;\n\n\t\treturn text || property;\n\t\t// column.date\n\t\t// ? column.callback\n\t\t// \t? column.callback(property)\n\t\t// \t: (property | date : column.date)\n\t\t// : column.callback\n\t\t// \t? column.callback(property)\n\t\t// \t: property\n\t};\n\n\tgetIsAsc = () => {\n\t\treturn this.isAsc;\n\t};\n\n\tgetSortBy = () => {\n\t\treturn this.sortBy;\n\t};\n}\n","<div class=\"h-full no-scrollbar\">\n <ng-content class=\"mt-5\"></ng-content>\n <div class=\"flex flex-col flex-1 overflow-auto no-scrollbar\">\n @if (data) {\n <table\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg bg-transparent no-scrollbar\">\n <thead class=\"text-black\">\n @if (data.length <= 0) { <tr\n class=\"bg-chr-{{color}} chr-{{textColor}} flex flex-col flex-no wrap sm:table-row rounded-lg mb-2 sm:mb-0\">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3 h-14\" display=\"{{ column.display }}\" column=\"{{ column.properties }}\"\n [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\">\n </th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle sm:w-0\">\n Actions\n </th>\n }\n </tr>\n }\n @for (entry of data |\n sort:isAsc:sortBy | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id: this.id}; track entry)\n {\n <tr\n class=\"bg-chr-{{color}} chr-{{textColor}} flex flex-col flex-no wrap sm:table-row rounded-lg mb-2 sm:mb-0 \">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3 h-14\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" alignment=\"{{column.alignment}}\"\n (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\"></th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center sm:w-0\">\n Actions\n </th>\n }\n </tr>\n }\n </thead>\n <tbody class=\"w-full\">\n @if (data.length <= 0) { <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-lg mb-0 sm:mb-2 dark:bg-slate-600\">\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\n @for (column of columns | slice: 1; track column) {\n <td class=\"p-3 h-14\"></td>\n }\n @if (actions) {\n <td class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\n }\n </tr>\n }\n @for (entry of data |\n sort:isAsc:sortBy | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id: this.id}; track\n entry; let i = $index) {\n <tr [attr.data-index]=\"i\"\n class=\"flex flex-col flex-no-wrap sm:table-row mb-2 sm:mb-0 dark:text-gray-400 dark:bg-slate-600 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700 sm:border-t-2 border-chr-{{color}} sm:first:border-0\">\n @for (column of columns; track column;) {\n <td [ngClass]=\"\n column.chipsTarget || column.chipsDisplay\n ? ''\n : ''\n \" class=\"p-3 h-14 text-ellipsis border-t-2 first:border-0 sm:first:border-t-2 border-chr-{{color}}\">\n <ng-container [ngTemplateOutlet]=\"default\"\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\n </ng-container>\n </td>\n }\n\n <ng-template #default let-column='column' let-property=\"prop\">\n @if (column.isLink) {\n <a target=\"_blank\" class=\"text-{{column.alignment}}\" href=\"{{column.linkStaticUrl}}{{\n getText(property, column)\n }}\">\n {{\n currentText\n }}\n </a>\n }\n @if (!column.isLink) {\n <div class=\"flex flex-row\" [ngClass]=\"{\n 'justify-start': column.alignment == 'left',\n 'justify-center': column.alignment == 'center',\n 'justify-end': column.alignment == 'right',\n 'gap-2': column.chipsDisplay && getText(property, column)\n }\">\n <p class=\"inline-block overflow-hidden text-nowrap text-ellipsis\">\n {{\n currentText || getText(property, column)\n }}\n </p>\n @if (column.chipsTarget || column.chipsDisplay) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\n </ng-container>\n <ng-template #OK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\n </ng-template>\n <ng-template #NOK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\n </ng-template>\n </div>\n }\n </div>\n }\n </ng-template>\n\n @if (actions) {\n <td class=\"p-3 h-14 flex gap-2 w-full sm:w-min justify-center\">\n @for (action of actions; track action) {\n <app-chr-button class=\"w-full\" [disabled]=\"\n action.disabledCallback\n ? action.disabledCallback(entry)\n : action.disabled || false\n \" [display]=\"action.display\" [icon]=\"action.icon\" [click]=\"action.callback.bind(null, entry, i)\"\n [color]=\"action.color\" type=\"responsive\">\n </app-chr-button>\n }\n </td>\n }\n </tr>\n }\n @for (r of computedRows; track r) {\n <tr\n class=\"flex flex-col flex-no-wrap sm:table-row mb-2 sm:mb-0 dark:text-gray-400 dark:bg-slate-600 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n @for (c of r.columns; track c) {\n <td [ngClass]=\"c.alignment && 'text-'+(c.alignment||'left')\" class=\"p-3 h-14\">\n {{c.label && c.label + ':'}} {{c.value || (c.callback && c.callback(data))}} {{c.after}}\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n <app-chr-paginator [id]=\"this.id\" [(pageSize)]=\"pageSize\" [(page)]=\"currentPage\"\n (pageSizeChange)=\"emitPageSize($event)\" (pageChange)=\"emitCurrentPage($event)\"></app-chr-paginator>\n</div>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n\tselector: \"app-chr-checkbox\",\n\ttemplateUrl: \"./chr-checkbox.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-checkbox.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [MatIcon],\n})\nexport class ChrCheckboxComponent {\n\tpublic checked: boolean = false;\n\n\t@Input() type: \"info\" | \"success\" = \"info\";\n\n\t@Input() disabled: boolean = false;\n\n\t@Output() change: EventEmitter<{ checked: boolean }> = new EventEmitter<{\n\t\tchecked: boolean;\n\t}>();\n\n\tcheck(end: boolean) {\n\t\tif (this.disabled) return;\n\t\tif (end) {\n\t\t\tthis.checked = true;\n\t\t\tthis.change.emit({ checked: true });\n\t\t} else {\n\t\t\tthis.checked = false;\n\t\t\tthis.change.emit({ checked: false });\n\t\t}\n\t}\n}\n","<div>\n @if (checked) {\n <div (click)=\"check(false)\" [class.info]=\"type=='info'&&!disabled\"\n [class.bg-green-100]=\"type=='success'&&!disabled\" [class.cursor-pointer]=\"!disabled\"\n [class.bg-grey-400]=\"disabled\"\n class=\"box-border rounded-lg p-3 h-12 text-center border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>check-circle</mat-icon></div>\n </div>\n }\n @if (!checked) {\n <div (click)=\"check(true)\" [class.cursor-pointer]=\"!disabled\" [class.disabled]=\"disabled\"\n [class.bg-gray-200]=\"disabled\" [class.bg-red-100]=\"!disabled\"\n class=\"box-border p-3 h-12 text-center rounded-lg border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>close</mat-icon></div>\n </div>\n }\n</div>","import { Component } from \"@angular/core\";\n\n@Component({\n\tselector: \"app-chr-separator\",\n\ttemplateUrl: \"./chr-separator.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-separator.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n})\nexport class ChrSeparatorComponent {}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Injectable } from \"@angular/core\";\r\nimport { MatDialog, MatDialogConfig } from \"@angular/material/dialog\";\r\nimport { ChrDeleteModalComponent } from \"../chr-delete-modal/chr-delete-modal.component\";\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\",\r\n})\r\nexport class DialogService {\r\n\tconstructor(private dialog: MatDialog) {}\r\n\r\n\topenDelete = (callback?: Function, callbackElement?: any) => {\r\n\t\tconst dialogRef = this.open(ChrDeleteModalComponent);\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result) => {\r\n\t\t\tif (result == true) callback?.(callbackElement);\r\n\t\t});\r\n\t};\r\n\r\n\topen = (component: any, options?: MatDialogConfig<any> | undefined) => {\r\n\t\treturn this.dialog.open(component, options);\r\n\t};\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, of, tap, Subject, BehaviorSubject } from \"rxjs\";\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\",\r\n})\r\nexport class DataService {\r\n\tprivate data = new Map<string, BehaviorSubject<any>>();\r\n\tconstructor() {}\r\n\r\n\tset = (key: string, value: any): void => {\r\n\t\tconst data = this.data.get(key);\r\n\t\tif (!data) this.data.set(key, new BehaviorSubject(value));\r\n\t\telse data.next(value);\r\n\t};\r\n\r\n\tget = (key: string): Observable<any> => {\r\n\t\tconst data = this.data.get(key);\r\n\t\tif (!data) this.data.set(key, new BehaviorSubject(null));\r\n\t\treturn this.data.get(key)!;\r\n\t};\r\n\r\n\tclear = (key: string): void => {\r\n\t\treturn this.data.get(key)?.next(null);\r\n\t};\r\n\r\n\tremove = (key: string): boolean => {\r\n\t\treturn this.data.delete(key);\r\n\t};\r\n}\r\n","/*\n * Public API Surface of chr-components\n */\n\nexport * from \"./lib/chr-breadcrumb/chr-breadcrumb.component\";\nexport * from \"./lib/chr-button/chr-button.component\";\nexport * from \"./lib/chr-delete-modal/chr-delete-modal.component\";\nexport * from \"./lib/chr-form/chr-form.component\";\nexport * from \"./lib/chr-search-select/chr-search-select.component\";\nexport * from \"./lib/chr-searchbar/chr-searchbar.component\";\nexport * from \"./lib/chr-paginator/chr-paginator.component\";\nexport * from \"./lib/chr-table/chr-table.component\";\nexport * from \"./lib/chr-table-header-cell/chr-table-header-cell.component\";\nexport * from \"./lib/chr-checkbox/chr-checkbox.component\";\nexport * from \"./lib/chr-separator/chr-separator.component\";\nexport * from \"./lib/chr-form/chr-validators/decimal-validator\";\nexport * from \"./lib/chr-form/chr-validators/max-date-validator\";\nexport * from \"./lib/chr-form/chr-validators/type-validator\";\nexport * from \"./lib/services/dialog.service\";\nexport * from \"./lib/services/data.service\";\nexport * from \"ngx-pagination\";\nexport * from \"chrv-pipes\";\nexport * from \"@angular/material/dialog\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i2","i3"],"mappings":"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"}
1
+ {"version":3,"file":"chrv-components.mjs","sources":["../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.ts","../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.html","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.ts","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.html","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.ts","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-validators/type-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/decimal-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/max-date-validator.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.html","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.html","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.ts","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.html","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.ts","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.html","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.ts","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.html","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.ts","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.html","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.html","../../../projects/chrv-components/src/lib/services/dialog.service.ts","../../../projects/chrv-components/src/lib/services/data.service.ts","../../../projects/chrv-components/src/public-api.ts","../../../projects/chrv-components/src/chrv-components.ts"],"sourcesContent":["import { Component, Input } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { MatButton } from \"@angular/material/button\";\n\nexport interface Breadcrumb {\n\tdisplay: string;\n\tlink?: string;\n\tcallback?: Function;\n}\n\n@Component({\n\tselector: \"app-chr-breadcrumb\",\n\ttemplateUrl: \"./chr-breadcrumb.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-breadcrumb.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [MatButton],\n})\nexport class BreadcrumbComponent {\n\t@Input() crumbs?: Breadcrumb[];\n\n\tconstructor(public router: Router) {}\n\n\tnavigateTo = (uri: string, data?: any) => {\n\t\tthis.router.navigate([uri], { state: data });\n\t};\n}\n","<div class=\"w-full flex flex-row flex-wrap dark:!text-gray-400\">\n @for (crumb of crumbs; track crumb) {\n <div class=\"w-fit min-w-fit\">\n <button class=\"dark:!text-gray-400\" [disabled]=\"!crumb.link && !crumb.callback\" mat-button\n (click)=\"crumb.callback?.() || crumb.link && navigateTo(crumb.link)\">\n {{ crumb.display }}\n </button>\n {{ (crumb.link || crumb.callback) && \">\" }}\n </div>\n }\n</div>","import { Component, Input } from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { MatButtonModule, MatFabButton } from \"@angular/material/button\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"app-chr-button\",\n\ttemplateUrl: \"./chr-button.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-button.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t\tMatButtonModule,\n\t\tCommonModule,\n\t\tMatFabButton,\n\t],\n})\nexport class ChrButtonComponent {\n\t@Input() display?: string = \"\";\n\t@Input() icon?: string = \"\";\n\t@Input() click?: Function;\n\t@Input() color:\n\t\t| \"primary\"\n\t\t| \"accent\"\n\t\t| \"warn\"\n\t\t| \"alert\"\n\t\t| \"darkeraccent\"\n\t\t| \"none\" = \"none\";\n\t@Input() textColor?: \"white\" | \"black\" | string = undefined;\n\t@Input() predicate?: boolean = true;\n\t@Input() type: \"responsive\" | \"table\" | \"full\" | \"fixed\" | \"small\" | \"none\" =\n\t\t\"none\";\n\t@Input() href?: string;\n\t@Input() target?: \"_blank\" | \"_parent\" | \"_self\" | \"_top\";\n\t@Input() disabled: boolean = false;\n\t@Input() tooltip?: string;\n\t@Input() tooltipPosition?:\n\t\t| \"above\"\n\t\t| \"below\"\n\t\t| \"left\"\n\t\t| \"right\"\n\t\t| \"before\"\n\t\t| \"after\";\n\n\tconstructor() {}\n\n\tsetDisabled = (is: boolean) => {\n\t\tthis.disabled = is;\n\t};\n\n\tdoClick = () => {\n\t\tthis.click?.();\n\t};\n}\n","@if (predicate) {\n@if(display){\n<a mat-button mat-flat-button [disabled]=\"disabled\" style=\"--textcolor: {{textColor}};\" class=\"flex h-9 m-0 p-0 sm:w-36\"\n [ngClass]=\"{\n 'pointer-events-none cursor-none' : disabled,\n 'w-36': type=='fixed',\n 'w-full': type=='full',\n 'w-min': type=='table',\n 'w-full sm:w-36' : type=='responsive',\n 'chr-button': textColor !== undefined\n }\" color=\"{{ color }}\" (click)=\"click?.()\" [attr.href]=\"href && href\" [attr.target]=\"target && target\"\n [matTooltip]=\"tooltip||''\" [matTooltipPosition]=\"tooltipPosition||'above'\">\n {{ display }}\n @if (icon) {\n <mat-icon class=\"!m-0\">{{ icon }}</mat-icon>\n }\n</a>\n}\n@if(!display && icon){\n<a mat-raised-button class=\"chr-button flex small-button\" style=\"--textcolor: {{textColor}};\" [ngClass]=\"{\n '!pointer-events-none !cursor-none' : disabled,\n 'chr-button': textColor !== undefined\n }\" [disabled]=\"disabled\" color=\"{{ color }}\" (click)=\"click?.()\" [attr.href]=\"href && href\"\n [attr.target]=\"target && target\" [matTooltip]=\"tooltip||''\" [matTooltipPosition]=\"tooltipPosition||'above'\">\n <i class=\"material-icons\">{{ icon }}</i>\n</a>\n}\n\n}\n\n<!--\n @if (predicate) {\n<a (click)=\"click?.()\" [attr.href]=\"href && href\"\n class=\"flex justify-center align-middle items-center py-2 px-2 text-pretty text-sm rounded-md cursor-pointer\"\n [ngClass]=\"{\n 'pointer-events-none cursor-none' : disabled,\n 'bg-chrdblue hover:bg-blue-700 !text-white opacity-100' : color=='primary',\n 'bg-chrlblue hover:bg-blue-300 !text-black' : color=='accent',\n 'bg-red-600 hover:bg-red-500 !text-white' : color=='warn',\n 'bg-slate-400 hover:bg-slate-600 !text-black' : color=='none',\n 'w-36': type=='fixed',\n 'w-full': type=='full',\n 'w-min': type=='table',\n 'w-full sm:w-36': type=='responsive',\n }\" [attr.target]=\"target && target\" [matTooltip]=\"tooltip||''\" [matTooltipPosition]=\"tooltipPosition||'above'\">\n {{ display }}\n @if (icon) {\n <mat-icon class=\"!m-0\">{{ icon }}</mat-icon>\n }\n</a>\n-->\n<!--\nIF\nClick\ncolor\ntype: table : full\nicon\n-->","import { Component } from \"@angular/core\";\nimport {\n\tMatDialogRef,\n\tMatDialogTitle,\n\tMatDialogContent,\n\tMatDialogActions,\n\tMatDialogClose,\n} from \"@angular/material/dialog\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { ChrButtonComponent } from \"../chr-button/chr-button.component\";\n\n@Component({\n\tselector: \"app-chr-delete-modal\",\n\ttemplateUrl: \"./chr-delete-modal.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-delete-modal.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [\n\t\tMatDialogTitle,\n\t\tMatDialogContent,\n\t\tMatDialogActions,\n\t\tChrButtonComponent,\n\t\tMatDialogClose,\n\t\tMatTooltip,\n\t],\n})\nexport class ChrDeleteModalComponent {\n\tpublic valid: boolean = false;\n\n\tconstructor(public dialogRef: MatDialogRef<ChrDeleteModalComponent>) {}\n\n\tngOnInit() {}\n\n\tpublic close = () => {\n\t\tthis.dialogRef.close(true);\n\t};\n}\n","<div class=\"dark:bg-slate-800 w-full overflow-auto overflow-x-hidden\">\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"mat-typography dark:!text-gray-400\">\n Attention:\n <br>\n <br>\n La suppression d'un élément est irréversible.\n <br>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <br>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <br>\n <br>\n En effectuant cette action et cliquant sur \"Confirmer\" vous certifiez que vous avez pris connaissance des\n conséquences possibles et souhaitez tout de même poursuivre.\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"w-full flex flex-row justify-between\">\n <app-chr-button class=\"w-36\" display=\"Annuler\" color=\"accent\" mat-dialog-close></app-chr-button>\n <app-chr-button class=\"w-36\" display=\"Confirmer\" color=\"warn\" [click]=\"close\"\n [matTooltip]=\"'Attention: cette action est irréversible !'\" matTooltipPosition=\"above\"></app-chr-button>\n </div>\n </mat-dialog-actions>\n</div>","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-type]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: TypeValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class TypeValidatorDirective implements Validator {\r\n @Input() type?: string;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.type ? type(this.type)(control) : null;\r\n }\r\n}\r\n\r\nexport function type(type: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const isType = typeof value == type;\r\n\r\n return !isType\r\n ? ({\r\n type: true,\r\n requiredType: type,\r\n actualType: typeof value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-decimal]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: DecimalValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class DecimalValidatorDirective implements Validator {\r\n @Input() amount?: number;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.amount ? decimal(this.amount)(control) : null;\r\n }\r\n}\r\n\r\nexport function decimal(amount: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n let isTooLong = false;\r\n\r\n const str = `${value}`;\r\n isTooLong =\r\n str.indexOf(',') != -1\r\n ? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount\r\n : str.indexOf('.') != -1\r\n ? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount\r\n : false;\r\n\r\n return isTooLong\r\n ? ({\r\n decimal: true,\r\n max: amount,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport moment from 'moment';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-max-date]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: MaxDateValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class MaxDateValidatorDirective implements Validator {\r\n @Input() date?: Date;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.date ? maxDate(this.date)(control) : null;\r\n }\r\n}\r\n\r\nexport function maxDate(date: Date): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const maxDate = moment(date);\r\n const inputDate = moment(value);\r\n\r\n return !(inputDate.isValid() && inputDate.isBefore(maxDate))\r\n ? ({\r\n maxdate: true,\r\n max: maxDate.toDate(),\r\n actual: value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tforwardRef,\n\tViewChild,\n\tViewEncapsulation,\n} from \"@angular/core\";\nimport {\n\tControlValueAccessor,\n\tFormControl,\n\tNG_VALUE_ACCESSOR,\n\tReactiveFormsModule,\n} from \"@angular/forms\";\nimport {\n\tMatAutocomplete,\n\tMatAutocompleteTrigger,\n} from \"@angular/material/autocomplete\";\nimport {\n\tObservable,\n\tstartWith,\n\tmap,\n\tof,\n\tcombineLatest,\n\tcombineLatestAll,\n} from \"rxjs\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { AsyncPipe } from \"@angular/common\";\n\nexport interface IInputSearchFilter {\n\tdisplay: string;\n\tcallback?: Function;\n\ttooltip?: string;\n}\n\n@Component({\n\tselector: \"app-chr-search-select, [app-chr-search-select]\",\n\ttemplateUrl: \"./chr-search-select.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-search-select.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tmulti: true,\n\t\t\tuseExisting: ChrSearchSelectComponent,\n\t\t},\n\t],\n\tstandalone: true,\n\timports: [\n\t\tReactiveFormsModule,\n\t\tMatAutocompleteTrigger,\n\t\tMatTooltip,\n\t\tMatAutocomplete,\n\t\tMatOption,\n\t\tAsyncPipe,\n\t],\n})\nexport class ChrSearchSelectComponent implements ControlValueAccessor {\n\tpublic predicate: boolean = true;\n\n\tpublic searchSelect: FormControl = new FormControl<string | null>(null);\n\tpublic filteredModelOptions?: Observable<any>;\n\n\tpublic onTouched: any = () => {};\n\n\t@Input() name?: string;\n\t@Input() placeholder?: string;\n\t@Input() data: any[] | null = [];\n\t@Input() display?: Function;\n\t@Input() disabled: boolean = false;\n\t@Input() model: any | null = null;\n\t@Input() id: any;\n\t@Output() modelChange: EventEmitter<any> = new EventEmitter();\n\t@Output() keyup: EventEmitter<KeyboardEvent> =\n\t\tnew EventEmitter<KeyboardEvent>();\n\n\t@Input() filters?: IInputSearchFilter[];\n\tpublic filterIndex: number = 0;\n\n\tngOnInit() {\n\t\tthis.registerFilters();\n\t\tthis.registerAutoComplete();\n\t}\n\n\tgetModelDisplay = (model: any) => {\n\t\treturn this.display?.(model) || \"\";\n\t};\n\n\temit = (event: any) => {\n\t\tthis.modelChange.emit(event);\n\t};\n\n\twriteValue = (obj: any): void => {\n\t\tthis.searchSelect.setValue(obj);\n\t};\n\n\tregisterOnChange = (fn: any): void => {\n\t\tthis.searchSelect.valueChanges.subscribe((value) => {\n\t\t\tfn(value || null);\n\t\t});\n\t};\n\n\tregisterOnTouched = (fn: any): void => {\n\t\tthis.searchSelect.markAsTouched = fn;\n\t};\n\n\tregisterFilters = () => {\n\t\tthis.filteredModelOptions = this.searchSelect.valueChanges.pipe(\n\t\t\tstartWith(\"\"),\n\t\t\tmap((value) => this._filterModel(value! || -1)),\n\t\t\tmap((values) => {\n\t\t\t\treturn this.filters && this.filters[this.filterIndex].callback\n\t\t\t\t\t? values.filter((r) => this.filters![this.filterIndex].callback!(r))\n\t\t\t\t\t: values;\n\t\t\t})\n\t\t);\n\t};\n\n\tregisterAutoComplete = () => {\n\t\t//If there is only one value left,\n\t\tthis.filteredModelOptions?.subscribe((values) => {\n\t\t\tif (values.length == 1) {\n\t\t\t\tthis.emit(values[0]);\n\t\t\t}\n\t\t});\n\t};\n\n\tsetDisabledState? = (isDisabled: boolean): void => {\n\t\tthis.disabled = isDisabled;\n\t\tisDisabled ? this.searchSelect.disable() : this.searchSelect.enable();\n\t};\n\n\tincrement = () => {\n\t\tthis.writeValue(\"\");\n\t\tconst modulo = this.filters ? this.filters.length : 1;\n\t\tthis.filterIndex = (this.filterIndex + 1) % modulo;\n\t};\n\n\tgetValue = () => {\n\t\treturn this.searchSelect.value;\n\t};\n\n\tvoid = () => {};\n\n\tprivate _filterModel = (value: number | string): any[] => {\n\t\treturn typeof value == \"string\"\n\t\t\t? this._doFilterModelString(`${value}`)\n\t\t\t: this._doFilterModelInt(value);\n\t};\n\n\tprivate _doFilterModelInt = (id: number) => {\n\t\tconst tmp = this.data?.find((r) => r.id == id);\n\t\treturn tmp ? tmp : [];\n\t};\n\n\tprivate _doFilterModelString = (input: string) => {\n\t\treturn this.data?.filter((r) => this._filterValues(r, input));\n\t};\n\n\tprivate _filterValues = (value: any, input: string) => {\n\t\t//Si l'utilisateur entre un espace, on renvoie true, afin que tous les résultats s'affichent.\n\t\tif (input == \" \") return true;\n\t\t//Sinon, on ne renvoie true que pour les éléments qui matchent son input\n\t\treturn `${this.getModelDisplay(value)}`\n\t\t\t.trim()\n\t\t\t.toLowerCase()\n\t\t\t.includes(input.trim().toLowerCase());\n\t};\n}\n","@if (predicate) {\n<input [matTooltip]=\"searchSelect.disabled ? '': 'Entrez un espace pour voir les choix disponibles'\"\n matTooltipPosition=\"above\" #input type=\"text\" name=\"{{name}}\" matInput [formControl]=\"searchSelect\"\n [value]=\"getModelDisplay(model)\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\"\n placeholder=\"{{ placeholder || ' ' }}\" required (keyup)=\"keyup.emit($event)\" [matAutocomplete]=\"auto\" />\n<ng-content></ng-content>\n@if (filters) {\n<span [matTooltip]=\"filters[filterIndex].tooltip || ''\" matTooltipPosition=\"above\" class=\"absolute inner-button cursor-pointer top-0 right-0 h-[calc(100%_-_2px)] border-gray-300 dark:border-gray-400 border-l-2 border-b-0 border-t-0 \n border-r-0 w-fit text-gray-900 dark:text-gray-400 px-1 text-center opacity-100 bg-slate-100 dark:bg-slate-700 bg-opacity-50 flex justify-center \n align-middle items-center\" (click)=\"filters ? increment() : void\">\n <p class=\"inline-block w-fit h-min overflow-hidden text-nowrap text-ellipsis\">{{ filters[filterIndex].display }}\n </p>\n</span>\n}\n<mat-autocomplete class=\"dark:!bg-slate-700 dark:!text-white rounded-lg no-scrollbar \" #auto=\"matAutocomplete\"\n id=\"{{id}}-auto\" [displayWith]=\"getModelDisplay.bind(this)\" (optionSelected)=\"emit($event.option.value)\">\n @for (model of filteredModelOptions | async; track model) {\n <mat-option class=\"dark:!text-gray-400 rounded-lg focus:!bg-blue-500 focus-visible:!bg-red-500\" [value]=\"model\"\n selected>\n {{ getModelDisplay(model) || '' }}\n </mat-option>\n }\n</mat-autocomplete>\n}","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tViewEncapsulation,\n\tChangeDetectorRef,\n\tOnChanges,\n\tSimpleChanges,\n\tOnInit,\n} from \"@angular/core\";\nimport { TypeValidatorDirective, type } from \"./chr-validators/type-validator\";\nimport { ValidatorFn, ReactiveFormsModule, FormsModule } from \"@angular/forms\";\nimport {\n\tFormBuilder,\n\tFormGroup,\n\tValidators,\n\tFormControl,\n} from \"@angular/forms\";\nimport { decimal } from \"./chr-validators/decimal-validator\";\nimport { maxDate } from \"./chr-validators/max-date-validator\";\nimport { MatError } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { ChrSearchSelectComponent } from \"../chr-search-select/chr-search-select.component\";\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\nimport {\n\tDatePipe,\n\tCommonModule,\n\tDATE_PIPE_DEFAULT_OPTIONS,\n} from \"@angular/common\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\nimport { debounce, debounceTime } from \"rxjs\";\n\nexport interface ISearchFilter {\n\tdisplay: string;\n\tcallback?: Function;\n\ttooltip?: string;\n}\n\nexport interface IControlValidation {\n\trule: string;\n\tvalue?: any;\n\tdisplay?: string;\n}\n\nexport interface IControl {\n\tlabel?: string;\n\tname: string;\n\tspan?: string;\n\twidth?: \"col\" | \"row\";\n\tcol?: number;\n\trow?: number;\n\ttype:\n\t\t| \"text\"\n\t\t| \"password\"\n\t\t| \"textArea\"\n\t\t| \"number\"\n\t\t| \"date\"\n\t\t| \"datetime\"\n\t\t| \"searchSelect\"\n\t\t| \"color\"\n\t\t| \"toggle\";\n\tvalue?: any;\n\tdata?: any[] | null;\n\ticon?: string;\n\ticonCallback?: Function;\n\ticonCallbackDisabled?: boolean;\n\ticonTooltip?: string;\n\tfn?: (object: any) => string;\n\tfilters?: ISearchFilter[];\n\tvalidations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n\ttitle?: string;\n\tcontrols: IControl[];\n}\n\nexport interface IFormControl {\n\t[key: string]: any;\n}\n@Component({\n\tselector: \"app-chr-form\",\n\ttemplateUrl: \"./chr-form.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-form.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t\t\"../chr-form/chr-form.component.scss\",\n\t],\n\tstandalone: true,\n\timports: [\n\t\tReactiveFormsModule,\n\t\tFormsModule,\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t\tMatSlideToggleModule,\n\t\tMatError,\n\t\tChrSearchSelectComponent,\n\t\tMatAutocompleteModule,\n\t\tDatePipe,\n\t\tCommonModule,\n\t\tTypeValidatorDirective,\n\t],\n\tproviders: [\n\t\tDatePipe,\n\t\t{\n\t\t\tprovide: DATE_PIPE_DEFAULT_OPTIONS,\n\t\t\tuseValue: { dateFormat: \"shortDate\" },\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.Default,\n})\nexport class ChrFormComponent implements OnInit, AfterViewInit {\n\t@Input() sections?: IFormSection[];\n\t@Input() valid?: boolean;\n\t@Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n\t@Input() model?: any;\n\t@Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n\t@Input() disabled?: boolean;\n\t@Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n\t@Input() submit?: Function;\n\n\t@Input() compact: boolean = false;\n\n\t@Input() debounce: number = 0;\n\n\t@Output() formChange: EventEmitter<IFormControl> =\n\t\tnew EventEmitter<IFormControl>();\n\n\tform: FormGroup = this.builder.group({});\n\n\tupdateValueAndValidity = () => {\n\t\tthis.form.markAsDirty();\n\t\tthis.form.updateValueAndValidity({ emitEvent: true });\n\t};\n\n\tpublic initialized: boolean = false;\n\n\tconstructor(\n\t\tprivate builder: FormBuilder,\n\t\tprivate datePipe: DatePipe,\n\t\tprivate changeDetector: ChangeDetectorRef\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis._initValidators();\n\t\tthis._registerInputEmitters();\n\t\tthis._registerInputUpdaters();\n\t\tthis.initialized = true;\n\t}\n\n\tngAfterViewInit(): void {\n\t\t//this._initValues();\n\t\tthis.changeDetector.detectChanges();\n\t\tthis.form.valueChanges.subscribe((res) => {\n\t\t\tthis.valid = this.form.valid;\n\t\t\tthis.validChange.emit(this.form.valid);\n\t\t\tthis.valuesChange.emit(res);\n\t\t\tthis.changeDetector.markForCheck();\n\t\t\tthis.changeDetector.detectChanges();\n\t\t});\n\t}\n\n\tvalue = (input?: string) => {\n\t\tif (input) return this.form.controls[input]?.value;\n\t\treturn this.form.value;\n\t};\n\n\tsetValue = (input: string, value: any) => {\n\t\tif (input) this.form.get(input)?.setValue(value);\n\t};\n\n\tisValid = (input?: string) => {\n\t\tif (input) return this.form.get(input)?.valid;\n\t\treturn this.valid;\n\t};\n\n\tisControlRequired = (control: IControl) => {\n\t\treturn control.validations?.find((v) => v.rule.toLowerCase() == \"required\");\n\t};\n\n\tpatchValue = (key: string, value: any) => {\n\t\tthis.form.patchValue({ [key]: value });\n\t};\n\n\tpatch = (model: any) => {\n\t\tfor (const key of Object.keys(model)) {\n\t\t\tthis.patchValue(key, model[key]);\n\t\t}\n\t\tthis.form.markAsDirty();\n\t\tthis.form.updateValueAndValidity();\n\t};\n\n\treset = () => {\n\t\tthis.form.reset();\n\t};\n\n\tsetControlValue = (\n\t\tmodel: any,\n\t\tcontrol: IControl,\n\t\tvalue: any,\n\t\tindex?: number\n\t) => {\n\t\tif (model?.[control.name]) {\n\t\t\tmodel[control.name] = this._convertValueToType(value, control.type);\n\t\t}\n\t\tif (control.value)\n\t\t\tcontrol.value = this._convertValueToType(value, control.type);\n\n\t\tthis.patchValue(\n\t\t\tcontrol.name,\n\t\t\tthis._convertValueToType(value, control.type)\n\t\t);\n\t};\n\n\tpublic resize = (textArea: HTMLTextAreaElement) => {\n\t\tconst initialHeight = textArea.style.height;\n\t\ttextArea.style.height = initialHeight;\n\t\ttextArea.style.height = \"\" + textArea.scrollHeight + \"px\";\n\t};\n\n\tpublic doSubmit = () => {\n\t\tthis.form.markAllAsTouched();\n\t\tif (this.valid && this.form.valid) this.submit?.(this.form.value);\n\t};\n\n\tpublic track = (control: string, index: number) => {\n\t\tthis.form.get(control)?.updateValueAndValidity();\n\t\treturn index;\n\t};\n\n\tprivate _registerInputEmitters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tconst formControl = this.form.get(control.name);\n\t\t\t\tformControl!.valueChanges\n\t\t\t\t\t.pipe(debounceTime(this.debounce))\n\t\t\t\t\t.subscribe((e) => {\n\t\t\t\t\t\tthis.formChange.emit({ [control.name]: e });\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _registerInputUpdaters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tconst formControl = this.form.get(control.name)!;\n\t\t\t\tformControl.valueChanges.subscribe((value) => {\n\t\t\t\t\tif (this.model) {\n\t\t\t\t\t\tthis.model[control.name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontrol.value = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _initValues = () => {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (let control of section.controls) {\n\t\t\t\tconst value = this.model ? this.model[control.name] : null;\n\t\t\t\tif (!value && typeof value != \"number\") {\n\t\t\t\t\tif (control.value)\n\t\t\t\t\t\tthis.form\n\t\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t\t.patchValue(\n\t\t\t\t\t\t\t\tthis._convertValueToType(control.value, control.type)\n\t\t\t\t\t\t\t);\n\t\t\t\t\telse this.form.get(control.name)!.patchValue(null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.form\n\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t.patchValue(this._convertValueToType(value, control.type));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _convertValueToType = (\n\t\tvalue: any,\n\t\ttype:\n\t\t\t| \"text\"\n\t\t\t| \"password\"\n\t\t\t| \"textArea\"\n\t\t\t| \"number\"\n\t\t\t| \"date\"\n\t\t\t| \"datetime\"\n\t\t\t| \"searchSelect\"\n\t\t\t| \"select\"\n\t\t\t| \"color\"\n\t\t\t| \"toggle\"\n\t) => {\n\t\tswitch (type) {\n\t\t\tcase \"text\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"number\":\n\t\t\t\treturn value || 0;\n\t\t\tcase \"searchSelect\": {\n\t\t\t\tif (typeof value == \"string\" && value.trim() == \"\") value = null;\n\t\t\t\treturn value || null;\n\t\t\t}\n\t\t\tcase \"textArea\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"password\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"select\":\n\t\t\t\treturn value || null;\n\t\t\tcase \"date\":\n\t\t\t\treturn this.datePipe.transform(value, \"yyyy-MM-dd\");\n\t\t\tcase \"datetime\":\n\t\t\t\treturn this.datePipe.transform(value, \"yyyy-MM-ddTHH:mm\");\n\t\t\tcase \"color\":\n\t\t\t\treturn value || \"\";\n\t\t\tcase \"toggle\":\n\t\t\t\treturn value as boolean;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t};\n\n\tformatDateForInput = (date: any) => {\n\t\tthis.datePipe.transform(date, \"yyyy-MM-dd\");\n\t};\n\n\tprivate _initValidators() {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (const input of section.controls) {\n\t\t\t\tif (input.type == \"searchSelect\" && !input.fn)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"An input of type 'searchSelect' needs a display function !\"\n\t\t\t\t\t);\n\t\t\t\tconst control = new FormControl(\n\t\t\t\t\tthis._convertValueToType(this.model?.[input.name], input.type) ||\n\t\t\t\t\t\tinput.value,\n\t\t\t\t\tthis._getValidators(input.validations)\n\t\t\t\t);\n\t\t\t\tthis.form.addControl(input.name, control);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getValidators = (validations?: IControlValidation[]) => {\n\t\tconst validators: ValidatorFn[] = [];\n\t\tif (!validations) return validators;\n\t\t//Switch case breaks the mobile app so we'll do if statements\n\t\tfor (const validation of validations) {\n\t\t\tconst rule = validation.rule.toLocaleLowerCase();\n\t\t\tif (rule == \"min\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.min(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"max\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.max(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"required\") {\n\t\t\t\tvalidation.display = \"Ce champs est requis !\";\n\t\t\t\tvalidators.push(Validators.required);\n\t\t\t}\n\t\t\tif (rule == \"email\") {\n\t\t\t\tvalidation.display = \"Cette adresse email n'est pas valide !\";\n\t\t\t\tvalidators.push(Validators.email);\n\t\t\t}\n\t\t\tif (rule == \"minlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.minLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.maxLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"type\") {\n\t\t\t\tvalidation.display = \"Cette valeur n'est pas valide !\";\n\t\t\t\tvalidators.push(type(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"decimal\") {\n\t\t\t\tvalidation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(decimal(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxdate\") {\n\t\t\t\tvalidation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(maxDate(validation.value));\n\t\t\t}\n\t\t}\n\t\treturn validators;\n\t};\n}\n","<div class=\"flex flex-col justify-center min-h-5/6 mt-2\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n @for (section of sections; track section; let index = $index) {\n <div>\n @if (section.title) {\n <h2 class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n }\n <div *ngIf=\"initialized\" [ngClass]=\"\n compact ? 'grid gap-y-2 gap-x-6 sm:grid-cols-4':'grid gap-y-2 gap-x-6 sm:grid-cols-2'\">\n @for (control of section.controls; track index; let index = $index; let\n last =\n $last)\n {\n <div class=\"relative h-min mt-2\" [ngClass]=\"{\n 'sm:col-span-2': (control.width == 'row' && !compact) || control.type=='textArea' && compact && control.width != 'row',\n 'sm:col-span-4': control.width =='row' && compact,\n }\">\n @if (control.type=='searchSelect') {\n <div app-chr-search-select class=\"relative input z-0 w-full\" id=\"{{ control.name }}_{{ index }}\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n [data]=\"control.data || []\" [display]=\"control.fn!\" [name]=\"control.name\" placeholder=\" \"\n [filters]=\"control.filters\" [formControlName]=\"control.name\"\n [(model)]=\"model?.[control.name] || control.value\" (keyup.enter)=\"last ? doSubmit() : ''\">\n <label class=\"label absolute text-sm text-gray-500 dark:text-gray-400\" [for]=\"control.name\">{{\n control.label\n }}\n @if (isControlRequired(control)) {\n <span class=\"text-red-500\">*</span>\n }\n :\n @for (validation of control.validations; track validation) {\n @if (\n form.get([control.name])?.touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n ) {\n <mat-error class=\"text-red-500 dark:text-red-800\">{{ validation.display }}</mat-error>\n }\n }\n </label>\n </div>\n }\n <div class=\"relative z-0 w-full group/inputs content\">\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--TEXT-->\n @if (control.type == 'text') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--PASSWORD-->\n @if (control.type == 'password') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"password\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--TEXT AREA-->\n @if (control.type == 'textArea') {\n <textarea #textArea class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (input)=\"resize(textArea)\"\n (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"no-scrollbar input !resize-none height-normalized block py-2 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\"></textarea>\n }\n <!--NUMBER-->\n @if (control.type == 'number') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"number\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" placeholder=\" \"\n [formControlName]=\"control.name\" [value]=\"model?.[control.name] || control.value || 0\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--DATE-->\n @if (control.type == 'date') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2 px-0 w-full height-normalized text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n @if (control.type == 'datetime') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"datetime-local\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n class=\"block input py-2 px-0 w-full height-normalized text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n <!--COLOR-->\n @if (control.type == 'color') {\n <input class=\"relative\"\n [ngClass]=\"(form.get([control.name])?.touched && form.get([control.name])?.errors) ? 'error':'border-gray-300 dark:border-gray-600'\"\n type=\"color\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\" \" [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" (keyup.enter)=\"last ? doSubmit() : ''\"\n style=\"height: 42px;\"\n class=\"block input py-1.5 m-0 px-0 w-full bg-transparent border-0 border-b-2 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n }\n @if (control.type == 'toggle'){\n <input #toggle type=\"checkbox\" class=\"hidden checkbox\" [formControlName]=\"control.name\" placeholder=\" \"\n [value]=\"model?.[control.name] || control.value || ''\"\n (valueChange)=\"setControlValue(model, control, $event)\" />\n <div\n class=\"relative toggle-wrapper block input bg-transparent border-0 border-b-2 border-gray-300 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\">\n <div (click)=\"toggle?.click()\" class=\"relative block input toggle\">\n </div>\n </div>\n }\n @if (control.type != 'searchSelect') {\n <label class=\"label absolute text-sm text-gray-500 dark:text-gray-400\" [for]=\"control.name\">{{\n control.label\n }}\n @if(control.label && control.label != '' && control.label != ' '){\n @if (isControlRequired(control)) {\n <span class=\"text-red-500\">*</span>\n }\n :\n }\n @for (validation of control.validations; track validation) {\n @if (\n form.get([control.name])?.touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n ) {\n <mat-error class=\"text-red-500 dark:text-red-800\">{{ validation.display }}</mat-error>\n }\n }\n </label>\n }\n @if (control.icon && !disabled) {\n <span\n [ngClass]=\"control.iconCallbackDisabled ? 'text-gray-400 dark:text-gray-500':'text-gray-900 dark:text-white'\"\n class=\"absolute p-2.5 bottom-0 right-0\" [matTooltip]=\"control.iconTooltip || ''\"\n matTooltipPosition=\"above\"\n (click)=\"!control.iconCallbackDisabled && control.iconCallback?.(form.get([control.name])?.value)\"><mat-icon\n class=\"flex input justify-center align-middle items-center content-center text-lg\">{{control.icon}}</mat-icon></span>\n }\n </div>\n @if (control.span) {\n <span\n [ngClass]=\"!form.get([control.name])?.errors || !form.get([control.name])?.touched ? 'text-gray-600 dark:text-gray-300' : '!text-red-500 dark:!text-red-800'\"\n class=\"h-0 text-xs\">{{ control.span\n }}</span>\n }\n </div>\n }\n </div>\n @if (index != (sections||[]).length - 1 && !compact) {\n <div class=\"py-4\">\n <hr class=\"\" />\n </div>\n }\n </div>\n }\n </fieldset>\n </form>\n</div>","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormControl, ReactiveFormsModule } from \"@angular/forms\";\n\n@Component({\n\tselector: \"app-chr-searchbar\",\n\ttemplateUrl: \"./chr-searchbar.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-searchbar.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [ReactiveFormsModule],\n})\nexport class ChrSearchbarComponent {\n\t@Input() model?: string | null;\n\t@Output() modelChange: EventEmitter<string> = new EventEmitter();\n\t@Input() placeholder?: string | null;\n\t@Input() label?: string | null;\n\tpublic searchBy = new FormControl<string>(\"\");\n\n\tconstructor() {\n\t\tthis.searchBy.valueChanges.subscribe((value) => this.emit(value));\n\t}\n\n\temit(event: any) {\n\t\tthis.modelChange.emit(event);\n\t}\n}\n","<div class=\"w-full relative z-0 group/inputs\">\n <input matInput [formControl]=\"searchBy\" placeholder=\" \" type=\"text\"\n class=\"block py-2.5 px-0 w-full text-sm text-gray-900 dark:text-white bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:border-gray-600 dark:focus:border-chrlblue focus:outline-none focus:ring-0 focus:border-chrdblue peer/inputs\" />\n <label\n class=\"peer/inputs-focus:font-medium absolute text-sm text-gray-500 dark:text-gray-400 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus/inputs:start-0 rtl:peer-focus/inputs:translate-x-1/4 rtl:peer-focus/inputs:left-auto peer-focus/inputs:text-chrdblue peer-focus/inputs:dark:text-chrlblue 0 peer-placeholder-shown/inputs:scale-100 peer-placeholder-shown/inputs:translate-y-0 peer-focus/inputs:scale-75 peer-focus/inputs:-translate-y-6\">{{\n label\n }}\n <!--\n @for (validation of control.validations; track validation) {\n @if (\n control?.touched &&\n form.hasError(validation.rule.toLowerCase(), name)\n ) {\n <mat-error class=\"text-red-500 dark:text-red-800\">{{ validation.display }}</mat-error>\n }\n }\n -->\n </label>\n</div>","import {\n\tAfterContentChecked,\n\tChangeDetectorRef,\n\tComponent,\n\tEventEmitter,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n} from \"@angular/core\";\nimport { PaginationInstance, PaginationService } from \"ngx-pagination\";\nimport { NgClass, CommonModule } from \"@angular/common\";\nimport { ChrFormComponent } from \"../chr-form/chr-form.component\";\nimport { MatIconModule } from \"@angular/material/icon\";\n\n@Component({\n\tselector: \"app-chr-paginator\",\n\ttemplateUrl: \"./chr-paginator.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-paginator.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [ChrFormComponent, CommonModule, MatIconModule],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n\tprivate _page: number | null = null;\n\tprivate _pageSize: number | null = null;\n\t@Input()\n\tget page() {\n\t\treturn this._page || 1;\n\t}\n\tset page(value: number) {\n\t\tthis._page = value;\n\t\tthis.pageChange.emit(value);\n\t\tthis.changeDetector.markForCheck();\n\t\tthis.changeDetector.detectChanges();\n\t}\n\n\t@Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n\n\t@Input()\n\tget pageSize() {\n\t\treturn this._pageSize || 20;\n\t}\n\tset pageSize(value: number) {\n\t\tthis._pageSize = value;\n\t\tthis.pageSizeChange.emit(value);\n\t\tthis.changeDetector.markForCheck();\n\t\tthis.changeDetector.detectChanges();\n\t}\n\n\t@Output() pageSizeChange: EventEmitter<number> = new EventEmitter<number>();\n\n\t@Input() id: string | undefined = \"chr_base-data-table\";\n\n\t@Input() allowSizeChange: boolean | string = \"true\";\n\n\tinstance?: PaginationInstance;\n\n\tconstructor(\n\t\tpublic service: PaginationService,\n\t\tprivate changeDetector: ChangeDetectorRef\n\t) {}\n\n\tngAfterContentChecked(): void {\n\t\tthis.instance = this.service.getInstance(\n\t\t\t`${this.id}`\n\t\t) as PaginationInstance;\n\t}\n\n\tngOnInit(): void {}\n\n\tpublic previous = () => {\n\t\tif (this.isFirstPage()) return;\n\t\tthis.page--;\n\t\tthis.pageChange.emit(this.page);\n\t\t//this.emit();\n\t};\n\n\tpublic next = () => {\n\t\tif (this.isLastPage()) return;\n\t\tthis.page += 1;\n\t\tthis.pageChange.emit(this.page);\n\t\t//this.emit();\n\t};\n\n\tpublic setPage = (page: number) => {\n\t\tif (page < 1 || page > this.lastPage()) return;\n\t\tthis.page = page;\n\t\tthis.emit();\n\t};\n\n\tpublic setPageEventHandler = (event: any) => {\n\t\treturn this.setPage(event.target.value);\n\t};\n\n\tpublic isFirstPage = () => {\n\t\treturn this.page == 1;\n\t};\n\n\tpublic setPageSize = (pageSize: number) => {\n\t\tthis.setPage(1);\n\t\tif (this.instance) this.instance.itemsPerPage = pageSize;\n\t\tthis.pageSizeChange.emit(pageSize);\n\t};\n\n\tpublic setPageSizeEventHandler = (event: any) => {\n\t\treturn this.setPageSize(event.target.value);\n\t};\n\n\tpublic isLastPage = () => {\n\t\tif (!this.instance?.totalItems) return false;\n\t\treturn (\n\t\t\tthis.page >=\n\t\t\tMath.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n\t\t);\n\t};\n\n\t// public pageSize = () => this.instance.itemsPerPage;\n\n\tpublic lastPage = () =>\n\t\tthis.instance?.totalItems\n\t\t\t? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n\t\t\t: 1;\n\n\tprivate emit = (page: number | undefined = undefined) => {\n\t\tif (!page) this.pageChange.emit(this.page);\n\t\telse this.pageChange.emit(page);\n\t};\n}\n","<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n @if (allowSizeChange === true || allowSizeChange == 'true') {\n <div class=\"w-40\">\n <app-chr-form id=\"table-paginator-form\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n label:'Éléments par page',\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n iconTooltip: 'Cliquez ici pour mettre à jour la taille de la table'\n }]\n }]\">\n </app-chr-form>\n </div>\n }\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>arrow_right</mat-icon></button>\n </div>\n</div>","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tDirective,\n} from \"@angular/core\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass } from \"@angular/common\";\n/**\n * This should only be used as a directive\n */\n@Component({\n\tselector: \"app-chr-table-header-cell, [app-chr-table-header-cell]\",\n\ttemplateUrl: \"./chr-table-header-cell.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-table-header-cell.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [NgClass, MatIcon],\n})\nexport class ChrTableHeaderCellComponent {\n\t@Input() display?: string;\n\t@Input() column?: string;\n\t@Input() alignment?: string;\n\t@Input() isAsc: boolean = true;\n\t@Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n\t@Input() sortBy?: string;\n\t@Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n\torderBy = (column?: string) => {\n\t\tif (!this.sortBy) this.sortBy = column;\n\n\t\tif (this.sortBy == column) {\n\t\t\tthis.isAsc = !this.isAsc;\n\t\t\tthis.sortBy = column;\n\t\t\tthis.isAscChange.emit(this.isAsc);\n\t\t\tthis.sortByChange.emit(this.sortBy);\n\t\t} else {\n\t\t\tthis.isAsc = true;\n\t\t\tthis.sortBy = column;\n\t\t\tthis.isAscChange.emit(this.isAsc);\n\t\t\tthis.sortByChange.emit(this.sortBy);\n\t\t}\n\t};\n}\n","<div class=\"relative w-full cursor-pointer flex flex-row align-middle self-center\" [ngClass]=\"\n alignment == 'left' ? 'justify-start' : \n alignment == 'center' ? 'justify-center' : \n alignment == 'right' ? 'justify-end' : \n 'justify-left'\" (click)=\"orderBy(column)\">\n <p>{{ display }}</p>\n @if (sortBy) {\n <div class=\"absolute right-3 top-0 h-0 w-0\">\n @if (sortBy == column && isAsc) {\n <mat-icon>arrow_upward</mat-icon>\n }\n @if (sortBy == column && !isAsc) {\n <mat-icon>arrow_downward</mat-icon>\n }\n </div>\n }\n</div>\n<ng-content></ng-content>","import * as moment from \"moment\";\nimport {\n\tComponent,\n\tInput,\n\tAfterViewInit,\n\tEventEmitter,\n\tOutput,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { ChrPaginatorComponent } from \"../chr-paginator/chr-paginator.component\";\nimport { ChrButtonComponent } from \"../chr-button/chr-button.component\";\nimport { ChrTableHeaderCellComponent } from \"../chr-table-header-cell/chr-table-header-cell.component\";\nimport { SortPipe } from \"chrv-pipes\";\nimport { NgxPaginationModule } from \"ngx-pagination\";\nimport {\n\tCommonModule,\n\tDATE_PIPE_DEFAULT_OPTIONS,\n\tDatePipe,\n} from \"@angular/common\";\nimport { callback } from \"chart.js/dist/helpers/helpers.core\";\n\nexport interface IColumn {\n\tdisplay: string;\n\talignment?: \"left\" | \"center\" | \"right\";\n\tchipsTarget?: string[];\n\tchipsDisplay?: string[];\n\tchipsCallback?: Function;\n\tproperties?: string[];\n\tcallback?: Function;\n\tdate?: string;\n\tisLink?: boolean;\n\tlinkStaticUrl?: string;\n}\n\nexport interface IComputedRow {\n\tcolumns: IComputedColumn[];\n}\n\nexport interface IComputedColumn {\n\tlabel?: string;\n\tvalue?: any;\n\tcallback?: Function;\n\talignment?: \"left\" | \"center\" | \"right\";\n\tafter?: string;\n}\n\nexport interface IAction {\n\tdisplay?: string;\n\ticon?: string;\n\tcallback: Function;\n\tdisabled?: boolean;\n\tdisabledCallback?: Function;\n\tcolor: \"primary\" | \"accent\" | \"warn\" | \"alert\" | \"darkeraccent\" | \"none\";\n}\n\n@Component({\n\tselector: \"app-chr-table, [app-chr-table]\",\n\ttemplateUrl: \"./chr-table.component.html\",\n\tstyleUrls: [\"./chr-table.component.scss\", \"../../../../../tailwindbuild.css\"],\n\tstandalone: true,\n\timports: [\n\t\tChrTableHeaderCellComponent,\n\t\tChrButtonComponent,\n\t\tChrPaginatorComponent,\n\t\tSortPipe,\n\t\tNgxPaginationModule,\n\t\tCommonModule,\n\t\tDatePipe,\n\t],\n\tproviders: [\n\t\tDatePipe,\n\t\t{\n\t\t\tprovide: DATE_PIPE_DEFAULT_OPTIONS,\n\t\t\tuseValue: { dateFormat: \"shortDate\" },\n\t\t},\n\t],\n})\nexport class ChrTableComponent implements AfterViewInit {\n\t@Input() computedRows?: IComputedRow[];\n\t@Input() columns?: IColumn[];\n\t@Input() data: any[] | null = [];\n\t@Input() actions?: IAction[];\n\n\t@Input() isAsc: boolean = true;\n\t@Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n\t@Input() sortBy?: string;\n\t@Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n\t@Input() pageSize: number = 50;\n\t@Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n\n\t@Input() id?: string = \"chr_base-data-table\";\n\n\t@Input() color: \"primary\" | \"accent\" | \"warn\" | \"alert\" | \"darkeraccent\" =\n\t\t\"accent\";\n\n\t@Input() textColor:\n\t\t| \"primary\"\n\t\t| \"accent\"\n\t\t| \"warn\"\n\t\t| \"alert\"\n\t\t| \"darkeraccent\"\n\t\t| \"white\"\n\t\t| \"black\" = \"black\";\n\n\tprivate _page: number = 1;\n\t@Input()\n\tget currentPage() {\n\t\treturn this._page;\n\t}\n\tset currentPage(value: number) {\n\t\tthis._page = value;\n\t\tthis.currentPageChange.emit(value);\n\t\tthis.changeDetector.markForCheck();\n\t\tthis.changeDetector.detectChanges();\n\t}\n\t@Output() currentPageChange: EventEmitter<number> = new EventEmitter();\n\n\tcurrentProperty: any | null = null;\n\tcurrentText: string | null = null;\n\n\tconstructor(\n\t\tprivate _date: DatePipe,\n\t\tprivate changeDetector: ChangeDetectorRef\n\t) {}\n\n\tngAfterViewInit(): void {}\n\n\temitIsAsc(isAsc: any) {\n\t\tthis.isAscChange.emit(isAsc);\n\t}\n\n\temitSortBy(sortBy: any) {\n\t\tthis.sortByChange.emit(sortBy);\n\t}\n\n\temitPageSize(pageSize: any) {\n\t\tthis.pageSize = pageSize;\n\t\tthis.pageSizeChange.emit(pageSize);\n\t}\n\n\temitCurrentPage(currentPage: any) {\n\t\tthis.currentPage = currentPage;\n\t\tthis.currentPageChange.emit(currentPage);\n\t}\n\n\tgetProperty = (entry: any, properties?: any[]) => {\n\t\tthis.currentProperty = null;\n\t\tthis.currentText = null;\n\n\t\tif (!properties) {\n\t\t\tthis.currentProperty = entry;\n\t\t\treturn entry;\n\t\t}\n\t\tlet value = entry;\n\t\tfor (const i of properties) {\n\t\t\tvalue = (value as any)?.[i];\n\t\t}\n\t\tthis.currentProperty = value;\n\t\treturn value;\n\t};\n\n\tgetText = (property: any, column: IColumn) => {\n\t\tlet text = null;\n\n\t\tif (column.callback) text = column.callback(property);\n\n\t\tif (text == null && column.date)\n\t\t\ttext = this._date.transform(property, column.date);\n\n\t\tthis.currentText = text || property;\n\n\t\treturn text || property;\n\t\t// column.date\n\t\t// ? column.callback\n\t\t// \t? column.callback(property)\n\t\t// \t: (property | date : column.date)\n\t\t// : column.callback\n\t\t// \t? column.callback(property)\n\t\t// \t: property\n\t};\n\n\tgetIsAsc = () => {\n\t\treturn this.isAsc;\n\t};\n\n\tgetSortBy = () => {\n\t\treturn this.sortBy;\n\t};\n}\n","<div class=\"h-full no-scrollbar\">\n <ng-content class=\"mt-5\"></ng-content>\n <div class=\"flex flex-col flex-1 overflow-auto no-scrollbar\">\n @if (data) {\n <table\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg bg-transparent no-scrollbar\">\n <thead class=\"text-black\">\n @if (data.length <= 0) { <tr\n class=\"bg-chr-{{color}} chr-{{textColor}} flex flex-col flex-no wrap sm:table-row rounded-lg mb-2 sm:mb-0\">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3 h-14\" display=\"{{ column.display }}\" column=\"{{ column.properties }}\"\n [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\">\n </th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle sm:w-0\">\n Actions\n </th>\n }\n </tr>\n }\n @for (entry of data |\n sort:isAsc:sortBy | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id: this.id}; track entry)\n {\n <tr\n class=\"bg-chr-{{color}} chr-{{textColor}} flex flex-col flex-no wrap sm:table-row rounded-lg mb-2 sm:mb-0 \">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3 h-14\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" alignment=\"{{column.alignment}}\"\n (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\"></th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center sm:w-0\">\n Actions\n </th>\n }\n </tr>\n }\n </thead>\n <tbody class=\"w-full\">\n @if (data.length <= 0) { <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-lg mb-0 sm:mb-2 dark:bg-slate-600\">\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\n @for (column of columns | slice: 1; track column) {\n <td class=\"p-3 h-14\"></td>\n }\n @if (actions) {\n <td class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\n }\n </tr>\n }\n @for (entry of data |\n sort:isAsc:sortBy | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id: this.id}; track\n entry; let i = $index) {\n <tr [attr.data-index]=\"i\"\n class=\"flex flex-col flex-no-wrap sm:table-row mb-2 sm:mb-0 dark:text-gray-400 dark:bg-slate-600 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700 sm:border-t-2 border-chr-{{color}} sm:first:border-0\">\n @for (column of columns; track column;) {\n <td [ngClass]=\"\n column.chipsTarget || column.chipsDisplay\n ? ''\n : ''\n \" class=\"p-3 h-14 text-ellipsis border-t-2 first:border-0 sm:first:border-t-2 border-chr-{{color}}\">\n <ng-container [ngTemplateOutlet]=\"default\"\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\n </ng-container>\n </td>\n }\n\n <ng-template #default let-column='column' let-property=\"prop\">\n @if (column.isLink) {\n <a target=\"_blank\" class=\"text-{{column.alignment}}\" href=\"{{column.linkStaticUrl}}{{\n getText(property, column)\n }}\">\n {{\n currentText\n }}\n </a>\n }\n @if (!column.isLink) {\n <div class=\"flex flex-row\" [ngClass]=\"{\n 'justify-start': column.alignment == 'left',\n 'justify-center': column.alignment == 'center',\n 'justify-end': column.alignment == 'right',\n 'gap-2': column.chipsDisplay && getText(property, column)\n }\">\n <p class=\"inline-block overflow-hidden text-nowrap text-ellipsis\">\n {{\n currentText || getText(property, column)\n }}\n </p>\n @if (column.chipsTarget || column.chipsDisplay) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\n </ng-container>\n <ng-template #OK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\n </ng-template>\n <ng-template #NOK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\n </ng-template>\n </div>\n }\n </div>\n }\n </ng-template>\n\n @if (actions) {\n <td class=\"p-3 h-14 flex gap-2 w-full sm:w-min justify-center\">\n @for (action of actions; track action) {\n <app-chr-button class=\"w-full\" [disabled]=\"\n action.disabledCallback\n ? action.disabledCallback(entry)\n : action.disabled || false\n \" [display]=\"action.display\" [icon]=\"action.icon\" [click]=\"action.callback.bind(null, entry, i)\"\n [color]=\"action.color\" type=\"responsive\">\n </app-chr-button>\n }\n </td>\n }\n </tr>\n }\n @for (r of computedRows; track r) {\n <tr\n class=\"flex flex-col flex-no-wrap sm:table-row mb-2 sm:mb-0 dark:text-gray-400 dark:bg-slate-600 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n @for (c of r.columns; track c) {\n <td [ngClass]=\"c.alignment && 'text-'+(c.alignment||'left')\" class=\"p-3 h-14\">\n {{c.label && c.label + ':'}} {{c.value || (c.callback && c.callback(data))}} {{c.after}}\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n <app-chr-paginator [id]=\"this.id\" [(pageSize)]=\"pageSize\" [(page)]=\"currentPage\"\n (pageSizeChange)=\"emitPageSize($event)\" (pageChange)=\"emitCurrentPage($event)\"></app-chr-paginator>\n</div>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n\tselector: \"app-chr-checkbox\",\n\ttemplateUrl: \"./chr-checkbox.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-checkbox.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n\timports: [MatIcon],\n})\nexport class ChrCheckboxComponent {\n\tpublic checked: boolean = false;\n\n\t@Input() type: \"info\" | \"success\" = \"info\";\n\n\t@Input() disabled: boolean = false;\n\n\t@Output() change: EventEmitter<{ checked: boolean }> = new EventEmitter<{\n\t\tchecked: boolean;\n\t}>();\n\n\tcheck(end: boolean) {\n\t\tif (this.disabled) return;\n\t\tif (end) {\n\t\t\tthis.checked = true;\n\t\t\tthis.change.emit({ checked: true });\n\t\t} else {\n\t\t\tthis.checked = false;\n\t\t\tthis.change.emit({ checked: false });\n\t\t}\n\t}\n}\n","<div>\n @if (checked) {\n <div (click)=\"check(false)\" [class.info]=\"type=='info'&&!disabled\"\n [class.bg-green-100]=\"type=='success'&&!disabled\" [class.cursor-pointer]=\"!disabled\"\n [class.bg-grey-400]=\"disabled\"\n class=\"box-border rounded-lg p-3 h-12 text-center border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>check-circle</mat-icon></div>\n </div>\n }\n @if (!checked) {\n <div (click)=\"check(true)\" [class.cursor-pointer]=\"!disabled\" [class.disabled]=\"disabled\"\n [class.bg-gray-200]=\"disabled\" [class.bg-red-100]=\"!disabled\"\n class=\"box-border p-3 h-12 text-center rounded-lg border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>close</mat-icon></div>\n </div>\n }\n</div>","import { Component } from \"@angular/core\";\n\n@Component({\n\tselector: \"app-chr-separator\",\n\ttemplateUrl: \"./chr-separator.component.html\",\n\tstyleUrls: [\n\t\t\"./chr-separator.component.scss\",\n\t\t\"../../../../../tailwindbuild.css\",\n\t],\n\tstandalone: true,\n})\nexport class ChrSeparatorComponent {}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Injectable } from \"@angular/core\";\r\nimport { MatDialog, MatDialogConfig } from \"@angular/material/dialog\";\r\nimport { ChrDeleteModalComponent } from \"../chr-delete-modal/chr-delete-modal.component\";\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\",\r\n})\r\nexport class DialogService {\r\n\tconstructor(private dialog: MatDialog) {}\r\n\r\n\topenDelete = (callback?: Function, callbackElement?: any) => {\r\n\t\tconst dialogRef = this.open(ChrDeleteModalComponent);\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result) => {\r\n\t\t\tif (result == true) callback?.(callbackElement);\r\n\t\t});\r\n\t};\r\n\r\n\topen = (component: any, options?: MatDialogConfig<any> | undefined) => {\r\n\t\treturn this.dialog.open(component, options);\r\n\t};\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, of, tap, Subject, BehaviorSubject } from \"rxjs\";\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\",\r\n})\r\nexport class DataService {\r\n\tprivate data = new Map<string, BehaviorSubject<any>>();\r\n\tconstructor() {}\r\n\r\n\tset = (key: string, value: any): void => {\r\n\t\tconst data = this.data.get(key);\r\n\t\tif (!data) this.data.set(key, new BehaviorSubject(value));\r\n\t\telse data.next(value);\r\n\t};\r\n\r\n\tget = (key: string): Observable<any> => {\r\n\t\tconst data = this.data.get(key);\r\n\t\tif (!data) this.data.set(key, new BehaviorSubject(null));\r\n\t\treturn this.data.get(key)!;\r\n\t};\r\n\r\n\tclear = (key: string): void => {\r\n\t\treturn this.data.get(key)?.next(null);\r\n\t};\r\n\r\n\tremove = (key: string): boolean => {\r\n\t\treturn this.data.delete(key);\r\n\t};\r\n}\r\n","/*\n * Public API Surface of chr-components\n */\n\nexport * from \"./lib/chr-breadcrumb/chr-breadcrumb.component\";\nexport * from \"./lib/chr-button/chr-button.component\";\nexport * from \"./lib/chr-delete-modal/chr-delete-modal.component\";\nexport * from \"./lib/chr-form/chr-form.component\";\nexport * from \"./lib/chr-search-select/chr-search-select.component\";\nexport * from \"./lib/chr-searchbar/chr-searchbar.component\";\nexport * from \"./lib/chr-paginator/chr-paginator.component\";\nexport * from \"./lib/chr-table/chr-table.component\";\nexport * from \"./lib/chr-table-header-cell/chr-table-header-cell.component\";\nexport * from \"./lib/chr-checkbox/chr-checkbox.component\";\nexport * from \"./lib/chr-separator/chr-separator.component\";\nexport * from \"./lib/chr-form/chr-validators/decimal-validator\";\nexport * from \"./lib/chr-form/chr-validators/max-date-validator\";\nexport * from \"./lib/chr-form/chr-validators/type-validator\";\nexport * from \"./lib/services/dialog.service\";\nexport * from \"./lib/services/data.service\";\nexport * from \"ngx-pagination\";\nexport * from \"chrv-pipes\";\nexport * from \"@angular/material/dialog\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i2","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoBa,mBAAmB,CAAA;AAG/B,IAAA,WAAA,CAAmB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAEjC,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,GAAW,EAAE,IAAU,KAAI;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,SAAC,CAAC;KAJmC;8GAHzB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBhC,qcAUM,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQK,SAAS,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAMlB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,qcAAA,EAAA,MAAA,EAAA,CAAA,g4gBAAA,CAAA,EAAA,CAAA;6EAGX,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MECM,kBAAkB,CAAA;AA2B9B,IAAA,WAAA,GAAA;QA1BS,IAAO,CAAA,OAAA,GAAY,EAAE,CAAC;QACtB,IAAI,CAAA,IAAA,GAAY,EAAE,CAAC;QAEnB,IAAK,CAAA,KAAA,GAMF,MAAM,CAAC;QACV,IAAS,CAAA,SAAA,GAAgC,SAAS,CAAC;QACnD,IAAS,CAAA,SAAA,GAAa,IAAI,CAAC;QAC3B,IAAI,CAAA,IAAA,GACZ,MAAM,CAAC;QAGC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAYnC,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAW,KAAI;AAC7B,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACpB,SAAC,CAAC;QAEF,IAAO,CAAA,OAAA,GAAG,MAAK;AACd,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC;AAChB,SAAC,CAAC;KARc;8GA3BJ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB/B,snEAyDG,ED1CD,MAAA,EAAA,CAAA,uz/EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,8TAChB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,SAAS;+BACC,gBAAgB,EAAA,UAAA,EAMd,IAAI,EACP,OAAA,EAAA;wBACR,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,YAAY;AACZ,qBAAA,EAAA,QAAA,EAAA,snEAAA,EAAA,MAAA,EAAA,CAAA,uz/EAAA,EAAA,g4gBAAA,CAAA,EAAA,CAAA;wDAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAOG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;;;MEbM,uBAAuB,CAAA;AAGnC,IAAA,WAAA,CAAmB,SAAgD,EAAA;QAAhD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAuC;QAF5D,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;QAMvB,IAAK,CAAA,KAAA,GAAG,MAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAC,CAAC;KANqE;AAEvE,IAAA,QAAQ,MAAK;8GALD,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EC5BpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,o2CAyBM,EDLJ,MAAA,EAAA,CAAA,EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,qLACd,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;+BACC,sBAAsB,EAAA,UAAA,EAMpB,IAAI,EACP,OAAA,EAAA;wBACR,cAAc;wBACd,gBAAgB;wBAChB,gBAAgB;wBAChB,kBAAkB;wBAClB,cAAc;wBACd,UAAU;AACV,qBAAA,EAAA,QAAA,EAAA,o2CAAA,EAAA,MAAA,EAAA,CAAA,g4gBAAA,CAAA,EAAA,CAAA;;;MELW,sBAAsB,CAAA;AAGjC,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KACpD;8GALU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EATtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,sBAAsB;AACnC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;AAGU,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAZT,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAYnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;kBACjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAwB,sBAAA;AACnC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;AAOF,SAAU,IAAI,CAAC,IAAY,EAAA;IAC/B,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE5B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;SACb;AAED,QAAA,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,IAAI,CAAC;AAEpC,QAAA,OAAO,CAAC,MAAM;AACZ,cAAG;AACC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,OAAO,KAAK;AACJ,aAAA;cACtB,IAAI,CAAC;AACX,KAAC,CAAC;AACJ;;MC1Ba,yBAAyB,CAAA;AAGpC,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KAC3D;8GALU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EATzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;AAGU,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAZZ,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAYnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;kBACjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAA2B,yBAAA;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;;AAOF,SAAU,OAAO,CAAC,MAAc,EAAA;IACpC,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE5B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;SACb;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,KAAK,EAAE,CAAC;QACvB,SAAS;AACP,YAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,kBAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM;kBAC3D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,sBAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM;sBAC3D,KAAK,CAAC;AAEZ,QAAA,OAAO,SAAS;AACd,cAAG;AACC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,GAAG,EAAE,MAAM;AACS,aAAA;cACtB,IAAI,CAAC;AACX,KAAC,CAAC;AACJ;;MChCa,yBAAyB,CAAA;AAGpC,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KACvD;8GALU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EATzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;AAGU,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAZZ,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAYnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;kBACjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAA2B,yBAAA;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;AAOF,SAAU,OAAO,CAAC,IAAU,EAAA;IAChC,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;SACb;AAED,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhC,QAAA,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1D,cAAG;AACC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE;AACrB,gBAAA,MAAM,EAAE,KAAK;AACO,aAAA;cACtB,IAAI,CAAC;AACX,KAAC,CAAC;AACJ;;MCaa,wBAAwB,CAAA;AAxBrC,IAAA,WAAA,GAAA;QAyBQ,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAE1B,QAAA,IAAA,CAAA,YAAY,GAAgB,IAAI,WAAW,CAAgB,IAAI,CAAC,CAAC;AAGjE,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,GAAG,CAAC;QAIxB,IAAI,CAAA,IAAA,GAAiB,EAAE,CAAC;QAExB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAK,CAAA,KAAA,GAAe,IAAI,CAAC;AAExB,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GACd,IAAI,YAAY,EAAiB,CAAC;QAG5B,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;AAO/B,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,KAAU,KAAI;YAChC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AACpC,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,KAAU,KAAI;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,GAAQ,KAAU;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjC,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,EAAO,KAAU;YACpC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAClD,gBAAA,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACnB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,EAAO,KAAU;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,EAAE,CAAC;AACtC,SAAC,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,MAAK;AACtB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC9D,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAC/C,GAAG,CAAC,CAAC,MAAM,KAAI;AACd,gBAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ;sBAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC;sBAClE,MAAM,CAAC;aACV,CAAC,CACF,CAAC;AACH,SAAC,CAAC;QAEF,IAAoB,CAAA,oBAAA,GAAG,MAAK;;YAE3B,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC,MAAM,KAAI;AAC/C,gBAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;oBACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBACrB;AACF,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAI,CAAC,UAAmB,KAAU;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,YAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AACvE,SAAC,CAAC;QAEF,IAAS,CAAA,SAAA,GAAG,MAAK;AAChB,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC;AACpD,SAAC,CAAC;QAEF,IAAQ,CAAA,QAAA,GAAG,MAAK;AACf,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAChC,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,MAAK,GAAG,CAAC;AAER,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAsB,KAAW;YACxD,OAAO,OAAO,KAAK,IAAI,QAAQ;kBAC5B,IAAI,CAAC,oBAAoB,CAAC,CAAG,EAAA,KAAK,EAAE,CAAC;AACvC,kBAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,EAAU,KAAI;AAC1C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACvB,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,KAAa,KAAI;YAChD,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAU,EAAE,KAAa,KAAI;;YAErD,IAAI,KAAK,IAAI,GAAG;AAAE,gBAAA,OAAO,IAAI,CAAC;;AAE9B,YAAA,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAE,CAAA;AACrC,iBAAA,IAAI,EAAE;AACN,iBAAA,WAAW,EAAE;iBACb,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,SAAC,CAAC;AACF,KAAA;IAzFA,QAAQ,GAAA;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC5B;8GAzBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAjBzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,wBAAwB;AACrC,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDF,8wDAwBC,EAAA,MAAA,EAAA,CAAA,u6gFAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED6BC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,sBAAsB,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,eAAe,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAxBpC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gDAAgD,EAM/C,SAAA,EAAA;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAA0B,wBAAA;AACrC,yBAAA;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA;wBACR,mBAAmB;wBACnB,sBAAsB;wBACtB,UAAU;wBACV,eAAe;wBACf,SAAS;wBACT,SAAS;AACT,qBAAA,EAAA,QAAA,EAAA,8wDAAA,EAAA,MAAA,EAAA,CAAA,u6gFAAA,EAAA,g4gBAAA,CAAA,EAAA,CAAA;8BAUQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,EAAE,EAAA,CAAA;sBAAV,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBAGE,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEmCM,gBAAgB,CAAA;AA6B5B,IAAA,WAAA,CACS,OAAoB,EACpB,QAAkB,EAClB,cAAiC,EAAA;QAFjC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;QACpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AA7BhC,QAAA,IAAA,CAAA,WAAW,GAA0B,IAAI,YAAY,EAAW,CAAC;AAGjE,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;AAGzD,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;QAItD,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QAEzB,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;AAEpB,QAAA,IAAA,CAAA,UAAU,GACnB,IAAI,YAAY,EAAgB,CAAC;QAElC,IAAI,CAAA,IAAA,GAAc,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAsB,CAAA,sBAAA,GAAG,MAAK;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC;QAEK,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AA2BpC,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,KAAc,KAAI;AAC1B,YAAA,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AACnD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,EAAE,KAAU,KAAI;AACxC,YAAA,IAAI,KAAK;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClD,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAc,KAAI;AAC5B,YAAA,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,OAAiB,KAAI;YACzC,OAAO,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,CAAC;AAC7E,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,GAAW,EAAE,KAAU,KAAI;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACxC,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,KAAU,KAAI;YACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;aACjC;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACpC,SAAC,CAAC;QAEF,IAAK,CAAA,KAAA,GAAG,MAAK;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,SAAC,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,CACjB,KAAU,EACV,OAAiB,EACjB,KAAU,EACV,KAAc,KACX;YACH,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;aACpE;YACD,IAAI,OAAO,CAAC,KAAK;AAChB,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/D,YAAA,IAAI,CAAC,UAAU,CACd,OAAO,CAAC,IAAI,EACZ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAC7C,CAAC;AACH,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,QAA6B,KAAI;AACjD,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5C,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AACtC,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3D,SAAC,CAAC;QAEK,IAAQ,CAAA,QAAA,GAAG,MAAK;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,OAAe,EAAE,KAAa,KAAI;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACjD,YAAA,OAAO,KAAK,CAAC;AACd,SAAC,CAAC;QAEM,IAAsB,CAAA,sBAAA,GAAG,MAAK;AACrC,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAS,EAAE;AACrC,gBAAA,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;AACvC,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChD,oBAAA,WAAY,CAAC,YAAY;AACvB,yBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,yBAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AAChB,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7C,qBAAC,CAAC,CAAC;iBACJ;aACD;AACF,SAAC,CAAC;QAEM,IAAsB,CAAA,sBAAA,GAAG,MAAK;AACrC,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAS,EAAE;AACrC,gBAAA,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;AACvC,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;oBACjD,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5C,wBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;4BACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;yBACjC;6BAAM;AACN,4BAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;yBACtB;AACF,qBAAC,CAAC,CAAC;iBACH;aACD;AACF,SAAC,CAAC;QAEM,IAAW,CAAA,WAAA,GAAG,MAAK;YAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE;AAC1C,gBAAA,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;oBAC3D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;wBACvC,IAAI,OAAO,CAAC,KAAK;AAChB,4BAAA,IAAI,CAAC,IAAI;AACP,iCAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAE;AAClB,iCAAA,UAAU,CACV,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CACrD,CAAC;;AACC,4BAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;qBACnD;yBAAM;AACN,wBAAA,IAAI,CAAC,IAAI;AACP,6BAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAE;AAClB,6BAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC5D;iBACD;aACD;AACF,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAC7B,KAAU,EACV,IAUW,KACR;YACH,QAAQ,IAAI;AACX,gBAAA,KAAK,MAAM;oBACV,OAAO,KAAK,IAAI,EAAE,CAAC;AACpB,gBAAA,KAAK,QAAQ;oBACZ,OAAO,KAAK,IAAI,CAAC,CAAC;gBACnB,KAAK,cAAc,EAAE;oBACpB,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;wBAAE,KAAK,GAAG,IAAI,CAAC;oBACjE,OAAO,KAAK,IAAI,IAAI,CAAC;iBACrB;AACD,gBAAA,KAAK,UAAU;oBACd,OAAO,KAAK,IAAI,EAAE,CAAC;AACpB,gBAAA,KAAK,UAAU;oBACd,OAAO,KAAK,IAAI,EAAE,CAAC;AACpB,gBAAA,KAAK,QAAQ;oBACZ,OAAO,KAAK,IAAI,IAAI,CAAC;AACtB,gBAAA,KAAK,MAAM;oBACV,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACrD,gBAAA,KAAK,UAAU;oBACd,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AAC3D,gBAAA,KAAK,OAAO;oBACX,OAAO,KAAK,IAAI,EAAE,CAAC;AACpB,gBAAA,KAAK,QAAQ;AACZ,oBAAA,OAAO,KAAgB,CAAC;AACzB,gBAAA;AACC,oBAAA,OAAO,KAAK,CAAC;aACd;AACF,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,IAAS,KAAI;YAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC7C,SAAC,CAAC;AAmBM,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,WAAkC,KAAI;YAC/D,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,OAAO,UAAU,CAAC;;AAEpC,YAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBACrC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjD,gBAAA,IAAI,IAAI,IAAI,KAAK,EAAE;AAClB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iBAClD;AACD,gBAAA,IAAI,IAAI,IAAI,KAAK,EAAE;AAClB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iBAClD;AACD,gBAAA,IAAI,IAAI,IAAI,UAAU,EAAE;AACvB,oBAAA,UAAU,CAAC,OAAO,GAAG,wBAAwB,CAAC;AAC9C,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBACrC;AACD,gBAAA,IAAI,IAAI,IAAI,OAAO,EAAE;AACpB,oBAAA,UAAU,CAAC,OAAO,GAAG,wCAAwC,CAAC;AAC9D,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBAClC;AACD,gBAAA,IAAI,IAAI,IAAI,WAAW,EAAE;AACxB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxD;AACD,gBAAA,IAAI,IAAI,IAAI,WAAW,EAAE;AACxB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxD;AACD,gBAAA,IAAI,IAAI,IAAI,MAAM,EAAE;AACnB,oBAAA,UAAU,CAAC,OAAO,GAAG,iCAAiC,CAAC;oBACvD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxC;AACD,gBAAA,IAAI,IAAI,IAAI,SAAS,EAAE;oBACtB,UAAU,CAAC,OAAO,GAAG,CAAA,4CAAA,EAA+C,UAAU,CAAC,KAAK,KAAK,CAAC;oBAC1F,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC3C;AACD,gBAAA,IAAI,IAAI,IAAI,SAAS,EAAE;oBACtB,UAAU,CAAC,OAAO,GAAG,CAAA,mCAAA,EAAsC,UAAU,CAAC,KAAK,KAAK,CAAC;oBACjF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC3C;aACD;AACD,YAAA,OAAO,UAAU,CAAC;AACnB,SAAC,CAAC;KArPE;IAEJ,QAAQ,GAAA;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACxB;IAED,eAAe,GAAA;;AAEd,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;KACH;IAqKO,eAAe,GAAA;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE;AAC1C,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACrC,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,IAAI,CAAC,KAAK,CAAC,EAAE;AAC5C,oBAAA,MAAM,IAAI,KAAK,CACd,4DAA4D,CAC5D,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,WAAW,CAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;AAC7D,oBAAA,KAAK,CAAC,KAAK,EACZ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CACtC,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aAC1C;SACD;KACD;8GAxOW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EATjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;YACV,QAAQ;AACR,YAAA;AACC,gBAAA,OAAO,EAAE,yBAAyB;AAClC,gBAAA,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;AACrC,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChHF,82WAuKM,EDzEJ,MAAA,EAAA,CAAA,yykFAAA,EAAA,g4gBAAA,EAAA,yykFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,+yCACnB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,oBAAoB,+BACpB,QAAQ,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,wBAAwB,EACxB,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,IAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,qBAAqB,8BAErB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,EAAA;;2FAYD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA/B5B,SAAS;+BACC,cAAc,EAAA,UAAA,EAOZ,IAAI,EACP,OAAA,EAAA;wBACR,mBAAmB;wBACnB,WAAW;wBACX,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,QAAQ;wBACR,wBAAwB;wBACxB,qBAAqB;wBACrB,QAAQ;wBACR,YAAY;wBACZ,sBAAsB;qBACtB,EACU,SAAA,EAAA;wBACV,QAAQ;AACR,wBAAA;AACC,4BAAA,OAAO,EAAE,yBAAyB;AAClC,4BAAA,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;AACrC,yBAAA;qBACD,EACgB,eAAA,EAAA,uBAAuB,CAAC,OAAO,EAAA,QAAA,EAAA,82WAAA,EAAA,MAAA,EAAA,CAAA,yykFAAA,EAAA,g4gBAAA,EAAA,yykFAAA,CAAA,EAAA,CAAA;2IAGvC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEvHK,qBAAqB,CAAA;AAOjC,IAAA,WAAA,GAAA;AALU,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAE,CAAC;AAG1D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,WAAW,CAAS,EAAE,CAAC,CAAC;AAG7C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAClE;AAED,IAAA,IAAI,CAAC,KAAU,EAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;8GAbW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,4rCAkBM,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPK,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEjB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAMjB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,4rCAAA,EAAA,MAAA,EAAA,CAAA,g4gBAAA,CAAA,EAAA,CAAA;wDAGrB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACE,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MESM,qBAAqB,CAAA;AAGjC,IAAA,IACI,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;KACvB;IACD,IAAI,IAAI,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;KACpC;AAID,IAAA,IACI,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;KAC5B;IACD,IAAI,QAAQ,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;KACpC;IAUD,WACQ,CAAA,OAA0B,EACzB,cAAiC,EAAA;QADlC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QACzB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;QApClC,IAAK,CAAA,KAAA,GAAkB,IAAI,CAAC;QAC5B,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;AAY9B,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU,CAAC;AAa9D,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,YAAY,EAAU,CAAC;QAEnE,IAAE,CAAA,EAAA,GAAuB,qBAAqB,CAAC;QAE/C,IAAe,CAAA,eAAA,GAAqB,MAAM,CAAC;QAiB7C,IAAQ,CAAA,QAAA,GAAG,MAAK;YACtB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEjC,SAAC,CAAC;QAEK,IAAI,CAAA,IAAA,GAAG,MAAK;YAClB,IAAI,IAAI,CAAC,UAAU,EAAE;gBAAE,OAAO;AAC9B,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEjC,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,IAAY,KAAI;YACjC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO;AAC/C,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,KAAU,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,SAAC,CAAC;QAEK,IAAW,CAAA,WAAA,GAAG,MAAK;AACzB,YAAA,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACvB,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,QAAgB,KAAI;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,QAAQ;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC;AACzD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,KAAU,KAAI;YAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAC,CAAC;QAEK,IAAU,CAAA,UAAA,GAAG,MAAK;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU;AAAE,gBAAA,OAAO,KAAK,CAAC;YAC7C,QACC,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC/D;AACH,SAAC,CAAC;;QAIK,IAAQ,CAAA,QAAA,GAAG,MACjB,IAAI,CAAC,QAAQ,EAAE,UAAU;AACxB,cAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;cAChE,CAAC,CAAC;AAEE,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,IAA2B,GAAA,SAAS,KAAI;AACvD,YAAA,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AACtC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,SAAC,CAAC;KAlEE;IAEJ,qBAAqB,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CACvC,GAAG,IAAI,CAAC,EAAE,CAAA,CAAE,CACU,CAAC;KACxB;AAED,IAAA,QAAQ,MAAW;8GA9CP,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,oPC1BlC,soDAiCM,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTK,gBAAgB,EAAE,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8HAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAE3C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;+BACC,mBAAmB,EAAA,UAAA,EAMjB,IAAI,EACP,OAAA,EAAA,CAAC,gBAAgB,EAAE,YAAY,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,soDAAA,EAAA,MAAA,EAAA,CAAA,g4gBAAA,CAAA,EAAA,CAAA;sHAMpD,IAAI,EAAA,CAAA;sBADP,KAAK;gBAWI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAGH,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAWI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEE,EAAE,EAAA,CAAA;sBAAV,KAAK;gBAEG,eAAe,EAAA,CAAA;sBAAvB,KAAK;;;AEhDP;;AAEG;MAWU,2BAA2B,CAAA;AAVxC,IAAA,WAAA,GAAA;QAcU,IAAK,CAAA,KAAA,GAAY,IAAI,CAAC;AACrB,QAAA,IAAA,CAAA,WAAW,GAA0B,IAAI,YAAY,EAAE,CAAC;AAExD,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,YAAY,EAAE,CAAC;AAElE,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,MAAe,KAAI;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAEvC,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpC;iBAAM;AACN,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpC;AACF,SAAC,CAAC;AACF,KAAA;8GAxBY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,ECtBxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qoBAiByB,EDGd,MAAA,EAAA,CAAA,w7+EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEd,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wDAAwD,cAMtD,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,qoBAAA,EAAA,MAAA,EAAA,CAAA,w7+EAAA,EAAA,g4gBAAA,CAAA,EAAA,CAAA;8BAGlB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEgDK,iBAAiB,CAAA;AA6B7B,IAAA,IACI,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;KAClB;IACD,IAAI,WAAW,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;KACpC;IAMD,WACS,CAAA,KAAe,EACf,cAAiC,EAAA;QADjC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAU;QACf,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;QA3CjC,IAAI,CAAA,IAAA,GAAiB,EAAE,CAAC;QAGxB,IAAK,CAAA,KAAA,GAAY,IAAI,CAAC;AACrB,QAAA,IAAA,CAAA,WAAW,GAA0B,IAAI,YAAY,EAAE,CAAC;AAExD,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,YAAY,EAAE,CAAC;QAEzD,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;AACrB,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;QAE3D,IAAE,CAAA,EAAA,GAAY,qBAAqB,CAAC;QAEpC,IAAK,CAAA,KAAA,GACb,QAAQ,CAAC;QAED,IAAS,CAAA,SAAA,GAOL,OAAO,CAAC;QAEb,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;AAWhB,QAAA,IAAA,CAAA,iBAAiB,GAAyB,IAAI,YAAY,EAAE,CAAC;QAEvE,IAAe,CAAA,eAAA,GAAe,IAAI,CAAC;QACnC,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;AA2BlC,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,KAAU,EAAE,UAAkB,KAAI;AAChD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAExB,IAAI,CAAC,UAAU,EAAE;AAChB,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,gBAAA,OAAO,KAAK,CAAC;aACb;YACD,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,YAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC3B,gBAAA,KAAK,GAAI,KAAa,GAAG,CAAC,CAAC,CAAC;aAC5B;AACD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,YAAA,OAAO,KAAK,CAAC;AACd,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,QAAa,EAAE,MAAe,KAAI;YAC5C,IAAI,IAAI,GAAG,IAAI,CAAC;YAEhB,IAAI,MAAM,CAAC,QAAQ;AAAE,gBAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEtD,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AAC9B,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAEpD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,QAAQ,CAAC;YAEpC,OAAO,IAAI,IAAI,QAAQ,CAAC;;;;;;;;AAQzB,SAAC,CAAC;QAEF,IAAQ,CAAA,QAAA,GAAG,MAAK;YACf,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAC,CAAC;QAEF,IAAS,CAAA,SAAA,GAAG,MAAK;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,SAAC,CAAC;KAhEE;AAEJ,IAAA,eAAe,MAAW;AAE1B,IAAA,SAAS,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,UAAU,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,YAAY,CAAC,QAAa,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACnC;AAED,IAAA,eAAe,CAAC,WAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzC;8GAnEW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EARlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA;YACV,QAAQ;AACR,YAAA;AACC,gBAAA,OAAO,EAAE,yBAAyB;AAClC,gBAAA,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;AACrC,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3EF,0pOAiJM,EAAA,MAAA,EAAA,CAAA,+6+EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpFJ,2BAA2B,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACrB,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAWD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtB7B,SAAS;+BACC,gCAAgC,EAAA,UAAA,EAG9B,IAAI,EACP,OAAA,EAAA;wBACR,2BAA2B;wBAC3B,kBAAkB;wBAClB,qBAAqB;wBACrB,QAAQ;wBACR,mBAAmB;wBACnB,YAAY;wBACZ,QAAQ;qBACR,EACU,SAAA,EAAA;wBACV,QAAQ;AACR,wBAAA;AACC,4BAAA,OAAO,EAAE,yBAAyB;AAClC,4BAAA,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;AACrC,yBAAA;AACD,qBAAA,EAAA,QAAA,EAAA,0pOAAA,EAAA,MAAA,EAAA,CAAA,+6+EAAA,EAAA,g4gBAAA,CAAA,EAAA,CAAA;+GAGQ,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEE,EAAE,EAAA,CAAA;sBAAV,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAWF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAUI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;MEvGK,oBAAoB,CAAA;AAVjC,IAAA,WAAA,GAAA;QAWQ,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QAEvB,IAAI,CAAA,IAAA,GAAuB,MAAM,CAAC;QAElC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAEzB,QAAA,IAAA,CAAA,MAAM,GAAuC,IAAI,YAAY,EAEnE,CAAC;AAYL,KAAA;AAVA,IAAA,KAAK,CAAC,GAAY,EAAA;QACjB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;SACpC;aAAM;AACN,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;SACrC;KACD;8GApBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjC,m1BAgBM,EAAA,MAAA,EAAA,CAAA,ix+EAAA,EAAA,g4gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLK,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAMhB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,m1BAAA,EAAA,MAAA,EAAA,CAAA,ix+EAAA,EAAA,g4gBAAA,CAAA,EAAA,CAAA;8BAKT,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;;;METK,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,6ECXlC,mDAEM,EAAA,MAAA,EAAA,CAAA,m4+EAAA,EAAA,g4gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDSO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAMjB,IAAI,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,m4+EAAA,EAAA,g4gBAAA,CAAA,EAAA,CAAA;;;MEFJ,aAAa,CAAA;AACzB,IAAA,WAAA,CAAoB,MAAiB,EAAA;QAAjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,QAAmB,EAAE,eAAqB,KAAI;YAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAErD,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;gBAC5C,IAAI,MAAM,IAAI,IAAI;AAAE,oBAAA,QAAQ,GAAG,eAAe,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,SAAc,EAAE,OAA0C,KAAI;YACrE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC7C,SAAC,CAAC;KAZuC;8GAD7B,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;;MCAY,WAAW,CAAA;AAEvB,IAAA,WAAA,GAAA;AADQ,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAC;AAGvD,QAAA,IAAA,CAAA,GAAG,GAAG,CAAC,GAAW,EAAE,KAAU,KAAU;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;;AACrD,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,GAAG,GAAG,CAAC,GAAW,KAAqB;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;AAC5B,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,GAAW,KAAU;AAC7B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,GAAW,KAAa;YACjC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAC,CAAC;KApBc;8GAFJ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFX,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEN,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;;ACLD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -50,6 +50,7 @@ export declare class ChrFormComponent implements OnInit, AfterViewInit {
50
50
  valuesChange: EventEmitter<any>;
51
51
  submit?: Function;
52
52
  compact: boolean;
53
+ debounce: number;
53
54
  formChange: EventEmitter<IFormControl>;
54
55
  form: FormGroup;
55
56
  updateValueAndValidity: () => void;
@@ -76,5 +77,5 @@ export declare class ChrFormComponent implements OnInit, AfterViewInit {
76
77
  private _initValidators;
77
78
  private _getValidators;
78
79
  static ɵfac: i0.ɵɵFactoryDeclaration<ChrFormComponent, never>;
79
- static ɵcmp: i0.ɵɵComponentDeclaration<ChrFormComponent, "app-chr-form", never, { "sections": { "alias": "sections"; "required": false; }; "valid": { "alias": "valid"; "required": false; }; "model": { "alias": "model"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "submit": { "alias": "submit"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; }, { "validChange": "validChange"; "modelChange": "modelChange"; "valuesChange": "valuesChange"; "formChange": "formChange"; }, never, never, true, never>;
80
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrFormComponent, "app-chr-form", never, { "sections": { "alias": "sections"; "required": false; }; "valid": { "alias": "valid"; "required": false; }; "model": { "alias": "model"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "submit": { "alias": "submit"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "validChange": "validChange"; "modelChange": "modelChange"; "valuesChange": "valuesChange"; "formChange": "formChange"; }, never, never, true, never>;
80
81
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chrv-components",
3
- "version": "1.5.70",
3
+ "version": "1.5.71",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=17.3.0",
6
6
  "@angular/core": ">=17.3.0",
Binary file