{"version":3,"file":"primeng-slider.mjs","sources":["../../src/slider/style/sliderstyle.ts","../../src/slider/slider.ts","../../src/slider/primeng-slider.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-slider {\n    position: relative;\n    background: ${dt('slider.track.background')};\n    border-radius: ${dt('slider.border.radius')};\n}\n\n.p-slider-handle {\n    cursor: grab;\n    touch-action: none;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    height: ${dt('slider.handle.height')};\n    width: ${dt('slider.handle.width')};\n    background: ${dt('slider.handle.background')};\n    border-radius: ${dt('slider.handle.border.radius')};\n    transition: background ${dt('slider.transition.duration')}, color ${dt('slider.transition.duration')}, border-color ${dt('slider.transition.duration')}, box-shadow ${dt('slider.transition.duration')}, outline-color ${dt(\n        'slider.transition.duration'\n    )};\n    outline-color: transparent;\n}\n\n.p-slider-handle::before {\n    content: \"\";\n    width: ${dt('slider.handle.content.width')};\n    height: ${dt('slider.handle.content.height')};\n    display: block;\n    background: ${dt('slider.handle.content.background')};\n    border-radius: ${dt('slider.handle.content.border.radius')};\n    box-shadow: ${dt('slider.handle.content.shadow')};\n    transition: background ${dt('slider.transition.duration')};\n}\n\n.p-slider:not(.p-disabled) .p-slider-handle:hover {\n    background: ${dt('slider.handle.hover.background')};\n}\n\n.p-slider:not(.p-disabled) .p-slider-handle:hover::before {\n    background: ${dt('slider.handle.content.hover.background')};\n}\n\n.p-slider-handle:focus-visible {\n    border-color: ${dt('slider.handle.focus.border.color')};\n    box-shadow: ${dt('slider.handle.focus.ring.shadow')};\n    outline: ${dt('slider.handle.focus.ring.width')} ${dt('slider.handle.focus.ring.style')} ${dt('slider.handle.focus.ring.color')};\n    outline-offset: ${dt('slider.handle.focus.ring.offset')};\n}\n\n.p-slider-range {\n    display: block;\n    background: ${dt('slider.range.background')};\n    border-radius: ${dt('slider.border.radius')};\n}\n\n.p-slider.p-slider-horizontal {\n    height: ${dt('slider.track.size')};\n}\n\n.p-slider-horizontal .p-slider-range {\n    top: 0;\n    inset-inline-start: 0;\n    height: 100%;\n}\n\n.p-slider-horizontal .p-slider-handle {\n    top: 50%;\n    margin-top: calc(-1 * calc(${dt('slider.handle.height')} / 2));\n    margin-inline-start: calc(-1 * calc(${dt('slider.handle.width')} / 2));\n}\n\n.p-slider-vertical {\n    min-height: 100px;\n    width: ${dt('slider.track.size')};\n}\n\n.p-slider-vertical .p-slider-handle {\n    inset-inline-start: 50%;\n    margin-inline-start: calc(-1 * calc(${dt('slider.handle.width')} / 2));\n    margin-bottom: calc(-1 * calc(${dt('slider.handle.height')} / 2));\n}\n\n.p-slider-vertical .p-slider-range {\n    bottom: 0;\n    inset-inline-start: 0;\n    width: 100%;\n}\n`;\n\nconst inlineStyles = {\n    handle: { position: 'absolute' },\n    range: { position: 'absolute' }\n};\n\nconst classes = {\n    root: ({ props }) => [\n        'p-slider p-component',\n        {\n            'p-disabled': props.disabled,\n            'p-slider-horizontal': props.orientation === 'horizontal',\n            'p-slider-vertical': props.orientation === 'vertical'\n        }\n    ],\n    range: 'p-slider-range',\n    handle: 'p-slider-handle'\n};\n\n@Injectable()\nexport class SliderStyle extends BaseStyle {\n    name = 'slider';\n\n    theme = theme;\n\n    classes = classes;\n\n    inlineStyles = inlineStyles;\n}\n\n/**\n *\n * Slider is a component to provide input with a drag handle.\n *\n * [Live Demo](https://www.primeng.org/slider/)\n *\n * @module sliderstyle\n *\n */\nexport enum SliderClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-slider',\n    /**\n     * Class name of the range element\n     */\n    range = 'p-slider-range',\n    /**\n     * Class name of the handle element\n     */\n    handle = 'p-slider-handle'\n}\n\nexport interface SliderStyle extends BaseStyle {}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, inject, Input, NgModule, NgZone, numberAttribute, OnDestroy, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { addClass, getWindowScrollLeft, getWindowScrollTop, isRTL, removeClass } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport { SliderChangeEvent, SliderSlideEndEvent } from './slider.interface';\nimport { SliderStyle } from './style/sliderstyle';\n\nexport const SLIDER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Slider),\n    multi: true\n};\n/**\n * Slider is a component to provide input with a drag handle.\n * @group Components\n */\n@Component({\n    selector: 'p-slider',\n    standalone: true,\n    imports: [CommonModule, AutoFocus, SharedModule],\n    template: `\n        <div\n            [ngStyle]=\"style\"\n            [class]=\"styleClass\"\n            [ngClass]=\"{\n                'p-slider p-component': true,\n                'p-disabled': disabled,\n                'p-slider-horizontal': orientation == 'horizontal',\n                'p-slider-vertical': orientation == 'vertical',\n                'p-slider-animate': animate\n            }\"\n            (click)=\"onBarClick($event)\"\n            [attr.data-pc-name]=\"'slider'\"\n            [attr.data-pc-section]=\"'root'\"\n        >\n            <span\n                *ngIf=\"range && orientation == 'horizontal'\"\n                class=\"p-slider-range\"\n                [ngStyle]=\"{\n                    position: 'absolute',\n                    'inset-inline-start': offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%',\n                    width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%'\n                }\"\n                [attr.data-pc-section]=\"'range'\"\n            ></span>\n            <span\n                *ngIf=\"range && orientation == 'vertical'\"\n                class=\"p-slider-range\"\n                [ngStyle]=\"{\n                    position: 'absolute',\n                    bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%',\n                    height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%'\n                }\"\n                [attr.data-pc-section]=\"'range'\"\n            ></span>\n            <span *ngIf=\"!range && orientation == 'vertical'\" class=\"p-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ position: 'absolute', height: handleValue + '%' }\"></span>\n            <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"p-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ position: 'absolute', width: handleValue + '%' }\"></span>\n            <span\n                *ngIf=\"!range\"\n                #sliderHandle\n                class=\"p-slider-handle\"\n                [style.transition]=\"dragging ? 'none' : null\"\n                [ngStyle]=\"{\n                    position: 'absolute',\n                    'inset-inline-start': orientation == 'horizontal' ? handleValue + '%' : null,\n                    bottom: orientation == 'vertical' ? handleValue + '%' : null\n                }\"\n                (touchstart)=\"onDragStart($event)\"\n                (touchmove)=\"onDrag($event)\"\n                (touchend)=\"onDragEnd($event)\"\n                (mousedown)=\"onMouseDown($event)\"\n                (keydown)=\"onKeyDown($event)\"\n                [attr.tabindex]=\"disabled ? null : tabindex\"\n                role=\"slider\"\n                [attr.aria-valuemin]=\"min\"\n                [attr.aria-valuenow]=\"value\"\n                [attr.aria-valuemax]=\"max\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-orientation]=\"orientation\"\n                [attr.data-pc-section]=\"'handle'\"\n                [pAutoFocus]=\"autofocus\"\n            ></span>\n            <span\n                *ngIf=\"range\"\n                #sliderHandleStart\n                [style.transition]=\"dragging ? 'none' : null\"\n                class=\"p-slider-handle\"\n                [ngStyle]=\"{ position: 'absolute', 'inset-inline-start': rangeStartLeft, bottom: rangeStartBottom }\"\n                [ngClass]=\"{ 'p-slider-handle-active': handleIndex == 0 }\"\n                (keydown)=\"onKeyDown($event, 0)\"\n                (mousedown)=\"onMouseDown($event, 0)\"\n                (touchstart)=\"onDragStart($event, 0)\"\n                (touchmove)=\"onDrag($event)\"\n                (touchend)=\"onDragEnd($event)\"\n                [attr.tabindex]=\"disabled ? null : tabindex\"\n                role=\"slider\"\n                [attr.aria-valuemin]=\"min\"\n                [attr.aria-valuenow]=\"value ? value[0] : null\"\n                [attr.aria-valuemax]=\"max\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-orientation]=\"orientation\"\n                [attr.data-pc-section]=\"'startHandler'\"\n                [pAutoFocus]=\"autofocus\"\n            ></span>\n            <span\n                *ngIf=\"range\"\n                #sliderHandleEnd\n                [style.transition]=\"dragging ? 'none' : null\"\n                class=\"p-slider-handle\"\n                [ngStyle]=\"{ position: 'absolute', 'inset-inline-start': rangeEndLeft, bottom: rangeEndBottom }\"\n                [ngClass]=\"{ 'p-slider-handle-active': handleIndex == 1 }\"\n                (keydown)=\"onKeyDown($event, 1)\"\n                (mousedown)=\"onMouseDown($event, 1)\"\n                (touchstart)=\"onDragStart($event, 1)\"\n                (touchmove)=\"onDrag($event)\"\n                (touchend)=\"onDragEnd($event)\"\n                [attr.tabindex]=\"disabled ? null : tabindex\"\n                role=\"slider\"\n                [attr.aria-valuemin]=\"min\"\n                [attr.aria-valuenow]=\"value ? value[1] : null\"\n                [attr.aria-valuemax]=\"max\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-orientation]=\"orientation\"\n                [attr.data-pc-section]=\"'endHandler'\"\n            ></span>\n        </div>\n    `,\n    providers: [SLIDER_VALUE_ACCESSOR, SliderStyle],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class Slider extends BaseComponent implements OnDestroy, ControlValueAccessor {\n    /**\n     * When enabled, displays an animation on click of the slider bar.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) animate: boolean | undefined;\n    /**\n     * When present, it specifies that the element should be disabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n    /**\n     * Mininum boundary value.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) min: number = 0;\n    /**\n     * Maximum boundary value.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) max: number = 100;\n    /**\n     * Orientation of the slider.\n     * @group Props\n     */\n    @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n    /**\n     * Step factor to increment/decrement the value.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) step: number | undefined;\n    /**\n     * When specified, allows two boundary values to be picked.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) range: boolean | undefined;\n    /**\n     * Inline style of the component.\n     * @group Props\n     */\n    @Input() style: { [klass: string]: any } | null | undefined;\n    /**\n     * Style class of the component.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    @Input() ariaLabel: string | undefined;\n    /**\n     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n     * @group Props\n     */\n    @Input() ariaLabelledBy: string | undefined;\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) tabindex: number = 0;\n    /**\n     * When present, it specifies that the component should automatically get focus on load.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autofocus: boolean | undefined;\n    /**\n     * Callback to invoke on value change.\n     * @param {SliderChangeEvent} event - Custom value change event.\n     * @group Emits\n     */\n    @Output() onChange: EventEmitter<SliderChangeEvent> = new EventEmitter<SliderChangeEvent>();\n    /**\n     * Callback to invoke when slide ended.\n     * @param {SliderSlideEndEvent} event - Custom slide end event.\n     * @group Emits\n     */\n    @Output() onSlideEnd: EventEmitter<SliderSlideEndEvent> = new EventEmitter<SliderSlideEndEvent>();\n\n    @ViewChild('sliderHandle') sliderHandle: Nullable<ElementRef>;\n\n    @ViewChild('sliderHandleStart') sliderHandleStart: Nullable<ElementRef>;\n\n    @ViewChild('sliderHandleEnd') sliderHandleEnd: Nullable<ElementRef>;\n\n    _componentStyle = inject(SliderStyle);\n\n    public value: Nullable<number>;\n\n    public values: Nullable<number[]>;\n\n    public handleValue: Nullable<number>;\n\n    public handleValues: number[] = [];\n\n    diff: Nullable<number>;\n\n    offset: Nullable<number>;\n\n    bottom: Nullable<number>;\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    public dragging: Nullable<boolean>;\n\n    public dragListener: VoidListener;\n\n    public mouseupListener: VoidListener;\n\n    public initX: Nullable<number>;\n\n    public initY: Nullable<number>;\n\n    public barWidth: Nullable<number>;\n\n    public barHeight: Nullable<number>;\n\n    public sliderHandleClick: Nullable<boolean>;\n\n    public handleIndex: number = 0;\n\n    public startHandleValue: any;\n\n    public startx: Nullable<number>;\n\n    public starty: Nullable<number>;\n\n    private ngZone = inject(NgZone);\n\n    onMouseDown(event: Event, index?: number) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.dragging = true;\n        this.updateDomData();\n        this.sliderHandleClick = true;\n        if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n            this.handleIndex = 0;\n        } else {\n            (this.handleIndex as any) = index;\n        }\n\n        this.bindDragListeners();\n        (event.target as HTMLInputElement).focus();\n        event.preventDefault();\n\n        if (this.animate) {\n            removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n    }\n\n    onDragStart(event: TouchEvent, index?: number) {\n        if (this.disabled) {\n            return;\n        }\n\n        var touchobj = event.changedTouches[0];\n        this.startHandleValue = this.range ? this.handleValues[index as number] : this.handleValue;\n        this.dragging = true;\n        if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n            this.handleIndex = 0;\n        } else {\n            this.handleIndex = index as number;\n        }\n\n        if (this.orientation === 'horizontal') {\n            this.startx = parseInt((touchobj as any).clientX, 10);\n            this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n        } else {\n            this.starty = parseInt((touchobj as any).clientY, 10);\n            this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n        }\n\n        if (this.animate) {\n            removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n\n        event.preventDefault();\n    }\n\n    onDrag(event: TouchEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        var touchobj = event.changedTouches[0],\n            handleValue = 0;\n\n        if (this.orientation === 'horizontal') {\n            handleValue = Math.floor(((parseInt((touchobj as any).clientX, 10) - (this.startx as number)) * 100) / (this.barWidth as number)) + this.startHandleValue;\n        } else {\n            handleValue = Math.floor((((this.starty as number) - parseInt((touchobj as any).clientY, 10)) * 100) / (this.barHeight as number)) + this.startHandleValue;\n        }\n\n        this.setValueFromHandle(event, handleValue);\n\n        event.preventDefault();\n    }\n\n    onDragEnd(event: TouchEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.dragging = false;\n\n        if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n        else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n\n        if (this.animate) {\n            addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n\n        event.preventDefault();\n    }\n\n    onBarClick(event: Event) {\n        if (this.disabled) {\n            return;\n        }\n\n        if (!this.sliderHandleClick) {\n            this.updateDomData();\n            this.handleChange(event);\n\n            if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n            else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n        }\n\n        this.sliderHandleClick = false;\n    }\n\n    onKeyDown(event: any, index?) {\n        this.handleIndex = index;\n\n        switch (event.code) {\n            case 'ArrowDown':\n            case 'ArrowLeft':\n                this.decrementValue(event, index);\n                event.preventDefault();\n                break;\n\n            case 'ArrowUp':\n            case 'ArrowRight':\n                this.incrementValue(event, index);\n                event.preventDefault();\n                break;\n\n            case 'PageDown':\n                this.decrementValue(event, index, true);\n                event.preventDefault();\n                break;\n\n            case 'PageUp':\n                this.incrementValue(event, index, true);\n                event.preventDefault();\n                break;\n\n            case 'Home':\n                this.updateValue(this.min, event);\n                event.preventDefault();\n                break;\n\n            case 'End':\n                this.updateValue(this.max, event);\n                event.preventDefault();\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    decrementValue(event, index, pageKey = false) {\n        let newValue;\n\n        if (this.range) {\n            if (this.step) newValue = this.values[index] - this.step;\n            else newValue = this.values[index] - 1;\n        } else {\n            if (this.step) newValue = this.value - this.step;\n            else if (!this.step && pageKey) newValue = this.value - 10;\n            else newValue = this.value - 1;\n        }\n\n        this.updateValue(newValue, event);\n        event.preventDefault();\n    }\n\n    incrementValue(event, index, pageKey = false) {\n        let newValue;\n\n        if (this.range) {\n            if (this.step) newValue = this.values[index] + this.step;\n            else newValue = this.values[index] + 1;\n        } else {\n            if (this.step) newValue = this.value + this.step;\n            else if (!this.step && pageKey) newValue = this.value + 10;\n            else newValue = this.value + 1;\n        }\n\n        this.updateValue(newValue, event);\n        event.preventDefault();\n    }\n\n    handleChange(event: Event) {\n        let handleValue = this.calculateHandleValue(event);\n        this.setValueFromHandle(event, handleValue);\n    }\n\n    bindDragListeners() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.ngZone.runOutsideAngular(() => {\n                const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : this.document;\n\n                if (!this.dragListener) {\n                    this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n                        if (this.dragging) {\n                            this.ngZone.run(() => {\n                                this.handleChange(event);\n                            });\n                        }\n                    });\n                }\n\n                if (!this.mouseupListener) {\n                    this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {\n                        if (this.dragging) {\n                            this.dragging = false;\n                            this.ngZone.run(() => {\n                                if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n                                else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n\n                                if (this.animate) {\n                                    addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n                                }\n                            });\n                        }\n                    });\n                }\n            });\n        }\n    }\n\n    unbindDragListeners() {\n        if (this.dragListener) {\n            this.dragListener();\n            this.dragListener = null;\n        }\n\n        if (this.mouseupListener) {\n            this.mouseupListener();\n            this.mouseupListener = null;\n        }\n    }\n\n    setValueFromHandle(event: Event, handleValue: any) {\n        let newValue = this.getValueFromHandle(handleValue);\n\n        if (this.range) {\n            if (this.step) {\n                this.handleStepChange(newValue, (this.values as any)[this.handleIndex]);\n            } else {\n                this.handleValues[this.handleIndex] = handleValue;\n                this.updateValue(newValue, event);\n            }\n        } else {\n            if (this.step) {\n                this.handleStepChange(newValue, this.value as any);\n            } else {\n                this.handleValue = handleValue;\n                this.updateValue(newValue, event);\n            }\n        }\n\n        this.cd.markForCheck();\n    }\n\n    handleStepChange(newValue: number, oldValue: number) {\n        let diff = newValue - oldValue;\n        let val = oldValue;\n        let _step = this.step as number;\n\n        if (diff < 0) {\n            val = oldValue + Math.ceil(newValue / _step - oldValue / _step) * _step;\n        } else if (diff > 0) {\n            val = oldValue + Math.floor(newValue / _step - oldValue / _step) * _step;\n        }\n\n        this.updateValue(val);\n        this.updateHandleValue();\n    }\n\n    writeValue(value: any): void {\n        if (this.range) this.values = value || [0, 0];\n        else this.value = value || 0;\n\n        this.updateHandleValue();\n        this.updateDiffAndOffset();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    get rangeStartLeft() {\n        if (!this.isVertical()) return this.handleValues[0] > 100 ? 100 + '%' : this.handleValues[0] + '%';\n        return null;\n    }\n\n    get rangeStartBottom() {\n        return this.isVertical() ? this.handleValues[0] + '%' : 'auto';\n    }\n\n    get rangeEndLeft() {\n        return this.isVertical() ? null : this.handleValues[1] + '%';\n    }\n\n    get rangeEndBottom() {\n        return this.isVertical() ? this.handleValues[1] + '%' : 'auto';\n    }\n\n    isVertical(): boolean {\n        return this.orientation === 'vertical';\n    }\n\n    updateDomData(): void {\n        let rect = this.el.nativeElement.children[0].getBoundingClientRect();\n        this.initX = rect.left + getWindowScrollLeft();\n        this.initY = rect.top + getWindowScrollTop();\n        this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n        this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n    }\n\n    calculateHandleValue(event: Event): number {\n        if (this.orientation === 'horizontal') {\n            if (isRTL(this.el.nativeElement)) {\n                return (((this.initX as number) + (this.barWidth as number) - (event as MouseEvent).pageX) * 100) / (this.barWidth as number);\n            } else {\n                return (((event as MouseEvent).pageX - (this.initX as number)) * 100) / (this.barWidth as number);\n            }\n        } else {\n            return (((this.initY as number) + (this.barHeight as number) - (event as MouseEvent).pageY) * 100) / (this.barHeight as number);\n        }\n    }\n\n    updateHandleValue(): void {\n        if (this.range) {\n            this.handleValues[0] = (((this.values as number[])[0] < this.min ? 0 : (this.values as number[])[0] - this.min) * 100) / (this.max - this.min);\n            this.handleValues[1] = (((this.values as number[])[1] > this.max ? 100 : (this.values as number[])[1] - this.min) * 100) / (this.max - this.min);\n        } else {\n            if ((this.value as number) < this.min) this.handleValue = 0;\n            else if ((this.value as number) > this.max) this.handleValue = 100;\n            else this.handleValue = (((this.value as number) - this.min) * 100) / (this.max - this.min);\n        }\n\n        if (this.step) {\n            this.updateDiffAndOffset();\n        }\n    }\n\n    updateDiffAndOffset(): void {\n        this.diff = this.getDiff();\n        this.offset = this.getOffset();\n    }\n\n    getDiff(): number {\n        return Math.abs(this.handleValues[0] - this.handleValues[1]);\n    }\n\n    getOffset(): number {\n        return Math.min(this.handleValues[0], this.handleValues[1]);\n    }\n\n    updateValue(val: number, event?: Event): void {\n        if (this.range) {\n            let value = val;\n\n            if (this.handleIndex == 0) {\n                if (value < this.min) {\n                    value = this.min;\n                    this.handleValues[0] = 0;\n                } else if (value > (this.values as number[])[1]) {\n                    if (value > this.max) {\n                        value = this.max;\n                        this.handleValues[0] = 100;\n                    }\n                }\n                this.sliderHandleStart?.nativeElement.focus();\n            } else {\n                if (value > this.max) {\n                    value = this.max;\n                    this.handleValues[1] = 100;\n                    this.offset = this.handleValues[1];\n                } else if (value < this.min) {\n                    value = this.min;\n                    this.handleValues[1] = 0;\n                } else if (value < (this.values as number[])[0]) {\n                    this.offset = this.handleValues[1];\n                }\n                this.sliderHandleEnd?.nativeElement.focus();\n            }\n\n            if (this.step) {\n                this.updateHandleValue();\n            } else {\n                this.updateDiffAndOffset();\n            }\n\n            (this.values as number[])[this.handleIndex] = this.getNormalizedValue(value);\n            let newValues = [this.minVal, this.maxVal];\n            this.onModelChange(newValues);\n            this.onChange.emit({ event: event as Event, values: this.values as number[] });\n        } else {\n            if (val < this.min) {\n                val = this.min;\n                this.handleValue = 0;\n            } else if (val > this.max) {\n                val = this.max;\n                this.handleValue = 100;\n            }\n\n            this.value = this.getNormalizedValue(val);\n\n            this.onModelChange(this.value);\n            this.onChange.emit({ event: event as Event, value: this.value });\n            this.sliderHandle?.nativeElement.focus();\n        }\n        this.updateHandleValue();\n    }\n\n    getValueFromHandle(handleValue: number): number {\n        return (this.max - this.min) * (handleValue / 100) + this.min;\n    }\n\n    getDecimalsCount(value: number): number {\n        if (value && Math.floor(value) !== value) return value.toString().split('.')[1].length || 0;\n        return 0;\n    }\n\n    getNormalizedValue(val: number): number {\n        let decimalsCount = this.getDecimalsCount(this.step as number);\n        if (decimalsCount > 0) {\n            return +parseFloat(val.toString()).toFixed(decimalsCount);\n        } else {\n            return Math.floor(val);\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDragListeners();\n        super.ngOnDestroy();\n    }\n\n    get minVal() {\n        return Math.min((this.values as number[])[1], (this.values as number[])[0]);\n    }\n    get maxVal() {\n        return Math.max((this.values as number[])[1], (this.values as number[])[0]);\n    }\n}\n\n@NgModule({\n    imports: [Slider, SharedModule],\n    exports: [Slider, SharedModule]\n})\nexport class SliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;AAGA,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK;;;kBAGR,EAAE,CAAC,yBAAyB,CAAC,CAAA;qBAC1B,EAAE,CAAC,sBAAsB,CAAC,CAAA;;;;;;;;;cASjC,EAAE,CAAC,sBAAsB,CAAC,CAAA;aAC3B,EAAE,CAAC,qBAAqB,CAAC,CAAA;kBACpB,EAAE,CAAC,0BAA0B,CAAC,CAAA;qBAC3B,EAAE,CAAC,6BAA6B,CAAC,CAAA;6BACzB,EAAE,CAAC,4BAA4B,CAAC,CAAA,QAAA,EAAW,EAAE,CAAC,4BAA4B,CAAC,CAAA,eAAA,EAAkB,EAAE,CAAC,4BAA4B,CAAC,CAAA,aAAA,EAAgB,EAAE,CAAC,4BAA4B,CAAC,CAAmB,gBAAA,EAAA,EAAE,CACvN,4BAA4B,CAC/B,CAAA;;;;;;aAMQ,EAAE,CAAC,6BAA6B,CAAC,CAAA;cAChC,EAAE,CAAC,8BAA8B,CAAC,CAAA;;kBAE9B,EAAE,CAAC,kCAAkC,CAAC,CAAA;qBACnC,EAAE,CAAC,qCAAqC,CAAC,CAAA;kBAC5C,EAAE,CAAC,8BAA8B,CAAC,CAAA;6BACvB,EAAE,CAAC,4BAA4B,CAAC,CAAA;;;;kBAI3C,EAAE,CAAC,gCAAgC,CAAC,CAAA;;;;kBAIpC,EAAE,CAAC,wCAAwC,CAAC,CAAA;;;;oBAI1C,EAAE,CAAC,kCAAkC,CAAC,CAAA;kBACxC,EAAE,CAAC,iCAAiC,CAAC,CAAA;AACxC,aAAA,EAAA,EAAE,CAAC,gCAAgC,CAAC,CAAA,CAAA,EAAI,EAAE,CAAC,gCAAgC,CAAC,CAAI,CAAA,EAAA,EAAE,CAAC,gCAAgC,CAAC,CAAA;sBAC7G,EAAE,CAAC,iCAAiC,CAAC,CAAA;;;;;kBAKzC,EAAE,CAAC,yBAAyB,CAAC,CAAA;qBAC1B,EAAE,CAAC,sBAAsB,CAAC,CAAA;;;;cAIjC,EAAE,CAAC,mBAAmB,CAAC,CAAA;;;;;;;;;;;iCAWJ,EAAE,CAAC,sBAAsB,CAAC,CAAA;0CACjB,EAAE,CAAC,qBAAqB,CAAC,CAAA;;;;;aAKtD,EAAE,CAAC,mBAAmB,CAAC,CAAA;;;;;0CAKM,EAAE,CAAC,qBAAqB,CAAC,CAAA;oCAC/B,EAAE,CAAC,sBAAsB,CAAC,CAAA;;;;;;;;CAQ7D;AAED,MAAM,YAAY,GAAG;AACjB,IAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;AAChC,IAAA,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU;CAChC;AAED,MAAM,OAAO,GAAG;AACZ,IAAA,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK;QACjB,sBAAsB;AACtB,QAAA;YACI,YAAY,EAAE,KAAK,CAAC,QAAQ;AAC5B,YAAA,qBAAqB,EAAE,KAAK,CAAC,WAAW,KAAK,YAAY;AACzD,YAAA,mBAAmB,EAAE,KAAK,CAAC,WAAW,KAAK;AAC9C;AACJ,KAAA;AACD,IAAA,KAAK,EAAE,gBAAgB;AACvB,IAAA,MAAM,EAAE;CACX;AAGK,MAAO,WAAY,SAAQ,SAAS,CAAA;IACtC,IAAI,GAAG,QAAQ;IAEf,KAAK,GAAG,KAAK;IAEb,OAAO,GAAG,OAAO;IAEjB,YAAY,GAAG,YAAY;AAPlB,IAAA,OAAA,IAAA,iBAAA,CAAA,MAAA,EAAA,IAAA,wBAAA,CAAA,CAAA,OAAA,SAAA,mBAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,CAAA,wBAAA,KAAA,wBAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,WAAW,yBAAX,WAAW,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA;AAAX,IAAA,OAAA,KAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,WAAW,WAAX,WAAW,CAAA,IAAA,EAAA,CAAA;;iFAAX,WAAW,EAAA,CAAA;cADvB;;AAWD;;;;;;;;AAQG;IACS;AAAZ,CAAA,UAAY,aAAa,EAAA;AACrB;;AAEG;AACH,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,UAAiB;AACjB;;AAEG;AACH,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,gBAAwB;AACxB;;AAEG;AACH,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,iBAA0B;AAC9B,CAAC,EAbW,aAAa,KAAb,aAAa,GAaxB,EAAA,CAAA,CAAA;;;;;;;;;;;;;ICxGW,EASQ,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;;IANJ,EAIE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,MAAA,KAAA,IAAA,IAAA,MAAA,CAAA,MAAA,KAAA,SAAA,GAAA,MAAA,CAAA,MAAA,GAAA,GAAA,GAAA,MAAA,CAAA,YAAA,CAAA,CAAA,CAAA,GAAA,GAAA,EAAA,MAAA,CAAA,IAAA,GAAA,MAAA,CAAA,IAAA,GAAA,GAAA,GAAA,MAAA,CAAA,YAAA,CAAA,CAAA,CAAA,GAAA,MAAA,CAAA,YAAA,CAAA,CAAA,CAAA,GAAA,GAAA,CAAA,CAAA;;;;IAGN,EASQ,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;;IANJ,EAIE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,MAAA,KAAA,IAAA,IAAA,MAAA,CAAA,MAAA,KAAA,SAAA,GAAA,MAAA,CAAA,MAAA,GAAA,GAAA,GAAA,MAAA,CAAA,YAAA,CAAA,CAAA,CAAA,GAAA,GAAA,EAAA,MAAA,CAAA,IAAA,GAAA,MAAA,CAAA,IAAA,GAAA,GAAA,GAAA,MAAA,CAAA,YAAA,CAAA,CAAA,CAAA,GAAA,MAAA,CAAA,YAAA,CAAA,CAAA,CAAA,GAAA,GAAA,CAAA,CAAA;;;;IAGN,EAAiL,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;;IAAvE,EAA+D,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,WAAA,GAAA,GAAA,CAAA,CAAA;;;;IACzK,EAAkL,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;;IAAtE,EAA8D,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,WAAA,GAAA,GAAA,CAAA,CAAA;;;;;IAC1K,EAyBC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AAXG,IAJA,EAAc,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,iDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,WAAA,CAAA,MAAA,CAAmB,KAAC,CACrB,WAAA,EAAA,SAAA,gDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAc,CAAC,CAAA,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,+CAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAChB,wBAAiB,CAAC,CAAA,EAAA,CAAA,CAAA,WAAA,EAAA,SAAA,gDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACjB,0BAAmB,CAAC,CAAA,EAAA,CAAA,CAAA,SAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACtB,wBAAiB,CAAC,CAAA,EAAA,CAAA;IAWhC,EAAO,CAAA,YAAA,EAAA;;;IArBJ,EAA6C,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,QAAA,GAAA,MAAA,GAAA,IAAA,CAAA;AAoB7C,IAnBA,+LAIE,CAesB,YAAA,EAAA,MAAA,CAAA,SAAA,CAAA;;;;;IAE5B,EAsBC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAbG,EAFA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAW,yBAAkB,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA,WAAA,EAAA,SAAA,gDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACnB,MAAoB,CAAA,WAAA,CAAA,MAAA,EAAA,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,iDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACtB,MAAoB,CAAA,WAAA,CAAA,MAAA,EAAA,CAAC,CAAC,CAAA,CAAA,EAAA,CAAC,kKACxB,MAAc,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAC,CAChB,UAAA,EAAA,SAAA,+CAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,SAAA,CAAA,MAAA,CAAiB,CAAC,CAAA,EAAA,CAAA;IAWjC,EAAO,CAAA,YAAA,EAAA;;;IAnBJ,EAA6C,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,QAAA,GAAA,MAAA,GAAA,IAAA,CAAA;IAE7C,EAAoG,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,MAAA,CAAA,cAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,MAAA,CAAA,WAAA,IAAA,CAAA,CAAA,CAC1C,CAelC,YAAA,EAAA,MAAA,CAAA,SAAA,CAAA;;;;;IAE5B,EAqBC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAZG,EAFA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAW,yBAAkB,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA,WAAA,EAAA,SAAA,gDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACnB,MAAoB,CAAA,WAAA,CAAA,MAAA,EAAA,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,iDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACtB,MAAoB,CAAA,WAAA,CAAA,MAAA,EAAA,CAAC,CAAC,CAAA,CAAA,EAAA,CAAC,kKACxB,MAAc,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAC,CAChB,UAAA,EAAA,SAAA,+CAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,SAAA,CAAA,MAAA,CAAiB,CAAC,CAAA,EAAA,CAAA;IAUjC,EAAO,CAAA,YAAA,EAAA;;;IAlBJ,EAA6C,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,QAAA,GAAA,MAAA,GAAA,IAAA,CAAA;AAG7C,IADA,iGAAgG,CACtC,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,MAAA,CAAA,WAAA,IAAA,CAAA,CAAA,CAAA;;;AAzG7D,MAAA,qBAAqB,GAAQ;AACtC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC;AACrC,IAAA,KAAK,EAAE;;AAEX;;;AAGG;AAuHG,MAAO,MAAO,SAAQ,aAAa,CAAA;AACrC;;;AAGG;AACqC,IAAA,OAAO;AAC/C;;;AAGG;AACqC,IAAA,QAAQ;AAChD;;;AAGG;IACoC,GAAG,GAAW,CAAC;AACtD;;;AAGG;IACoC,GAAG,GAAW,GAAG;AACxD;;;AAGG;IACM,WAAW,GAA8B,YAAY;AAC9D;;;AAGG;AACoC,IAAA,IAAI;AAC3C;;;AAGG;AACqC,IAAA,KAAK;AAC7C;;;AAGG;AACM,IAAA,KAAK;AACd;;;AAGG;AACM,IAAA,UAAU;AACnB;;;AAGG;AACM,IAAA,SAAS;AAClB;;;AAGG;AACM,IAAA,cAAc;AACvB;;;AAGG;IACoC,QAAQ,GAAW,CAAC;AAC3D;;;AAGG;AACqC,IAAA,SAAS;AACjD;;;;AAIG;AACO,IAAA,QAAQ,GAAoC,IAAI,YAAY,EAAqB;AAC3F;;;;AAIG;AACO,IAAA,UAAU,GAAsC,IAAI,YAAY,EAAuB;AAEtE,IAAA,YAAY;AAEP,IAAA,iBAAiB;AAEnB,IAAA,eAAe;AAE7C,IAAA,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC;AAE9B,IAAA,KAAK;AAEL,IAAA,MAAM;AAEN,IAAA,WAAW;IAEX,YAAY,GAAa,EAAE;AAElC,IAAA,IAAI;AAEJ,IAAA,MAAM;AAEN,IAAA,MAAM;AAEC,IAAA,aAAa,GAAa,MAAK,GAAG;AAElC,IAAA,cAAc,GAAa,MAAK,GAAG;AAEnC,IAAA,QAAQ;AAER,IAAA,YAAY;AAEZ,IAAA,eAAe;AAEf,IAAA,KAAK;AAEL,IAAA,KAAK;AAEL,IAAA,QAAQ;AAER,IAAA,SAAS;AAET,IAAA,iBAAiB;IAEjB,WAAW,GAAW,CAAC;AAEvB,IAAA,gBAAgB;AAEhB,IAAA,MAAM;AAEN,IAAA,MAAM;AAEL,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,WAAW,CAAC,KAAY,EAAE,KAAc,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;AAGJ,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AACtE,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;;aACjB;AACF,YAAA,IAAI,CAAC,WAAmB,GAAG,KAAK;;QAGrC,IAAI,CAAC,iBAAiB,EAAE;AACvB,QAAA,KAAK,CAAC,MAA2B,CAAC,KAAK,EAAE;QAC1C,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;;;IAI1E,WAAW,CAAC,KAAiB,EAAE,KAAc,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;QAGJ,IAAI,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAe,CAAC,GAAG,IAAI,CAAC,WAAW;AAC1F,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AACtE,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;;aACjB;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,KAAe;;AAGtC,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;YACnC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAE,QAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW;;aAC1D;YACH,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAE,QAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY;;AAGnE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;;QAGtE,KAAK,CAAC,cAAc,EAAE;;AAG1B,IAAA,MAAM,CAAC,KAAiB,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;AAGJ,QAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAClC,WAAW,GAAG,CAAC;AAEnB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;AACnC,YAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAE,QAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,GAAI,IAAI,CAAC,MAAiB,IAAI,GAAG,IAAK,IAAI,CAAC,QAAmB,CAAC,GAAG,IAAI,CAAC,gBAAgB;;aACtJ;AACH,YAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,MAAiB,GAAG,QAAQ,CAAE,QAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,IAAK,IAAI,CAAC,SAAoB,CAAC,GAAG,IAAI,CAAC,gBAAgB;;AAG9J,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC;QAE3C,KAAK,CAAC,cAAc,EAAE;;AAG1B,IAAA,SAAS,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;AAGJ,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QAErB,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAkB,EAAE,CAAC;;AAC1F,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAe,EAAE,CAAC;AAEhF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;;QAGnE,KAAK,CAAC,cAAc,EAAE;;AAG1B,IAAA,UAAU,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;AAGJ,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAExB,IAAI,IAAI,CAAC,KAAK;AAAE,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAkB,EAAE,CAAC;;AAC1F,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAe,EAAE,CAAC;;AAGpF,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;;IAGlC,SAAS,CAAC,KAAU,EAAE,KAAM,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AAExB,QAAA,QAAQ,KAAK,CAAC,IAAI;AACd,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC;gBACjC,KAAK,CAAC,cAAc,EAAE;gBACtB;AAEJ,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,YAAY;AACb,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC;gBACjC,KAAK,CAAC,cAAc,EAAE;gBACtB;AAEJ,YAAA,KAAK,UAAU;gBACX,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;gBACvC,KAAK,CAAC,cAAc,EAAE;gBACtB;AAEJ,YAAA,KAAK,QAAQ;gBACT,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;gBACvC,KAAK,CAAC,cAAc,EAAE;gBACtB;AAEJ,YAAA,KAAK,MAAM;gBACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBACjC,KAAK,CAAC,cAAc,EAAE;gBACtB;AAEJ,YAAA,KAAK,KAAK;gBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBACjC,KAAK,CAAC,cAAc,EAAE;gBACtB;AAEJ,YAAA;gBACI;;;AAIZ,IAAA,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAA;AACxC,QAAA,IAAI,QAAQ;AAEZ,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI;;gBACnD,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;;aACnC;YACH,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;AAC3C,iBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO;AAAE,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;;AACrD,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;;AAGlC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;QACjC,KAAK,CAAC,cAAc,EAAE;;AAG1B,IAAA,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAA;AACxC,QAAA,IAAI,QAAQ;AAEZ,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI;;gBACnD,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;;aACnC;YACH,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;AAC3C,iBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO;AAAE,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;;AACrD,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;;AAGlC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;QACjC,KAAK,CAAC,cAAc,EAAE;;AAG1B,IAAA,YAAY,CAAC,KAAY,EAAA;QACrB,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClD,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC;;IAG/C,iBAAiB,GAAA;AACb,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBAC/B,MAAM,cAAc,GAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;AAEzF,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC,KAAK,KAAI;AAC5E,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,4BAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACjB,gCAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5B,6BAAC,CAAC;;AAEV,qBAAC,CAAC;;AAGN,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,KAAK,KAAI;AAC7E,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,4BAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,4BAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gCACjB,IAAI,IAAI,CAAC,KAAK;AAAE,oCAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAkB,EAAE,CAAC;;AAC1F,oCAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAe,EAAE,CAAC;AAEhF,gCAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,oCAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;;AAEvE,6BAAC,CAAC;;AAEV,qBAAC,CAAC;;AAEV,aAAC,CAAC;;;IAIV,mBAAmB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAG5B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;;IAInC,kBAAkB,CAAC,KAAY,EAAE,WAAgB,EAAA;QAC7C,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAG,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;iBACpE;gBACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW;AACjD,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;;;aAElC;AACH,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAY,CAAC;;iBAC/C;AACH,gBAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;;;AAIzC,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;IAG1B,gBAAgB,CAAC,QAAgB,EAAE,QAAgB,EAAA;AAC/C,QAAA,IAAI,IAAI,GAAG,QAAQ,GAAG,QAAQ;QAC9B,IAAI,GAAG,GAAG,QAAQ;AAClB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAc;AAE/B,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACV,YAAA,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,KAAK;;AACpE,aAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACjB,YAAA,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,KAAK;;AAG5E,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE;;AAG5B,IAAA,UAAU,CAAC,KAAU,EAAA;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;;AACxC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC;QAE5B,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAG1B,IAAA,gBAAgB,CAAC,EAAY,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;;AAG3B,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;;AAG5B,IAAA,gBAAgB,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAG1B,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;AAClG,QAAA,OAAO,IAAI;;AAGf,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM;;AAGlE,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;;AAGhE,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM;;IAGlE,UAAU,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;;IAG1C,aAAa,GAAA;AACT,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE;QACpE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,mBAAmB,EAAE;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,kBAAkB,EAAE;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW;AAC7D,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY;;AAGnE,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;YACnC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE;gBAC9B,OAAO,CAAC,CAAE,IAAI,CAAC,KAAgB,GAAI,IAAI,CAAC,QAAmB,GAAI,KAAoB,CAAC,KAAK,IAAI,GAAG,IAAK,IAAI,CAAC,QAAmB;;iBAC1H;AACH,gBAAA,OAAO,CAAC,CAAE,KAAoB,CAAC,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,GAAG,IAAK,IAAI,CAAC,QAAmB;;;aAElG;YACH,OAAO,CAAC,CAAE,IAAI,CAAC,KAAgB,GAAI,IAAI,CAAC,SAAoB,GAAI,KAAoB,CAAC,KAAK,IAAI,GAAG,IAAK,IAAI,CAAC,SAAoB;;;IAIvI,iBAAiB,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAI,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAC9I,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAI,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;aAC7I;AACH,YAAA,IAAK,IAAI,CAAC,KAAgB,GAAG,IAAI,CAAC,GAAG;AAAE,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACtD,iBAAA,IAAK,IAAI,CAAC,KAAgB,GAAG,IAAI,CAAC,GAAG;AAAE,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG;;gBAC7D,IAAI,CAAC,WAAW,GAAG,CAAC,CAAE,IAAI,CAAC,KAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;AAG/F,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,mBAAmB,EAAE;;;IAIlC,mBAAmB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;;IAGlC,OAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;IAGhE,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;IAG/D,WAAW,CAAC,GAAW,EAAE,KAAa,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,KAAK,GAAG,GAAG;AAEf,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE;AACvB,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAClB,oBAAA,KAAK,GAAG,IAAI,CAAC,GAAG;AAChB,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;;qBACrB,IAAI,KAAK,GAAI,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,oBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAClB,wBAAA,KAAK,GAAG,IAAI,CAAC,GAAG;AAChB,wBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;;;AAGlC,gBAAA,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,KAAK,EAAE;;iBAC1C;AACH,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAClB,oBAAA,KAAK,GAAG,IAAI,CAAC,GAAG;AAChB,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;oBAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;;AAC/B,qBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AACzB,oBAAA,KAAK,GAAG,IAAI,CAAC,GAAG;AAChB,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;;qBACrB,IAAI,KAAK,GAAI,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,EAAE;oBAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;;AAEtC,gBAAA,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,KAAK,EAAE;;AAG/C,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,iBAAiB,EAAE;;iBACrB;gBACH,IAAI,CAAC,mBAAmB,EAAE;;AAG7B,YAAA,IAAI,CAAC,MAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC5E,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAkB,EAAE,CAAC;;aAC3E;AACH,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAChB,gBAAA,GAAG,GAAG,IAAI,CAAC,GAAG;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC;;AACjB,iBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACvB,gBAAA,GAAG,GAAG,IAAI,CAAC,GAAG;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG;;YAG1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAEzC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE;;QAE5C,IAAI,CAAC,iBAAiB,EAAE;;AAG5B,IAAA,kBAAkB,CAAC,WAAmB,EAAA;AAClC,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,WAAW,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;;AAGjE,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC1B,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK;AAAE,YAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;AAC3F,QAAA,OAAO,CAAC;;AAGZ,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAC1B,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAc,CAAC;AAC9D,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACnB,YAAA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;;aACtD;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;;IAI9B,WAAW,GAAA;QACP,IAAI,CAAC,mBAAmB,EAAE;QAC1B,KAAK,CAAC,WAAW,EAAE;;AAGvB,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,EAAG,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,CAAC;;AAE/E,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,EAAG,IAAI,CAAC,MAAmB,CAAC,CAAC,CAAC,CAAC;;AA3jBtE,IAAA,OAAA,IAAA,iBAAA,CAAA,MAAA,EAAA,IAAA,mBAAA,CAAA,CAAA,OAAA,SAAA,cAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,CAAA,mBAAA,KAAA,mBAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,MAAM,yBAAN,MAAM,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA;6DAAN,MAAM,EAAA,SAAA,EAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,YAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;AAKK,SAAA,EAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAgB,yCAKhB,gBAAgB,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,KAAA,EAAA,KAAA,EAKhB,eAAe,CAKf,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,KAAA,EAAA,KAAA,EAAA,eAAe,yDAUf,eAAe,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAKf,gBAAgB,CAyBhB,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAe,4CAKf,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CArEzB,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YA7G3C,EAaC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA;AAHG,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oCAAA,CAAA,MAAA,EAAA,EAAA,OAAS,sBAAkB,CAAC,EAAA,CAAA;YAI5B,EASC,CAAA,UAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAUA,CACyK,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACC,CA0B1K,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAuBA,CAsBA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA;YACL,EAAM,CAAA,YAAA,EAAA;;YAzGF,EAAoB,CAAA,UAAA,CAAA,GAAA,CAAA,UAAA,CAAA;AACpB,YAFA,mCAAiB,CAQf,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,QAAA,EAAA,GAAA,CAAA,WAAA,IAAA,YAAA,EAAA,GAAA,CAAA,WAAA,IAAA,UAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;YAMG,EAA0C,CAAA,SAAA,EAAA;YAA1C,EAA0C,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,IAAA,GAAA,CAAA,WAAA,IAAA,YAAA,CAAA;YAU1C,EAAwC,CAAA,SAAA,EAAA;YAAxC,EAAwC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,IAAA,GAAA,CAAA,WAAA,IAAA,UAAA,CAAA;YAStC,EAAyC,CAAA,SAAA,EAAA;YAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,KAAA,IAAA,GAAA,CAAA,WAAA,IAAA,UAAA,CAAA;YACzC,EAA2C,CAAA,SAAA,EAAA;YAA3C,EAA2C,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,KAAA,IAAA,GAAA,CAAA,WAAA,IAAA,YAAA,CAAA;YAE7C,EAAY,CAAA,SAAA,EAAA;YAAZ,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,KAAA,CAAA;YA0BZ,EAAW,CAAA,SAAA,EAAA;YAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA;YAuBX,EAAW,CAAA,SAAA,EAAA;YAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA;4BAxFd,YAAY,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAE,SAAS,EAAE,YAAY,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;iFAmHtC,MAAM,EAAA,CAAA;cAtHlB,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC;AAChD,gBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6GT,IAAA,CAAA;AACD,gBAAA,SAAS,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC;gBAC/C,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,aAAa,EAAE,iBAAiB,CAAC;AACpC,aAAA;gBAM2C,OAAO,EAAA,CAAA;kBAA9C,KAAK;mBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;YAKE,QAAQ,EAAA,CAAA;kBAA/C,KAAK;mBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;YAKC,GAAG,EAAA,CAAA;kBAAzC,KAAK;mBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;YAKE,GAAG,EAAA,CAAA;kBAAzC,KAAK;mBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;YAK5B,WAAW,EAAA,CAAA;kBAAnB;YAKsC,IAAI,EAAA,CAAA;kBAA1C,KAAK;mBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;YAKG,KAAK,EAAA,CAAA;kBAA5C,KAAK;mBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;YAK7B,KAAK,EAAA,CAAA;kBAAb;YAKQ,UAAU,EAAA,CAAA;kBAAlB;YAKQ,SAAS,EAAA,CAAA;kBAAjB;YAKQ,cAAc,EAAA,CAAA;kBAAtB;YAKsC,QAAQ,EAAA,CAAA;kBAA9C,KAAK;mBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;YAKG,SAAS,EAAA,CAAA;kBAAhD,KAAK;mBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;YAM5B,QAAQ,EAAA,CAAA;kBAAjB;YAMS,UAAU,EAAA,CAAA;kBAAnB;YAE0B,YAAY,EAAA,CAAA;kBAAtC,SAAS;mBAAC,cAAc;YAEO,iBAAiB,EAAA,CAAA;kBAAhD,SAAS;mBAAC,mBAAmB;YAEA,eAAe,EAAA,CAAA;kBAA5C,SAAS;mBAAC,iBAAiB;;kFAnFnB,MAAM,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,GAAA;MAmkBN,YAAY,CAAA;sGAAZ,YAAY,GAAA,CAAA,EAAA;4DAAZ,YAAY,EAAA,CAAA;gEAHX,MAAM,EAAE,YAAY,EACZ,YAAY,CAAA,EAAA,CAAA;;iFAErB,YAAY,EAAA,CAAA;cAJxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;AAC/B,gBAAA,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY;AACjC,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,YAAY,cAnkBZ,MAAM,EAgkBG,YAAY,CAhkBrB,EAAA,OAAA,EAAA,CAAA,MAAM,EAikBG,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AC3sBlC;;AAEG;;;;"}