ui-core-abv 0.0.94 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/fesm2022/ui-core-abv.mjs
CHANGED
|
@@ -757,6 +757,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
757
757
|
|
|
758
758
|
class UicFormWrapperComponent {
|
|
759
759
|
schema;
|
|
760
|
+
externalData = {};
|
|
760
761
|
loading = false;
|
|
761
762
|
initialValues = {};
|
|
762
763
|
useSteps = false;
|
|
@@ -770,11 +771,18 @@ class UicFormWrapperComponent {
|
|
|
770
771
|
}
|
|
771
772
|
ngOnChanges(changes) {
|
|
772
773
|
if (changes['schema']) {
|
|
773
|
-
this.
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
774
|
+
this.handleSchemaChange();
|
|
775
|
+
}
|
|
776
|
+
if (changes['externalData'] && !changes['externalData'].firstChange) {
|
|
777
|
+
this.updateExtenalData();
|
|
778
|
+
this.handleSchemaChange();
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
handleSchemaChange() {
|
|
782
|
+
this.buildForm();
|
|
783
|
+
this.useSteps = !!this.schema?.steps?.length;
|
|
784
|
+
if (this.useSteps && this.schema?.steps) {
|
|
785
|
+
this.currentStep = Math.min(this.currentStep, this.schema.steps.length - 1);
|
|
778
786
|
}
|
|
779
787
|
}
|
|
780
788
|
handleSubmit() {
|
|
@@ -782,7 +790,7 @@ class UicFormWrapperComponent {
|
|
|
782
790
|
this.formSubmit.emit({ result: true, form: this.form.value });
|
|
783
791
|
}
|
|
784
792
|
else {
|
|
785
|
-
this.logFormErrors(this.form);
|
|
793
|
+
//this.logFormErrors(this.form);
|
|
786
794
|
this.form.markAllAsTouched();
|
|
787
795
|
this.formSubmit.emit({ result: false, form: null });
|
|
788
796
|
}
|
|
@@ -808,6 +816,34 @@ class UicFormWrapperComponent {
|
|
|
808
816
|
}
|
|
809
817
|
});
|
|
810
818
|
}
|
|
819
|
+
updateExtenalData() {
|
|
820
|
+
if (this.useSteps) {
|
|
821
|
+
this.schema.steps?.forEach(step => {
|
|
822
|
+
step.blocks.forEach(block => {
|
|
823
|
+
block.fields = this.updateFieldOptions(block);
|
|
824
|
+
});
|
|
825
|
+
});
|
|
826
|
+
}
|
|
827
|
+
else {
|
|
828
|
+
this.schema.blocks?.forEach(block => {
|
|
829
|
+
block.fields = this.updateFieldOptions(block);
|
|
830
|
+
});
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
updateFieldOptions(block) {
|
|
834
|
+
return block.fields.map(f => {
|
|
835
|
+
if (f.type === 'select') {
|
|
836
|
+
let options = f.options ?? [];
|
|
837
|
+
Object.keys(this.externalData).forEach(key => {
|
|
838
|
+
if (key === f.name) {
|
|
839
|
+
options = this.externalData[key] ?? [];
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
return { ...f, options: options };
|
|
843
|
+
}
|
|
844
|
+
return f;
|
|
845
|
+
});
|
|
846
|
+
}
|
|
811
847
|
buildForm() {
|
|
812
848
|
const fields = this.collectAllFields();
|
|
813
849
|
const newForm = this.fb.group({});
|
|
@@ -862,13 +898,15 @@ class UicFormWrapperComponent {
|
|
|
862
898
|
return this.schema.steps?.[this.currentStep]?.title ?? '';
|
|
863
899
|
}
|
|
864
900
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UicFormWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
865
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: UicFormWrapperComponent, isStandalone: true, selector: "ui-form-wrapper", inputs: { schema: "schema", loading: "loading", initialValues: "initialValues" }, outputs: { formSubmit: "formSubmit" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"handleSubmit()\">\r\n\r\n @if (useSteps) {\r\n @if (schema.steps?.length) {\r\n\r\n <div class=\"step-title\">{{ getStepTitle()}}</div>\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"(schema.steps?.[currentStep]?.blocks?.[0]?.fields?.length) ?? 0\"\r\n ></ui-skeleton-loader>\r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n </section>\r\n }\r\n }\r\n <div class=\"step-controls\">\r\n <button type=\"button\" (click)=\"prevStep()\" [disabled]=\"currentStep === 0\">Anterior</button>\r\n\r\n @if ((schema.steps?.length ?? 0) > 0 && currentStep < ((schema.steps?.length ?? 1) - 1)) {\r\n <button type=\"button\" (click)=\"nextStep()\">Siguiente</button>\r\n } @else {\r\n <button type=\"submit\">Guardar</button>\r\n }\r\n </div>\r\n } \r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n @if (block.title){\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n }\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"block.fields.length\"\r\n ></ui-skeleton-loader>\r\n } @else {\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n }\r\n </section>\r\n }\r\n }\r\n</form>\r\n", styles: [":host{display:block;padding:.25rem 0}.block-title{font-size:1.625rem;font-weight:600;line-height:calc(1.625rem + 4px);margin:1.5rem 0;color:var(--grey-950)}\n"], dependencies: [{ kind: "component", type: UicDynamicFormComponent, selector: "ui-dynamic-form", inputs: ["fields", "form", "cols"] }, { kind: "component", type: UicSkeletonLoaderComponent, selector: "ui-skeleton-loader", inputs: ["inputs", "cols"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
901
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: UicFormWrapperComponent, isStandalone: true, selector: "ui-form-wrapper", inputs: { schema: "schema", externalData: "externalData", loading: "loading", initialValues: "initialValues" }, outputs: { formSubmit: "formSubmit" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"handleSubmit()\">\r\n\r\n @if (useSteps) {\r\n @if (schema.steps?.length) {\r\n\r\n <div class=\"step-title\">{{ getStepTitle()}}</div>\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"(schema.steps?.[currentStep]?.blocks?.[0]?.fields?.length) ?? 0\"\r\n ></ui-skeleton-loader>\r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n </section>\r\n }\r\n }\r\n <div class=\"step-controls\">\r\n <button type=\"button\" (click)=\"prevStep()\" [disabled]=\"currentStep === 0\">Anterior</button>\r\n\r\n @if ((schema.steps?.length ?? 0) > 0 && currentStep < ((schema.steps?.length ?? 1) - 1)) {\r\n <button type=\"button\" (click)=\"nextStep()\">Siguiente</button>\r\n } @else {\r\n <button type=\"submit\">Guardar</button>\r\n }\r\n </div>\r\n } \r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n @if (block.title){\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n }\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"block.fields.length\"\r\n ></ui-skeleton-loader>\r\n } @else {\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n }\r\n </section>\r\n }\r\n }\r\n</form>\r\n", styles: [":host{display:block;padding:.25rem 0}.block-title{font-size:1.625rem;font-weight:600;line-height:calc(1.625rem + 4px);margin:1.5rem 0;color:var(--grey-950)}\n"], dependencies: [{ kind: "component", type: UicDynamicFormComponent, selector: "ui-dynamic-form", inputs: ["fields", "form", "cols"] }, { kind: "component", type: UicSkeletonLoaderComponent, selector: "ui-skeleton-loader", inputs: ["inputs", "cols"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
866
902
|
}
|
|
867
903
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UicFormWrapperComponent, decorators: [{
|
|
868
904
|
type: Component,
|
|
869
905
|
args: [{ selector: 'ui-form-wrapper', imports: [UicDynamicFormComponent, UicSkeletonLoaderComponent, ReactiveFormsModule], template: "<form [formGroup]=\"form\" (ngSubmit)=\"handleSubmit()\">\r\n\r\n @if (useSteps) {\r\n @if (schema.steps?.length) {\r\n\r\n <div class=\"step-title\">{{ getStepTitle()}}</div>\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"(schema.steps?.[currentStep]?.blocks?.[0]?.fields?.length) ?? 0\"\r\n ></ui-skeleton-loader>\r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n </section>\r\n }\r\n }\r\n <div class=\"step-controls\">\r\n <button type=\"button\" (click)=\"prevStep()\" [disabled]=\"currentStep === 0\">Anterior</button>\r\n\r\n @if ((schema.steps?.length ?? 0) > 0 && currentStep < ((schema.steps?.length ?? 1) - 1)) {\r\n <button type=\"button\" (click)=\"nextStep()\">Siguiente</button>\r\n } @else {\r\n <button type=\"submit\">Guardar</button>\r\n }\r\n </div>\r\n } \r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n @if (block.title){\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n }\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"block.fields.length\"\r\n ></ui-skeleton-loader>\r\n } @else {\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n }\r\n </section>\r\n }\r\n }\r\n</form>\r\n", styles: [":host{display:block;padding:.25rem 0}.block-title{font-size:1.625rem;font-weight:600;line-height:calc(1.625rem + 4px);margin:1.5rem 0;color:var(--grey-950)}\n"] }]
|
|
870
906
|
}], propDecorators: { schema: [{
|
|
871
907
|
type: Input
|
|
908
|
+
}], externalData: [{
|
|
909
|
+
type: Input
|
|
872
910
|
}], loading: [{
|
|
873
911
|
type: Input
|
|
874
912
|
}], initialValues: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-core-abv.mjs","sources":["../../../projects/ui-core/src/lib/components/button/button.component.ts","../../../projects/ui-core/src/lib/components/button/button.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/base-value-accessot.ts","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.ts","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.html","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.ts","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.html","../../../projects/ui-core/src/lib/components/inputs/select/select.component.ts","../../../projects/ui-core/src/lib/components/inputs/select/select.component.html","../../../projects/ui-core/src/lib/components/inputs/input/input.component.ts","../../../projects/ui-core/src/lib/components/inputs/input/input.component.html","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.ts","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.html","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.ts","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.html","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.ts","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.html","../../../projects/ui-core/src/lib/components/inputs/searcher/searcher.component.ts","../../../projects/ui-core/src/lib/components/inputs/searcher/searcher.component.html","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.ts","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.html","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.ts","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.html","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.ts","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.html","../../../projects/ui-core/src/lib/pipes/name-inits.pipe.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.html","../../../projects/ui-core/src/lib/animations/fadeAndRise.animation.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.html","../../../projects/ui-core/src/lib/directives/tool-tip.directive.ts","../../../projects/ui-core/src/lib/animations/highlightRow.animation.ts","../../../projects/ui-core/src/lib/animations/animatedRow.animation.ts","../../../projects/ui-core/src/lib/components/table/table.component.ts","../../../projects/ui-core/src/lib/components/table/table.component.html","../../../projects/ui-core/src/lib/components/table/table.models.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.html","../../../projects/ui-core/src/lib/components/push-alerts/alert.helpers.ts","../../../projects/ui-core/src/lib/services/push-alert.service.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.html","../../../projects/ui-core/src/lib/animations/pushTop.animation.ts","../../../projects/ui-core/src/lib/animations/sideModal.animation.ts","../../../projects/ui-core/src/lib/animations/simpleFade.animation.ts","../../../projects/ui-core/src/lib/services/modal.constant.ts","../../../projects/ui-core/src/lib/services/modaRef.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.html","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.ts","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.html","../../../projects/ui-core/src/lib/services/modal.service.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.html","../../../projects/ui-core/src/lib/services/tiny-alert.service.ts","../../../projects/ui-core/src/public-api.ts","../../../projects/ui-core/src/ui-core-abv.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-button',\r\n imports: [CommonModule],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss'\r\n})\r\nexport class UicButtonComponent {\r\n @Input() text='';\r\n @Input() icon='';\r\n @Input() rightIcon='';\r\n @Input() iconOnly=false;\r\n @Input() disabled=false;\r\n @Input() loading=false; \r\n @Input() size: 't' | 's'|'m'|'l'| 'g' = 'm';\r\n @Input() type: 'filled' | 'bordered' | 'ghost' = 'filled'; \r\n @Input() color:ButtonColor = 'primary';\r\n \r\n buttonTypeClass = \"\";\r\n \r\n ngOnInit(){\r\n this.buttonTypeClass = 'btn-' + this.type + ' btn-' + this.color + \"-\" + this.type;\r\n }\r\n}\r\nexport type ButtonColor = 'primary'|'secondary'|'red'|'green'|'blue'|'yellow' | 'black';","<button\r\n [class]=\"'main-btn ' + buttonTypeClass\"\r\n [disabled]=\"disabled || loading\"\r\n [ngClass]=\"{\r\n 'btn-tiny' :size=='t',\r\n 'btn-small' :size=='s', \r\n 'btn-medium' :size=='m',\r\n 'btn-large' :size=='l', \r\n 'btn-gigant' :size=='g'\r\n }\" >\r\n \r\n @if (!loading) {\r\n @if (icon!='' ) {\r\n <i class=\"{{icon}}\"></i>\r\n }\r\n @if (!iconOnly) {\r\n <div class=\"btn-text\" [class.norighticon]=\"rightIcon==''\" [class.noicon]=\"icon==''\">\r\n {{text}}\r\n <ng-content ></ng-content>\r\n </div>\r\n }\r\n @if (rightIcon!='' ) {\r\n <i class=\"{{rightIcon}}\"></i>\r\n }\r\n } @else {\r\n <div class=\"btn-loader-container\"> <div class=\"btn-loader\"></div> </div>\r\n }\r\n</button>","import { ControlValueAccessor } from '@angular/forms';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nexport function createValueAccessor<T>() {\r\n @Directive()\r\n abstract class BaseValueAccessor implements ControlValueAccessor {\r\n @Input() value!: T;\r\n @Output() valueChange = new EventEmitter<T>();\r\n\r\n onChange: (value: T) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(obj: T): void {\r\n this.value = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // opcional\r\n }\r\n\r\n notifyChange(value: T) {\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n return BaseValueAccessor;\r\n}\r\n","import { Component, forwardRef, Input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\nconst base = createValueAccessor<boolean>();\r\n\r\n@Component({\r\n selector: 'ui-checkbox',\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss','../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicCheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicCheckboxComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() tip = '';\r\n @Input() type: 'check'|'switch' = 'check';\r\n @Input() placeholder = '';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n\r\n\r\n toggle() {\r\n if (!this.disabled && !this.loading){\r\n this.notifyChange(!this.value);\r\n }\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\">\r\n {{label}} \r\n </div>\r\n }\r\n <div class=\"check-form-container\">\r\n <div (click)=\"toggle()\" class=\"check-wrapper\">\r\n @if (type=='check') {\r\n <button\r\n type=\"button\"\r\n class=\"checkbox\"\r\n [disabled]=\"disabled\"\r\n [class.checked]=\"value\"\r\n [disabled]=\"disabled\"\r\n (keydown.enter)=\"toggle()\"\r\n (keydown.space)=\"toggle()\"\r\n >\r\n <span class=\"icon\">\r\n @if (value) {\r\n ✔\r\n }@else {\r\n −\r\n }\r\n </span>\r\n </button>\r\n }@else{\r\n <button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"value\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"thumb\"></span>\r\n </button>\r\n } \r\n {{placeholder}}\r\n </div>\r\n </div>\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n \r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-switch',\r\n imports: [],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrls: ['./toggle-button.component.scss','../input.component.scss']\r\n})\r\nexport class UicSwichComponent {\r\n @Input() checked = false;\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n @Input() disabled = false;\r\n @Input() placeholder = '';\r\n @Input() label = '';\r\n\r\n \r\n\r\n toggle() {\r\n if (this.disabled) return;\r\n this.checked = !this.checked;\r\n this.checkedChange.emit(this.checked);\r\n }\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (click)=\"toggle()\"\r\n>\r\n <span class=\"thumb\"></span>\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\n\r\ntype selectId = number|string|null;\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n imports: [CommonModule],\r\n templateUrl: './select.component.html',\r\n styleUrl: '../input.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSelectComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() showSubtitle = false;\r\n emptyText = '- Seleccionar -'\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() nullable = false;\r\n @Input() options:AppSelectOption[] = []; \r\n\r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n \r\n selectedOption: AppSelectOption | null = null;\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n ngOnInit(): void {\r\n this.emptyText = this.disabled ? '-' : '- Seleccionar -';\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n this.selectedOption = this.options.find(opt => opt.id === this.value) ?? null;\r\n }\r\n }\r\n\r\n // --- Overlay ---\r\n openList(){\r\n if (this.disabled) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = input.offsetWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n\r\n selectOption(option:AppSelectOption | null){\r\n this.closeList();\r\n this.selectedOption = option;\r\n this.notifyChange(option?.id??null);\r\n }\r\n\r\n \r\n closeList() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n override writeValue(value: string | number | null): void {\r\n super.writeValue(value); \r\n this.selectedOption = this.options.find(opt => opt.id === value) ?? null;\r\n }\r\n\r\n \r\n}\r\n\r\nexport interface AppSelectOption{\r\n id? : string | number | null;\r\n text : string;\r\n detail? : string;\r\n} ","<div class=\"input-wrapper \">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">{{label}} </div>\r\n }\r\n <div class=\"fakeinput-wrapp\" > \r\n <!-- INPUT -->\r\n <div (click)=\"openList()\" class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\" style=\"cursor: pointer;\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-{{size}} {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fakeinput-content\">{{(selectedOption?.text || emptyText)}}</div>\r\n @if (!disabled) {\r\n <i class=\"ri-arrow-down-s-line\"></i>\r\n }\r\n </div> \r\n <!-- DESPLEGABLE -->\r\n <ng-template #dropdownTemplate >\r\n <div class=\"input-options\">\r\n <!-- OPCIONES -->\r\n <div class=\"input-option-scroll\">\r\n @if (options.length > 0 && nullable) {\r\n <div (click)=\"selectOption(null)\" class=\"input-option \" style=\"padding: 3px;\" >- Ninguno -</div>\r\n <div class=\"option-divider\"></div>\r\n }\r\n\r\n \r\n @for (option of options; track $index) {\r\n <div (click)=\"selectOption(option)\" class=\"input-option\">\r\n <div style=\"padding: 2px;\" >\r\n <div class=\"f-medium\" >{{option.text }}</div>\r\n <div *ngIf=\"showSubtitle\" class=\"f-extralight\" >\r\n {{option.detail}}\r\n </div>\r\n </div>\r\n </div>\r\n @if ( $index < (options.length - 1) ) {\r\n <span class=\"option-divider\"></span>\r\n }\r\n \r\n }\r\n\r\n @if (options.length == 0) {\r\n <div class=\"fakeinput-alert t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n <!-- ALERTS -->\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-input',\r\n imports: [ CommonModule],\r\n templateUrl: './input.component.html',\r\n styleUrl: '../input.component.scss'\r\n})\r\nexport class UicInputComponent {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Output() clickButton = new EventEmitter<boolean>();\r\n\r\n\r\n disableBtn = false;\r\n disableButton(){\r\n this.clickButton.emit();\r\n this.disableBtn = true;\r\n setTimeout(() => {\r\n this.disableBtn = false;\r\n }, 200);\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n \r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n \r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">\r\n {{label}} \r\n </div>\r\n }\r\n \r\n <div class=\"fakeinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-{{size}} {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"input-container pad-{{size}}\" >\r\n <ng-content class=\"myinput\"></ng-content>\r\n </div> \r\n </div>\r\n\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n \r\n </div>\r\n</div>\r\n","import { Component, forwardRef, HostListener, Input } from '@angular/core';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\nconst base = createValueAccessor<number>();\r\n\r\n@Component({\r\n selector: 'ui-slider',\r\n imports: [ ],\r\n templateUrl: './ui-slider.component.html',\r\n styleUrls: ['./ui-slider.component.scss', '../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSliderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSliderComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() step = 1;\r\n @Input() markerCount = 0;\r\n markers: number[] = [];\r\n\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n\r\n\r\n ngOnInit(){\r\n if (this.markerCount > 1) {\r\n const interval = (this.max - this.min) / (this.markerCount - 1);\r\n this.markers = Array.from({ length: this.markerCount }, (_, i) => this.min + i * interval);\r\n }\r\n }\r\n\r\n get percent() {\r\n return ((this.value - this.min) / (this.max - this.min)) * 100;\r\n }\r\n\r\n updateFromClientX(clientX: number, el: HTMLElement) {\r\n if (this.disabled) return;\r\n if (!el ) return;\r\n \r\n const rect = el.getBoundingClientRect();\r\n const relativeX = Math.min(Math.max(clientX - rect.left, 0), rect.width);\r\n const rawValue = this.min + (relativeX / rect.width) * (this.max - this.min);\r\n\r\n // Ajustar al step\r\n const stepped = Math.round(rawValue / this.step) * this.step;\r\n\r\n this.value = (Math.min(this.max, Math.max(this.min, stepped)));\r\n this.notifyChange(this.value);\r\n }\r\n \r\n dragging = false;\r\n private activeTrack?: HTMLElement;\r\n\r\n onMouseDown(event: MouseEvent, track: HTMLElement) {\r\n event.preventDefault();\r\n this.dragging = true;\r\n this.activeTrack = track;\r\n this.updateFromClientX(event.clientX, track);\r\n }\r\n \r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (this.disabled || !(this.dragging && this.activeTrack)) return;\r\n this.updateFromClientX(event.clientX, this.activeTrack);\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp() {\r\n this.dragging = false;\r\n this.activeTrack = undefined;\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\">\r\n {{label}} \r\n </div>\r\n }\r\n <div class=\"slider-wrapper\">\r\n <div class=\"slider\" #track\r\n (click)=\"updateFromClientX($event.clientX, track)\">\r\n <!-- barra -->\r\n <div class=\"slider-track\"></div>\r\n <div class=\"slider-filled\" [style.width.%]=\"percent\"></div>\r\n \r\n <!-- thumb -->\r\n <div class=\"slider-thumb\"\r\n [style.left.%]=\"percent\"\r\n (mousedown)=\"onMouseDown($event, track)\"\r\n #thumb>\r\n <div class=\"slider-thumb-legend\">{{value}}</div>\r\n </div>\r\n \r\n <!-- markers -->\r\n <div class=\"slider-markers\">\r\n @for(m of markers; track $index){\r\n <div class=\"marker\" \r\n [style.left.%]=\"((m - min) / (max - min)) * 100\">\r\n {{ m }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport {\r\n Overlay,\r\n OverlayRef,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\n\r\ntype CalendarView = 'days' | 'months' | 'years';\r\nconst base = createValueAccessor<string>();\r\n\r\n@Component({\r\n selector: 'ui-date-picker',\r\n imports: [DatePipe, CommonModule, UicButtonComponent],\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss','../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicDatePickerComponent),\r\n multi: true\r\n }\r\n ],\r\n})\r\nexport class UicDatePickerComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() max = '';\r\n @Input() min = '';\r\n\r\n @ViewChild('calendarTemplate') calendarTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n // Fijos\r\n months:string[] = Array.from({ length: 12 }, (_, i) => new Date(2000, i, 1).toLocaleString('default', { month: 'short' }));\r\n today: Date = new Date();\r\n currentYear = +this.today.getFullYear();\r\n maxDate:Date|null= null;\r\n minDate:Date|null=null;\r\n\r\n // Dinámicos\r\n view: CalendarView = 'days';\r\n paintedDate:Date|null = null;\r\n selectedDate = new Date();\r\n selectedYear = this.currentYear;\r\n selectedMonth = null;\r\n monthWeeks:(Date|null)[][] = []; // Arreglo de fechas\r\n decadeRange:number[]=[];\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n ngOnInit(){\r\n this.monthWeeks = this.getWeeks();\r\n this.minDate = this.parseDateLimits(this.min);\r\n this.maxDate = this.parseDateLimits(this.max);\r\n this.paintedDate = this.parseDateLimits(this.value); \r\n }\r\n\r\n // --- Overlay ---\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n\r\n openCalendar() {\r\n if ( this.disabled ) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeCalendar();\r\n }\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(this.host.nativeElement.querySelector('.fakeinput'))\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.calendarTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeCalendar());\r\n\r\n this.view = 'days';\r\n }\r\n\r\n closeCalendar() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n get monthName(): string {\r\n return this.selectedDate.toLocaleString('default', { month: 'long' });\r\n }\r\n \r\n getDecadeRange(): number[] {\r\n const start = Math.floor(this.selectedYear / 20) * 20;\r\n return Array.from({ length: 20 }, (_, i) => start + i);\r\n }\r\n\r\n getWeeks(): (Date | null)[][] {\r\n const weeks: (Date | null)[][] = [];\r\n const firstDay = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n const lastDay = new Date(this.selectedYear, this.selectedDate.getMonth() + 1, 0);\r\n\r\n let current = new Date(firstDay);\r\n current.setDate(current.getDate() - current.getDay());\r\n\r\n while (current <= lastDay || current.getDay() !== 0) {\r\n const week: (Date | null)[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n week.push(\r\n current.getMonth() === this.selectedDate.getMonth()\r\n ? new Date(current)\r\n : null\r\n );\r\n current.setDate(current.getDate() + 1);\r\n }\r\n weeks.push(week);\r\n }\r\n return weeks;\r\n }\r\n\r\n // --- Navegación ---\r\n prev() {\r\n if (this.view === 'days') {\r\n const isJan = this.selectedDate.getMonth() == 0;\r\n const offsetMonth = isJan? -11 : 1;\r\n if ( isJan){\r\n this.selectedYear--;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() - offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear--;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear-=20\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n next() {\r\n if (this.view === 'days') {\r\n const isDec = this.selectedDate.getMonth() == 11;\r\n const offsetMonth = isDec? -11 : 1;\r\n if ( isDec){\r\n this.selectedYear++;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() + offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear++;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear+=20;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n // --- Cambio de vistas ---\r\n changeView() {\r\n if (this.view === 'days') {\r\n this.view = 'months';\r\n } else if (this.view === 'months') {\r\n this.view = 'years';\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n selectYear(year: number) {\r\n this.selectedYear = year;\r\n this.selectedDate = new Date(year, this.selectedDate.getMonth(), 1);\r\n this.view = 'months';\r\n }\r\n selectMonth(monthIndex: number) {\r\n this.selectedDate = new Date(this.selectedYear, monthIndex, 1);\r\n this.monthWeeks = this.getWeeks();\r\n this.view = 'days';\r\n }\r\n\r\n selectDate(date: Date) {\r\n this.value = date.toISOString().split(\"T\")[0];\r\n this.notifyChange(this.value);\r\n this.paintedDate = this.parseDateLimits(this.value);\r\n this.closeCalendar();\r\n }\r\n\r\n isToday(day:Date|null){\r\n if ( day ){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today =(new Date()).toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isPainted(day:Date|null){\r\n if ( day && this.paintedDate){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today = this.paintedDate.toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isThisMonth(m:string){\r\n const monthId = this.months.findIndex(f=>f===m) + 1;\r\n const dayStr = this.selectedYear + \"-\" + monthId;\r\n const thisMonth =(new Date()).toISOString().split(\"T\")[0].substring(0,7).replace(\"-0\",\"-\");\r\n return dayStr == thisMonth;\r\n }\r\n\r\n // MÍNIMO Y MÁXIMO\r\n parseDateLimits(date:string) {\r\n if (date) {\r\n const parsed = new Date(date);\r\n if (isNaN(parsed.getTime())) {\r\n return null;\r\n }else{\r\n return parsed;\r\n }\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n cleanInput(){\r\n this.value = '';\r\n this.notifyChange(this.value);\r\n this.paintedDate = null;\r\n this.closeCalendar();\r\n }\r\n pickToday(){\r\n this.selectedDate = new Date();\r\n this.value = this.selectedDate.toISOString().split(\"T\")[0];\r\n this.notifyChange(this.value);\r\n this.paintedDate = this.parseDateLimits(this.value);\r\n this.closeCalendar();\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{ iconColor }} {{ icon }}\"></i>\r\n }\r\n <div\r\n class=\"input-elements\"\r\n [style]=\"icon ? 'max-width: calc(100% - 34px);' : ''\"\r\n >\r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">{{ label }}</div>\r\n }\r\n <div class=\"fakeinput-wrapp \" >\r\n <div class=\"fakeinput \" \r\n [ngClass]=\"{ errorinput: error, disabledinput: disabled }\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-m {{ internalIcon }}\"></i>\r\n }\r\n <input\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n placeholder=\"dd-mm-yyyy\"\r\n [value]=\"value ? (value | date : 'dd/MM/yyyy') : ''\"\r\n readonly\r\n (click)=\"openCalendar()\"\r\n />\r\n </div>\r\n <!-- Overlay Template -->\r\n <ng-template #calendarTemplate>\r\n <div class=\"calendar\">\r\n <div class=\"calendar-header\">\r\n <span (click)=\"changeView()\">\r\n @if (view === 'days') {\r\n {{ monthName }} de {{ selectedYear }}\r\n } @else if (view === 'months') {\r\n {{ selectedYear }}\r\n } @else {\r\n {{ decadeRange[0] }} - {{ decadeRange[decadeRange.length - 1] }}\r\n }\r\n </span>\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-up-line\"\r\n (click)=\"prev()\"\r\n ><</ui-button\r\n >\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-down-line\"\r\n (click)=\"next()\"\r\n >></ui-button\r\n >\r\n </div>\r\n <!-- Vista Days -->\r\n @if (view === 'days') {\r\n <div class=\"calendar-grid\">\r\n @for (d of ['DO','LU','MA','MI','JU','VI','SA']; track $index) {\r\n <div class=\"weekday\">{{ d }}</div>\r\n } @for (week of monthWeeks; track $index) { @for (day of week;\r\n track $index) {\r\n <button\r\n class=\"day\"\r\n [disabled]=\"\r\n (minDate && day ? day < minDate : false) ||\r\n (maxDate && day ? day > maxDate : false)\r\n \"\r\n [class.today]=\"isToday(day)\"\r\n [class.day-selected]=\"isPainted(day)\"\r\n [class.empty]=\"!day\"\r\n (click)=\"day && selectDate(day)\"\r\n >\r\n {{ day?.getDate() }}\r\n </button>\r\n } }\r\n </div>\r\n }\r\n <!-- Vista Months -->\r\n @if (view === 'months') {\r\n <div class=\"calendar-grid months\">\r\n @for (m of months; let i = $index; track i) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"isThisMonth(m)\"\r\n (click)=\"selectMonth(i)\"\r\n >\r\n {{ m }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <!-- Vista Years -->\r\n @if (view === 'years') {\r\n <div class=\"calendar-grid years\">\r\n @for (y of decadeRange; track $index) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"y == currentYear\"\r\n (click)=\"selectYear(y)\"\r\n >\r\n {{ y }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <div class=\"calendar-footer\">\r\n <ui-button\r\n color=\"red\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"cleanInput()\"\r\n >Limpiar</ui-button\r\n >\r\n <ui-button\r\n color=\"blue\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"pickToday()\"\r\n >Hoy</ui-button\r\n >\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!-- ALERTS -->\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField } from '../form.models';\r\nimport { UicSelectComponent } from '../../inputs/select/select.component';\r\nimport { UicInputComponent } from '../../inputs/input/input.component';\r\nimport { UicCheckboxComponent } from '../../inputs/checkbox/checkbox.component';\r\nimport { UicSliderComponent } from '../../inputs/ui-slider/ui-slider.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicDatePickerComponent } from '../../inputs/date-picker/date-picker.component';\r\n\r\n@Component({\r\n selector: 'ui-dynamic-form',\r\n imports: [CommonModule, UicDatePickerComponent,\r\n ReactiveFormsModule, UicSliderComponent, UicSelectComponent, UicInputComponent, UicCheckboxComponent, FormsModule],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrl: './dynamic-form.component.scss'\r\n})\r\nexport class UicDynamicFormComponent {\r\n @Input() fields: FormField[] = [];\r\n @Input({ required: true }) form!: FormGroup;\r\n\r\n flag = false;\r\n @Input() cols = 2;\r\n\r\n // MANEJO DE ERRORES\r\n getErrorMessages(field: FormField): string[] {\r\n \r\n const control = this.form.get(field.name);\r\n if (!control?.errors) return [];\r\n if (!(control.touched || control.dirty)) return [];\r\n\r\n return Object.keys(control.errors).map(errorKey => {\r\n const error = control.errors?.[errorKey];\r\n const mapper = this.errorMessages[errorKey];\r\n return mapper ? mapper(error, field) : `${field.label ?? field.name} es inválido.`;\r\n });\r\n }\r\n \r\n private readonly errorMessages: Record<string, (error: any, field: FormField) => string> = {\r\n required: (_err, field) => `${field.label ?? field.name} es obligatorio.`,\r\n min: (err, field) => `${field.label ?? field.name} debe ser mayor o igual a ${err.min}.`,\r\n max: (err, field) => `${field.label ?? field.name} debe ser menor o igual a ${err.max}.`,\r\n minlength: (err, field) => `${field.label ?? field.name} debe tener al menos ${err.requiredLength} caracteres.`,\r\n maxlength: (err, field) => `${field.label ?? field.name} no puede superar ${err.requiredLength} caracteres.`,\r\n pattern: (_err, field) => `${field.label ?? field.name} no tiene el formato correcto.`\r\n };\r\n}\r\n","<div class=\"form\" [ngStyle]=\"{'--cols': cols, '--min': '180px'}\" [formGroup]=\"form\">\r\n @for (field of fields; track field.name) {\r\n <div class=\"col-span-{{field.colSpan || 1}}\">\r\n \r\n @if ( ['text','number'].includes(field.type) ) {\r\n <ui-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n >\r\n <input \r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [type]=\"field.type\"\r\n [placeholder]=\"field.placeholder??field.label\"\r\n />\r\n </ui-input>\r\n\r\n }\r\n @else if (field.type === 'date') {\r\n <ui-date-picker\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n ></ui-date-picker>\r\n }\r\n @else if (field.type === 'select') {\r\n <ui-select\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-select>\r\n }\r\n @else if (field.type === 'checkbox') {\r\n <ui-checkbox\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [placeholder]=\"field.placeholder??''\"\r\n [tip]=\"field.tip??''\"\r\n ></ui-checkbox>\r\n }\r\n @else if (field.type === 'slider') {\r\n <ui-slider\r\n [min]=\"field.min??0\"\r\n [max]=\"field.max??100\"\r\n [step]=\"field.sliderInterval??1\"\r\n [markerCount]=\"field.sliderMarks??5\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n ></ui-slider>\r\n }\r\n @else if (field.type === 'switch') {\r\n <ui-checkbox\r\n type=\"switch\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [formControlName]=\"field.name\"\r\n [tip]=\"field.tip??''\"\r\n [placeholder]=\"field.placeholder??''\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n >\r\n </ui-checkbox>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-skeleton-loader',\r\n imports: [ CommonModule ],\r\n templateUrl: './skeleton-loader.component.html',\r\n styleUrl: './skeleton-loader.component.scss'\r\n})\r\nexport class UicSkeletonLoaderComponent {\r\n @Input() inputs: number = 3; \r\n @Input() cols: number = 3; \r\n\r\n get gridStyle() {\r\n return {\r\n 'grid-template-columns': `repeat(${this.cols}, 1fr)`\r\n };\r\n }\r\n}\r\n","<div class=\"skeleton-form\" [ngStyle]=\"gridStyle\">\r\n @for (r of [].constructor(inputs); track $index) {\r\n <div class=\"skeleton-input-container\">\r\n <div class=\"skeleton-gradient skeleton-label\"></div>\r\n <div class=\"skeleton-gradient skeleton-input\"></div>\r\n </div>\r\n }\r\n</div>","import { Component, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { FormBlock, FormField, FormResult, FormSchema } from '../form.models';\r\nimport { FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { UicDynamicFormComponent } from '../form/dynamic-form.component';\r\nimport { UicSkeletonLoaderComponent } from '../../skeleton-loader/skeleton-loader.component';\r\n\r\n@Component({\r\n selector: 'ui-form-wrapper',\r\n imports: [UicDynamicFormComponent, UicSkeletonLoaderComponent,ReactiveFormsModule],\r\n templateUrl: './form-wrapper.component.html',\r\n styleUrl: './form-wrapper.component.scss'\r\n})\r\nexport class UicFormWrapperComponent implements OnInit, OnChanges {\r\n @Input() schema!: FormSchema;\r\n @Input() loading = false;\r\n @Input() initialValues: Record<string, any> = {};\r\n\r\n useSteps = false;\r\n\r\n @Output() formSubmit = new EventEmitter<FormResult>();\r\n\r\n private readonly fb = inject(FormBuilder);\r\n form: FormGroup = this.fb.group({});\r\n currentStep = 0;\r\n\r\n\r\n ngOnInit(): void {\r\n this.buildForm();\r\n this.useSteps = !!this.schema.steps && this.schema.steps.length > 0;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema']) {\r\n this.buildForm();\r\n this.useSteps = !!this.schema.steps && this.schema.steps.length > 0;\r\n if (this.useSteps && this.schema?.steps) {\r\n this.currentStep = Math.min(this.currentStep, (this.schema.steps.length - 1) || 0);\r\n }\r\n }\r\n }\r\n\r\n handleSubmit() {\r\n if (this.form.valid) {\r\n this.formSubmit.emit({result:true, form:this.form.value});\r\n } else {\r\n this.logFormErrors(this.form)\r\n this.form.markAllAsTouched();\r\n this.formSubmit.emit({result:false, form:null});\r\n }\r\n }\r\n\r\n private collectAllFields(): FormField[] {\r\n if (!this.schema) return [];\r\n\r\n if (this.useSteps && this.schema.steps ) {\r\n return this.schema.steps.flatMap(step => (step.blocks ?? []).flatMap(b => b.fields ?? []));\r\n }\r\n return (this.schema.blocks ?? []).flatMap(b => b.fields ?? []);\r\n }\r\n\r\n logFormErrors(form: FormGroup | FormArray, parentKey = '') {\r\n Object.keys(form.controls).forEach(key => {\r\n const control = form.get(key);\r\n const controlPath = parentKey ? `${parentKey}.${key}` : key;\r\n\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n // Recursión para anidar grupos\r\n this.logFormErrors(control, controlPath);\r\n } else if (control?.errors) {\r\n console.warn(`❌ Errores en [${controlPath}]:`, control.errors);\r\n }\r\n });\r\n }\r\n\r\n private buildForm() {\r\n const fields = this.collectAllFields();\r\n const newForm = this.fb.group({});\r\n fields.forEach(f => {\r\n const validators = this.mapValidatorsFromField(f);\r\n let initial = this.initialValues[f.name] ?? null;\r\n if ((f.type === 'checkbox'||f.type === 'switch') && initial == null) initial = false;\r\n if (f.type === 'slider' && initial == null) initial = f.min ?? 0;\r\n\r\n newForm.addControl(f.name, this.fb.control(initial, validators));\r\n });\r\n this.form = newForm;\r\n }\r\n\r\n private mapValidatorsFromField(f: FormField) {\r\n const validators = [];\r\n if (f.required) validators.push(Validators.required);\r\n if (typeof f.min === 'number') validators.push(Validators.min(f.min));\r\n if (typeof f.max === 'number') validators.push(Validators.max(f.max)); \r\n if (typeof f.maxLength === 'number') validators.push(Validators.maxLength(f.maxLength));\r\n if (typeof f.minLength === 'number') validators.push(Validators.minLength(f.minLength));\r\n if (f.pattern instanceof RegExp) validators.push(Validators.pattern(f.pattern));\r\n return validators;\r\n }\r\n\r\n getCurrentBlocks(): FormBlock[] {\r\n if (!this.schema) return [];\r\n if (this.useSteps) {\r\n const step = this.schema.steps?.[this.currentStep];\r\n return step?.blocks ?? [];\r\n }\r\n return this.schema.blocks ?? [];\r\n }\r\n\r\n nextStep() {\r\n const stepsCount = this.schema?.steps?.length ?? 0;\r\n if (this.useSteps && this.currentStep < stepsCount - 1) {\r\n this.currentStep++;\r\n }\r\n }\r\n\r\n prevStep() {\r\n if (this.useSteps && this.currentStep > 0) {\r\n this.currentStep--;\r\n }\r\n }\r\n\r\n getStepTitle(): string { \r\n return this.schema.steps?.[this.currentStep]?.title ?? '';\r\n }\r\n\r\n\r\n \r\n}\r\n\r\n\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"handleSubmit()\">\r\n\r\n @if (useSteps) {\r\n @if (schema.steps?.length) {\r\n\r\n <div class=\"step-title\">{{ getStepTitle()}}</div>\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"(schema.steps?.[currentStep]?.blocks?.[0]?.fields?.length) ?? 0\"\r\n ></ui-skeleton-loader>\r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n </section>\r\n }\r\n }\r\n <div class=\"step-controls\">\r\n <button type=\"button\" (click)=\"prevStep()\" [disabled]=\"currentStep === 0\">Anterior</button>\r\n\r\n @if ((schema.steps?.length ?? 0) > 0 && currentStep < ((schema.steps?.length ?? 1) - 1)) {\r\n <button type=\"button\" (click)=\"nextStep()\">Siguiente</button>\r\n } @else {\r\n <button type=\"submit\">Guardar</button>\r\n }\r\n </div>\r\n } \r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n @if (block.title){\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n }\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"block.fields.length\"\r\n ></ui-skeleton-loader>\r\n } @else {\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n }\r\n </section>\r\n }\r\n }\r\n</form>\r\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AsyncPipe, CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged, finalize, Observable,of,Subject, switchMap, tap } from 'rxjs';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-searcher',\r\n imports: [CommonModule,FormsModule,AsyncPipe, UicButtonComponent],\r\n templateUrl: './searcher.component.html',\r\n styleUrls: ['./searcher.component.scss', '../input.component.scss']\r\n})\r\nexport class UicSearcherComponent {\r\n\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary'|'error'|'light'|'grey' = 'secondary'; //color de ícono externo\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false; \r\n @Input() showSelected = true;\r\n @Input() placeholder = 'Buscar...';\r\n open = false;\r\n \r\n @Input() searchFn!: (query: string) => Observable<any[]>;\r\n @Input() itemDisplayFn: (item: any) => string = item => String(item);\r\n @Input() itemIsEnabledFn: (item: any) => boolean = () => true;\r\n \r\n @Input() manualSearch: boolean = false;\r\n \r\n @Input() selectedItem:any = null;\r\n @Output() selectedItemChange = new EventEmitter<any>();\r\n\r\n isLoading = false;\r\n searchText: string = '';\r\n private readonly searchSubject = new Subject<string>();\r\n results$: Observable<any[]>;\r\n @ViewChild('inputwrapp') toggleButton!: ElementRef;\r\n private unlistener!: () => void;\r\n\r\n constructor(\r\n private readonly renderer:Renderer2,\r\n private readonly overlay: Overlay,\r\n private readonly positionBuilder: OverlayPositionBuilder,\r\n private readonly vcr: ViewContainerRef\r\n ){\r\n this.results$ = this.searchSubject.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.isLoading = true),\r\n switchMap( v => {\r\n if (v.length < 3) {\r\n this.isLoading = false;\r\n return of([]);\r\n }\r\n return this.searchFn(v).pipe( finalize(()=>this.isLoading=false) )}\r\n )\r\n );\r\n }\r\n \r\n openList(){\r\n if (!this.disabled && !this.open){\r\n this.open = true;\r\n this.openOverlay();\r\n if( this.open ){\r\n setTimeout(() => {\r\n this.unlistener = this.renderer.listen('window', 'click',(e:Event)=>{\r\n if(!this.toggleButton.nativeElement.contains(e.target) ){\r\n this.clearSearch();\r\n this.unlistener();\r\n }\r\n });\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n onSearchChange(value: string) {\r\n this.searchText = value; \r\n if (!this.manualSearch) {\r\n this.searchSubject.next(value);\r\n }\r\n }\r\n\r\n triggerSearch() {\r\n this.searchSubject.next(this.searchText);\r\n }\r\n\r\n selectItem(item: any) {\r\n if ( this.itemIsEnabledFn(item)){\r\n this.clearSearch();\r\n this.selectedItemChange.emit(item);\r\n if ( this.showSelected ) this.selectedItem = item;\r\n }\r\n }\r\n\r\n clearSearch() {\r\n this.searchText = '';\r\n this.open = false;\r\n this.closeOverlay();\r\n this.searchSubject.next('');\r\n }\r\n\r\n unselect(){\r\n this.selectedItem = null;\r\n this.selectedItemChange.emit(null);\r\n }\r\n\r\n @ViewChild('dropdownTemplate') dropdownTemplateRef!: TemplateRef<any>;\r\n overlayRef!: OverlayRef;\r\n closeOverlay() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n openOverlay(){\r\n if (this.overlayRef) return;\r\n const width = this.toggleButton.nativeElement.getBoundingClientRect().width;\r\n const positionStrategy = this.positionBuilder\r\n .flexibleConnectedTo(this.toggleButton)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'transparent-backdrop'\r\n });\r\n const templatePortal = new TemplatePortal(this.dropdownTemplateRef, this.vcr);\r\n this.overlayRef.attach(templatePortal);\r\n \r\n this.overlayRef.backdropClick().subscribe(() => this.closeOverlay());\r\n this.overlayRef.overlayElement.style.width = `${width}px`;\r\n }\r\n}\r\n","\r\n<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\"> \r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">\r\n {{label}} \r\n </div>\r\n \r\n <div class=\"fakeinput-wrapp\" #inputwrapp >\r\n <!-- INPUT -->\r\n <div class=\"fakeinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\">\r\n @if (selectedItem == null) { \r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-{{size}} {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"input-container pad-{{size}}\" >\r\n <input\r\n (focus)=\"openList()\"\r\n type=\"text\"\r\n (keydown.enter)=\"triggerSearch()\"\r\n (keydown.escape)=\"clearSearch()\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n </div> \r\n @if (manualSearch) {\r\n <ui-button (click)=\"triggerSearch()\" size=\"t\" ></ui-button>\r\n }\r\n <ui-button size=\"t\" icon=\"ri-close-large-line\" (click)=\"clearSearch()\"></ui-button>\r\n }@else {\r\n <div class=\"input-container pad-{{size}}\" >\r\n <div class=\"selected-item\" >\r\n <div class=\"selected-item-text\" [innerHTML]=\"itemDisplayFn(selectedItem)\"></div> \r\n <ui-button (click)=\"unselect()\" type=\"ghost\" size=\"t\" icon=\"ri-close-large-line\" color=\"red\"></ui-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n \r\n </div>\r\n</div>\r\n\r\n<ng-template #dropdownTemplate>\r\n @if (results$ | async; as items){\r\n <div class=\"results\">\r\n @if (isLoading) {\r\n <div class=\"loader\"></div>\r\n }\r\n <div class=\"input-option-scroll\">\r\n @for (item of items; track $index) {\r\n <div class=\"input-option\" [class.item-disabled]=\"!itemIsEnabledFn(item)\" (click)=\"selectItem(item)\" [innerHTML]=\"itemDisplayFn(item)\">\r\n </div>\r\n }@empty {\r\n <div class=\"t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'uic-table-searcher',\r\n imports: [UicButtonComponent, FormsModule],\r\n templateUrl: './table-searcher.component.html',\r\n styleUrl: './table-searcher.component.scss'\r\n})\r\nexport class UicTableUicSearcherComponent {\r\n @Input() placeholder = '';\r\n @Input() label = 'Buscar';\r\n @Input() searchOnKeydown = false;\r\n @Output() filter = new EventEmitter<string>();\r\n text = \"\";\r\n\r\n reset(){\r\n this.text = '';\r\n this.filter.emit(this.text);\r\n }\r\n\r\n updateText(){\r\n if ( this.searchOnKeydown ){\r\n this.filter.emit(this.text);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"searcher\">\r\n <div class=\"fakeinput\">\r\n <i class=\"ri-search-line\"></i>\r\n <input [(ngModel)]=\"text\" type=\"text\" (ngModelChange)=\"updateText()\" (keydown.enter)=\"filter.emit(text)\" placeholder=\"{{placeholder}}\">\r\n </div>\r\n <ui-button (click)=\"filter.emit(text)\" color=\"black\" type=\"bordered\" rightIcon=\"ri-search-2-line\" size=\"m\">Buscar</ui-button>\r\n <ui-button (click)=\"reset()\" color=\"black\" type=\"bordered\" rightIcon=\"ri-close-circle-line\" size=\"m\">Limpiar</ui-button>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'uic-table-pagination',\r\n imports: [CommonModule, UicButtonComponent, FormsModule],\r\n templateUrl: './table-pagination.component.html',\r\n styleUrl: './table-pagination.component.scss'\r\n})\r\nexport class UicTablePaginationComponent {\r\n @Input() buttonSize: 's'|'m'| 'l' = 'm';\r\n @Input() currentPage = 1;\r\n @Input() totalPages = 1;\r\n @Input() size = 25;\r\n @Input() loading = false;\r\n visiblePages = 3;\r\n pagesInView:number[] = [];\r\n\r\n @Output() pageChange = new EventEmitter<number>();\r\n @Output() sizeChange = new EventEmitter<number>();\r\n\r\n get pages(): (number | string)[] {\r\n const pages: (number | string)[] = [];\r\n const range = Math.floor(this.visiblePages / 2);\r\n let start = Math.max(1, this.currentPage - range);\r\n let end = Math.min(this.totalPages, this.currentPage + range);\r\n\r\n if (end === this.totalPages) {\r\n start = Math.max(1, this.totalPages - (this.visiblePages - 1));\r\n }\r\n if (start === 1) {\r\n end = Math.min(this.totalPages, this.visiblePages);\r\n }\r\n\r\n if (start > 1) {\r\n pages.push(1);\r\n if (start > 2) pages.push('...');\r\n }\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < this.totalPages) {\r\n if (end < this.totalPages - 1) pages.push('...');\r\n pages.push(this.totalPages);\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n changePage(newPage: number) {\r\n if (newPage >= 1 && newPage <= this.totalPages && newPage !== this.currentPage) {\r\n this.currentPage = newPage;\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"table-page\">\r\n <ui-button [disabled]=\"loading || currentPage == 1\" (click)=\"changePage(currentPage - 1)\" [size]=\"buttonSize\" color=\"black\" type=\"bordered\" text=\"Anterior\" icon=\"ri-arrow-left-line\" > </ui-button> \r\n <div class=\"table-numbers\">\r\n @for (p of pages; track $index) {\r\n @if ( p!= '...' ){\r\n <button [disabled]=\"loading\" (click)=\"changePage(+p)\" [ngClass]=\"{'selected':currentPage==p}\" class=\"number\">{{p}}</button>\r\n } @else {\r\n <div class=\"space\">...</div>\r\n }\r\n \r\n }\r\n </div>\r\n <ui-button [disabled]=\"loading || currentPage == totalPages\" (click)=\"changePage(currentPage + 1)\" [size]=\"buttonSize\" color=\"black\" type=\"bordered\" text=\"Siguiente\" rightIcon=\"ri-arrow-right-line\" > </ui-button>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { TableList } from '../table.models';\r\n\r\n@Component({\r\n selector: 'uic-table-list',\r\n imports: [],\r\n templateUrl: './table-list.component.html',\r\n styleUrl: './table-list.component.scss'\r\n})\r\nexport class UicTableListComponent {\r\n @Input() list:TableList[]=[];\r\n}\r\n","@for (item of list; track $index) {\r\n <div class=\"list-item\">\r\n <i [class]=\"item.icon??'ri-capsule-fill'\"></i>\r\n <div class=\"list-item-data\">\r\n <div>{{item.text}}</div>\r\n <p>{{item.subtext}}</p>\r\n </div> \r\n </div>\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'nameInitials'\r\n})\r\nexport class UicNameInitsPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n if (!value){\r\n return \"\";\r\n }\r\n const names:string[] = value.split(\" \");\r\n if (names.length > 1){\r\n return names[0].charAt(0) + names[1].charAt(0).toUpperCase(); \r\n }else if ( names[0].length>=2){\r\n return names[0].substring(0,2).toUpperCase();\r\n }else{\r\n return '';\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableUser } from '../table.models';\r\nimport { UicNameInitsPipe } from '../../../pipes/name-inits.pipe';\r\n\r\n@Component({\r\n selector: 'uic-table-user',\r\n imports: [UicNameInitsPipe],\r\n templateUrl: './table-user.component.html',\r\n styleUrl: './table-user.component.scss'\r\n})\r\nexport class UicTableUserComponent {\r\n @Input() user:TableUser | undefined;\r\n}\r\n","@if (user) {\r\n <div class=\"user-row\">\r\n <div class=\"user-inits\">\r\n {{user.name | nameInitials}}\r\n </div>\r\n <div class=\"user-row-data\">\r\n <div>{{user.name}}</div>\r\n <p>{{user.id}}</p>\r\n </div>\r\n </div>\r\n}@else{\r\n -\r\n}","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const fadeAndRise = trigger('fadeAndRise', [\r\n transition(':enter',[style({opacity:0, maxHeight: '0px'}), animate('.3s ease', style({opacity:1,maxHeight: '200px'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","import { Component } from '@angular/core';\r\nimport { fadeAndRise } from '../../animations/fadeAndRise.animation';\r\n\r\n@Component({\r\n selector: 'ui-tooltip',\r\n imports: [],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n animations: [ fadeAndRise ]\r\n})\r\nexport class UicTooltipComponent {\r\n tooltip: string = '';\r\n left: number = 0;\r\n top: number = 0;\r\n}\r\n","<div @fadeAndRise class=\"tooltip\" \r\n [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" [innerHTML]=\"tooltip\">\r\n</div>","import { ApplicationRef, ComponentRef, createComponent, \r\n Directive, ElementRef, EmbeddedViewRef, EnvironmentInjector, HostListener, Input } from '@angular/core';\r\nimport { UicTooltipComponent } from '../components/tooltip/tooltip.component';\r\n\r\n\r\n@Directive({\r\n selector: '[tip]'\r\n})\r\nexport class UicToolTipDirective {\r\n\r\n\r\n @Input() tip = '';\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private readonly appRef: ApplicationRef, \r\n private readonly injector: EnvironmentInjector) {\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.componentRef === null && this.tip!='' && this.tip!=null) {\r\n this.componentRef = createComponent(UicTooltipComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const domElem = \r\n (this.componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement; \r\n document.body.appendChild(domElem);\r\n this.setTooltipComponentProperties();\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tip;\r\n const {left, right, bottom} = \t\t \t\r\n this.elementRef.nativeElement.getBoundingClientRect();\r\n this.componentRef.instance.left = (right - left) / 2 + left;\r\n this.componentRef.instance.top = bottom;\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.destroy();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { animate, keyframes, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\nexport const highlightRow = trigger('highlightRow', [\r\n state('highlighted', style({ backgroundColor: '#efe1f5' })),\r\n transition('* => highlighted', [\r\n animate('1000ms ease-in', keyframes([\r\n style({ backgroundColor: '#ffffff', offset: 0 }),\r\n style({ backgroundColor: '#efe1f5', offset: 0.3 }),\r\n style({ backgroundColor: '#ffffff', offset: 1.0 }),\r\n ]))\r\n ])\r\n ]);","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const animatedRow = trigger('animatedRow', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateY(-15px)' }),\r\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\r\n ]),\r\n transition(':leave', [\r\n animate('300ms ease-in', style({ opacity: 0, height: 0, padding: 0, margin: 0 }))\r\n ]),\r\n ]);","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TableAction, TableColums, TableRow, TableFilters, TableRowData } from './table.models';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UicTableUicSearcherComponent } from './table-searcher/table-searcher.component';\r\nimport { UicTablePaginationComponent } from './table-pagination/table-pagination.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicTableListComponent } from './table-list/table-list.component';\r\nimport { UicTableUserComponent } from './table-user/table-user.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\nimport { highlightRow } from '../../animations/highlightRow.animation';\r\nimport { animatedRow } from '../../animations/animatedRow.animation';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\n\r\n@Component({\r\n selector: 'ui-table',\r\n imports: [CommonModule, UicButtonComponent, UicTableUserComponent, UicTableListComponent, UicTableUicSearcherComponent, \r\n UicTablePaginationComponent,UicToolTipDirective,UicCheckboxComponent, FormsModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n animations: [ highlightRow, animatedRow ]\r\n})\r\nexport class UicTableComponent {\r\n \r\n @Input() columns:TableColums[] = [];\r\n @Input() data:TableRow[] = [];\r\n @Input() loading = false;\r\n @Input() pages = 0;\r\n @Input() size = 25;\r\n @Input() squeletonRows = 5;\r\n @Input() buttonSize: 'm'|'l'|'s' = 'm';\r\n @Input() highlightedId: string |number = 0;\r\n @Input() headerText = '';\r\n @Input() totalItems = 0;\r\n \r\n @Input() searchEnabled = true;\r\n @Input() searchLabel = 'Buscar';\r\n @Input() searchPlaceholder = 'Buscar';\r\n @Input() striped = false;\r\n @Input() showPagination = true;\r\n @Input() showEmptyMessage = false;\r\n @Input() emptyMessage = 'No hay elementos';\r\n \r\n \r\n \r\n @Output() action = new EventEmitter<TableAction>();\r\n @Output() update = new EventEmitter<TableFilters>();\r\n @Output() checkedChange = new EventEmitter<(string|number)[]>(); \r\n \r\n checkedIds = new Set<string | number >();\r\n sortKey = '';\r\n sortAsc = true;\r\n filter = '';\r\n page=1;\r\n\r\n getValue(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.value??'-';\r\n }\r\n\r\n getFontColor(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return 'trc-' + (col?.textColor??'black');\r\n }\r\n getBackgroundColor(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.color??'transparent';\r\n }\r\n\r\n isValidRule(data:TableRowData[],key:string[]|undefined):boolean{\r\n if ( !key ) return true;\r\n let valid = true;\r\n\r\n key.forEach(k => {\r\n const col = data.find(col => col.key == k);\r\n valid = valid && !!(col?.value);\r\n });\r\n \r\n return valid;\r\n }\r\n\r\n getIcon(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return '<i class=\"' + col?.icon + '\"></i>';\r\n }\r\n\r\n getList(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.list??[];\r\n }\r\n getUser(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.user;\r\n }\r\n\r\n sortClick(key:string){\r\n if ( this.sortKey != key ){\r\n this.sortKey = key;\r\n this.sortAsc = true;\r\n }else if ( this.sortAsc ){\r\n this.sortAsc = false;\r\n }else{\r\n this.sortKey = '';\r\n this.sortAsc = true;\r\n }\r\n this.updateData();\r\n }\r\n sizeChabge(newSize:number){\r\n this.size = newSize;\r\n this.updateData(); \r\n }\r\n pageChage(newPage:number){\r\n this.page = newPage;\r\n this.updateData();\r\n }\r\n search(text:string){\r\n this.filter = text;\r\n this.updateData();\r\n }\r\n updateData(){\r\n this.update.emit({\r\n sortBy:this.sortKey,\r\n isSortAscending:this.sortAsc,\r\n pageNumber:this.page,\r\n pageSize:this.size,\r\n filter: this.filter\r\n })\r\n }\r\n \r\n toggleSelection(id: string|number, checked: boolean){\r\n if (checked) {\r\n this.checkedIds.add(id);\r\n } else {\r\n this.checkedIds.delete(id);\r\n }\r\n this.areAllSelected();\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n \r\n toggleAll(checked: boolean) {\r\n if (checked) {\r\n this.data.forEach(item => this.checkedIds.add(item.id));\r\n } else {\r\n this.checkedIds.clear();\r\n }\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n areAllSelected() {\r\n this.allSelected = this.checkedIds.size === this.data.length;\r\n }\r\n \r\n allSelected = false;\r\n ngOnChanges() {\r\n this.areAllSelected();\r\n }\r\n\r\n doAction(rowId:string|number,key:string){\r\n this.action.emit({rowId,key});\r\n }\r\n\r\n\r\n resetCheckedIds() {\r\n this.checkedIds.clear();\r\n this.checkedChange.emit([]);\r\n }\r\n}\r\n","<div class=\"table-filters\">\r\n @if (searchEnabled) {\r\n <uic-table-searcher (filter)=\"search($event)\" [placeholder]=\"searchPlaceholder\" ></uic-table-searcher>\r\n }\r\n <div class=\"filter-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n</div>\r\n<div class=\"table-wrapper\">\r\n @if (headerText) {\r\n <div class=\"table-topbar\"> {{headerText}} <span class=\"hightlited-note\"> {{totalItems}} </span> </div>\r\n }\r\n <div class=\"table-container\"> \r\n <table [class.striped]=\"striped\">\r\n <thead>\r\n <tr>\r\n @for (header of columns; track $index) {\r\n <th>\r\n <div class=\"th-wrap\">{{header.label.toUpperCase() }} \r\n @if (header.sortEnable) {\r\n <div (click)=\"sortClick(header.key)\" [ngClass]=\"{'sort-active':header.key == sortKey}\">\r\n <i [class]=\"(sortAsc||header.key != sortKey)?'ri-arrow-down-line':'ri-arrow-up-line'\"></i> \r\n </div>\r\n }\r\n @if (header.type=='checkbox') {\r\n <ui-checkbox [(ngModel)]=\"allSelected\" (ngModelChange)=\"toggleAll($event)\"></ui-checkbox>\r\n }\r\n </div>\r\n </th> \r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n\r\n @if (loading) {\r\n @for (item of [].constructor(squeletonRows); track $index) {\r\n <tr class=\"\">\r\n @for (header of columns; track $index) {\r\n <td> <div class=\"row-loader\"></div> </td>\r\n }\r\n </tr> \r\n }\r\n } @else {\r\n @for (row of data; track row.id) {\r\n <tr [@highlightRow]=\"highlightedId === row.id ? 'highlighted' : null\" [class.tr-highlighted]=\"row.highlighted\">\r\n @for (header of columns; track $index) {\r\n <!-- TIPOS DE HEADERS -->\r\n <td [class]=\"getFontColor(row.data,header.key)\">\r\n @if (header.type == 'text') {\r\n {{ getValue(row.data,header.key) }} \r\n }\r\n @if (header.type == 'icon-list') {\r\n <div class=\"table-icon-wrap\">\r\n @for (alert of getList(row.data,header.key); track $index) {\r\n <i [tip]=\"alert.text\" [class]=\"alert.icon + ' alert'\" ></i>\r\n }\r\n </div>\r\n }\r\n @else if (header.type == 'list'){\r\n <uic-table-list [list]=\"getList(row.data,header.key)\"></uic-table-list> \r\n }\r\n @else if (header.type == 'user'){\r\n <uic-table-user [user]=\"getUser(row.data,header.key)\"></uic-table-user> \r\n }\r\n @else if (header.type == 'checkbox'){\r\n <ui-checkbox [ngModel]=\"checkedIds.has(row.id)\" (ngModelChange)=\"toggleSelection(row.id,$event)\" ></ui-checkbox> \r\n }\r\n @else if (header.type == 'actions') { \r\n <div class=\"table-actions\">\r\n @for (btn of header.actions; track $index) {\r\n @if (isValidRule(row.data,btn.rule)) {\r\n <ui-button \r\n [disabled]=\"loading\"\r\n [tip]=\"btn.tooltip??''\"\r\n size=\"s\"\r\n [iconOnly]=\"btn.text==null\"\r\n [text]=\"btn.text??''\"\r\n [icon]=\"btn.icon??''\"\r\n [color]=\"btn.color\"\r\n (click)=\"doAction(row.id,btn.key)\">\r\n </ui-button> \r\n }\r\n } \r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }@empty {\r\n @if (showEmptyMessage) {\r\n <tr> \r\n <td [colSpan]=\"columns.length\">\r\n <div class=\"empty\">{{emptyMessage}} </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n \r\n @if (showPagination) {\r\n <uic-table-pagination \r\n [loading]=\"loading\" \r\n [totalPages]=\"pages\" \r\n [size]=\"size\"\r\n [buttonSize]=\"buttonSize\"\r\n (sizeChange)=\"sizeChabge($event)\"\r\n (pageChange)=\"pageChage($event)\">\r\n </uic-table-pagination>\r\n }\r\n</div>","import { ButtonColor } from \"../button/button.component\";\r\n\r\nexport interface TableColums{\r\n label: string;\r\n key: string\r\n type: ColumnTypes;\r\n sortEnable?: boolean;\r\n actions?: TableButton[];\r\n}\r\nexport interface TableButton{\r\n key: string;\r\n color: ButtonColor;\r\n icon?: string;\r\n text?: string;\r\n tooltip?: string;\r\n rule?: string[];\r\n}\r\nexport interface TableRow{\r\n id: number|string;\r\n data:TableRowData[];\r\n highlighted?:boolean; \r\n}\r\n\r\nexport interface TableRowData{\r\n key: string;\r\n value?: string|number;\r\n list?:TableList[];\r\n user?:TableUser;\r\n icon?: string;\r\n textColor?: TableTextColors;\r\n color?: BackgroundColors;\r\n}\r\nexport interface TableList{text:string; subtext?:string,icon?:string; color?:string};\r\nexport interface TableUser{name:string;id:string;photo?:string,icon?:string};\r\nexport interface TableAction{\r\n rowId: number|string;\r\n key: string;\r\n}\r\nexport type ColumnTypes = 'actions' | 'text' | 'list' |'user' |'checkbox' | 'icon-list';\r\nexport type TableTextColors = 'primary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' ;\r\nexport type BackgroundColors = 'primary' | 'secondary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' | 'transparent' | 'white' ;\r\nexport interface TableFilters {\r\n sortBy:string;\r\n isSortAscending:boolean;\r\n pageNumber:number;\r\n pageSize:number;\r\n filter: string;\r\n }","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\n\r\n\r\n@Component({\r\n selector: 'ui-alert',\r\n imports: [],\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.scss'\r\n})\r\nexport class UiAlertComponent implements OnInit{\r\n @Input() alert!: Alert;\r\n @Output() closeAlert = new EventEmitter<number>();\r\n \r\n interval: any;\r\n progressValue = 0;\r\n animationIntevalMs = 100;\r\n pauseAnimation = false;\r\n id = 0;\r\n\r\n\r\n ngOnInit(){\r\n this.id = this.alert.id;\r\n if(this.alert.duration && this.alert.duration > 0){\r\n const duration = this.alert.duration;\r\n let count = 0;\r\n this.interval = setInterval(() => {\r\n count = this.pauseAnimation? count : count + this.animationIntevalMs;\r\n this.progressValue = Math.floor((count / duration)*100);\r\n if (this.progressValue > 100){\r\n this.close();\r\n }\r\n }, this.animationIntevalMs);\r\n\r\n }\r\n }\r\n\r\n close(){\r\n clearInterval( this.interval );\r\n this.closeAlert.emit(this.id);\r\n }\r\n\r\n \r\n}\r\n","<div [class]=\"'alert ' + alert.type + ' ' + (alert.style??'filled')\" >\r\n @if (alert.showProgressBar) {\r\n <div class=\"alert-process\">\r\n <div class=\"alert-process-bar\" [style.width.%]=\"progressValue\"></div>\r\n </div>\r\n }\r\n <div class=\"alert-body\">\r\n <button class=\"close\" (click)=\"close()\"> ✕ </button>\r\n @if (alert.icon) {\r\n <i [class]=\"'highlighted ' + alert.icon\"></i>\r\n }\r\n <div>\r\n <div class=\"toast-title highlighted\">{{alert.title}}</div>\r\n <div class=\"toast-body\">{{alert.message}}</div>\r\n @if ( alert.okButtonText || alert.cancelButtonText){\r\n <div class=\"toast-buttons \">\r\n @if ( alert.okButtonText ) {\r\n <button style=\"font-weight: 500;\">{{alert.okButtonText}}</button>\r\n }\r\n @if ( alert.cancelButtonText ){\r\n <button (click)=\"close()\">{{alert.cancelButtonText}}</button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { Alert } from './alert.model';\r\n\r\nlet nextId = 1;\r\n\r\nexport function createSuccessAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'success',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createErrorAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'error',\r\n duration: 5000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createWarningAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'warning',\r\n duration: 4000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createInfoAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'info',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Alert, AlertConfigParams } from '../components/push-alerts/alert.model';\r\nimport { createErrorAlert, createSuccessAlert } from '../components/push-alerts/alert.helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicPushAlertService {\r\n\r\n autoIncId = 0;\r\n private readonly alerts$ = new Subject<Alert>();\r\n\r\n get stream() {\r\n return this.alerts$.asObservable();\r\n }\r\n\r\n show(alertData:AlertConfigParams) {\r\n this.autoIncId++;\r\n const alert: Alert = {...alertData,id:this.autoIncId};\r\n this.alerts$.next( alert );\r\n }\r\n\r\n success(message: string, options?: Partial<Alert>) {\r\n this.show(createSuccessAlert(message, options));\r\n }\r\n\r\n error(message: string, options?: Partial<Alert>) {\r\n this.show(createErrorAlert(message, options));\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\nimport { UicPushAlertService } from '../../../services/push-alert.service';\r\nimport { UiAlertComponent } from '../alert/alert.component';\r\n\r\n@Component({\r\n selector: 'ui-alert-container',\r\n imports: [UiAlertComponent],\r\n templateUrl: './alert-container.component.html',\r\n styleUrl: './alert-container.component.scss'\r\n})\r\nexport class UicAlertContainerComponent implements OnInit {\r\n alerts: Alert[] = [];\r\n\r\n constructor(private readonly alertService: UicPushAlertService) {}\r\n\r\n ngOnInit() {\r\n this.alertService.stream.subscribe( alert => {\r\n this.alerts.push(alert);\r\n });\r\n }\r\n\r\n dismis(id:number){\r\n const idx = this.alerts.findIndex(f=>f.id == id);\r\n this.alerts.splice(idx,1);\r\n }\r\n\r\n}\r\n","<div class=\"alert-container\">\r\n @for (alert of alerts; track alert.id){\r\n <ui-alert\r\n (closeAlert)=\"dismis($event)\"\r\n [alert]=\"alert\">\r\n </ui-alert>\r\n } \r\n</div>\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const pushTop = trigger('pushTop', [\r\n transition(':enter',[style({opacity:0, transform: 'translateY(20px)'}), animate('.3s ease', style({opacity:1, transform: 'translateY(0)'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0, transform: 'translateY(-20px)'}))])\r\n ]);","import { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nexport const sideModal = trigger('sideModal', [\r\n state('visible', style({ transform: 'translateX(0)' })),\r\n state('hidden', style({ transform: 'translateX(100%)' })),\r\n\r\n // animación al CREARSE\r\n transition('void => visible', [\r\n style({ opacity: .8, transform: 'translateX(100%)' }),\r\n animate('.5s ease')\r\n ]),\r\n\r\n // animación al CERRAR\r\n transition('visible => hidden', [\r\n animate('.5s ease')\r\n ])\r\n])\r\n\r\nexport const fadeBackdrop =trigger('fadeBackdrop', [\r\n state('visible', style({ opacity: 1 })),\r\n state('hidden', style({ opacity: 0 })),\r\n transition('void => visible', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out')\r\n ]),\r\n transition('visible => hidden', [\r\n animate('300ms ease-in')\r\n ])\r\n ])","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const simpleFade = trigger('simpleFade', [\r\n transition(':enter',[style({opacity:0}), animate('.3s ease', style({opacity:1}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","export const MODAL_DATA = 'MODAL_DATA';\r\nexport const MODAL_COMPONENT = 'MODAL_COMPONENT';\r\nexport const MODAL_CONFIG = 'MODAL_CONFIG';\r\nexport const MODAL_CLOSE_EVENT = 'modalClosed'; \r\nexport const MODAL_CLOSE_REQUEST = 'modalCloserRequested'; ","import { OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { UicModalService } from \"./modal.service\";\r\n\r\nexport class UiModalRef<T = any> {\r\n private readonly _afterClosed = new Subject<{status:boolean, data: T | null}>();\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly modalService: UicModalService\r\n ) {}\r\n\r\n close(result: T | null = null): void {\r\n this.modalService.close(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n closeFloating(result: T | null = null): void {\r\n this.modalService.closeFloating(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n afterClosed(): Observable<{status:boolean, data: T | null}> {\r\n return this._afterClosed.asObservable();\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { ModalConfig } from './modalconfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { pushTop } from '../../../animations/pushTop.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\n\r\n\r\n@Component({\r\n selector: 'ui-modal',\r\n imports: [CommonModule,PortalModule,UicButtonComponent],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations:[pushTop]\r\n})\r\nexport class UicModalComponent {\r\n myConfig:ModalConfig = {};\r\n ready = false;\r\n title='';\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: ModalConfig,\r\n private readonly injector: Injector\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( !this.congif.preventCloseingOutside === true ){\r\n this.modalRef.closeFloating(null);\r\n }\r\n }\r\n\r\n close() {\r\n this.modalRef.closeFloating(null);\r\n }\r\n}\r\n","<div class=\"backdrop\" (click)=\"closeOuside()\"> \r\n <div @pushTop class=\"modal\" \r\n [class]=\"myConfig.size\"\r\n (click)=\"$event.stopPropagation()\">\r\n \r\n @if ( myConfig.title) {\r\n <div class=\"modal-header\">\r\n {{myConfig.title}}\r\n <ui-button color=\"red\" type=\"ghost\" icon=\"ri-close-large-line\" (click)=\"close()\" [iconOnly]=\"true\"></ui-button>\r\n </div>\r\n }\r\n <div class=\"modal-body\" [class.body-padding]=\"myConfig.title!='' && !myConfig.noPadding\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n </div>\r\n\r\n </div>\r\n</div>","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { SideModalConfig } from './sideModalConfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { fadeBackdrop, sideModal } from '../../../animations/sideModal.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\nimport { UicModalService } from '../../../services/modal.service';\r\n\r\n\r\n@Component({\r\n selector: 'ui-side-modal',\r\n imports: [PortalModule,UicButtonComponent],\r\n templateUrl: './side-modal.component.html',\r\n styleUrl: './side-modal.component.scss',\r\n animations: [ sideModal, fadeBackdrop ]\r\n})\r\nexport class UicSideModalComponent {\r\n overlayRef!: OverlayRef; // lo setea el servicio\r\n state: 'visible' | 'hidden' = 'visible';\r\n show = true;\r\n myConfig:SideModalConfig = {};\r\n ready = false;\r\n title='';\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: SideModalConfig,\r\n private readonly injector: Injector,\r\n private readonly modal:UicModalService\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.overlayRef){\r\n this.overlayRef.hostElement.addEventListener(MODAL_CLOSE_REQUEST, () => {\r\n this.close();\r\n });\r\n }\r\n}\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( !this.congif.preventCloseingOutside === true ){\r\n this.close();\r\n }\r\n }\r\n\r\n close() {\r\n this.state = 'hidden';\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (event.toState === 'hidden' && event.triggerName === 'sideModal') {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n save(){\r\n this.modal.triggerSave();\r\n }\r\n}\r\n","<div [@fadeBackdrop]=\"state\" class=\"backdrop\" (click)=\"closeOuside()\"> \r\n</div>\r\n<div [@sideModal]=\"state\" \r\n (@sideModal.done)=\"onAnimationDone($event)\" \r\n class=\"sidemodal\" \r\n [style.padding-top]=\"myConfig.headerEnabled?'28px':'0'\"\r\n [style.width]=\"myConfig.width??'60%'\" \r\n (click)=\"$event.stopPropagation()\">\r\n @if (myConfig.headerEnabled) {\r\n <ui-button class=\"close-icon\" (click)=\"close()\" icon=\"ri-close-large-line\" type=\"ghost\" color=\"black\" [iconOnly]=\"true\" size=\"m\"></ui-button>\r\n }\r\n <div class=\"sidemodal-body\" [class.body-padding]=\"myConfig.title!=''\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n </div>\r\n @if (myConfig.footerEnabled) {\r\n <div class=\"sidemodal-footer\">\r\n @if (myConfig.showCancelButton) {\r\n <ui-button (click)=\"close()\" color=\"black\" size=\"l\" type=\"bordered\" icon=\"ri-close-line\">{{myConfig.footerCancelButtonText??'Cancelar'}}</ui-button>\r\n }\r\n <ui-button (click)=\"save()\" color=\"black\" size=\"l\" rightIcon=\"ri-check-line\">{{myConfig.footerOkButtonText??'Siguiente'}}</ui-button>\r\n </div>\r\n }\r\n</div>","import { EnvironmentInjector, inject, Injectable, Injector, Type } from '@angular/core';\r\nimport { MODAL_CLOSE_EVENT, MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG } from './modal.constant';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { UiModalRef } from './modaRef';\r\nimport { ModalConfig } from '../components/modal/floating-modal/modalconfig.model';\r\nimport { SideModalConfig } from '../components/modal/side-modal/sideModalConfig.model';\r\nimport { UicModalComponent } from '../components/modal/floating-modal/modal.component';\r\nimport { UicSideModalComponent } from '../components/modal/side-modal/side-modal.component';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicModalService {\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly envInjector = inject(EnvironmentInjector);\r\n\r\n openFloatingModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,true);\r\n }\r\n\r\n openSideModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: SideModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,false);\r\n }\r\n\r\n private openModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig|SideModalConfig = {},\r\n isFloating = false\r\n ){\r\n const overlayConfig = this.createOverlayConfig(isFloating);\r\n const overlayRef = this.overlay.create(overlayConfig);\r\n const modalRef = new UiModalRef(overlayRef, this);\r\n const injector = this.createModalInjector(overlayRef,modalRef,component,config); \r\n if ( isFloating){\r\n const modalPortal = new ComponentPortal(UicModalComponent, null, injector);\r\n overlayRef.attach(modalPortal);\r\n }else{\r\n const modalPortal = new ComponentPortal( UicSideModalComponent, null, injector);\r\n const componentRef = overlayRef.attach(modalPortal);\r\n componentRef.instance.overlayRef = overlayRef;\r\n }\r\n return modalRef; \r\n }\r\n\r\n close(overlayRef: OverlayRef, result: any = null): void { \r\n overlayRef.hostElement.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_REQUEST, { detail: result })\r\n );\r\n } \r\n\r\n closeFloating(overlayRef: OverlayRef, result: any = null){\r\n overlayRef.backdropElement?.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_EVENT, { detail: result })\r\n );\r\n overlayRef.dispose();\r\n }\r\n\r\n private readonly _save$ = new Subject<void>();\r\n save$ = this._save$.asObservable();\r\n\r\n triggerSave(): void {\r\n this._save$.next();\r\n }\r\n\r\n private createOverlayConfig(isFloating: boolean): OverlayConfig {\r\n const positionStrategy = isFloating \r\n ? this.overlay.position().global().left()\r\n : this.overlay.position().global().right();\r\n\r\n return {\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-dark-backdrop',\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n disposeOnNavigation: true, \r\n };\r\n }\r\n\r\n private createModalInjector<TComponent>(\r\n overlayRef: OverlayRef,\r\n modalRef: UiModalRef,\r\n component: Type<TComponent>,\r\n config: ModalConfig | SideModalConfig\r\n ): Injector {\r\n return Injector.create({\r\n providers: [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: UiModalRef, useValue: modalRef },\r\n { provide: MODAL_COMPONENT, useValue: component },\r\n { provide: MODAL_CONFIG, useValue: config }\r\n ],\r\n parent: this.envInjector,\r\n });\r\n }\r\n}\r\n\r\n","import { Component, Inject } from '@angular/core';\r\nimport { AlertData, AlertResponseData } from './tiny-alert.model';\r\nimport { MODAL_DATA } from '../../services/modal.constant';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UiModalRef } from '../../services/modaRef';\r\n\r\n@Component({\r\n selector: 'ui-tiny-alert',\r\n imports: [UicButtonComponent],\r\n templateUrl: './tiny-alert.component.html',\r\n styleUrl: './tiny-alert.component.scss'\r\n})\r\nexport class TinyAlertComponent {\r\n data:AlertData;\r\n constructor(\r\n @Inject(MODAL_DATA) inData:{alert:AlertData,editing:boolean},\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef )\r\n {\r\n this.data = inData.alert;\r\n }\r\n response:AlertResponseData = {};\r\n\r\n\r\n close(value:boolean){\r\n this.modalRef.closeFloating(value?this.response:null);\r\n }\r\n}\r\n","<div class=\"alert-wrapper\">\r\n @if (data.iconPath != '') {\r\n <img [src]=\"data.iconPath\" alt=\"\"> \r\n }\r\n <h3> {{data.title}} </h3>\r\n <div class=\"alert-body\" [innerHTML]=\"data.body\"> </div>\r\n <div class=\"card-buttons\">\r\n @if (data.showCancelButton) {\r\n <ui-button (click)=\"close(false)\" type=\"bordered\" [color]=\"data.cancelButtonColor??'primary'\" size=\"l\"> {{data.cancelButtonText??'Cancelar'}} </ui-button>\r\n }\r\n <ui-button (click)=\"close(true)\" [color]=\"data.okButtonColor??'primary'\" size=\"l\"> {{data.okButtonText??'Continuar'}} </ui-button>\r\n </div>\r\n <button class=\"floating-close\" (click)=\"close(false)\" >\r\n <i class=\"ri-close-line\"></i>\r\n </button>\r\n</div>\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { AlertData, AlertResponse } from '../components/tiny-alert/tiny-alert.model';\r\nimport { TinyAlertComponent } from '../components/tiny-alert/tiny-alert.component';\r\nimport { UicModalService } from './modal.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicTinyAlertService {\r\n\r\n private readonly modal = inject(UicModalService);\r\n\r\n showAlert(data: AlertData): Promise<AlertResponse> {\r\n return new Promise<AlertResponse>((resolve) => {\r\n this.modal.openFloatingModal(TinyAlertComponent, {\r\n data: { alert: data }\r\n }).afterClosed().subscribe(result => {\r\n resolve({\r\n value: result?.status,\r\n data: result?.data\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","// COMPONENTS\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/inputs/checkbox/checkbox.component';\r\nexport * from './lib/components/inputs/toggle-button/toggle-button.component';\r\nexport * from './lib/components/dynamic-form/form-wrapper/form-wrapper.component';\r\nexport * from './lib/components/inputs/input/input.component';\r\nexport * from './lib/components/inputs/date-picker/date-picker.component';\r\nexport * from './lib/components/inputs/searcher/searcher.component';\r\nexport * from './lib/components/inputs/select/select.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/table/table.models';\r\nexport * from './lib/components/skeleton-loader/skeleton-loader.component';\r\nexport * from './lib/components/push-alerts/alert-container/alert-container.component';\r\nexport * from './lib/components/inputs/ui-slider/ui-slider.component';\r\n\r\n// ANIMATIONS\r\nexport * from './lib/animations/animatios.index';\r\n\r\n\r\n// FORMULARIOS\r\nexport * from './lib/components/dynamic-form/form.models';\r\n\r\n// SERVICIOS\r\nexport * from './lib/services/modal.service';\r\nexport * from './lib/services/modaRef';\r\nexport * from './lib/services/modal.constant';\r\nexport * from './lib/services/tiny-alert.service';\r\nexport * from './lib/components/tiny-alert/tiny-alert.model';\r\nexport * from './lib/services/push-alert.service';\r\n\r\n// PIPES\r\nexport * from './lib/pipes/name-inits.pipe';\r\n\r\n// DIRECTIVES\r\nexport * from './lib/directives/tool-tip.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["base","i1","i2","i1.UicPushAlertService","i1.UicModalService"],"mappings":";;;;;;;;;;;;;MASa,kBAAkB,CAAA;IACpB,IAAI,GAAC,EAAE;IACP,IAAI,GAAC,EAAE;IACP,SAAS,GAAC,EAAE;IACZ,QAAQ,GAAC,KAAK;IACd,QAAQ,GAAC,KAAK;IACd,OAAO,GAAC,KAAK;IACb,IAAI,GAA2B,GAAG;IAClC,IAAI,GAAoC,QAAQ;IAChD,KAAK,GAAe,SAAS;IAEtC,eAAe,GAAG,EAAE;IAEpB,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI;;wGAdzE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT/B,o8BA2BS,EAAA,MAAA,EAAA,CAAA,0lOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBG,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,o8BAAA,EAAA,MAAA,EAAA,CAAA,0lOAAA,CAAA,EAAA;8BAKd,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;SEfa,mBAAmB,GAAA;AACjC,IAAA,MACe,iBAAiB,CAAA;AACrB,QAAA,KAAK;AACJ,QAAA,WAAW,GAAG,IAAI,YAAY,EAAK;AAE7C,QAAA,QAAQ,GAAuB,MAAK,GAAG;AACvC,QAAA,SAAS,GAAe,MAAK,GAAG;AAEhC,QAAA,UAAU,CAAC,GAAM,EAAA;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;AAGlB,QAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,QAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,QAAA,gBAAgB,CAAE,UAAmB,EAAA;;;AAIrC,QAAA,YAAY,CAAC,KAAQ,EAAA;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,SAAS,EAAE;;4GA3BL,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;gGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;gGAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;sBAD/B;kCAEU,KAAK,EAAA,CAAA;0BAAb;oBACS,WAAW,EAAA,CAAA;0BAApB;;AA6BH,IAAA,OAAO,iBAAiB;AACzB;;AChCD,MAAMA,MAAI,GAAG,mBAAmB,EAAW;AAerC,MAAO,oBAAqB,SAAQA,MAAI,CAAA;AACnC,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;IAChC,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;IACR,IAAI,GAAqB,OAAO;IAChC,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IAGxB,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAC;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;wGAbvB,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EARrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA;AACR,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBH,q6CAiDA,EAAA,MAAA,EAAA,CAAA,spEAAA,EAAA,2lIAAA,CAAA,EAAA,CAAA;;4FD7Ba,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,EAAE,EAGD,SAAA,EAAA;AACR,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,q6CAAA,EAAA,MAAA,EAAA,CAAA,spEAAA,EAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MEpBU,iBAAiB,CAAA;IACnB,OAAO,GAAG,KAAK;AACd,IAAA,aAAa,GAAG,IAAI,YAAY,EAAW;IAC5C,QAAQ,GAAG,KAAK;IAChB,WAAW,GAAG,EAAE;IAChB,KAAK,GAAG,EAAE;IAInB,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;wGAZ5B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,oNCR9B,iMAQS,EAAA,MAAA,EAAA,CAAA,qlCAAA,EAAA,2lIAAA,CAAA,EAAA,CAAA;;4FDAI,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,QAAA,EAAA,iMAAA,EAAA,MAAA,EAAA,CAAA,qlCAAA,EAAA,2lIAAA,CAAA,EAAA;8BAKF,OAAO,EAAA,CAAA;sBAAf;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AELH,MAAMA,MAAI,GAAG,mBAAmB,EAAY;AAetC,MAAO,kBAAmB,SAAQA,MAAI,CAAA;AACjC,IAAA,IAAI,GAAG,EAAE,CAAC;AACV,IAAA,SAAS,GAA0B,SAAS,CAAC;AAC7C,IAAA,YAAY,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,GAAoB,GAAG,CAAC;;IAE5B,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;IACR,YAAY,GAAG,KAAK;IAC7B,SAAS,GAAG,iBAAiB;;IAEpB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAqB,EAAE;AAER,IAAA,gBAAgB;AACvC,IAAA,UAAU;AAClB,IAAA,gBAAgB,GAAuB;AACrC,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3E,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;KAC5E;IAED,cAAc,GAA2B,IAAI;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;IAEvD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,iBAAiB;;AAG1D,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;;;;IAKjF,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE;;AAGlB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;AACjE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW;AAE/B,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,CAAC,QAAQ;aAClB,mBAAmB,CAAC,KAAK;AACzB,aAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB;aACnC,sBAAsB,CAAC,IAAI;aAC3B,QAAQ,CAAC,KAAK,CAAC;QAEpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,KAAK;AACL,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;YACjD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;;AAGnE,IAAA,YAAY,CAAC,MAA6B,EAAA;QACxC,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;QAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,IAAE,IAAI,CAAC;;IAIrC,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAK;;;AAIlB,IAAA,UAAU,CAAC,KAA6B,EAAA;AAC/C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,IAAI;;wGAtF/D,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EARlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;SACF,ECrBH,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q6FA8DM,kpIDlDM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAWX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACZ,OAAA,EAAA,CAAC,YAAY,CAAC,EAGZ,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,q6FAAA,EAAA,MAAA,EAAA,CAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAE8B,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB;;;ME7BlB,iBAAiB,CAAA;AACnB,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;AAChC,IAAA,YAAY,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,GAAoB,GAAG,CAAC;;IAE5B,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;;IAER,QAAQ,GAAG,KAAK;AACf,IAAA,WAAW,GAAI,IAAI,YAAY,EAAW;IAGpD,UAAU,GAAG,KAAK;IAClB,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;SACxB,EAAE,GAAG,CAAC;;wGApBE,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV9B,ojCA+BA,EAAA,MAAA,EAAA,CAAA,2lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzBa,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIZ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAE,YAAY,CAAC,EAAA,QAAA,EAAA,ojCAAA,EAAA,MAAA,EAAA,CAAA,2lIAAA,CAAA,EAAA;8BAKf,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;AEhBH,MAAMA,MAAI,GAAG,mBAAmB,EAAU;AAepC,MAAO,kBAAmB,SAAQA,MAAI,CAAA;AACjC,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;IAChC,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;IAER,GAAG,GAAG,CAAC;IACP,GAAG,GAAG,GAAG;IACT,IAAI,GAAG,CAAC;IACR,WAAW,GAAG,CAAC;IACxB,OAAO,GAAa,EAAE;IAEb,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IAGxB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACxB,YAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;;;AAI9F,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;;IAGhE,iBAAiB,CAAC,OAAe,EAAE,EAAe,EAAA;QAChD,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,EAAE;YAAG;AAEV,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;AAG5E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;QAE5D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG/B,QAAQ,GAAG,KAAK;AACR,IAAA,WAAW;IAEnB,WAAW,CAAC,KAAiB,EAAE,KAAkB,EAAA;QAC/C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;;AAI9C,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;YAAE;QAC3D,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;;IAIzD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;;wGA9DnB,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EARnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACR,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBH,47CA4CA,EAAA,MAAA,EAAA,CAAA,4wCAAA,EAAA,2lIAAA,CAAA,EAAA,CAAA;;4FDxBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,EAAI,EAGH,SAAA,EAAA;AACR,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,47CAAA,EAAA,MAAA,EAAA,CAAA,4wCAAA,EAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAwCD,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;gBAO9C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,kBAAkB;;;AEjElC,MAAM,IAAI,GAAG,mBAAmB,EAAU;AAepC,MAAO,sBAAuB,SAAQ,IAAI,CAAA;AACrC,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;AAChC,IAAA,YAAY,GAAG,EAAE,CAAC;;IAElB,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;;IAER,QAAQ,GAAG,KAAK;IAChB,GAAG,GAAG,EAAE;IACR,GAAG,GAAG,EAAE;AAEc,IAAA,gBAAgB;AACvC,IAAA,UAAU;;AAGlB,IAAA,MAAM,GAAY,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1H,IAAA,KAAK,GAAS,IAAI,IAAI,EAAE;IACxB,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;IACvC,OAAO,GAAY,IAAI;IACvB,OAAO,GAAW,IAAI;;IAGtB,IAAI,GAAiB,MAAM;IAC3B,WAAW,GAAa,IAAI;AAC5B,IAAA,YAAY,GAAG,IAAI,IAAI,EAAE;AACzB,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW;IAC/B,aAAa,GAAG,IAAI;AACpB,IAAA,UAAU,GAAmB,EAAE,CAAC;IAChC,WAAW,GAAU,EAAE;AAEN,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;IAEvD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAIrD,IAAA,gBAAgB,GAAuB;AACrC,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3E,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;KAC5E;IAED,YAAY,GAAA;QACV,IAAK,IAAI,CAAC,QAAQ;YAAG;AAErB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;;AAGtB,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,CAAC,QAAQ;aAClB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;AACvE,aAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB;aACnC,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;QAEpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;AAChB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;YACjD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAErE,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;;IAGpB,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAK;;;AAI3B,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;;IAGvE,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE;QACrD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;;IAGxD,QAAQ,GAAA;QACN,MAAM,KAAK,GAAsB,EAAE;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAEhF,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAErD,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YACnD,MAAM,IAAI,GAAoB,EAAE;AAChC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,gBAAA,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ;AAC/C,sBAAE,IAAI,IAAI,CAAC,OAAO;sBAChB,IAAI,CACT;gBACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;;AAExC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAElB,QAAA,OAAO,KAAK;;;IAId,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC/C,YAAA,MAAM,WAAW,GAAG,KAAK,GAAE,CAAC,EAAE,GAAG,CAAC;YAClC,IAAK,KAAK,EAAC;gBACT,IAAI,CAAC,YAAY,EAAE;;YAErB,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;AAC9F,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;;AAC5B,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;aAC3E;AACL,YAAA,IAAI,CAAC,YAAY,IAAE,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;;IAI5C,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE;AAChD,YAAA,MAAM,WAAW,GAAG,KAAK,GAAE,CAAC,EAAE,GAAG,CAAC;YAClC,IAAK,KAAK,EAAC;gBACT,IAAI,CAAC,YAAY,EAAE;;YAErB,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;AAC9F,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;;AAC5B,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;aAC3E;AACL,YAAA,IAAI,CAAC,YAAY,IAAE,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;;;IAK5C,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;;AACf,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;;AAG5C,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;;AAEtB,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;;AAGpB,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE;;AAGtB,IAAA,OAAO,CAAC,GAAa,EAAA;QACnB,IAAK,GAAG,EAAE;AACR,YAAA,MAAM,MAAM,GAAI,GAAG,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,MAAM,KAAK,GAAE,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,OAAO,MAAM,IAAI,KAAK;;aACnB;AACH,YAAA,OAAO,KAAK;;;AAIhB,IAAA,SAAS,CAAC,GAAa,EAAA;AACrB,QAAA,IAAK,GAAG,IAAI,IAAI,CAAC,WAAW,EAAC;AAC3B,YAAA,MAAM,MAAM,GAAI,GAAG,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,MAAM,IAAI,KAAK;;aACnB;AACH,YAAA,OAAO,KAAK;;;AAIhB,IAAA,WAAW,CAAC,CAAQ,EAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAE,CAAC,KAAG,CAAC,CAAC,GAAG,CAAC;QACnD,MAAM,MAAM,GAAI,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,OAAO;AACjD,QAAA,MAAM,SAAS,GAAE,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,GAAG,CAAC;QAC1F,OAAO,MAAM,IAAI,SAAS;;;AAI5B,IAAA,eAAe,CAAC,IAAW,EAAA;QACzB,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;AAC3B,gBAAA,OAAO,IAAI;;iBACR;AACH,gBAAA,OAAO,MAAM;;;aAEZ;AACH,YAAA,OAAO,IAAI;;;IAIf,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,aAAa,EAAE;;IAEtB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE;;wGA3OX,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EARtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BH,g9IAuIA,EDrHY,MAAA,EAAA,CAAA,mvCAAA,EAAA,2lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,QAAQ,EAAE,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6HAAE,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAWzC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,QAAQ,EAAE,YAAY,EAAE,kBAAkB,CAAC,EAG1C,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,g9IAAA,EAAA,MAAA,EAAA,CAAA,mvCAAA,EAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAE8B,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB;;;MEzBlB,uBAAuB,CAAA;IACzB,MAAM,GAAgB,EAAE;AACN,IAAA,IAAI;IAE/B,IAAI,GAAG,KAAK;IACH,IAAI,GAAG,CAAC;;AAGjB,IAAA,gBAAgB,CAAC,KAAgB,EAAA;AAE/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;QAC/B,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAElD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAG;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC3C,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAA,aAAA,CAAe;AACpF,SAAC,CAAC;;AAGa,IAAA,aAAa,GAA6D;AACzF,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAkB,gBAAA,CAAA;QACzE,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,6BAA6B,GAAG,CAAC,GAAG,CAAG,CAAA,CAAA;QACxF,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,6BAA6B,GAAG,CAAC,GAAG,CAAG,CAAA,CAAA;QACxF,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,wBAAwB,GAAG,CAAC,cAAc,CAAc,YAAA,CAAA;QAC/G,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,qBAAqB,GAAG,CAAC,cAAc,CAAc,YAAA,CAAA;AAC5G,QAAA,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAgC,8BAAA;KACvF;wGA5BU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,qICjBpC,o6FAgFA,EAAA,MAAA,EAAA,CAAA,kzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAC5C,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,0KAAG,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,oJAAE,WAAW,EAAA,CAAA,EAAA,CAAA;;4FAIzG,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA,CAAC,YAAY,EAAE,sBAAsB;wBAC5C,mBAAmB,EAAE,kBAAkB,EAAG,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,o6FAAA,EAAA,MAAA,EAAA,CAAA,kzBAAA,CAAA,EAAA;8BAK5G,MAAM,EAAA,CAAA;sBAAd;gBAC0B,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAGhB,IAAI,EAAA,CAAA;sBAAZ;;;MEbU,0BAA0B,CAAA;IAC5B,MAAM,GAAW,CAAC;IAClB,IAAI,GAAW,CAAC;AAEzB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO;AACL,YAAA,uBAAuB,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAQ,MAAA;SACrD;;wGAPQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTvC,sVAOM,EAAA,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFO,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIZ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAE,YAAY,CAAE,EAAA,QAAA,EAAA,sVAAA,EAAA,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA;8BAKhB,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MECU,uBAAuB,CAAA;AACzB,IAAA,MAAM;IACN,OAAO,GAAG,KAAK;IACf,aAAa,GAAwB,EAAE;IAEhD,QAAQ,GAAG,KAAK;AAEN,IAAA,UAAU,GAAG,IAAI,YAAY,EAAc;AAEpC,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IACzC,IAAI,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,WAAW,GAAG,CAAC;IAGf,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;AAGrE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACnE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;gBACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;;;;IAKxF,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC,CAAC;;aACpD;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,IAAI,EAAC,CAAC;;;IAI3C,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;QAE3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG;AACvC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;;QAE5F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;;AAGhE,IAAA,aAAa,CAAC,IAA2B,EAAE,SAAS,GAAG,EAAE,EAAA;AACvD,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,YAAA,MAAM,WAAW,GAAG,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,GAAG,GAAG;YAE3D,IAAI,OAAO,YAAY,SAAS,IAAI,OAAO,YAAY,SAAS,EAAE;;AAEhE,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC;;AACnC,iBAAA,IAAI,OAAO,EAAE,MAAM,EAAE;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAiB,cAAA,EAAA,WAAW,CAAI,EAAA,CAAA,EAAE,OAAO,CAAC,MAAM,CAAC;;AAElE,SAAC,CAAC;;IAGI,SAAS,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACjC,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjD,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI;AAChD,YAAA,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,KAAK,OAAO,IAAI,IAAI;gBAAE,OAAO,GAAG,KAAK;YACpF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI;AAAE,gBAAA,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAEhE,YAAA,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;;AAGX,IAAA,sBAAsB,CAAC,CAAY,EAAA;QACzC,MAAM,UAAU,GAAG,EAAE;QACrB,IAAI,CAAC,CAAC,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACpD,QAAA,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,QAAA,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,QAAA,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvF,QAAA,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,CAAC,OAAO,YAAY,MAAM;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/E,QAAA,OAAO,UAAU;;IAGnB,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAClD,YAAA,OAAO,IAAI,EAAE,MAAM,IAAI,EAAE;;AAE3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;;IAGjC,QAAQ,GAAA;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,CAAC,EAAE;YACtD,IAAI,CAAC,WAAW,EAAE;;;IAItB,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,WAAW,EAAE;;;IAItB,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,EAAE;;wGA9GhD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,yNCZpC,u6DAyDA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjDY,uBAAuB,EAAE,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,0FAAC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAItE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,CAAC,uBAAuB,EAAE,0BAA0B,EAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,u6DAAA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA;8BAKzE,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAIS,UAAU,EAAA,CAAA;sBAAnB;;;MELU,oBAAoB,CAAA;AAiCZ,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,eAAA;AACA,IAAA,GAAA;AAlCV,IAAA,IAAI,GAAG,EAAE,CAAC;AACV,IAAA,SAAS,GAAkD,WAAW,CAAC;AACvE,IAAA,YAAY,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,GAAoB,GAAG,CAAC;;IAE5B,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;;IAER,QAAQ,GAAG,KAAK;IAChB,YAAY,GAAG,IAAI;IACnB,WAAW,GAAG,WAAW;IAClC,IAAI,GAAG,KAAK;AAEH,IAAA,QAAQ;IACR,aAAa,GAA0B,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;AAC3D,IAAA,eAAe,GAA2B,MAAM,IAAI;IAEpD,YAAY,GAAY,KAAK;IAE7B,YAAY,GAAO,IAAI;AACtB,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO;IAEtD,SAAS,GAAG,KAAK;IACjB,UAAU,GAAW,EAAE;AACN,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACtD,IAAA,QAAQ;AACiB,IAAA,YAAY;AAC7B,IAAA,UAAU;AAElB,IAAA,WAAA,CACmB,QAAkB,EAClB,OAAgB,EAChB,eAAuC,EACvC,GAAqB,EAAA;QAHrB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAG,CAAA,GAAA,GAAH,GAAG;AAEpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACrC,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAChC,SAAS,CAAE,CAAC,IAAG;AACb,YAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;YAEf,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAE,QAAQ,CAAC,MAAI,IAAI,CAAC,SAAS,GAAC,KAAK,CAAC,CAAE;SAAC,CACpE,CACF;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAI,IAAI;YACjB,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAO,KAAG;AAClE,wBAAA,IAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;4BACtD,IAAI,CAAC,WAAW,EAAE;4BAClB,IAAI,CAAC,UAAU,EAAE;;AAErB,qBAAC,CAAC;iBACH,EAAE,GAAG,CAAC;;;;AAKb,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAIlC,aAAa,GAAA;QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG1C,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,IAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC;YAC9B,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,IAAK,IAAI,CAAC,YAAY;AAAM,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;IAIxD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;QACjB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;IAG7B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGL,IAAA,mBAAmB;AAClD,IAAA,UAAU;IACV,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAK;;;IAG3B,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU;YAAE;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAC3E,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY;AACrC,aAAA,aAAa,CAAC;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB;SACF;aACA,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC;AACF,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC;AAC7E,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;;wGA5IhD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,osBCdjC,0sFAyEA,EAAA,MAAA,EAAA,CAAA,suBAAA,EAAA,2lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/DY,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+mBAAY,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,YAAY,EAAC,WAAW,EAAC,SAAS,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,0sFAAA,EAAA,MAAA,EAAA,CAAA,suBAAA,EAAA,2lIAAA,CAAA,EAAA;4KAMxD,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBACS,kBAAkB,EAAA,CAAA;sBAA3B;gBAMwB,YAAY,EAAA,CAAA;sBAApC,SAAS;uBAAC,YAAY;gBAuEQ,mBAAmB,EAAA,CAAA;sBAAjD,SAAS;uBAAC,kBAAkB;;;MExGlB,4BAA4B,CAAA;IAC9B,WAAW,GAAG,EAAE;IAChB,KAAK,GAAG,QAAQ;IAChB,eAAe,GAAG,KAAK;AACtB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAU;IAC7C,IAAI,GAAG,EAAE;IAET,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,UAAU,GAAA;AACR,QAAA,IAAK,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;;wGAdpB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,ECVzC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yjBAQM,EDFM,MAAA,EAAA,CAAA,4hBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,wJAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAI9B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA,CAAC,kBAAkB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,yjBAAA,EAAA,MAAA,EAAA,CAAA,4hBAAA,CAAA,EAAA;8BAKjC,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACS,MAAM,EAAA,CAAA;sBAAf;;;MEHU,2BAA2B,CAAA;IAC7B,UAAU,GAAiB,GAAG;IAC9B,WAAW,GAAG,CAAC;IACf,UAAU,GAAG,CAAC;IACd,IAAI,GAAG,EAAE;IACT,OAAO,GAAG,KAAK;IACxB,YAAY,GAAG,CAAC;IAChB,WAAW,GAAY,EAAE;AAEf,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AAEjD,IAAA,IAAI,KAAK,GAAA;QACP,MAAM,KAAK,GAAwB,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC/C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAE7D,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;AAC3B,YAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;;AAEhE,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;AAGpD,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACb,IAAI,KAAK,GAAG,CAAC;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGlC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGf,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG7B,QAAA,OAAO,KAAK;;AAGd,IAAA,UAAU,CAAC,OAAe,EAAA;AACxB,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9E,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO;YAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;wGA7C/B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,+QCXxC,g4BAcM,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPM,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,wJAAE,WAAW,EAAA,CAAA,EAAA,CAAA;;4FAI5C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WACvB,CAAC,YAAY,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,g4BAAA,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA;8BAK/C,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAIS,UAAU,EAAA,CAAA;sBAAnB;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;MEZU,qBAAqB,CAAA;IACvB,IAAI,GAAa,EAAE;wGADjB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,oGCTlC,ySAUA,EAAA,MAAA,EAAA,CAAA,4KAAA,CAAA,EAAA,CAAA;;4FDDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,EAAE,EAAA,QAAA,EAAA,ySAAA,EAAA,MAAA,EAAA,CAAA,4KAAA,CAAA,EAAA;8BAKF,IAAI,EAAA,CAAA;sBAAZ;;;MELU,gBAAgB,CAAA;AAE3B,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,KAAK,EAAC;AACT,YAAA,OAAO,EAAE;;QAEX,MAAM,KAAK,GAAY,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAC;YACnB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;;aACxD,IAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAE,CAAC,EAAC;AAC5B,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,WAAW,EAAE;;aACzC;AACH,YAAA,OAAO,EAAE;;;wGAZF,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCMY,qBAAqB,CAAA;AACvB,IAAA,IAAI;wGADF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVlC,8TAYC,EAAA,MAAA,EAAA,CAAA,0cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDNW,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA;;4FAIf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,8TAAA,EAAA,MAAA,EAAA,CAAA,0cAAA,CAAA,EAAA;8BAKlB,IAAI,EAAA,CAAA;sBAAZ;;;AEVU,MAAA,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;AAC9C,IAAA,UAAU,CAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC;AACvH,IAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAC/D,CAAA;;MCMU,mBAAmB,CAAA;IAC9B,OAAO,GAAW,EAAE;IACpB,IAAI,GAAW,CAAC;IAChB,GAAG,GAAW,CAAC;wGAHJ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,ECVhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0IAEM,EDMQ,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA,UAAA,EAAA,CAAE,WAAW,CAAE,EAAA,CAAA;;4FAEhB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACb,OAAA,EAAA,EAAE,EAGC,UAAA,EAAA,CAAE,WAAW,CAAE,EAAA,QAAA,EAAA,0IAAA,EAAA,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA;;;MEAhB,mBAAmB,CAAA;AAQX,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,QAAA;IAPV,GAAG,GAAG,EAAE;IAET,YAAY,GAA6B,IAAI;AAErD,IAAA,WAAA,CACmB,UAAsB,EACtB,MAAsB,EACtB,QAA6B,EAAA;QAF7B,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAI3B,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,IAAE,EAAE,IAAI,IAAI,CAAC,GAAG,IAAE,IAAI,EAAE;AAChE,YAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,mBAAmB,EAAE;gBACvD,mBAAmB,EAAE,IAAI,CAAC;AAC3B,aAAA,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAClD,YAAA,MAAM,OAAO,GACN,IAAI,CAAC,YAAY,CAAC;iBAClB,SAAS,CAAC,CAAC,CAAgB;AAClC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAClC,IAAI,CAAC,6BAA6B,EAAE;;;IAIhC,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;AAC7C,YAAA,MAAM,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAC,GACrB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC3D,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI;YAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM;;;IAK3C,YAAY,GAAA;QACV,IAAI,CAAC,OAAO,EAAE;;IAGhB,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;;IAGhB,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;wGApDjB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;8IAIU,GAAG,EAAA,CAAA;sBAAX;gBAWD,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBA2B1B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;;;AC7Cf,MAAA,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE;IAChD,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3D,UAAU,CAAC,kBAAkB,EAAE;AAC7B,QAAA,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC;YAClC,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAClD,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,SAAA,CAAC;KACH;AACF,CAAA;;ACVU,MAAA,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;IAC9C,UAAU,CAAC,QAAQ,EAAE;QACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;AACrD,QAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;KAC7E,CAAC;IACF,UAAU,CAAC,QAAQ,EAAE;QACnB,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KACjF,CAAC;AACH,CAAA;;MCaU,iBAAiB,CAAA;IAEnB,OAAO,GAAiB,EAAE;IAC1B,IAAI,GAAc,EAAE;IACpB,OAAO,GAAG,KAAK;IACf,KAAK,GAAG,CAAC;IACT,IAAI,GAAG,EAAE;IACT,aAAa,GAAG,CAAC;IACjB,UAAU,GAAgB,GAAG;IAC7B,aAAa,GAAmB,CAAC;IACjC,UAAU,GAAG,EAAE;IACf,UAAU,GAAG,CAAC;IAEd,aAAa,GAAG,IAAI;IACpB,WAAW,GAAG,QAAQ;IACtB,iBAAiB,GAAG,QAAQ;IAC5B,OAAO,GAAG,KAAK;IACf,cAAc,GAAG,IAAI;IACrB,gBAAgB,GAAG,KAAK;IACxB,YAAY,GAAG,kBAAkB;AAIhC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAe;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAgB;AACzC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAqB;AAE/D,IAAA,UAAU,GAAG,IAAI,GAAG,EAAoB;IACxC,OAAO,GAAG,EAAE;IACZ,OAAO,GAAG,IAAI;IACd,MAAM,GAAG,EAAE;IACX,IAAI,GAAC,CAAC;IAEN,QAAQ,CAAC,IAAmB,EAAC,GAAU,EAAA;AACrC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,EAAE,KAAK,IAAE,GAAG;;IAGxB,YAAY,CAAC,IAAmB,EAAC,GAAU,EAAA;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC5C,OAAO,MAAM,IAAI,GAAG,EAAE,SAAS,IAAE,OAAO,CAAC;;IAE3C,kBAAkB,CAAC,IAAmB,EAAC,GAAU,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,EAAE,KAAK,IAAE,aAAa;;IAGlC,WAAW,CAAC,IAAmB,EAAC,GAAsB,EAAA;AACpD,QAAA,IAAK,CAAC,GAAG;AAAG,YAAA,OAAO,IAAI;QACvB,IAAI,KAAK,GAAG,IAAI;AAEhB,QAAA,GAAG,CAAC,OAAO,CAAC,CAAC,IAAG;AACd,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1C,KAAK,GAAG,KAAK,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AACjC,SAAC,CAAC;AAED,QAAA,OAAO,KAAK;;IAGf,OAAO,CAAC,IAAmB,EAAC,GAAU,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,YAAY,GAAG,GAAG,EAAE,IAAI,GAAG,QAAQ;;IAG5C,OAAO,CAAC,IAAmB,EAAC,GAAU,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,EAAE,IAAI,IAAE,EAAE;;IAEtB,OAAO,CAAC,IAAmB,EAAC,GAAU,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC5C,OAAO,GAAG,EAAE,IAAI;;AAGlB,IAAA,SAAS,CAAC,GAAU,EAAA;AAClB,QAAA,IAAK,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;AACf,aAAA,IAAK,IAAI,CAAC,OAAO,EAAG;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;aACjB;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;QAErB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,UAAU,CAAC,OAAc,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;QACnB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,SAAS,CAAC,OAAc,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;QACnB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,MAAM,CAAC,IAAW,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,UAAU,EAAE;;IAEnB,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,MAAM,EAAC,IAAI,CAAC,OAAO;YACnB,eAAe,EAAC,IAAI,CAAC,OAAO;YAC5B,UAAU,EAAC,IAAI,CAAC,IAAI;YACpB,QAAQ,EAAC,IAAI,CAAC,IAAI;YAClB,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;;IAGJ,eAAe,CAAC,EAAiB,EAAE,OAAgB,EAAA;QACjD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;;aAClB;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;;QAE5B,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAGtD,IAAA,SAAS,CAAC,OAAgB,EAAA;QACxB,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;aAClD;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;IAEtD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;;IAG9D,WAAW,GAAG,KAAK;IACnB,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;;IAGvB,QAAQ,CAAC,KAAmB,EAAC,GAAU,EAAA;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,GAAG,EAAC,CAAC;;IAI/B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;wGA7IlB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB9B,giMAgHM,EAAA,MAAA,EAAA,CAAA,2xFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhGM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,yIACpH,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAC,mBAAmB,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAC,oBAAoB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAGvE,CAAE,YAAY,EAAE,WAAW,CAAE,EAAA,CAAA;;4FAE9B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,4BAA4B;AACpH,wBAAA,2BAA2B,EAAC,mBAAmB,EAAC,oBAAoB,EAAE,WAAW,CAAC,EAAA,UAAA,EAGxE,CAAE,YAAY,EAAE,WAAW,CAAE,EAAA,QAAA,EAAA,giMAAA,EAAA,MAAA,EAAA,CAAA,2xFAAA,CAAA,EAAA;8BAIhC,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAIS,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;gBACS,aAAa,EAAA,CAAA;sBAAtB;;;AEfiF;AACR;;MCvB/D,gBAAgB,CAAA;AAClB,IAAA,KAAK;AACJ,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AAEjD,IAAA,QAAQ;IACR,aAAa,GAAG,CAAC;IACjB,kBAAkB,GAAG,GAAG;IACxB,cAAc,GAAG,KAAK;IACtB,EAAE,GAAG,CAAC;IAGN,QAAQ,GAAA;QACN,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;AACvB,QAAA,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAC;AAChD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpC,IAAI,KAAK,GAAG,CAAC;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;AAC/B,gBAAA,KAAK,GAAG,IAAI,CAAC,cAAc,GAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,kBAAkB;AACpE,gBAAA,IAAI,CAAC,aAAa,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,IAAE,GAAG,CAAC;AACxD,gBAAA,IAAI,IAAI,CAAC,aAAa,GAAG,GAAG,EAAC;oBAC3B,IAAI,CAAC,KAAK,EAAE;;AAEhB,aAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC;;;IAK/B,KAAK,GAAA;AACH,QAAA,aAAa,CAAE,IAAI,CAAC,QAAQ,CAAE;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;wGA7BpB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,uICV7B,kqCA0BM,EAAA,MAAA,EAAA,CAAA,myDAAA,CAAA,EAAA,CAAA;;4FDhBO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WACX,EAAE,EAAA,QAAA,EAAA,kqCAAA,EAAA,MAAA,EAAA,CAAA,myDAAA,CAAA,EAAA;8BAKF,KAAK,EAAA,CAAA;sBAAb;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AEVH,IAAI,MAAM,GAAG,CAAC;AAEE,SAAA,kBAAkB,CAChC,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;AAEgB,SAAA,gBAAgB,CAC9B,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;AAEgB,SAAA,kBAAkB,CAChC,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;AAEgB,SAAA,eAAe,CAC7B,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;;MC9Ca,mBAAmB,CAAA;IAE9B,SAAS,GAAG,CAAC;AACI,IAAA,OAAO,GAAG,IAAI,OAAO,EAAS;AAE/C,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;;AAGpC,IAAA,IAAI,CAAC,SAA2B,EAAA;QAC9B,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,MAAM,KAAK,GAAU,EAAC,GAAG,SAAS,EAAC,EAAE,EAAC,IAAI,CAAC,SAAS,EAAC;AACrD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,KAAK,CAAE;;IAG5B,OAAO,CAAC,OAAe,EAAE,OAAwB,EAAA;QAC/C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;IAGjD,KAAK,CAAC,OAAe,EAAE,OAAwB,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;wGApBpC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,0BAA0B,CAAA;AAGR,IAAA,YAAA;IAF7B,MAAM,GAAY,EAAE;AAEpB,IAAA,WAAA,CAA6B,YAAiC,EAAA;QAAjC,IAAY,CAAA,YAAA,GAAZ,YAAY;;IAEzC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAE,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,EAAS,EAAA;AACd,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC;;wGAbhB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvC,yOAQA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIf,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,yOAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA;;;AENhB,MAAA,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE;AACtC,IAAA,UAAU,CAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC,CAAC;IAC7I,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAC,CAAC,CAAC,CAAC;AAC/F,CAAA;;ACHU,MAAA,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE;IAC5C,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;;IAGzD,UAAU,CAAC,iBAAiB,EAAE;QAC5B,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;QACrD,OAAO,CAAC,UAAU;KACnB,CAAC;;IAGF,UAAU,CAAC,mBAAmB,EAAE;QAC9B,OAAO,CAAC,UAAU;KACnB;AACF,CAAA;AAEY,MAAA,YAAY,GAAE,OAAO,CAAC,cAAc,EAAE;IAC7C,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACtC,UAAU,CAAC,iBAAiB,EAAE;AAC5B,QAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,gBAAgB;KACzB,CAAC;IACF,UAAU,CAAC,mBAAmB,EAAE;QAC9B,OAAO,CAAC,eAAe;KACxB;AACF,CAAA;;AC1BQ,MAAA,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE;IAC5C,UAAU,CAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;AAClF,IAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAC/D,CAAA;;ACJI,MAAM,UAAU,GAAG;AACnB,MAAM,eAAe,GAAG;AACxB,MAAM,YAAY,GAAG;AACrB,MAAM,iBAAiB,GAAG;AAC1B,MAAM,mBAAmB,GAAG;;MCAtB,UAAU,CAAA;AAIF,IAAA,UAAA;AACA,IAAA,YAAA;AAJF,IAAA,YAAY,GAAG,IAAI,OAAO,EAAoC;IAE/E,WACmB,CAAA,UAAsB,EACtB,YAA6B,EAAA;QAD7B,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY;;IAG/B,KAAK,CAAC,SAAmB,IAAI,EAAA;QAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,IAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAG,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;IAG9B,aAAa,CAAC,SAAmB,IAAI,EAAA;QACnC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,IAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAG,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;IAG9B,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAE1C;;MCVY,iBAAiB,CAAA;AAOW,IAAA,QAAA;AACK,IAAA,SAAA;AACH,IAAA,MAAA;AACtB,IAAA,QAAA;IATnB,QAAQ,GAAe,EAAE;IACzB,KAAK,GAAG,KAAK;IACb,KAAK,GAAC,EAAE;AACsC,IAAA,YAAY;AAE1D,IAAA,WAAA,CACuC,QAAoB,EACf,SAAoB,EACvB,MAAmB,EACzC,QAAkB,EAAA;QAHE,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QAC5B,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAEzB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;;IAGxB,eAAe,GAAA;AACb,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAG;gBACjD,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AAClD,aAAA;YACD,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC;;IAIjD,WAAW,GAAA;QACT,IAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE;AACjD,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;;;IAIrC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;;AAnCxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAOlB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,UAAU,EACV,EAAA,EAAA,KAAA,EAAA,eAAe,aACf,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AATX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAIjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,ECrB5B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,urBAgBM,EDJM,MAAA,EAAA,CAAA,+gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAG3C,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,OAAO,CAAC,EAAA,CAAA;;4FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAC,YAAY,EAAC,kBAAkB,CAAC,EAAA,UAAA,EAG5C,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,urBAAA,EAAA,MAAA,EAAA,CAAA,+gCAAA,CAAA,EAAA;;0BASjB,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,YAAY;gEALwB,YAAY,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEHjC,qBAAqB,CAAA;AAUO,IAAA,QAAA;AACK,IAAA,SAAA;AACH,IAAA,MAAA;AACtB,IAAA,QAAA;AACA,IAAA,KAAA;IAbnB,UAAU,CAAc;IACxB,KAAK,GAAyB,SAAS;IACvC,IAAI,GAAG,IAAI;IACX,QAAQ,GAAmB,EAAE;IAC7B,KAAK,GAAG,KAAK;IACb,KAAK,GAAC,EAAE;AACsC,IAAA,YAAY;IAE1D,WACuC,CAAA,QAAoB,EACf,SAAoB,EACvB,MAAuB,EAC7C,QAAkB,EAClB,KAAqB,EAAA;QAJD,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QAC5B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAK,CAAA,KAAA,GAAL,KAAK;AAEtB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;;IAGxB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,EAAC;YAClB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,MAAK;gBACrE,IAAI,CAAC,KAAK,EAAE;AACd,aAAC,CAAC;;;IAIN,eAAe,GAAA;AACb,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAG;gBACjD,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AAClD,aAAA;YACD,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC;;IAIjD,WAAW,GAAA;QACT,IAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE;YACjD,IAAI,CAAC,KAAK,EAAE;;;IAIhB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;;AAGvB,IAAA,eAAe,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAK,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE;AACpE,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;;IAI7B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;;AAzDf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAUtB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,UAAU,EACV,EAAA,EAAA,KAAA,EAAA,eAAe,aACf,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAZX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAOrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,ECzB5B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,iuCAsBM,EDTM,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAG7B,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAE,SAAS,EAAE,YAAY,CAAE,EAAA,CAAA;;4FAE5B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,EAAC,kBAAkB,CAAC,EAAA,UAAA,EAG9B,CAAE,SAAS,EAAE,YAAY,CAAE,EAAA,QAAA,EAAA,iuCAAA,EAAA,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA;;0BAYpC,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,YAAY;2FALwB,YAAY,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEXjC,eAAe,CAAA;AAET,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE1D,IAAA,iBAAiB,CACf,SAA2B,EAC3B,MAAA,GAAsB,EAAE,EAAA;QAExB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,CAAC;;AAG9C,IAAA,aAAa,CACX,SAA2B,EAC3B,MAAA,GAA0B,EAAE,EAAA;QAE5B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAC,MAAM,EAAC,KAAK,CAAC;;IAGvC,SAAS,CACf,SAA2B,EAC3B,MAAA,GAAsC,EAAE,EACxC,UAAU,GAAG,KAAK,EAAA;QAElB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,CAAC;QAC/E,IAAK,UAAU,EAAC;YACd,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC1E,YAAA,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;;aAC3B;YACH,MAAM,WAAW,GAAI,IAAI,eAAe,CAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,CAAC;YAChF,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;AACnD,YAAA,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU;;AAE/C,QAAA,OAAO,QAAQ;;AAGjB,IAAA,KAAK,CAAC,UAAsB,EAAE,MAAA,GAAc,IAAI,EAAA;AAC9C,QAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAClC,IAAI,WAAW,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CACzD;;AAGH,IAAA,aAAa,CAAC,UAAsB,EAAE,MAAA,GAAc,IAAI,EAAA;AACtD,QAAA,UAAU,CAAC,eAAe,EAAE,aAAa,CACvC,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CACvD;QACD,UAAU,CAAC,OAAO,EAAE;;AAGL,IAAA,MAAM,GAAG,IAAI,OAAO,EAAQ;AAC7C,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;IAElC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AAGZ,IAAA,mBAAmB,CAAC,UAAmB,EAAA;QAC7C,MAAM,gBAAgB,GAAG;AACvB,cAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI;AACvC,cAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;QAE5C,OAAO;AACL,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,2BAA2B;YAC1C,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrD,YAAA,mBAAmB,EAAE,IAAI;SAC1B;;AAGK,IAAA,mBAAmB,CACzB,UAAsB,EACtB,QAAoB,EACpB,SAA2B,EAC3B,MAAqC,EAAA;QAErC,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7C,gBAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC3C,gBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE;AACjD,gBAAA,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM;AAC1C,aAAA;YACD,MAAM,EAAE,IAAI,CAAC,WAAW;AACzB,SAAA,CAAC;;wGAvFO,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,kBAAkB,CAAA;AAIU,IAAA,QAAA;AAHvC,IAAA,IAAI;IACJ,WACsB,CAAA,MAAwC,EACvB,QAAoB,EAAA;QAApB,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAE7C,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;;IAE1B,QAAQ,GAAqB,EAAE;AAG/B,IAAA,KAAK,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAC,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC;;wGAZ5C,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAGnB,UAAU,EAAA,EAAA,EAAA,KAAA,EACV,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAJT,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ/B,myBAgBA,EAAA,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRY,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIjB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,myBAAA,EAAA,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA;;0BAO1B,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,UAAU;;;MERT,mBAAmB,CAAA;AAEb,IAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;AAEhD,IAAA,SAAS,CAAC,IAAe,EAAA;AACvB,QAAA,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,KAAI;AAC5C,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,EAAE;AAC/C,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI;aACpB,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AAClC,gBAAA,OAAO,CAAC;oBACN,KAAK,EAAE,MAAM,EAAE,MAAM;oBACrB,IAAI,EAAE,MAAM,EAAE;AACf,iBAAA,CAAC;AACJ,aAAC,CAAC;AACJ,SAAC,CAAC;;wGAdO,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;ACAA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ui-core-abv.mjs","sources":["../../../projects/ui-core/src/lib/components/button/button.component.ts","../../../projects/ui-core/src/lib/components/button/button.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/base-value-accessot.ts","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.ts","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.html","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.ts","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.html","../../../projects/ui-core/src/lib/components/inputs/select/select.component.ts","../../../projects/ui-core/src/lib/components/inputs/select/select.component.html","../../../projects/ui-core/src/lib/components/inputs/input/input.component.ts","../../../projects/ui-core/src/lib/components/inputs/input/input.component.html","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.ts","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.html","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.ts","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.html","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.ts","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.html","../../../projects/ui-core/src/lib/components/inputs/searcher/searcher.component.ts","../../../projects/ui-core/src/lib/components/inputs/searcher/searcher.component.html","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.ts","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.html","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.ts","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.html","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.ts","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.html","../../../projects/ui-core/src/lib/pipes/name-inits.pipe.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.html","../../../projects/ui-core/src/lib/animations/fadeAndRise.animation.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.html","../../../projects/ui-core/src/lib/directives/tool-tip.directive.ts","../../../projects/ui-core/src/lib/animations/highlightRow.animation.ts","../../../projects/ui-core/src/lib/animations/animatedRow.animation.ts","../../../projects/ui-core/src/lib/components/table/table.component.ts","../../../projects/ui-core/src/lib/components/table/table.component.html","../../../projects/ui-core/src/lib/components/table/table.models.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.html","../../../projects/ui-core/src/lib/components/push-alerts/alert.helpers.ts","../../../projects/ui-core/src/lib/services/push-alert.service.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.html","../../../projects/ui-core/src/lib/animations/pushTop.animation.ts","../../../projects/ui-core/src/lib/animations/sideModal.animation.ts","../../../projects/ui-core/src/lib/animations/simpleFade.animation.ts","../../../projects/ui-core/src/lib/services/modal.constant.ts","../../../projects/ui-core/src/lib/services/modaRef.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.html","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.ts","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.html","../../../projects/ui-core/src/lib/services/modal.service.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.html","../../../projects/ui-core/src/lib/services/tiny-alert.service.ts","../../../projects/ui-core/src/public-api.ts","../../../projects/ui-core/src/ui-core-abv.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-button',\r\n imports: [CommonModule],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss'\r\n})\r\nexport class UicButtonComponent {\r\n @Input() text='';\r\n @Input() icon='';\r\n @Input() rightIcon='';\r\n @Input() iconOnly=false;\r\n @Input() disabled=false;\r\n @Input() loading=false; \r\n @Input() size: 't' | 's'|'m'|'l'| 'g' = 'm';\r\n @Input() type: 'filled' | 'bordered' | 'ghost' = 'filled'; \r\n @Input() color:ButtonColor = 'primary';\r\n \r\n buttonTypeClass = \"\";\r\n \r\n ngOnInit(){\r\n this.buttonTypeClass = 'btn-' + this.type + ' btn-' + this.color + \"-\" + this.type;\r\n }\r\n}\r\nexport type ButtonColor = 'primary'|'secondary'|'red'|'green'|'blue'|'yellow' | 'black';","<button\r\n [class]=\"'main-btn ' + buttonTypeClass\"\r\n [disabled]=\"disabled || loading\"\r\n [ngClass]=\"{\r\n 'btn-tiny' :size=='t',\r\n 'btn-small' :size=='s', \r\n 'btn-medium' :size=='m',\r\n 'btn-large' :size=='l', \r\n 'btn-gigant' :size=='g'\r\n }\" >\r\n \r\n @if (!loading) {\r\n @if (icon!='' ) {\r\n <i class=\"{{icon}}\"></i>\r\n }\r\n @if (!iconOnly) {\r\n <div class=\"btn-text\" [class.norighticon]=\"rightIcon==''\" [class.noicon]=\"icon==''\">\r\n {{text}}\r\n <ng-content ></ng-content>\r\n </div>\r\n }\r\n @if (rightIcon!='' ) {\r\n <i class=\"{{rightIcon}}\"></i>\r\n }\r\n } @else {\r\n <div class=\"btn-loader-container\"> <div class=\"btn-loader\"></div> </div>\r\n }\r\n</button>","import { ControlValueAccessor } from '@angular/forms';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nexport function createValueAccessor<T>() {\r\n @Directive()\r\n abstract class BaseValueAccessor implements ControlValueAccessor {\r\n @Input() value!: T;\r\n @Output() valueChange = new EventEmitter<T>();\r\n\r\n onChange: (value: T) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(obj: T): void {\r\n this.value = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // opcional\r\n }\r\n\r\n notifyChange(value: T) {\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n return BaseValueAccessor;\r\n}\r\n","import { Component, forwardRef, Input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\nconst base = createValueAccessor<boolean>();\r\n\r\n@Component({\r\n selector: 'ui-checkbox',\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss','../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicCheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicCheckboxComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() tip = '';\r\n @Input() type: 'check'|'switch' = 'check';\r\n @Input() placeholder = '';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n\r\n\r\n toggle() {\r\n if (!this.disabled && !this.loading){\r\n this.notifyChange(!this.value);\r\n }\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\">\r\n {{label}} \r\n </div>\r\n }\r\n <div class=\"check-form-container\">\r\n <div (click)=\"toggle()\" class=\"check-wrapper\">\r\n @if (type=='check') {\r\n <button\r\n type=\"button\"\r\n class=\"checkbox\"\r\n [disabled]=\"disabled\"\r\n [class.checked]=\"value\"\r\n [disabled]=\"disabled\"\r\n (keydown.enter)=\"toggle()\"\r\n (keydown.space)=\"toggle()\"\r\n >\r\n <span class=\"icon\">\r\n @if (value) {\r\n ✔\r\n }@else {\r\n −\r\n }\r\n </span>\r\n </button>\r\n }@else{\r\n <button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"value\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"thumb\"></span>\r\n </button>\r\n } \r\n {{placeholder}}\r\n </div>\r\n </div>\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n \r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-switch',\r\n imports: [],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrls: ['./toggle-button.component.scss','../input.component.scss']\r\n})\r\nexport class UicSwichComponent {\r\n @Input() checked = false;\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n @Input() disabled = false;\r\n @Input() placeholder = '';\r\n @Input() label = '';\r\n\r\n \r\n\r\n toggle() {\r\n if (this.disabled) return;\r\n this.checked = !this.checked;\r\n this.checkedChange.emit(this.checked);\r\n }\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (click)=\"toggle()\"\r\n>\r\n <span class=\"thumb\"></span>\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\n\r\ntype selectId = number|string|null;\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n imports: [CommonModule],\r\n templateUrl: './select.component.html',\r\n styleUrl: '../input.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSelectComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() showSubtitle = false;\r\n emptyText = '- Seleccionar -'\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() nullable = false;\r\n @Input() options:AppSelectOption[] = []; \r\n\r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n \r\n selectedOption: AppSelectOption | null = null;\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n ngOnInit(): void {\r\n this.emptyText = this.disabled ? '-' : '- Seleccionar -';\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n this.selectedOption = this.options.find(opt => opt.id === this.value) ?? null;\r\n }\r\n }\r\n\r\n // --- Overlay ---\r\n openList(){\r\n if (this.disabled) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = input.offsetWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n\r\n selectOption(option:AppSelectOption | null){\r\n this.closeList();\r\n this.selectedOption = option;\r\n this.notifyChange(option?.id??null);\r\n }\r\n\r\n \r\n closeList() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n override writeValue(value: string | number | null): void {\r\n super.writeValue(value); \r\n this.selectedOption = this.options.find(opt => opt.id === value) ?? null;\r\n }\r\n\r\n \r\n}\r\n\r\nexport interface AppSelectOption{\r\n id? : string | number | null;\r\n text : string;\r\n detail? : string;\r\n} ","<div class=\"input-wrapper \">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">{{label}} </div>\r\n }\r\n <div class=\"fakeinput-wrapp\" > \r\n <!-- INPUT -->\r\n <div (click)=\"openList()\" class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\" style=\"cursor: pointer;\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-{{size}} {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fakeinput-content\">{{(selectedOption?.text || emptyText)}}</div>\r\n @if (!disabled) {\r\n <i class=\"ri-arrow-down-s-line\"></i>\r\n }\r\n </div> \r\n <!-- DESPLEGABLE -->\r\n <ng-template #dropdownTemplate >\r\n <div class=\"input-options\">\r\n <!-- OPCIONES -->\r\n <div class=\"input-option-scroll\">\r\n @if (options.length > 0 && nullable) {\r\n <div (click)=\"selectOption(null)\" class=\"input-option \" style=\"padding: 3px;\" >- Ninguno -</div>\r\n <div class=\"option-divider\"></div>\r\n }\r\n\r\n \r\n @for (option of options; track $index) {\r\n <div (click)=\"selectOption(option)\" class=\"input-option\">\r\n <div style=\"padding: 2px;\" >\r\n <div class=\"f-medium\" >{{option.text }}</div>\r\n <div *ngIf=\"showSubtitle\" class=\"f-extralight\" >\r\n {{option.detail}}\r\n </div>\r\n </div>\r\n </div>\r\n @if ( $index < (options.length - 1) ) {\r\n <span class=\"option-divider\"></span>\r\n }\r\n \r\n }\r\n\r\n @if (options.length == 0) {\r\n <div class=\"fakeinput-alert t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n <!-- ALERTS -->\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-input',\r\n imports: [ CommonModule],\r\n templateUrl: './input.component.html',\r\n styleUrl: '../input.component.scss'\r\n})\r\nexport class UicInputComponent {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Output() clickButton = new EventEmitter<boolean>();\r\n\r\n\r\n disableBtn = false;\r\n disableButton(){\r\n this.clickButton.emit();\r\n this.disableBtn = true;\r\n setTimeout(() => {\r\n this.disableBtn = false;\r\n }, 200);\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n \r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n \r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">\r\n {{label}} \r\n </div>\r\n }\r\n \r\n <div class=\"fakeinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-{{size}} {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"input-container pad-{{size}}\" >\r\n <ng-content class=\"myinput\"></ng-content>\r\n </div> \r\n </div>\r\n\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n \r\n </div>\r\n</div>\r\n","import { Component, forwardRef, HostListener, Input } from '@angular/core';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\nconst base = createValueAccessor<number>();\r\n\r\n@Component({\r\n selector: 'ui-slider',\r\n imports: [ ],\r\n templateUrl: './ui-slider.component.html',\r\n styleUrls: ['./ui-slider.component.scss', '../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSliderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSliderComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() step = 1;\r\n @Input() markerCount = 0;\r\n markers: number[] = [];\r\n\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n\r\n\r\n ngOnInit(){\r\n if (this.markerCount > 1) {\r\n const interval = (this.max - this.min) / (this.markerCount - 1);\r\n this.markers = Array.from({ length: this.markerCount }, (_, i) => this.min + i * interval);\r\n }\r\n }\r\n\r\n get percent() {\r\n return ((this.value - this.min) / (this.max - this.min)) * 100;\r\n }\r\n\r\n updateFromClientX(clientX: number, el: HTMLElement) {\r\n if (this.disabled) return;\r\n if (!el ) return;\r\n \r\n const rect = el.getBoundingClientRect();\r\n const relativeX = Math.min(Math.max(clientX - rect.left, 0), rect.width);\r\n const rawValue = this.min + (relativeX / rect.width) * (this.max - this.min);\r\n\r\n // Ajustar al step\r\n const stepped = Math.round(rawValue / this.step) * this.step;\r\n\r\n this.value = (Math.min(this.max, Math.max(this.min, stepped)));\r\n this.notifyChange(this.value);\r\n }\r\n \r\n dragging = false;\r\n private activeTrack?: HTMLElement;\r\n\r\n onMouseDown(event: MouseEvent, track: HTMLElement) {\r\n event.preventDefault();\r\n this.dragging = true;\r\n this.activeTrack = track;\r\n this.updateFromClientX(event.clientX, track);\r\n }\r\n \r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (this.disabled || !(this.dragging && this.activeTrack)) return;\r\n this.updateFromClientX(event.clientX, this.activeTrack);\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp() {\r\n this.dragging = false;\r\n this.activeTrack = undefined;\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\">\r\n {{label}} \r\n </div>\r\n }\r\n <div class=\"slider-wrapper\">\r\n <div class=\"slider\" #track\r\n (click)=\"updateFromClientX($event.clientX, track)\">\r\n <!-- barra -->\r\n <div class=\"slider-track\"></div>\r\n <div class=\"slider-filled\" [style.width.%]=\"percent\"></div>\r\n \r\n <!-- thumb -->\r\n <div class=\"slider-thumb\"\r\n [style.left.%]=\"percent\"\r\n (mousedown)=\"onMouseDown($event, track)\"\r\n #thumb>\r\n <div class=\"slider-thumb-legend\">{{value}}</div>\r\n </div>\r\n \r\n <!-- markers -->\r\n <div class=\"slider-markers\">\r\n @for(m of markers; track $index){\r\n <div class=\"marker\" \r\n [style.left.%]=\"((m - min) / (max - min)) * 100\">\r\n {{ m }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport {\r\n Overlay,\r\n OverlayRef,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\n\r\ntype CalendarView = 'days' | 'months' | 'years';\r\nconst base = createValueAccessor<string>();\r\n\r\n@Component({\r\n selector: 'ui-date-picker',\r\n imports: [DatePipe, CommonModule, UicButtonComponent],\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss','../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicDatePickerComponent),\r\n multi: true\r\n }\r\n ],\r\n})\r\nexport class UicDatePickerComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() max = '';\r\n @Input() min = '';\r\n\r\n @ViewChild('calendarTemplate') calendarTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n // Fijos\r\n months:string[] = Array.from({ length: 12 }, (_, i) => new Date(2000, i, 1).toLocaleString('default', { month: 'short' }));\r\n today: Date = new Date();\r\n currentYear = +this.today.getFullYear();\r\n maxDate:Date|null= null;\r\n minDate:Date|null=null;\r\n\r\n // Dinámicos\r\n view: CalendarView = 'days';\r\n paintedDate:Date|null = null;\r\n selectedDate = new Date();\r\n selectedYear = this.currentYear;\r\n selectedMonth = null;\r\n monthWeeks:(Date|null)[][] = []; // Arreglo de fechas\r\n decadeRange:number[]=[];\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n ngOnInit(){\r\n this.monthWeeks = this.getWeeks();\r\n this.minDate = this.parseDateLimits(this.min);\r\n this.maxDate = this.parseDateLimits(this.max);\r\n this.paintedDate = this.parseDateLimits(this.value); \r\n }\r\n\r\n // --- Overlay ---\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n\r\n openCalendar() {\r\n if ( this.disabled ) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeCalendar();\r\n }\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(this.host.nativeElement.querySelector('.fakeinput'))\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.calendarTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeCalendar());\r\n\r\n this.view = 'days';\r\n }\r\n\r\n closeCalendar() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n get monthName(): string {\r\n return this.selectedDate.toLocaleString('default', { month: 'long' });\r\n }\r\n \r\n getDecadeRange(): number[] {\r\n const start = Math.floor(this.selectedYear / 20) * 20;\r\n return Array.from({ length: 20 }, (_, i) => start + i);\r\n }\r\n\r\n getWeeks(): (Date | null)[][] {\r\n const weeks: (Date | null)[][] = [];\r\n const firstDay = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n const lastDay = new Date(this.selectedYear, this.selectedDate.getMonth() + 1, 0);\r\n\r\n let current = new Date(firstDay);\r\n current.setDate(current.getDate() - current.getDay());\r\n\r\n while (current <= lastDay || current.getDay() !== 0) {\r\n const week: (Date | null)[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n week.push(\r\n current.getMonth() === this.selectedDate.getMonth()\r\n ? new Date(current)\r\n : null\r\n );\r\n current.setDate(current.getDate() + 1);\r\n }\r\n weeks.push(week);\r\n }\r\n return weeks;\r\n }\r\n\r\n // --- Navegación ---\r\n prev() {\r\n if (this.view === 'days') {\r\n const isJan = this.selectedDate.getMonth() == 0;\r\n const offsetMonth = isJan? -11 : 1;\r\n if ( isJan){\r\n this.selectedYear--;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() - offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear--;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear-=20\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n next() {\r\n if (this.view === 'days') {\r\n const isDec = this.selectedDate.getMonth() == 11;\r\n const offsetMonth = isDec? -11 : 1;\r\n if ( isDec){\r\n this.selectedYear++;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() + offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear++;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear+=20;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n // --- Cambio de vistas ---\r\n changeView() {\r\n if (this.view === 'days') {\r\n this.view = 'months';\r\n } else if (this.view === 'months') {\r\n this.view = 'years';\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n selectYear(year: number) {\r\n this.selectedYear = year;\r\n this.selectedDate = new Date(year, this.selectedDate.getMonth(), 1);\r\n this.view = 'months';\r\n }\r\n selectMonth(monthIndex: number) {\r\n this.selectedDate = new Date(this.selectedYear, monthIndex, 1);\r\n this.monthWeeks = this.getWeeks();\r\n this.view = 'days';\r\n }\r\n\r\n selectDate(date: Date) {\r\n this.value = date.toISOString().split(\"T\")[0];\r\n this.notifyChange(this.value);\r\n this.paintedDate = this.parseDateLimits(this.value);\r\n this.closeCalendar();\r\n }\r\n\r\n isToday(day:Date|null){\r\n if ( day ){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today =(new Date()).toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isPainted(day:Date|null){\r\n if ( day && this.paintedDate){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today = this.paintedDate.toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isThisMonth(m:string){\r\n const monthId = this.months.findIndex(f=>f===m) + 1;\r\n const dayStr = this.selectedYear + \"-\" + monthId;\r\n const thisMonth =(new Date()).toISOString().split(\"T\")[0].substring(0,7).replace(\"-0\",\"-\");\r\n return dayStr == thisMonth;\r\n }\r\n\r\n // MÍNIMO Y MÁXIMO\r\n parseDateLimits(date:string) {\r\n if (date) {\r\n const parsed = new Date(date);\r\n if (isNaN(parsed.getTime())) {\r\n return null;\r\n }else{\r\n return parsed;\r\n }\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n cleanInput(){\r\n this.value = '';\r\n this.notifyChange(this.value);\r\n this.paintedDate = null;\r\n this.closeCalendar();\r\n }\r\n pickToday(){\r\n this.selectedDate = new Date();\r\n this.value = this.selectedDate.toISOString().split(\"T\")[0];\r\n this.notifyChange(this.value);\r\n this.paintedDate = this.parseDateLimits(this.value);\r\n this.closeCalendar();\r\n }\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{ iconColor }} {{ icon }}\"></i>\r\n }\r\n <div\r\n class=\"input-elements\"\r\n [style]=\"icon ? 'max-width: calc(100% - 34px);' : ''\"\r\n >\r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">{{ label }}</div>\r\n }\r\n <div class=\"fakeinput-wrapp \" >\r\n <div class=\"fakeinput \" \r\n [ngClass]=\"{ errorinput: error, disabledinput: disabled }\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-m {{ internalIcon }}\"></i>\r\n }\r\n <input\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n placeholder=\"dd-mm-yyyy\"\r\n [value]=\"value ? (value | date : 'dd/MM/yyyy') : ''\"\r\n readonly\r\n (click)=\"openCalendar()\"\r\n />\r\n </div>\r\n <!-- Overlay Template -->\r\n <ng-template #calendarTemplate>\r\n <div class=\"calendar\">\r\n <div class=\"calendar-header\">\r\n <span (click)=\"changeView()\">\r\n @if (view === 'days') {\r\n {{ monthName }} de {{ selectedYear }}\r\n } @else if (view === 'months') {\r\n {{ selectedYear }}\r\n } @else {\r\n {{ decadeRange[0] }} - {{ decadeRange[decadeRange.length - 1] }}\r\n }\r\n </span>\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-up-line\"\r\n (click)=\"prev()\"\r\n ><</ui-button\r\n >\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-down-line\"\r\n (click)=\"next()\"\r\n >></ui-button\r\n >\r\n </div>\r\n <!-- Vista Days -->\r\n @if (view === 'days') {\r\n <div class=\"calendar-grid\">\r\n @for (d of ['DO','LU','MA','MI','JU','VI','SA']; track $index) {\r\n <div class=\"weekday\">{{ d }}</div>\r\n } @for (week of monthWeeks; track $index) { @for (day of week;\r\n track $index) {\r\n <button\r\n class=\"day\"\r\n [disabled]=\"\r\n (minDate && day ? day < minDate : false) ||\r\n (maxDate && day ? day > maxDate : false)\r\n \"\r\n [class.today]=\"isToday(day)\"\r\n [class.day-selected]=\"isPainted(day)\"\r\n [class.empty]=\"!day\"\r\n (click)=\"day && selectDate(day)\"\r\n >\r\n {{ day?.getDate() }}\r\n </button>\r\n } }\r\n </div>\r\n }\r\n <!-- Vista Months -->\r\n @if (view === 'months') {\r\n <div class=\"calendar-grid months\">\r\n @for (m of months; let i = $index; track i) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"isThisMonth(m)\"\r\n (click)=\"selectMonth(i)\"\r\n >\r\n {{ m }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <!-- Vista Years -->\r\n @if (view === 'years') {\r\n <div class=\"calendar-grid years\">\r\n @for (y of decadeRange; track $index) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"y == currentYear\"\r\n (click)=\"selectYear(y)\"\r\n >\r\n {{ y }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <div class=\"calendar-footer\">\r\n <ui-button\r\n color=\"red\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"cleanInput()\"\r\n >Limpiar</ui-button\r\n >\r\n <ui-button\r\n color=\"blue\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"pickToday()\"\r\n >Hoy</ui-button\r\n >\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!-- ALERTS -->\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField } from '../form.models';\r\nimport { UicSelectComponent } from '../../inputs/select/select.component';\r\nimport { UicInputComponent } from '../../inputs/input/input.component';\r\nimport { UicCheckboxComponent } from '../../inputs/checkbox/checkbox.component';\r\nimport { UicSliderComponent } from '../../inputs/ui-slider/ui-slider.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicDatePickerComponent } from '../../inputs/date-picker/date-picker.component';\r\n\r\n@Component({\r\n selector: 'ui-dynamic-form',\r\n imports: [CommonModule, UicDatePickerComponent,\r\n ReactiveFormsModule, UicSliderComponent, UicSelectComponent, UicInputComponent, UicCheckboxComponent, FormsModule],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrl: './dynamic-form.component.scss'\r\n})\r\nexport class UicDynamicFormComponent {\r\n @Input() fields: FormField[] = [];\r\n @Input({ required: true }) form!: FormGroup;\r\n\r\n flag = false;\r\n @Input() cols = 2;\r\n\r\n // MANEJO DE ERRORES\r\n getErrorMessages(field: FormField): string[] {\r\n \r\n const control = this.form.get(field.name);\r\n if (!control?.errors) return [];\r\n if (!(control.touched || control.dirty)) return [];\r\n\r\n return Object.keys(control.errors).map(errorKey => {\r\n const error = control.errors?.[errorKey];\r\n const mapper = this.errorMessages[errorKey];\r\n return mapper ? mapper(error, field) : `${field.label ?? field.name} es inválido.`;\r\n });\r\n }\r\n \r\n private readonly errorMessages: Record<string, (error: any, field: FormField) => string> = {\r\n required: (_err, field) => `${field.label ?? field.name} es obligatorio.`,\r\n min: (err, field) => `${field.label ?? field.name} debe ser mayor o igual a ${err.min}.`,\r\n max: (err, field) => `${field.label ?? field.name} debe ser menor o igual a ${err.max}.`,\r\n minlength: (err, field) => `${field.label ?? field.name} debe tener al menos ${err.requiredLength} caracteres.`,\r\n maxlength: (err, field) => `${field.label ?? field.name} no puede superar ${err.requiredLength} caracteres.`,\r\n pattern: (_err, field) => `${field.label ?? field.name} no tiene el formato correcto.`\r\n };\r\n}\r\n","<div class=\"form\" [ngStyle]=\"{'--cols': cols, '--min': '180px'}\" [formGroup]=\"form\">\r\n @for (field of fields; track field.name) {\r\n <div class=\"col-span-{{field.colSpan || 1}}\">\r\n \r\n @if ( ['text','number'].includes(field.type) ) {\r\n <ui-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n >\r\n <input \r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [type]=\"field.type\"\r\n [placeholder]=\"field.placeholder??field.label\"\r\n />\r\n </ui-input>\r\n\r\n }\r\n @else if (field.type === 'date') {\r\n <ui-date-picker\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n ></ui-date-picker>\r\n }\r\n @else if (field.type === 'select') {\r\n <ui-select\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-select>\r\n }\r\n @else if (field.type === 'checkbox') {\r\n <ui-checkbox\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [placeholder]=\"field.placeholder??''\"\r\n [tip]=\"field.tip??''\"\r\n ></ui-checkbox>\r\n }\r\n @else if (field.type === 'slider') {\r\n <ui-slider\r\n [min]=\"field.min??0\"\r\n [max]=\"field.max??100\"\r\n [step]=\"field.sliderInterval??1\"\r\n [markerCount]=\"field.sliderMarks??5\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n ></ui-slider>\r\n }\r\n @else if (field.type === 'switch') {\r\n <ui-checkbox\r\n type=\"switch\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [formControlName]=\"field.name\"\r\n [tip]=\"field.tip??''\"\r\n [placeholder]=\"field.placeholder??''\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n >\r\n </ui-checkbox>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-skeleton-loader',\r\n imports: [ CommonModule ],\r\n templateUrl: './skeleton-loader.component.html',\r\n styleUrl: './skeleton-loader.component.scss'\r\n})\r\nexport class UicSkeletonLoaderComponent {\r\n @Input() inputs: number = 3; \r\n @Input() cols: number = 3; \r\n\r\n get gridStyle() {\r\n return {\r\n 'grid-template-columns': `repeat(${this.cols}, 1fr)`\r\n };\r\n }\r\n}\r\n","<div class=\"skeleton-form\" [ngStyle]=\"gridStyle\">\r\n @for (r of [].constructor(inputs); track $index) {\r\n <div class=\"skeleton-input-container\">\r\n <div class=\"skeleton-gradient skeleton-label\"></div>\r\n <div class=\"skeleton-gradient skeleton-input\"></div>\r\n </div>\r\n }\r\n</div>","import { Component, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { FormBlock, FormField, FormResult, FormSchema } from '../form.models';\r\nimport { FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { UicDynamicFormComponent } from '../form/dynamic-form.component';\r\nimport { UicSkeletonLoaderComponent } from '../../skeleton-loader/skeleton-loader.component';\r\nimport { AppSelectOption } from '../../inputs/select/select.component';\r\n\r\n@Component({\r\n selector: 'ui-form-wrapper',\r\n imports: [UicDynamicFormComponent, UicSkeletonLoaderComponent,ReactiveFormsModule],\r\n templateUrl: './form-wrapper.component.html',\r\n styleUrl: './form-wrapper.component.scss'\r\n})\r\nexport class UicFormWrapperComponent implements OnInit, OnChanges {\r\n @Input() schema!: FormSchema;\r\n @Input() externalData: Record<string, AppSelectOption[]> = {};\r\n @Input() loading = false;\r\n @Input() initialValues: Record<string, any> = {};\r\n\r\n useSteps = false;\r\n\r\n @Output() formSubmit = new EventEmitter<FormResult>();\r\n\r\n private readonly fb = inject(FormBuilder);\r\n form: FormGroup = this.fb.group({});\r\n currentStep = 0;\r\n\r\n\r\n ngOnInit(): void {\r\n this.buildForm();\r\n this.useSteps = !!this.schema.steps && this.schema.steps.length > 0;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema']) {\r\n this.handleSchemaChange();\r\n }\r\n\r\n if (changes['externalData'] && !changes['externalData'].firstChange) {\r\n this.updateExtenalData();\r\n this.handleSchemaChange();\r\n }\r\n }\r\n\r\n private handleSchemaChange(): void {\r\n this.buildForm();\r\n this.useSteps = !!this.schema?.steps?.length;\r\n\r\n if (this.useSteps && this.schema?.steps) {\r\n this.currentStep = Math.min(this.currentStep, this.schema.steps.length - 1);\r\n }\r\n }\r\n\r\n handleSubmit() {\r\n if (this.form.valid) {\r\n this.formSubmit.emit({result:true, form:this.form.value});\r\n } else {\r\n //this.logFormErrors(this.form);\r\n this.form.markAllAsTouched();\r\n this.formSubmit.emit({result:false, form:null});\r\n }\r\n }\r\n\r\n private collectAllFields(): FormField[] {\r\n if (!this.schema) return [];\r\n\r\n if (this.useSteps && this.schema.steps ) {\r\n return this.schema.steps.flatMap(step => (step.blocks ?? []).flatMap(b => b.fields ?? []));\r\n }\r\n return (this.schema.blocks ?? []).flatMap(b => b.fields ?? []);\r\n }\r\n\r\n logFormErrors(form: FormGroup | FormArray, parentKey = '') {\r\n Object.keys(form.controls).forEach(key => {\r\n const control = form.get(key);\r\n const controlPath = parentKey ? `${parentKey}.${key}` : key;\r\n\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n // Recursión para anidar grupos\r\n this.logFormErrors(control, controlPath);\r\n } else if (control?.errors) {\r\n console.warn(`❌ Errores en [${controlPath}]:`, control.errors);\r\n }\r\n });\r\n }\r\n\r\n updateExtenalData() {\r\n if (this.useSteps){\r\n this.schema.steps?.forEach(step => {\r\n step.blocks.forEach(block => {\r\n block.fields = this.updateFieldOptions(block);\r\n });\r\n });\r\n }else{\r\n this.schema.blocks?.forEach(block => {\r\n block.fields = this.updateFieldOptions(block);\r\n });\r\n }\r\n }\r\n\r\n updateFieldOptions(block: FormBlock): FormField[] {\r\n return block.fields.map(f => {\r\n if (f.type === 'select') {\r\n let options = f.options ?? []; \r\n Object.keys(this.externalData).forEach(key => {\r\n if (key === f.name) {\r\n options = this.externalData[key] ?? [];\r\n }\r\n });\r\n return { ...f, options: options };\r\n }\r\n return f;\r\n });\r\n }\r\n\r\n private buildForm() {\r\n const fields = this.collectAllFields();\r\n const newForm = this.fb.group({});\r\n fields.forEach(f => {\r\n const validators = this.mapValidatorsFromField(f);\r\n let initial = this.initialValues[f.name] ?? null;\r\n if ((f.type === 'checkbox'||f.type === 'switch') && initial == null) initial = false;\r\n if (f.type === 'slider' && initial == null) initial = f.min ?? 0;\r\n\r\n newForm.addControl(f.name, this.fb.control(initial, validators));\r\n });\r\n this.form = newForm;\r\n }\r\n\r\n private mapValidatorsFromField(f: FormField) {\r\n const validators = [];\r\n if (f.required) validators.push(Validators.required);\r\n if (typeof f.min === 'number') validators.push(Validators.min(f.min));\r\n if (typeof f.max === 'number') validators.push(Validators.max(f.max)); \r\n if (typeof f.maxLength === 'number') validators.push(Validators.maxLength(f.maxLength));\r\n if (typeof f.minLength === 'number') validators.push(Validators.minLength(f.minLength));\r\n if (f.pattern instanceof RegExp) validators.push(Validators.pattern(f.pattern));\r\n return validators;\r\n }\r\n\r\n getCurrentBlocks(): FormBlock[] {\r\n if (!this.schema) return [];\r\n if (this.useSteps) {\r\n const step = this.schema.steps?.[this.currentStep];\r\n return step?.blocks ?? [];\r\n }\r\n return this.schema.blocks ?? [];\r\n }\r\n\r\n nextStep() {\r\n const stepsCount = this.schema?.steps?.length ?? 0;\r\n if (this.useSteps && this.currentStep < stepsCount - 1) {\r\n this.currentStep++;\r\n }\r\n }\r\n\r\n prevStep() {\r\n if (this.useSteps && this.currentStep > 0) {\r\n this.currentStep--;\r\n }\r\n }\r\n\r\n getStepTitle(): string { \r\n return this.schema.steps?.[this.currentStep]?.title ?? '';\r\n }\r\n\r\n\r\n \r\n}\r\n\r\n\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"handleSubmit()\">\r\n\r\n @if (useSteps) {\r\n @if (schema.steps?.length) {\r\n\r\n <div class=\"step-title\">{{ getStepTitle()}}</div>\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"(schema.steps?.[currentStep]?.blocks?.[0]?.fields?.length) ?? 0\"\r\n ></ui-skeleton-loader>\r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n </section>\r\n }\r\n }\r\n <div class=\"step-controls\">\r\n <button type=\"button\" (click)=\"prevStep()\" [disabled]=\"currentStep === 0\">Anterior</button>\r\n\r\n @if ((schema.steps?.length ?? 0) > 0 && currentStep < ((schema.steps?.length ?? 1) - 1)) {\r\n <button type=\"button\" (click)=\"nextStep()\">Siguiente</button>\r\n } @else {\r\n <button type=\"submit\">Guardar</button>\r\n }\r\n </div>\r\n } \r\n } \r\n @else {\r\n @for (block of getCurrentBlocks(); track block.title) {\r\n <section class=\"form-block\">\r\n @if (block.title){\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n }\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"block.fields.length\"\r\n ></ui-skeleton-loader>\r\n } @else {\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n }\r\n </section>\r\n }\r\n }\r\n</form>\r\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AsyncPipe, CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged, finalize, Observable,of,Subject, switchMap, tap } from 'rxjs';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-searcher',\r\n imports: [CommonModule,FormsModule,AsyncPipe, UicButtonComponent],\r\n templateUrl: './searcher.component.html',\r\n styleUrls: ['./searcher.component.scss', '../input.component.scss']\r\n})\r\nexport class UicSearcherComponent {\r\n\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary'|'error'|'light'|'grey' = 'secondary'; //color de ícono externo\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false; \r\n @Input() showSelected = true;\r\n @Input() placeholder = 'Buscar...';\r\n open = false;\r\n \r\n @Input() searchFn!: (query: string) => Observable<any[]>;\r\n @Input() itemDisplayFn: (item: any) => string = item => String(item);\r\n @Input() itemIsEnabledFn: (item: any) => boolean = () => true;\r\n \r\n @Input() manualSearch: boolean = false;\r\n \r\n @Input() selectedItem:any = null;\r\n @Output() selectedItemChange = new EventEmitter<any>();\r\n\r\n isLoading = false;\r\n searchText: string = '';\r\n private readonly searchSubject = new Subject<string>();\r\n results$: Observable<any[]>;\r\n @ViewChild('inputwrapp') toggleButton!: ElementRef;\r\n private unlistener!: () => void;\r\n\r\n constructor(\r\n private readonly renderer:Renderer2,\r\n private readonly overlay: Overlay,\r\n private readonly positionBuilder: OverlayPositionBuilder,\r\n private readonly vcr: ViewContainerRef\r\n ){\r\n this.results$ = this.searchSubject.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.isLoading = true),\r\n switchMap( v => {\r\n if (v.length < 3) {\r\n this.isLoading = false;\r\n return of([]);\r\n }\r\n return this.searchFn(v).pipe( finalize(()=>this.isLoading=false) )}\r\n )\r\n );\r\n }\r\n \r\n openList(){\r\n if (!this.disabled && !this.open){\r\n this.open = true;\r\n this.openOverlay();\r\n if( this.open ){\r\n setTimeout(() => {\r\n this.unlistener = this.renderer.listen('window', 'click',(e:Event)=>{\r\n if(!this.toggleButton.nativeElement.contains(e.target) ){\r\n this.clearSearch();\r\n this.unlistener();\r\n }\r\n });\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n onSearchChange(value: string) {\r\n this.searchText = value; \r\n if (!this.manualSearch) {\r\n this.searchSubject.next(value);\r\n }\r\n }\r\n\r\n triggerSearch() {\r\n this.searchSubject.next(this.searchText);\r\n }\r\n\r\n selectItem(item: any) {\r\n if ( this.itemIsEnabledFn(item)){\r\n this.clearSearch();\r\n this.selectedItemChange.emit(item);\r\n if ( this.showSelected ) this.selectedItem = item;\r\n }\r\n }\r\n\r\n clearSearch() {\r\n this.searchText = '';\r\n this.open = false;\r\n this.closeOverlay();\r\n this.searchSubject.next('');\r\n }\r\n\r\n unselect(){\r\n this.selectedItem = null;\r\n this.selectedItemChange.emit(null);\r\n }\r\n\r\n @ViewChild('dropdownTemplate') dropdownTemplateRef!: TemplateRef<any>;\r\n overlayRef!: OverlayRef;\r\n closeOverlay() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n openOverlay(){\r\n if (this.overlayRef) return;\r\n const width = this.toggleButton.nativeElement.getBoundingClientRect().width;\r\n const positionStrategy = this.positionBuilder\r\n .flexibleConnectedTo(this.toggleButton)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'transparent-backdrop'\r\n });\r\n const templatePortal = new TemplatePortal(this.dropdownTemplateRef, this.vcr);\r\n this.overlayRef.attach(templatePortal);\r\n \r\n this.overlayRef.backdropClick().subscribe(() => this.closeOverlay());\r\n this.overlayRef.overlayElement.style.width = `${width}px`;\r\n }\r\n}\r\n","\r\n<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\"> \r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">\r\n {{label}} \r\n </div>\r\n \r\n <div class=\"fakeinput-wrapp\" #inputwrapp >\r\n <!-- INPUT -->\r\n <div class=\"fakeinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\">\r\n @if (selectedItem == null) { \r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-{{size}} {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"input-container pad-{{size}}\" >\r\n <input\r\n (focus)=\"openList()\"\r\n type=\"text\"\r\n (keydown.enter)=\"triggerSearch()\"\r\n (keydown.escape)=\"clearSearch()\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n </div> \r\n @if (manualSearch) {\r\n <ui-button (click)=\"triggerSearch()\" size=\"t\" ></ui-button>\r\n }\r\n <ui-button size=\"t\" icon=\"ri-close-large-line\" (click)=\"clearSearch()\"></ui-button>\r\n }@else {\r\n <div class=\"input-container pad-{{size}}\" >\r\n <div class=\"selected-item\" >\r\n <div class=\"selected-item-text\" [innerHTML]=\"itemDisplayFn(selectedItem)\"></div> \r\n <ui-button (click)=\"unselect()\" type=\"ghost\" size=\"t\" icon=\"ri-close-large-line\" color=\"red\"></ui-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n \r\n </div>\r\n</div>\r\n\r\n<ng-template #dropdownTemplate>\r\n @if (results$ | async; as items){\r\n <div class=\"results\">\r\n @if (isLoading) {\r\n <div class=\"loader\"></div>\r\n }\r\n <div class=\"input-option-scroll\">\r\n @for (item of items; track $index) {\r\n <div class=\"input-option\" [class.item-disabled]=\"!itemIsEnabledFn(item)\" (click)=\"selectItem(item)\" [innerHTML]=\"itemDisplayFn(item)\">\r\n </div>\r\n }@empty {\r\n <div class=\"t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'uic-table-searcher',\r\n imports: [UicButtonComponent, FormsModule],\r\n templateUrl: './table-searcher.component.html',\r\n styleUrl: './table-searcher.component.scss'\r\n})\r\nexport class UicTableUicSearcherComponent {\r\n @Input() placeholder = '';\r\n @Input() label = 'Buscar';\r\n @Input() searchOnKeydown = false;\r\n @Output() filter = new EventEmitter<string>();\r\n text = \"\";\r\n\r\n reset(){\r\n this.text = '';\r\n this.filter.emit(this.text);\r\n }\r\n\r\n updateText(){\r\n if ( this.searchOnKeydown ){\r\n this.filter.emit(this.text);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"searcher\">\r\n <div class=\"fakeinput\">\r\n <i class=\"ri-search-line\"></i>\r\n <input [(ngModel)]=\"text\" type=\"text\" (ngModelChange)=\"updateText()\" (keydown.enter)=\"filter.emit(text)\" placeholder=\"{{placeholder}}\">\r\n </div>\r\n <ui-button (click)=\"filter.emit(text)\" color=\"black\" type=\"bordered\" rightIcon=\"ri-search-2-line\" size=\"m\">Buscar</ui-button>\r\n <ui-button (click)=\"reset()\" color=\"black\" type=\"bordered\" rightIcon=\"ri-close-circle-line\" size=\"m\">Limpiar</ui-button>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'uic-table-pagination',\r\n imports: [CommonModule, UicButtonComponent, FormsModule],\r\n templateUrl: './table-pagination.component.html',\r\n styleUrl: './table-pagination.component.scss'\r\n})\r\nexport class UicTablePaginationComponent {\r\n @Input() buttonSize: 's'|'m'| 'l' = 'm';\r\n @Input() currentPage = 1;\r\n @Input() totalPages = 1;\r\n @Input() size = 25;\r\n @Input() loading = false;\r\n visiblePages = 3;\r\n pagesInView:number[] = [];\r\n\r\n @Output() pageChange = new EventEmitter<number>();\r\n @Output() sizeChange = new EventEmitter<number>();\r\n\r\n get pages(): (number | string)[] {\r\n const pages: (number | string)[] = [];\r\n const range = Math.floor(this.visiblePages / 2);\r\n let start = Math.max(1, this.currentPage - range);\r\n let end = Math.min(this.totalPages, this.currentPage + range);\r\n\r\n if (end === this.totalPages) {\r\n start = Math.max(1, this.totalPages - (this.visiblePages - 1));\r\n }\r\n if (start === 1) {\r\n end = Math.min(this.totalPages, this.visiblePages);\r\n }\r\n\r\n if (start > 1) {\r\n pages.push(1);\r\n if (start > 2) pages.push('...');\r\n }\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < this.totalPages) {\r\n if (end < this.totalPages - 1) pages.push('...');\r\n pages.push(this.totalPages);\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n changePage(newPage: number) {\r\n if (newPage >= 1 && newPage <= this.totalPages && newPage !== this.currentPage) {\r\n this.currentPage = newPage;\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"table-page\">\r\n <ui-button [disabled]=\"loading || currentPage == 1\" (click)=\"changePage(currentPage - 1)\" [size]=\"buttonSize\" color=\"black\" type=\"bordered\" text=\"Anterior\" icon=\"ri-arrow-left-line\" > </ui-button> \r\n <div class=\"table-numbers\">\r\n @for (p of pages; track $index) {\r\n @if ( p!= '...' ){\r\n <button [disabled]=\"loading\" (click)=\"changePage(+p)\" [ngClass]=\"{'selected':currentPage==p}\" class=\"number\">{{p}}</button>\r\n } @else {\r\n <div class=\"space\">...</div>\r\n }\r\n \r\n }\r\n </div>\r\n <ui-button [disabled]=\"loading || currentPage == totalPages\" (click)=\"changePage(currentPage + 1)\" [size]=\"buttonSize\" color=\"black\" type=\"bordered\" text=\"Siguiente\" rightIcon=\"ri-arrow-right-line\" > </ui-button>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { TableList } from '../table.models';\r\n\r\n@Component({\r\n selector: 'uic-table-list',\r\n imports: [],\r\n templateUrl: './table-list.component.html',\r\n styleUrl: './table-list.component.scss'\r\n})\r\nexport class UicTableListComponent {\r\n @Input() list:TableList[]=[];\r\n}\r\n","@for (item of list; track $index) {\r\n <div class=\"list-item\">\r\n <i [class]=\"item.icon??'ri-capsule-fill'\"></i>\r\n <div class=\"list-item-data\">\r\n <div>{{item.text}}</div>\r\n <p>{{item.subtext}}</p>\r\n </div> \r\n </div>\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'nameInitials'\r\n})\r\nexport class UicNameInitsPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n if (!value){\r\n return \"\";\r\n }\r\n const names:string[] = value.split(\" \");\r\n if (names.length > 1){\r\n return names[0].charAt(0) + names[1].charAt(0).toUpperCase(); \r\n }else if ( names[0].length>=2){\r\n return names[0].substring(0,2).toUpperCase();\r\n }else{\r\n return '';\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableUser } from '../table.models';\r\nimport { UicNameInitsPipe } from '../../../pipes/name-inits.pipe';\r\n\r\n@Component({\r\n selector: 'uic-table-user',\r\n imports: [UicNameInitsPipe],\r\n templateUrl: './table-user.component.html',\r\n styleUrl: './table-user.component.scss'\r\n})\r\nexport class UicTableUserComponent {\r\n @Input() user:TableUser | undefined;\r\n}\r\n","@if (user) {\r\n <div class=\"user-row\">\r\n <div class=\"user-inits\">\r\n {{user.name | nameInitials}}\r\n </div>\r\n <div class=\"user-row-data\">\r\n <div>{{user.name}}</div>\r\n <p>{{user.id}}</p>\r\n </div>\r\n </div>\r\n}@else{\r\n -\r\n}","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const fadeAndRise = trigger('fadeAndRise', [\r\n transition(':enter',[style({opacity:0, maxHeight: '0px'}), animate('.3s ease', style({opacity:1,maxHeight: '200px'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","import { Component } from '@angular/core';\r\nimport { fadeAndRise } from '../../animations/fadeAndRise.animation';\r\n\r\n@Component({\r\n selector: 'ui-tooltip',\r\n imports: [],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n animations: [ fadeAndRise ]\r\n})\r\nexport class UicTooltipComponent {\r\n tooltip: string = '';\r\n left: number = 0;\r\n top: number = 0;\r\n}\r\n","<div @fadeAndRise class=\"tooltip\" \r\n [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" [innerHTML]=\"tooltip\">\r\n</div>","import { ApplicationRef, ComponentRef, createComponent, \r\n Directive, ElementRef, EmbeddedViewRef, EnvironmentInjector, HostListener, Input } from '@angular/core';\r\nimport { UicTooltipComponent } from '../components/tooltip/tooltip.component';\r\n\r\n\r\n@Directive({\r\n selector: '[tip]'\r\n})\r\nexport class UicToolTipDirective {\r\n\r\n\r\n @Input() tip = '';\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private readonly appRef: ApplicationRef, \r\n private readonly injector: EnvironmentInjector) {\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.componentRef === null && this.tip!='' && this.tip!=null) {\r\n this.componentRef = createComponent(UicTooltipComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const domElem = \r\n (this.componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement; \r\n document.body.appendChild(domElem);\r\n this.setTooltipComponentProperties();\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tip;\r\n const {left, right, bottom} = \t\t \t\r\n this.elementRef.nativeElement.getBoundingClientRect();\r\n this.componentRef.instance.left = (right - left) / 2 + left;\r\n this.componentRef.instance.top = bottom;\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.destroy();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { animate, keyframes, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\nexport const highlightRow = trigger('highlightRow', [\r\n state('highlighted', style({ backgroundColor: '#efe1f5' })),\r\n transition('* => highlighted', [\r\n animate('1000ms ease-in', keyframes([\r\n style({ backgroundColor: '#ffffff', offset: 0 }),\r\n style({ backgroundColor: '#efe1f5', offset: 0.3 }),\r\n style({ backgroundColor: '#ffffff', offset: 1.0 }),\r\n ]))\r\n ])\r\n ]);","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const animatedRow = trigger('animatedRow', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateY(-15px)' }),\r\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\r\n ]),\r\n transition(':leave', [\r\n animate('300ms ease-in', style({ opacity: 0, height: 0, padding: 0, margin: 0 }))\r\n ]),\r\n ]);","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TableAction, TableColums, TableRow, TableFilters, TableRowData } from './table.models';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UicTableUicSearcherComponent } from './table-searcher/table-searcher.component';\r\nimport { UicTablePaginationComponent } from './table-pagination/table-pagination.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicTableListComponent } from './table-list/table-list.component';\r\nimport { UicTableUserComponent } from './table-user/table-user.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\nimport { highlightRow } from '../../animations/highlightRow.animation';\r\nimport { animatedRow } from '../../animations/animatedRow.animation';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\n\r\n@Component({\r\n selector: 'ui-table',\r\n imports: [CommonModule, UicButtonComponent, UicTableUserComponent, UicTableListComponent, UicTableUicSearcherComponent, \r\n UicTablePaginationComponent,UicToolTipDirective,UicCheckboxComponent, FormsModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n animations: [ highlightRow, animatedRow ]\r\n})\r\nexport class UicTableComponent {\r\n \r\n @Input() columns:TableColums[] = [];\r\n @Input() data:TableRow[] = [];\r\n @Input() loading = false;\r\n @Input() pages = 0;\r\n @Input() size = 25;\r\n @Input() squeletonRows = 5;\r\n @Input() buttonSize: 'm'|'l'|'s' = 'm';\r\n @Input() highlightedId: string |number = 0;\r\n @Input() headerText = '';\r\n @Input() totalItems = 0;\r\n \r\n @Input() searchEnabled = true;\r\n @Input() searchLabel = 'Buscar';\r\n @Input() searchPlaceholder = 'Buscar';\r\n @Input() striped = false;\r\n @Input() showPagination = true;\r\n @Input() showEmptyMessage = false;\r\n @Input() emptyMessage = 'No hay elementos';\r\n \r\n \r\n \r\n @Output() action = new EventEmitter<TableAction>();\r\n @Output() update = new EventEmitter<TableFilters>();\r\n @Output() checkedChange = new EventEmitter<(string|number)[]>(); \r\n \r\n checkedIds = new Set<string | number >();\r\n sortKey = '';\r\n sortAsc = true;\r\n filter = '';\r\n page=1;\r\n\r\n getValue(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.value??'-';\r\n }\r\n\r\n getFontColor(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return 'trc-' + (col?.textColor??'black');\r\n }\r\n getBackgroundColor(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.color??'transparent';\r\n }\r\n\r\n isValidRule(data:TableRowData[],key:string[]|undefined):boolean{\r\n if ( !key ) return true;\r\n let valid = true;\r\n\r\n key.forEach(k => {\r\n const col = data.find(col => col.key == k);\r\n valid = valid && !!(col?.value);\r\n });\r\n \r\n return valid;\r\n }\r\n\r\n getIcon(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return '<i class=\"' + col?.icon + '\"></i>';\r\n }\r\n\r\n getList(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.list??[];\r\n }\r\n getUser(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return col?.user;\r\n }\r\n\r\n sortClick(key:string){\r\n if ( this.sortKey != key ){\r\n this.sortKey = key;\r\n this.sortAsc = true;\r\n }else if ( this.sortAsc ){\r\n this.sortAsc = false;\r\n }else{\r\n this.sortKey = '';\r\n this.sortAsc = true;\r\n }\r\n this.updateData();\r\n }\r\n sizeChabge(newSize:number){\r\n this.size = newSize;\r\n this.updateData(); \r\n }\r\n pageChage(newPage:number){\r\n this.page = newPage;\r\n this.updateData();\r\n }\r\n search(text:string){\r\n this.filter = text;\r\n this.updateData();\r\n }\r\n updateData(){\r\n this.update.emit({\r\n sortBy:this.sortKey,\r\n isSortAscending:this.sortAsc,\r\n pageNumber:this.page,\r\n pageSize:this.size,\r\n filter: this.filter\r\n })\r\n }\r\n \r\n toggleSelection(id: string|number, checked: boolean){\r\n if (checked) {\r\n this.checkedIds.add(id);\r\n } else {\r\n this.checkedIds.delete(id);\r\n }\r\n this.areAllSelected();\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n \r\n toggleAll(checked: boolean) {\r\n if (checked) {\r\n this.data.forEach(item => this.checkedIds.add(item.id));\r\n } else {\r\n this.checkedIds.clear();\r\n }\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n areAllSelected() {\r\n this.allSelected = this.checkedIds.size === this.data.length;\r\n }\r\n \r\n allSelected = false;\r\n ngOnChanges() {\r\n this.areAllSelected();\r\n }\r\n\r\n doAction(rowId:string|number,key:string){\r\n this.action.emit({rowId,key});\r\n }\r\n\r\n\r\n resetCheckedIds() {\r\n this.checkedIds.clear();\r\n this.checkedChange.emit([]);\r\n }\r\n}\r\n","<div class=\"table-filters\">\r\n @if (searchEnabled) {\r\n <uic-table-searcher (filter)=\"search($event)\" [placeholder]=\"searchPlaceholder\" ></uic-table-searcher>\r\n }\r\n <div class=\"filter-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n</div>\r\n<div class=\"table-wrapper\">\r\n @if (headerText) {\r\n <div class=\"table-topbar\"> {{headerText}} <span class=\"hightlited-note\"> {{totalItems}} </span> </div>\r\n }\r\n <div class=\"table-container\"> \r\n <table [class.striped]=\"striped\">\r\n <thead>\r\n <tr>\r\n @for (header of columns; track $index) {\r\n <th>\r\n <div class=\"th-wrap\">{{header.label.toUpperCase() }} \r\n @if (header.sortEnable) {\r\n <div (click)=\"sortClick(header.key)\" [ngClass]=\"{'sort-active':header.key == sortKey}\">\r\n <i [class]=\"(sortAsc||header.key != sortKey)?'ri-arrow-down-line':'ri-arrow-up-line'\"></i> \r\n </div>\r\n }\r\n @if (header.type=='checkbox') {\r\n <ui-checkbox [(ngModel)]=\"allSelected\" (ngModelChange)=\"toggleAll($event)\"></ui-checkbox>\r\n }\r\n </div>\r\n </th> \r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n\r\n @if (loading) {\r\n @for (item of [].constructor(squeletonRows); track $index) {\r\n <tr class=\"\">\r\n @for (header of columns; track $index) {\r\n <td> <div class=\"row-loader\"></div> </td>\r\n }\r\n </tr> \r\n }\r\n } @else {\r\n @for (row of data; track row.id) {\r\n <tr [@highlightRow]=\"highlightedId === row.id ? 'highlighted' : null\" [class.tr-highlighted]=\"row.highlighted\">\r\n @for (header of columns; track $index) {\r\n <!-- TIPOS DE HEADERS -->\r\n <td [class]=\"getFontColor(row.data,header.key)\">\r\n @if (header.type == 'text') {\r\n {{ getValue(row.data,header.key) }} \r\n }\r\n @if (header.type == 'icon-list') {\r\n <div class=\"table-icon-wrap\">\r\n @for (alert of getList(row.data,header.key); track $index) {\r\n <i [tip]=\"alert.text\" [class]=\"alert.icon + ' alert'\" ></i>\r\n }\r\n </div>\r\n }\r\n @else if (header.type == 'list'){\r\n <uic-table-list [list]=\"getList(row.data,header.key)\"></uic-table-list> \r\n }\r\n @else if (header.type == 'user'){\r\n <uic-table-user [user]=\"getUser(row.data,header.key)\"></uic-table-user> \r\n }\r\n @else if (header.type == 'checkbox'){\r\n <ui-checkbox [ngModel]=\"checkedIds.has(row.id)\" (ngModelChange)=\"toggleSelection(row.id,$event)\" ></ui-checkbox> \r\n }\r\n @else if (header.type == 'actions') { \r\n <div class=\"table-actions\">\r\n @for (btn of header.actions; track $index) {\r\n @if (isValidRule(row.data,btn.rule)) {\r\n <ui-button \r\n [disabled]=\"loading\"\r\n [tip]=\"btn.tooltip??''\"\r\n size=\"s\"\r\n [iconOnly]=\"btn.text==null\"\r\n [text]=\"btn.text??''\"\r\n [icon]=\"btn.icon??''\"\r\n [color]=\"btn.color\"\r\n (click)=\"doAction(row.id,btn.key)\">\r\n </ui-button> \r\n }\r\n } \r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }@empty {\r\n @if (showEmptyMessage) {\r\n <tr> \r\n <td [colSpan]=\"columns.length\">\r\n <div class=\"empty\">{{emptyMessage}} </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n \r\n @if (showPagination) {\r\n <uic-table-pagination \r\n [loading]=\"loading\" \r\n [totalPages]=\"pages\" \r\n [size]=\"size\"\r\n [buttonSize]=\"buttonSize\"\r\n (sizeChange)=\"sizeChabge($event)\"\r\n (pageChange)=\"pageChage($event)\">\r\n </uic-table-pagination>\r\n }\r\n</div>","import { ButtonColor } from \"../button/button.component\";\r\n\r\nexport interface TableColums{\r\n label: string;\r\n key: string\r\n type: ColumnTypes;\r\n sortEnable?: boolean;\r\n actions?: TableButton[];\r\n}\r\nexport interface TableButton{\r\n key: string;\r\n color: ButtonColor;\r\n icon?: string;\r\n text?: string;\r\n tooltip?: string;\r\n rule?: string[];\r\n}\r\nexport interface TableRow{\r\n id: number|string;\r\n data:TableRowData[];\r\n highlighted?:boolean; \r\n}\r\n\r\nexport interface TableRowData{\r\n key: string;\r\n value?: string|number;\r\n list?:TableList[];\r\n user?:TableUser;\r\n icon?: string;\r\n textColor?: TableTextColors;\r\n color?: BackgroundColors;\r\n}\r\nexport interface TableList{text:string; subtext?:string,icon?:string; color?:string};\r\nexport interface TableUser{name:string;id:string;photo?:string,icon?:string};\r\nexport interface TableAction{\r\n rowId: number|string;\r\n key: string;\r\n}\r\nexport type ColumnTypes = 'actions' | 'text' | 'list' |'user' |'checkbox' | 'icon-list';\r\nexport type TableTextColors = 'primary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' ;\r\nexport type BackgroundColors = 'primary' | 'secondary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' | 'transparent' | 'white' ;\r\nexport interface TableFilters {\r\n sortBy:string;\r\n isSortAscending:boolean;\r\n pageNumber:number;\r\n pageSize:number;\r\n filter: string;\r\n }","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\n\r\n\r\n@Component({\r\n selector: 'ui-alert',\r\n imports: [],\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.scss'\r\n})\r\nexport class UiAlertComponent implements OnInit{\r\n @Input() alert!: Alert;\r\n @Output() closeAlert = new EventEmitter<number>();\r\n \r\n interval: any;\r\n progressValue = 0;\r\n animationIntevalMs = 100;\r\n pauseAnimation = false;\r\n id = 0;\r\n\r\n\r\n ngOnInit(){\r\n this.id = this.alert.id;\r\n if(this.alert.duration && this.alert.duration > 0){\r\n const duration = this.alert.duration;\r\n let count = 0;\r\n this.interval = setInterval(() => {\r\n count = this.pauseAnimation? count : count + this.animationIntevalMs;\r\n this.progressValue = Math.floor((count / duration)*100);\r\n if (this.progressValue > 100){\r\n this.close();\r\n }\r\n }, this.animationIntevalMs);\r\n\r\n }\r\n }\r\n\r\n close(){\r\n clearInterval( this.interval );\r\n this.closeAlert.emit(this.id);\r\n }\r\n\r\n \r\n}\r\n","<div [class]=\"'alert ' + alert.type + ' ' + (alert.style??'filled')\" >\r\n @if (alert.showProgressBar) {\r\n <div class=\"alert-process\">\r\n <div class=\"alert-process-bar\" [style.width.%]=\"progressValue\"></div>\r\n </div>\r\n }\r\n <div class=\"alert-body\">\r\n <button class=\"close\" (click)=\"close()\"> ✕ </button>\r\n @if (alert.icon) {\r\n <i [class]=\"'highlighted ' + alert.icon\"></i>\r\n }\r\n <div>\r\n <div class=\"toast-title highlighted\">{{alert.title}}</div>\r\n <div class=\"toast-body\">{{alert.message}}</div>\r\n @if ( alert.okButtonText || alert.cancelButtonText){\r\n <div class=\"toast-buttons \">\r\n @if ( alert.okButtonText ) {\r\n <button style=\"font-weight: 500;\">{{alert.okButtonText}}</button>\r\n }\r\n @if ( alert.cancelButtonText ){\r\n <button (click)=\"close()\">{{alert.cancelButtonText}}</button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { Alert } from './alert.model';\r\n\r\nlet nextId = 1;\r\n\r\nexport function createSuccessAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'success',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createErrorAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'error',\r\n duration: 5000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createWarningAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'warning',\r\n duration: 4000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createInfoAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'info',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Alert, AlertConfigParams } from '../components/push-alerts/alert.model';\r\nimport { createErrorAlert, createSuccessAlert } from '../components/push-alerts/alert.helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicPushAlertService {\r\n\r\n autoIncId = 0;\r\n private readonly alerts$ = new Subject<Alert>();\r\n\r\n get stream() {\r\n return this.alerts$.asObservable();\r\n }\r\n\r\n show(alertData:AlertConfigParams) {\r\n this.autoIncId++;\r\n const alert: Alert = {...alertData,id:this.autoIncId};\r\n this.alerts$.next( alert );\r\n }\r\n\r\n success(message: string, options?: Partial<Alert>) {\r\n this.show(createSuccessAlert(message, options));\r\n }\r\n\r\n error(message: string, options?: Partial<Alert>) {\r\n this.show(createErrorAlert(message, options));\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\nimport { UicPushAlertService } from '../../../services/push-alert.service';\r\nimport { UiAlertComponent } from '../alert/alert.component';\r\n\r\n@Component({\r\n selector: 'ui-alert-container',\r\n imports: [UiAlertComponent],\r\n templateUrl: './alert-container.component.html',\r\n styleUrl: './alert-container.component.scss'\r\n})\r\nexport class UicAlertContainerComponent implements OnInit {\r\n alerts: Alert[] = [];\r\n\r\n constructor(private readonly alertService: UicPushAlertService) {}\r\n\r\n ngOnInit() {\r\n this.alertService.stream.subscribe( alert => {\r\n this.alerts.push(alert);\r\n });\r\n }\r\n\r\n dismis(id:number){\r\n const idx = this.alerts.findIndex(f=>f.id == id);\r\n this.alerts.splice(idx,1);\r\n }\r\n\r\n}\r\n","<div class=\"alert-container\">\r\n @for (alert of alerts; track alert.id){\r\n <ui-alert\r\n (closeAlert)=\"dismis($event)\"\r\n [alert]=\"alert\">\r\n </ui-alert>\r\n } \r\n</div>\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const pushTop = trigger('pushTop', [\r\n transition(':enter',[style({opacity:0, transform: 'translateY(20px)'}), animate('.3s ease', style({opacity:1, transform: 'translateY(0)'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0, transform: 'translateY(-20px)'}))])\r\n ]);","import { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nexport const sideModal = trigger('sideModal', [\r\n state('visible', style({ transform: 'translateX(0)' })),\r\n state('hidden', style({ transform: 'translateX(100%)' })),\r\n\r\n // animación al CREARSE\r\n transition('void => visible', [\r\n style({ opacity: .8, transform: 'translateX(100%)' }),\r\n animate('.5s ease')\r\n ]),\r\n\r\n // animación al CERRAR\r\n transition('visible => hidden', [\r\n animate('.5s ease')\r\n ])\r\n])\r\n\r\nexport const fadeBackdrop =trigger('fadeBackdrop', [\r\n state('visible', style({ opacity: 1 })),\r\n state('hidden', style({ opacity: 0 })),\r\n transition('void => visible', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out')\r\n ]),\r\n transition('visible => hidden', [\r\n animate('300ms ease-in')\r\n ])\r\n ])","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const simpleFade = trigger('simpleFade', [\r\n transition(':enter',[style({opacity:0}), animate('.3s ease', style({opacity:1}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","export const MODAL_DATA = 'MODAL_DATA';\r\nexport const MODAL_COMPONENT = 'MODAL_COMPONENT';\r\nexport const MODAL_CONFIG = 'MODAL_CONFIG';\r\nexport const MODAL_CLOSE_EVENT = 'modalClosed'; \r\nexport const MODAL_CLOSE_REQUEST = 'modalCloserRequested'; ","import { OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { UicModalService } from \"./modal.service\";\r\n\r\nexport class UiModalRef<T = any> {\r\n private readonly _afterClosed = new Subject<{status:boolean, data: T | null}>();\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly modalService: UicModalService\r\n ) {}\r\n\r\n close(result: T | null = null): void {\r\n this.modalService.close(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n closeFloating(result: T | null = null): void {\r\n this.modalService.closeFloating(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n afterClosed(): Observable<{status:boolean, data: T | null}> {\r\n return this._afterClosed.asObservable();\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { ModalConfig } from './modalconfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { pushTop } from '../../../animations/pushTop.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\n\r\n\r\n@Component({\r\n selector: 'ui-modal',\r\n imports: [CommonModule,PortalModule,UicButtonComponent],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations:[pushTop]\r\n})\r\nexport class UicModalComponent {\r\n myConfig:ModalConfig = {};\r\n ready = false;\r\n title='';\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: ModalConfig,\r\n private readonly injector: Injector\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( !this.congif.preventCloseingOutside === true ){\r\n this.modalRef.closeFloating(null);\r\n }\r\n }\r\n\r\n close() {\r\n this.modalRef.closeFloating(null);\r\n }\r\n}\r\n","<div class=\"backdrop\" (click)=\"closeOuside()\"> \r\n <div @pushTop class=\"modal\" \r\n [class]=\"myConfig.size\"\r\n (click)=\"$event.stopPropagation()\">\r\n \r\n @if ( myConfig.title) {\r\n <div class=\"modal-header\">\r\n {{myConfig.title}}\r\n <ui-button color=\"red\" type=\"ghost\" icon=\"ri-close-large-line\" (click)=\"close()\" [iconOnly]=\"true\"></ui-button>\r\n </div>\r\n }\r\n <div class=\"modal-body\" [class.body-padding]=\"myConfig.title!='' && !myConfig.noPadding\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n </div>\r\n\r\n </div>\r\n</div>","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { SideModalConfig } from './sideModalConfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { fadeBackdrop, sideModal } from '../../../animations/sideModal.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\nimport { UicModalService } from '../../../services/modal.service';\r\n\r\n\r\n@Component({\r\n selector: 'ui-side-modal',\r\n imports: [PortalModule,UicButtonComponent],\r\n templateUrl: './side-modal.component.html',\r\n styleUrl: './side-modal.component.scss',\r\n animations: [ sideModal, fadeBackdrop ]\r\n})\r\nexport class UicSideModalComponent {\r\n overlayRef!: OverlayRef; // lo setea el servicio\r\n state: 'visible' | 'hidden' = 'visible';\r\n show = true;\r\n myConfig:SideModalConfig = {};\r\n ready = false;\r\n title='';\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: SideModalConfig,\r\n private readonly injector: Injector,\r\n private readonly modal:UicModalService\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.overlayRef){\r\n this.overlayRef.hostElement.addEventListener(MODAL_CLOSE_REQUEST, () => {\r\n this.close();\r\n });\r\n }\r\n}\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( !this.congif.preventCloseingOutside === true ){\r\n this.close();\r\n }\r\n }\r\n\r\n close() {\r\n this.state = 'hidden';\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (event.toState === 'hidden' && event.triggerName === 'sideModal') {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n save(){\r\n this.modal.triggerSave();\r\n }\r\n}\r\n","<div [@fadeBackdrop]=\"state\" class=\"backdrop\" (click)=\"closeOuside()\"> \r\n</div>\r\n<div [@sideModal]=\"state\" \r\n (@sideModal.done)=\"onAnimationDone($event)\" \r\n class=\"sidemodal\" \r\n [style.padding-top]=\"myConfig.headerEnabled?'28px':'0'\"\r\n [style.width]=\"myConfig.width??'60%'\" \r\n (click)=\"$event.stopPropagation()\">\r\n @if (myConfig.headerEnabled) {\r\n <ui-button class=\"close-icon\" (click)=\"close()\" icon=\"ri-close-large-line\" type=\"ghost\" color=\"black\" [iconOnly]=\"true\" size=\"m\"></ui-button>\r\n }\r\n <div class=\"sidemodal-body\" [class.body-padding]=\"myConfig.title!=''\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n </div>\r\n @if (myConfig.footerEnabled) {\r\n <div class=\"sidemodal-footer\">\r\n @if (myConfig.showCancelButton) {\r\n <ui-button (click)=\"close()\" color=\"black\" size=\"l\" type=\"bordered\" icon=\"ri-close-line\">{{myConfig.footerCancelButtonText??'Cancelar'}}</ui-button>\r\n }\r\n <ui-button (click)=\"save()\" color=\"black\" size=\"l\" rightIcon=\"ri-check-line\">{{myConfig.footerOkButtonText??'Siguiente'}}</ui-button>\r\n </div>\r\n }\r\n</div>","import { EnvironmentInjector, inject, Injectable, Injector, Type } from '@angular/core';\r\nimport { MODAL_CLOSE_EVENT, MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG } from './modal.constant';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { UiModalRef } from './modaRef';\r\nimport { ModalConfig } from '../components/modal/floating-modal/modalconfig.model';\r\nimport { SideModalConfig } from '../components/modal/side-modal/sideModalConfig.model';\r\nimport { UicModalComponent } from '../components/modal/floating-modal/modal.component';\r\nimport { UicSideModalComponent } from '../components/modal/side-modal/side-modal.component';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicModalService {\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly envInjector = inject(EnvironmentInjector);\r\n\r\n openFloatingModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,true);\r\n }\r\n\r\n openSideModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: SideModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,false);\r\n }\r\n\r\n private openModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig|SideModalConfig = {},\r\n isFloating = false\r\n ){\r\n const overlayConfig = this.createOverlayConfig(isFloating);\r\n const overlayRef = this.overlay.create(overlayConfig);\r\n const modalRef = new UiModalRef(overlayRef, this);\r\n const injector = this.createModalInjector(overlayRef,modalRef,component,config); \r\n if ( isFloating){\r\n const modalPortal = new ComponentPortal(UicModalComponent, null, injector);\r\n overlayRef.attach(modalPortal);\r\n }else{\r\n const modalPortal = new ComponentPortal( UicSideModalComponent, null, injector);\r\n const componentRef = overlayRef.attach(modalPortal);\r\n componentRef.instance.overlayRef = overlayRef;\r\n }\r\n return modalRef; \r\n }\r\n\r\n close(overlayRef: OverlayRef, result: any = null): void { \r\n overlayRef.hostElement.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_REQUEST, { detail: result })\r\n );\r\n } \r\n\r\n closeFloating(overlayRef: OverlayRef, result: any = null){\r\n overlayRef.backdropElement?.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_EVENT, { detail: result })\r\n );\r\n overlayRef.dispose();\r\n }\r\n\r\n private readonly _save$ = new Subject<void>();\r\n save$ = this._save$.asObservable();\r\n\r\n triggerSave(): void {\r\n this._save$.next();\r\n }\r\n\r\n private createOverlayConfig(isFloating: boolean): OverlayConfig {\r\n const positionStrategy = isFloating \r\n ? this.overlay.position().global().left()\r\n : this.overlay.position().global().right();\r\n\r\n return {\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-dark-backdrop',\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n disposeOnNavigation: true, \r\n };\r\n }\r\n\r\n private createModalInjector<TComponent>(\r\n overlayRef: OverlayRef,\r\n modalRef: UiModalRef,\r\n component: Type<TComponent>,\r\n config: ModalConfig | SideModalConfig\r\n ): Injector {\r\n return Injector.create({\r\n providers: [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: UiModalRef, useValue: modalRef },\r\n { provide: MODAL_COMPONENT, useValue: component },\r\n { provide: MODAL_CONFIG, useValue: config }\r\n ],\r\n parent: this.envInjector,\r\n });\r\n }\r\n}\r\n\r\n","import { Component, Inject } from '@angular/core';\r\nimport { AlertData, AlertResponseData } from './tiny-alert.model';\r\nimport { MODAL_DATA } from '../../services/modal.constant';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UiModalRef } from '../../services/modaRef';\r\n\r\n@Component({\r\n selector: 'ui-tiny-alert',\r\n imports: [UicButtonComponent],\r\n templateUrl: './tiny-alert.component.html',\r\n styleUrl: './tiny-alert.component.scss'\r\n})\r\nexport class TinyAlertComponent {\r\n data:AlertData;\r\n constructor(\r\n @Inject(MODAL_DATA) inData:{alert:AlertData,editing:boolean},\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef )\r\n {\r\n this.data = inData.alert;\r\n }\r\n response:AlertResponseData = {};\r\n\r\n\r\n close(value:boolean){\r\n this.modalRef.closeFloating(value?this.response:null);\r\n }\r\n}\r\n","<div class=\"alert-wrapper\">\r\n @if (data.iconPath != '') {\r\n <img [src]=\"data.iconPath\" alt=\"\"> \r\n }\r\n <h3> {{data.title}} </h3>\r\n <div class=\"alert-body\" [innerHTML]=\"data.body\"> </div>\r\n <div class=\"card-buttons\">\r\n @if (data.showCancelButton) {\r\n <ui-button (click)=\"close(false)\" type=\"bordered\" [color]=\"data.cancelButtonColor??'primary'\" size=\"l\"> {{data.cancelButtonText??'Cancelar'}} </ui-button>\r\n }\r\n <ui-button (click)=\"close(true)\" [color]=\"data.okButtonColor??'primary'\" size=\"l\"> {{data.okButtonText??'Continuar'}} </ui-button>\r\n </div>\r\n <button class=\"floating-close\" (click)=\"close(false)\" >\r\n <i class=\"ri-close-line\"></i>\r\n </button>\r\n</div>\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { AlertData, AlertResponse } from '../components/tiny-alert/tiny-alert.model';\r\nimport { TinyAlertComponent } from '../components/tiny-alert/tiny-alert.component';\r\nimport { UicModalService } from './modal.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicTinyAlertService {\r\n\r\n private readonly modal = inject(UicModalService);\r\n\r\n showAlert(data: AlertData): Promise<AlertResponse> {\r\n return new Promise<AlertResponse>((resolve) => {\r\n this.modal.openFloatingModal(TinyAlertComponent, {\r\n data: { alert: data }\r\n }).afterClosed().subscribe(result => {\r\n resolve({\r\n value: result?.status,\r\n data: result?.data\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","// COMPONENTS\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/inputs/checkbox/checkbox.component';\r\nexport * from './lib/components/inputs/toggle-button/toggle-button.component';\r\nexport * from './lib/components/dynamic-form/form-wrapper/form-wrapper.component';\r\nexport * from './lib/components/inputs/input/input.component';\r\nexport * from './lib/components/inputs/date-picker/date-picker.component';\r\nexport * from './lib/components/inputs/searcher/searcher.component';\r\nexport * from './lib/components/inputs/select/select.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/table/table.models';\r\nexport * from './lib/components/skeleton-loader/skeleton-loader.component';\r\nexport * from './lib/components/push-alerts/alert-container/alert-container.component';\r\nexport * from './lib/components/inputs/ui-slider/ui-slider.component';\r\n\r\n// ANIMATIONS\r\nexport * from './lib/animations/animatios.index';\r\n\r\n\r\n// FORMULARIOS\r\nexport * from './lib/components/dynamic-form/form.models';\r\n\r\n// SERVICIOS\r\nexport * from './lib/services/modal.service';\r\nexport * from './lib/services/modaRef';\r\nexport * from './lib/services/modal.constant';\r\nexport * from './lib/services/tiny-alert.service';\r\nexport * from './lib/components/tiny-alert/tiny-alert.model';\r\nexport * from './lib/services/push-alert.service';\r\n\r\n// PIPES\r\nexport * from './lib/pipes/name-inits.pipe';\r\n\r\n// DIRECTIVES\r\nexport * from './lib/directives/tool-tip.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["base","i1","i2","i1.UicPushAlertService","i1.UicModalService"],"mappings":";;;;;;;;;;;;;MASa,kBAAkB,CAAA;IACpB,IAAI,GAAC,EAAE;IACP,IAAI,GAAC,EAAE;IACP,SAAS,GAAC,EAAE;IACZ,QAAQ,GAAC,KAAK;IACd,QAAQ,GAAC,KAAK;IACd,OAAO,GAAC,KAAK;IACb,IAAI,GAA2B,GAAG;IAClC,IAAI,GAAoC,QAAQ;IAChD,KAAK,GAAe,SAAS;IAEtC,eAAe,GAAG,EAAE;IAEpB,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI;;wGAdzE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT/B,o8BA2BS,EAAA,MAAA,EAAA,CAAA,0lOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBG,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,o8BAAA,EAAA,MAAA,EAAA,CAAA,0lOAAA,CAAA,EAAA;8BAKd,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;SEfa,mBAAmB,GAAA;AACjC,IAAA,MACe,iBAAiB,CAAA;AACrB,QAAA,KAAK;AACJ,QAAA,WAAW,GAAG,IAAI,YAAY,EAAK;AAE7C,QAAA,QAAQ,GAAuB,MAAK,GAAG;AACvC,QAAA,SAAS,GAAe,MAAK,GAAG;AAEhC,QAAA,UAAU,CAAC,GAAM,EAAA;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;AAGlB,QAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,QAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,QAAA,gBAAgB,CAAE,UAAmB,EAAA;;;AAIrC,QAAA,YAAY,CAAC,KAAQ,EAAA;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,SAAS,EAAE;;4GA3BL,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;gGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;gGAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;sBAD/B;kCAEU,KAAK,EAAA,CAAA;0BAAb;oBACS,WAAW,EAAA,CAAA;0BAApB;;AA6BH,IAAA,OAAO,iBAAiB;AACzB;;AChCD,MAAMA,MAAI,GAAG,mBAAmB,EAAW;AAerC,MAAO,oBAAqB,SAAQA,MAAI,CAAA;AACnC,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;IAChC,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;IACR,IAAI,GAAqB,OAAO;IAChC,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IAGxB,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAC;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;wGAbvB,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EARrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA;AACR,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBH,q6CAiDA,EAAA,MAAA,EAAA,CAAA,spEAAA,EAAA,2lIAAA,CAAA,EAAA,CAAA;;4FD7Ba,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,EAAE,EAGD,SAAA,EAAA;AACR,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,q6CAAA,EAAA,MAAA,EAAA,CAAA,spEAAA,EAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MEpBU,iBAAiB,CAAA;IACnB,OAAO,GAAG,KAAK;AACd,IAAA,aAAa,GAAG,IAAI,YAAY,EAAW;IAC5C,QAAQ,GAAG,KAAK;IAChB,WAAW,GAAG,EAAE;IAChB,KAAK,GAAG,EAAE;IAInB,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;wGAZ5B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,oNCR9B,iMAQS,EAAA,MAAA,EAAA,CAAA,qlCAAA,EAAA,2lIAAA,CAAA,EAAA,CAAA;;4FDAI,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,QAAA,EAAA,iMAAA,EAAA,MAAA,EAAA,CAAA,qlCAAA,EAAA,2lIAAA,CAAA,EAAA;8BAKF,OAAO,EAAA,CAAA;sBAAf;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AELH,MAAMA,MAAI,GAAG,mBAAmB,EAAY;AAetC,MAAO,kBAAmB,SAAQA,MAAI,CAAA;AACjC,IAAA,IAAI,GAAG,EAAE,CAAC;AACV,IAAA,SAAS,GAA0B,SAAS,CAAC;AAC7C,IAAA,YAAY,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,GAAoB,GAAG,CAAC;;IAE5B,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;IACR,YAAY,GAAG,KAAK;IAC7B,SAAS,GAAG,iBAAiB;;IAEpB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAqB,EAAE;AAER,IAAA,gBAAgB;AACvC,IAAA,UAAU;AAClB,IAAA,gBAAgB,GAAuB;AACrC,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3E,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;KAC5E;IAED,cAAc,GAA2B,IAAI;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;IAEvD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,iBAAiB;;AAG1D,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;;;;IAKjF,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE;;AAGlB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;AACjE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW;AAE/B,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,CAAC,QAAQ;aAClB,mBAAmB,CAAC,KAAK;AACzB,aAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB;aACnC,sBAAsB,CAAC,IAAI;aAC3B,QAAQ,CAAC,KAAK,CAAC;QAEpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,KAAK;AACL,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;YACjD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;;AAGnE,IAAA,YAAY,CAAC,MAA6B,EAAA;QACxC,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;QAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,IAAE,IAAI,CAAC;;IAIrC,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAK;;;AAIlB,IAAA,UAAU,CAAC,KAA6B,EAAA;AAC/C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,IAAI;;wGAtF/D,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EARlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;SACF,ECrBH,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q6FA8DM,kpIDlDM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAWX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACZ,OAAA,EAAA,CAAC,YAAY,CAAC,EAGZ,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,q6FAAA,EAAA,MAAA,EAAA,CAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAE8B,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB;;;ME7BlB,iBAAiB,CAAA;AACnB,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;AAChC,IAAA,YAAY,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,GAAoB,GAAG,CAAC;;IAE5B,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;;IAER,QAAQ,GAAG,KAAK;AACf,IAAA,WAAW,GAAI,IAAI,YAAY,EAAW;IAGpD,UAAU,GAAG,KAAK;IAClB,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;SACxB,EAAE,GAAG,CAAC;;wGApBE,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV9B,ojCA+BA,EAAA,MAAA,EAAA,CAAA,2lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzBa,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIZ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAE,YAAY,CAAC,EAAA,QAAA,EAAA,ojCAAA,EAAA,MAAA,EAAA,CAAA,2lIAAA,CAAA,EAAA;8BAKf,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;AEhBH,MAAMA,MAAI,GAAG,mBAAmB,EAAU;AAepC,MAAO,kBAAmB,SAAQA,MAAI,CAAA;AACjC,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;IAChC,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;IAER,GAAG,GAAG,CAAC;IACP,GAAG,GAAG,GAAG;IACT,IAAI,GAAG,CAAC;IACR,WAAW,GAAG,CAAC;IACxB,OAAO,GAAa,EAAE;IAEb,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IAGxB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACxB,YAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;;;AAI9F,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;;IAGhE,iBAAiB,CAAC,OAAe,EAAE,EAAe,EAAA;QAChD,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,EAAE;YAAG;AAEV,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;AAG5E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;QAE5D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG/B,QAAQ,GAAG,KAAK;AACR,IAAA,WAAW;IAEnB,WAAW,CAAC,KAAiB,EAAE,KAAkB,EAAA;QAC/C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;;AAI9C,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;YAAE;QAC3D,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;;IAIzD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;;wGA9DnB,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EARnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACR,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBH,47CA4CA,EAAA,MAAA,EAAA,CAAA,4wCAAA,EAAA,2lIAAA,CAAA,EAAA,CAAA;;4FDxBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,EAAI,EAGH,SAAA,EAAA;AACR,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,47CAAA,EAAA,MAAA,EAAA,CAAA,4wCAAA,EAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAwCD,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;gBAO9C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,kBAAkB;;;AEjElC,MAAM,IAAI,GAAG,mBAAmB,EAAU;AAepC,MAAO,sBAAuB,SAAQ,IAAI,CAAA;AACrC,IAAA,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAgB,OAAO;AAChC,IAAA,YAAY,GAAG,EAAE,CAAC;;IAElB,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;;IAER,QAAQ,GAAG,KAAK;IAChB,GAAG,GAAG,EAAE;IACR,GAAG,GAAG,EAAE;AAEc,IAAA,gBAAgB;AACvC,IAAA,UAAU;;AAGlB,IAAA,MAAM,GAAY,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1H,IAAA,KAAK,GAAS,IAAI,IAAI,EAAE;IACxB,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;IACvC,OAAO,GAAY,IAAI;IACvB,OAAO,GAAW,IAAI;;IAGtB,IAAI,GAAiB,MAAM;IAC3B,WAAW,GAAa,IAAI;AAC5B,IAAA,YAAY,GAAG,IAAI,IAAI,EAAE;AACzB,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW;IAC/B,aAAa,GAAG,IAAI;AACpB,IAAA,UAAU,GAAmB,EAAE,CAAC;IAChC,WAAW,GAAU,EAAE;AAEN,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;IAEvD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAIrD,IAAA,gBAAgB,GAAuB;AACrC,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3E,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;KAC5E;IAED,YAAY,GAAA;QACV,IAAK,IAAI,CAAC,QAAQ;YAAG;AAErB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;;AAGtB,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,CAAC,QAAQ;aAClB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;AACvE,aAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB;aACnC,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;QAEpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;AAChB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;YACjD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAErE,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;;IAGpB,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAK;;;AAI3B,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;;IAGvE,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE;QACrD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;;IAGxD,QAAQ,GAAA;QACN,MAAM,KAAK,GAAsB,EAAE;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAEhF,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAErD,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YACnD,MAAM,IAAI,GAAoB,EAAE;AAChC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,gBAAA,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ;AAC/C,sBAAE,IAAI,IAAI,CAAC,OAAO;sBAChB,IAAI,CACT;gBACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;;AAExC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAElB,QAAA,OAAO,KAAK;;;IAId,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC/C,YAAA,MAAM,WAAW,GAAG,KAAK,GAAE,CAAC,EAAE,GAAG,CAAC;YAClC,IAAK,KAAK,EAAC;gBACT,IAAI,CAAC,YAAY,EAAE;;YAErB,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;AAC9F,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;;AAC5B,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;aAC3E;AACL,YAAA,IAAI,CAAC,YAAY,IAAE,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;;IAI5C,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE;AAChD,YAAA,MAAM,WAAW,GAAG,KAAK,GAAE,CAAC,EAAE,GAAG,CAAC;YAClC,IAAK,KAAK,EAAC;gBACT,IAAI,CAAC,YAAY,EAAE;;YAErB,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;AAC9F,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;;AAC5B,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;aAC3E;AACL,YAAA,IAAI,CAAC,YAAY,IAAE,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;;;IAK5C,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;;AACf,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;;AAG5C,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;;AAEtB,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;;AAGpB,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE;;AAGtB,IAAA,OAAO,CAAC,GAAa,EAAA;QACnB,IAAK,GAAG,EAAE;AACR,YAAA,MAAM,MAAM,GAAI,GAAG,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,MAAM,KAAK,GAAE,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,OAAO,MAAM,IAAI,KAAK;;aACnB;AACH,YAAA,OAAO,KAAK;;;AAIhB,IAAA,SAAS,CAAC,GAAa,EAAA;AACrB,QAAA,IAAK,GAAG,IAAI,IAAI,CAAC,WAAW,EAAC;AAC3B,YAAA,MAAM,MAAM,GAAI,GAAG,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,MAAM,IAAI,KAAK;;aACnB;AACH,YAAA,OAAO,KAAK;;;AAIhB,IAAA,WAAW,CAAC,CAAQ,EAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAE,CAAC,KAAG,CAAC,CAAC,GAAG,CAAC;QACnD,MAAM,MAAM,GAAI,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,OAAO;AACjD,QAAA,MAAM,SAAS,GAAE,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,GAAG,CAAC;QAC1F,OAAO,MAAM,IAAI,SAAS;;;AAI5B,IAAA,eAAe,CAAC,IAAW,EAAA;QACzB,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;AAC3B,gBAAA,OAAO,IAAI;;iBACR;AACH,gBAAA,OAAO,MAAM;;;aAEZ;AACH,YAAA,OAAO,IAAI;;;IAIf,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,aAAa,EAAE;;IAEtB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE;;wGA3OX,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EARtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BH,g9IAuIA,EDrHY,MAAA,EAAA,CAAA,mvCAAA,EAAA,2lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,QAAQ,EAAE,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6HAAE,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAWzC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,QAAQ,EAAE,YAAY,EAAE,kBAAkB,CAAC,EAG1C,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,g9IAAA,EAAA,MAAA,EAAA,CAAA,mvCAAA,EAAA,2lIAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAE8B,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB;;;MEzBlB,uBAAuB,CAAA;IACzB,MAAM,GAAgB,EAAE;AACN,IAAA,IAAI;IAE/B,IAAI,GAAG,KAAK;IACH,IAAI,GAAG,CAAC;;AAGjB,IAAA,gBAAgB,CAAC,KAAgB,EAAA;AAE/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;QAC/B,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAElD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAG;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC3C,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAA,aAAA,CAAe;AACpF,SAAC,CAAC;;AAGa,IAAA,aAAa,GAA6D;AACzF,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAkB,gBAAA,CAAA;QACzE,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,6BAA6B,GAAG,CAAC,GAAG,CAAG,CAAA,CAAA;QACxF,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,6BAA6B,GAAG,CAAC,GAAG,CAAG,CAAA,CAAA;QACxF,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,wBAAwB,GAAG,CAAC,cAAc,CAAc,YAAA,CAAA;QAC/G,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,qBAAqB,GAAG,CAAC,cAAc,CAAc,YAAA,CAAA;AAC5G,QAAA,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAG,EAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAgC,8BAAA;KACvF;wGA5BU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,qICjBpC,o6FAgFA,EAAA,MAAA,EAAA,CAAA,kzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAC5C,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,0KAAG,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,oJAAE,WAAW,EAAA,CAAA,EAAA,CAAA;;4FAIzG,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA,CAAC,YAAY,EAAE,sBAAsB;wBAC5C,mBAAmB,EAAE,kBAAkB,EAAG,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,o6FAAA,EAAA,MAAA,EAAA,CAAA,kzBAAA,CAAA,EAAA;8BAK5G,MAAM,EAAA,CAAA;sBAAd;gBAC0B,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAGhB,IAAI,EAAA,CAAA;sBAAZ;;;MEbU,0BAA0B,CAAA;IAC5B,MAAM,GAAW,CAAC;IAClB,IAAI,GAAW,CAAC;AAEzB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO;AACL,YAAA,uBAAuB,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAQ,MAAA;SACrD;;wGAPQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTvC,sVAOM,EAAA,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFO,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIZ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAE,YAAY,CAAE,EAAA,QAAA,EAAA,sVAAA,EAAA,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA;8BAKhB,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MEEU,uBAAuB,CAAA;AACzB,IAAA,MAAM;IACN,YAAY,GAAsC,EAAE;IACpD,OAAO,GAAG,KAAK;IACf,aAAa,GAAwB,EAAE;IAEhD,QAAQ,GAAG,KAAK;AAEN,IAAA,UAAU,GAAG,IAAI,YAAY,EAAc;AAEpC,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IACzC,IAAI,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,WAAW,GAAG,CAAC;IAGf,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;AAGrE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,IAAI,CAAC,kBAAkB,EAAE;;AAG3B,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;YACnE,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,kBAAkB,EAAE;;;IAIrB,kBAAkB,GAAA;QACxB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM;QAE5C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;YACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;;;IAI/E,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC,CAAC;;aACpD;;AAEL,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,IAAI,EAAC,CAAC;;;IAI3C,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;QAE3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG;AACvC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;;QAE5F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;;AAGhE,IAAA,aAAa,CAAC,IAA2B,EAAE,SAAS,GAAG,EAAE,EAAA;AACvD,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,YAAA,MAAM,WAAW,GAAG,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,GAAG,GAAG;YAE3D,IAAI,OAAO,YAAY,SAAS,IAAI,OAAO,YAAY,SAAS,EAAE;;AAEhE,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC;;AACnC,iBAAA,IAAI,OAAO,EAAE,MAAM,EAAE;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAiB,cAAA,EAAA,WAAW,CAAI,EAAA,CAAA,EAAE,OAAO,CAAC,MAAM,CAAC;;AAElE,SAAC,CAAC;;IAGJ,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAG;AAChC,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;oBAC1B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/C,iBAAC,CAAC;AACJ,aAAC,CAAC;;aACC;YACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAG;gBAClC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/C,aAAC,CAAC;;;AAIN,IAAA,kBAAkB,CAAC,KAAgB,EAAA;QACjC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAG;AAC1B,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvB,gBAAA,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE;AAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC3C,oBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE;wBAClB,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;;AAE1C,iBAAC,CAAC;gBACF,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;;AAEnC,YAAA,OAAO,CAAC;AACV,SAAC,CAAC;;IAGI,SAAS,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACjC,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjD,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI;AAChD,YAAA,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,KAAK,OAAO,IAAI,IAAI;gBAAE,OAAO,GAAG,KAAK;YACpF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI;AAAE,gBAAA,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAEhE,YAAA,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;;AAGX,IAAA,sBAAsB,CAAC,CAAY,EAAA;QACzC,MAAM,UAAU,GAAG,EAAE;QACrB,IAAI,CAAC,CAAC,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACpD,QAAA,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,QAAA,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,QAAA,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvF,QAAA,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,CAAC,OAAO,YAAY,MAAM;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/E,QAAA,OAAO,UAAU;;IAGnB,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAClD,YAAA,OAAO,IAAI,EAAE,MAAM,IAAI,EAAE;;AAE3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;;IAGjC,QAAQ,GAAA;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,CAAC,EAAE;YACtD,IAAI,CAAC,WAAW,EAAE;;;IAItB,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,WAAW,EAAE;;;IAItB,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,EAAE;;wGAtJhD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,uPCbpC,u6DAyDA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhDY,uBAAuB,EAAE,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,0FAAC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAItE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,CAAC,uBAAuB,EAAE,0BAA0B,EAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,u6DAAA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA;8BAKzE,MAAM,EAAA,CAAA;sBAAd;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAIS,UAAU,EAAA,CAAA;sBAAnB;;;MEPU,oBAAoB,CAAA;AAiCZ,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,eAAA;AACA,IAAA,GAAA;AAlCV,IAAA,IAAI,GAAG,EAAE,CAAC;AACV,IAAA,SAAS,GAAkD,WAAW,CAAC;AACvE,IAAA,YAAY,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,GAAoB,GAAG,CAAC;;IAE5B,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,GAAG,GAAG,EAAE;;IAER,QAAQ,GAAG,KAAK;IAChB,YAAY,GAAG,IAAI;IACnB,WAAW,GAAG,WAAW;IAClC,IAAI,GAAG,KAAK;AAEH,IAAA,QAAQ;IACR,aAAa,GAA0B,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;AAC3D,IAAA,eAAe,GAA2B,MAAM,IAAI;IAEpD,YAAY,GAAY,KAAK;IAE7B,YAAY,GAAO,IAAI;AACtB,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO;IAEtD,SAAS,GAAG,KAAK;IACjB,UAAU,GAAW,EAAE;AACN,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACtD,IAAA,QAAQ;AACiB,IAAA,YAAY;AAC7B,IAAA,UAAU;AAElB,IAAA,WAAA,CACmB,QAAkB,EAClB,OAAgB,EAChB,eAAuC,EACvC,GAAqB,EAAA;QAHrB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAG,CAAA,GAAA,GAAH,GAAG;AAEpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACrC,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAChC,SAAS,CAAE,CAAC,IAAG;AACb,YAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;YAEf,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAE,QAAQ,CAAC,MAAI,IAAI,CAAC,SAAS,GAAC,KAAK,CAAC,CAAE;SAAC,CACpE,CACF;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAI,IAAI;YACjB,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAO,KAAG;AAClE,wBAAA,IAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;4BACtD,IAAI,CAAC,WAAW,EAAE;4BAClB,IAAI,CAAC,UAAU,EAAE;;AAErB,qBAAC,CAAC;iBACH,EAAE,GAAG,CAAC;;;;AAKb,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAIlC,aAAa,GAAA;QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG1C,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,IAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC;YAC9B,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,IAAK,IAAI,CAAC,YAAY;AAAM,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;IAIxD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;QACjB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;IAG7B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGL,IAAA,mBAAmB;AAClD,IAAA,UAAU;IACV,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAK;;;IAG3B,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU;YAAE;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAC3E,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY;AACrC,aAAA,aAAa,CAAC;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB;SACF;aACA,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC;AACF,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC;AAC7E,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;;wGA5IhD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,osBCdjC,0sFAyEA,EAAA,MAAA,EAAA,CAAA,suBAAA,EAAA,2lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/DY,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+mBAAY,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,YAAY,EAAC,WAAW,EAAC,SAAS,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,0sFAAA,EAAA,MAAA,EAAA,CAAA,suBAAA,EAAA,2lIAAA,CAAA,EAAA;4KAMxD,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBACS,kBAAkB,EAAA,CAAA;sBAA3B;gBAMwB,YAAY,EAAA,CAAA;sBAApC,SAAS;uBAAC,YAAY;gBAuEQ,mBAAmB,EAAA,CAAA;sBAAjD,SAAS;uBAAC,kBAAkB;;;MExGlB,4BAA4B,CAAA;IAC9B,WAAW,GAAG,EAAE;IAChB,KAAK,GAAG,QAAQ;IAChB,eAAe,GAAG,KAAK;AACtB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAU;IAC7C,IAAI,GAAG,EAAE;IAET,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,UAAU,GAAA;AACR,QAAA,IAAK,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;;wGAdpB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,ECVzC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yjBAQM,EDFM,MAAA,EAAA,CAAA,4hBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,wJAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAI9B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA,CAAC,kBAAkB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,yjBAAA,EAAA,MAAA,EAAA,CAAA,4hBAAA,CAAA,EAAA;8BAKjC,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACS,MAAM,EAAA,CAAA;sBAAf;;;MEHU,2BAA2B,CAAA;IAC7B,UAAU,GAAiB,GAAG;IAC9B,WAAW,GAAG,CAAC;IACf,UAAU,GAAG,CAAC;IACd,IAAI,GAAG,EAAE;IACT,OAAO,GAAG,KAAK;IACxB,YAAY,GAAG,CAAC;IAChB,WAAW,GAAY,EAAE;AAEf,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AAEjD,IAAA,IAAI,KAAK,GAAA;QACP,MAAM,KAAK,GAAwB,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC/C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAE7D,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;AAC3B,YAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;;AAEhE,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;AAGpD,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACb,IAAI,KAAK,GAAG,CAAC;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGlC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGf,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG7B,QAAA,OAAO,KAAK;;AAGd,IAAA,UAAU,CAAC,OAAe,EAAA;AACxB,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9E,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO;YAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;wGA7C/B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,+QCXxC,g4BAcM,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPM,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,wJAAE,WAAW,EAAA,CAAA,EAAA,CAAA;;4FAI5C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WACvB,CAAC,YAAY,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,g4BAAA,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA;8BAK/C,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAIS,UAAU,EAAA,CAAA;sBAAnB;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;MEZU,qBAAqB,CAAA;IACvB,IAAI,GAAa,EAAE;wGADjB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,oGCTlC,ySAUA,EAAA,MAAA,EAAA,CAAA,4KAAA,CAAA,EAAA,CAAA;;4FDDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,EAAE,EAAA,QAAA,EAAA,ySAAA,EAAA,MAAA,EAAA,CAAA,4KAAA,CAAA,EAAA;8BAKF,IAAI,EAAA,CAAA;sBAAZ;;;MELU,gBAAgB,CAAA;AAE3B,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,KAAK,EAAC;AACT,YAAA,OAAO,EAAE;;QAEX,MAAM,KAAK,GAAY,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAC;YACnB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;;aACxD,IAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAE,CAAC,EAAC;AAC5B,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,WAAW,EAAE;;aACzC;AACH,YAAA,OAAO,EAAE;;;wGAZF,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCMY,qBAAqB,CAAA;AACvB,IAAA,IAAI;wGADF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVlC,8TAYC,EAAA,MAAA,EAAA,CAAA,0cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDNW,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA;;4FAIf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,8TAAA,EAAA,MAAA,EAAA,CAAA,0cAAA,CAAA,EAAA;8BAKlB,IAAI,EAAA,CAAA;sBAAZ;;;AEVU,MAAA,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;AAC9C,IAAA,UAAU,CAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC;AACvH,IAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAC/D,CAAA;;MCMU,mBAAmB,CAAA;IAC9B,OAAO,GAAW,EAAE;IACpB,IAAI,GAAW,CAAC;IAChB,GAAG,GAAW,CAAC;wGAHJ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,ECVhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0IAEM,EDMQ,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA,UAAA,EAAA,CAAE,WAAW,CAAE,EAAA,CAAA;;4FAEhB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACb,OAAA,EAAA,EAAE,EAGC,UAAA,EAAA,CAAE,WAAW,CAAE,EAAA,QAAA,EAAA,0IAAA,EAAA,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA;;;MEAhB,mBAAmB,CAAA;AAQX,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,QAAA;IAPV,GAAG,GAAG,EAAE;IAET,YAAY,GAA6B,IAAI;AAErD,IAAA,WAAA,CACmB,UAAsB,EACtB,MAAsB,EACtB,QAA6B,EAAA;QAF7B,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAI3B,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,IAAE,EAAE,IAAI,IAAI,CAAC,GAAG,IAAE,IAAI,EAAE;AAChE,YAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,mBAAmB,EAAE;gBACvD,mBAAmB,EAAE,IAAI,CAAC;AAC3B,aAAA,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAClD,YAAA,MAAM,OAAO,GACN,IAAI,CAAC,YAAY,CAAC;iBAClB,SAAS,CAAC,CAAC,CAAgB;AAClC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAClC,IAAI,CAAC,6BAA6B,EAAE;;;IAIhC,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;AAC7C,YAAA,MAAM,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAC,GACrB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC3D,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI;YAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM;;;IAK3C,YAAY,GAAA;QACV,IAAI,CAAC,OAAO,EAAE;;IAGhB,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;;IAGhB,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;wGApDjB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;8IAIU,GAAG,EAAA,CAAA;sBAAX;gBAWD,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBA2B1B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;;;AC7Cf,MAAA,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE;IAChD,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3D,UAAU,CAAC,kBAAkB,EAAE;AAC7B,QAAA,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC;YAClC,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAClD,KAAK,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,SAAA,CAAC;KACH;AACF,CAAA;;ACVU,MAAA,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;IAC9C,UAAU,CAAC,QAAQ,EAAE;QACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;AACrD,QAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;KAC7E,CAAC;IACF,UAAU,CAAC,QAAQ,EAAE;QACnB,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KACjF,CAAC;AACH,CAAA;;MCaU,iBAAiB,CAAA;IAEnB,OAAO,GAAiB,EAAE;IAC1B,IAAI,GAAc,EAAE;IACpB,OAAO,GAAG,KAAK;IACf,KAAK,GAAG,CAAC;IACT,IAAI,GAAG,EAAE;IACT,aAAa,GAAG,CAAC;IACjB,UAAU,GAAgB,GAAG;IAC7B,aAAa,GAAmB,CAAC;IACjC,UAAU,GAAG,EAAE;IACf,UAAU,GAAG,CAAC;IAEd,aAAa,GAAG,IAAI;IACpB,WAAW,GAAG,QAAQ;IACtB,iBAAiB,GAAG,QAAQ;IAC5B,OAAO,GAAG,KAAK;IACf,cAAc,GAAG,IAAI;IACrB,gBAAgB,GAAG,KAAK;IACxB,YAAY,GAAG,kBAAkB;AAIhC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAe;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAgB;AACzC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAqB;AAE/D,IAAA,UAAU,GAAG,IAAI,GAAG,EAAoB;IACxC,OAAO,GAAG,EAAE;IACZ,OAAO,GAAG,IAAI;IACd,MAAM,GAAG,EAAE;IACX,IAAI,GAAC,CAAC;IAEN,QAAQ,CAAC,IAAmB,EAAC,GAAU,EAAA;AACrC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,EAAE,KAAK,IAAE,GAAG;;IAGxB,YAAY,CAAC,IAAmB,EAAC,GAAU,EAAA;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC5C,OAAO,MAAM,IAAI,GAAG,EAAE,SAAS,IAAE,OAAO,CAAC;;IAE3C,kBAAkB,CAAC,IAAmB,EAAC,GAAU,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,EAAE,KAAK,IAAE,aAAa;;IAGlC,WAAW,CAAC,IAAmB,EAAC,GAAsB,EAAA;AACpD,QAAA,IAAK,CAAC,GAAG;AAAG,YAAA,OAAO,IAAI;QACvB,IAAI,KAAK,GAAG,IAAI;AAEhB,QAAA,GAAG,CAAC,OAAO,CAAC,CAAC,IAAG;AACd,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1C,KAAK,GAAG,KAAK,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AACjC,SAAC,CAAC;AAED,QAAA,OAAO,KAAK;;IAGf,OAAO,CAAC,IAAmB,EAAC,GAAU,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,YAAY,GAAG,GAAG,EAAE,IAAI,GAAG,QAAQ;;IAG5C,OAAO,CAAC,IAAmB,EAAC,GAAU,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5C,QAAA,OAAO,GAAG,EAAE,IAAI,IAAE,EAAE;;IAEtB,OAAO,CAAC,IAAmB,EAAC,GAAU,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC5C,OAAO,GAAG,EAAE,IAAI;;AAGlB,IAAA,SAAS,CAAC,GAAU,EAAA;AAClB,QAAA,IAAK,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;AACf,aAAA,IAAK,IAAI,CAAC,OAAO,EAAG;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;aACjB;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;QAErB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,UAAU,CAAC,OAAc,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;QACnB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,SAAS,CAAC,OAAc,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;QACnB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,MAAM,CAAC,IAAW,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,UAAU,EAAE;;IAEnB,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,MAAM,EAAC,IAAI,CAAC,OAAO;YACnB,eAAe,EAAC,IAAI,CAAC,OAAO;YAC5B,UAAU,EAAC,IAAI,CAAC,IAAI;YACpB,QAAQ,EAAC,IAAI,CAAC,IAAI;YAClB,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;;IAGJ,eAAe,CAAC,EAAiB,EAAE,OAAgB,EAAA;QACjD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;;aAClB;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;;QAE5B,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAGtD,IAAA,SAAS,CAAC,OAAgB,EAAA;QACxB,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;aAClD;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;IAEtD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;;IAG9D,WAAW,GAAG,KAAK;IACnB,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;;IAGvB,QAAQ,CAAC,KAAmB,EAAC,GAAU,EAAA;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,GAAG,EAAC,CAAC;;IAI/B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;wGA7IlB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB9B,giMAgHM,EAAA,MAAA,EAAA,CAAA,2xFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhGM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,yIACpH,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAC,mBAAmB,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAC,oBAAoB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAGvE,CAAE,YAAY,EAAE,WAAW,CAAE,EAAA,CAAA;;4FAE9B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,4BAA4B;AACpH,wBAAA,2BAA2B,EAAC,mBAAmB,EAAC,oBAAoB,EAAE,WAAW,CAAC,EAAA,UAAA,EAGxE,CAAE,YAAY,EAAE,WAAW,CAAE,EAAA,QAAA,EAAA,giMAAA,EAAA,MAAA,EAAA,CAAA,2xFAAA,CAAA,EAAA;8BAIhC,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAIS,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;gBACS,aAAa,EAAA,CAAA;sBAAtB;;;AEfiF;AACR;;MCvB/D,gBAAgB,CAAA;AAClB,IAAA,KAAK;AACJ,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AAEjD,IAAA,QAAQ;IACR,aAAa,GAAG,CAAC;IACjB,kBAAkB,GAAG,GAAG;IACxB,cAAc,GAAG,KAAK;IACtB,EAAE,GAAG,CAAC;IAGN,QAAQ,GAAA;QACN,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;AACvB,QAAA,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAC;AAChD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpC,IAAI,KAAK,GAAG,CAAC;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;AAC/B,gBAAA,KAAK,GAAG,IAAI,CAAC,cAAc,GAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,kBAAkB;AACpE,gBAAA,IAAI,CAAC,aAAa,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,IAAE,GAAG,CAAC;AACxD,gBAAA,IAAI,IAAI,CAAC,aAAa,GAAG,GAAG,EAAC;oBAC3B,IAAI,CAAC,KAAK,EAAE;;AAEhB,aAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC;;;IAK/B,KAAK,GAAA;AACH,QAAA,aAAa,CAAE,IAAI,CAAC,QAAQ,CAAE;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;wGA7BpB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,uICV7B,kqCA0BM,EAAA,MAAA,EAAA,CAAA,myDAAA,CAAA,EAAA,CAAA;;4FDhBO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WACX,EAAE,EAAA,QAAA,EAAA,kqCAAA,EAAA,MAAA,EAAA,CAAA,myDAAA,CAAA,EAAA;8BAKF,KAAK,EAAA,CAAA;sBAAb;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AEVH,IAAI,MAAM,GAAG,CAAC;AAEE,SAAA,kBAAkB,CAChC,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;AAEgB,SAAA,gBAAgB,CAC9B,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;AAEgB,SAAA,kBAAkB,CAChC,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;AAEgB,SAAA,eAAe,CAC7B,OAAe,EACf,OAAwB,EAAA;IAExB,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,OAAO;AACP,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,OAAO;KACX;AACH;;MC9Ca,mBAAmB,CAAA;IAE9B,SAAS,GAAG,CAAC;AACI,IAAA,OAAO,GAAG,IAAI,OAAO,EAAS;AAE/C,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;;AAGpC,IAAA,IAAI,CAAC,SAA2B,EAAA;QAC9B,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,MAAM,KAAK,GAAU,EAAC,GAAG,SAAS,EAAC,EAAE,EAAC,IAAI,CAAC,SAAS,EAAC;AACrD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,KAAK,CAAE;;IAG5B,OAAO,CAAC,OAAe,EAAE,OAAwB,EAAA;QAC/C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;IAGjD,KAAK,CAAC,OAAe,EAAE,OAAwB,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;wGApBpC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,0BAA0B,CAAA;AAGR,IAAA,YAAA;IAF7B,MAAM,GAAY,EAAE;AAEpB,IAAA,WAAA,CAA6B,YAAiC,EAAA;QAAjC,IAAY,CAAA,YAAA,GAAZ,YAAY;;IAEzC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAE,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,EAAS,EAAA;AACd,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC;;wGAbhB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvC,yOAQA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIf,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,yOAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA;;;AENhB,MAAA,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE;AACtC,IAAA,UAAU,CAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC,CAAC;IAC7I,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAC,CAAC,CAAC,CAAC;AAC/F,CAAA;;ACHU,MAAA,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE;IAC5C,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;;IAGzD,UAAU,CAAC,iBAAiB,EAAE;QAC5B,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;QACrD,OAAO,CAAC,UAAU;KACnB,CAAC;;IAGF,UAAU,CAAC,mBAAmB,EAAE;QAC9B,OAAO,CAAC,UAAU;KACnB;AACF,CAAA;AAEY,MAAA,YAAY,GAAE,OAAO,CAAC,cAAc,EAAE;IAC7C,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACtC,UAAU,CAAC,iBAAiB,EAAE;AAC5B,QAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,gBAAgB;KACzB,CAAC;IACF,UAAU,CAAC,mBAAmB,EAAE;QAC9B,OAAO,CAAC,eAAe;KACxB;AACF,CAAA;;AC1BQ,MAAA,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE;IAC5C,UAAU,CAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;AAClF,IAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAC/D,CAAA;;ACJI,MAAM,UAAU,GAAG;AACnB,MAAM,eAAe,GAAG;AACxB,MAAM,YAAY,GAAG;AACrB,MAAM,iBAAiB,GAAG;AAC1B,MAAM,mBAAmB,GAAG;;MCAtB,UAAU,CAAA;AAIF,IAAA,UAAA;AACA,IAAA,YAAA;AAJF,IAAA,YAAY,GAAG,IAAI,OAAO,EAAoC;IAE/E,WACmB,CAAA,UAAsB,EACtB,YAA6B,EAAA;QAD7B,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY;;IAG/B,KAAK,CAAC,SAAmB,IAAI,EAAA;QAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,IAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAG,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;IAG9B,aAAa,CAAC,SAAmB,IAAI,EAAA;QACnC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,IAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAG,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;IAG9B,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAE1C;;MCVY,iBAAiB,CAAA;AAOW,IAAA,QAAA;AACK,IAAA,SAAA;AACH,IAAA,MAAA;AACtB,IAAA,QAAA;IATnB,QAAQ,GAAe,EAAE;IACzB,KAAK,GAAG,KAAK;IACb,KAAK,GAAC,EAAE;AACsC,IAAA,YAAY;AAE1D,IAAA,WAAA,CACuC,QAAoB,EACf,SAAoB,EACvB,MAAmB,EACzC,QAAkB,EAAA;QAHE,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QAC5B,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAEzB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;;IAGxB,eAAe,GAAA;AACb,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAG;gBACjD,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AAClD,aAAA;YACD,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC;;IAIjD,WAAW,GAAA;QACT,IAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE;AACjD,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;;;IAIrC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;;AAnCxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAOlB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,UAAU,EACV,EAAA,EAAA,KAAA,EAAA,eAAe,aACf,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AATX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAIjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,ECrB5B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,urBAgBM,EDJM,MAAA,EAAA,CAAA,+gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAG3C,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,OAAO,CAAC,EAAA,CAAA;;4FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAC,YAAY,EAAC,kBAAkB,CAAC,EAAA,UAAA,EAG5C,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,urBAAA,EAAA,MAAA,EAAA,CAAA,+gCAAA,CAAA,EAAA;;0BASjB,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,YAAY;gEALwB,YAAY,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEHjC,qBAAqB,CAAA;AAUO,IAAA,QAAA;AACK,IAAA,SAAA;AACH,IAAA,MAAA;AACtB,IAAA,QAAA;AACA,IAAA,KAAA;IAbnB,UAAU,CAAc;IACxB,KAAK,GAAyB,SAAS;IACvC,IAAI,GAAG,IAAI;IACX,QAAQ,GAAmB,EAAE;IAC7B,KAAK,GAAG,KAAK;IACb,KAAK,GAAC,EAAE;AACsC,IAAA,YAAY;IAE1D,WACuC,CAAA,QAAoB,EACf,SAAoB,EACvB,MAAuB,EAC7C,QAAkB,EAClB,KAAqB,EAAA;QAJD,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QAC5B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAK,CAAA,KAAA,GAAL,KAAK;AAEtB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;;IAGxB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,EAAC;YAClB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,MAAK;gBACrE,IAAI,CAAC,KAAK,EAAE;AACd,aAAC,CAAC;;;IAIN,eAAe,GAAA;AACb,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAG;gBACjD,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AAClD,aAAA;YACD,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC;;IAIjD,WAAW,GAAA;QACT,IAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE;YACjD,IAAI,CAAC,KAAK,EAAE;;;IAIhB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;;AAGvB,IAAA,eAAe,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAK,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE;AACpE,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;;IAI7B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;;AAzDf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAUtB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,UAAU,EACV,EAAA,EAAA,KAAA,EAAA,eAAe,aACf,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAZX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAOrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,ECzB5B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,iuCAsBM,EDTM,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAC,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAG7B,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAE,SAAS,EAAE,YAAY,CAAE,EAAA,CAAA;;4FAE5B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,EAAC,kBAAkB,CAAC,EAAA,UAAA,EAG9B,CAAE,SAAS,EAAE,YAAY,CAAE,EAAA,QAAA,EAAA,iuCAAA,EAAA,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA;;0BAYpC,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,YAAY;2FALwB,YAAY,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEXjC,eAAe,CAAA;AAET,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE1D,IAAA,iBAAiB,CACf,SAA2B,EAC3B,MAAA,GAAsB,EAAE,EAAA;QAExB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,CAAC;;AAG9C,IAAA,aAAa,CACX,SAA2B,EAC3B,MAAA,GAA0B,EAAE,EAAA;QAE5B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAC,MAAM,EAAC,KAAK,CAAC;;IAGvC,SAAS,CACf,SAA2B,EAC3B,MAAA,GAAsC,EAAE,EACxC,UAAU,GAAG,KAAK,EAAA;QAElB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,CAAC;QAC/E,IAAK,UAAU,EAAC;YACd,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC1E,YAAA,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;;aAC3B;YACH,MAAM,WAAW,GAAI,IAAI,eAAe,CAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,CAAC;YAChF,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;AACnD,YAAA,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU;;AAE/C,QAAA,OAAO,QAAQ;;AAGjB,IAAA,KAAK,CAAC,UAAsB,EAAE,MAAA,GAAc,IAAI,EAAA;AAC9C,QAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAClC,IAAI,WAAW,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CACzD;;AAGH,IAAA,aAAa,CAAC,UAAsB,EAAE,MAAA,GAAc,IAAI,EAAA;AACtD,QAAA,UAAU,CAAC,eAAe,EAAE,aAAa,CACvC,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CACvD;QACD,UAAU,CAAC,OAAO,EAAE;;AAGL,IAAA,MAAM,GAAG,IAAI,OAAO,EAAQ;AAC7C,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;IAElC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AAGZ,IAAA,mBAAmB,CAAC,UAAmB,EAAA;QAC7C,MAAM,gBAAgB,GAAG;AACvB,cAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI;AACvC,cAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;QAE5C,OAAO;AACL,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,2BAA2B;YAC1C,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrD,YAAA,mBAAmB,EAAE,IAAI;SAC1B;;AAGK,IAAA,mBAAmB,CACzB,UAAsB,EACtB,QAAoB,EACpB,SAA2B,EAC3B,MAAqC,EAAA;QAErC,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7C,gBAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC3C,gBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE;AACjD,gBAAA,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM;AAC1C,aAAA;YACD,MAAM,EAAE,IAAI,CAAC,WAAW;AACzB,SAAA,CAAC;;wGAvFO,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,kBAAkB,CAAA;AAIU,IAAA,QAAA;AAHvC,IAAA,IAAI;IACJ,WACsB,CAAA,MAAwC,EACvB,QAAoB,EAAA;QAApB,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAE7C,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;;IAE1B,QAAQ,GAAqB,EAAE;AAG/B,IAAA,KAAK,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAC,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC;;wGAZ5C,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAGnB,UAAU,EAAA,EAAA,EAAA,KAAA,EACV,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAJT,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ/B,myBAgBA,EAAA,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRY,kBAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIjB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,myBAAA,EAAA,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA;;0BAO1B,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,UAAU;;;MERT,mBAAmB,CAAA;AAEb,IAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;AAEhD,IAAA,SAAS,CAAC,IAAe,EAAA;AACvB,QAAA,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,KAAI;AAC5C,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,EAAE;AAC/C,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI;aACpB,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AAClC,gBAAA,OAAO,CAAC;oBACN,KAAK,EAAE,MAAM,EAAE,MAAM;oBACrB,IAAI,EAAE,MAAM,EAAE;AACf,iBAAA,CAAC;AACJ,aAAC,CAAC;AACJ,SAAC,CAAC;;wGAdO,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;ACAA;;AAEG;;;;"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { FormBlock, FormResult, FormSchema } from '../form.models';
|
|
2
|
+
import { FormBlock, FormField, FormResult, FormSchema } from '../form.models';
|
|
3
3
|
import { FormArray, FormGroup } from '@angular/forms';
|
|
4
|
+
import { AppSelectOption } from '../../inputs/select/select.component';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class UicFormWrapperComponent implements OnInit, OnChanges {
|
|
6
7
|
schema: FormSchema;
|
|
8
|
+
externalData: Record<string, AppSelectOption[]>;
|
|
7
9
|
loading: boolean;
|
|
8
10
|
initialValues: Record<string, any>;
|
|
9
11
|
useSteps: boolean;
|
|
@@ -13,9 +15,12 @@ export declare class UicFormWrapperComponent implements OnInit, OnChanges {
|
|
|
13
15
|
currentStep: number;
|
|
14
16
|
ngOnInit(): void;
|
|
15
17
|
ngOnChanges(changes: SimpleChanges): void;
|
|
18
|
+
private handleSchemaChange;
|
|
16
19
|
handleSubmit(): void;
|
|
17
20
|
private collectAllFields;
|
|
18
21
|
logFormErrors(form: FormGroup | FormArray, parentKey?: string): void;
|
|
22
|
+
updateExtenalData(): void;
|
|
23
|
+
updateFieldOptions(block: FormBlock): FormField[];
|
|
19
24
|
private buildForm;
|
|
20
25
|
private mapValidatorsFromField;
|
|
21
26
|
getCurrentBlocks(): FormBlock[];
|
|
@@ -23,5 +28,5 @@ export declare class UicFormWrapperComponent implements OnInit, OnChanges {
|
|
|
23
28
|
prevStep(): void;
|
|
24
29
|
getStepTitle(): string;
|
|
25
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<UicFormWrapperComponent, never>;
|
|
26
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<UicFormWrapperComponent, "ui-form-wrapper", never, { "schema": { "alias": "schema"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; }, { "formSubmit": "formSubmit"; }, never, never, true, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UicFormWrapperComponent, "ui-form-wrapper", never, { "schema": { "alias": "schema"; "required": false; }; "externalData": { "alias": "externalData"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; }, { "formSubmit": "formSubmit"; }, never, never, true, never>;
|
|
27
32
|
}
|