{"version":3,"file":"pepperi-addons-ngx-lib-form.mjs","sources":["../../../projects/ngx-lib/form/indicators.component.ts","../../../projects/ngx-lib/form/indicators.component.html","../../../projects/ngx-lib/form/internal-button.component.ts","../../../projects/ngx-lib/form/internal-button.component.html","../../../projects/ngx-lib/form/internal-menu.component.ts","../../../projects/ngx-lib/form/internal-menu.component.html","../../../projects/ngx-lib/form/internal-page.service.ts","../../../projects/ngx-lib/form/internal-field-generator.component.ts","../../../projects/ngx-lib/form/internal-field-generator.component.html","../../../projects/ngx-lib/form/internal-form.component.ts","../../../projects/ngx-lib/form/internal-form.component.html","../../../projects/ngx-lib/form/internal-list.component.ts","../../../projects/ngx-lib/form/internal-list.component.html","../../../projects/ngx-lib/form/internal-page.component.ts","../../../projects/ngx-lib/form/internal-page.component.html","../../../projects/ngx-lib/form/internal-carusel.service.ts","../../../projects/ngx-lib/form/internal-carusel.component.ts","../../../projects/ngx-lib/form/internal-carusel.component.html","../../../projects/ngx-lib/form/field-generator.component.ts","../../../projects/ngx-lib/form/field-generator.component.html","../../../projects/ngx-lib/form/form.component.ts","../../../projects/ngx-lib/form/form.component.html","../../../projects/ngx-lib/form/form.module.ts","../../../projects/ngx-lib/form/public-api.ts","../../../projects/ngx-lib/form/pepperi-addons-ngx-lib-form.ts"],"sourcesContent":["import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { PepLayoutType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n    selector: 'pep-indicators',\n    templateUrl: './indicators.component.html',\n    styleUrls: ['./indicators.component.scss', './indicators.component.theme.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepIndicatorsComponent {\n    @Input() key: string;\n    @Input() value: string;\n\n    controlType = 'indicators';\n\n    @Input() layoutType: PepLayoutType = 'table';\n}\n","<div class=\"indicators-container\" [ngClass]=\"{ 'is-inside-table': layoutType === 'table' }\">\n    <ng-container *ngFor=\"let value of value?.split(';')\">\n        <pep-icon name=\"indicator_dot_placeholder\" class=\"pull-left flip\" [fill]=\"value\"></pep-icon>\n    </ng-container>\n    <ng-container *ngIf=\"key != 'ItemIndicatorsWithoutCampaign' && value?.split(';').length < 4\">\n        <pep-icon name=\"indicator_dot_placeholder\" class=\"pull-left flip\"></pep-icon>\n    </ng-container>\n</div>","import {\n    Component,\n    OnInit,\n    OnChanges,\n    Input,\n    Output,\n    EventEmitter,\n    ChangeDetectionStrategy,\n    Renderer2,\n    ElementRef,\n    OnDestroy,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n    PepLayoutType,\n    PepCustomizationService,\n    PepHorizontalAlignment,\n    DEFAULT_HORIZONTAL_ALIGNMENT,\n    IPepFieldClickEvent,\n    PepInternalButtonFieldType,\n    PepInternalButtonField,\n} from '@pepperi-addons/ngx-lib';\nimport {\n    PepButton,\n    IPepButtonClickEvent,\n} from '@pepperi-addons/ngx-lib/button';\nimport { pepIconSystemBin } from '@pepperi-addons/ngx-lib/icon';\n\n@Component({\n    selector: 'pep-internal-button',\n    templateUrl: './internal-button.component.html',\n    styleUrls: ['./internal-button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalButtonComponent\n    implements OnInit, OnChanges, OnDestroy {\n    @Input() key = '';\n    @Input() value = '';\n    @Input() formattedValue = '';\n    @Input() label = '';\n    @Input() referenceObjectInternalType: any;\n    @Input() type: PepInternalButtonFieldType = 'button';\n    @Input() mandatory = false;\n    @Input() disabled = false;\n    @Input() readonly = false;\n    @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n    @Input() rowSpan = 1;\n\n    private _visible = true;\n    @Input()\n    set visible(visible: boolean) {\n        this._visible = visible;\n        if (visible) {\n            this.renderer.removeClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        } else {\n            this.renderer.addClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        }\n    }\n    get visible(): boolean {\n        return this._visible;\n    }\n\n    controlType = 'button';\n\n    @Input() form: FormGroup = null;\n    @Input() showTitle = true;\n    @Input() layoutType: PepLayoutType = 'form';\n\n    @Output()\n    elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n    @Output()\n    valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n    // standAlone = false;\n    createNewReference = false;\n    referenceButtons: Array<PepButton> = [\n        {\n            key: 'action',\n            callback: (action: IPepButtonClickEvent) =>\n                this.onButtonClicked(action.event),\n        },\n        {\n            key: 'delete',\n            callback: (action: IPepButtonClickEvent) => this.remove(),\n            classNames: 'caution',\n            iconName: pepIconSystemBin.name,\n        },\n    ];\n\n    constructor(\n        private customizationService: PepCustomizationService,\n        private renderer: Renderer2,\n        private element: ElementRef\n    ) { }\n\n    ngOnInit(): void {\n        // if (this.form === null) {\n        //     this.standAlone = true;\n        //     // this.form = this.customizationService.getDefaultFromGroup(this.key, this.value, this.mandatory, this.readonly, this.disabled);\n        //     const pepField = new PepInternalButtonField({\n        //         key: this.key,\n        //         value: this.value,\n        //         mandatory: this.mandatory,\n        //         readonly: this.readonly,\n        //         disabled: this.disabled,\n        //     });\n        //     this.form = this.customizationService.getDefaultFromGroup(pepField);\n\n        //     this.formattedValue = this.formattedValue || this.value;\n        //     this.renderer.addClass(\n        //         this.element.nativeElement,\n        //         PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n        //     );\n        // }\n    }\n\n    ngOnChanges(changes: any): void {\n        if (this.type === 'reference') {\n            this.createNewReference = this.value.length === 0;\n            this.referenceButtons[0].value = this.formattedValue;\n        }\n    }\n\n    ngOnDestroy(): void {\n        //\n    }\n\n    // groupButtonClicked(action: IPepButtonClickEvent): void {\n    //     if (action.source.key === 'action') {\n    //         this.onButtonClicked(action.event);\n    //     } else if (action.source.key === 'delete') {\n    //         this.remove();\n    //     }\n    // }\n\n    onButtonClicked(event): void {\n        if (this.type === 'reference') {\n            const valueArr = this.value.split('/');\n\n            this.elementClick.emit({\n                key: this.key,\n                value: valueArr[valueArr.length - 1], // .replace(/[^a-zA-Z0-9 ]/g, ''),\n                controlType: this.controlType,\n                eventWhich: event.which,\n                otherData: this.referenceObjectInternalType,\n            });\n        } else if (this.type === 'button' && true) {\n            this.elementClick.emit({\n                key: this.key,\n                value: this.value, // should contain the program name\n                controlType: this.controlType,\n                eventWhich: event.which,\n            });\n        } else {\n            this.elementClick.emit({\n                key: this.key,\n                controlType: this.controlType,\n                eventWhich: event.which,\n            });\n        }\n    }\n\n    hrefFunction(event): void {\n        if (event.which === 1 /*|| event.which === 2*/) {\n            this.onButtonClicked(event);\n        }\n    }\n\n    openReferenceObjectInternal(event): void {\n        this.elementClick.emit({\n            key: this.key,\n            value: this.value,\n            controlType: this.controlType,\n            eventWhich: event.which,\n            otherData: this.referenceObjectInternalType,\n        });\n    }\n\n    remove(): void {\n        this.value = '';\n        this.valueChange.emit(this.value);\n    }\n}\n","<ng-container [ngSwitch]=\"type\">\n    <ng-container *ngSwitchCase=\"'reference'\">\n        <ng-container *ngIf=\"layoutType === 'form'; then formBlock; else notFormBlock\"></ng-container>\n        <ng-template #formBlock>\n            <div class=\"pep-button-container reference-button\">\n                <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" [xAlignment]=\"xAlignment\"\n                    [showTitle]=\"showTitle\">\n                </pep-field-title>\n                <ng-container *ngIf=\"createNewReference; then newBlock; else existingBlock\"></ng-container>\n                <ng-template #newBlock>\n                    <button mat-button [id]=\"key\" title=\"{{ formattedValue }}\" class=\"pep-button md regular\"\n                        (click)=\"onButtonClicked($event)\" [ngClass]=\"{\n                            disabled: disabled,\n                            'pull-left': xAlignment == 'left',\n                            'pull-right': xAlignment == 'right',\n                            'center-alignment': xAlignment == 'center'\n                        }\">\n                        <span class=\"ellipsis pull-left flip button-title-with-icon\">{{ 'ACTIONS.CREATE_NEW' | translate\n                            }}</span>\n                        <mat-icon class=\"pull-right flip\" pepRtlClass>\n                            <pep-icon name=\"number_plus\" (click)=\"onButtonClicked($event)\">\n                            </pep-icon>\n                        </mat-icon>\n                    </button>\n                </ng-template>\n                <ng-template #existingBlock>\n                    <pep-group-buttons [buttons]=\"referenceButtons\" styleType=\"regular\" viewType=\"split\">\n                    </pep-group-buttons>\n                </ng-template>\n            </div>\n        </ng-template>\n        <ng-template #notFormBlock>\n            <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n        </ng-template>\n    </ng-container>\n\n    <ng-container *ngSwitchCase=\"'listofobjects'\">\n        <ng-container *ngIf=\"layoutType === 'form'; then formBlock; else notFormBlock\"></ng-container>\n        <ng-template #formBlock>\n            <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: true}\"></ng-container>\n        </ng-template>\n        <ng-template #notFormBlock>\n            <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n        </ng-template>\n    </ng-container>\n\n    <ng-container *ngSwitchCase=\"'button'\">\n        <ng-container [ngSwitch]=\"key\">\n            <ng-container *ngSwitchCase=\"'ObjectMenu'\">\n                <span (click)=\"onButtonClicked($event)\" title=\"{{ key }}\">\n                    <mat-icon>\n                        <pep-icon *ngIf=\"key == 'ObjectMenu'\" name=\"system_menu\">\n                        </pep-icon>\n                    </mat-icon>\n                </span>\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"'Agents' || 'ContactPersons' || 'Buyers'\">\n                <ng-container *ngIf=\"layoutType === 'table'; then tableBlock; else nonTableBlock\">\n                </ng-container>\n                <ng-template #nonTableBlock>\n                    <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: true}\"></ng-container>\n                </ng-template>\n                <ng-template #tableBlock>\n                    <span [id]=\"key\" title=\"{{ formattedValue }}\" class=\"pep-report-input readonly body-sm\">{{\n                        formattedValue }}</span>\n                </ng-template>\n            </ng-container>\n\n            <ng-container *ngSwitchDefault>\n                <ng-container *ngIf=\"layoutType === 'form'; then buttonBlock; else linkBlock\">\n                </ng-container>\n\n                <ng-template #buttonBlock>\n                    <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: false}\"></ng-container>\n                </ng-template>\n                <ng-template #linkBlock>\n                    <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n                </ng-template>\n            </ng-container>\n        </ng-container>\n    </ng-container>\n</ng-container>\n\n<ng-template #buttonTemplate let-internal=\"internal\">\n    <div class=\"pep-button-container\">\n        <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" [xAlignment]=\"xAlignment\"\n            [showTitle]=\"showTitle\">\n        </pep-field-title>\n\n        <ng-container *ngIf=\"internal; then internalButtonTemplate; else regularButtonTemplate\"></ng-container>\n        <ng-template #regularButtonTemplate>\n            <button [id]=\"key\" title=\"{{ formattedValue }}\" mat-button class=\"pep-button md regular\"\n                dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\" (click)=\"onButtonClicked($event)\"\n                [disabled]=\"disabled\"\n                [ngClass]=\"{disabled: disabled, 'pull-left': xAlignment == 'left', 'pull-right': xAlignment == 'right', 'center-alignment': xAlignment == 'center'}\">\n                {{ formattedValue }}\n            </button>\n        </ng-template>\n\n        <ng-template #internalButtonTemplate>\n            <button [id]=\"key\" title=\"{{ formattedValue }}\" mat-button class=\"pep-button md regular\"\n                dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\" (click)=\"openReferenceObjectInternal($event)\"\n                [disabled]=\"disabled\"\n                [ngClass]=\"{disabled: disabled, 'pull-left': xAlignment == 'left', 'pull-right': xAlignment == 'right', 'center-alignment': xAlignment == 'center'}\">\n                <ng-container *ngIf=\"formattedValue == '0' || formattedValue == ''; then newBlock; else existingBlock\">\n                </ng-container>\n                <ng-template #newBlock>\n                    <span class=\"pull-left flip button-title-with-icon\">{{ 'LIST.SELECT' | translate }}&nbsp;</span>\n                    <mat-icon>\n                        <pep-icon name=\"number_plus\">\n                        </pep-icon>\n                    </mat-icon>\n                </ng-template>\n                <ng-template #existingBlock>\n                    <span class=\"pull-left flip button-title-with-icon\">{{ formattedValue }}&nbsp;{{ 'LIST.SELECTED' |\n                        translate\n                        }}&nbsp;</span>\n                    <mat-icon>\n                        <pep-icon name=\"system_edit\">\n                        </pep-icon>\n                    </mat-icon>\n                </ng-template>\n            </button>\n        </ng-template>\n    </div>\n</ng-template>\n\n<ng-template #linkTemplate>\n    <ng-container *ngIf=\"formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n    <ng-template #notEmptyBlock>\n        <a href=\"{{ value }}\" (mousedown)=\"hrefFunction($event)\" class=\"color-link\">\n            <span *ngIf=\"layoutType === 'table'\" [id]=\"key\" title=\"{{ formattedValue }}\"\n                class=\"body-sm pep-report-input readonly\">\n                {{ formattedValue }}\n            </span>\n            <span *ngIf=\"layoutType !== 'table'\" [id]=\"key\" title=\"{{ formattedValue }}\" class=\"body-sm pep-card-input\"\n                style=\"display: block;\">\n                {{ formattedValue }}\n            </span>\n        </a>\n    </ng-template>\n    <ng-template #emptyBlock>\n        <span>&nbsp;</span>\n    </ng-template>\n</ng-template>","import {\n    Component,\n    Input,\n    Output,\n    EventEmitter,\n    ChangeDetectorRef,\n    ChangeDetectionStrategy,\n    OnDestroy,\n} from '@angular/core';\nimport {\n    PepLayoutType,\n    IPepOption,\n    PepHorizontalAlignment,\n    DEFAULT_HORIZONTAL_ALIGNMENT,\n    IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\n\n@Component({\n    selector: 'pep-internal-menu',\n    templateUrl: './internal-menu.component.html',\n    styleUrls: ['./internal-menu.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalMenuComponent implements OnDestroy {\n    @Input() key = '';\n    @Input() label = '';\n    @Input() disabled = false;\n    @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n    // @Input() hasSubMenu = false;\n    @Input() options: IPepOption[] = [];\n    @Input() invertClass = true;\n\n    controlType = 'menu';\n\n    @Input() layoutType: PepLayoutType = 'form';\n    @Output()\n    elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n    // @Output() menuItemClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n    ngOnDestroy(): void {\n        // if (this.elementClick) {\n        //     this.elementClick.unsubscribe();\n        // }\n        // if (this.menuItemClick) {\n        //     this.menuItemClick.unsubscribe();\n        // }\n    }\n\n    menuClicked(event: any): void {\n        this.elementClick.emit({\n            key: this.key,\n            controlType: this.controlType,\n            eventWhich: event.which,\n        });\n    }\n\n    menuItemClicked(itemKey: any): void {\n        // Not in use comment in version 16.55 for webapp.\n        // this.menuItemClick.emit({ key: itemKey });\n    }\n}\n","<ng-container *ngIf=\"options?.length > 0; then subMenuBlock; else noSubMenuBlock\"></ng-container>\n<ng-template #noSubMenuBlock>\n    <button (click)=\"menuClicked($event)\" title=\"{{ label }}\" mat-button\n        class=\"pep-button icon-button weak {{ layoutType === 'table' ? 'sm' : 'md' }}\" [ngClass]=\"{\n            'lock-events': disabled,\n            'left-alignment': xAlignment == 'left',\n            'right-alignment': xAlignment == 'right',\n            'center-alignment': xAlignment == 'center',\n            'invert': invertClass\n        }\">\n        <mat-icon>\n            <pep-icon name=\"system_menu\">\n            </pep-icon>\n        </mat-icon>\n    </button>\n</ng-template>\n\n<ng-template #subMenuBlock>\n    <button mat-button [matMenuTriggerFor]=\"menu\" menu-blur\n        class=\"pep-button icon-button weak {{ layoutType === 'table' ? 'sm' : 'md' }}\" [ngClass]=\"{\n            'left-alignment': xAlignment == 'left',\n            'right-alignment': xAlignment == 'right',\n            'center-alignment': xAlignment == 'center',\n            'invert': invertClass\n        }\" title=\"{{ label }}\">\n        <mat-icon>\n            <pep-icon name=\"system_menu\">\n            </pep-icon>\n        </mat-icon>\n    </button>\n\n    <mat-menu #menu=\"matMenu\" xPosition=\"{{xAlignment == 'right' ? 'after' : 'before'}}\"\n        [ngClass]=\"{ rtlMenu: xAlignment == 'right' }\">\n        <button *ngFor=\"let option of options\" mat-menu-item (click)=\"menuItemClicked(option.key)\">\n            <span>{{ option.value | translate }}</span>\n        </button>\n    </mat-menu>\n\n</ng-template>","import { Injectable } from '@angular/core';\nimport { PepHttpService } from '@pepperi-addons/ngx-lib';\n\n@Injectable()\nexport class PepInternalPageService {\n    private transactionUrl: string;\n    private objectId: string;\n    private parentId = '0';\n    private searchCode: string;\n    private viewType: string;\n    public additionalApiName = '';\n\n    constructor(private httpService: PepHttpService) {\n        this.transactionUrl = 'Service1.svc/v1/OrderCenter/Transaction/';\n    }\n\n    getBaseParentUrl(): string {\n        const url = `${this.transactionUrl}${this.objectId}/ParentLine/${this.parentId}/`;\n        return url;\n    }\n\n    getChildren(callbackFunc: any): void {\n        const body = JSON.stringify({\n            TransactionUID: this.objectId,\n            SearchCode: this.searchCode,\n            AdditionalApiName: this.additionalApiName,\n            ParentTransactionLineID: this.parentId,\n            ViewType: this.viewType,\n        });\n\n        // Set the additional api name with view type string.\n        const moreParams =\n            this.additionalApiName?.length > 0\n                ? `${this.additionalApiName}/${this.viewType}`\n                : `''/${this.viewType}`;\n\n        const url = `${this.getBaseParentUrl()}Items/${moreParams}`;\n\n        this.httpService.postWapiApiCall(url, body).subscribe(\n            (res) => {\n                callbackFunc(res);\n            }\n            // (error) => {},\n            // () => {}\n        );\n    }\n\n    initDetails(\n        objectId: string,\n        parentId: string,\n        searchCode: string,\n        callbackFunc: any\n    ): void {\n        if (!objectId || !parentId) {\n            return;\n        }\n\n        this.objectId = objectId;\n        this.parentId = parentId;\n        this.searchCode = searchCode;\n\n        this.httpService\n            .getWapiApiCall(`${this.getBaseParentUrl()}ViewTypes`)\n            .subscribe(\n                (res) => {\n                    callbackFunc(res);\n                }\n                // (error) => {},\n                // () => {}\n            );\n    }\n\n    changeChildrenViewType(viewType: string, callbackFunc: any): void {\n        this.viewType = viewType;\n        this.getChildren(callbackFunc);\n    }\n\n    changeAdditionalApiName(\n        additionalApiName: string,\n        callbackFunc: any\n    ): void {\n        this.additionalApiName = additionalApiName;\n        this.getChildren(callbackFunc);\n    }\n\n    childPlusClick(\n        itemId: string,\n        fieldApiName: string,\n        callbackFunc: any\n    ): void {\n        const body = JSON.stringify({\n            TransactionUID: this.objectId,\n            SearchCode: this.searchCode,\n            ParentTransactionLineID: this.parentId,\n            TransactionLineUID: itemId,\n            FieldApiName: fieldApiName,\n            ViewType: this.viewType,\n        });\n\n        this.httpService\n            .postWapiApiCall(`${this.getBaseParentUrl()}IncrementValue`, body)\n            .subscribe(\n                (res) => {\n                    callbackFunc(res);\n                }\n                // (error) => {},\n                // () => {}\n            );\n    }\n\n    childMinusClick(\n        itemId: string,\n        fieldApiName: string,\n        callbackFunc: any\n    ): void {\n        const body = JSON.stringify({\n            TransactionUID: this.objectId,\n            SearchCode: this.searchCode,\n            ParentTransactionLineID: this.parentId,\n            TransactionLineUID: itemId,\n            FieldApiName: fieldApiName,\n            ViewType: this.viewType,\n        });\n\n        this.httpService\n            .postWapiApiCall(`${this.getBaseParentUrl()}DecrementValue`, body)\n            .subscribe(\n                (res) => {\n                    callbackFunc(res);\n                }\n                // (error) => {},\n                // () => {}\n            );\n    }\n\n    childValueChanged(\n        itemId: string,\n        fieldApiName: string,\n        value: string,\n        callbackFunc: any\n    ): void {\n        const body = JSON.stringify({\n            TransactionUID: this.objectId,\n            SearchCode: this.searchCode,\n            ParentTransactionLineID: this.parentId,\n            TransactionLineUID: itemId,\n            FieldApiName: fieldApiName,\n            FieldValue: value,\n            ViewType: this.viewType,\n        });\n\n        this.httpService\n            .postWapiApiCall(`${this.getBaseParentUrl()}SetFieldValue`, body)\n            .subscribe(\n                (res) => {\n                    callbackFunc(res);\n                }\n                // (error) => {},\n                // () => {}\n            );\n    }\n}\n","import {\n    Component,\n    OnChanges,\n    Input,\n    Output,\n    EventEmitter,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    OnDestroy,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n    PepFieldBase,\n    PepLayoutType,\n    IPepFieldValueChangeEvent,\n    IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\nimport { IPepFormFieldClickEvent, IPepFormFieldValueChangeEvent } from './form.model';\n\n@Component({\n    selector: 'pep-internal-field-generator',\n    templateUrl: './internal-field-generator.component.html',\n    styleUrls: ['./internal-field-generator.component.scss'],\n    encapsulation: ViewEncapsulation.Emulated,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalFieldGeneratorComponent implements OnChanges, OnDestroy {\n    private _field: any;\n    @Input()\n    set field(value: any) {\n        this._field = value;\n    }\n    get field(): any {\n        return this._field;\n    }\n\n    @Input() isActive = false;\n    @Input() uid: any = null;\n    @Input() form: FormGroup;\n    @Input() layoutType: PepLayoutType = 'form';\n    @Input() showTitle = true;\n\n    @Input() checkForChanges: any = null;\n    @Output()\n    valueChange: EventEmitter<IPepFieldValueChangeEvent> = new EventEmitter<IPepFieldValueChangeEvent>();\n    // @Output()\n    // formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n    @Output()\n    elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n    // @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n    // @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n\n    @Output()\n    formValueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n    @Output()\n    formFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n    get isValid(): boolean {\n        if (this.field.readonly || this.field.disabled) {\n            return true;\n        } else {\n            const formControl = this.form && this.form.get(this.field.key);\n\n            if (formControl) {\n                return formControl.valid;\n            } else {\n                return false;\n            }\n        }\n    }\n\n    get isTouched(): boolean {\n        const formControl = this.form && this.form.get(this.field.key);\n        return formControl ? formControl.touched : false;\n    }\n\n    get isDirty(): boolean {\n        const formControl = this.form && this.form.get(this.field.key);\n        return formControl ? formControl.dirty : false;\n    }\n\n    ngOnDestroy(): void {\n        //\n    }\n\n    onFileChanged(fileData: any, field: PepFieldBase) {\n        const value = fileData ? JSON.stringify(fileData) : '';\n        const fieldValueChange = {\n            key: field.key,\n            value: value,\n            controlType: field.controlType,\n        };\n        this.valueChange.emit(fieldValueChange);\n    }\n\n    onAddressValueChanged(\n        valueChange: IPepFieldValueChangeEvent,\n        field: PepFieldBase\n    ) {\n        const fieldValueChange = {\n            key: valueChange.key,\n            value: valueChange.value,\n            controlType: field.controlType,\n        };\n        this.valueChange.emit(fieldValueChange);\n    }\n\n    onValueChanged(value: any, field: PepFieldBase): void {\n        const fieldValueChange = {\n            key: field.key,\n            value: value.toString(),\n            controlType: field.controlType,\n        };\n        this.valueChange.emit(fieldValueChange);\n    }\n\n    // onInternalFormFieldChanged(internalFormFieldChange: any): void {\n    //     this.internalFormFieldChange.emit(internalFormFieldChange);\n    // }\n\n    // onFormValidationChanged(formValidationChange: any): void {\n    //     this.formValidationChange.emit(formValidationChange);\n    // }\n\n    onClick(fieldClicked: any): void {\n        this.elementClick.emit(fieldClicked);\n    }\n\n    // onInternalFormFieldClick(internalFormFieldClick: any): void {\n    //     this.internalFormFieldClick.emit(internalFormFieldClick);\n    // }\n\n    onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n        this.formValueChange.emit(event);\n    }\n\n    onFormFieldClick(event: IPepFormFieldClickEvent): void {\n        this.formFieldClick.emit(event);\n    }\n\n    ngOnChanges(changes: any): void {\n        // debugger;\n        // For testing.\n        // this.field.disabled = this.field.readonly = false;\n    }\n}\n","<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n    <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n        [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n    </pep-address>\n\n    <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n        [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n        (fileChange)=\"onFileChanged($event, field)\">\n    </pep-attachment>\n\n    <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n        [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n        [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n        [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n    </pep-checkbox>\n\n    <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n        [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n    </pep-date>\n\n    <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n        [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n    </pep-images-filmstrip>\n\n    <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n        [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n        [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n        [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n        (fileChange)=\"onFileChanged($event, field)\">\n    </pep-image>\n\n    <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [allowDecimal]=\"field.allowDecimal\"\n        [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n        [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n        [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n        (valueChange)=\"onValueChanged($event, field)\" \n        (elementClick)=\"onClick($event)\">\n    </pep-quantity-selector>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n    <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n        [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n    </pep-rich-html-textarea>\n\n    <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n        [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (valueChange)=\"onValueChanged($event, field)\"\n        [isActive]=\"isActive\">\n    </pep-select>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\"  -->\n\n    <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n        [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n    </pep-separator>\n\n    <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n        [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n        [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n    </pep-signature>\n\n    <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n        [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n        [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n    </pep-textarea>\n\n    <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [accessory]=\"field.accessory\" [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n        [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n        [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n        [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n        (valueChange)=\"onValueChanged($event, field)\" \n        [isActive]=\"isActive\" [visible]=\"field.visible\">\n    </pep-textbox>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n    <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n        [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n        [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n        (elementClick)=\"onClick($event)\">\n    </pep-link>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\"  -->\n\n    <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n    </pep-indicators>\n    <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n        [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n        (valueChange)=\"onValueChanged($event, field)\">\n    </pep-internal-button>\n    <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n        [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n        (elementClick)=\"onClick($event)\">\n    </pep-internal-menu>\n    <!-- \n        comment for not cause a circular reference.\n        <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n            (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n            (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n        </pep-internal-page>\n\n        <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n            (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n            (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n        </pep-internal-carusel> \n    -->\n\n    <ng-container *ngSwitchCase=\"'placeholder'\">\n    </ng-container>\n</ng-container>","import {\n    Component,\n    ChangeDetectionStrategy,\n    OnInit,\n    OnDestroy,\n    Input,\n    KeyValueDiffers,\n    Output,\n    EventEmitter,\n    OnChanges,\n    DoCheck,\n    Optional,\n} from '@angular/core';\nimport {\n    FormGroup,\n    FormBuilder,\n    Validators,\n    AbstractControl,\n} from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n    PepDialogService,\n    PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport {\n    IPepFieldValueChangeEvent,\n    IPepFieldClickEvent,\n    PepLayoutType,\n    FIELD_TYPE,\n    PepCustomizationService,\n    PepLayoutService,\n    UIControl,\n    UIControlField,\n    ObjectsDataRow,\n    ObjectsDataRowCell,\n    PepFieldBase,\n    PepTextboxField,\n    PepSelectField,\n    PepInternalMenuField,\n    PepQuantitySelectorField,\n    PepAddressField,\n    PepIndicatorsField,\n    PepInternalPageField,\n    PepInternalCaruselField,\n    PepInternalButtonField,\n    PepAttachmentField,\n    PepSignatureField,\n    PepImageField,\n    PepImagesField,\n    PepLinkField,\n    PepTextareaField,\n    PepRichHtmlTextareaField,\n    PepDateField,\n    PepCheckboxField,\n    PepSeparatorField,\n    PepPlaceholderField,\n    PepHorizontalAlignment,\n    PepVerticalAlignment,\n    X_ALIGNMENT_TYPE,\n    Y_ALIGNMENT_TYPE,\n    DEFAULT_VERTICAL_ALIGNMENT,\n    DEFAULT_HORIZONTAL_ALIGNMENT,\n    KeyValuePair,\n    IPepOption,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IPepFormFieldValueChangeEvent, IPepFormFieldClickEvent } from './form.model';\n\n@Component({\n    selector: 'pep-internal-form',\n    templateUrl: './internal-form.component.html',\n    styleUrls: ['./internal-form.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalFormComponent implements OnInit, DoCheck, OnChanges, OnDestroy {\n    @Input() isInternal = true;\n    @Input() isReport = false;\n    @Input() layout: UIControl;\n    @Input() lockEvents = false;   \n    @Input() canEditObject = true;\n\n    private _data: ObjectsDataRow = null;\n    @Input()\n    set data(value: ObjectsDataRow) {\n        const shouldReload = this.shouldReloadForm || !this._data;\n        this._data = value;\n\n        if (shouldReload) {\n            this._shouldReloadForm = false;\n            this.initForm();\n        } else {\n            this.updateForm();\n        }\n    }\n    get data(): ObjectsDataRow {\n        return this._data;\n    }\n\n    @Input()\n    set lockFields(value: boolean) {\n        this.isLocked = value;\n    }\n\n    @Input() isActive = false;\n    @Input() layoutType: PepLayoutType = 'card';\n    // @Input() listType = '';\n    @Input() objectId = '0';\n    @Input() parentId = '0';\n    @Input() searchCode = '0';\n    @Input() showTitle = true;\n    @Input() firstFieldAsLink = false;\n    @Input() checkForChanges: any = null;\n\n    @Output()\n    valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n    @Output()\n    formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    @Output()\n    fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n    // @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n    // @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n\n    isLocked = false;\n    formGutterSize;\n    cardGutterSize;\n    rowHeight;\n    // private matrixIsLast = false;\n    // lastUpdatedFieldApiName: string = '';\n    form: FormGroup;\n    differ: any;\n\n    // payLoad = '';\n    private rows: Array<PepFieldBase[]> = [];\n    fields: PepFieldBase[] = [];\n\n    private _fieldsSubject: BehaviorSubject<PepFieldBase[]> = new BehaviorSubject<PepFieldBase[]>([]);\n    get fields$(): Observable<PepFieldBase[]> {\n        return this._fieldsSubject.asObservable();\n    }\n\n    columns = 1;\n\n    private hasMenuFloatingOnOtherField = false;\n    private menuField: any;\n    private menuDataField: any;\n    private hasCampaignField: any;\n    private hasCampaignDataField: any;\n    private indicatorsField: any;\n    private indicatorsDataField: any = null;\n\n    private _shouldReloadForm = false;\n    get shouldReloadForm(): boolean {\n        return this._shouldReloadForm;\n    }\n\n    // eventServiceSub: Subscription;\n    // public jsonLib = JSON;\n\n    constructor(\n        private dialogService: PepDialogService,\n        private customizationService: PepCustomizationService,\n        private layoutService: PepLayoutService,\n        private fb: FormBuilder,\n        differs: KeyValueDiffers,\n        private translate: TranslateService\n    ) {\n        // store the initial value to compare with\n        this.differ = differs.find({}).create();\n    }\n\n    convertXAlignToHorizontalAlign(\n        xAlign: X_ALIGNMENT_TYPE\n    ): PepHorizontalAlignment {\n        let res = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n        if (\n            xAlign === X_ALIGNMENT_TYPE.None ||\n            xAlign === X_ALIGNMENT_TYPE.Left\n        ) {\n            res = 'left';\n        } else if (xAlign === X_ALIGNMENT_TYPE.Right) {\n            res = 'right';\n        } else {\n            res = 'center';\n        }\n\n        return res;\n    }\n\n    convertYAlignToVerticalAlign(\n        yAlign: Y_ALIGNMENT_TYPE\n    ): PepVerticalAlignment {\n        let res = DEFAULT_VERTICAL_ALIGNMENT;\n\n        if (\n            yAlign === Y_ALIGNMENT_TYPE.None ||\n            yAlign === Y_ALIGNMENT_TYPE.Top\n        ) {\n            res = 'top';\n        } else if (yAlign === Y_ALIGNMENT_TYPE.Bottom) {\n            res = 'bottom';\n        } else {\n            res = 'middle';\n        }\n\n        return res;\n    }\n\n    convertOptionalValues(\n        optionalValues: Array<KeyValuePair<string>>\n    ): IPepOption[] {\n        if (optionalValues && optionalValues.length > 0) {\n            return optionalValues.map((ov) => {\n                return { key: ov.Key, value: ov.Value };\n            });\n        } else {\n            return [];\n        }\n    }\n\n    convertAddressFields(\n        controlField: UIControlField,\n        addressFields: Array<ObjectsDataRowCell>,\n        canEditObject: boolean\n    ): PepFieldBase[] {\n        const fields: PepFieldBase[] = [];\n\n        addressFields.forEach((field) => {\n            let customField: PepFieldBase;\n            const placeholder = field.ApiName;\n\n            if (field.ApiName.toLowerCase().indexOf('street') >= 0) {\n                customField = new PepTextboxField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    type: 'text',\n                    placeholder,\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 0,\n                    rowSpan: 1,\n                    col: 0,\n                    colSpan: 2,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 0,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('city') >= 0) {\n                customField = new PepTextboxField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    type: 'text',\n                    placeholder,\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 0,\n                    rowSpan: 1,\n                    col: 2,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 1,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('state') >= 0) {\n                customField = new PepSelectField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    placeholder,\n                    options: this.convertOptionalValues(field.OptionalValues),\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 1,\n                    rowSpan: 1,\n                    col: 0,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 2,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('zipcode') >= 0) {\n                customField = new PepTextboxField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    type: 'text',\n                    placeholder,\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 1,\n                    rowSpan: 1,\n                    col: 1,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 3,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('country') >= 0) {\n                customField = new PepSelectField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    placeholder,\n                    options: this.convertOptionalValues(field.OptionalValues),\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 2,\n                    rowSpan: 1,\n                    col: 2,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 4,\n                });\n            }\n\n            fields.push(customField);\n        });\n\n        return fields.sort((n1, n2) =>\n            n1.order > n2.order ? 1 : n1.order < n2.order ? -1 : 0\n        );\n    }\n\n    isMatrixField(apiNameToCheck: string): boolean {\n        return apiNameToCheck.indexOf('Matrix') >= 0;\n    }\n\n    doesFieldHavaFloatingField(\n        controlField: UIControlField,\n        floatingField: any\n    ): boolean {\n        let hasFloatingField = false;\n        if (\n            floatingField.Layout.Y >= controlField.Layout.Y &&\n            floatingField.Layout.Y <\n            controlField.Layout.Y + controlField.Layout.Height &&\n            floatingField.Layout.X >= controlField.Layout.X &&\n            floatingField.Layout.X <\n            controlField.Layout.X + controlField.Layout.Width\n        ) {\n            hasFloatingField = true;\n        }\n\n        return hasFloatingField;\n    }\n\n    getOptionsForCustomField(\n        controlField: UIControlField,\n        dataField: any,\n        canEditObject: boolean\n    ): any {\n        if (!controlField || !dataField) {\n            return;\n        }\n\n        const placeholder =\n            controlField.ReadOnly || !canEditObject ? '' : controlField.Title;\n\n        return {\n            key: controlField.ApiName,\n            label: controlField.Title,\n            accessory: dataField.Accessory,\n            placeholder,\n            readonly: controlField.ReadOnly || !canEditObject,\n            disabled: !dataField.Enabled || !canEditObject,\n            hidden: controlField.Hidden,\n            mandatory: controlField.Mandatory,\n            value: dataField.Value,\n            formattedValue: dataField.FormattedValue,\n            additionalValue: dataField.AdditionalValue,\n            row: controlField.Layout.Y,\n            rowSpan: controlField.Layout.Height,\n            col: controlField.Layout.X,\n            colSpan: controlField.Layout.Width,\n            xAlignment: this.convertXAlignToHorizontalAlign(\n                controlField.Layout.XAlignment\n            ),\n            yAlignment: this.convertYAlignToVerticalAlign(\n                controlField.Layout.YAlignment\n            ),\n            options: this.convertOptionalValues(dataField.OptionalValues),\n            groupFields: undefined,\n            maxFieldCharacters: controlField.MaxFieldCharacters,\n            minValue: controlField.MinValue,\n            maxValue: controlField.MaxValue,\n            // hasMenu: hasMenu,\n            // hasCampaign: hasCampaign,\n            // hasIndicators: hasIndicators,\n            textColor: dataField.TextColor,\n            visible: dataField.Visible,\n            digitsNumberAfterDecimalPoint: dataField.DigitsNumberAfterDecimalPoint,\n        };\n    }\n\n    convertToCustomField(\n        controlField: UIControlField,\n        dataField: any,\n        canEditObject: boolean,\n        menuField: any,\n        hasCampaignField: any,\n        indicatorsField: any,\n        objectId: any,\n        parentId: any,\n        searchCode: any\n    ): PepFieldBase {\n        let customField: PepFieldBase;\n        const options = this.getOptionsForCustomField(\n            controlField,\n            dataField,\n            canEditObject\n        );\n\n        if (controlField.ApiName === 'ObjectMenu') {\n            options.type = 'menu';\n            customField = new PepInternalMenuField(options);\n        } else if (\n            controlField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n            controlField.FieldType ===\n            FIELD_TYPE.NumberIntegerQuantitySelector ||\n            controlField.ApiName === 'QuantitySelector' ||\n            controlField.ApiName === 'UnitsQuantity' ||\n            controlField.ApiName.indexOf('size_') === 0\n        ) {\n            if (dataField.FieldType === FIELD_TYPE.InternalLink) {\n                options.type = 'button';\n            } else if (dataField.FieldType === FIELD_TYPE.Package) {\n                options.type = 'packageButton';\n            } else if (\n                dataField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n                dataField.FieldType === FIELD_TYPE.NumberReal\n            ) {\n                options.type = 'qs';\n                options.allowDecimal = true;\n            } else if (\n                dataField.FieldType ===\n                FIELD_TYPE.NumberIntegerQuantitySelector ||\n                dataField.FieldType === FIELD_TYPE.NumberInteger\n            ) {\n                options.type = 'qs';\n                options.allowDecimal = false;\n            } else if (\n                dataField.FieldType === FIELD_TYPE.NumberIntegerForMatrix\n            ) {\n                options.type = 'qsForMatrix';\n                options.allowDecimal = false;\n            } else if (dataField.FieldType === FIELD_TYPE.NumberRealForMatrix) {\n                options.type = 'qsForMatrix';\n                options.allowDecimal = true;\n            }\n\n            options.notificationInfo = dataField.NotificationInfo;\n            customField = new PepQuantitySelectorField(options);\n        } else {\n            // HACK: need to remove this..\n            if (\n                dataField.FieldType === FIELD_TYPE.Indicators &&\n                this.isMatrixField(dataField.ApiName)\n            ) {\n                dataField.FieldType = FIELD_TYPE.InternalPage;\n            }\n\n            switch (dataField.FieldType) {\n                case FIELD_TYPE.Address: {\n                    const canEditGroupObject = controlField.ReadOnly\n                        ? false\n                        : canEditObject;\n                    options.groupFields = this.convertAddressFields(\n                        controlField,\n                        dataField.GroupFields,\n                        canEditGroupObject\n                    );\n                    customField = new PepAddressField(options);\n                    break;\n                }\n                case FIELD_TYPE.Indicators: {\n                    // options['type'] = 'indicators'; // Not needed this is PepIndicatorsField.\n                    customField = new PepIndicatorsField(options);\n                    break;\n                }\n                case FIELD_TYPE.InternalPage: {\n                    if (this.isMatrixField(controlField.ApiName)) {\n                        options.rowSpan = controlField.Layout.Height;\n                        options.objectId = objectId;\n                        options.parentId = parentId;\n                        options.searchCode = searchCode;\n\n                        customField = new PepInternalPageField(options);\n                    } else {\n                        // Not supported\n                    }\n                    break;\n                }\n                case FIELD_TYPE.RelatedObjectsCards: {\n                    options.rowSpan = controlField.Layout.Height;\n                    options.searchCode = searchCode;\n                    options.pageInfo = dataField.UIPageInfo;\n\n                    customField = new PepInternalCaruselField(options);\n                    break;\n                }\n                case FIELD_TYPE.Link: {\n                    options.type = 'link';\n                    customField = new PepLinkField(options);\n                    break;\n                }\n                case FIELD_TYPE.InternalLink:\n                case FIELD_TYPE.Button: {\n                    options.type = 'button';\n                    customField = new PepInternalButtonField(options);\n                    break;\n                }\n                case FIELD_TYPE.Attachment: {\n                    // options.type = 'attachment';\n                    customField = new PepAttachmentField(options);\n                    break;\n                }\n                case FIELD_TYPE.Signature: {\n                    // options.type = 'signature';\n                    customField = new PepSignatureField(options);\n                    break;\n                }\n                case FIELD_TYPE.Image:\n                case FIELD_TYPE.ImageURL: {\n                    // options.type = 'image';\n                    options.menuField =\n                        menuField &&\n                            this.doesFieldHavaFloatingField(controlField, menuField)\n                            ? menuField\n                            : null;\n                    options.hasCampaignField =\n                        hasCampaignField &&\n                            this.doesFieldHavaFloatingField(\n                                controlField,\n                                hasCampaignField\n                            )\n                            ? hasCampaignField\n                            : null;\n                    options.indicatorsField =\n                        indicatorsField &&\n                            this.doesFieldHavaFloatingField(\n                                controlField,\n                                indicatorsField\n                            )\n                            ? indicatorsField\n                            : null;\n\n                    customField = new PepImageField(options);\n                    break;\n                }\n                case FIELD_TYPE.Images: {\n                    // options.type = 'images';\n                    customField = new PepImagesField(options);\n                    break;\n                }\n                case FIELD_TYPE.Email: {\n                    options.type = 'email';\n                    customField = new PepLinkField(options);\n                    break;\n                }\n                case FIELD_TYPE.Phone: {\n                    options.type = 'phone';\n                    customField = new PepLinkField(options);\n                    break;\n                }\n                case FIELD_TYPE.Duration: {\n                    options.type = 'duration';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Default:\n                case FIELD_TYPE.TextBox:\n                case FIELD_TYPE.LimitedLengthTextBox:\n                case FIELD_TYPE.TextHeader:\n                case FIELD_TYPE.CalculatedString:\n                case FIELD_TYPE.MapDataString: {\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.TextArea: {\n                    customField = new PepTextareaField(options);\n                    break;\n                }\n\n                case FIELD_TYPE.RichTextHTML: {\n                    customField = new PepRichHtmlTextareaField(options);\n                    break;\n                }\n                case FIELD_TYPE.Date:\n                case FIELD_TYPE.LimitedDate:\n                case FIELD_TYPE.CalculatedDate:\n                case FIELD_TYPE.DateAndTime: {\n                    options.type =\n                        dataField.FieldType === FIELD_TYPE.DateAndTime\n                            ? 'datetime'\n                            : 'date';\n                    customField = new PepDateField(options);\n                    break;\n                }\n                case FIELD_TYPE.NumberInteger:\n                case FIELD_TYPE.CalculatedInt:\n                case FIELD_TYPE.MapDataInt: {\n                    options.type = 'int';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Percentage: {\n                    options.type = 'percentage';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Currency: {\n                    options.type = 'currency';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.NumberReal:\n                case FIELD_TYPE.CalculatedReal:\n                case FIELD_TYPE.MapDataReal:\n                case FIELD_TYPE.Sum:\n                case FIELD_TYPE.Totals: {\n                    options.type = 'real';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Boolean:\n                case FIELD_TYPE.CalculatedBool: {\n                    customField = new PepCheckboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.BooleanText: {\n                    options.type = 'booleanText';\n                    customField = new PepCheckboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.ComboBox:\n                case FIELD_TYPE.EmptyComboBox:\n                case FIELD_TYPE.MapDataDropDown: {\n                    // options.type = 'select';\n                    customField = new PepSelectField(options);\n                    break;\n                }\n                case FIELD_TYPE.MultiTickBox:\n                case FIELD_TYPE.MultiTickBoxToComboBox:\n                case FIELD_TYPE.EmptyMultiTickBox: {\n                    options.type = 'multi';\n                    customField = new PepSelectField(options);\n                    break;\n                }\n                case FIELD_TYPE.GuidReferenceType: {\n                    options.type = 'reference';\n                    options.referenceObjectType = dataField.ReferenceObjectType;\n                    options.referenceObjectSubType =\n                        dataField.ReferenceObjectSubType;\n                    options.referenceObjectInternalType =\n                        dataField.ReferenceObjectInternalType;\n                    customField = new PepInternalButtonField(options);\n                    break;\n                }\n                case FIELD_TYPE.ListOfObjects: {\n                    options.type = 'listofobjects';\n                    customField = new PepInternalButtonField(options);\n                    break;\n                }\n                case FIELD_TYPE.Separator: {\n                    customField = new PepSeparatorField(options);\n                    break;\n                }\n                /*\n                    case FIELD_TYPE.Images: return that.field(value);\n                */\n                case FIELD_TYPE.NumberRealQuantitySelector:\n                case FIELD_TYPE.NumberIntegerQuantitySelector: {\n                    options.type = 'qs';\n                    options.allowDecimal =\n                        dataField.FieldType ===\n                        FIELD_TYPE.NumberRealQuantitySelector;\n                    options.notificationInfo = dataField.NotificationInfo;\n\n                    customField = new PepQuantitySelectorField(options);\n                    break;\n                }\n                case FIELD_TYPE.Package: {\n                    options.type = 'packageButton';\n                    options.notificationInfo = dataField.NotificationInfo;\n\n                    customField = new PepQuantitySelectorField(options);\n                    break;\n                }\n            }\n        }\n\n        if (!customField) {\n            options.label = controlField.ApiName + ' is not supported!!!';\n            customField = new PepSeparatorField(options);\n        }\n\n        return customField;\n    }\n\n    getFieldFormattedValue(field: PepFieldBase): string {\n        let fieldFormattedValue = field.formattedValue || field.value;\n\n        // Fix for the custom check box component.\n        if (field.controlType === 'checkbox') {\n            fieldFormattedValue = fieldFormattedValue === 'true';\n        }\n\n        // Fix for the custom button component.\n        if (field.controlType === 'button') {\n            fieldFormattedValue =\n                fieldFormattedValue === '0' ? '' : fieldFormattedValue;\n        }\n\n        return fieldFormattedValue;\n    }\n\n    private toControlGroup(fields: PepFieldBase[]): FormGroup {\n        const group = {};\n        if (fields && fields.length > 0) {\n            fields.forEach((field) => {\n                if (field.groupFields && field.groupFields.length > 0) {\n                    const subGroup = {};\n\n                    field.groupFields.forEach((groupField) => {\n                        if (\n                            groupField.mandatory &&\n                            !field.readonly &&\n                            !field.disabled\n                        ) {\n                            subGroup[groupField.key] = [\n                                {\n                                    value: groupField.formattedValue || '',\n                                    disabled:\n                                        field.readonly ||\n                                        field.disabled ||\n                                        groupField.disabled,\n                                },\n                                [Validators.required],\n                            ];\n                        } else {\n                            subGroup[groupField.key] = [\n                                {\n                                    value: groupField.formattedValue || '',\n                                    disabled:\n                                        field.readonly ||\n                                        field.disabled ||\n                                        groupField.disabled,\n                                },\n                                [Validators.nullValidator],\n                            ];\n                        }\n                    });\n\n                    group[field.key] = this.fb.group(subGroup);\n                } else {\n                    const validators = field.getValidators();\n                    const fieldFormattedValue = this.getFieldFormattedValue(\n                        field\n                    );\n\n                    group[field.key] = [\n                        {\n                            value: fieldFormattedValue || '',\n                            disabled: field.disabled,\n                        },\n                        validators,\n                    ];\n                }\n            });\n        }\n\n        return this.fb.group(group);\n    }\n\n    private createBaseField(uiControlField: UIControlField, dataField: any) {\n        const customField: PepFieldBase = this.convertToCustomField(\n            uiControlField,\n            dataField,\n            this.canEditObject,\n            this.menuDataField,\n            this.hasCampaignDataField,\n            this.indicatorsDataField,\n            this.objectId,\n            this.parentId,\n            this.searchCode\n        );\n\n        return customField;\n    }\n\n    public showFormValidationMessage(): void {\n        const fields: PepFieldBase[] = this.fields;\n        let emptyMandatoryFieldsMsg = '';\n        let notValidFieldsMsg = '';\n\n        // for (let i: number = 0; i < fields.length; i++) {\n        //     let field = fields[i];\n        for (const field of fields) {\n            const formControl = this.form && this.form.get(field.key);\n\n            if (formControl) {\n                // Mandatory is empty.\n                if (\n                    field.mandatory &&\n                    formControl.value.toString().trim().length === 0\n                ) {\n                    emptyMandatoryFieldsMsg +=\n                        '<li><small>' + field.label + '</small></li>';\n                } else if (!field.disabled && !formControl.valid) {\n                    notValidFieldsMsg +=\n                        '<li><small>' + field.label + '</small></li>';\n                }\n            }\n        }\n\n        // Add the header message of the empty mandatory fields\n        if (emptyMandatoryFieldsMsg.length > 0) {\n            emptyMandatoryFieldsMsg =\n                '<div>' +\n                this.translate.instant('MESSAGES.ERROR_MANDATORY_FIELDS') +\n                \"</div><ul style='padding: 0 20px;'>\" +\n                emptyMandatoryFieldsMsg +\n                '</ul><br/>';\n        }\n\n        // Add the header message of the empty mandatory fields\n        if (notValidFieldsMsg.length > 0) {\n            notValidFieldsMsg =\n                '<div>' +\n                this.translate.instant('MESSAGES.ERROR_INVALID_FIELDS') +\n                \"</div><ul style='padding: 0 20px;'>\" +\n                notValidFieldsMsg +\n                '</ul>';\n        }\n\n        const title = this.translate.instant('MESSAGES.TITLE_NOTICE');\n        const data = new PepDialogData({\n            title,\n            content: emptyMandatoryFieldsMsg + notValidFieldsMsg,\n        });\n        this.dialogService.openDefaultDialog(data);\n    }\n\n    ngOnInit(): void {\n        const themeVars = this.customizationService.getThemeVariables();\n        // convert rem to pixel\n        const RemToPixel = 16;\n        this.formGutterSize =\n            this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FORM_SPACEING_KEY\n            ) * RemToPixel;\n        this.cardGutterSize =\n            this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.CARD_SPACEING_KEY\n            ) * RemToPixel;\n    }\n\n    ngDoCheck(): void {\n        const changes = this.differ.diff(this.data); // check for changes\n        if (changes) {\n            this.updateForm();\n            this.checkForChanges = new Date();\n        }\n    }\n\n    ngOnChanges(changes): void {\n        // if (changes.data && changes.data.currentValue) {\n        //     // Load changes\n        //     if (!this.shouldReloadForm && changes.data.previousValue) {\n        //         this.data = changes.data.currentValue;\n        //         this.updateForm();\n        //     } else {\n        //         this._shouldReloadForm = false;\n        //         this.initForm();\n        //     }\n        // }\n        // if (this.shouldReloadForm || !changes?.data?.previousValue) {\n        //     this._shouldReloadForm = false;\n        //     this.initForm();\n        //     this.checkForChanges = new Date();\n        // }\n    }\n\n    ngOnDestroy(): void {\n        //\n    }\n\n    getUiControlFields(): Array<UIControlField> {\n        return this.layout ? this.layout.ControlFields : [];\n    }\n\n    initFieldsStructure(fields: PepFieldBase[], maxRow: number): void {\n        const themeVars = this.customizationService.getThemeVariables();\n\n        // Set form row height.\n        if (this.layoutType === 'card') {\n            const cardFieldHeight = this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.CARD_FIELD_HEIGHT_KEY\n            );\n            this.rowHeight = cardFieldHeight;\n        } else {\n            const rowFieldHeight = this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FORM_FIELD_HEIGHT_KEY\n            );\n            const rowFieldTitleHeight = this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY\n            );\n            this.rowHeight = rowFieldHeight + rowFieldTitleHeight;\n        }\n\n        // Create the fields structure (the fields must be sorted!!!).\n        if (fields.length > 0) {\n            // Init the layout.\n            if (\n                // this.layoutType === 'form' ||\n                this.layoutType === 'table'\n            ) {\n                this.fields = fields;\n                this._fieldsSubject.next(fields);\n\n                this.rows = [];\n\n                for (let i = 0; i <= maxRow; i++) {\n                    this.rows[i] = [];\n                }\n\n                // for (let i = 0; i < fields.length; i++) {\n                // const field = fields[i]\n                for (const field of fields) {\n                    this.rows[field.row].push(field);\n                }\n            } else {\n                const doesfieldExistIn: boolean[][] = new Array(maxRow);\n\n                for (let i = 0; i < doesfieldExistIn.length; i++) {\n                    doesfieldExistIn[i] = new Array(this.columns);\n\n                    for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n                        doesfieldExistIn[i][j] = false;\n                    }\n                }\n\n                // Run in squere (row - colspan, col - rowspan) and put true where it should.\n                // for (let index = 0; index < fields.length; index++) {\n                //     const currentField = fields[index];\n                for (const currentField of fields) {\n                    if (currentField.rowSpan > 1) {\n                        for (\n                            let row: number = currentField.row;\n                            row < currentField.row + currentField.rowSpan;\n                            row++\n                        ) {\n                            if (currentField.colSpan > 1) {\n                                for (\n                                    let col: number = currentField.col;\n                                    col <\n                                    currentField.col + currentField.colSpan;\n                                    col++\n                                ) {\n                                    if (\n                                        doesfieldExistIn.length > row &&\n                                        doesfieldExistIn[0].length > col\n                                    ) {\n                                        doesfieldExistIn[row][col] = true;\n                                    }\n                                }\n                            } else {\n                                if (\n                                    doesfieldExistIn.length > row &&\n                                    doesfieldExistIn[0].length >\n                                    currentField.col\n                                ) {\n                                    doesfieldExistIn[row][\n                                        currentField.col\n                                    ] = true;\n                                }\n                            }\n                        }\n                    } else if (currentField.colSpan > 1) {\n                        for (\n                            let col: number = currentField.col;\n                            col < currentField.col + currentField.colSpan;\n                            col++\n                        ) {\n                            if (\n                                doesfieldExistIn.length > currentField.row &&\n                                doesfieldExistIn[0].length > col\n                            ) {\n                                doesfieldExistIn[currentField.row][col] = true;\n                            }\n                        }\n                    } else {\n                        if (\n                            doesfieldExistIn.length > currentField.row &&\n                            doesfieldExistIn[0].length > currentField.col\n                        ) {\n                            doesfieldExistIn[currentField.row][\n                                currentField.col\n                            ] = true;\n                        }\n                    }\n                }\n\n                // Create empty fields where doesfieldExistIn is false (For the md-grid-list UI Component).\n                for (let i = 0; i < doesfieldExistIn.length; i++) {\n                    for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n                        if (!doesfieldExistIn[i][j]) {\n                            // Create empty field and add it to the fields list.\n                            fields.push(\n                                new PepPlaceholderField({\n                                    key: i + '_' + j,\n                                    label: '',\n                                    placeholder: '',\n                                    readonly: false,\n                                    disabled: false,\n                                    hidden: false,\n                                    mandatory: false,\n                                    value: '',\n                                    formattedValue: '',\n                                    row: i,\n                                    rowSpan: 1,\n                                    col: j,\n                                    colSpan: 1,\n                                    order: 1,\n                                })\n                            );\n                        }\n                    }\n                }\n\n                // Sort the fields again.\n                this.fields = fields.sort((f1, f2) =>\n                    f1.row > f2.row\n                        ? 1\n                        : f1.row < f2.row\n                            ? -1\n                            : f1.col > f2.col\n                                ? 1\n                                : f1.col < f2.col\n                                    ? -1\n                                    : 0\n                );\n                this._fieldsSubject.next(fields);\n            }\n        }\n    }\n\n    setForm(isForUpdate = false): void {\n        let allFieldsAreReadOnly = true;\n\n        if (!isForUpdate) {\n            const fields = [];\n            for (const currentField of this.fields) {\n                // Add all fields except 'internalPage' (for children).\n                if (currentField.controlType !== 'internalPage') {\n                    fields.push(currentField);\n                }\n\n                if (!currentField.readonly) {\n                    allFieldsAreReadOnly = false;\n                }\n            }\n\n            this.form = this.toControlGroup(fields);\n        } else {\n            // Update form values if changed by calculated fields.\n            for (let i = 0; i < this.fields.length; i++) {\n                let currentField = this.fields[i];\n\n                if (currentField.controlType === 'internalCarusel') {\n                    // Hack to override (update) the field.\n                    const uiControlField = this.getUiControlFields().find(cf => cf.ApiName === currentField.key);\n                    const dataField = this.data.Fields.find(df => df.ApiName === currentField.key);\n                    currentField = this.createBaseField(uiControlField, dataField);\n                    this._fieldsSubject.value[i] = currentField;\n                } else if (currentField.controlType !== 'internalPage') {\n                    if (\n                        currentField.groupFields &&\n                        currentField.groupFields.length > 0\n                    ) {\n                        // for (let j = 0; j < currentField.groupFields.length; j++) {\n                        //     let currentGroupField = currentField.groupFields[j];\n                        for (const currentGroupField of currentField.groupFields) {\n                            const fieldFormattedValue = this.getFieldFormattedValue(\n                                currentGroupField\n                            );\n                            this.customizationService.updateFormField(\n                                this.form,\n                                currentGroupField,\n                                fieldFormattedValue,\n                                currentField\n                            );\n                        }\n                    } else {\n                        const fieldFormattedValue = this.getFieldFormattedValue(\n                            currentField\n                        );\n                        // this.form.controls[currentField.key].setValue(fieldFormattedValue);\n                        this.customizationService.updateFormField(\n                            this.form,\n                            currentField,\n                            fieldFormattedValue\n                        );\n                    }\n                }\n\n                if (!currentField.readonly) {\n                    allFieldsAreReadOnly = false;\n                }\n            }\n        }\n\n        let isFormValid = this.form?.valid;\n\n        // Change validation to true if all fields are read only.\n        if (!isFormValid && allFieldsAreReadOnly) {\n            isFormValid = true;\n        }\n\n        this.onFormValidationChanged(isFormValid);\n\n        // Set it to false to enable all fields.\n        if (this.isInternal && this.isLocked) {\n            this.isLocked = false; \n        }\n    }\n\n    initForm(): void {\n        if (this.data && this.data.Fields) {\n            const fields: PepFieldBase[] = this.convertCustomFields(\n                this.getUiControlFields(),\n                this.data.Fields\n            );\n\n            const maxRow = Math.max(\n                ...fields.map((f) => {\n                    return f.row + f.rowSpan;\n                })\n            );\n            this.columns = Math.max(\n                ...fields.map((f) => {\n                    return f.col + f.colSpan;\n                })\n            );\n\n            this.initFieldsStructure(fields, maxRow);\n            this.setForm();\n        }\n    }\n\n    private updateField(\n        customField: PepFieldBase,\n        updatedField: ObjectsDataRowCell\n    ): void {\n        const options: any = {\n            disabled: !updatedField.Enabled || !this.canEditObject,\n            readonly: !updatedField.Enabled || !this.canEditObject,\n            visible: updatedField.Visible,\n            value: updatedField.Value,\n            additionalValue: updatedField.AdditionalValue,\n            formattedValue: updatedField.FormattedValue,\n            textColor: updatedField.TextColor,\n            digitsNumberAfterDecimalPoint: updatedField.DigitsNumberAfterDecimalPoint,\n        };\n\n        if (customField instanceof PepQuantitySelectorField) {\n            const notificationInfo = updatedField.NotificationInfo;\n            options.notificationInfo = notificationInfo;\n\n            // Change type if it's change (only for allowDecimal).\n            let allowDecimal = false;\n            if (updatedField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n                updatedField.FieldType === FIELD_TYPE.NumberReal ||\n                updatedField.FieldType === FIELD_TYPE.NumberRealForMatrix\n            ) {\n                allowDecimal = true;\n            } \n            \n            options.allowDecimal = allowDecimal;\n\n        } else if (customField instanceof PepSelectField) {\n            options.options = this.convertOptionalValues(\n                updatedField.OptionalValues\n            );\n\n            if (!options.options || options.options.length === 0) {\n                options.options.push({\n                    key: options.value,\n                    value: options.formattedValue,\n                });\n            }\n        } else if (customField instanceof PepInternalCaruselField) {\n            options.pageInfo = updatedField.UIPageInfo;\n        }\n\n        customField.update(options);\n    }\n\n    updateForm(): void {\n        if (this.data && this.data.Fields) {\n            for (const currentField of this.data.Fields) {\n                const customField = this.fields.filter(\n                    (f) => f.key === currentField.ApiName\n                )[0];\n                // Update all fields except 'internalPage' type (for children).\n                if (customField && customField.controlType !== 'internalPage') {\n                    this.updateField(customField, currentField);\n\n                    // Update the group fields.\n                    if (\n                        customField.controlType === 'address' &&\n                        currentField.GroupFields\n                    ) {\n                        // for (let j = 0; j < currentField.GroupFields.length; j++) {\n                        // let currentGroupField = currentField.GroupFields[j];\n                        for (const currentGroupField of currentField.GroupFields) {\n                            currentGroupField.Enabled = !currentField.Enabled\n                                ? false\n                                : currentGroupField.Enabled;\n\n                            const customGroupField = customField.groupFields.filter(\n                                (f) => f.key === currentGroupField.ApiName\n                            )[0];\n                            this.updateField(\n                                customGroupField,\n                                currentGroupField\n                            );\n                        }\n                    }\n                }\n            }\n\n            this.setForm(true);\n        }\n    }\n\n    public ReloadForm(): void {\n        this._shouldReloadForm = true;\n    }\n\n    // onSubmit() {\n    //     if (this.form.valid) {\n    //         this.payLoad = JSON.stringify(this.form.value);\n    //         //this.submitted.emit(this.form.value);\n    //     }\n    // }\n\n    private getFormControlById(key: string): AbstractControl | null {\n        let formControl = null;\n\n        this.fields.forEach((field) => {\n            if (field.key === key) {\n                formControl = this.form.get(field.key);\n                return;\n            } else if (field.groupFields && field.groupFields.length > 0) {\n                field.groupFields.forEach((groupField) => {\n                    if (groupField.key === key) {\n                        formControl = this.form.get(\n                            field.key + '.' + groupField.key\n                        );\n                        return;\n                    }\n                });\n            }\n        });\n\n        return formControl;\n    }\n\n    private setSpecialFields(\n        controlFields: Array<any>,\n        dataFields: Array<any>\n    ): void {\n        // let cf;\n        // for (let index = 0; index < controlFields.length; index++) {\n        //     cf = controlFields[index];\n        for (const cf of controlFields) {\n            if (cf.ApiName === 'ObjectMenu') {\n                this.menuField = cf;\n            } else if (cf.ApiName === 'ItemHasActiveCampaign') {\n                this.hasCampaignField = cf;\n            } else if (cf.ApiName === 'ItemIndicatorsWithoutCampaign') {\n                this.indicatorsField = cf;\n            }\n        }\n\n        // let df;\n        // for (let index = 0; index < dataFields.length; index++) {\n        //     df = dataFields[index];\n        for (const df of dataFields) {\n            if (df.ApiName === 'ObjectMenu') {\n                this.menuDataField = df;\n            } else if (df.ApiName === 'ItemHasActiveCampaign') {\n                this.hasCampaignDataField = df;\n            } else if (df.ApiName === 'ItemIndicatorsWithoutCampaign') {\n                this.indicatorsDataField = df;\n            }\n        }\n\n        if (this.menuField && this.menuDataField) {\n            this.menuDataField.Layout = this.menuField.Layout;\n        }\n\n        if (this.hasCampaignField && this.hasCampaignDataField) {\n            this.hasCampaignDataField.Layout = this.hasCampaignField.Layout;\n        }\n\n        if (this.indicatorsField && this.indicatorsDataField) {\n            this.indicatorsDataField.Layout = this.indicatorsField.Layout;\n        }\n\n        // Check if menu is floating on other field.\n        // for (let index = 0; index < controlFields.length; index++) {\n        //     cf = controlFields[index];\n        for (const cf of controlFields) {\n            if (this.menuField && cf.ApiName !== 'ObjectMenu') {\n                this.hasMenuFloatingOnOtherField = this.doesFieldHavaFloatingField(\n                    cf,\n                    this.menuField\n                );\n\n                if (this.hasMenuFloatingOnOtherField) {\n                    break;\n                }\n            }\n        }\n    }\n\n    convertCustomFields(\n        controlFields: Array<any>,\n        dataFields: Array<any>\n    ): PepFieldBase[] {\n        if (this.layoutType !== 'table') {\n            this.setSpecialFields(controlFields, dataFields);\n        } else {\n            // HACK: convert to center alignment if table view & special fields)\n            controlFields.forEach((field, index) => {\n                if (\n                    field.ApiName === 'UnitsQuantity' ||\n                    field.ApiName === 'QuantitySelector' ||\n                    field.ApiName === 'ObjectMenu' ||\n                    field.FieldType === FIELD_TYPE.Image ||\n                    field.FieldType === FIELD_TYPE.ImageURL ||\n                    field.FieldType === FIELD_TYPE.Indicators ||\n                    field.FieldType === FIELD_TYPE.Boolean ||\n                    field.FieldType === FIELD_TYPE.CalculatedBool ||\n                    field.FieldType === FIELD_TYPE.Signature ||\n                    field.FieldType ===\n                    FIELD_TYPE.NumberIntegerQuantitySelector ||\n                    field.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n                    field.FieldType === FIELD_TYPE.Package ||\n                    field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n                    field.FieldType === FIELD_TYPE.NumberRealForMatrix\n                ) {\n                    field.Layout.XAlignment = X_ALIGNMENT_TYPE.Center;\n                } else {\n                    // HACK: align the rest of the fields by the culture.\n                    // field.Layout.XAlignment = this.layoutService.isRtl() ? X_ALIGNMENT_TYPE.Right : X_ALIGNMENT_TYPE.Left;\n                }\n            });\n        }\n\n        const fields: PepFieldBase[] = [];\n\n        controlFields.forEach((field, index) => {\n            const dataField = dataFields.filter(\n                (df) => df.ApiName === field.ApiName\n            )[0];\n\n            if (!dataField) {\n                return;\n            }\n\n            // If current view is not table view and those fields are special.\n            if (\n                this.layoutType !== 'table' &&\n                ((this.hasMenuFloatingOnOtherField &&\n                    this.menuField &&\n                    this.menuField.ApiName === field.ApiName) ||\n                    (this.indicatorsField &&\n                        this.indicatorsField.ApiName === field.ApiName) ||\n                    (this.hasCampaignField &&\n                        this.hasCampaignField.ApiName === field.ApiName))\n            ) {\n                return;\n            }\n\n            // Set type to link\n            if (index === 0 && this.firstFieldAsLink) {\n                dataField.FieldType = FIELD_TYPE.InternalLink;\n                // dataField.Value = this.getInternalLinkHref();\n            }\n\n            if (field.ApiName === 'ObjectMenu') {\n                dataField.Enabled = true;\n                // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n                //        Disabled in cart on regular items and not campign items.\n            }\n            const customField: PepFieldBase = this.createBaseField(field, dataField);\n            fields.push(customField);\n        });\n\n        return fields.sort((f1, f2) =>\n            f1.row > f2.row\n                ? 1\n                : f1.row < f2.row\n                    ? -1\n                    : f1.col > f2.col\n                        ? 1\n                        : f1.col < f2.col\n                            ? -1\n                            : 0\n        );\n    }\n\n    private onFormValidationChanged(formValidationChange: any): void {\n        this.formValidationChange.emit(formValidationChange);\n    }\n\n    onValueChanged(event: IPepFieldValueChangeEvent): void {\n        this.onFormValidationChanged(this.form.valid);\n\n        const formControl = this.getFormControlById(event.key);\n\n        const isValid = formControl ? formControl.valid : true;\n        // const isValid = true;\n\n        if (isValid) {\n            // Set it to false to disable all fields.\n            if (this.isInternal && this.layoutType === 'form') {\n                this.isLocked = true;\n            }\n\n            // Update the current field value.\n            const currentField = this.fields.find((f) => f.key === event.key);\n            if (currentField) {\n                currentField.formattedValue = currentField.value = event.value;\n            }\n\n            this.valueChange.emit({\n                id: this.data.UID.toString(),\n                uiObjectKey: this.data.Key,\n                key: event.key,\n                value: event.value,\n                controlType: event.controlType,\n            });\n        }\n    }\n\n    onClick(fieldClickEvent: IPepFieldClickEvent): void {\n        const clickedUiControlField = this.data.Fields.filter(\n            (f) => f.ApiName === fieldClickEvent.key\n        )[0];\n        const idType = this.data.Type ? this.data.Type.toString() : '';\n\n        if (clickedUiControlField) {\n            this.fieldClick.emit({\n                id: this.data.UID.toString(),\n                uiObjectKey: this.data.Key,\n                key: fieldClickEvent.key,\n                idType,\n                which: fieldClickEvent.eventWhich,\n                value: fieldClickEvent.value,\n                controlType: fieldClickEvent.controlType,\n                fieldType: clickedUiControlField.FieldType,\n                otherData: fieldClickEvent.otherData,\n            });\n        } else {\n            // For other api names (like enter children etc).\n            this.fieldClick.emit({\n                id: this.data.UID.toString(),\n                uiObjectKey: this.data.Key,\n                key: fieldClickEvent.key,\n                idType,\n                which: fieldClickEvent.eventWhich,\n                value: fieldClickEvent.value,\n                controlType: fieldClickEvent.controlType,\n                otherData: fieldClickEvent.otherData,\n            });\n        }\n    }\n\n    // // This event is for handle the internal page events.\n    // onInternalFormFieldClicked(internalFormFieldClick: any): void {\n    //     this.internalFormFieldClick.emit(internalFormFieldClick);\n    // }\n\n    // // This event is for handle the internal page events.\n    // onInternalFormFieldChanged(internalFormFieldChange: any): void {\n    //     this.internalFormFieldChange.emit(internalFormFieldChange);\n    // }\n\n    // This event is for handle the related items change events.\n    onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n        // this.valueChange.emit(event);\n    }\n\n    // This event is for handle the related items change events.\n    onFormFieldClick(event: IPepFormFieldClickEvent): void {\n        this.fieldClick.emit(event);\n    }\n}\n","<fieldset *ngIf=\"form\" [formGroup]=\"form\" [disabled]=\"isLocked\" class=\"pep-form\"\n    [ngStyle]=\"{ 'background-color': layoutType == 'card' && data?.BackgroundColor }\">\n    <!-- New Form -->\n    <mat-grid-list *ngIf=\"layoutType == 'form'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n        [gutterSize]=\"formGutterSize\">\n        <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\">\n            <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n                [checkForChanges]=\"checkForChanges\" [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\"\n                (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\"\n                (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n                >\n            </pep-internal-field-generator>\n            <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n        </mat-grid-tile>\n    </mat-grid-list>\n\n    <!-- Thumbnails -->\n    <mat-grid-list *ngIf=\"layoutType == 'card'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n        [gutterSize]=\"cardGutterSize\" class=\"card-spacing\">\n        <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\"\n            [ngStyle]=\"{ overflow: field.type == 'qs' ? 'unset' : 'hidden' }\">\n            <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n                [ngClass]=\"{ 'lock-events': lockEvents }\" [isActive]=\"isActive\" [checkForChanges]=\"checkForChanges\"\n                [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\" (valueChange)=\"onValueChanged($event)\"\n                (elementClick)=\"onClick($event)\" (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\">\n            </pep-internal-field-generator>\n        </mat-grid-tile>\n    </mat-grid-list>\n\n    <ng-container *ngIf=\"layoutType == 'table'\">\n        <ng-container *ngIf=\"isReport; then reportBlock; else notReportBlock\"></ng-container>\n        <ng-template #reportBlock>\n            <ng-container *ngTemplateOutlet=\"report\"></ng-container>\n        </ng-template>\n        <ng-template #notReportBlock>\n            <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip table-cell \"\n                [ngClass]=\"['text-align-' + field.xAlignment]\" style=\"height: 100%\"\n                [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString}\">\n                <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [checkForChanges]=\"checkForChanges\"\n                    [uid]=\"data?.UID\" [field]=\"field\" [form]=\"form\" [layoutType]=\"layoutType\" [showTitle]=\"false\"\n                    (elementClick)=\"onClick($event)\" (valueChange)=\"onValueChanged($event)\"\n                    (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n                    [isActive]=\"isActive\">\n                </pep-internal-field-generator>\n            </div>\n        </ng-template>\n    </ng-container>\n\n    <!------- For testing ------------\n    {{ form.value | json }}\n    {{ form.valid }}\n    ---------------------------------->\n</fieldset>\n\n<ng-template #report>\n    <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip pep-report-fields\"\n        [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString }\"\n        [ngClass]=\"['text-align-' + field.xAlignment]\">\n        <ng-container [ngSwitch]=\"field.controlType\">\n            <pep-image *ngSwitchCase=\"'image'\" [uid]=\"data?.UID\" [form]=\"form\" [key]=\"field.key\"\n                [src]=\"field.formattedValue\" [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\"\n                [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n                [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [layoutType]=\"layoutType\"\n                (elementClick)=\"onClick($event)\">\n            </pep-image>\n\n            <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n                [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n                [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [layoutType]=\"layoutType\">\n            </pep-signature>\n\n            <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n                [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n                [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n                [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [additionalValue]=\"field.additionalValue\" [layoutType]=\"layoutType\">\n            </pep-checkbox>\n\n            <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n                [label]=\"field.label\" [type]=\"field.type\"\n                [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n                [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [minValue]=\"field.minValue\" [maxValue]=\"field.maxValue\" [layoutType]=\"layoutType\">\n            </pep-date>\n\n            <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n                [formattedValue]=\"field.formattedValue\" [label]=\"field.label\" [type]=\"field.type\"\n                [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n                [layoutType]=\"layoutType\" (elementClick)=\"onClick($event)\">\n            </pep-internal-button>\n\n            <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n                [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n                [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\"\n                [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [layoutType]=\"layoutType\">\n            </pep-textarea>\n\n            <pep-quantity-selector *ngSwitchCase=\"'qs'\" [id]=\"field.key\" [form]=\"form\" [key]=\"field.key\"\n                [value]=\"field.value\" [label]=\"field.label\" [type]=\"field.type\"\n                [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n                [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [layoutType]=\"layoutType\" (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\">\n            </pep-quantity-selector>\n\n            <ng-container *ngSwitchDefault>\n                <ng-container *ngIf=\"field.formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\">\n                </ng-container>\n                <ng-template #notEmptyBlock>\n                    <ng-container\n                        *ngIf=\"field.controlType === 'attachment' || field.type === 'link'; then linkBlock; else notLinkBlock\">\n                    </ng-container>\n                    <ng-template #linkBlock>\n                        <a [id]=\"field.key\" class=\"color-link body-sm pep-report-input readonly\"\n                            *ngIf=\"field.formattedValue != null\" title=\"{{ field.formattedValue }}\" target=\"_blank\"\n                            href=\"{{ field.value }}\">{{ field.formattedValue }}</a>\n                    </ng-template>\n                    <ng-template #notLinkBlock>\n                        <span [id]=\"field.key\" class=\"body-sm pep-report-input readonly\"\n                            title=\"{{ field.formattedValue }}\" [ngStyle]=\"{ color: field.textColor }\">{{\n                            field.formattedValue }}</span>\n                    </ng-template>\n                </ng-template>\n                <ng-template #emptyBlock>\n                    <span>&nbsp;</span>\n                </ng-template>\n            </ng-container>\n        </ng-container>\n    </div>\n</ng-template>","import {\n    Component,\n    Input,\n    Output,\n    EventEmitter,\n    OnInit,\n    Renderer2,\n    ViewChild,\n    ElementRef,\n    ChangeDetectorRef,\n    OnDestroy,\n    OnChanges,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n    PepLayoutService,\n    UIControl,\n    UIControlField,\n    FIELD_TYPE,\n    ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n    IPepFormFieldClickEvent,\n    IPepFormFieldValueChangeEvent,\n} from './form.model';\n\nexport type PepListViewType = 'cards' | 'lines' | 'table';\n\n@Component({\n    selector: 'pep-internal-list',\n    templateUrl: './internal-list.component.html',\n    styleUrls: ['./internal-list.component.scss'],\n    host: {\n        '(window:resize)': 'winResize($event)',\n    },\n})\nexport class PepInternalListComponent implements OnInit, OnChanges, OnDestroy {\n    @Input() noDataFoundMsg = 'Items not found';\n    @Input() hideAllSelectionInMulti = false;\n\n    @Input() top = -1;\n    @Input() objectId = '0';\n    @Input() parentId = '0';\n    @Input() searchCode = '0';\n    // @Input() showTopBorder = false;\n    @Input() supportResizing = true;\n    @Input() parentScroll: Element | Window = null;\n    @Input() disabled = false;\n    @Input() disableEvents = false;\n    @Input() disableSelectionItems = false;\n    @Input() totalsRow = [];\n\n    // @Output()\n    // itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n    @Output()\n    fieldClick: EventEmitter<any> = new EventEmitter<IPepFormFieldClickEvent>();\n    @Output()\n    valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n    @ViewChild('noVirtualScrollCont') noVirtualScrollCont: ElementRef;\n    @ViewChild('tableHeader') tableHeader: ElementRef;\n    @ViewChild('selectAllCB') selectAllCB: any;\n\n    public uiControl: UIControl = null;\n    public totalRows = -1;\n    itemClass: string;\n    isTable = false;\n    private hasColumnWidthOfTypePercentage = true;\n\n    private _items: Array<ObjectsDataRow> = null;\n    get items(): Array<ObjectsDataRow> {\n        return this._items;\n    }\n\n    // isCardView = false;\n    private itemsCounter = 0;\n    showItems = true;\n    viewType: PepListViewType;\n    scrollItems: Array<ObjectsDataRow>;\n\n    public SEPARATOR = ',';\n\n    nativeWindow: any = null;\n\n    selectedItemId = '';\n    hoveredItemId = '';\n\n    private lockEvents = false;\n    private containerWidth = 0;\n\n    deviceHasMouse = false;\n\n    // headerIsInFocus = false;\n\n    // For resize\n    pressedColumn = '';\n    startX = 0;\n    startWidth = 0;\n    tableStartWidth = 0;\n\n    isUserSelected = false;\n    checkForChanges: any = null;\n    useVirtualScroll = true;\n    calculatedObjectHeight: string;\n\n    constructor(\n        private element: ElementRef,\n        private layoutService: PepLayoutService,\n        private cd: ChangeDetectorRef,\n        private renderer: Renderer2\n    ) {\n        this.nativeWindow = window;\n        this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n        this.layoutService.onMouseOver$.subscribe((deviceHasMouse) => {\n            this.deviceHasMouse = deviceHasMouse;\n        });\n    }\n\n    ngOnInit(): void {\n        this.containerWidth = 0;\n    }\n\n    ngOnChanges(changes): void {\n        if (this.containerWidth <= 0) {\n            this.setContainerWidth();\n        }\n    }\n\n    ngOnDestroy(): void {\n        // if (this.valueChange) {\n        //     this.valueChange.unsubscribe();\n        // }\n        // if (this.itemClick) {\n        //     this.itemClick.unsubscribe();\n        // }\n        // if (this.fieldClick) {\n        //     this.fieldClick.unsubscribe();\n        // }\n    }\n\n    setContainerWidth(): void {\n        if (!this.element.nativeElement.parentElement) {\n            return;\n        }\n\n        const selectionCheckBoxWidth = 0;\n\n        const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n        const style = getComputedStyle(\n            this.element.nativeElement.parentElement\n        );\n        // The container-fluid class padding left + right + border\n        const containerFluidSpacing =\n            parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n        const parentContainer =\n            this.element.nativeElement.parentElement.parentElement > 0\n                ? this.element.nativeElement.parentElement.parentElement\n                : this.element.nativeElement.parentElement;\n\n        // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n        const scrollWidth =\n            parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n                ? 18\n                : 0; // 18 is the default scroll width.\n\n        // The selectionCheckBoxWidth width + containerFluidSpacing + scrollWidth.\n        const rowHeaderWidthToSub =\n            containerFluidSpacing + selectionCheckBoxWidth + scrollWidth;\n        this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n    }\n\n    clear(): void {\n        this.cleanItems();\n        this.uiControl = null;\n    }\n\n    private toggleItems(isVisible: boolean): void {\n        this.showItems = isVisible;\n        this.lockEvents = !isVisible;\n    }\n\n    private updateScrollItems(startIndex, endIndex, loadInChunks = true): void {\n        this.scrollItems = this.items.slice(startIndex, endIndex);\n    }\n\n    getUniqItemId(itemId: string, itemType = ''): string {\n        return itemId + this.SEPARATOR + itemType;\n    }\n\n    setLayout(): void {\n        if (\n            this.totalRows === 0 ||\n            !this.uiControl ||\n            !this.uiControl.ControlFields ||\n            this.uiControl.ControlFields.length === 0\n        ) {\n            return;\n        }\n\n        this.uiControl.ControlFields.forEach((cf) => {\n            if (cf.ColumnWidth === 0) {\n                cf.ColumnWidth = 10;\n            }\n\n            if (\n                this.isTable &&\n                (cf.FieldType === FIELD_TYPE.Image ||\n                    // cf.FieldType === FIELD_TYPE.Indicators || ???\n                    cf.FieldType === FIELD_TYPE.Signature ||\n                    cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n                    cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n                    cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n                    cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n                    cf.FieldType === FIELD_TYPE.Package ||\n                    cf.ApiName === 'UnitsQuantity' ||\n                    cf.ApiName === 'QuantitySelector')\n            ) {\n                cf.Layout.XAlignment = 3;\n            }\n        });\n\n        if (!this.cd['destroyed']) {\n            this.cd.detectChanges();\n        }\n\n        // Set the columns width.\n        if (this.containerWidth <= 0) {\n            this.setContainerWidth();\n        }\n\n        this.calcColumnsWidth();\n        this.checkForChanges = new Date().getTime();\n    }\n\n    private calcColumnsWidth(): void {\n        const fixedMultiple = 3.78; // for converting em to pixel.\n        const length = this.uiControl.ControlFields.length;\n        const selectionCheckBoxWidth = 0;\n\n        // Is table AND there is at least one column of width type of percentage.\n        if (this.isTable) {\n            if (this.uiControl && this.uiControl.ControlFields) {\n                this.hasColumnWidthOfTypePercentage =\n                    this.uiControl.ControlFields.filter(\n                        (cf) => cf.ColumnWidthType === 1\n                    ).length === 0;\n            }\n        }\n\n        // If the columns size is fixed and the total is small then the container change it to percentage.\n        if (!this.hasColumnWidthOfTypePercentage) {\n            const totalFixedColsWidth = this.uiControl.ControlFields.map(\n                (cf) => cf.ColumnWidth * fixedMultiple\n            ).reduce((sum, current) => sum + current);\n\n            if (window.innerWidth > totalFixedColsWidth) {\n                this.hasColumnWidthOfTypePercentage = true;\n            }\n        }\n\n        let totalCalcColsWidth = 0;\n\n        // Calc by percentage\n        if (this.hasColumnWidthOfTypePercentage) {\n            const totalColsWidth: number = this.uiControl.ControlFields.map(\n                (cf) => cf.ColumnWidth\n            ).reduce((sum, current) => sum + current);\n\n            for (let index = 0; index < length; index++) {\n                const uiControlField: UIControlField = this.uiControl\n                    .ControlFields[index];\n                const calcColumnWidthPercentage =\n                    (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n                uiControlField.calcColumnWidth = Math.floor(\n                    (this.containerWidth * calcColumnWidthPercentage) / 100\n                );\n\n                if (index === length - 1) {\n                    uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n                        'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n                } else {\n                    uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n                        uiControlField.calcColumnWidth + 'px';\n                    totalCalcColsWidth += uiControlField.calcColumnWidth;\n                }\n            }\n\n            this.renderer.setStyle(\n                this.element.nativeElement,\n                'width',\n                'inherit'\n            );\n        } else {\n            for (let index = 0; index < length; index++) {\n                const uiControlField: UIControlField = this.uiControl\n                    .ControlFields[index];\n                const currentFixedWidth = Math.floor(\n                    uiControlField.ColumnWidth * fixedMultiple\n                );\n\n                if (index === length - 1) {\n                    uiControlField.calcTitleColumnWidthString =\n                        currentFixedWidth + 'px';\n                    uiControlField.calcColumnWidthString =\n                        currentFixedWidth - 4 + 'px'; // -4 for the row padding.\n                } else {\n                    uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n                        currentFixedWidth + 'px';\n                }\n\n                totalCalcColsWidth += currentFixedWidth;\n            }\n\n            this.renderer.setStyle(\n                this.element.nativeElement,\n                'width',\n                totalCalcColsWidth + selectionCheckBoxWidth + 'px'\n            );\n        }\n    }\n\n    private initResizeData(): void {\n        this.startX = 0;\n        this.startWidth = 0;\n        this.tableStartWidth = 0;\n        this.pressedColumn = '';\n    }\n\n    onListResizeStart(event, columnKey): void {\n        this.pressedColumn = columnKey;\n        this.startX = event.x;\n        this.startWidth = event.target.closest('.header-column').offsetWidth;\n        // Set the tableStartWidth to the container offsetWidth\n        this.tableStartWidth = this.noVirtualScrollCont.nativeElement.offsetWidth;\n    }\n\n    onListResize(event): void {\n        if (this.pressedColumn.length > 0) {\n            const widthToAdd = this.layoutService.isRtl()\n                ? this.startX - event.x\n                : event.x - this.startX;\n\n            // Set the width of the column and the container of the whole columns.\n            if (this.startWidth + widthToAdd >= 48 || widthToAdd > 0) {\n                const length = this.uiControl.ControlFields.length;\n                let totalCalcColsWidth = 0;\n\n                for (let index = 0; index < length; index++) {\n                    const uiControlField: UIControlField = this.uiControl\n                        .ControlFields[index];\n\n                    if (index === length - 1) {\n                        // Calc the last column only in percentage type.\n                        if (this.hasColumnWidthOfTypePercentage) {\n                            uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n                                'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n                        } else {\n                            if (uiControlField.ApiName === this.pressedColumn) {\n                                uiControlField.calcColumnWidth =\n                                    this.startWidth + widthToAdd;\n                                uiControlField.calcTitleColumnWidthString =\n                                    uiControlField.calcColumnWidth + 'px';\n                                uiControlField.calcColumnWidthString =\n                                    uiControlField.calcColumnWidth - 4 + 'px';\n                            }\n                        }\n                    } else if (uiControlField.ApiName === this.pressedColumn) {\n                        uiControlField.calcColumnWidth =\n                            this.startWidth + widthToAdd;\n                        uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n                            uiControlField.calcColumnWidth + 'px';\n                    }\n\n                    totalCalcColsWidth += uiControlField.calcColumnWidth;\n                }\n\n                this.renderer.setStyle(\n                    this.element.nativeElement,\n                    'width',\n                    this.tableStartWidth + widthToAdd + 'px'\n                );\n            }\n\n            this.checkForChanges = new Date().getTime();\n        }\n    }\n\n    getParent(el, parentSelector): any {\n        // If no parentSelector defined will bubble up all the way to *document*\n        if (parentSelector === undefined) {\n            parentSelector = document;\n        }\n        const parent = [];\n        let p = el.parentNode;\n\n        while (\n            p &&\n            p.className !== '' &&\n            p.className.indexOf(parentSelector) === -1 &&\n            parentSelector !== document\n        ) {\n            const o = p;\n            p = o.parentNode;\n        }\n        if (p.className.indexOf(parentSelector) > -1) {\n            parent.push(p); // Push that parentSelector you wanted to stop at\n        }\n        return parent;\n    }\n\n    onListResizeEnd(event): void {\n        if (this.pressedColumn.length > 0) {\n            if (\n                event &&\n                this.getParent(event.srcElement, 'resize-box').length > 0\n            ) {\n                this.initResizeData();\n            } else {\n                setTimeout(() => {\n                    this.initResizeData();\n                }, 0);\n            }\n        }\n    }\n\n    onListHeaderMouseEnter(event): void {\n        // this.headerIsInFocus = true;\n    }\n\n    onListHeaderMouseLeave(event): void {\n        // this.headerIsInFocus = false;\n        this.onListResizeEnd(event);\n        this.initResizeData();\n    }\n\n    onListChange(event: any): void {\n        if (this.disableEvents) {\n            return;\n        }\n\n        // For other events do nothing.\n        if (\n            typeof event.start === 'undefined' ||\n            typeof event.end === 'undefined'\n        ) {\n            return;\n        }\n\n        this.calculatedObjectHeight = event.calculatedChildHeight + 'px';\n\n        if (!this.lockEvents) {\n            this.toggleItems(false);\n            this.updateScrollItems(event.start, event.end, false);\n            this.toggleItems(true);\n        }\n    }\n\n    getParentContainer(): Element | Window {\n        return this.parentScroll ? this.parentScroll : window;\n    }\n\n    onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n        if (this.disabled) {\n            return;\n        }\n\n        this.valueChange.emit(valueChange);\n    }\n\n    onCustomizeFieldClick(\n        customizeFieldClickedData: IPepFormFieldClickEvent\n    ): void {\n        if (this.disabled) {\n            return;\n        }\n\n        this.fieldClick.emit(customizeFieldClickedData);\n    }\n\n    getIsDisabled(item: ObjectsDataRow): boolean {\n        if (this.disableSelectionItems) {\n            return true;\n        } else {\n            const IsNotSelectableForActions =\n                item && !item.IsSelectableForActions;\n            return IsNotSelectableForActions;\n        }\n    }\n\n    getIsItemSelected(itemId: string, itemType = ''): boolean {\n        let isSelected = false;\n\n        const uniqItemId = this.getUniqItemId(itemId, itemType);\n        isSelected = uniqItemId === this.selectedItemId;\n\n        return isSelected;\n    }\n\n    private setItemClicked(\n        itemId,\n        isSelectableForActions: boolean,\n        itemType: string,\n        isChecked: boolean\n    ): void {\n        const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n        // select the selected item.\n        if (isChecked) {\n            // Set seleted item\n            this.selectedItemId = uniqItemId;\n        } else {\n            if (this.selectedItemId === uniqItemId) {\n                this.selectedItemId = '';\n            }\n        }\n    }\n\n    itemClicked(e: any, item: ObjectsDataRow): void {\n        // Set seleted item\n        const itemId = item.UID.toString();\n        const itemType = item.Type.toString();\n        let isChecked = false;\n\n        if (item && item.IsSelectableForActions) {\n            this.selectedItemId = this.getUniqItemId(itemId, itemType);\n            isChecked = true;\n        }\n\n        if (this.isTable) {\n            this.setItemClicked(\n                itemId,\n                item.IsSelectableForActions,\n                itemType,\n                true\n            );\n        } else {\n            if (this.disabled) {\n                return;\n            }\n        }\n\n        // this.itemClick.emit({ source: item, viewType: this.viewType });\n    }\n\n    onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n        if (!this.deviceHasMouse) {\n            return;\n        }\n\n        const uniqItemId = this.getUniqItemId(itemId, itemType);\n        this.hoveredItemId = uniqItemId;\n    }\n\n    onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n        this.hoveredItemId = '';\n    }\n\n    onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n        if (!this.deviceHasMouse) {\n            return;\n        }\n\n        const uniqItemId = this.getUniqItemId(itemId, itemType);\n        this.hoveredItemId = uniqItemId;\n    }\n\n    onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n        this.hoveredItemId = '';\n    }\n\n    // call this function after resize + animation end\n    winResize(e): void {\n        this.containerWidth = 0;\n        this.setLayout();\n    }\n\n    trackByFunc(index: number, item: ObjectsDataRow): any {\n        return item && item.UID ? item.UID : index;\n    }\n\n    cleanItems(): void {\n        this.itemsCounter = 0;\n        this._items =\n            this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n        this.scrollItems = [];\n        this.calculatedObjectHeight = '';\n    }\n\n    getUIControl(): UIControl {\n        return this.uiControl;\n    }\n\n    initListData(\n        uiControl: UIControl,\n        totalRows: number,\n        items: ObjectsDataRow[],\n        viewType: PepListViewType = 'table',\n        itemClass = ''\n    ): void {\n        this.viewType = viewType;\n        this.isTable = viewType === 'table';\n        // this.isCardView = viewType === 'cards';\n        this.uiControl = uiControl;\n        this.itemClass = itemClass;\n        this.selectedItemId = '';\n        this.totalRows = totalRows;\n\n        // fix bug for the scrollTo that doesn't work on edge div , not window\n        // const scrollingElement = this.getParentContainer();\n        // scrollingElement.scrollTo(0, 0);\n\n        this.cleanItems();\n\n        this.updateItems(items);\n\n        this.setLayout();\n    }\n\n    private updateItems(items: ObjectsDataRow[]): void {\n        this.scrollItems = this._items = items;\n        this.itemsCounter = items.length;\n    }\n\n    updateItem(data: any): void {\n        let index = 0;\n\n        // Update items list\n        index = this.items.findIndex((i) => i && i.UID === data.UID);\n        if (index >= 0 && index < this.items.length) {\n            this.items[index] = data;\n        }\n\n        // Update scrollItems list\n        index = this.scrollItems.findIndex((i) => i && i.UID === data.UID);\n\n        if (index >= 0 && index < this.scrollItems.length) {\n            this.scrollItems[index] = data;\n            this.checkForChanges = new Date().getTime();\n        }\n    }\n\n    getIsItemEditable(uid: string): boolean {\n        const item = this.items.filter((x) => x.UID.toString() === uid);\n        if (item.length > 0) {\n            return item[0].IsEditable;\n        } else {\n            return false;\n        }\n    }\n\n    getItemDataByID(uid: string): ObjectsDataRow {\n        return this.items.find((item) => item.UID.toString() === uid);\n    }\n}\n","<ng-container *ngIf=\"totalRows == 0\">\n    <div class=\"pep-border-bottom\">\n        <p class=\"title-xl no-data\">\n            {{ (noDataFoundMsg ? noDataFoundMsg : 'LIST.NO_DATA_FOUND') | translate}}\n        </p>\n    </div>\n    <div class=\"no-data-suggestions\">\n        <p class=\"suggestions-title title-lg\">\n            {{ 'LIST.NO_DATA_FOUND_SUGGESTIONS_TITLE' | translate}}\n        </p>\n        <ul class=\"suggestions-list body-lg\" [innerHtml]=\"'LIST.NO_DATA_FOUND_SUGGESTIONS_LIST' | translate\"></ul>\n    </div>\n</ng-container>\n<ng-container *ngIf=\"totalRows > 0\">\n    <div *ngIf=\"isTable\" #tableHeader class=\"table-header\" (mouseup)=\"onListResizeEnd($event)\"\n        (mouseenter)=\"onListHeaderMouseEnter($event)\" (mouseleave)=\"onListHeaderMouseLeave($event)\"\n        (mousemove)=\"onListResize($event)\">\n\n        <div class=\"table-header-padding-top\"></div>\n        <fieldset class=\"table-header-fieldset\">\n            <fieldset>\n                <div *ngFor=\"let field of uiControl?.ControlFields; let j = index\" class=\"header-column pull-left flip\"\n                    [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\" [ngClass]=\"{\n                            'is-resizing': field.ApiName === pressedColumn,\n                            'is-first': j === 0,\n                            'is-last': j === uiControl?.ControlFields?.length - 1\n                        }\">\n                    <label *ngIf=\"field.Title != ''\" id=\"{{ field.ApiName }}\"\n                        class=\"header-label body-sm pull-left flip text-align-{{ field.Layout.XAlignment }}\"\n                        title=\"{{ field.Title }}\">\n                        {{ field.Title }}\n                    </label>\n                    <label *ngIf=\"field.Title == ''\" id=\"{{ field.ApiName }}\"\n                        class=\"header-label body-sm pull-left flip\">&nbsp;</label>\n\n                    <div *ngIf=\"supportResizing\" class=\"resize-box pull-right flip\"\n                        (mousedown)=\"onListResizeStart($event, field.ApiName)\">\n                        <div class=\"splitter\"></div>\n                    </div>\n                </div>\n            </fieldset>\n        </fieldset>\n    </div>\n\n    <div #noVirtualScrollCont [ngClass]=\"{ 'table-body': isTable, 'cards-body': !isTable }\">\n        <ng-container *ngTemplateOutlet=\"listData\"></ng-container>\n    </div>\n    <ng-container *ngTemplateOutlet=\"listTotals\"></ng-container>\n</ng-container>\n\n<ng-template #listData>\n    <ng-container *ngFor=\"let item of scrollItems; let i = index; let isFirst = first; trackBy: trackByFunc\">\n        <ng-container *ngIf=\"isTable\">\n            <div class=\"table-row\" (mouseenter)=\"onTableRowMouseEnter($event, item?.UID, item?.Type)\"\n                (mouseleave)=\"onTableRowMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n                        selected: getIsItemSelected(item?.UID, item?.Type),\n                        highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId\n                    }\"\n                [ngStyle]=\"{ height: calculatedObjectHeight, visibility: showItems || item ? 'visible' : 'hidden' }\">\n                <fieldset class=\"table-row-fieldset\" [ngStyle]=\"{ 'background-color': item?.BackgroundColor }\">\n                    <!-- [canEditObject]=\"!disabled && item?.IsEditable\" -->\n                    <pep-internal-form [checkForChanges]=\"checkForChanges\" [layout]=\"uiControl\" [data]=\"item\"\n                        [canEditObject]=\"!disabled\" [objectId]=\"objectId\" [parentId]=\"parentId\"\n                        [searchCode]=\"searchCode\" [lockEvents]=\"disableSelectionItems\" [layoutType]=\"'table'\"\n                        [isActive]=\"\n                                (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n                                item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n                            \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n                        (click)=\"itemClicked($event, item)\">\n                    </pep-internal-form>\n                </fieldset>\n            </div>\n        </ng-container>\n\n        <ng-container *ngIf=\"!isTable\">\n            <div [class]=\"itemClass\" (mouseenter)=\"onCardMouseEnter($event, item?.UID, item?.Type)\"\n                (mouseleave)=\"onCardMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n                        selected: getIsItemSelected(item?.UID, item?.Type),\n                        highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId,\n                        'card-view': viewType === 'cards',\n                        'line-view': viewType === 'lines'\n                    }\" class=\"pull-left flip\"\n                [ngStyle]=\"{ height: calculatedObjectHeight, visibility: showItems || item ? 'visible' : 'hidden' }\">\n                <!-- [canEditObject]=\"!disabled && item?.IsEditable\" -->\n                <pep-internal-form [checkForChanges]=\"checkForChanges\" [layout]=\"uiControl\" [data]=\"item\"\n                    [canEditObject]=\"!disabled\" [objectId]=\" objectId\" [parentId]=\"parentId\" [searchCode]=\"searchCode\"\n                    [lockEvents]=\"disableSelectionItems\" [layoutType]=\"'card'\" [isActive]=\"\n                            (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n                            item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n                        \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n                    (click)=\"itemClicked($event, item)\">\n                </pep-internal-form>\n            </div>\n        </ng-container>\n    </ng-container>\n</ng-template>\n\n<ng-template #listTotals>\n    <div *ngIf=\"totalsRow?.length > 0 && totalsRow.length <= uiControl?.ControlFields.length\" class=\"table-total\">\n        <fieldset class=\"table-header-fieldset\">\n            <div *ngFor=\"let field of uiControl?.ControlFields; let j = index\" class=\"total-column pull-left flip\"\n                [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\">\n                <label class=\"total-label body-sm text-align-{{ field.Layout.XAlignment }}\">\n                    {{ totalsRow[j] }}\n                </label>\n            </div>\n        </fieldset>\n    </div>\n</ng-template>","import {\n    Component,\n    OnInit,\n    OnDestroy,\n    Input,\n    Output,\n    EventEmitter,\n    ViewChild,\n    ElementRef,\n    ViewContainerRef,\n    TemplateRef,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { PepInternalPageService } from './internal-page.service';\n\nimport {\n    PepLayoutType,\n    UIControl,\n    KeyValuePair,\n    PepCustomizationService,\n    UIControlField,\n    ObjectsData,\n    FIELD_TYPE,\n} from '@pepperi-addons/ngx-lib';\nimport {\n    PepInternalListComponent,\n    PepListViewType,\n} from './internal-list.component';\nimport {\n    IPepFormFieldClickEvent,\n    IPepFormFieldValueChangeEvent,\n} from './form.model';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';\n\n@Component({\n    selector: 'pep-internal-page',\n    templateUrl: './internal-page.component.html',\n    styleUrls: ['./internal-page.component.scss'],\n    providers: [PepInternalPageService],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalPageComponent implements OnInit, OnDestroy {\n    static CURRENT_ADDITIONAL_API_NAME =\n        'item_details_currentAdditionalApiName';\n\n    controlType = 'internalPage';\n\n    @Input() field: any;\n    @Input() layoutType: PepLayoutType = 'form';\n\n    @Output()\n    internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n    @Output()\n    internalFormFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n    @ViewChild('my1mm') my1mm: ElementRef;\n    @ViewChild('mainViewCont') mainViewCont: ElementRef;\n\n    @ViewChild('orgCont', { read: ViewContainerRef }) orgCont: ViewContainerRef;\n    @ViewChild('dialogCont', { read: ViewContainerRef })\n    dialogCont: ViewContainerRef;\n    @ViewChild('matrixTemplate') matrixTemplate: TemplateRef<any>;\n    @ViewChild('matrixDialogTemplate', { read: TemplateRef })\n    matrixDialogTemplate: TemplateRef<any>;\n\n    @ViewChild(PepInternalListComponent)\n    customList: PepInternalListComponent;\n\n    resize: any;\n    checkForChanges: any = null;\n\n    childData: any = null;\n\n    emptyForm: FormGroup;\n    uiControl: UIControl;\n    rows: any;\n    lineViewRows: any;\n    totalsRow: any = [];\n    additionalApiNames: any = null;\n    currentAdditionalApiName: any = null;\n    focusedQS = false;\n    fieldIdWithFocus = '';\n    columnWidth = 100;\n    coverChildTable = false;\n    childViewTypes: Array<KeyValuePair<string>>;\n    currentViewType: KeyValuePair<string> = null;\n    currentViewTypeTitle: string;\n    sumOfMinColWidth = 0;\n    totalRowsWidth = 0;\n    viewWidth = '100%';\n    viewHeight = 'auto';\n    displayQSbtns = true;\n    selectedApiName = '';\n    showSort = false;\n    defaultRowSpan = -1;\n\n    constructor(\n        private dialogService: PepDialogService,\n        private internalPageService: PepInternalPageService,\n        public customizationService: PepCustomizationService,\n        private changeDetectorRef: ChangeDetectorRef\n    ) { }\n\n    private fillData(isInDialog = false): void {\n        const view = this.matrixTemplate.createEmbeddedView(null);\n\n        this.customList?.clear();\n        this.orgCont?.clear();\n\n        if (isInDialog) {\n            this.dialogCont?.clear();\n            this.dialogCont?.insert(view);\n        } else {\n            this.orgCont?.insert(view);\n        }\n\n        setTimeout(() => {\n            const viewType: PepListViewType = this.isTableView()\n                ? 'table'\n                : 'lines';\n            this.customList.initListData(\n                this.uiControl,\n                this.childData.TotalRows,\n                this.childData.Rows,\n                viewType\n            );\n            this.setTotalsRow();\n\n            // if (!this.childModal.isShown) {\n            const childrenCount = this.childData.Rows\n                ? this.childData.Rows.length\n                : 0;\n            const isEven = childrenCount % 2 === 0;\n            // 3 for matrix & flat matrix because the header + total is 2 more rows.\n            const rowsToAdd =\n                this.isMatrixView() || this.isFlatMatrixView()\n                    ? isEven\n                        ? 3\n                        : 4\n                    : 1;\n\n            const formRowHeight =\n                this.customizationService.calculateFormFieldHeight() * 16; // convert rem to pixel\n\n            // Set the default only if not set yet.\n            if (this.defaultRowSpan === -1) {\n                this.defaultRowSpan = this.field.rowSpan;\n            }\n\n            this.sumOfMinColWidth = 0;\n            this.totalRowsWidth = 0;\n\n            this.childData.UIControl.ControlFields.forEach(\n                (uiControlField: UIControlField) => {\n                    this.totalRowsWidth += uiControlField.ColumnWidth;\n                    uiControlField.minFieldWidth = this.mmToPx(12); // NEED TO GET THIS PARAM FROM CUSTOMIZATION;\n                    this.sumOfMinColWidth += 12;\n                }\n            );\n\n            this.setViewCover(this.childData.Rows);\n\n            if (this.coverChildTable) {\n                this.field.rowSpan = this.defaultRowSpan;\n            } else {\n                // For line view Add the height of the line (form height).\n                if (this.currentViewType.Key === 'OrderCenterFlatMatrixLine') {\n                    const maxRow = Math.max(\n                        ...this.uiControl.ControlFields.map((f) => {\n                            return f.Layout.Y + f.Layout.Height;\n                        })\n                    );\n\n                    // * 16 convert rem to pixel\n                    const cardRowsHeight =\n                        this.customizationService.calculateCardRowsHeight(\n                            maxRow\n                        ) * 16;\n\n                    // maxRow * 24 + 60 - 24 for each row in card + 60 for the padding of each card.\n                    // const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 56) / formRowHeight) + rowsToAdd);\n                    // + 16 is the 1rem margin outside card.\n                    const rowSpanToAdd =\n                        (childrenCount * (cardRowsHeight + 16)) /\n                        formRowHeight +\n                        rowsToAdd;\n                    this.field.rowSpan = rowSpanToAdd;\n                } else {\n                    // const tableRowsHeight = this.customizationService.calculateTableRowsHeight(childrenCount) * 16;\n                    // this.field.rowSpan = Math.ceil((tableRowsHeight + (rowsToAdd * 40)) / formRowHeight);\n                    // * 16 convert rem to pixel\n                    const rowsToAddHeight =\n                        this.customizationService.calculateTableRowsHeight(\n                            rowsToAdd,\n                            false\n                        ) * 16;\n                    const tableRowsHeight =\n                        this.customizationService.calculateTableRowsHeight(\n                            childrenCount\n                        ) * 16;\n                    this.field.rowSpan =\n                        (rowsToAddHeight + tableRowsHeight) / formRowHeight;\n                }\n            }\n        }, 0);\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    private fillChildData(res: any): void {\n        this.childData = res;\n        this.uiControl = res.UIControl;\n        this.additionalApiNames = res.AdditionalApiNames;\n\n        this.fillData();\n    }\n\n    mmToPx(mm): number {\n        const height = this.my1mm.nativeElement.clientHeight;\n        return Math.floor(mm * height); // returns sizes in PX\n    }\n\n    private isMatrixView(): boolean {\n        return (\n            this.currentViewType &&\n            this.currentViewType.Key === 'OrderCenterMatrix'\n        );\n    }\n\n    private isFlatMatrixView(): boolean {\n        return (\n            this.currentViewType &&\n            this.currentViewType.Key === 'OrderCenterFlatMatrixGrid'\n        );\n    }\n\n    isTableView(): boolean {\n        return this.isMatrixView() || this.isFlatMatrixView();\n    }\n\n    changeChildrenViewType(viewTypeKey: string): void {\n        this.rows = [];\n        this.uiControl = null;\n\n        for (const vt of this.childViewTypes) {\n            if (vt.Key === viewTypeKey) {\n                this.currentViewType = vt;\n                break;\n            }\n        }\n\n        this.currentViewTypeTitle = this.currentViewType.Value;\n\n        this.internalPageService.changeChildrenViewType(\n            this.currentViewType.Key,\n            (res: ObjectsData) => {\n                if (res.Rows) {\n                    this.fillChildData(res);\n                }\n            }\n        );\n    }\n\n    setViewCover(rows): void {\n        if (!rows) {\n            return;\n        }\n\n        const matrixCont = this.mainViewCont.nativeElement;\n        const viewWidth = matrixCont.clientWidth;\n\n        this.viewWidth = viewWidth ? viewWidth.toString() : '100%';\n\n        // if the matrix located on the bottom / there is nothing under the matrix we dont need to check the height\n        if (parseInt(viewWidth, 10) < this.mmToPx(this.sumOfMinColWidth)) {\n            this.coverChildTable = true;\n        } else {\n            this.coverChildTable = false;\n        }\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    showMatrixDialog(): void {\n        const config = this.dialogService.getDialogConfig(\n            {\n                disableClose: false,\n            },\n            'large'\n        );\n\n        const dialogRef = this.dialogService.openDialog(\n            this.matrixDialogTemplate,\n            {},\n            config\n        );\n\n        dialogRef.afterOpened().subscribe(() => {\n            this.fillData(true);\n        });\n\n        dialogRef.afterClosed().subscribe((value) => {\n            this.fillData(false);\n        });\n    }\n\n    ngOnInit(): void {\n        // let field = this.field as PepInternalPageField;\n\n        this.internalPageService.initDetails(\n            this.field.objectId,\n            this.field.parentId,\n            this.field.searchCode,\n            (resViewTypes: any) => {\n                // my code DI-7134\n                resViewTypes.Rows = resViewTypes.Rows.filter(\n                    (item) => item.Key !== 'OrderCenterView1'\n                );\n\n                if (resViewTypes.Rows && resViewTypes.Rows.length > 0) {\n                    if (!resViewTypes.Default) {\n                        resViewTypes.Default = resViewTypes.Rows[0].Key;\n                    }\n                    this.childViewTypes = resViewTypes.Rows;\n                    this.currentViewType = resViewTypes.Rows[0];\n\n                    // for (var i = 0; i < resViewTypes.Rows.length; i++) {\n                    for (const viewTypeRow of resViewTypes.Rows) {\n                        if (viewTypeRow.Value === resViewTypes.Default) {\n                            this.currentViewType = viewTypeRow;\n                        }\n                    }\n\n                    this.loadLastAdditionalApiName();\n                    this.changeChildrenViewType(this.currentViewType.Key);\n                }\n            }\n        );\n\n        this.resize = fromEvent(window, 'resize')\n            .pipe(debounceTime(10))\n            .subscribe((event) => {\n                this.setViewCover(this.rows);\n            });\n    }\n\n    loadLastAdditionalApiName(): void {\n        const daa = sessionStorage.getItem(\n            PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME\n        );\n        if (daa && daa.length > 0) {\n            const additionalApiName = JSON.parse(daa);\n            this.currentAdditionalApiName = additionalApiName;\n            this.internalPageService.additionalApiName = additionalApiName?.Key;\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (this.resize) {\n            this.resize.unsubscribe();\n        }\n    }\n\n    changeAdditionalApiName(additionalApiName): void {\n        this.internalPageService.changeAdditionalApiName(\n            additionalApiName ? additionalApiName.Key : '',\n            (res: any) => {\n                // for (let index = 0; index < res.Rows.length; index++) {\n                for (const row of res.Rows) {\n                    this.updateChanges(row);\n                }\n\n                this.changeDetectorRef.markForCheck();\n            }\n        );\n\n        sessionStorage.setItem(\n            PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME,\n            JSON.stringify(additionalApiName)\n        );\n\n        setTimeout(() => {\n            this.currentAdditionalApiName = additionalApiName;\n        }, 0);\n    }\n\n    setTotalsRow(): void {\n        this.totalsRow = [];\n\n        if (this.isMatrixView() || this.isFlatMatrixView()) {\n            let totalCol = 0;\n\n            const items = this.customList.items;\n            if (items) {\n                for (let col = 0; col < items[0].Fields.length; col++) {\n                    const field = items[0].Fields[col];\n                    if (\n                        field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n                        field.FieldType ===\n                        FIELD_TYPE.NumberIntegerQuantitySelector ||\n                        field.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n                        field.FieldType ===\n                        FIELD_TYPE.NumberRealQuantitySelector ||\n                        field.FieldType === FIELD_TYPE.CalculatedInt ||\n                        field.FieldType === FIELD_TYPE.NumberInteger ||\n                        field.FieldType === FIELD_TYPE.CalculatedReal ||\n                        field.FieldType === FIELD_TYPE.NumberReal\n                    ) {\n                        totalCol = 0;\n                        for (const listItem of items) {\n                            if (\n                                listItem.Fields[col] &&\n                                listItem.Fields[col].Value\n                            ) {\n                                const num = parseFloat(\n                                    listItem.Fields[col].Value\n                                );\n                                totalCol += isNaN(num) ? 0 : num;\n                            }\n                        }\n                        this.totalsRow.push(totalCol);\n                    } else {\n                        this.totalsRow.push('');\n                    }\n                }\n            }\n        }\n    }\n\n    updateChanges(elementToUpdate: any): void {\n        this.customList.updateItem(elementToUpdate);\n\n        // Update memory data\n        for (let index = 0; index < this.childData.Rows.length; index++) {\n            if (this.childData.Rows[index].UID === elementToUpdate.UID) {\n                this.childData.Rows[index] = elementToUpdate;\n            }\n        }\n    }\n\n    setValueCallback(id: any, res: any): void {\n        if (res.Rows.length === 1) {\n            const field = res.Rows[0].Fields.find((f) => f.ApiName === 'ObjectMenu');\n            if (field) {\n                // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n                //        Disabled in cart on regular items and not campign items.\n                field.Enabled = true;\n            }\n\n            this.updateChanges(res.Rows[0]);\n        }\n\n        this.setTotalsRow();\n        this.checkForChanges = new Date();\n\n        // DI-15985\n        this.internalFormFieldChange.emit(res);\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    onCustomizeObjectChanged(\n        customizeObjectChangedData: IPepFormFieldValueChangeEvent\n    ): void {\n        this.internalPageService.childValueChanged(\n            customizeObjectChangedData.id,\n            customizeObjectChangedData.key,\n            customizeObjectChangedData.value,\n            (res: any) => {\n                this.setValueCallback(customizeObjectChangedData.id, res);\n            }\n        );\n    }\n\n    onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent): void {\n        let handledEvent = false;\n\n        // For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent\n        if (fieldClickEvent.controlType === 'qs') {\n            if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {\n                handledEvent = true;\n                this.internalPageService.childPlusClick(\n                    fieldClickEvent.id,\n                    fieldClickEvent.key,\n                    (res: any) => {\n                        this.setValueCallback(fieldClickEvent.id, res);\n                    }\n                );\n            } else if (\n                fieldClickEvent.value === PepQuantitySelectorComponent.MINUS\n            ) {\n                handledEvent = true;\n                this.internalPageService.childMinusClick(\n                    fieldClickEvent.id,\n                    fieldClickEvent.key,\n                    (res: any) => {\n                        this.setValueCallback(fieldClickEvent.id, res);\n                    }\n                );\n            }\n        }\n\n        if (!handledEvent) {\n            this.internalFormFieldClick.emit(fieldClickEvent);\n        }\n    }\n}\n","<ng-template #matrixHeaderTemplate>\n    <div class=\"matrix-title-container pep-border-bottom align-{{\n            field.xAlignment\n        }}\" title=\"{{ field.label }}\">\n        <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n        <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n            <ng-container *ngIf=\"\n                    currentViewType?.Key == 'OrderCenterMatrix' &&\n                    additionalApiNames &&\n                    additionalApiNames.length > 0\n                \">\n                <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n                    menu-blur>\n                    <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\">&nbsp;{{\n                        currentAdditionalApiName?.Value }}&nbsp;</span>\n\n                    <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n                        <pep-icon name=\"system_info\"></pep-icon>\n                    </mat-icon>\n                </button>\n                <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n                    <button mat-menu-item [ngClass]=\"{\n                            selected: currentAdditionalApiName === null\n                        }\" (click)=\"changeAdditionalApiName(null)\">\n                        <span>{{ \"LIST.NONE\" | translate }}</span>\n                    </button>\n                    <button mat-menu-item [ngClass]=\"{\n                            selected:\n                                currentAdditionalApiName?.Key ==\n                                additionalApiName?.Key\n                        }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n                        (click)=\"changeAdditionalApiName(additionalApiName)\">\n                        <span>{{ additionalApiName.Value }}</span>\n                    </button>\n                </mat-menu>\n            </ng-container>\n            <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n                <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n                    [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n                    <mat-icon>\n                        <pep-icon name=\"view_card_md\"></pep-icon>\n                    </mat-icon>\n                </button>\n\n                <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n                    <button mat-menu-item [ngClass]=\"{\n                            selected: currentViewType?.Key == viewType?.Key\n                        }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n                        <mat-icon [ngSwitch]=\"viewType?.Key\">\n                            <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n                            <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n                            <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n                        </mat-icon>\n                        <span>{{ viewType?.Value }}</span>\n                    </button>\n                </mat-menu>\n            </ng-container>\n        </div>\n    </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n    <div #matrixContainer class=\"matrix-container\">\n        <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n            (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n    </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n    <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n    <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n        <div class=\"table-cover\"></div>\n        <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n            [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n            {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n        </button>\n    </ng-container>\n\n    <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n    <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n    <div mat-dialog-title>\n        <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n    </div>\n\n    <div mat-dialog-content>\n        <ng-container #dialogCont></ng-container>\n    </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n    tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\" role=\"document\">\n        <div class=\"modal-content\">\n            <div class=\"modal-body matrix-dialog-body\">\n                <ng-container #modalCont></ng-container>\n            </div>\n        </div>\n    </div>\n</div> -->","import { Injectable } from '@angular/core';\nimport { PepHttpService } from '@pepperi-addons/ngx-lib';\n\n@Injectable()\nexport class PepInternalCaruselService {\n    private eventUrl: string;\n\n    constructor(private httpService: PepHttpService) {\n        this.eventUrl = 'Service1.svc/v1/EmitEvent';\n    }\n\n    emitEvent(uiObjectKey: string, fieldKey: string, fieldValue: string, eventName: string, callbackFunc: any) {\n        const body = {\n            'EventKey': eventName,\n            'EventData': JSON.stringify({\n                UIObjectKey: uiObjectKey,\n                FieldID: fieldKey,\n                Value: fieldValue\n            })\n        };\n\n        this.httpService.postWapiApiCall(`${this.eventUrl}`, body).subscribe(\n            (res) => {\n                console.log(res);\n                callbackFunc(res);\n            }\n            // (error) => {},\n            // () => {}\n        );\n    }\n}\n","import {\n    Component,\n    OnInit,\n    OnDestroy,\n    Input,\n    Output,\n    EventEmitter,\n    ElementRef,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    ViewChild,\n    AfterViewInit,\n} from '@angular/core';\nimport { PepInternalCaruselService } from './internal-carusel.service';\n\nimport {\n    PepLayoutType,\n    UIControl,\n    PepCustomizationService,\n    ObjectsDataRow,\n    PepInternalCaruselField,\n    PepLayoutService,\n    PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport {\n    IPepFormFieldClickEvent,\n    IPepFormFieldValueChangeEvent,\n} from './form.model';\nimport { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\n@Component({\n    selector: 'pep-internal-carusel',\n    templateUrl: './internal-carusel.component.html',\n    styleUrls: ['./internal-carusel.component.scss'],\n    providers: [PepInternalCaruselService],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalCaruselComponent implements OnInit, AfterViewInit {\n    @ViewChild('carousel', { read: PepCarouselComponent })\n    carousel: PepCarouselComponent;\n\n    private _field: any;\n    @Input()\n    set field(value: any) {\n        this._field = value;\n        const caruselField = this._field as PepInternalCaruselField;\n\n        if (caruselField && caruselField.pageInfo) {\n            this.layout = caruselField.pageInfo.UIControl;\n            this.items = caruselField.pageInfo.Rows;\n        }\n    }\n    get field(): any {\n        return this._field;\n    }\n\n    @Input() layoutType: PepLayoutType = 'form';\n\n    @Output()\n    internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n    @Output()\n    internalFormFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n    private _items: Array<any> = null;\n    set items(value: Array<any>) {\n        this._items = value;\n        // this.moveTo(0);\n    }\n    get items() {\n        return this._items;\n    }\n\n    layout: any = null;\n    duration = 1000;\n\n    private itemsToMove = 3;\n\n    prevDisabled = false;\n    nextDisabled = false;\n    screenSize: PepScreenSizeType;\n    PepScreenSizeType = PepScreenSizeType;\n\n    constructor(\n        private layoutService: PepLayoutService,\n        private internalCaruselService: PepInternalCaruselService\n    ) { }\n\n    ngOnInit(): void {\n        //\n    }\n\n    ngAfterViewInit(): void {\n        this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n            this.screenSize = size;\n        });\n    }\n\n    onCustomizeObjectChanged(\n        customizeObjectChangedData: IPepFormFieldValueChangeEvent\n    ): void {\n        this.internalCaruselService.emitEvent(customizeObjectChangedData.uiObjectKey, customizeObjectChangedData.key, customizeObjectChangedData.value, 'SetFieldValue', () => {\n            this.internalFormFieldChange.emit(customizeObjectChangedData);\n        });\n    }\n\n    onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent): void {\n        let handledEvent = false;\n\n        // For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent\n        if (fieldClickEvent.controlType === 'qs') {\n            if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {\n                handledEvent = true;\n                this.internalCaruselService.emitEvent(fieldClickEvent.uiObjectKey, fieldClickEvent.key, '', 'IncrementFieldValue', () => {\n                    this.internalFormFieldChange.emit({});\n                });\n\n            } else if (fieldClickEvent.value === PepQuantitySelectorComponent.MINUS) {\n                handledEvent = true;\n                this.internalCaruselService.emitEvent(fieldClickEvent.uiObjectKey, fieldClickEvent.key, '', 'DecrementFieldValue', () => {\n                    this.internalFormFieldChange.emit({});\n                });\n            }\n        }\n\n        if (!handledEvent) {\n            this.internalFormFieldClick.emit(fieldClickEvent);\n        }\n    }\n\n    moveLeft() {\n        const indexToMove = Math.max(\n            this.carousel.currIndex - this.itemsToMove,\n            0\n        );\n        this.moveTo(indexToMove);\n    }\n\n    moveRight() {\n        const indexToMove = Math.min(\n            this.carousel.currIndex + this.itemsToMove,\n            this.items.length\n        );\n        this.moveTo(indexToMove);\n    }\n\n    moveTo(index: number) {\n        if (this.carousel) {\n            this.carousel.moveTo(index);\n        }\n    }\n\n    onReachesLeftBound(event: boolean) {\n        this.prevDisabled = event;\n    }\n\n    onReachesRightBound(event: boolean) {\n        this.nextDisabled = event;\n    }\n}","<div class=\"carousel-container\">\n    <ng-container *ngIf=\"items?.length > 0; then carouselBlock; else emptyBlock\"></ng-container>\n    <ng-template #emptyBlock>\n        <!-- No items -->\n    </ng-template>\n    <ng-template #carouselBlock>\n        <pep-button *ngIf=\"screenSize <= PepScreenSizeType.SM\" [iconName]=\"'arrow_left_alt'\" [styleType]=\"'regular'\"\n            [disabled]=\"prevDisabled\" (click)=\"moveLeft()\" class=\"carousel-arrow start-arrow\">\n        </pep-button>\n        <pep-carousel #carousel [xWheelEnabled]=\"false\" [snapDuration]=\"duration\"\n            (reachesLeftBound)=\"onReachesLeftBound($event)\" (reachesRightBound)=\"onReachesRightBound($event)\">\n            <ng-container *ngFor=\"let item of items\">\n                <pep-internal-form pepCarouselItem [layout]=\"layout\" [data]=\"item\" [layoutType]=\"'card'\" class=\"card-view \"\n                    (valueChange)=\"onCustomizeObjectChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\">\n                </pep-internal-form>\n            </ng-container>\n        </pep-carousel>\n        <pep-button *ngIf=\"screenSize <= PepScreenSizeType.SM\" [iconName]=\"'arrow_right_alt'\" [styleType]=\"'regular'\"\n            [disabled]=\"nextDisabled\" (click)=\"moveRight()\" class=\"carousel-arrow end-arrow\">\n        </pep-button>\n    </ng-template>\n</div>","import {\n    Component,    \n    OnChanges,\n    Input,\n    Output,\n    EventEmitter,    \n    ViewEncapsulation,\n    ChangeDetectionStrategy,    \n    OnDestroy    \n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n    PepFieldBase,\n    PepLayoutType,\n    IPepFieldValueChangeEvent,\n    IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\nimport { IPepFormFieldClickEvent, IPepFormFieldValueChangeEvent } from './form.model';\n\n\n@Component({\n    selector: 'pep-field-generator',\n    templateUrl: './field-generator.component.html',\n    styleUrls: ['./field-generator.component.scss'],\n    encapsulation: ViewEncapsulation.Emulated,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepFieldGeneratorComponent implements OnChanges, OnDestroy {      \n    private _field: any;\n    @Input()\n    set field(value: any) {\n        this._field = value;       \n    }\n    get field(): any {\n        return this._field;\n    }\n\n    @Input() isActive = false;\n    @Input() uid: any = null;\n    @Input() form: FormGroup;\n    @Input() layoutType: PepLayoutType = 'form';\n    @Input() showTitle = true;\n\n    @Input() checkForChanges: any = null;\n    @Output()\n    valueChange: EventEmitter<IPepFieldValueChangeEvent> = new EventEmitter<IPepFieldValueChangeEvent>();\n    // @Output()\n    // formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n    @Output()\n    elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n    @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n    @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n\n    @Output()\n    formValueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n    @Output()\n    formFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n    get isValid(): boolean {\n        if (this.field.readonly || this.field.disabled) {\n            return true;\n        } else {\n            const formControl = this.form && this.form.get(this.field.key);\n\n            if (formControl) {\n                return formControl.valid;\n            } else {\n                return false;\n            }\n        }\n    }\n\n    get isTouched(): boolean {\n        const formControl = this.form && this.form.get(this.field.key);\n        return formControl ? formControl.touched : false;\n    }\n\n    get isDirty(): boolean {\n        const formControl = this.form && this.form.get(this.field.key);\n        return formControl ? formControl.dirty : false;\n    }\n\n    onFileChanged(fileData: any, field: PepFieldBase) {\n        const value = fileData ? JSON.stringify(fileData) : '';\n        const fieldValueChange = {\n            key: field.key,\n            value: value,\n            controlType: field.controlType,\n        };\n        this.valueChange.emit(fieldValueChange);\n    }\n\n    onAddressValueChanged(\n        valueChange: IPepFieldValueChangeEvent,\n        field: PepFieldBase\n    ) {\n        const fieldValueChange = {\n            key: valueChange.key,\n            value: valueChange.value,\n            controlType: field.controlType,\n        };\n        this.valueChange.emit(fieldValueChange);\n    }\n\n    onValueChanged(value: any, field: PepFieldBase): void {\n        const fieldValueChange = {\n            key: field.key,\n            value: value.toString(),\n            controlType: field.controlType,\n        };\n        this.valueChange.emit(fieldValueChange);\n    }\n\n    onInternalFormFieldChanged(internalFormFieldChange: any): void {\n        this.internalFormFieldChange.emit(internalFormFieldChange);\n    }\n\n    // onFormValidationChanged(formValidationChange: any): void {\n    //     this.formValidationChange.emit(formValidationChange);\n    // }\n\n    onClick(fieldClicked: any): void {\n        this.elementClick.emit(fieldClicked);\n    }\n\n    onInternalFormFieldClick(internalFormFieldClick: any): void {\n        this.internalFormFieldClick.emit(internalFormFieldClick);\n    }\n\n    onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n        this.formValueChange.emit(event);\n    }\n\n    onFormFieldClick(event: IPepFormFieldClickEvent): void {\n        this.formFieldClick.emit(event);\n    }\n\n    ngOnChanges(changes: any): void {\n        // debugger;\n        // For testing.\n        // this.field.disabled = this.field.readonly = false;\n    }\n\n    ngOnDestroy(): void {\n        //\n    }\n}\n","<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n    <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n        [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n    </pep-address>\n\n    <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n        [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n        (fileChange)=\"onFileChanged($event, field)\">\n    </pep-attachment>\n\n    <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n        [value]=\"(field.value?.toString() | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n        [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n        [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n    </pep-checkbox>\n\n    <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n        [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n    </pep-date>\n\n    <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n        [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n    </pep-images-filmstrip>\n\n    <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n        [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n        [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n        [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n        (fileChange)=\"onFileChanged($event, field)\">\n    </pep-image>\n\n    <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [allowDecimal]=\"field.allowDecimal\"\n        [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n        [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n        [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\" (valueChange)=\"onValueChanged($event, field)\"\n        (elementClick)=\"onClick($event)\">\n    </pep-quantity-selector>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\"  -->\n\n    <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n        [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\" [renderTitle]=\"field.renderTitle\"\n        [renderEnlargeButton]=\"field.renderEnlargeButton\" (valueChange)=\"onValueChanged($event, field)\"\n        [isActive]=\"isActive\">\n    </pep-rich-html-textarea>\n\n    <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n        [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" [emptyOption]=\"field.emptyOption\"\n        (valueChange)=\"onValueChanged($event, field)\" \n        [isActive]=\"isActive\">\n    </pep-select>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n    <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n        [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n    </pep-separator>\n\n    <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n        [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n        [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n    </pep-signature>\n\n    <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n        [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n        [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n    </pep-textarea>\n\n    <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [accessory]=\"field.accessory\" [label]=\"field.label\"\n        [placeholder]=\"field.placeholder\" [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n        [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\"\n        [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [regex]=\"field.regex\" [regexError]=\"field.regexError\"\n        [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n        (valueChange)=\"onValueChanged($event, field)\" \n        [isActive]=\"isActive\" [visible]=\"field.visible\">\n    </pep-textbox>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n    <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n        [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n        [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n        [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n        (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n        (elementClick)=\"onClick($event)\">\n    </pep-link>\n    <!-- (formValidationChange)=\"onFormValidationChanged($event)\"  -->\n\n    <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n    </pep-indicators>\n    <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n        [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n        [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n        [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n        [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n        (valueChange)=\"onValueChanged($event, field)\">\n    </pep-internal-button>\n    <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n        [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n        (elementClick)=\"onClick($event)\">\n    </pep-internal-menu>\n    <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n        (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n        (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n    </pep-internal-page>\n\n    <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n        (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n        (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n    </pep-internal-carusel>\n\n    <ng-container *ngSwitchCase=\"'placeholder'\">\n    </ng-container>\n</ng-container>","import {\n    Component,\n    ChangeDetectionStrategy,\n    OnInit,\n    OnDestroy,\n    Input,\n    KeyValueDiffers,\n    Output,\n    EventEmitter,\n    OnChanges,\n    DoCheck,    \n} from '@angular/core';\nimport {\n    FormGroup,\n    FormBuilder,\n    Validators,\n    AbstractControl,\n} from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n    PepDialogService,\n    PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport {\n    IPepFieldValueChangeEvent,\n    IPepFieldClickEvent,\n    PepLayoutType,\n    FIELD_TYPE,\n    PepCustomizationService,\n    PepLayoutService,\n    UIControl,\n    UIControlField,\n    ObjectsDataRow,\n    ObjectsDataRowCell,\n    PepFieldBase,\n    PepTextboxField,\n    PepSelectField,\n    PepInternalMenuField,\n    PepQuantitySelectorField,\n    PepAddressField,\n    PepIndicatorsField,\n    PepInternalPageField,\n    PepInternalCaruselField,\n    PepInternalButtonField,\n    PepAttachmentField,\n    PepSignatureField,\n    PepImageField,\n    PepImagesField,\n    PepLinkField,\n    PepTextareaField,\n    PepRichHtmlTextareaField,\n    PepDateField,\n    PepCheckboxField,\n    PepSeparatorField,\n    PepPlaceholderField,\n    PepHorizontalAlignment,\n    PepVerticalAlignment,\n    X_ALIGNMENT_TYPE,\n    Y_ALIGNMENT_TYPE,\n    DEFAULT_VERTICAL_ALIGNMENT,\n    DEFAULT_HORIZONTAL_ALIGNMENT,\n    KeyValuePair,\n    IPepOption,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IPepFormFieldValueChangeEvent, IPepFormFieldClickEvent } from './form.model';\n\n@Component({\n    selector: 'pep-form',\n    templateUrl: './form.component.html',\n    styleUrls: ['./form.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepFormComponent implements OnInit, DoCheck, OnChanges, OnDestroy {\n    @Input() isInternal = true;\n    @Input() isReport = false;\n    @Input() layout: UIControl;\n    @Input() lockEvents = false;\n    @Input() canEditObject = true;\n\n    private _data: ObjectsDataRow = null;\n    @Input()\n    set data(value: ObjectsDataRow) {\n        const shouldReload = this.shouldReloadForm || !this._data;\n        this._data = value;\n\n        if (shouldReload) {\n            this._shouldReloadForm = false;\n            this.initForm();\n        } else {\n            this.updateForm();\n        }\n    }\n    get data(): ObjectsDataRow {\n        return this._data;\n    }\n\n    @Input()\n    set lockFields(value: boolean) {\n        this.isLocked = value;\n    }\n\n    @Input() isActive = false;    \n    @Input() layoutType: PepLayoutType = 'card';\n    // @Input() listType = '';\n    @Input() objectId = '0';\n    @Input() parentId = '0';\n    @Input() searchCode = '0';\n    @Input() showTitle = true;\n    @Input() firstFieldAsLink = false;\n    @Input() checkForChanges: any = null;\n\n    @Output()\n    valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n    @Output()\n    formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    @Output()\n    fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n    @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n    @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n\n    isLocked = false;\n    formGutterSize;\n    cardGutterSize;\n    rowHeight;\n    // private matrixIsLast = false;\n    // lastUpdatedFieldApiName: string = '';\n    form: FormGroup;\n    differ: any;\n\n    // payLoad = '';\n    private rows: Array<PepFieldBase[]> = [];\n    fields: PepFieldBase[] = [];\n\n    private _fieldsSubject: BehaviorSubject<PepFieldBase[]> = new BehaviorSubject<PepFieldBase[]>([]);\n    get fields$(): Observable<PepFieldBase[]> {\n        return this._fieldsSubject.asObservable();\n    }\n\n    columns = 1;\n\n    private hasMenuFloatingOnOtherField = false;\n    private menuField: any;\n    private menuDataField: any;\n    private hasCampaignField: any;\n    private hasCampaignDataField: any;\n    private indicatorsField: any;\n    private indicatorsDataField: any = null;\n\n    private _shouldReloadForm = false;\n    get shouldReloadForm(): boolean {\n        return this._shouldReloadForm;\n    }\n\n    // eventServiceSub: Subscription;\n    // public jsonLib = JSON;\n\n    constructor(\n        private dialogService: PepDialogService,\n        private customizationService: PepCustomizationService,\n        private layoutService: PepLayoutService,\n        private fb: FormBuilder,\n        differs: KeyValueDiffers,\n        private translate: TranslateService\n    ) {\n        // store the initial value to compare with\n        this.differ = differs.find({}).create();\n    }\n\n    convertXAlignToHorizontalAlign(\n        xAlign: X_ALIGNMENT_TYPE\n    ): PepHorizontalAlignment {\n        let res = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n        if (\n            xAlign === X_ALIGNMENT_TYPE.None ||\n            xAlign === X_ALIGNMENT_TYPE.Left\n        ) {\n            res = 'left';\n        } else if (xAlign === X_ALIGNMENT_TYPE.Right) {\n            res = 'right';\n        } else {\n            res = 'center';\n        }\n\n        return res;\n    }\n\n    convertYAlignToVerticalAlign(\n        yAlign: Y_ALIGNMENT_TYPE\n    ): PepVerticalAlignment {\n        let res = DEFAULT_VERTICAL_ALIGNMENT;\n\n        if (\n            yAlign === Y_ALIGNMENT_TYPE.None ||\n            yAlign === Y_ALIGNMENT_TYPE.Top\n        ) {\n            res = 'top';\n        } else if (yAlign === Y_ALIGNMENT_TYPE.Bottom) {\n            res = 'bottom';\n        } else {\n            res = 'middle';\n        }\n\n        return res;\n    }\n\n    convertOptionalValues(\n        optionalValues: Array<KeyValuePair<string>>\n    ): IPepOption[] {\n        if (optionalValues && optionalValues.length > 0) {\n            return optionalValues.map((ov) => {\n                return { key: ov.Key, value: ov.Value };\n            });\n        } else {\n            return [];\n        }\n    }\n\n    convertAddressFields(\n        controlField: UIControlField,\n        addressFields: Array<ObjectsDataRowCell>,\n        canEditObject: boolean\n    ): PepFieldBase[] {\n        const fields: PepFieldBase[] = [];\n\n        addressFields.forEach((field) => {\n            let customField: PepFieldBase;\n            const placeholder = field.ApiName;\n\n            if (field.ApiName.toLowerCase().indexOf('street') >= 0) {\n                customField = new PepTextboxField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    type: 'text',\n                    placeholder,\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 0,\n                    rowSpan: 1,\n                    col: 0,\n                    colSpan: 2,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 0,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('city') >= 0) {\n                customField = new PepTextboxField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    type: 'text',\n                    placeholder,\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 0,\n                    rowSpan: 1,\n                    col: 2,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 1,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('state') >= 0) {\n                customField = new PepSelectField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    placeholder,\n                    options: this.convertOptionalValues(field.OptionalValues),\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 1,\n                    rowSpan: 1,\n                    col: 0,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 2,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('zipcode') >= 0) {\n                customField = new PepTextboxField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    type: 'text',\n                    placeholder,\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 1,\n                    rowSpan: 1,\n                    col: 1,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 3,\n                });\n            } else if (field.ApiName.toLowerCase().indexOf('country') >= 0) {\n                customField = new PepSelectField({\n                    key: field.ApiName,\n                    label: field.ApiName,\n                    placeholder,\n                    options: this.convertOptionalValues(field.OptionalValues),\n                    readonly: !canEditObject,\n                    disabled: !field.Enabled || !canEditObject,\n                    hidden: false,\n                    mandatory: false,\n                    value: field.Value,\n                    formattedValue: field.FormattedValue,\n                    row: 2,\n                    rowSpan: 1,\n                    col: 2,\n                    colSpan: 1,\n                    xAlignment: this.convertXAlignToHorizontalAlign(\n                        controlField.Layout.XAlignment\n                    ),\n                    yAlignment: this.convertYAlignToVerticalAlign(\n                        controlField.Layout.YAlignment\n                    ),\n                    order: 4,\n                });\n            }\n\n            fields.push(customField);\n        });\n\n        return fields.sort((n1, n2) =>\n            n1.order > n2.order ? 1 : n1.order < n2.order ? -1 : 0\n        );\n    }\n\n    isMatrixField(apiNameToCheck: string): boolean {\n        return apiNameToCheck.indexOf('Matrix') >= 0;\n    }\n\n    doesFieldHavaFloatingField(\n        controlField: UIControlField,\n        floatingField: any\n    ): boolean {\n        let hasFloatingField = false;\n        if (\n            floatingField.Layout.Y >= controlField.Layout.Y &&\n            floatingField.Layout.Y <\n            controlField.Layout.Y + controlField.Layout.Height &&\n            floatingField.Layout.X >= controlField.Layout.X &&\n            floatingField.Layout.X <\n            controlField.Layout.X + controlField.Layout.Width\n        ) {\n            hasFloatingField = true;\n        }\n\n        return hasFloatingField;\n    }\n\n    getOptionsForCustomField(\n        controlField: UIControlField,\n        dataField: any,\n        canEditObject: boolean\n    ): any {\n        if (!controlField || !dataField) {\n            return;\n        }\n\n        const placeholder =\n            controlField.ReadOnly || !canEditObject ? '' : controlField.Title;\n\n        let fieldProperties = {\n            key: controlField.ApiName,\n            label: controlField.Title,\n            accessory: dataField.Accessory,\n            placeholder,\n            readonly: controlField.ReadOnly || !canEditObject,\n            disabled: !dataField.Enabled || !canEditObject,\n            hidden: controlField.Hidden,\n            mandatory: controlField.Mandatory,\n            value: dataField.Value,\n            formattedValue: dataField.FormattedValue,\n            additionalValue: dataField.AdditionalValue,\n            row: controlField.Layout.Y,\n            rowSpan: controlField.Layout.Height,\n            col: controlField.Layout.X,\n            colSpan: controlField.Layout.Width,\n            xAlignment: this.convertXAlignToHorizontalAlign(\n                controlField.Layout.XAlignment\n            ),\n            yAlignment: this.convertYAlignToVerticalAlign(\n                controlField.Layout.YAlignment\n            ),\n            options: this.convertOptionalValues(dataField.OptionalValues),\n            groupFields: undefined,\n            maxFieldCharacters: controlField.MaxFieldCharacters,\n            minValue: controlField.MinValue,\n            maxValue: controlField.MaxValue,\n            // hasMenu: hasMenu,\n            // hasCampaign: hasCampaign,\n            // hasIndicators: hasIndicators,\n            textColor: dataField.TextColor,\n            visible: dataField.Visible,\n            digitsNumberAfterDecimalPoint: dataField.DigitsNumberAfterDecimalPoint,\n        };\n\n        if (dataField.AdditionalProps) {\n            fieldProperties = {\n                ...fieldProperties,\n                ...dataField.AdditionalProps\n            }\n        }\n        return fieldProperties;\n    }\n\n    convertToCustomField(\n        controlField: UIControlField,\n        dataField: any,\n        canEditObject: boolean,\n        menuField: any,\n        hasCampaignField: any,\n        indicatorsField: any,\n        objectId: any,\n        parentId: any,\n        searchCode: any\n    ): PepFieldBase {\n        let customField: PepFieldBase;\n        const options = this.getOptionsForCustomField(\n            controlField,\n            dataField,\n            canEditObject\n        );\n\n        if (controlField.ApiName === 'ObjectMenu') {\n            options.type = 'menu';\n            customField = new PepInternalMenuField(options);\n        } else if (\n            controlField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n            controlField.FieldType ===\n            FIELD_TYPE.NumberIntegerQuantitySelector ||\n            controlField.ApiName === 'QuantitySelector' ||\n            controlField.ApiName === 'UnitsQuantity' ||\n            controlField.ApiName.indexOf('size_') === 0\n        ) {\n            if (dataField.FieldType === FIELD_TYPE.InternalLink) {\n                options.type = 'button';\n            } else if (dataField.FieldType === FIELD_TYPE.Package) {\n                options.type = 'packageButton';\n            } else if (\n                dataField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n                dataField.FieldType === FIELD_TYPE.NumberReal\n            ) {\n                options.type = 'qs';\n                options.allowDecimal = true;\n            } else if (\n                dataField.FieldType ===\n                FIELD_TYPE.NumberIntegerQuantitySelector ||\n                dataField.FieldType === FIELD_TYPE.NumberInteger\n            ) {\n                options.type = 'qs';\n                options.allowDecimal = false;\n            } else if (\n                dataField.FieldType === FIELD_TYPE.NumberIntegerForMatrix\n            ) {\n                options.type = 'qsForMatrix';\n                options.allowDecimal = false;\n            } else if (dataField.FieldType === FIELD_TYPE.NumberRealForMatrix) {\n                options.type = 'qsForMatrix';\n                options.allowDecimal = true;\n            }\n\n            options.notificationInfo = dataField.NotificationInfo;\n            customField = new PepQuantitySelectorField(options);\n        } else {\n            // HACK: need to remove this..\n            if (\n                dataField.FieldType === FIELD_TYPE.Indicators &&\n                this.isMatrixField(dataField.ApiName)\n            ) {\n                dataField.FieldType = FIELD_TYPE.InternalPage;\n            }\n\n            switch (dataField.FieldType) {\n                case FIELD_TYPE.Address: {\n                    const canEditGroupObject = controlField.ReadOnly\n                        ? false\n                        : canEditObject;\n                    options.groupFields = this.convertAddressFields(\n                        controlField,\n                        dataField.GroupFields,\n                        canEditGroupObject\n                    );\n                    customField = new PepAddressField(options);\n                    break;\n                }\n                case FIELD_TYPE.Indicators: {\n                    // options['type'] = 'indicators'; // Not needed this is PepIndicatorsField.\n                    customField = new PepIndicatorsField(options);\n                    break;\n                }\n                case FIELD_TYPE.InternalPage: {\n                    if (this.isMatrixField(controlField.ApiName)) {\n                        options.rowSpan = controlField.Layout.Height;\n                        options.objectId = objectId;\n                        options.parentId = parentId;\n                        options.searchCode = searchCode;\n\n                        customField = new PepInternalPageField(options);\n                    } else {\n                        // Not supported\n                    }\n                    break;\n                }\n                case FIELD_TYPE.RelatedObjectsCards: {\n                    options.rowSpan = controlField.Layout.Height;\n                    options.searchCode = searchCode;\n                    options.pageInfo = dataField.UIPageInfo;\n\n                    customField = new PepInternalCaruselField(options);\n                    break;\n                }\n                case FIELD_TYPE.Link: {\n                    options.type = 'link';\n                    customField = new PepLinkField(options);\n                    break;\n                }\n                case FIELD_TYPE.InternalLink:\n                case FIELD_TYPE.Button: {\n                    options.type = 'button';\n                    customField = new PepInternalButtonField(options);\n                    break;\n                }\n                case FIELD_TYPE.Attachment: {\n                    // options.type = 'attachment';\n                    customField = new PepAttachmentField(options);\n                    break;\n                }\n                case FIELD_TYPE.Signature: {\n                    // options.type = 'signature';\n                    customField = new PepSignatureField(options);\n                    break;\n                }\n                case FIELD_TYPE.Image:\n                case FIELD_TYPE.ImageURL: {\n                    // options.type = 'image';\n                    options.menuField =\n                        menuField &&\n                            this.doesFieldHavaFloatingField(controlField, menuField)\n                            ? menuField\n                            : null;\n                    options.hasCampaignField =\n                        hasCampaignField &&\n                            this.doesFieldHavaFloatingField(\n                                controlField,\n                                hasCampaignField\n                            )\n                            ? hasCampaignField\n                            : null;\n                    options.indicatorsField =\n                        indicatorsField &&\n                            this.doesFieldHavaFloatingField(\n                                controlField,\n                                indicatorsField\n                            )\n                            ? indicatorsField\n                            : null;\n\n                    customField = new PepImageField(options);\n                    break;\n                }\n                case FIELD_TYPE.Images: {\n                    // options.type = 'images';\n                    customField = new PepImagesField(options);\n                    break;\n                }\n                case FIELD_TYPE.Email: {\n                    options.type = 'email';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Phone: {\n                    options.type = 'phone';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Duration: {\n                    options.type = 'duration';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Default:\n                case FIELD_TYPE.TextBox:\n                case FIELD_TYPE.LimitedLengthTextBox:\n                case FIELD_TYPE.TextHeader:\n                case FIELD_TYPE.CalculatedString:\n                case FIELD_TYPE.MapDataString: {\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.TextArea: {\n                    customField = new PepTextareaField(options);\n                    break;\n                }\n\n                case FIELD_TYPE.RichTextHTML: {\n                    customField = new PepRichHtmlTextareaField(options);\n                    break;\n                }\n                case FIELD_TYPE.Date:\n                case FIELD_TYPE.LimitedDate:\n                case FIELD_TYPE.CalculatedDate:\n                case FIELD_TYPE.DateAndTime: {\n                    options.type =\n                        dataField.FieldType === FIELD_TYPE.DateAndTime\n                            ? 'datetime'\n                            : 'date';\n                    customField = new PepDateField(options);\n                    break;\n                }\n                case FIELD_TYPE.NumberInteger:\n                case FIELD_TYPE.CalculatedInt:\n                case FIELD_TYPE.MapDataInt: {\n                    options.type = 'int';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Percentage: {\n                    options.type = 'percentage';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Currency: {\n                    options.type = 'currency';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.NumberReal:\n                case FIELD_TYPE.CalculatedReal:\n                case FIELD_TYPE.MapDataReal:\n                case FIELD_TYPE.Sum:\n                case FIELD_TYPE.Totals: {\n                    options.type = 'real';\n                    customField = new PepTextboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.Boolean:\n                case FIELD_TYPE.CalculatedBool: {\n                    customField = new PepCheckboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.BooleanText: {\n                    options.type = 'booleanText';\n                    customField = new PepCheckboxField(options);\n                    break;\n                }\n                case FIELD_TYPE.ComboBox:\n                case FIELD_TYPE.EmptyComboBox:\n                case FIELD_TYPE.MapDataDropDown: {\n                    // options.type = 'select';\n                    customField = new PepSelectField(options);\n                    break;\n                }\n                case FIELD_TYPE.MultiTickBox:\n                case FIELD_TYPE.MultiTickBoxToComboBox:\n                case FIELD_TYPE.EmptyMultiTickBox: {\n                    options.type = 'multi';\n                    customField = new PepSelectField(options);\n                    break;\n                }\n                case FIELD_TYPE.GuidReferenceType: {\n                    options.type = 'reference';\n                    options.referenceObjectType = dataField.ReferenceObjectType;\n                    options.referenceObjectSubType =\n                        dataField.ReferenceObjectSubType;\n                    options.referenceObjectInternalType =\n                        dataField.ReferenceObjectInternalType;\n                    customField = new PepInternalButtonField(options);\n                    break;\n                }\n                case FIELD_TYPE.ListOfObjects: {\n                    options.type = 'listofobjects';\n                    customField = new PepInternalButtonField(options);\n                    break;\n                }\n                case FIELD_TYPE.Separator: {\n                    customField = new PepSeparatorField(options);\n                    break;\n                }\n                /*\n                    case FIELD_TYPE.Images: return that.field(value);\n                */\n                case FIELD_TYPE.NumberRealQuantitySelector:\n                case FIELD_TYPE.NumberIntegerQuantitySelector: {\n                    options.type = 'qs';\n                    options.allowDecimal =\n                        dataField.FieldType ===\n                        FIELD_TYPE.NumberRealQuantitySelector;\n                    options.notificationInfo = dataField.NotificationInfo;\n\n                    customField = new PepQuantitySelectorField(options);\n                    break;\n                }\n                case FIELD_TYPE.Package: {\n                    options.type = 'packageButton';\n                    options.notificationInfo = dataField.NotificationInfo;\n\n                    customField = new PepQuantitySelectorField(options);\n                    break;\n                }\n            }\n        }\n\n        if (!customField) {\n            options.label = controlField.ApiName + ' is not supported!!!';\n            customField = new PepSeparatorField(options);\n        }\n\n        return customField;\n    }\n\n    getFieldFormattedValue(field: PepFieldBase): string {\n        let fieldFormattedValue = field.formattedValue || field.value;\n\n        // Fix for the custom check box component.\n        if (field.controlType === 'checkbox') {\n            fieldFormattedValue = fieldFormattedValue === 'true';\n        }\n\n        // Fix for the custom button component.\n        if (field.controlType === 'button') {\n            fieldFormattedValue =\n                fieldFormattedValue === '0' ? '' : fieldFormattedValue;\n        }\n\n        // Fix for the custom date component.\n        if (field.controlType === 'date' || field.controlType === 'datetime') {\n            if(fieldFormattedValue === '' ||\n                fieldFormattedValue.indexOf('1900-1-1') >= 0 ||\n                fieldFormattedValue.indexOf('1900-01-01') >= 0 ||\n                fieldFormattedValue.indexOf('1970-1-1') >= 0 ||\n                fieldFormattedValue.indexOf('1970-01-01') >= 0\n            ) {\n                fieldFormattedValue = '';\n            }\n        }\n\n        return fieldFormattedValue;\n    }\n\n    private toControlGroup(fields: PepFieldBase[]): FormGroup {\n        const group = {};\n        if (fields && fields.length > 0) {\n            fields.forEach((field) => {\n                if (field.groupFields && field.groupFields.length > 0) {\n                    const subGroup = {};\n\n                    field.groupFields.forEach((groupField) => {\n                        if (\n                            groupField.mandatory &&\n                            !field.readonly &&\n                            !field.disabled\n                        ) {\n                            subGroup[groupField.key] = [\n                                {\n                                    value: groupField.formattedValue || '',\n                                    disabled:\n                                        field.readonly ||\n                                        field.disabled ||\n                                        groupField.disabled,\n                                },\n                                [Validators.required],\n                            ];\n                        } else {\n                            subGroup[groupField.key] = [\n                                {\n                                    value: groupField.formattedValue || '',\n                                    disabled:\n                                        field.readonly ||\n                                        field.disabled ||\n                                        groupField.disabled,\n                                },\n                                [Validators.nullValidator],\n                            ];\n                        }\n                    });\n\n                    group[field.key] = this.fb.group(subGroup);\n                } else {\n                    const validators = field.getValidators();\n                    const fieldFormattedValue = this.getFieldFormattedValue(\n                        field\n                    );\n\n                    group[field.key] = [\n                        {\n                            value: fieldFormattedValue || '',\n                            disabled: field.disabled,\n                        },\n                        validators,\n                    ];\n                }\n            });\n        }\n\n        return this.fb.group(group);\n    }\n\n    private createBaseField(uiControlField: UIControlField, dataField: any) {\n        const customField: PepFieldBase = this.convertToCustomField(\n            uiControlField,\n            dataField,\n            this.canEditObject,\n            this.menuDataField,\n            this.hasCampaignDataField,\n            this.indicatorsDataField,\n            this.objectId,\n            this.parentId,\n            this.searchCode\n        );\n\n        return customField;\n    }\n\n    public showFormValidationMessage(): void {\n        const fields: PepFieldBase[] = this.fields;\n        let emptyMandatoryFieldsMsg = '';\n        let notValidFieldsMsg = '';\n\n        // for (let i: number = 0; i < fields.length; i++) {\n        //     let field = fields[i];\n        for (const field of fields) {\n            const formControl = this.form && this.form.get(field.key);\n\n            if (formControl) {\n                // Mandatory is empty.\n                if (\n                    field.mandatory &&\n                    formControl.value.toString().trim().length === 0\n                ) {\n                    emptyMandatoryFieldsMsg +=\n                        '<li><small>' + field.label + '</small></li>';\n                } else if (!field.disabled && !formControl.valid) {\n                    notValidFieldsMsg +=\n                        '<li><small>' + field.label + '</small></li>';\n                }\n            }\n        }\n\n        // Add the header message of the empty mandatory fields\n        if (emptyMandatoryFieldsMsg.length > 0) {\n            emptyMandatoryFieldsMsg =\n                '<div>' +\n                this.translate.instant('MESSAGES.ERROR_MANDATORY_FIELDS') +\n                \"</div><ul style='padding: 0 20px;'>\" +\n                emptyMandatoryFieldsMsg +\n                '</ul><br/>';\n        }\n\n        // Add the header message of the empty mandatory fields\n        if (notValidFieldsMsg.length > 0) {\n            notValidFieldsMsg =\n                '<div>' +\n                this.translate.instant('MESSAGES.ERROR_INVALID_FIELDS') +\n                \"</div><ul style='padding: 0 20px;'>\" +\n                notValidFieldsMsg +\n                '</ul>';\n        }\n\n        const title = this.translate.instant('MESSAGES.TITLE_NOTICE');\n        const data = new PepDialogData({\n            title,\n            content: emptyMandatoryFieldsMsg + notValidFieldsMsg,\n        });\n        this.dialogService.openDefaultDialog(data);\n    }\n\n    ngOnInit(): void {\n        const themeVars = this.customizationService.getThemeVariables();\n        // convert rem to pixel\n        const RemToPixel = 16;\n        this.formGutterSize =\n            this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FORM_SPACEING_KEY\n            ) * RemToPixel;\n        this.cardGutterSize =\n            this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.CARD_SPACEING_KEY\n            ) * RemToPixel;\n    }\n\n    ngDoCheck(): void {\n        const changes = this.differ.diff(this.data); // check for changes\n        if (changes) {\n            this.updateForm();\n            this.checkForChanges = new Date();\n        }\n    }\n\n    ngOnChanges(changes): void {\n        // if (changes.data && changes.data.currentValue) {\n        //     // Load changes\n        //     if (!this.shouldReloadForm && changes.data.previousValue) {\n        //         this.data = changes.data.currentValue;\n        //         this.updateForm();\n        //     } else {\n        //         this._shouldReloadForm = false;\n        //         this.initForm();\n        //     }\n        // }\n        // if (this.shouldReloadForm || !changes?.data?.previousValue) {\n        //     this._shouldReloadForm = false;\n        //     this.initForm();\n        //     this.checkForChanges = new Date();\n        // }\n    }\n\n    ngOnDestroy(): void {\n        //\n    }\n\n    getUiControlFields(): Array<UIControlField> {\n        return this.layout ? this.layout.ControlFields : [];\n    }\n\n    initFieldsStructure(fields: PepFieldBase[], maxRow: number): void {\n        const themeVars = this.customizationService.getThemeVariables();\n\n        // Set form row height.\n        if (this.layoutType === 'card') {\n            const cardFieldHeight = this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.CARD_FIELD_HEIGHT_KEY\n            );\n            this.rowHeight = cardFieldHeight;\n        } else {\n            const rowFieldHeight = this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FORM_FIELD_HEIGHT_KEY\n            );\n            const rowFieldTitleHeight = this.customizationService.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY\n            );\n            this.rowHeight = rowFieldHeight + rowFieldTitleHeight;\n        }\n\n        // Create the fields structure (the fields must be sorted!!!).\n        if (fields.length > 0) {\n            // Init the layout.\n            if (\n                // this.layoutType === 'form' ||\n                this.layoutType === 'table'\n            ) {\n                this.fields = fields;\n                this._fieldsSubject.next(fields);\n\n                this.rows = [];\n\n                for (let i = 0; i <= maxRow; i++) {\n                    this.rows[i] = [];\n                }\n\n                // for (let i = 0; i < fields.length; i++) {\n                // const field = fields[i]\n                for (const field of fields) {\n                    this.rows[field.row].push(field);\n                }\n            } else {\n                const doesfieldExistIn: boolean[][] = new Array(maxRow);\n\n                for (let i = 0; i < doesfieldExistIn.length; i++) {\n                    doesfieldExistIn[i] = new Array(this.columns);\n\n                    for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n                        doesfieldExistIn[i][j] = false;\n                    }\n                }\n\n                // Run in squere (row - colspan, col - rowspan) and put true where it should.\n                // for (let index = 0; index < fields.length; index++) {\n                //     const currentField = fields[index];\n                for (const currentField of fields) {\n                    if (currentField.rowSpan > 1) {\n                        for (\n                            let row: number = currentField.row;\n                            row < currentField.row + currentField.rowSpan;\n                            row++\n                        ) {\n                            if (currentField.colSpan > 1) {\n                                for (\n                                    let col: number = currentField.col;\n                                    col <\n                                    currentField.col + currentField.colSpan;\n                                    col++\n                                ) {\n                                    if (\n                                        doesfieldExistIn.length > row &&\n                                        doesfieldExistIn[0].length > col\n                                    ) {\n                                        doesfieldExistIn[row][col] = true;\n                                    }\n                                }\n                            } else {\n                                if (\n                                    doesfieldExistIn.length > row &&\n                                    doesfieldExistIn[0].length >\n                                    currentField.col\n                                ) {\n                                    doesfieldExistIn[row][\n                                        currentField.col\n                                    ] = true;\n                                }\n                            }\n                        }\n                    } else if (currentField.colSpan > 1) {\n                        for (\n                            let col: number = currentField.col;\n                            col < currentField.col + currentField.colSpan;\n                            col++\n                        ) {\n                            if (\n                                doesfieldExistIn.length > currentField.row &&\n                                doesfieldExistIn[0].length > col\n                            ) {\n                                doesfieldExistIn[currentField.row][col] = true;\n                            }\n                        }\n                    } else {\n                        if (\n                            doesfieldExistIn.length > currentField.row &&\n                            doesfieldExistIn[0].length > currentField.col\n                        ) {\n                            doesfieldExistIn[currentField.row][\n                                currentField.col\n                            ] = true;\n                        }\n                    }\n                }\n\n                // Create empty fields where doesfieldExistIn is false (For the md-grid-list UI Component).\n                for (let i = 0; i < doesfieldExistIn.length; i++) {\n                    for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n                        if (!doesfieldExistIn[i][j]) {\n                            // Create empty field and add it to the fields list.\n                            fields.push(\n                                new PepPlaceholderField({\n                                    key: i + '_' + j,\n                                    label: '',\n                                    placeholder: '',\n                                    readonly: false,\n                                    disabled: false,\n                                    hidden: false,\n                                    mandatory: false,\n                                    value: '',\n                                    formattedValue: '',\n                                    row: i,\n                                    rowSpan: 1,\n                                    col: j,\n                                    colSpan: 1,\n                                    order: 1,\n                                })\n                            );\n                        }\n                    }\n                }\n\n                // Sort the fields again.\n                this.fields = fields.sort((f1, f2) =>\n                    f1.row > f2.row\n                        ? 1\n                        : f1.row < f2.row\n                            ? -1\n                            : f1.col > f2.col\n                                ? 1\n                                : f1.col < f2.col\n                                    ? -1\n                                    : 0\n                );\n                this._fieldsSubject.next(fields);\n            }\n        }\n    }\n\n    setForm(isForUpdate = false): void {\n        let allFieldsAreReadOnly = true;\n\n        if (!isForUpdate) {\n            const fields = [];\n            for (const currentField of this.fields) {\n                // Add all fields except 'internalPage' (for children).\n                if (currentField.controlType !== 'internalPage') {\n                    fields.push(currentField);\n                }\n\n                if (!currentField.readonly) {\n                    allFieldsAreReadOnly = false;\n                }\n            }\n\n            this.form = this.toControlGroup(fields);\n        } else {\n            // Update form values if changed by calculated fields.\n            for (let i = 0; i < this.fields.length; i++) {\n                let currentField = this.fields[i];\n\n                if (currentField.controlType === 'internalCarusel') {\n                    // Hack to override (update) the field.\n                    const uiControlField = this.getUiControlFields().find(cf => cf.ApiName === currentField.key);\n                    const dataField = this.data.Fields.find(df => df.ApiName === currentField.key);\n                    currentField = this.createBaseField(uiControlField, dataField);\n                    this._fieldsSubject.value[i] = currentField;\n                } else if (currentField.controlType !== 'internalPage') {\n                    if (\n                        currentField.groupFields &&\n                        currentField.groupFields.length > 0\n                    ) {\n                        // for (let j = 0; j < currentField.groupFields.length; j++) {\n                        //     let currentGroupField = currentField.groupFields[j];\n                        for (const currentGroupField of currentField.groupFields) {\n                            const fieldFormattedValue = this.getFieldFormattedValue(\n                                currentGroupField\n                            );\n                            this.customizationService.updateFormField(\n                                this.form,\n                                currentGroupField,\n                                fieldFormattedValue,\n                                currentField\n                            );\n                        }\n                    } else {\n                        const fieldFormattedValue = this.getFieldFormattedValue(\n                            currentField\n                        );\n                        // this.form.controls[currentField.key].setValue(fieldFormattedValue);\n                        this.customizationService.updateFormField(\n                            this.form,\n                            currentField,\n                            fieldFormattedValue\n                        );\n                    }\n                }\n\n                if (!currentField.readonly) {\n                    allFieldsAreReadOnly = false;\n                }\n            }\n        }\n\n        let isFormValid = this.form?.valid;\n\n        // Change validation to true if all fields are read only.\n        if (!isFormValid && allFieldsAreReadOnly) {\n            isFormValid = true;\n        }\n\n        this.onFormValidationChanged(isFormValid);\n\n        // Set it to false to enable all fields.\n        if (this.isInternal && this.isLocked) {\n            this.isLocked = false;\n        }\n    }\n\n    initForm(): void {\n        if (this.data && this.data.Fields) {\n            const fields: PepFieldBase[] = this.convertCustomFields(\n                this.getUiControlFields(),\n                this.data.Fields\n            );\n\n            const maxRow = Math.max(\n                ...fields.map((f) => {\n                    return f.row + f.rowSpan;\n                })\n            );\n            this.columns = Math.max(\n                ...fields.map((f) => {\n                    return f.col + f.colSpan;\n                })\n            );\n\n            this.initFieldsStructure(fields, maxRow);\n            this.setForm();\n        }\n    }\n\n    private updateField(\n        customField: PepFieldBase,\n        updatedField: ObjectsDataRowCell\n    ): void {\n        const options: any = {\n            disabled: !updatedField.Enabled || !this.canEditObject,\n            readonly: !updatedField.Enabled || !this.canEditObject,\n            visible: updatedField.Visible,\n            value: updatedField.Value,\n            additionalValue: updatedField.AdditionalValue,\n            formattedValue: updatedField.FormattedValue,\n            textColor: updatedField.TextColor,\n            digitsNumberAfterDecimalPoint: updatedField.DigitsNumberAfterDecimalPoint\n        };\n\n        if (customField instanceof PepQuantitySelectorField) {\n            const notificationInfo = updatedField.NotificationInfo;\n            options.notificationInfo = notificationInfo;\n\n            // Change type if it's change (only for allowDecimal).\n            let allowDecimal = false;\n            if (updatedField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n                updatedField.FieldType === FIELD_TYPE.NumberReal ||\n                updatedField.FieldType === FIELD_TYPE.NumberRealForMatrix\n            ) {\n                allowDecimal = true;\n            }\n\n            options.allowDecimal = allowDecimal;\n\n        } else if (customField instanceof PepSelectField) {\n            options.options = this.convertOptionalValues(\n                updatedField.OptionalValues\n            );\n\n            if (!options.options || options.options.length === 0) {\n                options.options.push({\n                    key: options.value,\n                    value: options.formattedValue,\n                });\n            }\n        } else if (customField instanceof PepInternalCaruselField) {\n            options.pageInfo = updatedField.UIPageInfo;\n        }\n\n        customField.update(options);\n    }\n\n    updateForm(): void {\n        if (this.data && this.data.Fields) {\n            for (const currentField of this.data.Fields) {\n                const customField = this.fields.filter(\n                    (f) => f.key === currentField.ApiName\n                )[0];\n                // Update all fields except 'internalPage' type (for children).\n                if (customField && customField.controlType !== 'internalPage') {\n                    this.updateField(customField, currentField);\n\n                    // Update the group fields.\n                    if (\n                        customField.controlType === 'address' &&\n                        currentField.GroupFields\n                    ) {\n                        // for (let j = 0; j < currentField.GroupFields.length; j++) {\n                        // let currentGroupField = currentField.GroupFields[j];\n                        for (const currentGroupField of currentField.GroupFields) {\n                            currentGroupField.Enabled = !currentField.Enabled\n                                ? false\n                                : currentGroupField.Enabled;\n\n                            const customGroupField = customField.groupFields.filter(\n                                (f) => f.key === currentGroupField.ApiName\n                            )[0];\n                            this.updateField(\n                                customGroupField,\n                                currentGroupField\n                            );\n                        }\n                    }\n                }\n            }\n\n            this.setForm(true);\n        }\n    }\n\n    public ReloadForm(): void {\n        this._shouldReloadForm = true;\n    }\n\n    // onSubmit() {\n    //     if (this.form.valid) {\n    //         this.payLoad = JSON.stringify(this.form.value);\n    //         //this.submitted.emit(this.form.value);\n    //     }\n    // }\n\n    private getFormControlById(key: string): AbstractControl | null {\n        let formControl = null;\n\n        this.fields.forEach((field) => {\n            if (field.key === key) {\n                formControl = this.form.get(field.key);\n                return;\n            } else if (field.groupFields && field.groupFields.length > 0) {\n                field.groupFields.forEach((groupField) => {\n                    if (groupField.key === key) {\n                        formControl = this.form.get(\n                            field.key + '.' + groupField.key\n                        );\n                        return;\n                    }\n                });\n            }\n        });\n\n        return formControl;\n    }\n\n    private setSpecialFields(\n        controlFields: Array<any>,\n        dataFields: Array<any>\n    ): void {\n        // let cf;\n        // for (let index = 0; index < controlFields.length; index++) {\n        //     cf = controlFields[index];\n        for (const cf of controlFields) {\n            if (cf.ApiName === 'ObjectMenu') {\n                this.menuField = cf;\n            } else if (cf.ApiName === 'ItemHasActiveCampaign') {\n                this.hasCampaignField = cf;\n            } else if (cf.ApiName === 'ItemIndicatorsWithoutCampaign') {\n                this.indicatorsField = cf;\n            }\n        }\n\n        // let df;\n        // for (let index = 0; index < dataFields.length; index++) {\n        //     df = dataFields[index];\n        for (const df of dataFields) {\n            if (df.ApiName === 'ObjectMenu') {\n                this.menuDataField = df;\n            } else if (df.ApiName === 'ItemHasActiveCampaign') {\n                this.hasCampaignDataField = df;\n            } else if (df.ApiName === 'ItemIndicatorsWithoutCampaign') {\n                this.indicatorsDataField = df;\n            }\n        }\n\n        if (this.menuField && this.menuDataField) {\n            this.menuDataField.Layout = this.menuField.Layout;\n        }\n\n        if (this.hasCampaignField && this.hasCampaignDataField) {\n            this.hasCampaignDataField.Layout = this.hasCampaignField.Layout;\n        }\n\n        if (this.indicatorsField && this.indicatorsDataField) {\n            this.indicatorsDataField.Layout = this.indicatorsField.Layout;\n        }\n\n        // Check if menu is floating on other field.\n        // for (let index = 0; index < controlFields.length; index++) {\n        //     cf = controlFields[index];\n        for (const cf of controlFields) {\n            if (this.menuField && cf.ApiName !== 'ObjectMenu') {\n                this.hasMenuFloatingOnOtherField = this.doesFieldHavaFloatingField(\n                    cf,\n                    this.menuField\n                );\n\n                if (this.hasMenuFloatingOnOtherField) {\n                    break;\n                }\n            }\n        }\n    }\n\n    convertCustomFields(\n        controlFields: Array<any>,\n        dataFields: Array<any>\n    ): PepFieldBase[] {\n        if (this.layoutType !== 'table') {\n            this.setSpecialFields(controlFields, dataFields);\n        } else {\n            // HACK: convert to center alignment if table view & special fields)\n            controlFields.forEach((field, index) => {\n                if (\n                    field.ApiName === 'UnitsQuantity' ||\n                    field.ApiName === 'QuantitySelector' ||\n                    field.ApiName === 'ObjectMenu' ||\n                    field.FieldType === FIELD_TYPE.Image ||\n                    field.FieldType === FIELD_TYPE.ImageURL ||\n                    field.FieldType === FIELD_TYPE.Indicators ||\n                    field.FieldType === FIELD_TYPE.Boolean ||\n                    field.FieldType === FIELD_TYPE.CalculatedBool ||\n                    field.FieldType === FIELD_TYPE.Signature ||\n                    field.FieldType ===\n                    FIELD_TYPE.NumberIntegerQuantitySelector ||\n                    field.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n                    field.FieldType === FIELD_TYPE.Package ||\n                    field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n                    field.FieldType === FIELD_TYPE.NumberRealForMatrix\n                ) {\n                    field.Layout.XAlignment = X_ALIGNMENT_TYPE.Center;\n                } else {\n                    // HACK: align the rest of the fields by the culture.\n                    // field.Layout.XAlignment = this.layoutService.isRtl() ? X_ALIGNMENT_TYPE.Right : X_ALIGNMENT_TYPE.Left;\n                }\n            });\n        }\n\n        const fields: PepFieldBase[] = [];\n\n        controlFields.forEach((field, index) => {\n            const dataField = dataFields.filter(\n                (df) => df.ApiName === field.ApiName\n            )[0];\n\n            if (!dataField) {\n                return;\n            }\n\n            // If current view is not table view and those fields are special.\n            if (\n                this.layoutType !== 'table' &&\n                ((this.hasMenuFloatingOnOtherField &&\n                    this.menuField &&\n                    this.menuField.ApiName === field.ApiName) ||\n                    (this.indicatorsField &&\n                        this.indicatorsField.ApiName === field.ApiName) ||\n                    (this.hasCampaignField &&\n                        this.hasCampaignField.ApiName === field.ApiName))\n            ) {\n                return;\n            }\n\n            // Set type to link\n            if (index === 0 && this.firstFieldAsLink) {\n                dataField.FieldType = FIELD_TYPE.InternalLink;\n                // dataField.Value = this.getInternalLinkHref();\n            }\n\n            if (field.ApiName === 'ObjectMenu') {\n                dataField.Enabled = true;\n                // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n                //        Disabled in cart on regular items and not campign items.\n            }\n            const customField: PepFieldBase = this.createBaseField(field, dataField);\n            fields.push(customField);\n        });\n\n        return fields.sort((f1, f2) =>\n            f1.row > f2.row\n                ? 1\n                : f1.row < f2.row\n                    ? -1\n                    : f1.col > f2.col\n                        ? 1\n                        : f1.col < f2.col\n                            ? -1\n                            : 0\n        );\n    }\n\n    private onFormValidationChanged(formValidationChange: any): void {\n        this.formValidationChange.emit(formValidationChange);\n    }\n\n    onValueChanged(event: IPepFieldValueChangeEvent): void {\n        this.onFormValidationChanged(this.form.valid);\n\n        const formControl = this.getFormControlById(event.key);\n\n        const isValid = formControl ? formControl.valid : true;\n        // const isValid = true;\n\n        if (isValid) {\n            // Set it to false to disable all fields.\n            if (this.isInternal && this.layoutType === 'form') {\n                this.isLocked = true;\n            }\n\n            // Update the current field value.\n            const currentField = this.fields.find((f) => f.key === event.key);\n            if (currentField) {\n                currentField.formattedValue = currentField.value = event.value;\n            }\n\n            this.valueChange.emit({\n                id: this.data.UID.toString(),\n                uiObjectKey: this.data.Key,\n                key: event.key,\n                value: event.value,\n                controlType: event.controlType,\n            });\n        }\n    }\n\n    onClick(fieldClickEvent: IPepFieldClickEvent): void {\n        const clickedUiControlField = this.data.Fields.filter(\n            (f) => f.ApiName === fieldClickEvent.key\n        )[0];\n        const idType = this.data.Type ? this.data.Type.toString() : '';\n\n        if (clickedUiControlField) {\n            this.fieldClick.emit({\n                id: this.data.UID.toString(),\n                uiObjectKey: this.data.Key,\n                key: fieldClickEvent.key,\n                idType,\n                which: fieldClickEvent.eventWhich,\n                value: fieldClickEvent.value,\n                controlType: fieldClickEvent.controlType,\n                fieldType: clickedUiControlField.FieldType,\n                otherData: fieldClickEvent.otherData,\n            });\n        } else {\n            // For other api names (like enter children etc).\n            this.fieldClick.emit({\n                id: this.data.UID.toString(),\n                uiObjectKey: this.data.Key,\n                key: fieldClickEvent.key,\n                idType,\n                which: fieldClickEvent.eventWhich,\n                value: fieldClickEvent.value,\n                controlType: fieldClickEvent.controlType,\n                otherData: fieldClickEvent.otherData,\n            });\n        }\n    }\n\n    // This event is for handle the internal page events.\n    onInternalFormFieldClicked(internalFormFieldClick: any): void {\n        this.internalFormFieldClick.emit(internalFormFieldClick);\n    }\n\n    // This event is for handle the internal page events.\n    onInternalFormFieldChanged(internalFormFieldChange: any): void {\n        this.internalFormFieldChange.emit(internalFormFieldChange);\n    }\n\n    // This event is for handle the related items change events.\n    onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n        // this.valueChange.emit(event);\n    }\n\n    // This event is for handle the related items change events.\n    onFormFieldClick(event: IPepFormFieldClickEvent): void {\n        this.fieldClick.emit(event);\n    }\n}\n","<fieldset *ngIf=\"form\" [formGroup]=\"form\" [disabled]=\"isLocked\" class=\"pep-form\"\n    [ngStyle]=\"{ 'background-color': layoutType == 'card' && data?.BackgroundColor }\">\n    <!-- New Form -->\n    <mat-grid-list *ngIf=\"layoutType == 'form'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n        [gutterSize]=\"formGutterSize\">\n        <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\">\n            <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n                [checkForChanges]=\"checkForChanges\" [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\"\n                (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\"\n                (internalFormFieldClick)=\"onInternalFormFieldClicked($event)\"\n                (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\"\n                (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n                >\n            </pep-field-generator>\n            <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n        </mat-grid-tile>\n    </mat-grid-list>\n\n    <!-- Thumbnails -->\n    <mat-grid-list *ngIf=\"layoutType == 'card'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n        [gutterSize]=\"cardGutterSize\" class=\"card-spacing\">\n        <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\"\n            [ngStyle]=\"{ overflow: field.type == 'qs' ? 'unset' : 'hidden' }\">\n            <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n                [ngClass]=\"{ 'lock-events': lockEvents }\" [isActive]=\"isActive\" [checkForChanges]=\"checkForChanges\"\n                [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\" (valueChange)=\"onValueChanged($event)\"\n                (elementClick)=\"onClick($event)\" (internalFormFieldClick)=\"onInternalFormFieldClicked($event)\"\n                (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\"\n                (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\">\n            </pep-field-generator>\n        </mat-grid-tile>\n    </mat-grid-list>\n\n    <ng-container *ngIf=\"layoutType == 'table'\">\n        <ng-container *ngIf=\"isReport; then reportBlock; else notReportBlock\"></ng-container>\n        <ng-template #reportBlock>\n            <ng-container *ngTemplateOutlet=\"report\"></ng-container>\n        </ng-template>\n        <ng-template #notReportBlock>\n            <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip table-cell \"\n                [ngClass]=\"['text-align-' + field.xAlignment]\" style=\"height: 100%\"\n                [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString}\">\n                <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [checkForChanges]=\"checkForChanges\"\n                    [uid]=\"data?.UID\" [field]=\"field\" [form]=\"form\" [layoutType]=\"layoutType\" [showTitle]=\"false\"\n                    (elementClick)=\"onClick($event)\" (valueChange)=\"onValueChanged($event)\"\n                    (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n                    [isActive]=\"isActive\">\n                </pep-field-generator>\n            </div>\n        </ng-template>\n    </ng-container>\n\n    <!------- For testing ------------\n    {{ form.value | json }}\n    {{ form.valid }}\n    ---------------------------------->\n</fieldset>\n\n<ng-template #report>\n    <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip pep-report-fields\"\n        [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString }\"\n        [ngClass]=\"['text-align-' + field.xAlignment]\">\n        <ng-container [ngSwitch]=\"field.controlType\">\n            <pep-image *ngSwitchCase=\"'image'\" [uid]=\"data?.UID\" [form]=\"form\" [key]=\"field.key\"\n                [src]=\"field.formattedValue\" [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\"\n                [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n                [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [layoutType]=\"layoutType\"\n                (elementClick)=\"onClick($event)\">\n            </pep-image>\n\n            <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n                [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n                [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [layoutType]=\"layoutType\">\n            </pep-signature>\n\n            <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n                [value]=\"(field.value?.toString() | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n                [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n                [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [additionalValue]=\"field.additionalValue\" [layoutType]=\"layoutType\">\n            </pep-checkbox>\n\n            <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n                [label]=\"field.label\" [type]=\"field.type\"\n                [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n                [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [minValue]=\"field.minValue\" [maxValue]=\"field.maxValue\" [layoutType]=\"layoutType\">\n            </pep-date>\n\n            <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n                [formattedValue]=\"field.formattedValue\" [label]=\"field.label\" [type]=\"field.type\"\n                [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n                [layoutType]=\"layoutType\" (elementClick)=\"onClick($event)\">\n            </pep-internal-button>\n\n            <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n                [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n                [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\"\n                [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [layoutType]=\"layoutType\">\n            </pep-textarea>\n\n            <pep-quantity-selector *ngSwitchCase=\"'qs'\" [id]=\"field.key\" [form]=\"form\" [key]=\"field.key\"\n                [value]=\"field.value\" [label]=\"field.label\" [type]=\"field.type\"\n                [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n                [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n                [layoutType]=\"layoutType\" (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\">\n            </pep-quantity-selector>\n\n            <ng-container *ngSwitchDefault>\n                <ng-container *ngIf=\"field.formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\">\n                </ng-container>\n                <ng-template #notEmptyBlock>\n                    <ng-container\n                        *ngIf=\"field.controlType === 'attachment' || field.type === 'link'; then linkBlock; else notLinkBlock\">\n                    </ng-container>\n                    <ng-template #linkBlock>\n                        <a [id]=\"field.key\" class=\"color-link body-sm pep-report-input readonly\"\n                            *ngIf=\"field.formattedValue != null\" title=\"{{ field.formattedValue }}\" target=\"_blank\"\n                            href=\"{{ field.value }}\">{{ field.formattedValue }}</a>\n                    </ng-template>\n                    <ng-template #notLinkBlock>\n                        <span [id]=\"field.key\" class=\"body-sm pep-report-input readonly\"\n                            title=\"{{ field.formattedValue }}\" [ngStyle]=\"{ color: field.textColor }\">{{\n                            field.formattedValue }}</span>\n                    </ng-template>\n                </ng-template>\n                <ng-template #emptyBlock>\n                    <span>&nbsp;</span>\n                </ng-template>\n            </ng-container>\n        </ng-container>\n    </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { SignaturePadModule } from 'ngx-signaturepad';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n    PepIconModule,\n    PepIconRegistry,\n    pepIconSystemEdit,\n    pepIconSystemMenu,\n    pepIconNumberPlus,\n    pepIconSystemBin,\n    pepIconIndicatorDotPlaceholder,\n} from '@pepperi-addons/ngx-lib/icon';\n\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepAddressModule } from '@pepperi-addons/ngx-lib/address';\nimport { PepAttachmentModule } from '@pepperi-addons/ngx-lib/attachment';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepImageModule } from '@pepperi-addons/ngx-lib/image';\nimport { PepImagesFilmstripModule } from '@pepperi-addons/ngx-lib/images-filmstrip';\nimport { PepQuantitySelectorModule } from '@pepperi-addons/ngx-lib/quantity-selector';\nimport { PepRichHtmlTextareaModule } from '@pepperi-addons/ngx-lib/rich-html-textarea';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepSelectPanelModule } from '@pepperi-addons/ngx-lib/select-panel';\nimport { PepSeparatorModule } from '@pepperi-addons/ngx-lib/separator';\nimport { PepSignatureModule } from '@pepperi-addons/ngx-lib/signature';\nimport { PepTextareaModule } from '@pepperi-addons/ngx-lib/textarea';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepLinkModule } from '@pepperi-addons/ngx-lib/link';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\n\nconst pepComponentsModules = [\n    PepAddressModule,\n    PepAttachmentModule,\n    PepButtonModule,\n    PepCarouselModule,\n    PepCheckboxModule,\n    PepDateModule,\n    PepImageModule,\n    PepImagesFilmstripModule,\n    PepQuantitySelectorModule,\n    PepRichHtmlTextareaModule,\n    PepSelectModule,\n    PepSelectPanelModule,\n    PepSeparatorModule,\n    PepSignatureModule,\n    PepTextareaModule,\n    PepTextboxModule,\n    PepLinkModule\n];\n\nimport { PepFormComponent } from './form.component';\nimport { PepInternalFormComponent } from './internal-form.component';\nimport { PepFieldGeneratorComponent } from './field-generator.component';\nimport { PepInternalFieldGeneratorComponent } from './internal-field-generator.component';\nimport { PepIndicatorsComponent } from './indicators.component';\nimport { PepInternalButtonComponent } from './internal-button.component';\nimport { PepInternalListComponent } from './internal-list.component';\nimport { PepInternalMenuComponent } from './internal-menu.component';\nimport { PepInternalPageComponent } from './internal-page.component';\nimport { PepInternalCaruselComponent } from './internal-carusel.component';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        // Material modules,\n        MatCommonModule,\n        MatFormFieldModule,\n        MatButtonModule,\n        MatGridListModule,\n        MatIconModule,\n        MatMenuModule,\n        // External modules\n        SignaturePadModule,\n        // ngx-lib modules\n        PepNgxLibModule,\n        PepDialogModule,\n        PepIconModule,\n        pepComponentsModules,\n        PepFieldTitleModule,\n        PepGroupButtonsModule,\n    ],\n    exports: [PepFormComponent],\n    declarations: [\n        PepFormComponent,\n        PepInternalFormComponent,\n        PepFieldGeneratorComponent,\n        PepInternalFieldGeneratorComponent,\n        PepIndicatorsComponent,\n        PepInternalButtonComponent,\n        PepInternalListComponent,\n        PepInternalMenuComponent,\n        PepInternalPageComponent,\n        PepInternalCaruselComponent\n    ],\n    providers: [\n        FormBuilder\n    ]\n})\nexport class PepFormModule {\n    constructor(private pepIconRegistry: PepIconRegistry) {\n        this.pepIconRegistry.registerIcons([\n            pepIconSystemEdit,\n            pepIconSystemMenu,\n            pepIconNumberPlus,\n            pepIconSystemBin,\n            pepIconIndicatorDotPlaceholder,\n        ]);\n    }\n}\n","/*\n * Public API Surface of ngx-lib/form\n */\nexport * from './form.module';\nexport * from './form.model';\nexport * from './form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i5","i6","i9","i3","i4","i7","i8","i17.PepIndicatorsComponent","i18.PepInternalButtonComponent","i19.PepInternalMenuComponent","i10","i11","i12","i13.PepInternalFieldGeneratorComponent","i14.PepInternalButtonComponent","i3.PepInternalFormComponent","i2.PepInternalPageService","i9.PepInternalListComponent","i2.PepInternalCaruselService","i6.PepInternalFormComponent","i20.PepInternalPageComponent","i21.PepInternalCaruselComponent","i13.PepFieldGeneratorComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASa,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAUI,QAAA,IAAW,CAAA,WAAA,GAAG,YAAY,CAAC;AAElB,QAAA,IAAU,CAAA,UAAA,GAAkB,OAAO,CAAC;KAChD;;mHAPY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,wHCTnC,8fAOM,EAAA,MAAA,EAAA,CAAA,iRAAA,EAAA,8LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDEO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACI,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8fAAA,EAAA,MAAA,EAAA,CAAA,iRAAA,EAAA,8LAAA,CAAA,EAAA,CAAA;8BAGtC,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAIG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEmBG,0BAA0B,CAAA;AA6DnC,IAAA,WAAA,CACY,oBAA6C,EAC7C,QAAmB,EACnB,OAAmB,EAAA;AAFnB,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;AAC7C,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACnB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AA9DtB,QAAA,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;AACT,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AACX,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AACpB,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AAEX,QAAA,IAAI,CAAA,IAAA,GAA+B,QAAQ,CAAC;AAC5C,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAU,CAAA,UAAA,GAA2B,4BAA4B,CAAC;AAClE,QAAA,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;AAEb,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAoBxB,QAAA,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAC;AAEd,QAAA,IAAI,CAAA,IAAA,GAAc,IAAI,CAAC;AACvB,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;AAG5C,QAAA,IAAA,CAAA,YAAY,GAAsC,IAAI,YAAY,EAAuB,CAAC;AAE1F,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;;AAG/D,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAA,CAAA,gBAAgB,GAAqB;AACjC,YAAA;AACI,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,QAAQ,EAAE,CAAC,MAA4B,KACnC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;AACzC,aAAA;AACD,YAAA;AACI,gBAAA,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAE,CAAC,MAA4B,KAAK,IAAI,CAAC,MAAM,EAAE;AACzD,gBAAA,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,gBAAgB,CAAC,IAAI;AAClC,aAAA;SACJ,CAAC;KAMG;IAlDL,IACI,OAAO,CAAC,OAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACrB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,gBAAgB,CACnB,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,gBAAgB,CACnB,CAAC;AACL,SAAA;KACJ;AACD,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAmCD,QAAQ,GAAA;;;;;;;;;;;;;;;;;;KAmBP;AAED,IAAA,WAAW,CAAC,OAAY,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;AACxD,SAAA;KACJ;IAED,WAAW,GAAA;;KAEV;;;;;;;;AAUD,IAAA,eAAe,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEvC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,KAAK,CAAC,KAAK;gBACvB,SAAS,EAAE,IAAI,CAAC,2BAA2B;AAC9C,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,KAAK,CAAC,KAAK;AAC1B,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,KAAK,CAAC,KAAK;AAC1B,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,2BAA2B;AAC5C,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;KACJ;AAED,IAAA,2BAA2B,CAAC,KAAK,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,SAAS,EAAE,IAAI,CAAC,2BAA2B;AAC9C,SAAA,CAAC,CAAC;KACN;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;;uHAzJQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,igBClCvC,08OAiJc,EAAA,MAAA,EAAA,CAAA,83BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD/GD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,08OAAA,EAAA,MAAA,EAAA,CAAA,83BAAA,CAAA,EAAA,CAAA;iKAItC,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,2BAA2B,EAAA,CAAA;sBAAnC,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAIF,OAAO,EAAA,CAAA;sBADV,KAAK;gBAqBG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGN,YAAY,EAAA,CAAA;sBADX,MAAM;gBAGP,WAAW,EAAA,CAAA;sBADV,MAAM;;;MErDE,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;AAOa,QAAA,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;AACT,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AACX,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAU,CAAA,UAAA,GAA2B,4BAA4B,CAAC;;AAElE,QAAA,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;AAC3B,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAE5B,QAAA,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC;AAEZ,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;AAE5C,QAAA,IAAA,CAAA,YAAY,GAAsC,IAAI,YAAY,EAAuB,CAAC;KAwB7F;;IArBG,WAAW,GAAA;;;;;;;KAOV;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,KAAK,CAAC,KAAK;AAC1B,SAAA,CAAC,CAAC;KACN;AAED,IAAA,eAAe,CAAC,OAAY,EAAA;;;KAG3B;;qHApCQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,sQCvBrC,umDAsCc,EAAA,MAAA,EAAA,CAAA,iWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDfD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACI,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,umDAAA,EAAA,MAAA,EAAA,CAAA,iWAAA,CAAA,EAAA,CAAA;8BAGtC,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAIG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEN,YAAY,EAAA,CAAA;sBADX,MAAM;;;ME/BE,sBAAsB,CAAA;AAQ/B,IAAA,WAAA,CAAoB,WAA2B,EAAA;AAA3B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;AALvC,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AAGhB,QAAA,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;AAG1B,QAAA,IAAI,CAAC,cAAc,GAAG,0CAA0C,CAAC;KACpE;IAED,gBAAgB,GAAA;AACZ,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,cAAc,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAe,YAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;AAClF,QAAA,OAAO,GAAG,CAAC;KACd;AAED,IAAA,WAAW,CAAC,YAAiB,EAAA;;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YACxB,cAAc,EAAE,IAAI,CAAC,QAAQ;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,uBAAuB,EAAE,IAAI,CAAC,QAAQ;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,SAAA,CAAC,CAAC;;QAGH,MAAM,UAAU,GACZ,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,IAAG,CAAC;cAC5B,GAAG,IAAI,CAAC,iBAAiB,CAAI,CAAA,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA;AAC9C,cAAE,CAAM,GAAA,EAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhC,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA,MAAA,EAAS,UAAU,CAAA,CAAE,CAAC;AAE5D,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CACjD,CAAC,GAAG,KAAI;YACJ,YAAY,CAAC,GAAG,CAAC,CAAC;SACrB;;;SAGJ,CAAC;KACL;AAED,IAAA,WAAW,CACP,QAAgB,EAChB,QAAgB,EAChB,UAAkB,EAClB,YAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACxB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAE7B,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,cAAc,CAAC,CAAG,EAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC;AACrD,aAAA,SAAS,CACN,CAAC,GAAG,KAAI;YACJ,YAAY,CAAC,GAAG,CAAC,CAAC;SACrB;;;SAGJ,CAAC;KACT;IAED,sBAAsB,CAAC,QAAgB,EAAE,YAAiB,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KAClC;IAED,uBAAuB,CACnB,iBAAyB,EACzB,YAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KAClC;AAED,IAAA,cAAc,CACV,MAAc,EACd,YAAoB,EACpB,YAAiB,EAAA;AAEjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YACxB,cAAc,EAAE,IAAI,CAAC,QAAQ;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,uBAAuB,EAAE,IAAI,CAAC,QAAQ;AACtC,YAAA,kBAAkB,EAAE,MAAM;AAC1B,YAAA,YAAY,EAAE,YAAY;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,WAAW;aACX,eAAe,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA,cAAA,CAAgB,EAAE,IAAI,CAAC;AACjE,aAAA,SAAS,CACN,CAAC,GAAG,KAAI;YACJ,YAAY,CAAC,GAAG,CAAC,CAAC;SACrB;;;SAGJ,CAAC;KACT;AAED,IAAA,eAAe,CACX,MAAc,EACd,YAAoB,EACpB,YAAiB,EAAA;AAEjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YACxB,cAAc,EAAE,IAAI,CAAC,QAAQ;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,uBAAuB,EAAE,IAAI,CAAC,QAAQ;AACtC,YAAA,kBAAkB,EAAE,MAAM;AAC1B,YAAA,YAAY,EAAE,YAAY;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,WAAW;aACX,eAAe,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA,cAAA,CAAgB,EAAE,IAAI,CAAC;AACjE,aAAA,SAAS,CACN,CAAC,GAAG,KAAI;YACJ,YAAY,CAAC,GAAG,CAAC,CAAC;SACrB;;;SAGJ,CAAC;KACT;AAED,IAAA,iBAAiB,CACb,MAAc,EACd,YAAoB,EACpB,KAAa,EACb,YAAiB,EAAA;AAEjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YACxB,cAAc,EAAE,IAAI,CAAC,QAAQ;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,uBAAuB,EAAE,IAAI,CAAC,QAAQ;AACtC,YAAA,kBAAkB,EAAE,MAAM;AAC1B,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,WAAW;aACX,eAAe,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA,aAAA,CAAe,EAAE,IAAI,CAAC;AAChE,aAAA,SAAS,CACN,CAAC,GAAG,KAAI;YACJ,YAAY,CAAC,GAAG,CAAC,CAAC;SACrB;;;SAGJ,CAAC;KACT;;mHA5JQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;MCuBE,kCAAkC,CAAA;AAP/C,IAAA,WAAA,GAAA;AAiBa,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAG,CAAA,GAAA,GAAQ,IAAI,CAAC;AAEhB,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;AACnC,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAA4C,IAAI,YAAY,EAA6B,CAAC;;;AAIrG,QAAA,IAAA,CAAA,YAAY,GAAsC,IAAI,YAAY,EAAuB,CAAC;;;AAM1F,QAAA,IAAA,CAAA,eAAe,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAEjH,QAAA,IAAA,CAAA,cAAc,GAA0C,IAAI,YAAY,EAA2B,CAAC;KA0FvG;IAtHG,IACI,KAAK,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;AACD,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAwBD,IAAA,IAAI,OAAO,GAAA;QACP,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE/D,YAAA,IAAI,WAAW,EAAE;gBACb,OAAO,WAAW,CAAC,KAAK,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;KACpD;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;KAClD;IAED,WAAW,GAAA;;KAEV;IAED,aAAa,CAAC,QAAa,EAAE,KAAmB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACvD,QAAA,MAAM,gBAAgB,GAAG;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,YAAA,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC3C;IAED,qBAAqB,CACjB,WAAsC,EACtC,KAAmB,EAAA;AAEnB,QAAA,MAAM,gBAAgB,GAAG;YACrB,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC3C;IAED,cAAc,CAAC,KAAU,EAAE,KAAmB,EAAA;AAC1C,QAAA,MAAM,gBAAgB,GAAG;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,YAAA,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;YACvB,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC3C;;;;;;;AAUD,IAAA,OAAO,CAAC,YAAiB,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACxC;;;;AAMD,IAAA,kBAAkB,CAAC,KAAoC,EAAA;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;AAED,IAAA,gBAAgB,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AAED,IAAA,WAAW,CAAC,OAAY,EAAA;;;;KAIvB;;+HAvHQ,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,wYC1B/C,y1TAyIe,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAI,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD/GF,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,iBAGzB,iBAAiB,CAAC,QAAQ,EACxB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y1TAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,CAAA;8BAK3C,KAAK,EAAA,CAAA;sBADR,KAAK;gBAQG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAKP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAOP,eAAe,EAAA,CAAA;sBADd,MAAM;gBAGP,cAAc,EAAA,CAAA;sBADb,MAAM;;;MEmBE,wBAAwB,CAAA;;;IAsFjC,WACY,CAAA,aAA+B,EAC/B,oBAA6C,EAC7C,aAA+B,EAC/B,EAAe,EACvB,OAAwB,EAChB,SAA2B,EAAA;AAL3B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;AAC7C,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;AAEf,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AA3F9B,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEjB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAEtB,QAAA,IAAK,CAAA,KAAA,GAAmB,IAAI,CAAC;AAsB5B,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;;AAEnC,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,GAAG,CAAC;AACjB,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC;AAGrC,QAAA,IAAA,CAAA,WAAW,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAE7G,QAAA,IAAA,CAAA,oBAAoB,GAA0B,IAAI,YAAY,EAAW,CAAC;AAG1E,QAAA,IAAA,CAAA,UAAU,GAA0C,IAAI,YAAY,EAA2B,CAAC;;;AAKhG,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;AAUT,QAAA,IAAI,CAAA,IAAA,GAA0B,EAAE,CAAC;AACzC,QAAA,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;QAEpB,IAAA,CAAA,cAAc,GAAoC,IAAI,eAAe,CAAiB,EAAE,CAAC,CAAC;AAKlG,QAAA,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;AAEJ,QAAA,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;AAMpC,QAAA,IAAmB,CAAA,mBAAA,GAAQ,IAAI,CAAC;AAEhC,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;AAiB9B,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;KAC3C;IAxFD,IACI,IAAI,CAAC,KAAqB,EAAA;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnB,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;AACD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,IACI,UAAU,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAqCD,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC7C;AAaD,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAiBD,IAAA,8BAA8B,CAC1B,MAAwB,EAAA;QAExB,IAAI,GAAG,GAAG,4BAA4B,CAAC;AAEvC,QAAA,IACI,MAAM,KAAK,gBAAgB,CAAC,IAAI;AAChC,YAAA,MAAM,KAAK,gBAAgB,CAAC,IAAI,EAClC;YACE,GAAG,GAAG,MAAM,CAAC;AAChB,SAAA;AAAM,aAAA,IAAI,MAAM,KAAK,gBAAgB,CAAC,KAAK,EAAE;YAC1C,GAAG,GAAG,OAAO,CAAC;AACjB,SAAA;AAAM,aAAA;YACH,GAAG,GAAG,QAAQ,CAAC;AAClB,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED,IAAA,4BAA4B,CACxB,MAAwB,EAAA;QAExB,IAAI,GAAG,GAAG,0BAA0B,CAAC;AAErC,QAAA,IACI,MAAM,KAAK,gBAAgB,CAAC,IAAI;AAChC,YAAA,MAAM,KAAK,gBAAgB,CAAC,GAAG,EACjC;YACE,GAAG,GAAG,KAAK,CAAC;AACf,SAAA;AAAM,aAAA,IAAI,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE;YAC3C,GAAG,GAAG,QAAQ,CAAC;AAClB,SAAA;AAAM,aAAA;YACH,GAAG,GAAG,QAAQ,CAAC;AAClB,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED,IAAA,qBAAqB,CACjB,cAA2C,EAAA;AAE3C,QAAA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;AAC7B,gBAAA,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;AAC5C,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;AAED,IAAA,oBAAoB,CAChB,YAA4B,EAC5B,aAAwC,EACxC,aAAsB,EAAA;QAEtB,MAAM,MAAM,GAAmB,EAAE,CAAC;AAElC,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,YAAA,IAAI,WAAyB,CAAC;AAC9B,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;AAElC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACpD,WAAW,GAAG,IAAI,eAAe,CAAC;oBAC9B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,oBAAA,IAAI,EAAE,MAAM;oBACZ,WAAW;oBACX,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACzD,WAAW,GAAG,IAAI,eAAe,CAAC;oBAC9B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,oBAAA,IAAI,EAAE,MAAM;oBACZ,WAAW;oBACX,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC1D,WAAW,GAAG,IAAI,cAAc,CAAC;oBAC7B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,WAAW;oBACX,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;oBACzD,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5D,WAAW,GAAG,IAAI,eAAe,CAAC;oBAC9B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,oBAAA,IAAI,EAAE,MAAM;oBACZ,WAAW;oBACX,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5D,WAAW,GAAG,IAAI,cAAc,CAAC;oBAC7B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,WAAW;oBACX,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;oBACzD,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAED,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KACtB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CACzD,CAAC;KACL;AAED,IAAA,aAAa,CAAC,cAAsB,EAAA;QAChC,OAAO,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAChD;IAED,0BAA0B,CACtB,YAA4B,EAC5B,aAAkB,EAAA;QAElB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IACI,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAC/C,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM;YAClD,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAC/C,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EACnD;YACE,gBAAgB,GAAG,IAAI,CAAC;AAC3B,SAAA;AAED,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAED,IAAA,wBAAwB,CACpB,YAA4B,EAC5B,SAAc,EACd,aAAsB,EAAA;AAEtB,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE;YAC7B,OAAO;AACV,SAAA;AAED,QAAA,MAAM,WAAW,GACb,YAAY,CAAC,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;QAEtE,OAAO;YACH,GAAG,EAAE,YAAY,CAAC,OAAO;YACzB,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,WAAW;AACX,YAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,CAAC,aAAa;AACjD,YAAA,QAAQ,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,aAAa;YAC9C,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,eAAe,EAAE,SAAS,CAAC,eAAe;AAC1C,YAAA,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM;AACnC,YAAA,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK;YAClC,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;YACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;YACD,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,cAAc,CAAC;AAC7D,YAAA,WAAW,EAAE,SAAS;YACtB,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;YACnD,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;;;;YAI/B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,6BAA6B,EAAE,SAAS,CAAC,6BAA6B;SACzE,CAAC;KACL;AAED,IAAA,oBAAoB,CAChB,YAA4B,EAC5B,SAAc,EACd,aAAsB,EACtB,SAAc,EACd,gBAAqB,EACrB,eAAoB,EACpB,QAAa,EACb,QAAa,EACb,UAAe,EAAA;AAEf,QAAA,IAAI,WAAyB,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CACzC,YAAY,EACZ,SAAS,EACT,aAAa,CAChB,CAAC;AAEF,QAAA,IAAI,YAAY,CAAC,OAAO,KAAK,YAAY,EAAE;AACvC,YAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,YAAA,WAAW,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA,IACH,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AAChE,YAAA,YAAY,CAAC,SAAS;AACtB,gBAAA,UAAU,CAAC,6BAA6B;YACxC,YAAY,CAAC,OAAO,KAAK,kBAAkB;YAC3C,YAAY,CAAC,OAAO,KAAK,eAAe;YACxC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAC7C;AACE,YAAA,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,YAAY,EAAE;AACjD,gBAAA,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC3B,aAAA;AAAM,iBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO,EAAE;AACnD,gBAAA,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC;AAClC,aAAA;AAAM,iBAAA,IACH,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AAC7D,gBAAA,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU,EAC/C;AACE,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,gBAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,aAAA;iBAAM,IACH,SAAS,CAAC,SAAS;AACnB,gBAAA,UAAU,CAAC,6BAA6B;AACxC,gBAAA,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,aAAa,EAClD;AACE,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,gBAAA,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,aAAA;AAAM,iBAAA,IACH,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,sBAAsB,EAC3D;AACE,gBAAA,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;AAC7B,gBAAA,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,aAAA;AAAM,iBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB,EAAE;AAC/D,gBAAA,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;AAC7B,gBAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,aAAA;AAED,YAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AACtD,YAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;AACvD,SAAA;AAAM,aAAA;;AAEH,YAAA,IACI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU;AAC7C,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EACvC;AACE,gBAAA,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;AACjD,aAAA;YAED,QAAQ,SAAS,CAAC,SAAS;AACvB,gBAAA,KAAK,UAAU,CAAC,OAAO,EAAE;AACrB,oBAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ;AAC5C,0BAAE,KAAK;0BACL,aAAa,CAAC;AACpB,oBAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAC3C,YAAY,EACZ,SAAS,CAAC,WAAW,EACrB,kBAAkB,CACrB,CAAC;AACF,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;;AAExB,oBAAA,WAAW,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC9C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;oBAC1B,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;wBAC1C,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,wBAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B,wBAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B,wBAAA,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AAEhC,wBAAA,WAAW,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACnD,qBAAA;AAAM,yBAAA;;AAEN,qBAAA;oBACD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,mBAAmB,EAAE;oBACjC,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,oBAAA,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AAChC,oBAAA,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC;AAExC,oBAAA,WAAW,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;oBACnD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,IAAI,EAAE;AAClB,oBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,oBAAA,WAAW,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,YAAY,CAAC;AAC7B,gBAAA,KAAK,UAAU,CAAC,MAAM,EAAE;AACpB,oBAAA,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;AACxB,oBAAA,WAAW,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;;AAExB,oBAAA,WAAW,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC9C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,SAAS,EAAE;;AAEvB,oBAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,KAAK,CAAC;AACtB,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;;AAEtB,oBAAA,OAAO,CAAC,SAAS;wBACb,SAAS;AACL,4BAAA,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,SAAS,CAAC;AACxD,8BAAE,SAAS;8BACT,IAAI,CAAC;AACf,oBAAA,OAAO,CAAC,gBAAgB;wBACpB,gBAAgB;AACZ,4BAAA,IAAI,CAAC,0BAA0B,CAC3B,YAAY,EACZ,gBAAgB,CACnB;AACD,8BAAE,gBAAgB;8BAChB,IAAI,CAAC;AACf,oBAAA,OAAO,CAAC,eAAe;wBACnB,eAAe;AACX,4BAAA,IAAI,CAAC,0BAA0B,CAC3B,YAAY,EACZ,eAAe,CAClB;AACD,8BAAE,eAAe;8BACf,IAAI,CAAC;AAEf,oBAAA,WAAW,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;oBACzC,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,MAAM,EAAE;;AAEpB,oBAAA,WAAW,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,KAAK,EAAE;AACnB,oBAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AACvB,oBAAA,WAAW,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,KAAK,EAAE;AACnB,oBAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AACvB,oBAAA,WAAW,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,oBAAoB,CAAC;gBACrC,KAAK,UAAU,CAAC,UAAU,CAAC;gBAC3B,KAAK,UAAU,CAAC,gBAAgB,CAAC;AACjC,gBAAA,KAAK,UAAU,CAAC,aAAa,EAAE;AAC3B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,oBAAA,WAAW,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM;AACT,iBAAA;AAED,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;AAC1B,oBAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;oBACpD,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,IAAI,CAAC;gBACrB,KAAK,UAAU,CAAC,WAAW,CAAC;gBAC5B,KAAK,UAAU,CAAC,cAAc,CAAC;AAC/B,gBAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AACzB,oBAAA,OAAO,CAAC,IAAI;AACR,wBAAA,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,WAAW;AAC1C,8BAAE,UAAU;8BACV,MAAM,CAAC;AACjB,oBAAA,WAAW,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,aAAa,CAAC;gBAC9B,KAAK,UAAU,CAAC,aAAa,CAAC;AAC9B,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;AACxB,oBAAA,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;AACrB,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;AACxB,oBAAA,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;AAC5B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,UAAU,CAAC;gBAC3B,KAAK,UAAU,CAAC,cAAc,CAAC;gBAC/B,KAAK,UAAU,CAAC,WAAW,CAAC;gBAC5B,KAAK,UAAU,CAAC,GAAG,CAAC;AACpB,gBAAA,KAAK,UAAU,CAAC,MAAM,EAAE;AACpB,oBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,OAAO,CAAC;AACxB,gBAAA,KAAK,UAAU,CAAC,cAAc,EAAE;AAC5B,oBAAA,WAAW,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AACzB,oBAAA,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;AAC7B,oBAAA,WAAW,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,QAAQ,CAAC;gBACzB,KAAK,UAAU,CAAC,aAAa,CAAC;AAC9B,gBAAA,KAAK,UAAU,CAAC,eAAe,EAAE;;AAE7B,oBAAA,WAAW,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,YAAY,CAAC;gBAC7B,KAAK,UAAU,CAAC,sBAAsB,CAAC;AACvC,gBAAA,KAAK,UAAU,CAAC,iBAAiB,EAAE;AAC/B,oBAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AACvB,oBAAA,WAAW,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,iBAAiB,EAAE;AAC/B,oBAAA,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;AAC3B,oBAAA,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;AAC5D,oBAAA,OAAO,CAAC,sBAAsB;wBAC1B,SAAS,CAAC,sBAAsB,CAAC;AACrC,oBAAA,OAAO,CAAC,2BAA2B;wBAC/B,SAAS,CAAC,2BAA2B,CAAC;AAC1C,oBAAA,WAAW,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,aAAa,EAAE;AAC3B,oBAAA,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC;AAC/B,oBAAA,WAAW,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,SAAS,EAAE;AACvB,oBAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM;AACT,iBAAA;AACD;;AAEE;gBACF,KAAK,UAAU,CAAC,0BAA0B,CAAC;AAC3C,gBAAA,KAAK,UAAU,CAAC,6BAA6B,EAAE;AAC3C,oBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,oBAAA,OAAO,CAAC,YAAY;AAChB,wBAAA,SAAS,CAAC,SAAS;4BACnB,UAAU,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAEtD,oBAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;oBACpD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,OAAO,EAAE;AACrB,oBAAA,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC;AAC/B,oBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAEtD,oBAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;oBACpD,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,GAAG,sBAAsB,CAAC;AAC9D,YAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACtB;AAED,IAAA,sBAAsB,CAAC,KAAmB,EAAA;QACtC,IAAI,mBAAmB,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC;;AAG9D,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;AAClC,YAAA,mBAAmB,GAAG,mBAAmB,KAAK,MAAM,CAAC;AACxD,SAAA;;AAGD,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE;YAChC,mBAAmB;gBACf,mBAAmB,KAAK,GAAG,GAAG,EAAE,GAAG,mBAAmB,CAAC;AAC9D,SAAA;AAED,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAEO,IAAA,cAAc,CAAC,MAAsB,EAAA;QACzC,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACrB,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnD,MAAM,QAAQ,GAAG,EAAE,CAAC;oBAEpB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;wBACrC,IACI,UAAU,CAAC,SAAS;4BACpB,CAAC,KAAK,CAAC,QAAQ;4BACf,CAAC,KAAK,CAAC,QAAQ,EACjB;AACE,4BAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;AACvB,gCAAA;AACI,oCAAA,KAAK,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE;oCACtC,QAAQ,EACJ,KAAK,CAAC,QAAQ;AACd,wCAAA,KAAK,CAAC,QAAQ;AACd,wCAAA,UAAU,CAAC,QAAQ;AAC1B,iCAAA;gCACD,CAAC,UAAU,CAAC,QAAQ,CAAC;6BACxB,CAAC;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;AACvB,gCAAA;AACI,oCAAA,KAAK,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE;oCACtC,QAAQ,EACJ,KAAK,CAAC,QAAQ;AACd,wCAAA,KAAK,CAAC,QAAQ;AACd,wCAAA,UAAU,CAAC,QAAQ;AAC1B,iCAAA;gCACD,CAAC,UAAU,CAAC,aAAa,CAAC;6BAC7B,CAAC;AACL,yBAAA;AACL,qBAAC,CAAC,CAAC;AAEH,oBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9C,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;oBACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACnD,KAAK,CACR,CAAC;AAEF,oBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACf,wBAAA;4BACI,KAAK,EAAE,mBAAmB,IAAI,EAAE;4BAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAC3B,yBAAA;wBACD,UAAU;qBACb,CAAC;AACL,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC/B;IAEO,eAAe,CAAC,cAA8B,EAAE,SAAc,EAAA;AAClE,QAAA,MAAM,WAAW,GAAiB,IAAI,CAAC,oBAAoB,CACvD,cAAc,EACd,SAAS,EACT,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,CAClB,CAAC;AAEF,QAAA,OAAO,WAAW,CAAC;KACtB;IAEM,yBAAyB,GAAA;AAC5B,QAAA,MAAM,MAAM,GAAmB,IAAI,CAAC,MAAM,CAAC;QAC3C,IAAI,uBAAuB,GAAG,EAAE,CAAC;QACjC,IAAI,iBAAiB,GAAG,EAAE,CAAC;;;AAI3B,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE1D,YAAA,IAAI,WAAW,EAAE;;gBAEb,IACI,KAAK,CAAC,SAAS;AACf,oBAAA,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAClD;oBACE,uBAAuB;AACnB,wBAAA,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC;AACrD,iBAAA;qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC9C,iBAAiB;AACb,wBAAA,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC;AACrD,iBAAA;AACJ,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,uBAAuB;gBACnB,OAAO;AACP,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iCAAiC,CAAC;oBACzD,qCAAqC;oBACrC,uBAAuB;AACvB,oBAAA,YAAY,CAAC;AACpB,SAAA;;AAGD,QAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,iBAAiB;gBACb,OAAO;AACP,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC;oBACvD,qCAAqC;oBACrC,iBAAiB;AACjB,oBAAA,OAAO,CAAC;AACf,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC9D,QAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;YAC3B,KAAK;YACL,OAAO,EAAE,uBAAuB,GAAG,iBAAiB;AACvD,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC9C;IAED,QAAQ,GAAA;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;;QAEhE,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAC5C,SAAS,EACT,uBAAuB,CAAC,iBAAiB,CAC5C,GAAG,UAAU,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAC5C,SAAS,EACT,uBAAuB,CAAC,iBAAiB,CAC5C,GAAG,UAAU,CAAC;KACtB;IAED,SAAS,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;AACrC,SAAA;KACJ;AAED,IAAA,WAAW,CAAC,OAAO,EAAA;;;;;;;;;;;;;;;;KAgBlB;IAED,WAAW,GAAA;;KAEV;IAED,kBAAkB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;KACvD;IAED,mBAAmB,CAAC,MAAsB,EAAE,MAAc,EAAA;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;;AAGhE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AAC5B,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CACpE,SAAS,EACT,uBAAuB,CAAC,qBAAqB,CAChD,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;AACpC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CACnE,SAAS,EACT,uBAAuB,CAAC,qBAAqB,CAChD,CAAC;AACF,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CACxE,SAAS,EACT,uBAAuB,CAAC,2BAA2B,CACtD,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,mBAAmB,CAAC;AACzD,SAAA;;AAGD,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEnB,YAAA;;AAEI,YAAA,IAAI,CAAC,UAAU,KAAK,OAAO,EAC7B;AACE,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEjC,gBAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9B,oBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrB,iBAAA;;;AAID,gBAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,gBAAgB,GAAgB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAExD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE9C,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACjD,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAClC,qBAAA;AACJ,iBAAA;;;;AAKD,gBAAA,KAAK,MAAM,YAAY,IAAI,MAAM,EAAE;AAC/B,oBAAA,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE;AAC1B,wBAAA,KACI,IAAI,GAAG,GAAW,YAAY,CAAC,GAAG,EAClC,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,EAC7C,GAAG,EAAE,EACP;AACE,4BAAA,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE;AAC1B,gCAAA,KACI,IAAI,GAAG,GAAW,YAAY,CAAC,GAAG,EAClC,GAAG;oCACH,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,EACvC,GAAG,EAAE,EACP;AACE,oCAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,GAAG;AAC7B,wCAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,EAClC;wCACE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AAAM,iCAAA;AACH,gCAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,GAAG;AAC7B,oCAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;wCAC1B,YAAY,CAAC,GAAG,EAClB;oCACE,gBAAgB,CAAC,GAAG,CAAC,CACjB,YAAY,CAAC,GAAG,CACnB,GAAG,IAAI,CAAC;AACZ,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE;AACjC,wBAAA,KACI,IAAI,GAAG,GAAW,YAAY,CAAC,GAAG,EAClC,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,EAC7C,GAAG,EAAE,EACP;AACE,4BAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG;AAC1C,gCAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,EAClC;gCACE,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAClD,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG;4BAC1C,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,EAC/C;AACE,4BAAA,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAC9B,YAAY,CAAC,GAAG,CACnB,GAAG,IAAI,CAAC;AACZ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;AAGD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACjD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;;AAEzB,4BAAA,MAAM,CAAC,IAAI,CACP,IAAI,mBAAmB,CAAC;AACpB,gCAAA,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;AAChB,gCAAA,KAAK,EAAE,EAAE;AACT,gCAAA,WAAW,EAAE,EAAE;AACf,gCAAA,QAAQ,EAAE,KAAK;AACf,gCAAA,QAAQ,EAAE,KAAK;AACf,gCAAA,MAAM,EAAE,KAAK;AACb,gCAAA,SAAS,EAAE,KAAK;AAChB,gCAAA,KAAK,EAAE,EAAE;AACT,gCAAA,cAAc,EAAE,EAAE;AAClB,gCAAA,GAAG,EAAE,CAAC;AACN,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,GAAG,EAAE,CAAC;AACN,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,KAAK,EAAE,CAAC;AACX,6BAAA,CAAC,CACL,CAAC;AACL,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;gBAGD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAC7B,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACX,sBAAE,CAAC;AACH,sBAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;0BACX,CAAC,CAAC;AACJ,0BAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACb,8BAAE,CAAC;AACH,8BAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;kCACX,CAAC,CAAC;kCACF,CAAC,CACtB,CAAC;AACF,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;KACJ;IAED,OAAO,CAAC,WAAW,GAAG,KAAK,EAAA;;QACvB,IAAI,oBAAoB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,YAAA,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,gBAAA,IAAI,YAAY,CAAC,WAAW,KAAK,cAAc,EAAE;AAC7C,oBAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7B,iBAAA;AAED,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;oBACxB,oBAAoB,GAAG,KAAK,CAAC;AAChC,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAA;AAAM,aAAA;;AAEH,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAElC,gBAAA,IAAI,YAAY,CAAC,WAAW,KAAK,iBAAiB,EAAE;;oBAEhD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC/E,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;oBAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AAC/C,iBAAA;AAAM,qBAAA,IAAI,YAAY,CAAC,WAAW,KAAK,cAAc,EAAE;oBACpD,IACI,YAAY,CAAC,WAAW;AACxB,wBAAA,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EACrC;;;AAGE,wBAAA,KAAK,MAAM,iBAAiB,IAAI,YAAY,CAAC,WAAW,EAAE;4BACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACnD,iBAAiB,CACpB,CAAC;AACF,4BAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CACrC,IAAI,CAAC,IAAI,EACT,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,CACf,CAAC;AACL,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACnD,YAAY,CACf,CAAC;;AAEF,wBAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CACrC,IAAI,CAAC,IAAI,EACT,YAAY,EACZ,mBAAmB,CACtB,CAAC;AACL,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;oBACxB,oBAAoB,GAAG,KAAK,CAAC;AAChC,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;;AAGnC,QAAA,IAAI,CAAC,WAAW,IAAI,oBAAoB,EAAE;YACtC,WAAW,GAAG,IAAI,CAAC;AACtB,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;;AAG1C,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,SAAA;KACJ;IAED,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAmB,IAAI,CAAC,mBAAmB,CACnD,IAAI,CAAC,kBAAkB,EAAE,EACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CACnB,CAAC;AAEF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAChB,gBAAA,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;aAC5B,CAAC,CACL,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAChB,gBAAA,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;aAC5B,CAAC,CACL,CAAC;AAEF,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;AAClB,SAAA;KACJ;IAEO,WAAW,CACf,WAAyB,EACzB,YAAgC,EAAA;AAEhC,QAAA,MAAM,OAAO,GAAQ;YACjB,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;YACtD,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;YACtD,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,eAAe,EAAE,YAAY,CAAC,eAAe;YAC7C,cAAc,EAAE,YAAY,CAAC,cAAc;YAC3C,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,6BAA6B,EAAE,YAAY,CAAC,6BAA6B;SAC5E,CAAC;QAEF,IAAI,WAAW,YAAY,wBAAwB,EAAE;AACjD,YAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;AACvD,YAAA,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;;YAG5C,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AAChE,gBAAA,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU;AAChD,gBAAA,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB,EAC3D;gBACE,YAAY,GAAG,IAAI,CAAC;AACvB,aAAA;AAED,YAAA,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;AAEvC,SAAA;aAAM,IAAI,WAAW,YAAY,cAAc,EAAE;YAC9C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB,CACxC,YAAY,CAAC,cAAc,CAC9B,CAAC;AAEF,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjB,GAAG,EAAE,OAAO,CAAC,KAAK;oBAClB,KAAK,EAAE,OAAO,CAAC,cAAc;AAChC,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;aAAM,IAAI,WAAW,YAAY,uBAAuB,EAAE;AACvD,YAAA,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC;AAC9C,SAAA;AAED,QAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAClC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,OAAO,CACxC,CAAC,CAAC,CAAC,CAAC;;AAEL,gBAAA,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,KAAK,cAAc,EAAE;AAC3D,oBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;AAG5C,oBAAA,IACI,WAAW,CAAC,WAAW,KAAK,SAAS;wBACrC,YAAY,CAAC,WAAW,EAC1B;;;AAGE,wBAAA,KAAK,MAAM,iBAAiB,IAAI,YAAY,CAAC,WAAW,EAAE;AACtD,4BAAA,iBAAiB,CAAC,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO;AAC7C,kCAAE,KAAK;AACP,kCAAE,iBAAiB,CAAC,OAAO,CAAC;4BAEhC,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CACnD,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,iBAAiB,CAAC,OAAO,CAC7C,CAAC,CAAC,CAAC,CAAC;AACL,4BAAA,IAAI,CAAC,WAAW,CACZ,gBAAgB,EAChB,iBAAiB,CACpB,CAAC;AACL,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,SAAA;KACJ;IAEM,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC;;;;;;;AASO,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAClC,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACnB,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,OAAO;AACV,aAAA;iBAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACrC,oBAAA,IAAI,UAAU,CAAC,GAAG,KAAK,GAAG,EAAE;AACxB,wBAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACvB,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,CACnC,CAAC;wBACF,OAAO;AACV,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,WAAW,CAAC;KACtB;IAEO,gBAAgB,CACpB,aAAyB,EACzB,UAAsB,EAAA;;;;AAKtB,QAAA,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;AAC5B,YAAA,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,EAAE;AAC7B,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,uBAAuB,EAAE;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC9B,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,+BAA+B,EAAE;AACvD,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;;;;AAKD,QAAA,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;AACzB,YAAA,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,EAAE;AAC7B,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC3B,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,uBAAuB,EAAE;AAC/C,gBAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAClC,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,+BAA+B,EAAE;AACvD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AACjC,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACpD,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACnE,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAClD,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACjE,SAAA;;;;AAKD,QAAA,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;YAC5B,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,EAAE;AAC/C,gBAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,0BAA0B,CAC9D,EAAE,EACF,IAAI,CAAC,SAAS,CACjB,CAAC;gBAEF,IAAI,IAAI,CAAC,2BAA2B,EAAE;oBAClC,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAED,mBAAmB,CACf,aAAyB,EACzB,UAAsB,EAAA;AAEtB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;;YAEH,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACnC,gBAAA,IACI,KAAK,CAAC,OAAO,KAAK,eAAe;oBACjC,KAAK,CAAC,OAAO,KAAK,kBAAkB;oBACpC,KAAK,CAAC,OAAO,KAAK,YAAY;AAC9B,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,KAAK;AACpC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,QAAQ;AACvC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU;AACzC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO;AACtC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,cAAc;AAC7C,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS;AACxC,oBAAA,KAAK,CAAC,SAAS;AACf,wBAAA,UAAU,CAAC,6BAA6B;AACxC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AACzD,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO;AACtC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,sBAAsB;AACrD,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB,EACpD;oBACE,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACrD,iBAAA;AAAM,qBAAA;;;AAGN,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;QAED,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YACnC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAC/B,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CACvC,CAAC,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,SAAS,EAAE;gBACZ,OAAO;AACV,aAAA;;AAGD,YAAA,IACI,IAAI,CAAC,UAAU,KAAK,OAAO;iBAC1B,CAAC,IAAI,CAAC,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;qBACvC,IAAI,CAAC,eAAe;wBACjB,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;qBAClD,IAAI,CAAC,gBAAgB;wBAClB,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,EAC3D;gBACE,OAAO;AACV,aAAA;;AAGD,YAAA,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACtC,gBAAA,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;;AAEjD,aAAA;AAED,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;AAChC,gBAAA,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;;;AAG5B,aAAA;YACD,MAAM,WAAW,GAAiB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzE,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KACtB,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACX,cAAE,CAAC;AACH,cAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;kBACX,CAAC,CAAC;AACJ,kBAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACb,sBAAE,CAAC;AACH,sBAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;0BACX,CAAC,CAAC;0BACF,CAAC,CACtB,CAAC;KACL;AAEO,IAAA,uBAAuB,CAAC,oBAAyB,EAAA;AACrD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;KACxD;AAED,IAAA,cAAc,CAAC,KAAgC,EAAA;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEvD,QAAA,MAAM,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;;AAGvD,QAAA,IAAI,OAAO,EAAE;;YAET,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AAC/C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,aAAA;;YAGD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;AAClE,YAAA,IAAI,YAAY,EAAE;gBACd,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAClE,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;AACjC,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,eAAoC,EAAA;QACxC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CACjD,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC,GAAG,CAC3C,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAE/D,QAAA,IAAI,qBAAqB,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1B,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,MAAM;gBACN,KAAK,EAAE,eAAe,CAAC,UAAU;gBACjC,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,SAAS,EAAE,qBAAqB,CAAC,SAAS;gBAC1C,SAAS,EAAE,eAAe,CAAC,SAAS;AACvC,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1B,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,MAAM;gBACN,KAAK,EAAE,eAAe,CAAC,UAAU;gBACjC,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,SAAS,EAAE,eAAe,CAAC,SAAS;AACvC,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;;;;;;;;;;AAaD,IAAA,kBAAkB,CAAC,KAAoC,EAAA;;KAEtD;;AAGD,IAAA,gBAAgB,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;;qHA/7CQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,ukBC1ErC,onRAkIc,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAF,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,KAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDxDD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACI,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,onRAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA;6QAGtC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAIF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAiBF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAGP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,MAAM;;;MElFE,wBAAwB,CAAA;AAqEjC,IAAA,WAAA,CACY,OAAmB,EACnB,aAA+B,EAC/B,EAAqB,EACrB,QAAmB,EAAA;AAHnB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AACnB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;AACrB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAxEtB,QAAA,IAAc,CAAA,cAAA,GAAG,iBAAiB,CAAC;AACnC,QAAA,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;AAEhC,QAAA,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC,CAAC;AACT,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,GAAG,CAAC;;AAEjB,QAAA,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;AACvB,QAAA,IAAY,CAAA,YAAA,GAAqB,IAAI,CAAC;AACtC,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AACtB,QAAA,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;;;AAKxB,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAA2B,CAAC;AAE5E,QAAA,IAAA,CAAA,WAAW,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAMtG,QAAA,IAAS,CAAA,SAAA,GAAc,IAAI,CAAC;AAC5B,QAAA,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC,CAAC;AAEtB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AACR,QAAA,IAA8B,CAAA,8BAAA,GAAG,IAAI,CAAC;AAEtC,QAAA,IAAM,CAAA,MAAA,GAA0B,IAAI,CAAC;;AAMrC,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AACzB,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAIV,QAAA,IAAS,CAAA,SAAA,GAAG,GAAG,CAAC;AAEvB,QAAA,IAAY,CAAA,YAAA,GAAQ,IAAI,CAAC;AAEzB,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AACpB,QAAA,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AAEX,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AAE3B,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;;;AAKvB,QAAA,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AACnB,QAAA,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AACX,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;AAEpB,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC;AAC5B,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AASpB,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,KAAI;AACzD,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;AA9CD,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IA8CD,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;KAC3B;AAED,IAAA,WAAW,CAAC,OAAO,EAAA;AACf,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;KACJ;IAED,WAAW,GAAA;;;;;;;;;;KAUV;IAED,iBAAiB,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE;YAC3C,OAAO;AACV,SAAA;QAED,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,QAAA,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAC1B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAC3C,CAAC;;AAEF,QAAA,MAAM,qBAAqB,GACvB,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEvE,QAAA,MAAM,eAAe,GACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,GAAG,CAAC;cACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa;cACtD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;;AAGnD,QAAA,MAAM,WAAW,GACb,eAAe,CAAC,YAAY,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3D,cAAE,EAAE;AACJ,cAAE,CAAC,CAAC;;AAGZ,QAAA,MAAM,mBAAmB,GACrB,qBAAqB,GAAG,sBAAsB,GAAG,WAAW,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,WAAW,GAAG,mBAAmB,CAAC;KAC3E;IAED,KAAK,GAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;AAEO,IAAA,WAAW,CAAC,SAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,CAAC;KAChC;AAEO,IAAA,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAA;AAC/D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KAC7D;AAED,IAAA,aAAa,CAAC,MAAc,EAAE,QAAQ,GAAG,EAAE,EAAA;AACvC,QAAA,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7C;IAED,SAAS,GAAA;AACL,QAAA,IACI,IAAI,CAAC,SAAS,KAAK,CAAC;YACpB,CAAC,IAAI,CAAC,SAAS;AACf,YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa;YAC7B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAC3C;YACE,OAAO;AACV,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACxC,YAAA,IAAI,EAAE,CAAC,WAAW,KAAK,CAAC,EAAE;AACtB,gBAAA,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC;AACvB,aAAA;YAED,IACI,IAAI,CAAC,OAAO;AACZ,iBAAC,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,KAAK;;AAE9B,oBAAA,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS;AACrC,oBAAA,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,6BAA6B;AACzD,oBAAA,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AACtD,oBAAA,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,sBAAsB;AAClD,oBAAA,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB;AAC/C,oBAAA,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO;oBACnC,EAAE,CAAC,OAAO,KAAK,eAAe;AAC9B,oBAAA,EAAE,CAAC,OAAO,KAAK,kBAAkB,CAAC,EACxC;AACE,gBAAA,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5B,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;KAC/C;IAEO,gBAAgB,GAAA;AACpB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;QACnD,MAAM,sBAAsB,GAAG,CAAC,CAAC;;QAGjC,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAChD,gBAAA,IAAI,CAAC,8BAA8B;oBAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAC/B,CAAC,EAAE,KAAK,EAAE,CAAC,eAAe,KAAK,CAAC,CACnC,CAAC,MAAM,KAAK,CAAC,CAAC;AACtB,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACtC,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CACxD,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,GAAG,aAAa,CACzC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,GAAG,OAAO,CAAC,CAAC;AAE1C,YAAA,IAAI,MAAM,CAAC,UAAU,GAAG,mBAAmB,EAAE;AACzC,gBAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;AAC9C,aAAA;AACJ,SAAA;QAED,IAAI,kBAAkB,GAAG,CAAC,CAAC;;QAG3B,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACrC,YAAA,MAAM,cAAc,GAAW,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAC3D,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CACzB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,GAAG,OAAO,CAAC,CAAC;YAE1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACzC,gBAAA,MAAM,cAAc,GAAmB,IAAI,CAAC,SAAS;qBAChD,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,yBAAyB,GAC3B,CAAC,GAAG,GAAG,cAAc,IAAI,cAAc,CAAC,WAAW,CAAC;AAExD,gBAAA,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CACvC,CAAC,IAAI,CAAC,cAAc,GAAG,yBAAyB,IAAI,GAAG,CAC1D,CAAC;AAEF,gBAAA,IAAI,KAAK,KAAK,MAAM,GAAG,CAAC,EAAE;AACtB,oBAAA,cAAc,CAAC,0BAA0B,GAAG,cAAc,CAAC,qBAAqB;AAC5E,wBAAA,cAAc,GAAG,kBAAkB,GAAG,KAAK,CAAC;AACnD,iBAAA;AAAM,qBAAA;AACH,oBAAA,cAAc,CAAC,0BAA0B,GAAG,cAAc,CAAC,qBAAqB;AAC5E,wBAAA,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC;AAC1C,oBAAA,kBAAkB,IAAI,cAAc,CAAC,eAAe,CAAC;AACxD,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,OAAO,EACP,SAAS,CACZ,CAAC;AACL,SAAA;AAAM,aAAA;YACH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACzC,gBAAA,MAAM,cAAc,GAAmB,IAAI,CAAC,SAAS;qBAChD,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1B,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAChC,cAAc,CAAC,WAAW,GAAG,aAAa,CAC7C,CAAC;AAEF,gBAAA,IAAI,KAAK,KAAK,MAAM,GAAG,CAAC,EAAE;AACtB,oBAAA,cAAc,CAAC,0BAA0B;wBACrC,iBAAiB,GAAG,IAAI,CAAC;AAC7B,oBAAA,cAAc,CAAC,qBAAqB;AAChC,wBAAA,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC;AACpC,iBAAA;AAAM,qBAAA;AACH,oBAAA,cAAc,CAAC,0BAA0B,GAAG,cAAc,CAAC,qBAAqB;wBAC5E,iBAAiB,GAAG,IAAI,CAAC;AAChC,iBAAA;gBAED,kBAAkB,IAAI,iBAAiB,CAAC;AAC3C,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,OAAO,EACP,kBAAkB,GAAG,sBAAsB,GAAG,IAAI,CACrD,CAAC;AACL,SAAA;KACJ;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC;;QAErE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC;KAC7E;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACzC,kBAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;kBACrB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;;YAG5B,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,IAAI,UAAU,GAAG,CAAC,EAAE;gBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;gBACnD,IAAI,kBAAkB,GAAG,CAAC,CAAC;gBAE3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACzC,oBAAA,MAAM,cAAc,GAAmB,IAAI,CAAC,SAAS;yBAChD,aAAa,CAAC,KAAK,CAAC,CAAC;AAE1B,oBAAA,IAAI,KAAK,KAAK,MAAM,GAAG,CAAC,EAAE;;wBAEtB,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACrC,4BAAA,cAAc,CAAC,0BAA0B,GAAG,cAAc,CAAC,qBAAqB;AAC5E,gCAAA,cAAc,GAAG,kBAAkB,GAAG,KAAK,CAAC;AACnD,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,cAAc,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,EAAE;AAC/C,gCAAA,cAAc,CAAC,eAAe;AAC1B,oCAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,gCAAA,cAAc,CAAC,0BAA0B;AACrC,oCAAA,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC;AAC1C,gCAAA,cAAc,CAAC,qBAAqB;AAChC,oCAAA,cAAc,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC;AACjD,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA,IAAI,cAAc,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,EAAE;AACtD,wBAAA,cAAc,CAAC,eAAe;AAC1B,4BAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,wBAAA,cAAc,CAAC,0BAA0B,GAAG,cAAc,CAAC,qBAAqB;AAC5E,4BAAA,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7C,qBAAA;AAED,oBAAA,kBAAkB,IAAI,cAAc,CAAC,eAAe,CAAC;AACxD,iBAAA;gBAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,OAAO,EACP,IAAI,CAAC,eAAe,GAAG,UAAU,GAAG,IAAI,CAC3C,CAAC;AACL,aAAA;YAED,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC/C,SAAA;KACJ;IAED,SAAS,CAAC,EAAE,EAAE,cAAc,EAAA;;QAExB,IAAI,cAAc,KAAK,SAAS,EAAE;YAC9B,cAAc,GAAG,QAAQ,CAAC;AAC7B,SAAA;QACD,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;AAEtB,QAAA,OACI,CAAC;YACD,CAAC,CAAC,SAAS,KAAK,EAAE;YAClB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,cAAc,KAAK,QAAQ,EAC7B;YACE,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,YAAA,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;AACpB,SAAA;QACD,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1C,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,eAAe,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IACI,KAAK;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAC3D;gBACE,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,aAAA;AAAM,iBAAA;gBACH,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,cAAc,EAAE,CAAC;iBACzB,EAAE,CAAC,CAAC,CAAC;AACT,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,sBAAsB,CAAC,KAAK,EAAA;;KAE3B;AAED,IAAA,sBAAsB,CAAC,KAAK,EAAA;;AAExB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;QACnB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,OAAO;AACV,SAAA;;AAGD,QAAA,IACI,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW;AAClC,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,WAAW,EAClC;YACE,OAAO;AACV,SAAA;QAED,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAEjE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;KACJ;IAED,kBAAkB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;KACzD;AAED,IAAA,cAAc,CAAC,WAA0C,EAAA;QACrD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;AAED,IAAA,qBAAqB,CACjB,yBAAkD,EAAA;QAElD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;KACnD;AAED,IAAA,aAAa,CAAC,IAAoB,EAAA;QAC9B,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;YACH,MAAM,yBAAyB,GAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzC,YAAA,OAAO,yBAAyB,CAAC;AACpC,SAAA;KACJ;AAED,IAAA,iBAAiB,CAAC,MAAc,EAAE,QAAQ,GAAG,EAAE,EAAA;QAC3C,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxD,QAAA,UAAU,GAAG,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC;AAEhD,QAAA,OAAO,UAAU,CAAC;KACrB;AAEO,IAAA,cAAc,CAClB,MAAM,EACN,sBAA+B,EAC/B,QAAgB,EAChB,SAAkB,EAAA;QAElB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;;AAGxD,QAAA,IAAI,SAAS,EAAE;;AAEX,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;AACpC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE;AACpC,gBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC5B,aAAA;AACJ,SAAA;KACJ;IAED,WAAW,CAAC,CAAM,EAAE,IAAoB,EAAA;;QAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,EAAE;YACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3D,SAAS,GAAG,IAAI,CAAC;AACpB,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,CACf,MAAM,EACN,IAAI,CAAC,sBAAsB,EAC3B,QAAQ,EACR,IAAI,CACP,CAAC;AACL,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,OAAO;AACV,aAAA;AACJ,SAAA;;KAGJ;AAED,IAAA,oBAAoB,CAAC,KAAU,EAAE,MAAc,EAAE,QAAgB,EAAA;AAC7D,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,OAAO;AACV,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;KACnC;AAED,IAAA,oBAAoB,CAAC,KAAU,EAAE,MAAc,EAAE,QAAgB,EAAA;AAC7D,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;AAED,IAAA,gBAAgB,CAAC,KAAU,EAAE,MAAc,EAAE,QAAgB,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,OAAO;AACV,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;KACnC;AAED,IAAA,gBAAgB,CAAC,KAAU,EAAE,MAAc,EAAE,QAAgB,EAAA;AACzD,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;;AAGD,IAAA,SAAS,CAAC,CAAC,EAAA;AACP,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAED,WAAW,CAAC,KAAa,EAAE,IAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;KAC9C;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM;AACP,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAiB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;KACpC;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,YAAY,CACR,SAAoB,EACpB,SAAiB,EACjB,KAAuB,EACvB,QAAA,GAA4B,OAAO,EACnC,SAAS,GAAG,EAAE,EAAA;AAEd,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC;;AAEpC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;;;QAM3B,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;AAEO,IAAA,WAAW,CAAC,KAAuB,EAAA;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;KACpC;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;QAChB,IAAI,KAAK,GAAG,CAAC,CAAC;;QAGd,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC5B,SAAA;;QAGD,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnE,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC/C,SAAA;KACJ;AAED,IAAA,iBAAiB,CAAC,GAAW,EAAA;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7B,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;AAED,IAAA,eAAe,CAAC,GAAW,EAAA;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC;KACjE;;qHA1mBQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,03BCpCrC,g5MA4Gc,EAAA,MAAA,EAAA,CAAA,+TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,sBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDxED,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;YACI,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGvB,IAAA,EAAA;AACF,wBAAA,iBAAiB,EAAE,mBAAmB;qBACzC,EAAA,QAAA,EAAA,g5MAAA,EAAA,MAAA,EAAA,CAAA,+TAAA,CAAA,EAAA,CAAA;0LAGQ,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBAEG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKN,UAAU,EAAA,CAAA;sBADT,MAAM;gBAGP,WAAW,EAAA,CAAA;sBADV,MAAM;gBAG2B,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB,CAAA;gBACN,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa,CAAA;gBACE,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa,CAAA;;;MEff,wBAAwB,CAAA;AAuDjC,IAAA,WAAA,CACY,aAA+B,EAC/B,mBAA2C,EAC5C,oBAA6C,EAC5C,iBAAoC,EAAA;AAHpC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAwB;AAC5C,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;AAC5C,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAvDhD,QAAA,IAAW,CAAA,WAAA,GAAG,cAAc,CAAC;AAGpB,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;AAG5C,QAAA,IAAA,CAAA,uBAAuB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAErE,QAAA,IAAA,CAAA,sBAAsB,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAgB5G,QAAA,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC;AAE5B,QAAA,IAAS,CAAA,SAAA,GAAQ,IAAI,CAAC;AAMtB,QAAA,IAAS,CAAA,SAAA,GAAQ,EAAE,CAAC;AACpB,QAAA,IAAkB,CAAA,kBAAA,GAAQ,IAAI,CAAC;AAC/B,QAAA,IAAwB,CAAA,wBAAA,GAAQ,IAAI,CAAC;AACrC,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AACtB,QAAA,IAAW,CAAA,WAAA,GAAG,GAAG,CAAC;AAClB,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAExB,QAAA,IAAe,CAAA,eAAA,GAAyB,IAAI,CAAC;AAE7C,QAAA,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;AACrB,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AACnB,QAAA,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;AACnB,QAAA,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC;AACpB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AACrB,QAAA,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AACrB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC,CAAC;KAOf;IAEG,QAAQ,CAAC,UAAU,GAAG,KAAK,EAAA;;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAE1D,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;AACzB,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;AAEtB,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;YACzB,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,SAAA;AAAM,aAAA;YACH,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;QAED,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,QAAQ,GAAoB,IAAI,CAAC,WAAW,EAAE;AAChD,kBAAE,OAAO;kBACP,OAAO,CAAC;YACd,IAAI,CAAC,UAAU,CAAC,YAAY,CACxB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,SAAS,EACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,QAAQ,CACX,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,CAAC;;AAGpB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI;AACrC,kBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;kBAC1B,CAAC,CAAC;AACR,YAAA,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC;;YAEvC,MAAM,SAAS,GACX,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC1C,kBAAE,MAAM;AACJ,sBAAE,CAAC;AACH,sBAAE,CAAC;kBACL,CAAC,CAAC;AAEZ,YAAA,MAAM,aAAa,GACf,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC;;AAG9D,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;gBAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5C,aAAA;AAED,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAExB,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAC1C,CAAC,cAA8B,KAAI;AAC/B,gBAAA,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,WAAW,CAAC;gBAClD,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAChC,aAAC,CACJ,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAEvC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;AAC5C,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,2BAA2B,EAAE;AAC1D,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACnB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;wBACtC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;qBACvC,CAAC,CACL,CAAC;;AAGF,oBAAA,MAAM,cAAc,GAChB,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAC7C,MAAM,CACT,GAAG,EAAE,CAAC;;;;oBAKX,MAAM,YAAY,GACd,CAAC,aAAa,IAAI,cAAc,GAAG,EAAE,CAAC;wBACtC,aAAa;AACb,wBAAA,SAAS,CAAC;AACd,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AACrC,iBAAA;AAAM,qBAAA;;;;AAIH,oBAAA,MAAM,eAAe,GACjB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAC9C,SAAS,EACT,KAAK,CACR,GAAG,EAAE,CAAC;AACX,oBAAA,MAAM,eAAe,GACjB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAC9C,aAAa,CAChB,GAAG,EAAE,CAAC;oBACX,IAAI,CAAC,KAAK,CAAC,OAAO;AACd,wBAAA,CAAC,eAAe,GAAG,eAAe,IAAI,aAAa,CAAC;AAC3D,iBAAA;AACJ,aAAA;SACJ,EAAE,CAAC,CAAC,CAAC;AAEN,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;AAEO,IAAA,aAAa,CAAC,GAAQ,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;QAEjD,IAAI,CAAC,QAAQ,EAAE,CAAC;KACnB;AAED,IAAA,MAAM,CAAC,EAAE,EAAA;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;KAClC;IAEO,YAAY,GAAA;QAChB,QACI,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,mBAAmB,EAClD;KACL;IAEO,gBAAgB,GAAA;QACpB,QACI,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,2BAA2B,EAC1D;KACL;IAED,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzD;AAED,IAAA,sBAAsB,CAAC,WAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAEtB,QAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AAClC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAK,WAAW,EAAE;AACxB,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;gBAC1B,MAAM;AACT,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAEvD,QAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAC3C,IAAI,CAAC,eAAe,CAAC,GAAG,EACxB,CAAC,GAAgB,KAAI;YACjB,IAAI,GAAG,CAAC,IAAI,EAAE;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAA;AACL,SAAC,CACJ,CAAC;KACL;AAED,IAAA,YAAY,CAAC,IAAI,EAAA;QACb,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;AACV,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AACnD,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC;AAEzC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC;;AAG3D,QAAA,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC9D,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC/B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAChC,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;IAED,gBAAgB,GAAA;AACZ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAC7C;AACI,YAAA,YAAY,EAAE,KAAK;SACtB,EACD,OAAO,CACV,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAC3C,IAAI,CAAC,oBAAoB,EACzB,EAAE,EACF,MAAM,CACT,CAAC;AAEF,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;;QAGJ,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,CAAC,YAAiB,KAAI;;YAElB,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CACxC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,kBAAkB,CAC5C,CAAC;YAEF,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnD,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;oBACvB,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,iBAAA;AACD,gBAAA,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC;gBACxC,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAG5C,gBAAA,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,IAAI,EAAE;AACzC,oBAAA,IAAI,WAAW,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO,EAAE;AAC5C,wBAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;AACtC,qBAAA;AACJ,iBAAA;gBAED,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AACzD,aAAA;AACL,SAAC,CACJ,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;AACpC,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACtB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACV;IAED,yBAAyB,GAAA;QACrB,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAC9B,wBAAwB,CAAC,2BAA2B,CACvD,CAAC;AACF,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,wBAAwB,GAAG,iBAAiB,CAAC;AAClD,YAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,iBAAiB,KAAjB,IAAA,IAAA,iBAAiB,KAAjB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iBAAiB,CAAE,GAAG,CAAC;AACvE,SAAA;KACJ;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAC7B,SAAA;KACJ;AAED,IAAA,uBAAuB,CAAC,iBAAiB,EAAA;QACrC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAC5C,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,GAAG,EAAE,EAC9C,CAAC,GAAQ,KAAI;;AAET,YAAA,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;AACxB,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAA;AAED,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CACJ,CAAC;AAEF,QAAA,cAAc,CAAC,OAAO,CAClB,wBAAwB,CAAC,2BAA2B,EACpD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CACpC,CAAC;QAEF,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,wBAAwB,GAAG,iBAAiB,CAAC;SACrD,EAAE,CAAC,CAAC,CAAC;KACT;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAChD,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpC,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;oBACnD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACnC,oBAAA,IACI,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,sBAAsB;AACrD,wBAAA,KAAK,CAAC,SAAS;AACf,4BAAA,UAAU,CAAC,6BAA6B;AACxC,wBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB;AAClD,wBAAA,KAAK,CAAC,SAAS;AACf,4BAAA,UAAU,CAAC,0BAA0B;AACrC,wBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,aAAa;AAC5C,wBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,aAAa;AAC5C,wBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,cAAc;AAC7C,wBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU,EAC3C;wBACE,QAAQ,GAAG,CAAC,CAAC;AACb,wBAAA,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;AAC1B,4BAAA,IACI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,gCAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAC5B;AACE,gCAAA,MAAM,GAAG,GAAG,UAAU,CAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAC7B,CAAC;AACF,gCAAA,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACpC,6BAAA;AACJ,yBAAA;AACD,wBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,aAAa,CAAC,eAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;;AAG5C,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC7D,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC,GAAG,EAAE;gBACxD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;AAChD,aAAA;AACJ,SAAA;KACJ;IAED,gBAAgB,CAAC,EAAO,EAAE,GAAQ,EAAA;AAC9B,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC;AACzE,YAAA,IAAI,KAAK,EAAE;;;AAGP,gBAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,SAAA;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;;AAGlC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;AAED,IAAA,wBAAwB,CACpB,0BAAyD,EAAA;QAEzD,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CACtC,0BAA0B,CAAC,EAAE,EAC7B,0BAA0B,CAAC,GAAG,EAC9B,0BAA0B,CAAC,KAAK,EAChC,CAAC,GAAQ,KAAI;YACT,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC9D,SAAC,CACJ,CAAC;KACL;AAED,IAAA,qBAAqB,CAAC,eAAwC,EAAA;QAC1D,IAAI,YAAY,GAAG,KAAK,CAAC;;AAGzB,QAAA,IAAI,eAAe,CAAC,WAAW,KAAK,IAAI,EAAE;AACtC,YAAA,IAAI,eAAe,CAAC,KAAK,KAAK,4BAA4B,CAAC,IAAI,EAAE;gBAC7D,YAAY,GAAG,IAAI,CAAC;AACpB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CACnC,eAAe,CAAC,EAAE,EAClB,eAAe,CAAC,GAAG,EACnB,CAAC,GAAQ,KAAI;oBACT,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACnD,iBAAC,CACJ,CAAC;AACL,aAAA;AAAM,iBAAA,IACH,eAAe,CAAC,KAAK,KAAK,4BAA4B,CAAC,KAAK,EAC9D;gBACE,YAAY,GAAG,IAAI,CAAC;AACpB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CACpC,eAAe,CAAC,EAAE,EAClB,eAAe,CAAC,GAAG,EACnB,CAAC,GAAQ,KAAI;oBACT,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACnD,iBAAC,CACJ,CAAC;AACL,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACrD,SAAA;KACJ;;AA/cM,wBAA2B,CAAA,2BAAA,GAC9B,uCAAuC,CAAC;qHAFnC,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAkB,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAHtB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,sBAAsB,CAAC,EAoBL,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EACb,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EAGN,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAG3C,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,gDCtEvC,4nKAwGU,EAAA,MAAA,EAAA,CAAA,spCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD1DG,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,aAGlB,CAAC,sBAAsB,CAAC,EAClB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4nKAAA,EAAA,MAAA,EAAA,CAAA,spCAAA,CAAA,EAAA,CAAA;mNAQtC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGN,uBAAuB,EAAA,CAAA;sBADtB,MAAM;gBAGP,sBAAsB,EAAA,CAAA;sBADrB,MAAM;gBAGa,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;gBACS,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;gBAEyB,OAAO,EAAA,CAAA;sBAAxD,SAAS;gBAAC,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBAEhD,UAAU,EAAA,CAAA;sBADT,SAAS;gBAAC,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBAEtB,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;gBAE3B,oBAAoB,EAAA,CAAA;sBADnB,SAAS;gBAAC,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAIxD,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,wBAAwB,CAAA;;;MElE1B,yBAAyB,CAAA;AAGlC,IAAA,WAAA,CAAoB,WAA2B,EAAA;AAA3B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,2BAA2B,CAAC;KAC/C;IAED,SAAS,CAAC,WAAmB,EAAE,QAAgB,EAAE,UAAkB,EAAE,SAAiB,EAAE,YAAiB,EAAA;AACrG,QAAA,MAAM,IAAI,GAAG;AACT,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;AACxB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,KAAK,EAAE,UAAU;aACpB,CAAC;SACL,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAChE,CAAC,GAAG,KAAI;AACJ,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,YAAY,CAAC,GAAG,CAAC,CAAC;SACrB;;;SAGJ,CAAC;KACL;;sHAzBQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0HAAzB,yBAAyB,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;MCmCE,2BAA2B,CAAA;IA6CpC,WACY,CAAA,aAA+B,EAC/B,sBAAiD,EAAA;AADjD,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA2B;AA5BpD,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;AAG5C,QAAA,IAAA,CAAA,uBAAuB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAErE,QAAA,IAAA,CAAA,sBAAsB,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAEpG,QAAA,IAAM,CAAA,MAAA,GAAe,IAAI,CAAC;AASlC,QAAA,IAAM,CAAA,MAAA,GAAQ,IAAI,CAAC;AACnB,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAER,QAAA,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAExB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AACrB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAErB,QAAA,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;KAKjC;IA3CL,IACI,KAAK,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAiC,CAAC;AAE5D,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,QAAQ,EAAE;YACvC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9C,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3C,SAAA;KACJ;AACD,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAUD,IAAI,KAAK,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;KAEvB;AACD,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAiBD,QAAQ,GAAA;;KAEP;IAED,eAAe,GAAA;QACX,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAuB,KAAI;AAC/D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,SAAC,CAAC,CAAC;KACN;AAED,IAAA,wBAAwB,CACpB,0BAAyD,EAAA;QAEzD,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,0BAA0B,CAAC,GAAG,EAAE,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE,MAAK;AAClK,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAClE,SAAC,CAAC,CAAC;KACN;AAED,IAAA,qBAAqB,CAAC,eAAwC,EAAA;QAC1D,IAAI,YAAY,GAAG,KAAK,CAAC;;AAGzB,QAAA,IAAI,eAAe,CAAC,WAAW,KAAK,IAAI,EAAE;AACtC,YAAA,IAAI,eAAe,CAAC,KAAK,KAAK,4BAA4B,CAAC,IAAI,EAAE;gBAC7D,YAAY,GAAG,IAAI,CAAC;AACpB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAK;AACpH,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AAEN,aAAA;AAAM,iBAAA,IAAI,eAAe,CAAC,KAAK,KAAK,4BAA4B,CAAC,KAAK,EAAE;gBACrE,YAAY,GAAG,IAAI,CAAC;AACpB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAK;AACpH,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACrD,SAAA;KACJ;IAED,QAAQ,GAAA;AACJ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAC1C,CAAC,CACJ,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAED,SAAS,GAAA;QACL,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CACpB,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;KACJ;AAED,IAAA,kBAAkB,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;AAED,IAAA,mBAAmB,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;;wHAxHQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,wNAHzB,CAAC,yBAAyB,CAAC,EAIP,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAoB,6BCvCvD,m2CAqBM,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,sBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDiBO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,aAGrB,CAAC,yBAAyB,CAAC,EACrB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m2CAAA,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA,CAAA;8IAI/C,QAAQ,EAAA,CAAA;sBADP,SAAS;gBAAC,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAA;gBAKjD,KAAK,EAAA,CAAA;sBADR,KAAK;gBAcG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGN,uBAAuB,EAAA,CAAA;sBADtB,MAAM;gBAGP,sBAAsB,EAAA,CAAA;sBADrB,MAAM;;;MElCE,0BAA0B,CAAA;AAPvC,IAAA,WAAA,GAAA;AAiBa,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAG,CAAA,GAAA,GAAQ,IAAI,CAAC;AAEhB,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;AACnC,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAA4C,IAAI,YAAY,EAA6B,CAAC;;;AAIrG,QAAA,IAAA,CAAA,YAAY,GAAsC,IAAI,YAAY,EAAuB,CAAC;AAEhF,QAAA,IAAA,CAAA,uBAAuB,GAAsB,IAAI,YAAY,EAAO,CAAC;AACrE,QAAA,IAAA,CAAA,sBAAsB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAG9E,QAAA,IAAA,CAAA,eAAe,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAEjH,QAAA,IAAA,CAAA,cAAc,GAA0C,IAAI,YAAY,EAA2B,CAAC;KA0FvG;IAtHG,IACI,KAAK,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;AACD,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAwBD,IAAA,IAAI,OAAO,GAAA;QACP,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE/D,YAAA,IAAI,WAAW,EAAE;gBACb,OAAO,WAAW,CAAC,KAAK,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;KACpD;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;KAClD;IAED,aAAa,CAAC,QAAa,EAAE,KAAmB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACvD,QAAA,MAAM,gBAAgB,GAAG;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,YAAA,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC3C;IAED,qBAAqB,CACjB,WAAsC,EACtC,KAAmB,EAAA;AAEnB,QAAA,MAAM,gBAAgB,GAAG;YACrB,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC3C;IAED,cAAc,CAAC,KAAU,EAAE,KAAmB,EAAA;AAC1C,QAAA,MAAM,gBAAgB,GAAG;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,YAAA,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;YACvB,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC3C;AAED,IAAA,0BAA0B,CAAC,uBAA4B,EAAA;AACnD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;KAC9D;;;;AAMD,IAAA,OAAO,CAAC,YAAiB,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACxC;AAED,IAAA,wBAAwB,CAAC,sBAA2B,EAAA;AAChD,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAC5D;AAED,IAAA,kBAAkB,CAAC,KAAoC,EAAA;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;AAED,IAAA,gBAAgB,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AAED,IAAA,WAAW,CAAC,OAAY,EAAA;;;;KAIvB;IAED,WAAW,GAAA;;KAEV;;uHAvHQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,qeC3BvC,07TAuIe,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAI,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD5GF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,iBAGhB,iBAAiB,CAAC,QAAQ,EACxB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,07TAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,CAAA;8BAK3C,KAAK,EAAA,CAAA;sBADR,KAAK;gBAQG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAKP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAGG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBACG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBAGP,eAAe,EAAA,CAAA;sBADd,MAAM;gBAGP,cAAc,EAAA,CAAA;sBADb,MAAM;;;MEiBE,gBAAgB,CAAA;;;IAsFzB,WACY,CAAA,aAA+B,EAC/B,oBAA6C,EAC7C,aAA+B,EAC/B,EAAe,EACvB,OAAwB,EAChB,SAA2B,EAAA;AAL3B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;AAC7C,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;AAEf,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AA3F9B,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEjB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAEtB,QAAA,IAAK,CAAA,KAAA,GAAmB,IAAI,CAAC;AAsB5B,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;;AAEnC,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,GAAG,CAAC;AACjB,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC;AAGrC,QAAA,IAAA,CAAA,WAAW,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAE7G,QAAA,IAAA,CAAA,oBAAoB,GAA0B,IAAI,YAAY,EAAW,CAAC;AAG1E,QAAA,IAAA,CAAA,UAAU,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAEtF,QAAA,IAAA,CAAA,sBAAsB,GAAsB,IAAI,YAAY,EAAO,CAAC;AACpE,QAAA,IAAA,CAAA,uBAAuB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAE/E,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;AAUT,QAAA,IAAI,CAAA,IAAA,GAA0B,EAAE,CAAC;AACzC,QAAA,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;QAEpB,IAAA,CAAA,cAAc,GAAoC,IAAI,eAAe,CAAiB,EAAE,CAAC,CAAC;AAKlG,QAAA,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;AAEJ,QAAA,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;AAMpC,QAAA,IAAmB,CAAA,mBAAA,GAAQ,IAAI,CAAC;AAEhC,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;AAiB9B,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;KAC3C;IAxFD,IACI,IAAI,CAAC,KAAqB,EAAA;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnB,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;AACD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,IACI,UAAU,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAqCD,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC7C;AAaD,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAiBD,IAAA,8BAA8B,CAC1B,MAAwB,EAAA;QAExB,IAAI,GAAG,GAAG,4BAA4B,CAAC;AAEvC,QAAA,IACI,MAAM,KAAK,gBAAgB,CAAC,IAAI;AAChC,YAAA,MAAM,KAAK,gBAAgB,CAAC,IAAI,EAClC;YACE,GAAG,GAAG,MAAM,CAAC;AAChB,SAAA;AAAM,aAAA,IAAI,MAAM,KAAK,gBAAgB,CAAC,KAAK,EAAE;YAC1C,GAAG,GAAG,OAAO,CAAC;AACjB,SAAA;AAAM,aAAA;YACH,GAAG,GAAG,QAAQ,CAAC;AAClB,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED,IAAA,4BAA4B,CACxB,MAAwB,EAAA;QAExB,IAAI,GAAG,GAAG,0BAA0B,CAAC;AAErC,QAAA,IACI,MAAM,KAAK,gBAAgB,CAAC,IAAI;AAChC,YAAA,MAAM,KAAK,gBAAgB,CAAC,GAAG,EACjC;YACE,GAAG,GAAG,KAAK,CAAC;AACf,SAAA;AAAM,aAAA,IAAI,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE;YAC3C,GAAG,GAAG,QAAQ,CAAC;AAClB,SAAA;AAAM,aAAA;YACH,GAAG,GAAG,QAAQ,CAAC;AAClB,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED,IAAA,qBAAqB,CACjB,cAA2C,EAAA;AAE3C,QAAA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;AAC7B,gBAAA,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;AAC5C,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;AAED,IAAA,oBAAoB,CAChB,YAA4B,EAC5B,aAAwC,EACxC,aAAsB,EAAA;QAEtB,MAAM,MAAM,GAAmB,EAAE,CAAC;AAElC,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,YAAA,IAAI,WAAyB,CAAC;AAC9B,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;AAElC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACpD,WAAW,GAAG,IAAI,eAAe,CAAC;oBAC9B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,oBAAA,IAAI,EAAE,MAAM;oBACZ,WAAW;oBACX,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACzD,WAAW,GAAG,IAAI,eAAe,CAAC;oBAC9B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,oBAAA,IAAI,EAAE,MAAM;oBACZ,WAAW;oBACX,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC1D,WAAW,GAAG,IAAI,cAAc,CAAC;oBAC7B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,WAAW;oBACX,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;oBACzD,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5D,WAAW,GAAG,IAAI,eAAe,CAAC;oBAC9B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,oBAAA,IAAI,EAAE,MAAM;oBACZ,WAAW;oBACX,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5D,WAAW,GAAG,IAAI,cAAc,CAAC;oBAC7B,GAAG,EAAE,KAAK,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,WAAW;oBACX,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;oBACzD,QAAQ,EAAE,CAAC,aAAa;AACxB,oBAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa;AAC1C,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc;AACpC,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;oBACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;AACD,oBAAA,KAAK,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACN,aAAA;AAED,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KACtB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CACzD,CAAC;KACL;AAED,IAAA,aAAa,CAAC,cAAsB,EAAA;QAChC,OAAO,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAChD;IAED,0BAA0B,CACtB,YAA4B,EAC5B,aAAkB,EAAA;QAElB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IACI,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAC/C,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM;YAClD,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAC/C,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EACnD;YACE,gBAAgB,GAAG,IAAI,CAAC;AAC3B,SAAA;AAED,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAED,IAAA,wBAAwB,CACpB,YAA4B,EAC5B,SAAc,EACd,aAAsB,EAAA;AAEtB,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE;YAC7B,OAAO;AACV,SAAA;AAED,QAAA,MAAM,WAAW,GACb,YAAY,CAAC,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;AAEtE,QAAA,IAAI,eAAe,GAAG;YAClB,GAAG,EAAE,YAAY,CAAC,OAAO;YACzB,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,WAAW;AACX,YAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,CAAC,aAAa;AACjD,YAAA,QAAQ,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,aAAa;YAC9C,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,eAAe,EAAE,SAAS,CAAC,eAAe;AAC1C,YAAA,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM;AACnC,YAAA,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK;YAClC,UAAU,EAAE,IAAI,CAAC,8BAA8B,CAC3C,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;YACD,UAAU,EAAE,IAAI,CAAC,4BAA4B,CACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CACjC;YACD,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,cAAc,CAAC;AAC7D,YAAA,WAAW,EAAE,SAAS;YACtB,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;YACnD,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;;;;YAI/B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,6BAA6B,EAAE,SAAS,CAAC,6BAA6B;SACzE,CAAC;QAEF,IAAI,SAAS,CAAC,eAAe,EAAE;AAC3B,YAAA,eAAe,mCACR,eAAe,CAAA,EACf,SAAS,CAAC,eAAe,CAC/B,CAAA;AACJ,SAAA;AACD,QAAA,OAAO,eAAe,CAAC;KAC1B;AAED,IAAA,oBAAoB,CAChB,YAA4B,EAC5B,SAAc,EACd,aAAsB,EACtB,SAAc,EACd,gBAAqB,EACrB,eAAoB,EACpB,QAAa,EACb,QAAa,EACb,UAAe,EAAA;AAEf,QAAA,IAAI,WAAyB,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CACzC,YAAY,EACZ,SAAS,EACT,aAAa,CAChB,CAAC;AAEF,QAAA,IAAI,YAAY,CAAC,OAAO,KAAK,YAAY,EAAE;AACvC,YAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,YAAA,WAAW,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA,IACH,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AAChE,YAAA,YAAY,CAAC,SAAS;AACtB,gBAAA,UAAU,CAAC,6BAA6B;YACxC,YAAY,CAAC,OAAO,KAAK,kBAAkB;YAC3C,YAAY,CAAC,OAAO,KAAK,eAAe;YACxC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAC7C;AACE,YAAA,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,YAAY,EAAE;AACjD,gBAAA,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC3B,aAAA;AAAM,iBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO,EAAE;AACnD,gBAAA,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC;AAClC,aAAA;AAAM,iBAAA,IACH,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AAC7D,gBAAA,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU,EAC/C;AACE,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,gBAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,aAAA;iBAAM,IACH,SAAS,CAAC,SAAS;AACnB,gBAAA,UAAU,CAAC,6BAA6B;AACxC,gBAAA,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,aAAa,EAClD;AACE,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,gBAAA,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,aAAA;AAAM,iBAAA,IACH,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,sBAAsB,EAC3D;AACE,gBAAA,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;AAC7B,gBAAA,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,aAAA;AAAM,iBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB,EAAE;AAC/D,gBAAA,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;AAC7B,gBAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,aAAA;AAED,YAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AACtD,YAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;AACvD,SAAA;AAAM,aAAA;;AAEH,YAAA,IACI,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU;AAC7C,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EACvC;AACE,gBAAA,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;AACjD,aAAA;YAED,QAAQ,SAAS,CAAC,SAAS;AACvB,gBAAA,KAAK,UAAU,CAAC,OAAO,EAAE;AACrB,oBAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ;AAC5C,0BAAE,KAAK;0BACL,aAAa,CAAC;AACpB,oBAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAC3C,YAAY,EACZ,SAAS,CAAC,WAAW,EACrB,kBAAkB,CACrB,CAAC;AACF,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;;AAExB,oBAAA,WAAW,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC9C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;oBAC1B,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;wBAC1C,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,wBAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B,wBAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B,wBAAA,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AAEhC,wBAAA,WAAW,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACnD,qBAAA;AAAM,yBAAA;;AAEN,qBAAA;oBACD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,mBAAmB,EAAE;oBACjC,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,oBAAA,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AAChC,oBAAA,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC;AAExC,oBAAA,WAAW,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;oBACnD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,IAAI,EAAE;AAClB,oBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,oBAAA,WAAW,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,YAAY,CAAC;AAC7B,gBAAA,KAAK,UAAU,CAAC,MAAM,EAAE;AACpB,oBAAA,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;AACxB,oBAAA,WAAW,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;;AAExB,oBAAA,WAAW,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC9C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,SAAS,EAAE;;AAEvB,oBAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,KAAK,CAAC;AACtB,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;;AAEtB,oBAAA,OAAO,CAAC,SAAS;wBACb,SAAS;AACL,4BAAA,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,SAAS,CAAC;AACxD,8BAAE,SAAS;8BACT,IAAI,CAAC;AACf,oBAAA,OAAO,CAAC,gBAAgB;wBACpB,gBAAgB;AACZ,4BAAA,IAAI,CAAC,0BAA0B,CAC3B,YAAY,EACZ,gBAAgB,CACnB;AACD,8BAAE,gBAAgB;8BAChB,IAAI,CAAC;AACf,oBAAA,OAAO,CAAC,eAAe;wBACnB,eAAe;AACX,4BAAA,IAAI,CAAC,0BAA0B,CAC3B,YAAY,EACZ,eAAe,CAClB;AACD,8BAAE,eAAe;8BACf,IAAI,CAAC;AAEf,oBAAA,WAAW,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;oBACzC,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,MAAM,EAAE;;AAEpB,oBAAA,WAAW,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,KAAK,EAAE;AACnB,oBAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AACvB,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,KAAK,EAAE;AACnB,oBAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AACvB,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,oBAAoB,CAAC;gBACrC,KAAK,UAAU,CAAC,UAAU,CAAC;gBAC3B,KAAK,UAAU,CAAC,gBAAgB,CAAC;AACjC,gBAAA,KAAK,UAAU,CAAC,aAAa,EAAE;AAC3B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,oBAAA,WAAW,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM;AACT,iBAAA;AAED,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;AAC1B,oBAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;oBACpD,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,IAAI,CAAC;gBACrB,KAAK,UAAU,CAAC,WAAW,CAAC;gBAC5B,KAAK,UAAU,CAAC,cAAc,CAAC;AAC/B,gBAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AACzB,oBAAA,OAAO,CAAC,IAAI;AACR,wBAAA,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC,WAAW;AAC1C,8BAAE,UAAU;8BACV,MAAM,CAAC;AACjB,oBAAA,WAAW,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,aAAa,CAAC;gBAC9B,KAAK,UAAU,CAAC,aAAa,CAAC;AAC9B,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;AACxB,oBAAA,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;AACrB,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,UAAU,EAAE;AACxB,oBAAA,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;AAC5B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,UAAU,CAAC;gBAC3B,KAAK,UAAU,CAAC,cAAc,CAAC;gBAC/B,KAAK,UAAU,CAAC,WAAW,CAAC;gBAC5B,KAAK,UAAU,CAAC,GAAG,CAAC;AACpB,gBAAA,KAAK,UAAU,CAAC,MAAM,EAAE;AACpB,oBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,oBAAA,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC3C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,OAAO,CAAC;AACxB,gBAAA,KAAK,UAAU,CAAC,cAAc,EAAE;AAC5B,oBAAA,WAAW,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AACzB,oBAAA,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;AAC7B,oBAAA,WAAW,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,QAAQ,CAAC;gBACzB,KAAK,UAAU,CAAC,aAAa,CAAC;AAC9B,gBAAA,KAAK,UAAU,CAAC,eAAe,EAAE;;AAE7B,oBAAA,WAAW,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;gBACD,KAAK,UAAU,CAAC,YAAY,CAAC;gBAC7B,KAAK,UAAU,CAAC,sBAAsB,CAAC;AACvC,gBAAA,KAAK,UAAU,CAAC,iBAAiB,EAAE;AAC/B,oBAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AACvB,oBAAA,WAAW,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,iBAAiB,EAAE;AAC/B,oBAAA,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;AAC3B,oBAAA,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;AAC5D,oBAAA,OAAO,CAAC,sBAAsB;wBAC1B,SAAS,CAAC,sBAAsB,CAAC;AACrC,oBAAA,OAAO,CAAC,2BAA2B;wBAC/B,SAAS,CAAC,2BAA2B,CAAC;AAC1C,oBAAA,WAAW,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,aAAa,EAAE;AAC3B,oBAAA,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC;AAC/B,oBAAA,WAAW,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,SAAS,EAAE;AACvB,oBAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM;AACT,iBAAA;AACD;;AAEE;gBACF,KAAK,UAAU,CAAC,0BAA0B,CAAC;AAC3C,gBAAA,KAAK,UAAU,CAAC,6BAA6B,EAAE;AAC3C,oBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,oBAAA,OAAO,CAAC,YAAY;AAChB,wBAAA,SAAS,CAAC,SAAS;4BACnB,UAAU,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAEtD,oBAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;oBACpD,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,OAAO,EAAE;AACrB,oBAAA,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC;AAC/B,oBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAEtD,oBAAA,WAAW,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;oBACpD,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,GAAG,sBAAsB,CAAC;AAC9D,YAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACtB;AAED,IAAA,sBAAsB,CAAC,KAAmB,EAAA;QACtC,IAAI,mBAAmB,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC;;AAG9D,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;AAClC,YAAA,mBAAmB,GAAG,mBAAmB,KAAK,MAAM,CAAC;AACxD,SAAA;;AAGD,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE;YAChC,mBAAmB;gBACf,mBAAmB,KAAK,GAAG,GAAG,EAAE,GAAG,mBAAmB,CAAC;AAC9D,SAAA;;QAGD,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;YAClE,IAAG,mBAAmB,KAAK,EAAE;AACzB,gBAAA,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AAC5C,gBAAA,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9C,gBAAA,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AAC5C,gBAAA,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAChD;gBACE,mBAAmB,GAAG,EAAE,CAAC;AAC5B,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAEO,IAAA,cAAc,CAAC,MAAsB,EAAA;QACzC,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACrB,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnD,MAAM,QAAQ,GAAG,EAAE,CAAC;oBAEpB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;wBACrC,IACI,UAAU,CAAC,SAAS;4BACpB,CAAC,KAAK,CAAC,QAAQ;4BACf,CAAC,KAAK,CAAC,QAAQ,EACjB;AACE,4BAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;AACvB,gCAAA;AACI,oCAAA,KAAK,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE;oCACtC,QAAQ,EACJ,KAAK,CAAC,QAAQ;AACd,wCAAA,KAAK,CAAC,QAAQ;AACd,wCAAA,UAAU,CAAC,QAAQ;AAC1B,iCAAA;gCACD,CAAC,UAAU,CAAC,QAAQ,CAAC;6BACxB,CAAC;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;AACvB,gCAAA;AACI,oCAAA,KAAK,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE;oCACtC,QAAQ,EACJ,KAAK,CAAC,QAAQ;AACd,wCAAA,KAAK,CAAC,QAAQ;AACd,wCAAA,UAAU,CAAC,QAAQ;AAC1B,iCAAA;gCACD,CAAC,UAAU,CAAC,aAAa,CAAC;6BAC7B,CAAC;AACL,yBAAA;AACL,qBAAC,CAAC,CAAC;AAEH,oBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9C,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;oBACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACnD,KAAK,CACR,CAAC;AAEF,oBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACf,wBAAA;4BACI,KAAK,EAAE,mBAAmB,IAAI,EAAE;4BAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAC3B,yBAAA;wBACD,UAAU;qBACb,CAAC;AACL,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC/B;IAEO,eAAe,CAAC,cAA8B,EAAE,SAAc,EAAA;AAClE,QAAA,MAAM,WAAW,GAAiB,IAAI,CAAC,oBAAoB,CACvD,cAAc,EACd,SAAS,EACT,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,CAClB,CAAC;AAEF,QAAA,OAAO,WAAW,CAAC;KACtB;IAEM,yBAAyB,GAAA;AAC5B,QAAA,MAAM,MAAM,GAAmB,IAAI,CAAC,MAAM,CAAC;QAC3C,IAAI,uBAAuB,GAAG,EAAE,CAAC;QACjC,IAAI,iBAAiB,GAAG,EAAE,CAAC;;;AAI3B,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE1D,YAAA,IAAI,WAAW,EAAE;;gBAEb,IACI,KAAK,CAAC,SAAS;AACf,oBAAA,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAClD;oBACE,uBAAuB;AACnB,wBAAA,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC;AACrD,iBAAA;qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC9C,iBAAiB;AACb,wBAAA,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC;AACrD,iBAAA;AACJ,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,uBAAuB;gBACnB,OAAO;AACP,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iCAAiC,CAAC;oBACzD,qCAAqC;oBACrC,uBAAuB;AACvB,oBAAA,YAAY,CAAC;AACpB,SAAA;;AAGD,QAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,iBAAiB;gBACb,OAAO;AACP,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC;oBACvD,qCAAqC;oBACrC,iBAAiB;AACjB,oBAAA,OAAO,CAAC;AACf,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC9D,QAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;YAC3B,KAAK;YACL,OAAO,EAAE,uBAAuB,GAAG,iBAAiB;AACvD,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC9C;IAED,QAAQ,GAAA;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;;QAEhE,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAC5C,SAAS,EACT,uBAAuB,CAAC,iBAAiB,CAC5C,GAAG,UAAU,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAC5C,SAAS,EACT,uBAAuB,CAAC,iBAAiB,CAC5C,GAAG,UAAU,CAAC;KACtB;IAED,SAAS,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;AACrC,SAAA;KACJ;AAED,IAAA,WAAW,CAAC,OAAO,EAAA;;;;;;;;;;;;;;;;KAgBlB;IAED,WAAW,GAAA;;KAEV;IAED,kBAAkB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;KACvD;IAED,mBAAmB,CAAC,MAAsB,EAAE,MAAc,EAAA;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;;AAGhE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AAC5B,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CACpE,SAAS,EACT,uBAAuB,CAAC,qBAAqB,CAChD,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;AACpC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CACnE,SAAS,EACT,uBAAuB,CAAC,qBAAqB,CAChD,CAAC;AACF,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CACxE,SAAS,EACT,uBAAuB,CAAC,2BAA2B,CACtD,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,mBAAmB,CAAC;AACzD,SAAA;;AAGD,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEnB,YAAA;;AAEI,YAAA,IAAI,CAAC,UAAU,KAAK,OAAO,EAC7B;AACE,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEjC,gBAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9B,oBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrB,iBAAA;;;AAID,gBAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,gBAAgB,GAAgB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAExD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE9C,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACjD,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAClC,qBAAA;AACJ,iBAAA;;;;AAKD,gBAAA,KAAK,MAAM,YAAY,IAAI,MAAM,EAAE;AAC/B,oBAAA,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE;AAC1B,wBAAA,KACI,IAAI,GAAG,GAAW,YAAY,CAAC,GAAG,EAClC,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,EAC7C,GAAG,EAAE,EACP;AACE,4BAAA,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE;AAC1B,gCAAA,KACI,IAAI,GAAG,GAAW,YAAY,CAAC,GAAG,EAClC,GAAG;oCACH,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,EACvC,GAAG,EAAE,EACP;AACE,oCAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,GAAG;AAC7B,wCAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,EAClC;wCACE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AAAM,iCAAA;AACH,gCAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,GAAG;AAC7B,oCAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;wCAC1B,YAAY,CAAC,GAAG,EAClB;oCACE,gBAAgB,CAAC,GAAG,CAAC,CACjB,YAAY,CAAC,GAAG,CACnB,GAAG,IAAI,CAAC;AACZ,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE;AACjC,wBAAA,KACI,IAAI,GAAG,GAAW,YAAY,CAAC,GAAG,EAClC,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,EAC7C,GAAG,EAAE,EACP;AACE,4BAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG;AAC1C,gCAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,EAClC;gCACE,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAClD,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,IACI,gBAAgB,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG;4BAC1C,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,EAC/C;AACE,4BAAA,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAC9B,YAAY,CAAC,GAAG,CACnB,GAAG,IAAI,CAAC;AACZ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;AAGD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACjD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;;AAEzB,4BAAA,MAAM,CAAC,IAAI,CACP,IAAI,mBAAmB,CAAC;AACpB,gCAAA,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;AAChB,gCAAA,KAAK,EAAE,EAAE;AACT,gCAAA,WAAW,EAAE,EAAE;AACf,gCAAA,QAAQ,EAAE,KAAK;AACf,gCAAA,QAAQ,EAAE,KAAK;AACf,gCAAA,MAAM,EAAE,KAAK;AACb,gCAAA,SAAS,EAAE,KAAK;AAChB,gCAAA,KAAK,EAAE,EAAE;AACT,gCAAA,cAAc,EAAE,EAAE;AAClB,gCAAA,GAAG,EAAE,CAAC;AACN,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,GAAG,EAAE,CAAC;AACN,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,KAAK,EAAE,CAAC;AACX,6BAAA,CAAC,CACL,CAAC;AACL,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;gBAGD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAC7B,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACX,sBAAE,CAAC;AACH,sBAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;0BACX,CAAC,CAAC;AACJ,0BAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACb,8BAAE,CAAC;AACH,8BAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;kCACX,CAAC,CAAC;kCACF,CAAC,CACtB,CAAC;AACF,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;KACJ;IAED,OAAO,CAAC,WAAW,GAAG,KAAK,EAAA;;QACvB,IAAI,oBAAoB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,YAAA,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,gBAAA,IAAI,YAAY,CAAC,WAAW,KAAK,cAAc,EAAE;AAC7C,oBAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7B,iBAAA;AAED,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;oBACxB,oBAAoB,GAAG,KAAK,CAAC;AAChC,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAA;AAAM,aAAA;;AAEH,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAElC,gBAAA,IAAI,YAAY,CAAC,WAAW,KAAK,iBAAiB,EAAE;;oBAEhD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC/E,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;oBAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AAC/C,iBAAA;AAAM,qBAAA,IAAI,YAAY,CAAC,WAAW,KAAK,cAAc,EAAE;oBACpD,IACI,YAAY,CAAC,WAAW;AACxB,wBAAA,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EACrC;;;AAGE,wBAAA,KAAK,MAAM,iBAAiB,IAAI,YAAY,CAAC,WAAW,EAAE;4BACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACnD,iBAAiB,CACpB,CAAC;AACF,4BAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CACrC,IAAI,CAAC,IAAI,EACT,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,CACf,CAAC;AACL,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACnD,YAAY,CACf,CAAC;;AAEF,wBAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CACrC,IAAI,CAAC,IAAI,EACT,YAAY,EACZ,mBAAmB,CACtB,CAAC;AACL,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;oBACxB,oBAAoB,GAAG,KAAK,CAAC;AAChC,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;;AAGnC,QAAA,IAAI,CAAC,WAAW,IAAI,oBAAoB,EAAE;YACtC,WAAW,GAAG,IAAI,CAAC;AACtB,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;;AAG1C,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,SAAA;KACJ;IAED,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAmB,IAAI,CAAC,mBAAmB,CACnD,IAAI,CAAC,kBAAkB,EAAE,EACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CACnB,CAAC;AAEF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAChB,gBAAA,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;aAC5B,CAAC,CACL,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAChB,gBAAA,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;aAC5B,CAAC,CACL,CAAC;AAEF,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;AAClB,SAAA;KACJ;IAEO,WAAW,CACf,WAAyB,EACzB,YAAgC,EAAA;AAEhC,QAAA,MAAM,OAAO,GAAQ;YACjB,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;YACtD,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;YACtD,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,eAAe,EAAE,YAAY,CAAC,eAAe;YAC7C,cAAc,EAAE,YAAY,CAAC,cAAc;YAC3C,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,6BAA6B,EAAE,YAAY,CAAC,6BAA6B;SAC5E,CAAC;QAEF,IAAI,WAAW,YAAY,wBAAwB,EAAE;AACjD,YAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;AACvD,YAAA,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;;YAG5C,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AAChE,gBAAA,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU;AAChD,gBAAA,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB,EAC3D;gBACE,YAAY,GAAG,IAAI,CAAC;AACvB,aAAA;AAED,YAAA,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;AAEvC,SAAA;aAAM,IAAI,WAAW,YAAY,cAAc,EAAE;YAC9C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB,CACxC,YAAY,CAAC,cAAc,CAC9B,CAAC;AAEF,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjB,GAAG,EAAE,OAAO,CAAC,KAAK;oBAClB,KAAK,EAAE,OAAO,CAAC,cAAc;AAChC,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;aAAM,IAAI,WAAW,YAAY,uBAAuB,EAAE;AACvD,YAAA,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC;AAC9C,SAAA;AAED,QAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAClC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,OAAO,CACxC,CAAC,CAAC,CAAC,CAAC;;AAEL,gBAAA,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,KAAK,cAAc,EAAE;AAC3D,oBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;AAG5C,oBAAA,IACI,WAAW,CAAC,WAAW,KAAK,SAAS;wBACrC,YAAY,CAAC,WAAW,EAC1B;;;AAGE,wBAAA,KAAK,MAAM,iBAAiB,IAAI,YAAY,CAAC,WAAW,EAAE;AACtD,4BAAA,iBAAiB,CAAC,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO;AAC7C,kCAAE,KAAK;AACP,kCAAE,iBAAiB,CAAC,OAAO,CAAC;4BAEhC,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CACnD,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,iBAAiB,CAAC,OAAO,CAC7C,CAAC,CAAC,CAAC,CAAC;AACL,4BAAA,IAAI,CAAC,WAAW,CACZ,gBAAgB,EAChB,iBAAiB,CACpB,CAAC;AACL,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,SAAA;KACJ;IAEM,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC;;;;;;;AASO,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAClC,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACnB,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,OAAO;AACV,aAAA;iBAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACrC,oBAAA,IAAI,UAAU,CAAC,GAAG,KAAK,GAAG,EAAE;AACxB,wBAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACvB,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,CACnC,CAAC;wBACF,OAAO;AACV,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,WAAW,CAAC;KACtB;IAEO,gBAAgB,CACpB,aAAyB,EACzB,UAAsB,EAAA;;;;AAKtB,QAAA,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;AAC5B,YAAA,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,EAAE;AAC7B,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,uBAAuB,EAAE;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC9B,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,+BAA+B,EAAE;AACvD,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;;;;AAKD,QAAA,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;AACzB,YAAA,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,EAAE;AAC7B,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC3B,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,uBAAuB,EAAE;AAC/C,gBAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAClC,aAAA;AAAM,iBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,+BAA+B,EAAE;AACvD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AACjC,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACpD,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACnE,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAClD,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACjE,SAAA;;;;AAKD,QAAA,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;YAC5B,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,KAAK,YAAY,EAAE;AAC/C,gBAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,0BAA0B,CAC9D,EAAE,EACF,IAAI,CAAC,SAAS,CACjB,CAAC;gBAEF,IAAI,IAAI,CAAC,2BAA2B,EAAE;oBAClC,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAED,mBAAmB,CACf,aAAyB,EACzB,UAAsB,EAAA;AAEtB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;;YAEH,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACnC,gBAAA,IACI,KAAK,CAAC,OAAO,KAAK,eAAe;oBACjC,KAAK,CAAC,OAAO,KAAK,kBAAkB;oBACpC,KAAK,CAAC,OAAO,KAAK,YAAY;AAC9B,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,KAAK;AACpC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,QAAQ;AACvC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,UAAU;AACzC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO;AACtC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,cAAc;AAC7C,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS;AACxC,oBAAA,KAAK,CAAC,SAAS;AACf,wBAAA,UAAU,CAAC,6BAA6B;AACxC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,0BAA0B;AACzD,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO;AACtC,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,sBAAsB;AACrD,oBAAA,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB,EACpD;oBACE,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACrD,iBAAA;AAAM,qBAAA;;;AAGN,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;QAED,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YACnC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAC/B,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CACvC,CAAC,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,SAAS,EAAE;gBACZ,OAAO;AACV,aAAA;;AAGD,YAAA,IACI,IAAI,CAAC,UAAU,KAAK,OAAO;iBAC1B,CAAC,IAAI,CAAC,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;qBACvC,IAAI,CAAC,eAAe;wBACjB,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;qBAClD,IAAI,CAAC,gBAAgB;wBAClB,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,EAC3D;gBACE,OAAO;AACV,aAAA;;AAGD,YAAA,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACtC,gBAAA,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;;AAEjD,aAAA;AAED,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;AAChC,gBAAA,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;;;AAG5B,aAAA;YACD,MAAM,WAAW,GAAiB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzE,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KACtB,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACX,cAAE,CAAC;AACH,cAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;kBACX,CAAC,CAAC;AACJ,kBAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACb,sBAAE,CAAC;AACH,sBAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;0BACX,CAAC,CAAC;0BACF,CAAC,CACtB,CAAC;KACL;AAEO,IAAA,uBAAuB,CAAC,oBAAyB,EAAA;AACrD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;KACxD;AAED,IAAA,cAAc,CAAC,KAAgC,EAAA;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEvD,QAAA,MAAM,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;;AAGvD,QAAA,IAAI,OAAO,EAAE;;YAET,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AAC/C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,aAAA;;YAGD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;AAClE,YAAA,IAAI,YAAY,EAAE;gBACd,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAClE,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;AACjC,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,eAAoC,EAAA;QACxC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CACjD,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC,GAAG,CAC3C,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAE/D,QAAA,IAAI,qBAAqB,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1B,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,MAAM;gBACN,KAAK,EAAE,eAAe,CAAC,UAAU;gBACjC,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,SAAS,EAAE,qBAAqB,CAAC,SAAS;gBAC1C,SAAS,EAAE,eAAe,CAAC,SAAS;AACvC,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1B,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,MAAM;gBACN,KAAK,EAAE,eAAe,CAAC,UAAU;gBACjC,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,SAAS,EAAE,eAAe,CAAC,SAAS;AACvC,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;;AAGD,IAAA,0BAA0B,CAAC,sBAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAC5D;;AAGD,IAAA,0BAA0B,CAAC,uBAA4B,EAAA;AACnD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;KAC9D;;AAGD,IAAA,kBAAkB,CAAC,KAAoC,EAAA;;KAEtD;;AAGD,IAAA,gBAAgB,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;;6GAn9CQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,oqBCzE7B,g5RAsIc,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAF,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,KAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD7DD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,g5RAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA;6QAGtC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAIF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAiBF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAGP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,MAAM;gBAGG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;;;AE3EX,MAAM,oBAAoB,GAAG;IACzB,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,aAAa;IACb,cAAc;IACd,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,eAAe;IACf,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,aAAa;CAChB,CAAC;MAoDW,aAAa,CAAA;AACtB,IAAA,WAAA,CAAoB,eAAgC,EAAA;AAAhC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YAC/B,iBAAiB;YACjB,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;YAChB,8BAA8B;AACjC,SAAA,CAAC,CAAC;KACN;;0GATQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAflB,gBAAgB;QAChB,wBAAwB;QACxB,0BAA0B;QAC1B,kCAAkC;QAClC,sBAAsB;QACtB,0BAA0B;QAC1B,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;AACxB,QAAA,2BAA2B,aA9B3B,YAAY;QACZ,mBAAmB;;QAEnB,eAAe;QACf,kBAAkB;QAClB,eAAe;QACf,iBAAiB;QACjB,aAAa;QACb,aAAa;;QAEb,kBAAkB;;QAElB,eAAe;QACf,eAAe;AACf,QAAA,aAAa,EA/CjB,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,iBAAiB;QACjB,iBAAiB;QACjB,aAAa;QACb,cAAc;QACd,wBAAwB;QACxB,yBAAyB;QACzB,yBAAyB;QACzB,eAAe;QACf,oBAAoB;QACpB,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB;QACjB,gBAAgB;AAChB,QAAA,aAAa,EAiCT,mBAAmB;QACnB,qBAAqB,aAEf,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAiBjB,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAJX,SAAA,EAAA;QACP,WAAW;KACd,EAAA,OAAA,EAAA,CAlCG,YAAY;QACZ,mBAAmB;;QAEnB,eAAe;QACf,kBAAkB;QAClB,eAAe;QACf,iBAAiB;QACjB,aAAa;QACb,aAAa;;QAEb,kBAAkB;;QAElB,eAAe;QACf,eAAe;QACf,aAAa;QACb,oBAAoB;QACpB,mBAAmB;QACnB,qBAAqB,CAAA,EAAA,CAAA,CAAA;2FAmBhB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAtCzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;;wBAEnB,eAAe;wBACf,kBAAkB;wBAClB,eAAe;wBACf,iBAAiB;wBACjB,aAAa;wBACb,aAAa;;wBAEb,kBAAkB;;wBAElB,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,oBAAoB;wBACpB,mBAAmB;wBACnB,qBAAqB;AACxB,qBAAA;oBACD,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,YAAY,EAAE;wBACV,gBAAgB;wBAChB,wBAAwB;wBACxB,0BAA0B;wBAC1B,kCAAkC;wBAClC,sBAAsB;wBACtB,0BAA0B;wBAC1B,wBAAwB;wBACxB,wBAAwB;wBACxB,wBAAwB;wBACxB,2BAA2B;AAC9B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,WAAW;AACd,qBAAA;iBACJ,CAAA;;;ACnHD;;AAEG;;ACFH;;AAEG;;;;"}