{"version":3,"file":"ReactSlider.mjs","sources":["../../../../../src/components/ReactSlider/ReactSlider.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * To prevent text selection while dragging.\n * http://stackoverflow.com/questions/5429827/how-can-i-prevent-text-element-selection-with-cursor-drag\n */\nfunction pauseEvent(e) {\n    if (e && e.stopPropagation) {\n        e.stopPropagation();\n    }\n    if (e && e.preventDefault) {\n        e.preventDefault();\n    }\n    return false;\n}\n\nfunction stopPropagation(e) {\n    if (e.stopPropagation) {\n        e.stopPropagation();\n    }\n}\n\nfunction sanitizeInValue(x) {\n    if (x == null) {\n        return [];\n    }\n    return Array.isArray(x) ? x.slice() : [x];\n}\n\nfunction prepareOutValue(x) {\n    return x !== null && x.length === 1 ? x[0] : x.slice();\n}\n\nfunction trimSucceeding(length, nextValue, minDistance, max) {\n    for (let i = 0; i < length; i += 1) {\n        const padding = max - i * minDistance;\n        if (nextValue[length - 1 - i] > padding) {\n            // eslint-disable-next-line no-param-reassign\n            nextValue[length - 1 - i] = padding;\n        }\n    }\n}\n\nfunction trimPreceding(length, nextValue, minDistance, min) {\n    for (let i = 0; i < length; i += 1) {\n        const padding = min + i * minDistance;\n        if (nextValue[i] < padding) {\n            // eslint-disable-next-line no-param-reassign\n            nextValue[i] = padding;\n        }\n    }\n}\n\nfunction addHandlers(eventMap) {\n    Object.keys(eventMap).forEach(key => {\n        if (typeof document !== 'undefined') {\n            document.addEventListener(key, eventMap[key], false);\n        }\n    });\n}\n\nfunction removeHandlers(eventMap) {\n    Object.keys(eventMap).forEach(key => {\n        if (typeof document !== 'undefined') {\n            document.removeEventListener(key, eventMap[key], false);\n        }\n    });\n}\n\nfunction trimAlignValue(val, props) {\n    return alignValue(trimValue(val, props), props);\n}\n\nfunction alignValue(val, props) {\n    const valModStep = (val - props.min) % props.step;\n    let alignedValue = val - valModStep;\n\n    if (Math.abs(valModStep) * 2 >= props.step) {\n        alignedValue += valModStep > 0 ? props.step : -props.step;\n    }\n\n    return parseFloat(alignedValue.toFixed(5));\n}\n\nfunction trimValue(val, props) {\n    let trimmed = val;\n    if (trimmed <= props.min) {\n        trimmed = props.min;\n    }\n    if (trimmed >= props.max) {\n        trimmed = props.max;\n    }\n\n    return trimmed;\n}\n\nclass ReactSlider extends React.Component {\n    static displayName = 'ReactSlider';\n\n    static propTypes = {\n        /**\n         * The minimum value of the slider.\n         */\n        min: PropTypes.number,\n\n        /**\n         * The maximum value of the slider.\n         */\n        max: PropTypes.number,\n\n        /**\n         * Value to be added or subtracted on each step the slider makes.\n         * Must be greater than zero.\n         * `max - min` should be evenly divisible by the step value.\n         */\n        step: PropTypes.number,\n\n        /**\n         * The result of the function is the value to be added or subtracted\n         * when the `Page Up` or `Page Down` keys are pressed.\n         *\n         * The current `step` value will be passed as the only argument.\n         * By default, paging will modify `step` by a factor of 10.\n         */\n        pageFn: PropTypes.func,\n\n        /**\n         * The minimal distance between any pair of thumbs.\n         * Must be positive, but zero means they can sit on top of each other.\n         */\n        minDistance: PropTypes.number,\n\n        /**\n         * Determines the initial positions of the thumbs and the number of thumbs.\n         *\n         * If a number is passed a slider with one thumb will be rendered.\n         * If an array is passed each value will determine the position of one thumb.\n         * The values in the array must be sorted.\n         */\n        defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n\n        /**\n         * Like `defaultValue` but for\n         * [controlled components](http://facebook.github.io/react/docs/forms.html#controlled-components).\n         */\n        // eslint-disable-next-line zillow/react/require-default-props\n        value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n\n        /**\n         * Determines whether the slider moves horizontally (from left to right)\n         * or vertically (from top to bottom).\n         */\n        orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n        /**\n         * The css class set on the slider node.\n         */\n        className: PropTypes.string,\n\n        /**\n         * The css class set on each thumb node.\n         *\n         * In addition each thumb will receive a numbered css class of the form\n         * `${thumbClassName}-${i}`, e.g. `thumb-0`, `thumb-1`, ...\n         */\n        thumbClassName: PropTypes.string,\n\n        /**\n         * The css class set on the thumb that is currently being moved.\n         */\n        thumbActiveClassName: PropTypes.string,\n\n        /**\n         * If `true` tracks between the thumbs will be rendered.\n         */\n        withTracks: PropTypes.bool,\n\n        /**\n         * The css class set on the tracks between the thumbs.\n         * In addition track fragment will receive a numbered css class of the form\n         * `${trackClassName}-${i}`, e.g. `track-0`, `track-1`, ...\n         */\n        trackClassName: PropTypes.string,\n\n        /**\n         * If `true` the active thumb will push other thumbs\n         * within the constraints of `min`, `max`, `step` and `minDistance`.\n         */\n        pearling: PropTypes.bool,\n\n        /**\n         * If `true` the thumbs can't be moved.\n         */\n        disabled: PropTypes.bool,\n\n        /**\n         * Disables thumb move when clicking the slider track\n         */\n        snapDragDisabled: PropTypes.bool,\n\n        /**\n         * Inverts the slider.\n         */\n        invert: PropTypes.bool,\n\n        /**\n         * Shows passed marks on the track, if true it shows all the marks,\n         * if an array of numbers it shows just the passed marks, if a number is passed\n         * it shows just the marks in that steps: like passing 3 shows the marks 3, 6, 9\n         */\n        marks: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.number),\n            PropTypes.bool,\n            PropTypes.number,\n        ]),\n\n        /**\n         * The css class set on the marks.\n         */\n        markClassName: PropTypes.string,\n\n        /**\n         * Callback called before starting to move a thumb. The callback will only be called if the\n         * action will result in a change. The function will be called with two arguments, the first\n         * being the initial value(s) the second being thumb index.\n         */\n        // eslint-disable-next-line max-len\n        // eslint-disable-next-line zillow/react/require-default-props, zillow/react/no-unused-prop-types\n        onBeforeChange: PropTypes.func,\n\n        /**\n         * Callback called on every value change.\n         * The function will be called with two arguments, the first being the new value(s)\n         * the second being thumb index.\n         */\n        // eslint-disable-next-line max-len\n        // eslint-disable-next-line zillow/react/require-default-props, zillow/react/no-unused-prop-types\n        onChange: PropTypes.func,\n\n        /**\n         * Callback called only after moving a thumb has ended. The callback will only be called if\n         * the action resulted in a change. The function will be called with two arguments, the\n         * first being the result value(s) the second being thumb index.\n         */\n        // eslint-disable-next-line max-len\n        // eslint-disable-next-line zillow/react/require-default-props, zillow/react/no-unused-prop-types\n        onAfterChange: PropTypes.func,\n\n        /**\n         * Callback called when the the slider is clicked (thumb or tracks).\n         * Receives the value at the clicked position as argument.\n         */\n        // eslint-disable-next-line zillow/react/require-default-props\n        onSliderClick: PropTypes.func,\n\n        /**\n         * aria-label for screen-readers to apply to the thumbs.\n         * Use an array for more than one thumb.\n         * The length of the array must match the number of thumbs in the value array.\n         */\n        // eslint-disable-next-line zillow/react/require-default-props\n        ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n        /**\n         * aria-labelledby for screen-readers to apply to the thumbs.\n         * Used when slider rendered with separate label.\n         * Use an array for more than one thumb.\n         * The length of the array must match the number of thumbs in the value array.\n         */\n        // eslint-disable-next-line zillow/react/require-default-props\n        ariaLabelledby: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.arrayOf(PropTypes.string),\n        ]),\n\n        /**\n         * aria-valuetext for screen-readers.\n         * Can be a static string, or a function that returns a string.\n         * The function will be passed a single argument,\n         * an object with the following properties:\n         *\n         *     state => `Value: ${state.value}`\n         *\n         * - `state.index` {`number`} the index of the thumb\n         * - `state.value` {`number` | `array`} the current value state\n         * - `state.valueNow` {`number`} the value of the thumb (i.e. aria-valuenow)\n         */\n        // eslint-disable-next-line zillow/react/require-default-props\n        ariaValuetext: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n        /**\n         * Provide a custom render function for the track node.\n         * The render function will be passed two arguments,\n         * an object with props that should be added to your handle node,\n         * and an object with track and slider state:\n         *\n         *     (props, state) => <div {...props} />\n         *\n         * - `props` {`object`} props to be spread into your track node\n         * - `state.index` {`number`} the index of the track\n         * - `state.value` {`number` | `array`} the current value state\n         */\n        renderTrack: PropTypes.func,\n\n        /**\n         * Provide a custom render function for dynamic thumb content.\n         * The render function will be passed two arguments,\n         * an object with props that should be added to your thumb node,\n         * and an object with thumb and slider state:\n         *\n         *     (props, state) => <div {...props} />\n         *\n         * - `props` {`object`} props to be spread into your thumb node\n         * - `state.index` {`number`} the index of the thumb\n         * - `state.value` {`number` | `array`} the current value state\n         * - `state.valueNow` {`number`} the value of the thumb (i.e. aria-valuenow)\n         */\n        // eslint-disable-next-line zillow/react/require-default-props\n        renderThumb: PropTypes.func,\n\n        /**\n         * Provide a custom render function for the mark node.\n         * The render function will be passed one argument,\n         * an object with props that should be added to your handle node\n         *\n         *     (props) => <span {...props} />\n         *\n         * - `props` {`object`} props to be spread into your track node\n         */\n        renderMark: PropTypes.func,\n    };\n\n    static defaultProps = {\n        min: 0,\n        max: 100,\n        step: 1,\n        pageFn: step => step * 10,\n        minDistance: 0,\n        defaultValue: 0,\n        orientation: 'horizontal',\n        className: 'slider',\n        thumbClassName: 'thumb',\n        thumbActiveClassName: 'active',\n        trackClassName: 'track',\n        markClassName: 'mark',\n        withTracks: true,\n        pearling: false,\n        disabled: false,\n        snapDragDisabled: false,\n        invert: false,\n        marks: [],\n        renderThumb: props => <div {...props} />,\n        renderTrack: props => <div {...props} />,\n        renderMark: props => <span {...props} />,\n    };\n\n    constructor(props) {\n        super(props);\n\n        let value = sanitizeInValue(props.value);\n        if (!value.length) {\n            value = sanitizeInValue(props.defaultValue);\n        }\n\n        // array for storing resize timeouts ids\n        this.pendingResizeTimeouts = [];\n\n        const zIndices = [];\n        for (let i = 0; i < value.length; i += 1) {\n            value[i] = trimAlignValue(value[i], props);\n            zIndices.push(i);\n        }\n\n        this.resizeObserver = null;\n        this.resizeElementRef = React.createRef();\n\n        this.state = {\n            index: -1,\n            upperBound: 0,\n            sliderLength: 0,\n            value,\n            zIndices,\n        };\n    }\n\n    componentDidMount() {\n        if (typeof window !== 'undefined') {\n            this.resizeObserver = new ResizeObserver(this.handleResize);\n            this.resizeObserver.observe(this.resizeElementRef.current);\n            this.resize();\n        }\n    }\n\n    // Keep the internal `value` consistent with an outside `value` if present.\n    // This basically allows the slider to be a controlled component.\n    static getDerivedStateFromProps(props, state) {\n        const value = sanitizeInValue(props.value);\n        if (!value.length) {\n            return null;\n        }\n\n        // Do not allow controlled upates to happen while we have pending updates\n        if (state.pending) {\n            return null;\n        }\n\n        return {\n            value: value.map(item => trimAlignValue(item, props)),\n        };\n    }\n\n    componentDidUpdate() {\n        // If an upperBound has not yet been determined (due to the component being hidden\n        // during the mount event, or during the last resize), then calculate it now\n        if (this.state.upperBound === 0) {\n            this.resize();\n        }\n    }\n\n    componentWillUnmount() {\n        this.clearPendingResizeTimeouts();\n        if (this.resizeObserver) {\n            this.resizeObserver.disconnect();\n        }\n    }\n\n    onKeyUp = () => {\n        this.onEnd();\n    };\n\n    onMouseUp = () => {\n        this.onEnd(this.getMouseEventMap());\n    };\n\n    onTouchEnd = e => {\n        e.preventDefault();\n        this.onEnd(this.getTouchEventMap());\n    };\n\n    onBlur = () => {\n        this.setState({ index: -1 }, this.onEnd(this.getKeyDownEventMap()));\n    };\n\n    onEnd(eventMap) {\n        if (eventMap) {\n            removeHandlers(eventMap);\n        }\n        if (this.hasMoved) {\n            this.fireChangeEvent('onAfterChange');\n        }\n\n        // Allow controlled updates to continue\n        this.setState({ pending: false });\n\n        this.hasMoved = false;\n    }\n\n    onMouseMove = e => {\n        // Prevent controlled updates from happening while mouse is moving\n        this.setState({ pending: true });\n\n        const position = this.getMousePosition(e);\n        const diffPosition = this.getDiffPosition(position[0]);\n        const newValue = this.getValueFromPosition(diffPosition);\n        this.move(newValue);\n    };\n\n    onTouchMove = e => {\n        if (e.touches.length > 1) {\n            return;\n        }\n\n        // Prevent controlled updates from happending while touch is moving\n        this.setState({ pending: true });\n\n        const position = this.getTouchPosition(e);\n\n        if (typeof this.isScrolling === 'undefined') {\n            const diffMainDir = position[0] - this.startPosition[0];\n            const diffScrollDir = position[1] - this.startPosition[1];\n            this.isScrolling = Math.abs(diffScrollDir) > Math.abs(diffMainDir);\n        }\n\n        if (this.isScrolling) {\n            this.setState({ index: -1 });\n            return;\n        }\n\n        const diffPosition = this.getDiffPosition(position[0]);\n        const newValue = this.getValueFromPosition(diffPosition);\n\n        this.move(newValue);\n    };\n\n    onKeyDown = e => {\n        if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) {\n            return;\n        }\n\n        // Prevent controlled updates from happening while a key is pressed\n        this.setState({ pending: true });\n\n        switch (e.key) {\n            case 'ArrowLeft':\n            case 'ArrowDown':\n            case 'Left':\n            case 'Down':\n                e.preventDefault();\n                this.moveDownByStep();\n                break;\n            case 'ArrowRight':\n            case 'ArrowUp':\n            case 'Right':\n            case 'Up':\n                e.preventDefault();\n                this.moveUpByStep();\n                break;\n            case 'Home':\n                e.preventDefault();\n                this.move(this.props.min);\n                break;\n            case 'End':\n                e.preventDefault();\n                this.move(this.props.max);\n                break;\n            case 'PageDown':\n                e.preventDefault();\n                this.moveDownByStep(this.props.pageFn(this.props.step));\n                break;\n            case 'PageUp':\n                e.preventDefault();\n                this.moveUpByStep(this.props.pageFn(this.props.step));\n                break;\n            default:\n        }\n    };\n\n    onSliderMouseDown = e => {\n        // do nothing if disabled or right click\n        if (this.props.disabled || e.button === 2) {\n            return;\n        }\n\n        // Prevent controlled updates from happening while mouse is moving\n        this.setState({ pending: true });\n\n        if (!this.props.snapDragDisabled) {\n            const position = this.getMousePosition(e);\n            this.forceValueFromPosition(position[0], i => {\n                this.start(i, position[0]);\n                addHandlers(this.getMouseEventMap());\n            });\n        }\n\n        pauseEvent(e);\n    };\n\n    onSliderClick = e => {\n        if (this.props.disabled) {\n            return;\n        }\n\n        if (this.props.onSliderClick && !this.hasMoved) {\n            const position = this.getMousePosition(e);\n            const valueAtPos = trimAlignValue(\n                this.calcValue(this.calcOffsetFromPosition(position[0])),\n                this.props\n            );\n            this.props.onSliderClick(valueAtPos);\n        }\n    };\n\n    getValue() {\n        return prepareOutValue(this.state.value);\n    }\n\n    getClosestIndex(pixelOffset) {\n        let minDist = Number.MAX_VALUE;\n        let closestIndex = -1;\n\n        const { value } = this.state;\n        const l = value.length;\n\n        for (let i = 0; i < l; i += 1) {\n            const offset = this.calcOffset(value[i]);\n            const dist = Math.abs(pixelOffset - offset);\n            if (dist < minDist) {\n                minDist = dist;\n                closestIndex = i;\n            }\n        }\n\n        return closestIndex;\n    }\n\n    getMousePosition(e) {\n        return [e[`page${this.axisKey()}`], e[`page${this.orthogonalAxisKey()}`]];\n    }\n\n    getTouchPosition(e) {\n        const touch = e.touches[0];\n        return [touch[`page${this.axisKey()}`], touch[`page${this.orthogonalAxisKey()}`]];\n    }\n\n    getKeyDownEventMap() {\n        return {\n            keydown: this.onKeyDown,\n            keyup: this.onKeyUp,\n            focusout: this.onBlur,\n        };\n    }\n\n    getMouseEventMap() {\n        return {\n            mousemove: this.onMouseMove,\n            mouseup: this.onMouseUp,\n        };\n    }\n\n    getTouchEventMap() {\n        return {\n            touchmove: this.onTouchMove,\n            touchend: this.onTouchEnd,\n        };\n    }\n\n    getValueFromPosition(position) {\n        const diffValue =\n            (position / (this.state.sliderLength - this.state.thumbSize)) *\n            (this.props.max - this.props.min);\n        return trimAlignValue(this.state.startValue + diffValue, this.props);\n    }\n\n    getDiffPosition(position) {\n        let diffPosition = position - this.state.startPosition;\n        if (this.props.invert) {\n            diffPosition *= -1;\n        }\n        return diffPosition;\n    }\n\n    // create the `keydown` handler for the i-th thumb\n    createOnKeyDown = i => e => {\n        if (this.props.disabled) {\n            return;\n        }\n        this.start(i);\n        addHandlers(this.getKeyDownEventMap());\n        pauseEvent(e);\n    };\n\n    // create the `mousedown` handler for the i-th thumb\n    createOnMouseDown = i => e => {\n        // do nothing if disabled or right click\n        if (this.props.disabled || e.button === 2) {\n            return;\n        }\n\n        // Prevent controlled updates from happending while mouse is moving\n        this.setState({ pending: true });\n\n        const position = this.getMousePosition(e);\n        this.start(i, position[0]);\n        addHandlers(this.getMouseEventMap());\n        pauseEvent(e);\n    };\n\n    // create the `touchstart` handler for the i-th thumb\n    createOnTouchStart = i => e => {\n        if (this.props.disabled || e.touches.length > 1) {\n            return;\n        }\n\n        // Prevent controlled updates from happending while touch is moving\n        this.setState({ pending: true });\n\n        const position = this.getTouchPosition(e);\n        this.startPosition = position;\n        // don't know yet if the user is trying to scroll\n        this.isScrolling = undefined;\n        this.start(i, position[0]);\n        addHandlers(this.getTouchEventMap());\n        stopPropagation(e);\n    };\n\n    handleResize = () => {\n        // setTimeout of 0 gives element enough time to have assumed its new size if\n        // it is being resized\n        const resizeTimeout = window.setTimeout(() => {\n            // drop this timeout from pendingResizeTimeouts to reduce memory usage\n            this.pendingResizeTimeouts.shift();\n            this.resize();\n        }, 0);\n\n        this.pendingResizeTimeouts.push(resizeTimeout);\n    };\n\n    resize() {\n        const { slider, thumb0: thumb } = this;\n        if (!slider || !thumb) {\n            return;\n        }\n\n        const sizeKey = this.sizeKey();\n\n        // For the slider size, we want to use the client width/height, excluding any borders\n        const sliderRect = slider.getBoundingClientRect();\n        const sliderSize = slider[sizeKey];\n        const sliderMax = sliderRect[this.posMaxKey()];\n        const sliderMin = sliderRect[this.posMinKey()];\n\n        // For the thumb size, we want to use the outer width/height, including any borders\n        const thumbRect = thumb.getBoundingClientRect();\n        const thumbSize = thumbRect[sizeKey.replace('client', '').toLowerCase()];\n\n        const upperBound = sliderSize - thumbSize;\n        const sliderLength = Math.abs(sliderMax - sliderMin);\n\n        if (\n            this.state.upperBound !== upperBound ||\n            this.state.sliderLength !== sliderLength ||\n            this.state.thumbSize !== thumbSize\n        ) {\n            this.setState({\n                upperBound,\n                sliderLength,\n                thumbSize,\n            });\n        }\n    }\n\n    // calculates the offset of a thumb in pixels based on its value.\n    calcOffset(value) {\n        const range = this.props.max - this.props.min;\n        if (range === 0) {\n            return 0;\n        }\n        const ratio = (value - this.props.min) / range;\n        return ratio * this.state.upperBound;\n    }\n\n    // calculates the value corresponding to a given pixel offset, i.e. the inverse of `calcOffset`.\n    calcValue(offset) {\n        const ratio = offset / this.state.upperBound;\n        return ratio * (this.props.max - this.props.min) + this.props.min;\n    }\n\n    calcOffsetFromPosition(position) {\n        const { slider } = this;\n\n        const sliderRect = slider.getBoundingClientRect();\n        const sliderMax = sliderRect[this.posMaxKey()];\n        const sliderMin = sliderRect[this.posMinKey()];\n\n        // The `position` value passed in is the mouse position based on the window height.\n        // The slider bounding rect is based on the viewport, so we must add the window scroll\n        // offset to normalize the values.\n        const windowOffset = window[`page${this.axisKey()}Offset`];\n        const sliderStart = windowOffset + (this.props.invert ? sliderMax : sliderMin);\n\n        let pixelOffset = position - sliderStart;\n        if (this.props.invert) {\n            pixelOffset = this.state.sliderLength - pixelOffset;\n        }\n        pixelOffset -= this.state.thumbSize / 2;\n        return pixelOffset;\n    }\n\n    // Snaps the nearest thumb to the value corresponding to `position`\n    // and calls `callback` with that thumb's index.\n    forceValueFromPosition(position, callback) {\n        const pixelOffset = this.calcOffsetFromPosition(position);\n        const closestIndex = this.getClosestIndex(pixelOffset);\n        const nextValue = trimAlignValue(this.calcValue(pixelOffset), this.props);\n\n        // Clone this.state.value since we'll modify it temporarily\n        // eslint-disable-next-line zillow/react/no-access-state-in-setstate\n        const value = this.state.value.slice();\n        value[closestIndex] = nextValue;\n\n        // Prevents the slider from shrinking below `props.minDistance`\n        for (let i = 0; i < value.length - 1; i += 1) {\n            if (value[i + 1] - value[i] < this.props.minDistance) {\n                return;\n            }\n        }\n\n        this.fireChangeEvent('onBeforeChange');\n        this.hasMoved = true;\n        this.setState({ value }, () => {\n            callback(closestIndex);\n            this.fireChangeEvent('onChange');\n        });\n    }\n\n    // clear all pending timeouts to avoid error messages after unmounting\n    clearPendingResizeTimeouts() {\n        do {\n            const nextTimeout = this.pendingResizeTimeouts.shift();\n\n            clearTimeout(nextTimeout);\n        } while (this.pendingResizeTimeouts.length);\n    }\n\n    start(i, position) {\n        const thumbRef = this[`thumb${i}`];\n        if (thumbRef) {\n            thumbRef.focus();\n        }\n\n        const { zIndices } = this.state;\n        // remove wherever the element is\n        zIndices.splice(zIndices.indexOf(i), 1);\n        // add to end\n        zIndices.push(i);\n\n        this.setState(prevState => ({\n            startValue: prevState.value[i],\n            startPosition: position !== undefined ? position : prevState.startPosition,\n            index: i,\n            zIndices,\n        }));\n    }\n\n    moveUpByStep(step = this.props.step) {\n        const oldValue = this.state.value[this.state.index];\n\n        // if the slider is inverted and horizontal we want to honor the inverted value\n        const newValue =\n            this.props.invert && this.props.orientation === 'horizontal'\n                ? oldValue - step\n                : oldValue + step;\n\n        const trimAlign = trimAlignValue(newValue, this.props);\n        this.move(Math.min(trimAlign, this.props.max));\n    }\n\n    moveDownByStep(step = this.props.step) {\n        const oldValue = this.state.value[this.state.index];\n\n        // if the slider is inverted and horizontal we want to honor the inverted value\n        const newValue =\n            this.props.invert && this.props.orientation === 'horizontal'\n                ? oldValue + step\n                : oldValue - step;\n\n        const trimAlign = trimAlignValue(newValue, this.props);\n        this.move(Math.max(trimAlign, this.props.min));\n    }\n\n    move(newValue) {\n        // Clone this.state.value since we'll modify it temporarily\n        // eslint-disable-next-line zillow/react/no-access-state-in-setstate\n        const value = this.state.value.slice();\n        const { index } = this.state;\n        const { length } = value;\n\n        // Short circuit if the value is not changing\n        const oldValue = value[index];\n        if (newValue === oldValue) {\n            return;\n        }\n\n        // Trigger only before the first movement\n        if (!this.hasMoved) {\n            this.fireChangeEvent('onBeforeChange');\n        }\n        this.hasMoved = true;\n\n        // if \"pearling\" (= thumbs pushing each other) is disabled,\n        // prevent the thumb from getting closer than `minDistance` to the previous or next thumb.\n        const { pearling, max, min, minDistance } = this.props;\n        if (!pearling) {\n            if (index > 0) {\n                const valueBefore = value[index - 1];\n                if (newValue < valueBefore + minDistance) {\n                    // eslint-disable-next-line no-param-reassign\n                    newValue = valueBefore + minDistance;\n                }\n            }\n\n            if (index < length - 1) {\n                const valueAfter = value[index + 1];\n                if (newValue > valueAfter - minDistance) {\n                    // eslint-disable-next-line no-param-reassign\n                    newValue = valueAfter - minDistance;\n                }\n            }\n        }\n\n        value[index] = newValue;\n\n        // if \"pearling\" is enabled, let the current thumb push the pre- and succeeding thumbs.\n        if (pearling && length > 1) {\n            if (newValue > oldValue) {\n                this.pushSucceeding(value, minDistance, index);\n                trimSucceeding(length, value, minDistance, max);\n            } else if (newValue < oldValue) {\n                this.pushPreceding(value, minDistance, index);\n                trimPreceding(length, value, minDistance, min);\n            }\n        }\n\n        // Normally you would use `shouldComponentUpdate`,\n        // but since the slider is a low-level component,\n        // the extra complexity might be worth the extra performance.\n        this.setState({ value }, this.fireChangeEvent.bind(this, 'onChange'));\n    }\n\n    pushSucceeding(value, minDistance, index) {\n        let i;\n        let padding;\n        for (\n            i = index, padding = value[i] + minDistance;\n            value[i + 1] !== null && padding > value[i + 1];\n            i += 1, padding = value[i] + minDistance\n        ) {\n            // eslint-disable-next-line no-param-reassign\n            value[i + 1] = alignValue(padding, this.props);\n        }\n    }\n\n    pushPreceding(value, minDistance, index) {\n        for (\n            let i = index, padding = value[i] - minDistance;\n            value[i - 1] !== null && padding < value[i - 1];\n            i -= 1, padding = value[i] - minDistance\n        ) {\n            // eslint-disable-next-line no-param-reassign\n            value[i - 1] = alignValue(padding, this.props);\n        }\n    }\n\n    axisKey() {\n        if (this.props.orientation === 'vertical') {\n            return 'Y';\n        }\n        // Defaults to 'horizontal';\n        return 'X';\n    }\n\n    orthogonalAxisKey() {\n        if (this.props.orientation === 'vertical') {\n            return 'X';\n        }\n        // Defaults to 'horizontal'\n        return 'Y';\n    }\n\n    posMinKey() {\n        if (this.props.orientation === 'vertical') {\n            return this.props.invert ? 'bottom' : 'top';\n        }\n        // Defaults to 'horizontal'\n        return this.props.invert ? 'right' : 'left';\n    }\n\n    posMaxKey() {\n        if (this.props.orientation === 'vertical') {\n            return this.props.invert ? 'top' : 'bottom';\n        }\n        // Defaults to 'horizontal'\n        return this.props.invert ? 'left' : 'right';\n    }\n\n    sizeKey() {\n        if (this.props.orientation === 'vertical') {\n            return 'clientHeight';\n        }\n        // Defaults to 'horizontal'\n        return 'clientWidth';\n    }\n\n    fireChangeEvent(event) {\n        if (this.props[event]) {\n            this.props[event](prepareOutValue(this.state.value), this.state.index);\n        }\n    }\n\n    buildThumbStyle(offset, i) {\n        const style = {\n            position: 'absolute',\n            touchAction: 'none',\n            willChange: this.state.index >= 0 ? this.posMinKey() : undefined,\n            zIndex: this.state.zIndices.indexOf(i) + 1,\n        };\n        style[this.posMinKey()] = `${offset}px`;\n        return style;\n    }\n\n    buildTrackStyle(min, max) {\n        const obj = {\n            position: 'absolute',\n            willChange:\n                this.state.index >= 0 ? `${this.posMinKey()},${this.posMaxKey()}` : undefined,\n        };\n        obj[this.posMinKey()] = min;\n        obj[this.posMaxKey()] = max;\n        return obj;\n    }\n\n    buildMarkStyle(offset) {\n        return {\n            position: 'absolute',\n            [this.posMinKey()]: offset,\n        };\n    }\n\n    renderThumb = (style, i) => {\n        const className = `${this.props.thumbClassName} ${this.props.thumbClassName}-${i} ${\n            this.state.index === i ? this.props.thumbActiveClassName : ''\n        }`;\n\n        const props = {\n            'ref': r => {\n                this[`thumb${i}`] = r;\n            },\n            'key': `${this.props.thumbClassName}-${i}`,\n            className,\n            style,\n            'onMouseDown': this.createOnMouseDown(i),\n            'onTouchStart': this.createOnTouchStart(i),\n            'onFocus': this.createOnKeyDown(i),\n            'tabIndex': 0,\n            'role': 'slider',\n            'aria-orientation': this.props.orientation,\n            'aria-valuenow': this.state.value[i],\n            'aria-valuemin': this.props.min,\n            'aria-valuemax': this.props.max,\n            'aria-label': Array.isArray(this.props.ariaLabel)\n                ? this.props.ariaLabel[i]\n                : this.props.ariaLabel,\n            'aria-labelledby': Array.isArray(this.props.ariaLabelledby)\n                ? this.props.ariaLabelledby[i]\n                : this.props.ariaLabelledby,\n            'aria-disabled': this.props.disabled,\n        };\n\n        const state = {\n            index: i,\n            value: prepareOutValue(this.state.value),\n            valueNow: this.state.value[i],\n        };\n\n        if (this.props.ariaValuetext) {\n            props['aria-valuetext'] =\n                typeof this.props.ariaValuetext === 'string'\n                    ? this.props.ariaValuetext\n                    : this.props.ariaValuetext(state);\n        }\n\n        return this.props.renderThumb(props, state);\n    };\n\n    renderThumbs(offset) {\n        const { length } = offset;\n\n        const styles = [];\n        for (let i = 0; i < length; i += 1) {\n            styles[i] = this.buildThumbStyle(offset[i], i);\n        }\n\n        const res = [];\n        for (let i = 0; i < length; i += 1) {\n            res[i] = this.renderThumb(styles[i], i);\n        }\n        return res;\n    }\n\n    renderTrack = (i, offsetFrom, offsetTo) => {\n        const props = {\n            key: `${this.props.trackClassName}-${i}`,\n            className: `${this.props.trackClassName} ${this.props.trackClassName}-${i}`,\n            style: this.buildTrackStyle(offsetFrom, this.state.upperBound - offsetTo),\n        };\n        const state = {\n            index: i,\n            value: prepareOutValue(this.state.value),\n        };\n        return this.props.renderTrack(props, state);\n    };\n\n    renderTracks(offset) {\n        const tracks = [];\n        const lastIndex = offset.length - 1;\n\n        tracks.push(this.renderTrack(0, 0, offset[0]));\n\n        for (let i = 0; i < lastIndex; i += 1) {\n            tracks.push(this.renderTrack(i + 1, offset[i], offset[i + 1]));\n        }\n\n        tracks.push(this.renderTrack(lastIndex + 1, offset[lastIndex], this.state.upperBound));\n\n        return tracks;\n    }\n\n    renderMarks() {\n        let { marks } = this.props;\n\n        const range = this.props.max - this.props.min + 1;\n\n        if (typeof marks === 'boolean') {\n            marks = Array.from({ length: range }).map((_, key) => key);\n        } else if (typeof marks === 'number') {\n            marks = Array.from({ length: range })\n                .map((_, key) => key)\n                .filter(key => key % marks === 0);\n        }\n\n        return marks\n            .map(parseFloat)\n            .sort((a, b) => a - b)\n            .map(mark => {\n                const offset = this.calcOffset(mark);\n\n                const props = {\n                    key: mark,\n                    className: this.props.markClassName,\n                    style: this.buildMarkStyle(offset),\n                };\n\n                return this.props.renderMark(props);\n            });\n    }\n\n    render() {\n        const offset = [];\n        const { value } = this.state;\n        const l = value.length;\n        for (let i = 0; i < l; i += 1) {\n            offset[i] = this.calcOffset(value[i], i);\n        }\n\n        const tracks = this.props.withTracks ? this.renderTracks(offset) : null;\n        const thumbs = this.renderThumbs(offset);\n        const marks = this.props.marks ? this.renderMarks() : null;\n\n        return React.createElement(\n            'div',\n            {\n                ref: r => {\n                    this.slider = r;\n                    this.resizeElementRef.current = r;\n                },\n                style: { position: 'relative' },\n                className: this.props.className + (this.props.disabled ? ' disabled' : ''),\n                onMouseDown: this.onSliderMouseDown,\n                onClick: this.onSliderClick,\n            },\n            tracks,\n            thumbs,\n            marks\n        );\n    }\n}\n\nexport default ReactSlider;\n"],"names":["pauseEvent","e","stopPropagation","preventDefault","sanitizeInValue","x","Array","isArray","slice","prepareOutValue","length","trimSucceeding","nextValue","minDistance","max","i","padding","trimPreceding","min","addHandlers","eventMap","Object","keys","forEach","key","document","addEventListener","removeHandlers","removeEventListener","trimAlignValue","val","props","alignValue","trimValue","valModStep","step","alignedValue","Math","abs","parseFloat","toFixed","trimmed","ReactSlider","onKeyUp","onEnd","onMouseUp","getMouseEventMap","onTouchEnd","getTouchEventMap","onBlur","setState","index","getKeyDownEventMap","onMouseMove","pending","position","getMousePosition","diffPosition","getDiffPosition","newValue","getValueFromPosition","move","onTouchMove","touches","getTouchPosition","isScrolling","diffMainDir","startPosition","diffScrollDir","onKeyDown","ctrlKey","shiftKey","altKey","metaKey","moveDownByStep","moveUpByStep","pageFn","onSliderMouseDown","disabled","button","snapDragDisabled","forceValueFromPosition","start","onSliderClick","hasMoved","valueAtPos","calcValue","calcOffsetFromPosition","createOnKeyDown","createOnMouseDown","createOnTouchStart","undefined","handleResize","resizeTimeout","window","setTimeout","pendingResizeTimeouts","shift","resize","push","renderThumb","style","className","thumbClassName","state","thumbActiveClassName","r","orientation","value","ariaLabel","ariaLabelledby","valueNow","ariaValuetext","renderTrack","offsetFrom","offsetTo","trackClassName","buildTrackStyle","upperBound","defaultValue","zIndices","resizeObserver","resizeElementRef","React","createRef","sliderLength","componentDidMount","ResizeObserver","observe","current","getDerivedStateFromProps","map","item","componentDidUpdate","componentWillUnmount","clearPendingResizeTimeouts","disconnect","fireChangeEvent","getValue","getClosestIndex","pixelOffset","minDist","Number","MAX_VALUE","closestIndex","l","offset","calcOffset","dist","axisKey","orthogonalAxisKey","touch","keydown","keyup","focusout","mousemove","mouseup","touchmove","touchend","diffValue","thumbSize","startValue","invert","slider","thumb0","thumb","sizeKey","sliderRect","getBoundingClientRect","sliderSize","sliderMax","posMaxKey","sliderMin","posMinKey","thumbRect","replace","toLowerCase","range","ratio","windowOffset","sliderStart","callback","nextTimeout","clearTimeout","thumbRef","focus","splice","indexOf","prevState","oldValue","trimAlign","pearling","valueBefore","valueAfter","pushSucceeding","pushPreceding","bind","event","buildThumbStyle","touchAction","willChange","zIndex","obj","buildMarkStyle","renderThumbs","styles","res","renderTracks","tracks","lastIndex","renderMarks","marks","from","_","filter","sort","a","b","mark","markClassName","renderMark","render","withTracks","thumbs","createElement","ref","onMouseDown","onClick","Component","displayName","defaultProps","propTypes","PropTypes","number","func","oneOfType","arrayOf","oneOf","string","bool","onBeforeChange","onChange","onAfterChange"],"mappings":";;;;;;AAGA;AACA;AACA;AACA;;AACA,SAASA,UAAT,CAAoBC,CAApB,EAAuB;AACnB,EAAA,IAAIA,CAAC,IAAIA,CAAC,CAACC,eAAX,EAA4B;AACxBD,IAAAA,CAAC,CAACC,eAAF,EAAA,CAAA;AACH,GAAA;;AACD,EAAA,IAAID,CAAC,IAAIA,CAAC,CAACE,cAAX,EAA2B;AACvBF,IAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;AACH,GAAA;;AACD,EAAA,OAAO,KAAP,CAAA;AACH,CAAA;;AAED,SAASD,eAAT,CAAyBD,CAAzB,EAA4B;EACxB,IAAIA,CAAC,CAACC,eAAN,EAAuB;AACnBD,IAAAA,CAAC,CAACC,eAAF,EAAA,CAAA;AACH,GAAA;AACJ,CAAA;;AAED,SAASE,eAAT,CAAyBC,CAAzB,EAA4B;EACxB,IAAIA,CAAC,IAAI,IAAT,EAAe;AACX,IAAA,OAAO,EAAP,CAAA;AACH,GAAA;;AACD,EAAA,OAAOC,KAAK,CAACC,OAAN,CAAcF,CAAd,CAAA,GAAmBA,CAAC,CAACG,KAAF,EAAnB,GAA+B,CAACH,CAAD,CAAtC,CAAA;AACH,CAAA;;AAED,SAASI,eAAT,CAAyBJ,CAAzB,EAA4B;AACxB,EAAA,OAAOA,CAAC,KAAK,IAAN,IAAcA,CAAC,CAACK,MAAF,KAAa,CAA3B,GAA+BL,CAAC,CAAC,CAAD,CAAhC,GAAsCA,CAAC,CAACG,KAAF,EAA7C,CAAA;AACH,CAAA;;AAED,SAASG,cAAT,CAAwBD,MAAxB,EAAgCE,SAAhC,EAA2CC,WAA3C,EAAwDC,GAAxD,EAA6D;AACzD,EAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,MAApB,EAA4BK,CAAC,IAAI,CAAjC,EAAoC;AAChC,IAAA,MAAMC,OAAO,GAAGF,GAAG,GAAGC,CAAC,GAAGF,WAA1B,CAAA;;IACA,IAAID,SAAS,CAACF,MAAM,GAAG,CAAT,GAAaK,CAAd,CAAT,GAA4BC,OAAhC,EAAyC;AACrC;MACAJ,SAAS,CAACF,MAAM,GAAG,CAAT,GAAaK,CAAd,CAAT,GAA4BC,OAA5B,CAAA;AACH,KAAA;AACJ,GAAA;AACJ,CAAA;;AAED,SAASC,aAAT,CAAuBP,MAAvB,EAA+BE,SAA/B,EAA0CC,WAA1C,EAAuDK,GAAvD,EAA4D;AACxD,EAAA,KAAK,IAAIH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,MAApB,EAA4BK,CAAC,IAAI,CAAjC,EAAoC;AAChC,IAAA,MAAMC,OAAO,GAAGE,GAAG,GAAGH,CAAC,GAAGF,WAA1B,CAAA;;AACA,IAAA,IAAID,SAAS,CAACG,CAAD,CAAT,GAAeC,OAAnB,EAA4B;AACxB;AACAJ,MAAAA,SAAS,CAACG,CAAD,CAAT,GAAeC,OAAf,CAAA;AACH,KAAA;AACJ,GAAA;AACJ,CAAA;;AAED,SAASG,WAAT,CAAqBC,QAArB,EAA+B;EAC3BC,MAAM,CAACC,IAAP,CAAYF,QAAZ,EAAsBG,OAAtB,CAA8BC,GAAG,IAAI;AACjC,IAAA,IAAI,OAAOC,QAAP,KAAoB,WAAxB,EAAqC;MACjCA,QAAQ,CAACC,gBAAT,CAA0BF,GAA1B,EAA+BJ,QAAQ,CAACI,GAAD,CAAvC,EAA8C,KAA9C,CAAA,CAAA;AACH,KAAA;GAHL,CAAA,CAAA;AAKH,CAAA;;AAED,SAASG,cAAT,CAAwBP,QAAxB,EAAkC;EAC9BC,MAAM,CAACC,IAAP,CAAYF,QAAZ,EAAsBG,OAAtB,CAA8BC,GAAG,IAAI;AACjC,IAAA,IAAI,OAAOC,QAAP,KAAoB,WAAxB,EAAqC;MACjCA,QAAQ,CAACG,mBAAT,CAA6BJ,GAA7B,EAAkCJ,QAAQ,CAACI,GAAD,CAA1C,EAAiD,KAAjD,CAAA,CAAA;AACH,KAAA;GAHL,CAAA,CAAA;AAKH,CAAA;;AAED,SAASK,cAAT,CAAwBC,GAAxB,EAA6BC,KAA7B,EAAoC;EAChC,OAAOC,UAAU,CAACC,SAAS,CAACH,GAAD,EAAMC,KAAN,CAAV,EAAwBA,KAAxB,CAAjB,CAAA;AACH,CAAA;;AAED,SAASC,UAAT,CAAoBF,GAApB,EAAyBC,KAAzB,EAAgC;EAC5B,MAAMG,UAAU,GAAG,CAACJ,GAAG,GAAGC,KAAK,CAACb,GAAb,IAAoBa,KAAK,CAACI,IAA7C,CAAA;AACA,EAAA,IAAIC,YAAY,GAAGN,GAAG,GAAGI,UAAzB,CAAA;;EAEA,IAAIG,IAAI,CAACC,GAAL,CAASJ,UAAT,CAAuB,GAAA,CAAvB,IAA4BH,KAAK,CAACI,IAAtC,EAA4C;AACxCC,IAAAA,YAAY,IAAIF,UAAU,GAAG,CAAb,GAAiBH,KAAK,CAACI,IAAvB,GAA8B,CAACJ,KAAK,CAACI,IAArD,CAAA;AACH,GAAA;;EAED,OAAOI,UAAU,CAACH,YAAY,CAACI,OAAb,CAAqB,CAArB,CAAD,CAAjB,CAAA;AACH,CAAA;;AAED,SAASP,SAAT,CAAmBH,GAAnB,EAAwBC,KAAxB,EAA+B;EAC3B,IAAIU,OAAO,GAAGX,GAAd,CAAA;;AACA,EAAA,IAAIW,OAAO,IAAIV,KAAK,CAACb,GAArB,EAA0B;IACtBuB,OAAO,GAAGV,KAAK,CAACb,GAAhB,CAAA;AACH,GAAA;;AACD,EAAA,IAAIuB,OAAO,IAAIV,KAAK,CAACjB,GAArB,EAA0B;IACtB2B,OAAO,GAAGV,KAAK,CAACjB,GAAhB,CAAA;AACH,GAAA;;AAED,EAAA,OAAO2B,OAAP,CAAA;AACH,CAAA;;IAEKC;;;AAoQF,EAAA,SAAA,WAAA,CAAYX,MAAZ,EAAmB;AAAA,IAAA,IAAA,KAAA,CAAA;;AACf,IAAA,KAAA,GAAA,gBAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,MAAN,CAAA,IAAA,IAAA,CAAA;;IADe,KAsEnBY,CAAAA,OAtEmB,GAsET,MAAM;AACZ,MAAA,KAAA,CAAKC,KAAL,EAAA,CAAA;KAvEe,CAAA;;IAAA,KA0EnBC,CAAAA,SA1EmB,GA0EP,MAAM;AACd,MAAA,KAAA,CAAKD,KAAL,CAAW,KAAKE,CAAAA,gBAAL,EAAX,CAAA,CAAA;KA3Ee,CAAA;;IAAA,KA8EnBC,CAAAA,UA9EmB,GA8EN9C,CAAC,IAAI;AACdA,MAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;;AACA,MAAA,KAAA,CAAKyC,KAAL,CAAW,KAAKI,CAAAA,gBAAL,EAAX,CAAA,CAAA;KAhFe,CAAA;;IAAA,KAmFnBC,CAAAA,MAnFmB,GAmFV,MAAM;AACX,MAAA,KAAA,CAAKC,QAAL,CAAc;AAAEC,QAAAA,KAAK,EAAE,CAAC,CAAA;AAAV,OAAd,EAA6B,KAAKP,CAAAA,KAAL,CAAW,KAAKQ,CAAAA,kBAAL,EAAX,CAA7B,CAAA,CAAA;KApFe,CAAA;;IAAA,KAqGnBC,CAAAA,WArGmB,GAqGLpD,CAAC,IAAI;AACf;AACA,MAAA,KAAA,CAAKiD,QAAL,CAAc;AAAEI,QAAAA,OAAO,EAAE,IAAA;OAAzB,CAAA,CAAA;;AAEA,MAAA,MAAMC,QAAQ,GAAG,KAAA,CAAKC,gBAAL,CAAsBvD,CAAtB,CAAjB,CAAA;;MACA,MAAMwD,YAAY,GAAG,KAAKC,CAAAA,eAAL,CAAqBH,QAAQ,CAAC,CAAD,CAA7B,CAArB,CAAA;;AACA,MAAA,MAAMI,QAAQ,GAAG,KAAA,CAAKC,oBAAL,CAA0BH,YAA1B,CAAjB,CAAA;;MACA,KAAKI,CAAAA,IAAL,CAAUF,QAAV,CAAA,CAAA;KA5Ge,CAAA;;IAAA,KA+GnBG,CAAAA,WA/GmB,GA+GL7D,CAAC,IAAI;AACf,MAAA,IAAIA,CAAC,CAAC8D,OAAF,CAAUrD,MAAV,GAAmB,CAAvB,EAA0B;AACtB,QAAA,OAAA;AACH,OAHc;;;AAMf,MAAA,KAAA,CAAKwC,QAAL,CAAc;AAAEI,QAAAA,OAAO,EAAE,IAAA;OAAzB,CAAA,CAAA;;AAEA,MAAA,MAAMC,QAAQ,GAAG,KAAA,CAAKS,gBAAL,CAAsB/D,CAAtB,CAAjB,CAAA;;AAEA,MAAA,IAAI,OAAO,KAAA,CAAKgE,WAAZ,KAA4B,WAAhC,EAA6C;QACzC,MAAMC,WAAW,GAAGX,QAAQ,CAAC,CAAD,CAAR,GAAc,KAAKY,CAAAA,aAAL,CAAmB,CAAnB,CAAlC,CAAA;QACA,MAAMC,aAAa,GAAGb,QAAQ,CAAC,CAAD,CAAR,GAAc,KAAKY,CAAAA,aAAL,CAAmB,CAAnB,CAApC,CAAA;AACA,QAAA,KAAA,CAAKF,WAAL,GAAmB5B,IAAI,CAACC,GAAL,CAAS8B,aAAT,CAAA,GAA0B/B,IAAI,CAACC,GAAL,CAAS4B,WAAT,CAA7C,CAAA;AACH,OAAA;;MAED,IAAI,KAAA,CAAKD,WAAT,EAAsB;AAClB,QAAA,KAAA,CAAKf,QAAL,CAAc;AAAEC,UAAAA,KAAK,EAAE,CAAC,CAAA;SAAxB,CAAA,CAAA;;AACA,QAAA,OAAA;AACH,OAAA;;MAED,MAAMM,YAAY,GAAG,KAAKC,CAAAA,eAAL,CAAqBH,QAAQ,CAAC,CAAD,CAA7B,CAArB,CAAA;;AACA,MAAA,MAAMI,QAAQ,GAAG,KAAA,CAAKC,oBAAL,CAA0BH,YAA1B,CAAjB,CAAA;;MAEA,KAAKI,CAAAA,IAAL,CAAUF,QAAV,CAAA,CAAA;KAvIe,CAAA;;IAAA,KA0InBU,CAAAA,SA1ImB,GA0IPpE,CAAC,IAAI;AACb,MAAA,IAAIA,CAAC,CAACqE,OAAF,IAAarE,CAAC,CAACsE,QAAf,IAA2BtE,CAAC,CAACuE,MAA7B,IAAuCvE,CAAC,CAACwE,OAA7C,EAAsD;AAClD,QAAA,OAAA;AACH,OAHY;;;AAMb,MAAA,KAAA,CAAKvB,QAAL,CAAc;AAAEI,QAAAA,OAAO,EAAE,IAAA;OAAzB,CAAA,CAAA;;MAEA,QAAQrD,CAAC,CAACuB,GAAV;AACI,QAAA,KAAK,WAAL,CAAA;AACA,QAAA,KAAK,WAAL,CAAA;AACA,QAAA,KAAK,MAAL,CAAA;AACA,QAAA,KAAK,MAAL;AACIvB,UAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;;AACA,UAAA,KAAA,CAAKuE,cAAL,EAAA,CAAA;;AACA,UAAA,MAAA;;AACJ,QAAA,KAAK,YAAL,CAAA;AACA,QAAA,KAAK,SAAL,CAAA;AACA,QAAA,KAAK,OAAL,CAAA;AACA,QAAA,KAAK,IAAL;AACIzE,UAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;;AACA,UAAA,KAAA,CAAKwE,YAAL,EAAA,CAAA;;AACA,UAAA,MAAA;;AACJ,QAAA,KAAK,MAAL;AACI1E,UAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;;AACA,UAAA,KAAA,CAAK0D,IAAL,CAAU,KAAK9B,CAAAA,KAAL,CAAWb,GAArB,CAAA,CAAA;;AACA,UAAA,MAAA;;AACJ,QAAA,KAAK,KAAL;AACIjB,UAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;;AACA,UAAA,KAAA,CAAK0D,IAAL,CAAU,KAAK9B,CAAAA,KAAL,CAAWjB,GAArB,CAAA,CAAA;;AACA,UAAA,MAAA;;AACJ,QAAA,KAAK,UAAL;AACIb,UAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;;UACA,KAAKuE,CAAAA,cAAL,CAAoB,KAAA,CAAK3C,KAAL,CAAW6C,MAAX,CAAkB,KAAK7C,CAAAA,KAAL,CAAWI,IAA7B,CAApB,CAAA,CAAA;;AACA,UAAA,MAAA;;AACJ,QAAA,KAAK,QAAL;AACIlC,UAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;;UACA,KAAKwE,CAAAA,YAAL,CAAkB,KAAA,CAAK5C,KAAL,CAAW6C,MAAX,CAAkB,KAAK7C,CAAAA,KAAL,CAAWI,IAA7B,CAAlB,CAAA,CAAA;;AACA,UAAA,MAAA;AA9BR,OAAA;KAlJe,CAAA;;IAAA,KAqLnB0C,CAAAA,iBArLmB,GAqLC5E,CAAC,IAAI;AACrB;MACA,IAAI,KAAA,CAAK8B,KAAL,CAAW+C,QAAX,IAAuB7E,CAAC,CAAC8E,MAAF,KAAa,CAAxC,EAA2C;AACvC,QAAA,OAAA;AACH,OAJoB;;;AAOrB,MAAA,KAAA,CAAK7B,QAAL,CAAc;AAAEI,QAAAA,OAAO,EAAE,IAAA;OAAzB,CAAA,CAAA;;AAEA,MAAA,IAAI,CAAC,KAAA,CAAKvB,KAAL,CAAWiD,gBAAhB,EAAkC;AAC9B,QAAA,MAAMzB,QAAQ,GAAG,KAAA,CAAKC,gBAAL,CAAsBvD,CAAtB,CAAjB,CAAA;;QACA,KAAKgF,CAAAA,sBAAL,CAA4B1B,QAAQ,CAAC,CAAD,CAApC,EAAyCxC,CAAC,IAAI;AAC1C,UAAA,KAAA,CAAKmE,KAAL,CAAWnE,CAAX,EAAcwC,QAAQ,CAAC,CAAD,CAAtB,CAAA,CAAA;;AACApC,UAAAA,WAAW,CAAC,KAAA,CAAK2B,gBAAL,EAAD,CAAX,CAAA;SAFJ,CAAA,CAAA;AAIH,OAAA;;MAED9C,UAAU,CAACC,CAAD,CAAV,CAAA;KAtMe,CAAA;;IAAA,KAyMnBkF,CAAAA,aAzMmB,GAyMHlF,CAAC,IAAI;AACjB,MAAA,IAAI,KAAK8B,CAAAA,KAAL,CAAW+C,QAAf,EAAyB;AACrB,QAAA,OAAA;AACH,OAAA;;MAED,IAAI,KAAA,CAAK/C,KAAL,CAAWoD,aAAX,IAA4B,CAAC,KAAA,CAAKC,QAAtC,EAAgD;AAC5C,QAAA,MAAM7B,QAAQ,GAAG,KAAA,CAAKC,gBAAL,CAAsBvD,CAAtB,CAAjB,CAAA;;AACA,QAAA,MAAMoF,UAAU,GAAGxD,cAAc,CAC7B,KAAKyD,CAAAA,SAAL,CAAe,KAAKC,CAAAA,sBAAL,CAA4BhC,QAAQ,CAAC,CAAD,CAApC,CAAf,CAD6B,EAE7B,KAAA,CAAKxB,KAFwB,CAAjC,CAAA;;AAIA,QAAA,KAAA,CAAKA,KAAL,CAAWoD,aAAX,CAAyBE,UAAzB,CAAA,CAAA;AACH,OAAA;KArNc,CAAA;;AAAA,IAAA,KAAA,CA8RnBG,eA9RmB,GA8RDzE,CAAC,IAAId,CAAC,IAAI;AACxB,MAAA,IAAI,KAAK8B,CAAAA,KAAL,CAAW+C,QAAf,EAAyB;AACrB,QAAA,OAAA;AACH,OAAA;;MACD,KAAKI,CAAAA,KAAL,CAAWnE,CAAX,CAAA,CAAA;;AACAI,MAAAA,WAAW,CAAC,KAAA,CAAKiC,kBAAL,EAAD,CAAX,CAAA;MACApD,UAAU,CAACC,CAAD,CAAV,CAAA;KApSe,CAAA;;AAAA,IAAA,KAAA,CAwSnBwF,iBAxSmB,GAwSC1E,CAAC,IAAId,CAAC,IAAI;AAC1B;MACA,IAAI,KAAA,CAAK8B,KAAL,CAAW+C,QAAX,IAAuB7E,CAAC,CAAC8E,MAAF,KAAa,CAAxC,EAA2C;AACvC,QAAA,OAAA;AACH,OAJyB;;;AAO1B,MAAA,KAAA,CAAK7B,QAAL,CAAc;AAAEI,QAAAA,OAAO,EAAE,IAAA;OAAzB,CAAA,CAAA;;AAEA,MAAA,MAAMC,QAAQ,GAAG,KAAA,CAAKC,gBAAL,CAAsBvD,CAAtB,CAAjB,CAAA;;AACA,MAAA,KAAA,CAAKiF,KAAL,CAAWnE,CAAX,EAAcwC,QAAQ,CAAC,CAAD,CAAtB,CAAA,CAAA;;AACApC,MAAAA,WAAW,CAAC,KAAA,CAAK2B,gBAAL,EAAD,CAAX,CAAA;MACA9C,UAAU,CAACC,CAAD,CAAV,CAAA;KApTe,CAAA;;AAAA,IAAA,KAAA,CAwTnByF,kBAxTmB,GAwTE3E,CAAC,IAAId,CAAC,IAAI;AAC3B,MAAA,IAAI,KAAK8B,CAAAA,KAAL,CAAW+C,QAAX,IAAuB7E,CAAC,CAAC8D,OAAF,CAAUrD,MAAV,GAAmB,CAA9C,EAAiD;AAC7C,QAAA,OAAA;AACH,OAH0B;;;AAM3B,MAAA,KAAA,CAAKwC,QAAL,CAAc;AAAEI,QAAAA,OAAO,EAAE,IAAA;OAAzB,CAAA,CAAA;;AAEA,MAAA,MAAMC,QAAQ,GAAG,KAAA,CAAKS,gBAAL,CAAsB/D,CAAtB,CAAjB,CAAA;;AACA,MAAA,KAAA,CAAKkE,aAAL,GAAqBZ,QAArB,CAT2B;;MAW3B,KAAKU,CAAAA,WAAL,GAAmB0B,SAAnB,CAAA;;AACA,MAAA,KAAA,CAAKT,KAAL,CAAWnE,CAAX,EAAcwC,QAAQ,CAAC,CAAD,CAAtB,CAAA,CAAA;;AACApC,MAAAA,WAAW,CAAC,KAAA,CAAK6B,gBAAL,EAAD,CAAX,CAAA;MACA9C,eAAe,CAACD,CAAD,CAAf,CAAA;KAtUe,CAAA;;IAAA,KAyUnB2F,CAAAA,YAzUmB,GAyUJ,MAAM;AACjB;AACA;AACA,MAAA,MAAMC,aAAa,GAAGC,MAAM,CAACC,UAAP,CAAkB,MAAM;AAC1C;QACA,KAAKC,CAAAA,qBAAL,CAA2BC,KAA3B,EAAA,CAAA;;AACA,QAAA,KAAA,CAAKC,MAAL,EAAA,CAAA;OAHkB,EAInB,CAJmB,CAAtB,CAAA;;AAMA,MAAA,KAAA,CAAKF,qBAAL,CAA2BG,IAA3B,CAAgCN,aAAhC,CAAA,CAAA;KAlVe,CAAA;;AAAA,IAAA,KAAA,CA4oBnBO,WA5oBmB,GA4oBL,CAACC,KAAD,EAAQtF,CAAR,KAAc;MACxB,MAAMuF,SAAS,GAAM,KAAA,CAAKvE,KAAL,CAAWwE,cAAjB,GAAA,GAAA,GAAmC,KAAKxE,CAAAA,KAAL,CAAWwE,cAA9C,GAAgExF,GAAAA,GAAAA,CAAhE,GACX,GAAA,IAAA,KAAA,CAAKyF,KAAL,CAAWrD,KAAX,KAAqBpC,CAArB,GAAyB,KAAKgB,CAAAA,KAAL,CAAW0E,oBAApC,GAA2D,EADhD,CAAf,CAAA;AAIA,MAAA,MAAM1E,KAAK,GAAG;AACV,QAAA,KAAA,EAAO2E,CAAC,IAAI;UACR,KAAa3F,CAAAA,OAAAA,GAAAA,CAAb,IAAoB2F,CAApB,CAAA;SAFM;AAIV,QAAA,KAAA,EAAU,KAAK3E,CAAAA,KAAL,CAAWwE,cAArB,SAAuCxF,CAJ7B;QAKVuF,SALU;QAMVD,KANU;AAOV,QAAA,aAAA,EAAe,KAAKZ,CAAAA,iBAAL,CAAuB1E,CAAvB,CAPL;AAQV,QAAA,cAAA,EAAgB,KAAK2E,CAAAA,kBAAL,CAAwB3E,CAAxB,CARN;AASV,QAAA,SAAA,EAAW,KAAKyE,CAAAA,eAAL,CAAqBzE,CAArB,CATD;AAUV,QAAA,UAAA,EAAY,CAVF;AAWV,QAAA,MAAA,EAAQ,QAXE;QAYV,kBAAoB,EAAA,KAAA,CAAKgB,KAAL,CAAW4E,WAZrB;AAaV,QAAA,eAAA,EAAiB,MAAKH,KAAL,CAAWI,KAAX,CAAiB7F,CAAjB,CAbP;QAcV,eAAiB,EAAA,KAAA,CAAKgB,KAAL,CAAWb,GAdlB;QAeV,eAAiB,EAAA,KAAA,CAAKa,KAAL,CAAWjB,GAflB;QAgBV,YAAcR,EAAAA,KAAK,CAACC,OAAN,CAAc,MAAKwB,KAAL,CAAW8E,SAAzB,CACR,GAAA,KAAA,CAAK9E,KAAL,CAAW8E,SAAX,CAAqB9F,CAArB,CADQ,GAER,KAAKgB,CAAAA,KAAL,CAAW8E,SAlBP;QAmBV,iBAAmBvG,EAAAA,KAAK,CAACC,OAAN,CAAc,MAAKwB,KAAL,CAAW+E,cAAzB,CACb,GAAA,KAAA,CAAK/E,KAAL,CAAW+E,cAAX,CAA0B/F,CAA1B,CADa,GAEb,KAAKgB,CAAAA,KAAL,CAAW+E,cArBP;QAsBV,eAAiB,EAAA,KAAA,CAAK/E,KAAL,CAAW+C,QAAAA;OAtBhC,CAAA;AAyBA,MAAA,MAAM0B,KAAK,GAAG;AACVrD,QAAAA,KAAK,EAAEpC,CADG;AAEV6F,QAAAA,KAAK,EAAEnG,eAAe,CAAC,MAAK+F,KAAL,CAAWI,KAAZ,CAFZ;AAGVG,QAAAA,QAAQ,EAAE,KAAKP,CAAAA,KAAL,CAAWI,KAAX,CAAiB7F,CAAjB,CAAA;OAHd,CAAA;;AAMA,MAAA,IAAI,KAAKgB,CAAAA,KAAL,CAAWiF,aAAf,EAA8B;QAC1BjF,KAAK,CAAC,gBAAD,CAAL,GACI,OAAO,KAAKA,CAAAA,KAAL,CAAWiF,aAAlB,KAAoC,QAApC,GACM,KAAKjF,CAAAA,KAAL,CAAWiF,aADjB,GAEM,KAAA,CAAKjF,KAAL,CAAWiF,aAAX,CAAyBR,KAAzB,CAHV,CAAA;AAIH,OAAA;;MAED,OAAO,KAAA,CAAKzE,KAAL,CAAWqE,WAAX,CAAuBrE,KAAvB,EAA8ByE,KAA9B,CAAP,CAAA;KAvrBe,CAAA;;IAAA,KAysBnBS,CAAAA,WAzsBmB,GAysBL,CAAClG,CAAD,EAAImG,UAAJ,EAAgBC,QAAhB,KAA6B;AACvC,MAAA,MAAMpF,KAAK,GAAG;AACVP,QAAAA,GAAG,EAAK,KAAKO,CAAAA,KAAL,CAAWqF,cAAhB,SAAkCrG,CAD3B;QAEVuF,SAAS,EAAK,KAAKvE,CAAAA,KAAL,CAAWqF,cAAhB,GAAkC,GAAA,GAAA,KAAA,CAAKrF,KAAL,CAAWqF,cAA7C,GAAA,GAAA,GAA+DrG,CAF9D;QAGVsF,KAAK,EAAE,KAAKgB,CAAAA,eAAL,CAAqBH,UAArB,EAAiC,KAAA,CAAKV,KAAL,CAAWc,UAAX,GAAwBH,QAAzD,CAAA;OAHX,CAAA;AAKA,MAAA,MAAMX,KAAK,GAAG;AACVrD,QAAAA,KAAK,EAAEpC,CADG;AAEV6F,QAAAA,KAAK,EAAEnG,eAAe,CAAC,KAAK+F,CAAAA,KAAL,CAAWI,KAAZ,CAAA;OAF1B,CAAA;MAIA,OAAO,KAAA,CAAK7E,KAAL,CAAWkF,WAAX,CAAuBlF,KAAvB,EAA8ByE,KAA9B,CAAP,CAAA;KAntBe,CAAA;;AAGf,IAAA,IAAII,KAAK,GAAGxG,eAAe,CAAC2B,MAAK,CAAC6E,KAAP,CAA3B,CAAA;;AACA,IAAA,IAAI,CAACA,KAAK,CAAClG,MAAX,EAAmB;AACfkG,MAAAA,KAAK,GAAGxG,eAAe,CAAC2B,MAAK,CAACwF,YAAP,CAAvB,CAAA;AACH,KANc;;;IASf,KAAKvB,CAAAA,qBAAL,GAA6B,EAA7B,CAAA;IAEA,MAAMwB,QAAQ,GAAG,EAAjB,CAAA;;AACA,IAAA,KAAK,IAAIzG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6F,KAAK,CAAClG,MAA1B,EAAkCK,CAAC,IAAI,CAAvC,EAA0C;AACtC6F,MAAAA,KAAK,CAAC7F,CAAD,CAAL,GAAWc,cAAc,CAAC+E,KAAK,CAAC7F,CAAD,CAAN,EAAWgB,MAAX,CAAzB,CAAA;MACAyF,QAAQ,CAACrB,IAAT,CAAcpF,CAAd,CAAA,CAAA;AACH,KAAA;;IAED,KAAK0G,CAAAA,cAAL,GAAsB,IAAtB,CAAA;AACA,IAAA,KAAA,CAAKC,gBAAL,gBAAwBC,KAAK,CAACC,SAAN,EAAxB,CAAA;AAEA,IAAA,KAAA,CAAKpB,KAAL,GAAa;MACTrD,KAAK,EAAE,CAAC,CADC;AAETmE,MAAAA,UAAU,EAAE,CAFH;AAGTO,MAAAA,YAAY,EAAE,CAHL;MAITjB,KAJS;AAKTY,MAAAA,QAAAA;KALJ,CAAA;AApBe,IAAA,OAAA,KAAA,CAAA;AA2BlB,GAAA;;;;AAEDM,EAAAA,MAAAA,CAAAA,oBAAA,SAAoB,iBAAA,GAAA;AAChB,IAAA,IAAI,OAAOhC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,MAAA,IAAA,CAAK2B,cAAL,GAAsB,IAAIM,cAAJ,CAAmB,IAAA,CAAKnC,YAAxB,CAAtB,CAAA;AACA,MAAA,IAAA,CAAK6B,cAAL,CAAoBO,OAApB,CAA4B,IAAKN,CAAAA,gBAAL,CAAsBO,OAAlD,CAAA,CAAA;AACA,MAAA,IAAA,CAAK/B,MAAL,EAAA,CAAA;AACH,KAAA;AACJ;AAGD;;;AACOgC,EAAAA,WAAAA,CAAAA,2BAAP,SAAA,wBAAA,CAAgCnG,KAAhC,EAAuCyE,KAAvC,EAA8C;AAC1C,IAAA,MAAMI,KAAK,GAAGxG,eAAe,CAAC2B,KAAK,CAAC6E,KAAP,CAA7B,CAAA;;AACA,IAAA,IAAI,CAACA,KAAK,CAAClG,MAAX,EAAmB;AACf,MAAA,OAAO,IAAP,CAAA;AACH,KAJyC;;;IAO1C,IAAI8F,KAAK,CAAClD,OAAV,EAAmB;AACf,MAAA,OAAO,IAAP,CAAA;AACH,KAAA;;IAED,OAAO;AACHsD,MAAAA,KAAK,EAAEA,KAAK,CAACuB,GAAN,CAAUC,IAAI,IAAIvG,cAAc,CAACuG,IAAD,EAAOrG,KAAP,CAAhC,CAAA;KADX,CAAA;;;AAKJsG,EAAAA,MAAAA,CAAAA,qBAAA,SAAqB,kBAAA,GAAA;AACjB;AACA;AACA,IAAA,IAAI,KAAK7B,KAAL,CAAWc,UAAX,KAA0B,CAA9B,EAAiC;AAC7B,MAAA,IAAA,CAAKpB,MAAL,EAAA,CAAA;AACH,KAAA;;;AAGLoC,EAAAA,MAAAA,CAAAA,uBAAA,SAAuB,oBAAA,GAAA;AACnB,IAAA,IAAA,CAAKC,0BAAL,EAAA,CAAA;;IACA,IAAI,IAAA,CAAKd,cAAT,EAAyB;MACrB,IAAKA,CAAAA,cAAL,CAAoBe,UAApB,EAAA,CAAA;AACH,KAAA;;;SAoBL5F,QAAA,SAAMxB,KAAAA,CAAAA,QAAN,EAAgB;AACZ,IAAA,IAAIA,QAAJ,EAAc;MACVO,cAAc,CAACP,QAAD,CAAd,CAAA;AACH,KAAA;;IACD,IAAI,IAAA,CAAKgE,QAAT,EAAmB;MACf,IAAKqD,CAAAA,eAAL,CAAqB,eAArB,CAAA,CAAA;AACH,KANW;;;AASZ,IAAA,IAAA,CAAKvF,QAAL,CAAc;AAAEI,MAAAA,OAAO,EAAE,KAAA;KAAzB,CAAA,CAAA;IAEA,IAAK8B,CAAAA,QAAL,GAAgB,KAAhB,CAAA;;;AAsHJsD,EAAAA,MAAAA,CAAAA,WAAA,SAAW,QAAA,GAAA;AACP,IAAA,OAAOjI,eAAe,CAAC,IAAA,CAAK+F,KAAL,CAAWI,KAAZ,CAAtB,CAAA;;;SAGJ+B,kBAAA,SAAgBC,eAAAA,CAAAA,WAAhB,EAA6B;AACzB,IAAA,IAAIC,OAAO,GAAGC,MAAM,CAACC,SAArB,CAAA;IACA,IAAIC,YAAY,GAAG,CAAC,CAApB,CAAA;IAEA,MAAM;AAAEpC,MAAAA,KAAAA;AAAF,KAAA,GAAY,KAAKJ,KAAvB,CAAA;AACA,IAAA,MAAMyC,CAAC,GAAGrC,KAAK,CAAClG,MAAhB,CAAA;;AAEA,IAAA,KAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkI,CAApB,EAAuBlI,CAAC,IAAI,CAA5B,EAA+B;MAC3B,MAAMmI,MAAM,GAAG,IAAKC,CAAAA,UAAL,CAAgBvC,KAAK,CAAC7F,CAAD,CAArB,CAAf,CAAA;MACA,MAAMqI,IAAI,GAAG/G,IAAI,CAACC,GAAL,CAASsG,WAAW,GAAGM,MAAvB,CAAb,CAAA;;MACA,IAAIE,IAAI,GAAGP,OAAX,EAAoB;AAChBA,QAAAA,OAAO,GAAGO,IAAV,CAAA;AACAJ,QAAAA,YAAY,GAAGjI,CAAf,CAAA;AACH,OAAA;AACJ,KAAA;;AAED,IAAA,OAAOiI,YAAP,CAAA;;;SAGJxF,mBAAA,SAAiBvD,gBAAAA,CAAAA,CAAjB,EAAoB;AAChB,IAAA,OAAO,CAACA,CAAC,CAAQ,MAAA,GAAA,IAAA,CAAKoJ,OAAL,EAAR,CAAF,EAA6BpJ,CAAC,CAAQ,MAAA,GAAA,IAAA,CAAKqJ,iBAAL,EAAR,CAA9B,CAAP,CAAA;;;SAGJtF,mBAAA,SAAiB/D,gBAAAA,CAAAA,CAAjB,EAAoB;AAChB,IAAA,MAAMsJ,KAAK,GAAGtJ,CAAC,CAAC8D,OAAF,CAAU,CAAV,CAAd,CAAA;AACA,IAAA,OAAO,CAACwF,KAAK,CAAQ,MAAA,GAAA,IAAA,CAAKF,OAAL,EAAR,CAAN,EAAiCE,KAAK,CAAQ,MAAA,GAAA,IAAA,CAAKD,iBAAL,EAAR,CAAtC,CAAP,CAAA;;;AAGJlG,EAAAA,MAAAA,CAAAA,qBAAA,SAAqB,kBAAA,GAAA;IACjB,OAAO;MACHoG,OAAO,EAAE,KAAKnF,SADX;MAEHoF,KAAK,EAAE,KAAK9G,OAFT;AAGH+G,MAAAA,QAAQ,EAAE,IAAKzG,CAAAA,MAAAA;KAHnB,CAAA;;;AAOJH,EAAAA,MAAAA,CAAAA,mBAAA,SAAmB,gBAAA,GAAA;IACf,OAAO;MACH6G,SAAS,EAAE,KAAKtG,WADb;AAEHuG,MAAAA,OAAO,EAAE,IAAK/G,CAAAA,SAAAA;KAFlB,CAAA;;;AAMJG,EAAAA,MAAAA,CAAAA,mBAAA,SAAmB,gBAAA,GAAA;IACf,OAAO;MACH6G,SAAS,EAAE,KAAK/F,WADb;AAEHgG,MAAAA,QAAQ,EAAE,IAAK/G,CAAAA,UAAAA;KAFnB,CAAA;;;SAMJa,uBAAA,SAAqBL,oBAAAA,CAAAA,QAArB,EAA+B;IAC3B,MAAMwG,SAAS,GACVxG,QAAQ,IAAI,IAAA,CAAKiD,KAAL,CAAWqB,YAAX,GAA0B,IAAA,CAAKrB,KAAL,CAAWwD,SAAzC,CAAT,IACC,IAAKjI,CAAAA,KAAL,CAAWjB,GAAX,GAAiB,IAAKiB,CAAAA,KAAL,CAAWb,GAD7B,CADJ,CAAA;IAGA,OAAOW,cAAc,CAAC,IAAA,CAAK2E,KAAL,CAAWyD,UAAX,GAAwBF,SAAzB,EAAoC,IAAKhI,CAAAA,KAAzC,CAArB,CAAA;;;SAGJ2B,kBAAA,SAAgBH,eAAAA,CAAAA,QAAhB,EAA0B;AACtB,IAAA,IAAIE,YAAY,GAAGF,QAAQ,GAAG,IAAKiD,CAAAA,KAAL,CAAWrC,aAAzC,CAAA;;AACA,IAAA,IAAI,IAAKpC,CAAAA,KAAL,CAAWmI,MAAf,EAAuB;MACnBzG,YAAY,IAAI,CAAC,CAAjB,CAAA;AACH,KAAA;;AACD,IAAA,OAAOA,YAAP,CAAA;AACH;;;AA0DDyC,EAAAA,MAAAA,CAAAA,SAAA,SAAS,MAAA,GAAA;IACL,MAAM;MAAEiE,MAAF;AAAUC,MAAAA,MAAM,EAAEC,KAAAA;AAAlB,KAAA,GAA4B,IAAlC,CAAA;;AACA,IAAA,IAAI,CAACF,MAAD,IAAW,CAACE,KAAhB,EAAuB;AACnB,MAAA,OAAA;AACH,KAAA;;AAED,IAAA,MAAMC,OAAO,GAAG,IAAA,CAAKA,OAAL,EAAhB,CANK;;AASL,IAAA,MAAMC,UAAU,GAAGJ,MAAM,CAACK,qBAAP,EAAnB,CAAA;AACA,IAAA,MAAMC,UAAU,GAAGN,MAAM,CAACG,OAAD,CAAzB,CAAA;AACA,IAAA,MAAMI,SAAS,GAAGH,UAAU,CAAC,IAAKI,CAAAA,SAAL,EAAD,CAA5B,CAAA;IACA,MAAMC,SAAS,GAAGL,UAAU,CAAC,KAAKM,SAAL,EAAD,CAA5B,CAZK;;AAeL,IAAA,MAAMC,SAAS,GAAGT,KAAK,CAACG,qBAAN,EAAlB,CAAA;AACA,IAAA,MAAMR,SAAS,GAAGc,SAAS,CAACR,OAAO,CAACS,OAAR,CAAgB,QAAhB,EAA0B,EAA1B,CAA8BC,CAAAA,WAA9B,EAAD,CAA3B,CAAA;AAEA,IAAA,MAAM1D,UAAU,GAAGmD,UAAU,GAAGT,SAAhC,CAAA;IACA,MAAMnC,YAAY,GAAGxF,IAAI,CAACC,GAAL,CAASoI,SAAS,GAAGE,SAArB,CAArB,CAAA;;IAEA,IACI,IAAA,CAAKpE,KAAL,CAAWc,UAAX,KAA0BA,UAA1B,IACA,KAAKd,KAAL,CAAWqB,YAAX,KAA4BA,YAD5B,IAEA,IAAKrB,CAAAA,KAAL,CAAWwD,SAAX,KAAyBA,SAH7B,EAIE;AACE,MAAA,IAAA,CAAK9G,QAAL,CAAc;QACVoE,UADU;QAEVO,YAFU;AAGVmC,QAAAA,SAAAA;OAHJ,CAAA,CAAA;AAKH,KAAA;AACJ;;;SAGDb,aAAA,SAAWvC,UAAAA,CAAAA,KAAX,EAAkB;IACd,MAAMqE,KAAK,GAAG,IAAA,CAAKlJ,KAAL,CAAWjB,GAAX,GAAiB,IAAA,CAAKiB,KAAL,CAAWb,GAA1C,CAAA;;IACA,IAAI+J,KAAK,KAAK,CAAd,EAAiB;AACb,MAAA,OAAO,CAAP,CAAA;AACH,KAAA;;IACD,MAAMC,KAAK,GAAG,CAACtE,KAAK,GAAG,KAAK7E,KAAL,CAAWb,GAApB,IAA2B+J,KAAzC,CAAA;AACA,IAAA,OAAOC,KAAK,GAAG,IAAK1E,CAAAA,KAAL,CAAWc,UAA1B,CAAA;AACH;;;SAGDhC,YAAA,SAAU4D,SAAAA,CAAAA,MAAV,EAAkB;AACd,IAAA,MAAMgC,KAAK,GAAGhC,MAAM,GAAG,IAAK1C,CAAAA,KAAL,CAAWc,UAAlC,CAAA;AACA,IAAA,OAAO4D,KAAK,IAAI,IAAA,CAAKnJ,KAAL,CAAWjB,GAAX,GAAiB,IAAA,CAAKiB,KAAL,CAAWb,GAAhC,CAAL,GAA4C,IAAKa,CAAAA,KAAL,CAAWb,GAA9D,CAAA;;;SAGJqE,yBAAA,SAAuBhC,sBAAAA,CAAAA,QAAvB,EAAiC;IAC7B,MAAM;AAAE4G,MAAAA,MAAAA;AAAF,KAAA,GAAa,IAAnB,CAAA;AAEA,IAAA,MAAMI,UAAU,GAAGJ,MAAM,CAACK,qBAAP,EAAnB,CAAA;AACA,IAAA,MAAME,SAAS,GAAGH,UAAU,CAAC,IAAKI,CAAAA,SAAL,EAAD,CAA5B,CAAA;IACA,MAAMC,SAAS,GAAGL,UAAU,CAAC,KAAKM,SAAL,EAAD,CAA5B,CAL6B;AAQ7B;AACA;;AACA,IAAA,MAAMM,YAAY,GAAGrF,MAAM,UAAQ,IAAKuD,CAAAA,OAAL,EAAR,GAA3B,QAAA,CAAA,CAAA;AACA,IAAA,MAAM+B,WAAW,GAAGD,YAAY,IAAI,IAAKpJ,CAAAA,KAAL,CAAWmI,MAAX,GAAoBQ,SAApB,GAAgCE,SAApC,CAAhC,CAAA;AAEA,IAAA,IAAIhC,WAAW,GAAGrF,QAAQ,GAAG6H,WAA7B,CAAA;;AACA,IAAA,IAAI,IAAKrJ,CAAAA,KAAL,CAAWmI,MAAf,EAAuB;AACnBtB,MAAAA,WAAW,GAAG,IAAKpC,CAAAA,KAAL,CAAWqB,YAAX,GAA0Be,WAAxC,CAAA;AACH,KAAA;;AACDA,IAAAA,WAAW,IAAI,IAAKpC,CAAAA,KAAL,CAAWwD,SAAX,GAAuB,CAAtC,CAAA;AACA,IAAA,OAAOpB,WAAP,CAAA;AACH;AAGD;;;AACA3D,EAAAA,MAAAA,CAAAA,yBAAA,SAAA,sBAAA,CAAuB1B,QAAvB,EAAiC8H,QAAjC,EAA2C;AACvC,IAAA,MAAMzC,WAAW,GAAG,IAAA,CAAKrD,sBAAL,CAA4BhC,QAA5B,CAApB,CAAA;AACA,IAAA,MAAMyF,YAAY,GAAG,IAAA,CAAKL,eAAL,CAAqBC,WAArB,CAArB,CAAA;AACA,IAAA,MAAMhI,SAAS,GAAGiB,cAAc,CAAC,KAAKyD,SAAL,CAAesD,WAAf,CAAD,EAA8B,IAAA,CAAK7G,KAAnC,CAAhC,CAHuC;AAMvC;;IACA,MAAM6E,KAAK,GAAG,IAAKJ,CAAAA,KAAL,CAAWI,KAAX,CAAiBpG,KAAjB,EAAd,CAAA;AACAoG,IAAAA,KAAK,CAACoC,YAAD,CAAL,GAAsBpI,SAAtB,CARuC;;AAWvC,IAAA,KAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6F,KAAK,CAAClG,MAAN,GAAe,CAAnC,EAAsCK,CAAC,IAAI,CAA3C,EAA8C;AAC1C,MAAA,IAAI6F,KAAK,CAAC7F,CAAC,GAAG,CAAL,CAAL,GAAe6F,KAAK,CAAC7F,CAAD,CAApB,GAA0B,IAAA,CAAKgB,KAAL,CAAWlB,WAAzC,EAAsD;AAClD,QAAA,OAAA;AACH,OAAA;AACJ,KAAA;;IAED,IAAK4H,CAAAA,eAAL,CAAqB,gBAArB,CAAA,CAAA;IACA,IAAKrD,CAAAA,QAAL,GAAgB,IAAhB,CAAA;AACA,IAAA,IAAA,CAAKlC,QAAL,CAAc;AAAE0D,MAAAA,KAAAA;AAAF,KAAd,EAAyB,MAAM;MAC3ByE,QAAQ,CAACrC,YAAD,CAAR,CAAA;MACA,IAAKP,CAAAA,eAAL,CAAqB,UAArB,CAAA,CAAA;KAFJ,CAAA,CAAA;AAIH;;;AAGDF,EAAAA,MAAAA,CAAAA,6BAAA,SAA6B,0BAAA,GAAA;IACzB,GAAG;AACC,MAAA,MAAM+C,WAAW,GAAG,IAAA,CAAKtF,qBAAL,CAA2BC,KAA3B,EAApB,CAAA;MAEAsF,YAAY,CAACD,WAAD,CAAZ,CAAA;AACH,KAJD,QAIS,IAAA,CAAKtF,qBAAL,CAA2BtF,MAJpC,EAAA;;;AAOJwE,EAAAA,MAAAA,CAAAA,QAAA,SAAA,KAAA,CAAMnE,CAAN,EAASwC,QAAT,EAAmB;AACf,IAAA,MAAMiI,QAAQ,GAAG,IAAazK,CAAAA,OAAAA,GAAAA,CAAb,CAAjB,CAAA;;AACA,IAAA,IAAIyK,QAAJ,EAAc;AACVA,MAAAA,QAAQ,CAACC,KAAT,EAAA,CAAA;AACH,KAAA;;IAED,MAAM;AAAEjE,MAAAA,QAAAA;KAAa,GAAA,IAAA,CAAKhB,KAA1B,CANe;;AAQfgB,IAAAA,QAAQ,CAACkE,MAAT,CAAgBlE,QAAQ,CAACmE,OAAT,CAAiB5K,CAAjB,CAAhB,EAAqC,CAArC,CAAA,CARe;;IAUfyG,QAAQ,CAACrB,IAAT,CAAcpF,CAAd,CAAA,CAAA;IAEA,IAAKmC,CAAAA,QAAL,CAAc0I,SAAS,KAAK;AACxB3B,MAAAA,UAAU,EAAE2B,SAAS,CAAChF,KAAV,CAAgB7F,CAAhB,CADY;MAExBoD,aAAa,EAAEZ,QAAQ,KAAKoC,SAAb,GAAyBpC,QAAzB,GAAoCqI,SAAS,CAACzH,aAFrC;AAGxBhB,MAAAA,KAAK,EAAEpC,CAHiB;AAIxByG,MAAAA,QAAAA;AAJwB,KAAL,CAAvB,CAAA,CAAA;;;SAQJ7C,eAAA,SAAaxC,YAAAA,CAAAA,IAAb,EAAqC;AAAA,IAAA,IAAxBA,IAAwB,KAAA,KAAA,CAAA,EAAA;AAAxBA,MAAAA,IAAwB,GAAjB,IAAA,CAAKJ,KAAL,CAAWI,IAAM,CAAA;AAAA,KAAA;;AACjC,IAAA,MAAM0J,QAAQ,GAAG,IAAKrF,CAAAA,KAAL,CAAWI,KAAX,CAAiB,IAAA,CAAKJ,KAAL,CAAWrD,KAA5B,CAAjB,CADiC;;IAIjC,MAAMQ,QAAQ,GACV,IAAK5B,CAAAA,KAAL,CAAWmI,MAAX,IAAqB,KAAKnI,KAAL,CAAW4E,WAAX,KAA2B,YAAhD,GACMkF,QAAQ,GAAG1J,IADjB,GAEM0J,QAAQ,GAAG1J,IAHrB,CAAA;IAKA,MAAM2J,SAAS,GAAGjK,cAAc,CAAC8B,QAAD,EAAW,IAAA,CAAK5B,KAAhB,CAAhC,CAAA;AACA,IAAA,IAAA,CAAK8B,IAAL,CAAUxB,IAAI,CAACnB,GAAL,CAAS4K,SAAT,EAAoB,IAAK/J,CAAAA,KAAL,CAAWjB,GAA/B,CAAV,CAAA,CAAA;;;SAGJ4D,iBAAA,SAAevC,cAAAA,CAAAA,IAAf,EAAuC;AAAA,IAAA,IAAxBA,IAAwB,KAAA,KAAA,CAAA,EAAA;AAAxBA,MAAAA,IAAwB,GAAjB,IAAA,CAAKJ,KAAL,CAAWI,IAAM,CAAA;AAAA,KAAA;;AACnC,IAAA,MAAM0J,QAAQ,GAAG,IAAKrF,CAAAA,KAAL,CAAWI,KAAX,CAAiB,IAAA,CAAKJ,KAAL,CAAWrD,KAA5B,CAAjB,CADmC;;IAInC,MAAMQ,QAAQ,GACV,IAAK5B,CAAAA,KAAL,CAAWmI,MAAX,IAAqB,KAAKnI,KAAL,CAAW4E,WAAX,KAA2B,YAAhD,GACMkF,QAAQ,GAAG1J,IADjB,GAEM0J,QAAQ,GAAG1J,IAHrB,CAAA;IAKA,MAAM2J,SAAS,GAAGjK,cAAc,CAAC8B,QAAD,EAAW,IAAA,CAAK5B,KAAhB,CAAhC,CAAA;AACA,IAAA,IAAA,CAAK8B,IAAL,CAAUxB,IAAI,CAACvB,GAAL,CAASgL,SAAT,EAAoB,IAAK/J,CAAAA,KAAL,CAAWb,GAA/B,CAAV,CAAA,CAAA;;;SAGJ2C,OAAA,SAAKF,IAAAA,CAAAA,QAAL,EAAe;AACX;AACA;IACA,MAAMiD,KAAK,GAAG,IAAKJ,CAAAA,KAAL,CAAWI,KAAX,CAAiBpG,KAAjB,EAAd,CAAA;IACA,MAAM;AAAE2C,MAAAA,KAAAA;AAAF,KAAA,GAAY,KAAKqD,KAAvB,CAAA;IACA,MAAM;AAAE9F,MAAAA,MAAAA;KAAWkG,GAAAA,KAAnB,CALW;;AAQX,IAAA,MAAMiF,QAAQ,GAAGjF,KAAK,CAACzD,KAAD,CAAtB,CAAA;;IACA,IAAIQ,QAAQ,KAAKkI,QAAjB,EAA2B;AACvB,MAAA,OAAA;AACH,KAXU;;;IAcX,IAAI,CAAC,IAAKzG,CAAAA,QAAV,EAAoB;MAChB,IAAKqD,CAAAA,eAAL,CAAqB,gBAArB,CAAA,CAAA;AACH,KAAA;;AACD,IAAA,IAAA,CAAKrD,QAAL,GAAgB,IAAhB,CAjBW;AAoBX;;IACA,MAAM;MAAE2G,QAAF;MAAYjL,GAAZ;MAAiBI,GAAjB;AAAsBL,MAAAA,WAAAA;AAAtB,KAAA,GAAsC,KAAKkB,KAAjD,CAAA;;IACA,IAAI,CAACgK,QAAL,EAAe;MACX,IAAI5I,KAAK,GAAG,CAAZ,EAAe;AACX,QAAA,MAAM6I,WAAW,GAAGpF,KAAK,CAACzD,KAAK,GAAG,CAAT,CAAzB,CAAA;;AACA,QAAA,IAAIQ,QAAQ,GAAGqI,WAAW,GAAGnL,WAA7B,EAA0C;AACtC;UACA8C,QAAQ,GAAGqI,WAAW,GAAGnL,WAAzB,CAAA;AACH,SAAA;AACJ,OAAA;;AAED,MAAA,IAAIsC,KAAK,GAAGzC,MAAM,GAAG,CAArB,EAAwB;AACpB,QAAA,MAAMuL,UAAU,GAAGrF,KAAK,CAACzD,KAAK,GAAG,CAAT,CAAxB,CAAA;;AACA,QAAA,IAAIQ,QAAQ,GAAGsI,UAAU,GAAGpL,WAA5B,EAAyC;AACrC;UACA8C,QAAQ,GAAGsI,UAAU,GAAGpL,WAAxB,CAAA;AACH,SAAA;AACJ,OAAA;AACJ,KAAA;;AAED+F,IAAAA,KAAK,CAACzD,KAAD,CAAL,GAAeQ,QAAf,CAxCW;;AA2CX,IAAA,IAAIoI,QAAQ,IAAIrL,MAAM,GAAG,CAAzB,EAA4B;MACxB,IAAIiD,QAAQ,GAAGkI,QAAf,EAAyB;AACrB,QAAA,IAAA,CAAKK,cAAL,CAAoBtF,KAApB,EAA2B/F,WAA3B,EAAwCsC,KAAxC,CAAA,CAAA;QACAxC,cAAc,CAACD,MAAD,EAASkG,KAAT,EAAgB/F,WAAhB,EAA6BC,GAA7B,CAAd,CAAA;AACH,OAHD,MAGO,IAAI6C,QAAQ,GAAGkI,QAAf,EAAyB;AAC5B,QAAA,IAAA,CAAKM,aAAL,CAAmBvF,KAAnB,EAA0B/F,WAA1B,EAAuCsC,KAAvC,CAAA,CAAA;QACAlC,aAAa,CAACP,MAAD,EAASkG,KAAT,EAAgB/F,WAAhB,EAA6BK,GAA7B,CAAb,CAAA;AACH,OAAA;AACJ,KAnDU;AAsDX;AACA;;;AACA,IAAA,IAAA,CAAKgC,QAAL,CAAc;AAAE0D,MAAAA,KAAAA;KAAhB,EAAyB,KAAK6B,eAAL,CAAqB2D,IAArB,CAA0B,IAA1B,EAAgC,UAAhC,CAAzB,CAAA,CAAA;;;AAGJF,EAAAA,MAAAA,CAAAA,iBAAA,SAAetF,cAAAA,CAAAA,KAAf,EAAsB/F,WAAtB,EAAmCsC,KAAnC,EAA0C;AACtC,IAAA,IAAIpC,CAAJ,CAAA;AACA,IAAA,IAAIC,OAAJ,CAAA;;AACA,IAAA,KACID,CAAC,GAAGoC,KAAJ,EAAWnC,OAAO,GAAG4F,KAAK,CAAC7F,CAAD,CAAL,GAAWF,WADpC,EAEI+F,KAAK,CAAC7F,CAAC,GAAG,CAAL,CAAL,KAAiB,IAAjB,IAAyBC,OAAO,GAAG4F,KAAK,CAAC7F,CAAC,GAAG,CAAL,CAF5C,EAGIA,CAAC,IAAI,CAAL,EAAQC,OAAO,GAAG4F,KAAK,CAAC7F,CAAD,CAAL,GAAWF,WAHjC,EAIE;AACE;AACA+F,MAAAA,KAAK,CAAC7F,CAAC,GAAG,CAAL,CAAL,GAAeiB,UAAU,CAAChB,OAAD,EAAU,IAAKe,CAAAA,KAAf,CAAzB,CAAA;AACH,KAAA;;;AAGLoK,EAAAA,MAAAA,CAAAA,gBAAA,SAAcvF,aAAAA,CAAAA,KAAd,EAAqB/F,WAArB,EAAkCsC,KAAlC,EAAyC;IACrC,KACI,IAAIpC,CAAC,GAAGoC,KAAR,EAAenC,OAAO,GAAG4F,KAAK,CAAC7F,CAAD,CAAL,GAAWF,WADxC,EAEI+F,KAAK,CAAC7F,CAAC,GAAG,CAAL,CAAL,KAAiB,IAAjB,IAAyBC,OAAO,GAAG4F,KAAK,CAAC7F,CAAC,GAAG,CAAL,CAF5C,EAGIA,CAAC,IAAI,CAAL,EAAQC,OAAO,GAAG4F,KAAK,CAAC7F,CAAD,CAAL,GAAWF,WAHjC,EAIE;AACE;AACA+F,MAAAA,KAAK,CAAC7F,CAAC,GAAG,CAAL,CAAL,GAAeiB,UAAU,CAAChB,OAAD,EAAU,IAAKe,CAAAA,KAAf,CAAzB,CAAA;AACH,KAAA;;;AAGLsH,EAAAA,MAAAA,CAAAA,UAAA,SAAU,OAAA,GAAA;AACN,IAAA,IAAI,KAAKtH,KAAL,CAAW4E,WAAX,KAA2B,UAA/B,EAA2C;AACvC,MAAA,OAAO,GAAP,CAAA;AACH,KAHK;;;AAKN,IAAA,OAAO,GAAP,CAAA;;;AAGJ2C,EAAAA,MAAAA,CAAAA,oBAAA,SAAoB,iBAAA,GAAA;AAChB,IAAA,IAAI,KAAKvH,KAAL,CAAW4E,WAAX,KAA2B,UAA/B,EAA2C;AACvC,MAAA,OAAO,GAAP,CAAA;AACH,KAHe;;;AAKhB,IAAA,OAAO,GAAP,CAAA;;;AAGJkE,EAAAA,MAAAA,CAAAA,YAAA,SAAY,SAAA,GAAA;AACR,IAAA,IAAI,KAAK9I,KAAL,CAAW4E,WAAX,KAA2B,UAA/B,EAA2C;AACvC,MAAA,OAAO,KAAK5E,KAAL,CAAWmI,MAAX,GAAoB,QAApB,GAA+B,KAAtC,CAAA;AACH,KAHO;;;AAKR,IAAA,OAAO,KAAKnI,KAAL,CAAWmI,MAAX,GAAoB,OAApB,GAA8B,MAArC,CAAA;;;AAGJS,EAAAA,MAAAA,CAAAA,YAAA,SAAY,SAAA,GAAA;AACR,IAAA,IAAI,KAAK5I,KAAL,CAAW4E,WAAX,KAA2B,UAA/B,EAA2C;AACvC,MAAA,OAAO,KAAK5E,KAAL,CAAWmI,MAAX,GAAoB,KAApB,GAA4B,QAAnC,CAAA;AACH,KAHO;;;AAKR,IAAA,OAAO,KAAKnI,KAAL,CAAWmI,MAAX,GAAoB,MAApB,GAA6B,OAApC,CAAA;;;AAGJI,EAAAA,MAAAA,CAAAA,UAAA,SAAU,OAAA,GAAA;AACN,IAAA,IAAI,KAAKvI,KAAL,CAAW4E,WAAX,KAA2B,UAA/B,EAA2C;AACvC,MAAA,OAAO,cAAP,CAAA;AACH,KAHK;;;AAKN,IAAA,OAAO,aAAP,CAAA;;;SAGJ8B,kBAAA,SAAgB4D,eAAAA,CAAAA,KAAhB,EAAuB;AACnB,IAAA,IAAI,IAAKtK,CAAAA,KAAL,CAAWsK,KAAX,CAAJ,EAAuB;AACnB,MAAA,IAAA,CAAKtK,KAAL,CAAWsK,KAAX,CAAA,CAAkB5L,eAAe,CAAC,IAAA,CAAK+F,KAAL,CAAWI,KAAZ,CAAjC,EAAqD,IAAKJ,CAAAA,KAAL,CAAWrD,KAAhE,CAAA,CAAA;AACH,KAAA;;;AAGLmJ,EAAAA,MAAAA,CAAAA,kBAAA,SAAA,eAAA,CAAgBpD,MAAhB,EAAwBnI,CAAxB,EAA2B;AACvB,IAAA,MAAMsF,KAAK,GAAG;AACV9C,MAAAA,QAAQ,EAAE,UADA;AAEVgJ,MAAAA,WAAW,EAAE,MAFH;AAGVC,MAAAA,UAAU,EAAE,IAAA,CAAKhG,KAAL,CAAWrD,KAAX,IAAoB,CAApB,GAAwB,IAAK0H,CAAAA,SAAL,EAAxB,GAA2ClF,SAH7C;MAIV8G,MAAM,EAAE,KAAKjG,KAAL,CAAWgB,QAAX,CAAoBmE,OAApB,CAA4B5K,CAA5B,CAAiC,GAAA,CAAA;KAJ7C,CAAA;AAMAsF,IAAAA,KAAK,CAAC,IAAKwE,CAAAA,SAAL,EAAD,CAAL,GAA6B3B,MAA7B,GAAA,IAAA,CAAA;AACA,IAAA,OAAO7C,KAAP,CAAA;;;AAGJgB,EAAAA,MAAAA,CAAAA,kBAAA,SAAA,eAAA,CAAgBnG,GAAhB,EAAqBJ,GAArB,EAA0B;AACtB,IAAA,MAAM4L,GAAG,GAAG;AACRnJ,MAAAA,QAAQ,EAAE,UADF;AAERiJ,MAAAA,UAAU,EACN,IAAA,CAAKhG,KAAL,CAAWrD,KAAX,IAAoB,CAApB,GAA2B,IAAA,CAAK0H,SAAL,EAA3B,GAAA,GAAA,GAA+C,IAAKF,CAAAA,SAAL,EAA/C,GAAoEhF,SAAAA;KAH5E,CAAA;AAKA+G,IAAAA,GAAG,CAAC,IAAK7B,CAAAA,SAAL,EAAD,CAAH,GAAwB3J,GAAxB,CAAA;AACAwL,IAAAA,GAAG,CAAC,IAAK/B,CAAAA,SAAL,EAAD,CAAH,GAAwB7J,GAAxB,CAAA;AACA,IAAA,OAAO4L,GAAP,CAAA;;;SAGJC,iBAAA,SAAezD,cAAAA,CAAAA,MAAf,EAAuB;AAAA,IAAA,IAAA,IAAA,CAAA;;AACnB,IAAA,OAAA,IAAA,GAAA;AACI3F,MAAAA,QAAQ,EAAE,UAAA;AADd,KAAA,EAAA,IAAA,CAEK,IAAKsH,CAAAA,SAAL,EAFL,CAAA,GAEwB3B,MAFxB,EAAA,IAAA,CAAA;;;SAoDJ0D,eAAA,SAAa1D,YAAAA,CAAAA,MAAb,EAAqB;IACjB,MAAM;AAAExI,MAAAA,MAAAA;AAAF,KAAA,GAAawI,MAAnB,CAAA;IAEA,MAAM2D,MAAM,GAAG,EAAf,CAAA;;AACA,IAAA,KAAK,IAAI9L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,MAApB,EAA4BK,CAAC,IAAI,CAAjC,EAAoC;AAChC8L,MAAAA,MAAM,CAAC9L,CAAD,CAAN,GAAY,IAAKuL,CAAAA,eAAL,CAAqBpD,MAAM,CAACnI,CAAD,CAA3B,EAAgCA,CAAhC,CAAZ,CAAA;AACH,KAAA;;IAED,MAAM+L,GAAG,GAAG,EAAZ,CAAA;;AACA,IAAA,KAAK,IAAI/L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,MAApB,EAA4BK,CAAC,IAAI,CAAjC,EAAoC;AAChC+L,MAAAA,GAAG,CAAC/L,CAAD,CAAH,GAAS,IAAKqF,CAAAA,WAAL,CAAiByG,MAAM,CAAC9L,CAAD,CAAvB,EAA4BA,CAA5B,CAAT,CAAA;AACH,KAAA;;AACD,IAAA,OAAO+L,GAAP,CAAA;;;SAgBJC,eAAA,SAAa7D,YAAAA,CAAAA,MAAb,EAAqB;IACjB,MAAM8D,MAAM,GAAG,EAAf,CAAA;AACA,IAAA,MAAMC,SAAS,GAAG/D,MAAM,CAACxI,MAAP,GAAgB,CAAlC,CAAA;AAEAsM,IAAAA,MAAM,CAAC7G,IAAP,CAAY,IAAA,CAAKc,WAAL,CAAiB,CAAjB,EAAoB,CAApB,EAAuBiC,MAAM,CAAC,CAAD,CAA7B,CAAZ,CAAA,CAAA;;AAEA,IAAA,KAAK,IAAInI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkM,SAApB,EAA+BlM,CAAC,IAAI,CAApC,EAAuC;MACnCiM,MAAM,CAAC7G,IAAP,CAAY,IAAA,CAAKc,WAAL,CAAiBlG,CAAC,GAAG,CAArB,EAAwBmI,MAAM,CAACnI,CAAD,CAA9B,EAAmCmI,MAAM,CAACnI,CAAC,GAAG,CAAL,CAAzC,CAAZ,CAAA,CAAA;AACH,KAAA;;AAEDiM,IAAAA,MAAM,CAAC7G,IAAP,CAAY,KAAKc,WAAL,CAAiBgG,SAAS,GAAG,CAA7B,EAAgC/D,MAAM,CAAC+D,SAAD,CAAtC,EAAmD,KAAKzG,KAAL,CAAWc,UAA9D,CAAZ,CAAA,CAAA;AAEA,IAAA,OAAO0F,MAAP,CAAA;;;AAGJE,EAAAA,MAAAA,CAAAA,cAAA,SAAc,WAAA,GAAA;IACV,IAAI;AAAEC,MAAAA,KAAAA;AAAF,KAAA,GAAY,KAAKpL,KAArB,CAAA;AAEA,IAAA,MAAMkJ,KAAK,GAAG,IAAKlJ,CAAAA,KAAL,CAAWjB,GAAX,GAAiB,IAAA,CAAKiB,KAAL,CAAWb,GAA5B,GAAkC,CAAhD,CAAA;;AAEA,IAAA,IAAI,OAAOiM,KAAP,KAAiB,SAArB,EAAgC;AAC5BA,MAAAA,KAAK,GAAG7M,KAAK,CAAC8M,IAAN,CAAW;AAAE1M,QAAAA,MAAM,EAAEuK,KAAAA;OAArB,CAAA,CAA8B9C,GAA9B,CAAkC,CAACkF,CAAD,EAAI7L,GAAJ,KAAYA,GAA9C,CAAR,CAAA;AACH,KAFD,MAEO,IAAI,OAAO2L,KAAP,KAAiB,QAArB,EAA+B;AAClCA,MAAAA,KAAK,GAAG7M,KAAK,CAAC8M,IAAN,CAAW;AAAE1M,QAAAA,MAAM,EAAEuK,KAAAA;AAAV,OAAX,EACH9C,GADG,CACC,CAACkF,CAAD,EAAI7L,GAAJ,KAAYA,GADb,EAEH8L,MAFG,CAEI9L,GAAG,IAAIA,GAAG,GAAG2L,KAAN,KAAgB,CAF3B,CAAR,CAAA;AAGH,KAAA;;IAED,OAAOA,KAAK,CACPhF,GADE,CACE5F,UADF,CAEFgL,CAAAA,IAFE,CAEG,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,GAAGC,CAFjB,EAGFtF,GAHE,CAGEuF,IAAI,IAAI;AACT,MAAA,MAAMxE,MAAM,GAAG,IAAA,CAAKC,UAAL,CAAgBuE,IAAhB,CAAf,CAAA;AAEA,MAAA,MAAM3L,KAAK,GAAG;AACVP,QAAAA,GAAG,EAAEkM,IADK;AAEVpH,QAAAA,SAAS,EAAE,IAAA,CAAKvE,KAAL,CAAW4L,aAFZ;AAGVtH,QAAAA,KAAK,EAAE,IAAA,CAAKsG,cAAL,CAAoBzD,MAApB,CAAA;OAHX,CAAA;AAMA,MAAA,OAAO,KAAKnH,KAAL,CAAW6L,UAAX,CAAsB7L,KAAtB,CAAP,CAAA;AACH,KAbE,CAAP,CAAA;;;AAgBJ8L,EAAAA,MAAAA,CAAAA,SAAA,SAAS,MAAA,GAAA;IACL,MAAM3E,MAAM,GAAG,EAAf,CAAA;IACA,MAAM;AAAEtC,MAAAA,KAAAA;AAAF,KAAA,GAAY,KAAKJ,KAAvB,CAAA;AACA,IAAA,MAAMyC,CAAC,GAAGrC,KAAK,CAAClG,MAAhB,CAAA;;AACA,IAAA,KAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkI,CAApB,EAAuBlI,CAAC,IAAI,CAA5B,EAA+B;AAC3BmI,MAAAA,MAAM,CAACnI,CAAD,CAAN,GAAY,IAAKoI,CAAAA,UAAL,CAAgBvC,KAAK,CAAC7F,CAAD,CAArB,EAA0BA,CAA1B,CAAZ,CAAA;AACH,KAAA;;AAED,IAAA,MAAMiM,MAAM,GAAG,IAAKjL,CAAAA,KAAL,CAAW+L,UAAX,GAAwB,IAAA,CAAKf,YAAL,CAAkB7D,MAAlB,CAAxB,GAAoD,IAAnE,CAAA;AACA,IAAA,MAAM6E,MAAM,GAAG,IAAA,CAAKnB,YAAL,CAAkB1D,MAAlB,CAAf,CAAA;IACA,MAAMiE,KAAK,GAAG,IAAA,CAAKpL,KAAL,CAAWoL,KAAX,GAAmB,IAAKD,CAAAA,WAAL,EAAnB,GAAwC,IAAtD,CAAA;AAEA,IAAA,oBAAOvF,KAAK,CAACqG,aAAN,CACH,KADG,EAEH;MACIC,GAAG,EAAEvH,CAAC,IAAI;QACN,IAAKyD,CAAAA,MAAL,GAAczD,CAAd,CAAA;AACA,QAAA,IAAA,CAAKgB,gBAAL,CAAsBO,OAAtB,GAAgCvB,CAAhC,CAAA;OAHR;AAKIL,MAAAA,KAAK,EAAE;AAAE9C,QAAAA,QAAQ,EAAE,UAAA;OALvB;AAMI+C,MAAAA,SAAS,EAAE,IAAA,CAAKvE,KAAL,CAAWuE,SAAX,IAAwB,IAAA,CAAKvE,KAAL,CAAW+C,QAAX,GAAsB,WAAtB,GAAoC,EAA5D,CANf;MAOIoJ,WAAW,EAAE,KAAKrJ,iBAPtB;AAQIsJ,MAAAA,OAAO,EAAE,IAAKhJ,CAAAA,aAAAA;AARlB,KAFG,EAYH6H,MAZG,EAaHe,MAbG,EAcHZ,KAdG,CAAP,CAAA;;;;AAlhCkBxF,CAAAA,CAAAA,KAAK,CAACyG;;AAA1B1L,YACK2L,cAAc;AADnB3L,YA4OK4L,eAAe;AAClBpN,EAAAA,GAAG,EAAE,CADa;AAElBJ,EAAAA,GAAG,EAAE,GAFa;AAGlBqB,EAAAA,IAAI,EAAE,CAHY;AAIlByC,EAAAA,MAAM,EAAEzC,IAAI,IAAIA,IAAI,GAAG,EAJL;AAKlBtB,EAAAA,WAAW,EAAE,CALK;AAMlB0G,EAAAA,YAAY,EAAE,CANI;AAOlBZ,EAAAA,WAAW,EAAE,YAPK;AAQlBL,EAAAA,SAAS,EAAE,QARO;AASlBC,EAAAA,cAAc,EAAE,OATE;AAUlBE,EAAAA,oBAAoB,EAAE,QAVJ;AAWlBW,EAAAA,cAAc,EAAE,OAXE;AAYlBuG,EAAAA,aAAa,EAAE,MAZG;AAalBG,EAAAA,UAAU,EAAE,IAbM;AAclB/B,EAAAA,QAAQ,EAAE,KAdQ;AAelBjH,EAAAA,QAAQ,EAAE,KAfQ;AAgBlBE,EAAAA,gBAAgB,EAAE,KAhBA;AAiBlBkF,EAAAA,MAAM,EAAE,KAjBU;AAkBlBiD,EAAAA,KAAK,EAAE,EAlBW;AAmBlB/G,EAAAA,WAAW,EAAErE,KAAK,iBAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAASA,KAAT,EAAA;AAAA,IAAA,MAAA,EA/PxBW,WA+PwB;AAAA,IAAA,QAAA,EAAA;AAAA,MAAA,QAAA,EAAA,YAAA;AAAA,MAAA,UAAA,EAAA,GAAA;AAAA,MAAA,YAAA,EAAA,EAAA;AAAA,KAAA;GAnBJ,CAAA,CAAA;AAoBlBuE,EAAAA,WAAW,EAAElF,KAAK,iBAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAASA,KAAT,EAAA;AAAA,IAAA,MAAA,EAhQxBW,WAgQwB;AAAA,IAAA,QAAA,EAAA;AAAA,MAAA,QAAA,EAAA,YAAA;AAAA,MAAA,UAAA,EAAA,GAAA;AAAA,MAAA,YAAA,EAAA,EAAA;AAAA,KAAA;GApBJ,CAAA,CAAA;AAqBlBkL,EAAAA,UAAU,EAAE7L,KAAK,iBAAI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAUA,KAAV,EAAA;AAAA,IAAA,MAAA,EAjQvBW,WAiQuB;AAAA,IAAA,QAAA,EAAA;AAAA,MAAA,QAAA,EAAA,YAAA;AAAA,MAAA,UAAA,EAAA,GAAA;AAAA,MAAA,YAAA,EAAA,EAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA;AArBH;AA5OpBA,YAGK6L,YAAY,OAAA,CAAA,GAAA,CAAA,QAAA,KAAA,YAAA,GAAA;AACf;AACR;AACA;EACQrN,GAAG,EAAEsN,SAAS,CAACC,MAJA;;AAMf;AACR;AACA;EACQ3N,GAAG,EAAE0N,SAAS,CAACC,MATA;;AAWf;AACR;AACA;AACA;AACA;EACQtM,IAAI,EAAEqM,SAAS,CAACC,MAhBD;;AAkBf;AACR;AACA;AACA;AACA;AACA;AACA;EACQ7J,MAAM,EAAE4J,SAAS,CAACE,IAzBH;;AA2Bf;AACR;AACA;AACA;EACQ7N,WAAW,EAAE2N,SAAS,CAACC,MA/BR;;AAiCf;AACR;AACA;AACA;AACA;AACA;AACA;AACQlH,EAAAA,YAAY,EAAEiH,SAAS,CAACG,SAAV,CAAoB,CAACH,SAAS,CAACC,MAAX,EAAmBD,SAAS,CAACI,OAAV,CAAkBJ,SAAS,CAACC,MAA5B,CAAnB,CAApB,CAxCC;;AA0Cf;AACR;AACA;AACA;AACQ;AACA7H,EAAAA,KAAK,EAAE4H,SAAS,CAACG,SAAV,CAAoB,CAACH,SAAS,CAACC,MAAX,EAAmBD,SAAS,CAACI,OAAV,CAAkBJ,SAAS,CAACC,MAA5B,CAAnB,CAApB,CA/CQ;;AAiDf;AACR;AACA;AACA;EACQ9H,WAAW,EAAE6H,SAAS,CAACK,KAAV,CAAgB,CAAC,YAAD,EAAe,UAAf,CAAhB,CArDE;;AAuDf;AACR;AACA;EACQvI,SAAS,EAAEkI,SAAS,CAACM,MA1DN;;AA4Df;AACR;AACA;AACA;AACA;AACA;EACQvI,cAAc,EAAEiI,SAAS,CAACM,MAlEX;;AAoEf;AACR;AACA;EACQrI,oBAAoB,EAAE+H,SAAS,CAACM,MAvEjB;;AAyEf;AACR;AACA;EACQhB,UAAU,EAAEU,SAAS,CAACO,IA5EP;;AA8Ef;AACR;AACA;AACA;AACA;EACQ3H,cAAc,EAAEoH,SAAS,CAACM,MAnFX;;AAqFf;AACR;AACA;AACA;EACQ/C,QAAQ,EAAEyC,SAAS,CAACO,IAzFL;;AA2Ff;AACR;AACA;EACQjK,QAAQ,EAAE0J,SAAS,CAACO,IA9FL;;AAgGf;AACR;AACA;EACQ/J,gBAAgB,EAAEwJ,SAAS,CAACO,IAnGb;;AAqGf;AACR;AACA;EACQ7E,MAAM,EAAEsE,SAAS,CAACO,IAxGH;;AA0Gf;AACR;AACA;AACA;AACA;EACQ5B,KAAK,EAAEqB,SAAS,CAACG,SAAV,CAAoB,CACvBH,SAAS,CAACI,OAAV,CAAkBJ,SAAS,CAACC,MAA5B,CADuB,EAEvBD,SAAS,CAACO,IAFa,EAGvBP,SAAS,CAACC,MAHa,CAApB,CA/GQ;;AAqHf;AACR;AACA;EACQd,aAAa,EAAEa,SAAS,CAACM,MAxHV;;AA0Hf;AACR;AACA;AACA;AACA;AACQ;AACA;EACAE,cAAc,EAAER,SAAS,CAACE,IAjIX;;AAmIf;AACR;AACA;AACA;AACA;AACQ;AACA;EACAO,QAAQ,EAAET,SAAS,CAACE,IA1IL;;AA4If;AACR;AACA;AACA;AACA;AACQ;AACA;EACAQ,aAAa,EAAEV,SAAS,CAACE,IAnJV;;AAqJf;AACR;AACA;AACA;AACQ;EACAvJ,aAAa,EAAEqJ,SAAS,CAACE,IA1JV;;AA4Jf;AACR;AACA;AACA;AACA;AACQ;AACA7H,EAAAA,SAAS,EAAE2H,SAAS,CAACG,SAAV,CAAoB,CAACH,SAAS,CAACM,MAAX,EAAmBN,SAAS,CAACI,OAAV,CAAkBJ,SAAS,CAACM,MAA5B,CAAnB,CAApB,CAlKI;;AAoKf;AACR;AACA;AACA;AACA;AACA;AACQ;AACAhI,EAAAA,cAAc,EAAE0H,SAAS,CAACG,SAAV,CAAoB,CAChCH,SAAS,CAACM,MADsB,EAEhCN,SAAS,CAACI,OAAV,CAAkBJ,SAAS,CAACM,MAA5B,CAFgC,CAApB,CA3KD;;AAgLf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACQ;AACA9H,EAAAA,aAAa,EAAEwH,SAAS,CAACG,SAAV,CAAoB,CAACH,SAAS,CAACM,MAAX,EAAmBN,SAAS,CAACE,IAA7B,CAApB,CA7LA;;AA+Lf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQzH,WAAW,EAAEuH,SAAS,CAACE,IA3MR;;AA6Mf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACQ;EACAtI,WAAW,EAAEoI,SAAS,CAACE,IA3NR;;AA6Nf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQd,UAAU,EAAEY,SAAS,CAACE,IAAAA;AAtOP;AAkiCvB,oBAAehM,WAAf;;;;"}