{"version":3,"file":"index.mjs","sources":["../../src/inputmask/BaseInputMask.vue","../../src/inputmask/InputMask.vue","../../src/inputmask/InputMask.vue?vue&type=template&id=d160eb72&lang.js"],"sourcesContent":["<script>\nimport BaseInput from '@primevue/core/baseinput';\nimport InputMaskStyle from 'primevue/inputmask/style';\n\nexport default {\n    name: 'BaseInputMask',\n    extends: BaseInput,\n    props: {\n        slotChar: {\n            type: String,\n            default: '_'\n        },\n        id: {\n            type: String,\n            default: null\n        },\n        class: {\n            type: [String, Object],\n            default: null\n        },\n        mask: {\n            type: String,\n            default: null\n        },\n        placeholder: {\n            type: String,\n            default: null\n        },\n        autoClear: {\n            type: Boolean,\n            default: true\n        },\n        unmask: {\n            type: Boolean,\n            default: false\n        },\n        readonly: {\n            type: Boolean,\n            default: false\n        }\n    },\n    style: InputMaskStyle,\n    provide() {\n        return {\n            $pcInputMask: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <InputText\n        :id=\"id\"\n        :value=\"currentVal\"\n        :class=\"inputClass\"\n        :readonly=\"readonly\"\n        :disabled=\"disabled\"\n        :invalid=\"invalid\"\n        :size=\"size\"\n        :name=\"name\"\n        :variant=\"variant\"\n        :placeholder=\"placeholder\"\n        :fluid=\"$fluid\"\n        :unstyled=\"unstyled\"\n        @input=\"onInput\"\n        @compositionend=\"onInput\"\n        @focus=\"onFocus\"\n        @blur=\"onBlur\"\n        @keydown=\"onKeyDown\"\n        @keypress=\"onKeyPress\"\n        @paste=\"onPaste\"\n        :pt=\"rootPTOptions\"\n    />\n</template>\n\n<script>\nimport { getUserAgent } from '@primeuix/utils/dom';\nimport InputText from 'primevue/inputtext';\nimport { mergeProps } from 'vue';\nimport BaseInputMask from './BaseInputMask.vue';\n\nexport default {\n    name: 'InputMask',\n    extends: BaseInputMask,\n    inheritAttrs: false,\n    emits: ['focus', 'blur', 'keydown', 'complete', 'keypress', 'paste'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    data() {\n        return {\n            currentVal: ''\n        };\n    },\n    watch: {\n        mask(newMask, oldMask) {\n            if (oldMask !== newMask) {\n                this.initMask();\n            }\n        }\n    },\n    mounted() {\n        this.initMask();\n    },\n    updated() {\n        if (this.isValueUpdated()) {\n            this.updateValue();\n        }\n    },\n    methods: {\n        onInput(event) {\n            // Check if the event is part of a text composition process (e.g., for Asian languages).\n            // If event.isComposing is true, it means the user is still composing text and the input is not finalized.\n            if (!event.isComposing) {\n                if (this.androidChrome) this.handleAndroidInput(event);\n                else this.handleInputChange(event);\n\n                this.updateModelValue(event.target.value);\n            }\n        },\n        onFocus(event) {\n            if (this.readonly) {\n                return;\n            }\n\n            this.focus = true;\n\n            clearTimeout(this.caretTimeoutId);\n            let pos;\n\n            this.focusText = this.$el.value;\n\n            pos = this.checkVal();\n\n            this.caretTimeoutId = setTimeout(() => {\n                if (this.$el !== document.activeElement) {\n                    return;\n                }\n\n                this.writeBuffer();\n\n                if (pos === this.mask.replace('?', '').length) {\n                    this.caret(0, pos);\n                } else {\n                    this.caret(pos);\n                }\n            }, 10);\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focus = false;\n            this.checkVal();\n            this.updateModelValue(event.target.value);\n\n            if (this.$el.value !== this.focusText) {\n                let e = document.createEvent('HTMLEvents');\n\n                e.initEvent('change', true, false);\n                this.$el.dispatchEvent(e);\n            }\n\n            this.$emit('blur', event);\n            this.formField.onBlur?.(event);\n        },\n        onKeyDown(event) {\n            if (this.readonly) {\n                return;\n            }\n\n            let k = event.code,\n                pos,\n                begin,\n                end;\n            let iPhone = /iphone/i.test(getUserAgent());\n\n            this.oldVal = this.$el.value;\n\n            //backspace, delete, and escape get special treatment\n            if (k === 'Backspace' || k === 'Delete' || (iPhone && k === 'Escape')) {\n                pos = this.caret();\n                begin = pos.begin;\n                end = pos.end;\n\n                if (end - begin === 0) {\n                    begin = k !== 'Delete' ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\n                    end = k === 'Delete' ? this.seekNext(end) : end;\n                }\n\n                this.clearBuffer(begin, end);\n                this.shiftL(begin, end - 1);\n                this.updateModelValue(event.target.value);\n\n                event.preventDefault();\n            } else if (k === 'Enter') {\n                // enter\n                this.$el.blur();\n                this.updateModelValue(event.target.value);\n            } else if (k === 'Escape') {\n                // escape\n                this.$el.value = this.focusText;\n                this.caret(0, this.checkVal());\n                this.updateModelValue(event.target.value);\n                event.preventDefault();\n            }\n\n            this.$emit('keydown', event);\n        },\n        onKeyPress(event) {\n            if (this.readonly) {\n                return;\n            }\n\n            var k = event.code,\n                pos = this.caret(),\n                p,\n                c,\n                next,\n                completed;\n\n            if (event.ctrlKey || event.altKey || event.metaKey || event.shiftKey || event.key === 'CapsLock' || event.key === 'Escape' || event.key === 'Tab') {\n                //Ignore\n                return;\n            } else if (k && k !== 'Enter') {\n                if (pos.end - pos.begin !== 0) {\n                    this.clearBuffer(pos.begin, pos.end);\n                    this.shiftL(pos.begin, pos.end - 1);\n                }\n\n                p = this.seekNext(pos.begin - 1);\n\n                if (p < this.len) {\n                    c = event.key;\n\n                    if (this.tests[p].test(c)) {\n                        this.shiftR(p);\n\n                        this.buffer[p] = c;\n                        this.writeBuffer();\n                        next = this.seekNext(p);\n\n                        if (/android/i.test(getUserAgent())) {\n                            //Path for CSP Violation on FireFox OS 1.1\n                            let proxy = () => {\n                                this.caret(next);\n                            };\n\n                            setTimeout(proxy, 0);\n                        } else {\n                            this.caret(next);\n                        }\n\n                        if (pos.begin <= this.lastRequiredNonMaskPos) {\n                            completed = this.isCompleted();\n                        }\n                    }\n                }\n\n                event.preventDefault();\n            }\n\n            this.updateModelValue(event.target.value);\n\n            if (completed) {\n                this.$emit('complete', event);\n            }\n\n            this.$emit('keypress', event);\n        },\n        onPaste(event) {\n            this.handleInputChange(event);\n\n            this.$emit('paste', event);\n        },\n        caret(first, last) {\n            let range, begin, end;\n\n            if (!this.$el.offsetParent || this.$el !== document.activeElement) {\n                return;\n            }\n\n            if (typeof first === 'number') {\n                begin = first;\n                end = typeof last === 'number' ? last : begin;\n\n                if (this.$el.setSelectionRange) {\n                    this.$el.setSelectionRange(begin, end);\n                } else if (this.$el['createTextRange']) {\n                    range = this.$el['createTextRange']();\n                    range.collapse(true);\n                    range.moveEnd('character', end);\n                    range.moveStart('character', begin);\n                    range.select();\n                }\n            } else {\n                if (this.$el.setSelectionRange) {\n                    begin = this.$el.selectionStart;\n                    end = this.$el.selectionEnd;\n                } else if (document['selection'] && document['selection'].createRange) {\n                    range = document['selection'].createRange();\n                    begin = 0 - range.duplicate().moveStart('character', -100000);\n                    end = begin + range.text.length;\n                }\n\n                return { begin: begin, end: end };\n            }\n        },\n        isCompleted() {\n            for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n                if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n                    return false;\n                }\n            }\n\n            return true;\n        },\n        getPlaceholder(i) {\n            if (i < this.slotChar.length) {\n                return this.slotChar.charAt(i);\n            }\n\n            return this.slotChar.charAt(0);\n        },\n        seekNext(pos) {\n            while (++pos < this.len && !this.tests[pos]);\n\n            return pos;\n        },\n        seekPrev(pos) {\n            while (--pos >= 0 && !this.tests[pos]);\n\n            return pos;\n        },\n        shiftL(begin, end) {\n            let i, j;\n\n            if (begin < 0) {\n                return;\n            }\n\n            for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n                if (this.tests[i]) {\n                    if (j < this.len && this.tests[i].test(this.buffer[j])) {\n                        this.buffer[i] = this.buffer[j];\n                        this.buffer[j] = this.getPlaceholder(j);\n                    } else {\n                        break;\n                    }\n\n                    j = this.seekNext(j);\n                }\n            }\n\n            this.writeBuffer();\n            this.caret(Math.max(this.firstNonMaskPos, begin));\n        },\n        shiftR(pos) {\n            let i, c, j, t;\n\n            for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n                if (this.tests[i]) {\n                    j = this.seekNext(i);\n                    t = this.buffer[i];\n                    this.buffer[i] = c;\n\n                    if (j < this.len && this.tests[j].test(t)) {\n                        c = t;\n                    } else {\n                        break;\n                    }\n                }\n            }\n        },\n        handleAndroidInput(event) {\n            var curVal = this.$el.value;\n            var pos = this.caret();\n\n            if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {\n                // a deletion or backspace happened\n                this.checkVal(true);\n                while (pos.begin > 0 && !this.tests[pos.begin - 1]) pos.begin--;\n\n                if (pos.begin === 0) {\n                    while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin]) pos.begin++;\n                }\n\n                this.caret(pos.begin, pos.begin);\n            } else {\n                this.checkVal(true);\n                while (pos.begin < this.len && !this.tests[pos.begin]) pos.begin++;\n\n                this.caret(pos.begin, pos.begin);\n            }\n\n            if (this.isCompleted()) {\n                this.$emit('complete', event);\n            }\n        },\n        clearBuffer(start, end) {\n            let i;\n\n            for (i = start; i < end && i < this.len; i++) {\n                if (this.tests[i]) {\n                    this.buffer[i] = this.getPlaceholder(i);\n                }\n            }\n        },\n        writeBuffer() {\n            this.$el.value = this.buffer.join('');\n        },\n        checkVal(allow) {\n            this.isValueChecked = true;\n            //try to place characters where they belong\n            let test = this.$el.value,\n                lastMatch = -1,\n                i,\n                c,\n                pos;\n\n            for (i = 0, pos = 0; i < this.len; i++) {\n                if (this.tests[i]) {\n                    this.buffer[i] = this.getPlaceholder(i);\n\n                    while (pos++ < test.length) {\n                        c = test.charAt(pos - 1);\n\n                        if (this.tests[i].test(c)) {\n                            this.buffer[i] = c;\n                            lastMatch = i;\n                            break;\n                        }\n                    }\n\n                    if (pos > test.length) {\n                        this.clearBuffer(i + 1, this.len);\n                        break;\n                    }\n                } else {\n                    if (this.buffer[i] === test.charAt(pos)) {\n                        pos++;\n                    }\n\n                    if (i < this.partialPosition) {\n                        lastMatch = i;\n                    }\n                }\n            }\n\n            if (allow) {\n                this.writeBuffer();\n            } else if (lastMatch + 1 < this.partialPosition) {\n                if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n                    // Invalid value. Remove it and replace it with the\n                    // mask, which is the default behavior.\n                    if (this.$el.value) this.$el.value = '';\n                    this.clearBuffer(0, this.len);\n                } else {\n                    // Invalid value, but we opt to show the value to the\n                    // user and allow them to correct their mistake.\n                    this.writeBuffer();\n                }\n            } else {\n                this.writeBuffer();\n                this.$el.value = this.$el.value.substring(0, lastMatch + 1);\n            }\n\n            return this.partialPosition ? i : this.firstNonMaskPos;\n        },\n        handleInputChange(event) {\n            const isPasteEvent = event.type === 'paste';\n\n            if (this.readonly || isPasteEvent) {\n                return;\n            }\n\n            var pos = this.checkVal(true);\n\n            this.caret(pos);\n            this.updateModelValue(event.target.value);\n\n            if (this.isCompleted()) {\n                this.$emit('complete', event);\n            }\n        },\n        getUnmaskedValue() {\n            let unmaskedBuffer = [];\n\n            for (let i = 0; i < this.buffer.length; i++) {\n                let c = this.buffer[i];\n\n                if (this.tests[i] && c !== this.getPlaceholder(i)) {\n                    unmaskedBuffer.push(c);\n                }\n            }\n\n            return unmaskedBuffer.join('');\n        },\n\n        updateModelValue(value) {\n            const val = this.unmask ? this.getUnmaskedValue() : value;\n\n            this.currentVal = value;\n\n            this.writeValue(this.defaultBuffer !== val ? val : '');\n        },\n        updateValue(updateModel = true) {\n            if (this.$el) {\n                if (this.d_value == null) {\n                    this.$el.value = '';\n                    updateModel && this.updateModelValue('');\n                } else {\n                    this.$el.value = this.d_value;\n                    this.checkVal();\n\n                    setTimeout(() => {\n                        if (this.$el) {\n                            this.writeBuffer();\n                            this.checkVal();\n\n                            if (updateModel) this.updateModelValue(this.$el.value);\n                        }\n                    }, 10);\n                }\n\n                this.focusText = this.$el.value;\n            }\n        },\n        initMask() {\n            this.tests = [];\n            this.partialPosition = this.mask.length;\n            this.len = this.mask.length;\n            this.firstNonMaskPos = null;\n            this.defs = {\n                9: '[0-9]',\n                a: '[A-Za-z]',\n                '*': '[A-Za-z0-9]'\n            };\n\n            let ua = getUserAgent();\n\n            this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n\n            let maskTokens = this.mask.split('');\n\n            for (let i = 0; i < maskTokens.length; i++) {\n                let c = maskTokens[i];\n\n                if (c === '?') {\n                    this.len--;\n                    this.partialPosition = i;\n                } else if (this.defs[c]) {\n                    this.tests.push(new RegExp(this.defs[c]));\n\n                    if (this.firstNonMaskPos === null) {\n                        this.firstNonMaskPos = this.tests.length - 1;\n                    }\n\n                    if (i < this.partialPosition) {\n                        this.lastRequiredNonMaskPos = this.tests.length - 1;\n                    }\n                } else {\n                    this.tests.push(null);\n                }\n            }\n\n            this.buffer = [];\n\n            for (let i = 0; i < maskTokens.length; i++) {\n                let c = maskTokens[i];\n\n                if (c !== '?') {\n                    if (this.defs[c]) this.buffer.push(this.getPlaceholder(i));\n                    else this.buffer.push(c);\n                }\n            }\n\n            this.defaultBuffer = this.buffer.join('');\n            this.updateValue(false);\n        },\n        isValueUpdated() {\n            return this.unmask ? this.d_value != this.getUnmaskedValue() : this.defaultBuffer !== this.$el.value && this.$el.value !== this.d_value;\n        }\n    },\n    computed: {\n        inputClass() {\n            return [this.cx('root'), this.class];\n        },\n        rootPTOptions() {\n            return {\n                root: mergeProps(this.ptm('pcInputText', this.ptmParams), this.ptmi('root', this.ptmParams))\n            };\n        },\n        ptmParams() {\n            return {\n                context: {\n                    filled: this.$filled\n                }\n            };\n        }\n    },\n    components: {\n        InputText\n    }\n};\n</script>\n","<template>\n    <InputText\n        :id=\"id\"\n        :value=\"currentVal\"\n        :class=\"inputClass\"\n        :readonly=\"readonly\"\n        :disabled=\"disabled\"\n        :invalid=\"invalid\"\n        :size=\"size\"\n        :name=\"name\"\n        :variant=\"variant\"\n        :placeholder=\"placeholder\"\n        :fluid=\"$fluid\"\n        :unstyled=\"unstyled\"\n        @input=\"onInput\"\n        @compositionend=\"onInput\"\n        @focus=\"onFocus\"\n        @blur=\"onBlur\"\n        @keydown=\"onKeyDown\"\n        @keypress=\"onKeyPress\"\n        @paste=\"onPaste\"\n        :pt=\"rootPTOptions\"\n    />\n</template>\n\n<script>\nimport { getUserAgent } from '@primeuix/utils/dom';\nimport InputText from 'primevue/inputtext';\nimport { mergeProps } from 'vue';\nimport BaseInputMask from './BaseInputMask.vue';\n\nexport default {\n    name: 'InputMask',\n    extends: BaseInputMask,\n    inheritAttrs: false,\n    emits: ['focus', 'blur', 'keydown', 'complete', 'keypress', 'paste'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    data() {\n        return {\n            currentVal: ''\n        };\n    },\n    watch: {\n        mask(newMask, oldMask) {\n            if (oldMask !== newMask) {\n                this.initMask();\n            }\n        }\n    },\n    mounted() {\n        this.initMask();\n    },\n    updated() {\n        if (this.isValueUpdated()) {\n            this.updateValue();\n        }\n    },\n    methods: {\n        onInput(event) {\n            // Check if the event is part of a text composition process (e.g., for Asian languages).\n            // If event.isComposing is true, it means the user is still composing text and the input is not finalized.\n            if (!event.isComposing) {\n                if (this.androidChrome) this.handleAndroidInput(event);\n                else this.handleInputChange(event);\n\n                this.updateModelValue(event.target.value);\n            }\n        },\n        onFocus(event) {\n            if (this.readonly) {\n                return;\n            }\n\n            this.focus = true;\n\n            clearTimeout(this.caretTimeoutId);\n            let pos;\n\n            this.focusText = this.$el.value;\n\n            pos = this.checkVal();\n\n            this.caretTimeoutId = setTimeout(() => {\n                if (this.$el !== document.activeElement) {\n                    return;\n                }\n\n                this.writeBuffer();\n\n                if (pos === this.mask.replace('?', '').length) {\n                    this.caret(0, pos);\n                } else {\n                    this.caret(pos);\n                }\n            }, 10);\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focus = false;\n            this.checkVal();\n            this.updateModelValue(event.target.value);\n\n            if (this.$el.value !== this.focusText) {\n                let e = document.createEvent('HTMLEvents');\n\n                e.initEvent('change', true, false);\n                this.$el.dispatchEvent(e);\n            }\n\n            this.$emit('blur', event);\n            this.formField.onBlur?.(event);\n        },\n        onKeyDown(event) {\n            if (this.readonly) {\n                return;\n            }\n\n            let k = event.code,\n                pos,\n                begin,\n                end;\n            let iPhone = /iphone/i.test(getUserAgent());\n\n            this.oldVal = this.$el.value;\n\n            //backspace, delete, and escape get special treatment\n            if (k === 'Backspace' || k === 'Delete' || (iPhone && k === 'Escape')) {\n                pos = this.caret();\n                begin = pos.begin;\n                end = pos.end;\n\n                if (end - begin === 0) {\n                    begin = k !== 'Delete' ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\n                    end = k === 'Delete' ? this.seekNext(end) : end;\n                }\n\n                this.clearBuffer(begin, end);\n                this.shiftL(begin, end - 1);\n                this.updateModelValue(event.target.value);\n\n                event.preventDefault();\n            } else if (k === 'Enter') {\n                // enter\n                this.$el.blur();\n                this.updateModelValue(event.target.value);\n            } else if (k === 'Escape') {\n                // escape\n                this.$el.value = this.focusText;\n                this.caret(0, this.checkVal());\n                this.updateModelValue(event.target.value);\n                event.preventDefault();\n            }\n\n            this.$emit('keydown', event);\n        },\n        onKeyPress(event) {\n            if (this.readonly) {\n                return;\n            }\n\n            var k = event.code,\n                pos = this.caret(),\n                p,\n                c,\n                next,\n                completed;\n\n            if (event.ctrlKey || event.altKey || event.metaKey || event.shiftKey || event.key === 'CapsLock' || event.key === 'Escape' || event.key === 'Tab') {\n                //Ignore\n                return;\n            } else if (k && k !== 'Enter') {\n                if (pos.end - pos.begin !== 0) {\n                    this.clearBuffer(pos.begin, pos.end);\n                    this.shiftL(pos.begin, pos.end - 1);\n                }\n\n                p = this.seekNext(pos.begin - 1);\n\n                if (p < this.len) {\n                    c = event.key;\n\n                    if (this.tests[p].test(c)) {\n                        this.shiftR(p);\n\n                        this.buffer[p] = c;\n                        this.writeBuffer();\n                        next = this.seekNext(p);\n\n                        if (/android/i.test(getUserAgent())) {\n                            //Path for CSP Violation on FireFox OS 1.1\n                            let proxy = () => {\n                                this.caret(next);\n                            };\n\n                            setTimeout(proxy, 0);\n                        } else {\n                            this.caret(next);\n                        }\n\n                        if (pos.begin <= this.lastRequiredNonMaskPos) {\n                            completed = this.isCompleted();\n                        }\n                    }\n                }\n\n                event.preventDefault();\n            }\n\n            this.updateModelValue(event.target.value);\n\n            if (completed) {\n                this.$emit('complete', event);\n            }\n\n            this.$emit('keypress', event);\n        },\n        onPaste(event) {\n            this.handleInputChange(event);\n\n            this.$emit('paste', event);\n        },\n        caret(first, last) {\n            let range, begin, end;\n\n            if (!this.$el.offsetParent || this.$el !== document.activeElement) {\n                return;\n            }\n\n            if (typeof first === 'number') {\n                begin = first;\n                end = typeof last === 'number' ? last : begin;\n\n                if (this.$el.setSelectionRange) {\n                    this.$el.setSelectionRange(begin, end);\n                } else if (this.$el['createTextRange']) {\n                    range = this.$el['createTextRange']();\n                    range.collapse(true);\n                    range.moveEnd('character', end);\n                    range.moveStart('character', begin);\n                    range.select();\n                }\n            } else {\n                if (this.$el.setSelectionRange) {\n                    begin = this.$el.selectionStart;\n                    end = this.$el.selectionEnd;\n                } else if (document['selection'] && document['selection'].createRange) {\n                    range = document['selection'].createRange();\n                    begin = 0 - range.duplicate().moveStart('character', -100000);\n                    end = begin + range.text.length;\n                }\n\n                return { begin: begin, end: end };\n            }\n        },\n        isCompleted() {\n            for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n                if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n                    return false;\n                }\n            }\n\n            return true;\n        },\n        getPlaceholder(i) {\n            if (i < this.slotChar.length) {\n                return this.slotChar.charAt(i);\n            }\n\n            return this.slotChar.charAt(0);\n        },\n        seekNext(pos) {\n            while (++pos < this.len && !this.tests[pos]);\n\n            return pos;\n        },\n        seekPrev(pos) {\n            while (--pos >= 0 && !this.tests[pos]);\n\n            return pos;\n        },\n        shiftL(begin, end) {\n            let i, j;\n\n            if (begin < 0) {\n                return;\n            }\n\n            for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n                if (this.tests[i]) {\n                    if (j < this.len && this.tests[i].test(this.buffer[j])) {\n                        this.buffer[i] = this.buffer[j];\n                        this.buffer[j] = this.getPlaceholder(j);\n                    } else {\n                        break;\n                    }\n\n                    j = this.seekNext(j);\n                }\n            }\n\n            this.writeBuffer();\n            this.caret(Math.max(this.firstNonMaskPos, begin));\n        },\n        shiftR(pos) {\n            let i, c, j, t;\n\n            for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n                if (this.tests[i]) {\n                    j = this.seekNext(i);\n                    t = this.buffer[i];\n                    this.buffer[i] = c;\n\n                    if (j < this.len && this.tests[j].test(t)) {\n                        c = t;\n                    } else {\n                        break;\n                    }\n                }\n            }\n        },\n        handleAndroidInput(event) {\n            var curVal = this.$el.value;\n            var pos = this.caret();\n\n            if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {\n                // a deletion or backspace happened\n                this.checkVal(true);\n                while (pos.begin > 0 && !this.tests[pos.begin - 1]) pos.begin--;\n\n                if (pos.begin === 0) {\n                    while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin]) pos.begin++;\n                }\n\n                this.caret(pos.begin, pos.begin);\n            } else {\n                this.checkVal(true);\n                while (pos.begin < this.len && !this.tests[pos.begin]) pos.begin++;\n\n                this.caret(pos.begin, pos.begin);\n            }\n\n            if (this.isCompleted()) {\n                this.$emit('complete', event);\n            }\n        },\n        clearBuffer(start, end) {\n            let i;\n\n            for (i = start; i < end && i < this.len; i++) {\n                if (this.tests[i]) {\n                    this.buffer[i] = this.getPlaceholder(i);\n                }\n            }\n        },\n        writeBuffer() {\n            this.$el.value = this.buffer.join('');\n        },\n        checkVal(allow) {\n            this.isValueChecked = true;\n            //try to place characters where they belong\n            let test = this.$el.value,\n                lastMatch = -1,\n                i,\n                c,\n                pos;\n\n            for (i = 0, pos = 0; i < this.len; i++) {\n                if (this.tests[i]) {\n                    this.buffer[i] = this.getPlaceholder(i);\n\n                    while (pos++ < test.length) {\n                        c = test.charAt(pos - 1);\n\n                        if (this.tests[i].test(c)) {\n                            this.buffer[i] = c;\n                            lastMatch = i;\n                            break;\n                        }\n                    }\n\n                    if (pos > test.length) {\n                        this.clearBuffer(i + 1, this.len);\n                        break;\n                    }\n                } else {\n                    if (this.buffer[i] === test.charAt(pos)) {\n                        pos++;\n                    }\n\n                    if (i < this.partialPosition) {\n                        lastMatch = i;\n                    }\n                }\n            }\n\n            if (allow) {\n                this.writeBuffer();\n            } else if (lastMatch + 1 < this.partialPosition) {\n                if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n                    // Invalid value. Remove it and replace it with the\n                    // mask, which is the default behavior.\n                    if (this.$el.value) this.$el.value = '';\n                    this.clearBuffer(0, this.len);\n                } else {\n                    // Invalid value, but we opt to show the value to the\n                    // user and allow them to correct their mistake.\n                    this.writeBuffer();\n                }\n            } else {\n                this.writeBuffer();\n                this.$el.value = this.$el.value.substring(0, lastMatch + 1);\n            }\n\n            return this.partialPosition ? i : this.firstNonMaskPos;\n        },\n        handleInputChange(event) {\n            const isPasteEvent = event.type === 'paste';\n\n            if (this.readonly || isPasteEvent) {\n                return;\n            }\n\n            var pos = this.checkVal(true);\n\n            this.caret(pos);\n            this.updateModelValue(event.target.value);\n\n            if (this.isCompleted()) {\n                this.$emit('complete', event);\n            }\n        },\n        getUnmaskedValue() {\n            let unmaskedBuffer = [];\n\n            for (let i = 0; i < this.buffer.length; i++) {\n                let c = this.buffer[i];\n\n                if (this.tests[i] && c !== this.getPlaceholder(i)) {\n                    unmaskedBuffer.push(c);\n                }\n            }\n\n            return unmaskedBuffer.join('');\n        },\n\n        updateModelValue(value) {\n            const val = this.unmask ? this.getUnmaskedValue() : value;\n\n            this.currentVal = value;\n\n            this.writeValue(this.defaultBuffer !== val ? val : '');\n        },\n        updateValue(updateModel = true) {\n            if (this.$el) {\n                if (this.d_value == null) {\n                    this.$el.value = '';\n                    updateModel && this.updateModelValue('');\n                } else {\n                    this.$el.value = this.d_value;\n                    this.checkVal();\n\n                    setTimeout(() => {\n                        if (this.$el) {\n                            this.writeBuffer();\n                            this.checkVal();\n\n                            if (updateModel) this.updateModelValue(this.$el.value);\n                        }\n                    }, 10);\n                }\n\n                this.focusText = this.$el.value;\n            }\n        },\n        initMask() {\n            this.tests = [];\n            this.partialPosition = this.mask.length;\n            this.len = this.mask.length;\n            this.firstNonMaskPos = null;\n            this.defs = {\n                9: '[0-9]',\n                a: '[A-Za-z]',\n                '*': '[A-Za-z0-9]'\n            };\n\n            let ua = getUserAgent();\n\n            this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n\n            let maskTokens = this.mask.split('');\n\n            for (let i = 0; i < maskTokens.length; i++) {\n                let c = maskTokens[i];\n\n                if (c === '?') {\n                    this.len--;\n                    this.partialPosition = i;\n                } else if (this.defs[c]) {\n                    this.tests.push(new RegExp(this.defs[c]));\n\n                    if (this.firstNonMaskPos === null) {\n                        this.firstNonMaskPos = this.tests.length - 1;\n                    }\n\n                    if (i < this.partialPosition) {\n                        this.lastRequiredNonMaskPos = this.tests.length - 1;\n                    }\n                } else {\n                    this.tests.push(null);\n                }\n            }\n\n            this.buffer = [];\n\n            for (let i = 0; i < maskTokens.length; i++) {\n                let c = maskTokens[i];\n\n                if (c !== '?') {\n                    if (this.defs[c]) this.buffer.push(this.getPlaceholder(i));\n                    else this.buffer.push(c);\n                }\n            }\n\n            this.defaultBuffer = this.buffer.join('');\n            this.updateValue(false);\n        },\n        isValueUpdated() {\n            return this.unmask ? this.d_value != this.getUnmaskedValue() : this.defaultBuffer !== this.$el.value && this.$el.value !== this.d_value;\n        }\n    },\n    computed: {\n        inputClass() {\n            return [this.cx('root'), this.class];\n        },\n        rootPTOptions() {\n            return {\n                root: mergeProps(this.ptm('pcInputText', this.ptmParams), this.ptmi('root', this.ptmParams))\n            };\n        },\n        ptmParams() {\n            return {\n                context: {\n                    filled: this.$filled\n                }\n            };\n        }\n    },\n    components: {\n        InputText\n    }\n};\n</script>\n"],"names":["name","BaseInput","props","slotChar","type","String","id","Object","mask","placeholder","autoClear","Boolean","unmask","readonly","style","InputMaskStyle","provide","$pcInputMask","$parentInstance","BaseInputMask","inheritAttrs","emits","inject","$pcFluid","data","currentVal","watch","newMask","oldMask","initMask","mounted","updated","isValueUpdated","updateValue","methods","onInput","event","isComposing","androidChrome","handleAndroidInput","handleInputChange","updateModelValue","target","value","onFocus","_this","focus","clearTimeout","caretTimeoutId","pos","focusText","$el","checkVal","setTimeout","document","activeElement","writeBuffer","replace","length","caret","$emit","onBlur","_this$formField$onBlu","_this$formField","e","createEvent","initEvent","dispatchEvent","formField","call","onKeyDown","k","code","begin","end","iPhone","test","getUserAgent","oldVal","seekPrev","seekNext","clearBuffer","shiftL","preventDefault","blur","onKeyPress","_this2","p","c","next","completed","ctrlKey","altKey","metaKey","shiftKey","key","len","tests","shiftR","buffer","proxy","lastRequiredNonMaskPos","isCompleted","onPaste","first","last","range","offsetParent","setSelectionRange","collapse","moveEnd","moveStart","select","selectionStart","selectionEnd","createRange","duplicate","text","i","firstNonMaskPos","getPlaceholder","charAt","j","Math","max","t","curVal","start","join","allow","isValueChecked","lastMatch","partialPosition","defaultBuffer","substring","isPasteEvent","getUnmaskedValue","unmaskedBuffer","push","val","writeValue","_this3","updateModel","arguments","undefined","d_value","defs","a","ua","maskTokens","split","RegExp","computed","inputClass","cx","rootPTOptions","root","mergeProps","ptm","ptmParams","ptmi","context","filled","$filled","components","InputText","_createBlock","_component_InputText","_ctx","$data","$options","disabled","invalid","size","variant","fluid","$fluid","unstyled","onCompositionend","onKeydown","onKeypress","pt"],"mappings":";;;;;;AAIA,eAAe;AACXA,EAAAA,IAAI,EAAE,eAAe;AACrB,EAAA,SAAA,EAASC,SAAS;AAClBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,QAAQ,EAAE;AACNC,MAAAA,IAAI,EAAEC,MAAM;MACZ,SAAS,EAAA;KACZ;AACDC,IAAAA,EAAE,EAAE;AACAF,MAAAA,IAAI,EAAEC,MAAM;MACZ,SAAS,EAAA;KACZ;IACD,OAAO,EAAA;AACHD,MAAAA,IAAI,EAAE,CAACC,MAAM,EAAEE,MAAM,CAAC;MACtB,SAAS,EAAA;KACZ;AACDC,IAAAA,IAAI,EAAE;AACFJ,MAAAA,IAAI,EAAEC,MAAM;MACZ,SAAS,EAAA;KACZ;AACDI,IAAAA,WAAW,EAAE;AACTL,MAAAA,IAAI,EAAEC,MAAM;MACZ,SAAS,EAAA;KACZ;AACDK,IAAAA,SAAS,EAAE;AACPN,MAAAA,IAAI,EAAEO,OAAO;MACb,SAAS,EAAA;KACZ;AACDC,IAAAA,MAAM,EAAE;AACJR,MAAAA,IAAI,EAAEO,OAAO;MACb,SAAS,EAAA;KACZ;AACDE,IAAAA,QAAQ,EAAE;AACNT,MAAAA,IAAI,EAAEO,OAAO;MACb,SAAS,EAAA;AACb;GACH;AACDG,EAAAA,KAAK,EAAEC,cAAc;EACrBC,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,OAAO;AACHC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,eAAe,EAAE;KACpB;AACL;AACJ,CAAC;;ACjBD,aAAe;AACXlB,EAAAA,IAAI,EAAE,WAAW;AACjB,EAAA,SAAA,EAASmB,QAAa;AACtBC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC;AACpEC,EAAAA,MAAM,EAAE;AACJC,IAAAA,QAAQ,EAAE;MAAE,SAAS,EAAA;AAAK;GAC7B;EACDC,IAAI,EAAA,SAAJA,IAAIA,GAAG;IACH,OAAO;AACHC,MAAAA,UAAU,EAAE;KACf;GACJ;AACDC,EAAAA,KAAK,EAAE;AACHlB,IAAAA,IAAI,WAAJA,IAAIA,CAACmB,OAAO,EAAEC,OAAO,EAAE;MACnB,IAAIA,OAAM,KAAMD,OAAO,EAAE;QACrB,IAAI,CAACE,QAAQ,EAAE;AACnB;AACJ;GACH;EACDC,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,IAAI,CAACD,QAAQ,EAAE;GAClB;EACDE,OAAO,EAAA,SAAPA,OAAOA,GAAG;AACN,IAAA,IAAI,IAAI,CAACC,cAAc,EAAE,EAAE;MACvB,IAAI,CAACC,WAAW,EAAE;AACtB;GACH;AACDC,EAAAA,OAAO,EAAE;AACLC,IAAAA,OAAO,EAAPA,SAAAA,OAAOA,CAACC,KAAK,EAAE;AACX;AACA;AACA,MAAA,IAAI,CAACA,KAAK,CAACC,WAAW,EAAE;AACpB,QAAA,IAAI,IAAI,CAACC,aAAa,EAAE,IAAI,CAACC,kBAAkB,CAACH,KAAK,CAAC,CAAA,KACjD,IAAI,CAACI,iBAAiB,CAACJ,KAAK,CAAC;QAElC,IAAI,CAACK,gBAAgB,CAACL,KAAK,CAACM,MAAM,CAACC,KAAK,CAAC;AAC7C;KACH;AACDC,IAAAA,OAAO,EAAPA,SAAAA,OAAOA,CAACR,KAAK,EAAE;AAAA,MAAA,IAAAS,KAAA,GAAA,IAAA;MACX,IAAI,IAAI,CAAChC,QAAQ,EAAE;AACf,QAAA;AACJ;MAEA,IAAI,CAACiC,KAAM,GAAE,IAAI;AAEjBC,MAAAA,YAAY,CAAC,IAAI,CAACC,cAAc,CAAC;AACjC,MAAA,IAAIC,GAAG;AAEP,MAAA,IAAI,CAACC,SAAQ,GAAI,IAAI,CAACC,GAAG,CAACR,KAAK;AAE/BM,MAAAA,GAAI,GAAE,IAAI,CAACG,QAAQ,EAAE;AAErB,MAAA,IAAI,CAACJ,cAAa,GAAIK,UAAU,CAAC,YAAM;AACnC,QAAA,IAAIR,KAAI,CAACM,QAAQG,QAAQ,CAACC,aAAa,EAAE;AACrC,UAAA;AACJ;QAEAV,KAAI,CAACW,WAAW,EAAE;AAElB,QAAA,IAAIP,GAAI,KAAIJ,KAAI,CAACrC,IAAI,CAACiD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAACC,MAAM,EAAE;AAC3Cb,UAAAA,KAAI,CAACc,KAAK,CAAC,CAAC,EAAEV,GAAG,CAAC;AACtB,SAAE,MAAK;AACHJ,UAAAA,KAAI,CAACc,KAAK,CAACV,GAAG,CAAC;AACnB;OACH,EAAE,EAAE,CAAC;AAEN,MAAA,IAAI,CAACW,KAAK,CAAC,OAAO,EAAExB,KAAK,CAAC;KAC7B;AACDyB,IAAAA,MAAM,EAANA,SAAAA,MAAMA,CAACzB,KAAK,EAAE;MAAA,IAAA0B,qBAAA,EAAAC,eAAA;MACV,IAAI,CAACjB,KAAI,GAAI,KAAK;MAClB,IAAI,CAACM,QAAQ,EAAE;MACf,IAAI,CAACX,gBAAgB,CAACL,KAAK,CAACM,MAAM,CAACC,KAAK,CAAC;MAEzC,IAAI,IAAI,CAACQ,GAAG,CAACR,KAAI,KAAM,IAAI,CAACO,SAAS,EAAE;AACnC,QAAA,IAAIc,CAAA,GAAIV,QAAQ,CAACW,WAAW,CAAC,YAAY,CAAC;QAE1CD,CAAC,CAACE,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;AAClC,QAAA,IAAI,CAACf,GAAG,CAACgB,aAAa,CAACH,CAAC,CAAC;AAC7B;AAEA,MAAA,IAAI,CAACJ,KAAK,CAAC,MAAM,EAAExB,KAAK,CAAC;AACzB,MAAA,CAAA0B,qBAAA,GAAAC,CAAAA,eAAA,OAAI,CAACK,SAAS,EAACP,MAAM,MAAA,IAAA,IAAAC,qBAAA,KAAA,KAAA,CAAA,IAArBA,qBAAA,CAAAO,IAAA,CAAAN,eAAA,EAAwB3B,KAAK,CAAC;KACjC;AACDkC,IAAAA,SAAS,EAATA,SAAAA,SAASA,CAAClC,KAAK,EAAE;MACb,IAAI,IAAI,CAACvB,QAAQ,EAAE;AACf,QAAA;AACJ;AAEA,MAAA,IAAI0D,CAAE,GAAEnC,KAAK,CAACoC,IAAI;QACdvB,GAAG;QACHwB,KAAK;QACLC,GAAG;MACP,IAAIC,MAAK,GAAI,SAAS,CAACC,IAAI,CAACC,YAAY,EAAE,CAAC;AAE3C,MAAA,IAAI,CAACC,MAAK,GAAI,IAAI,CAAC3B,GAAG,CAACR,KAAK;;AAE5B;AACA,MAAA,IAAI4B,CAAA,KAAM,WAAU,IAAKA,CAAE,KAAI,QAAS,IAAII,MAAK,IAAKJ,MAAM,QAAS,EAAE;AACnEtB,QAAAA,GAAE,GAAI,IAAI,CAACU,KAAK,EAAE;QAClBc,KAAI,GAAIxB,GAAG,CAACwB,KAAK;QACjBC,MAAMzB,GAAG,CAACyB,GAAG;AAEb,QAAA,IAAIA,MAAMD,KAAM,KAAI,CAAC,EAAE;UACnBA,KAAI,GAAIF,CAAA,KAAM,QAAO,GAAI,IAAI,CAACQ,QAAQ,CAACN,KAAK,CAAE,GAAGC,GAAE,GAAI,IAAI,CAACM,QAAQ,CAACP,KAAI,GAAI,CAAC,CAAE;AAChFC,UAAAA,GAAI,GAAEH,CAAE,KAAI,QAAO,GAAI,IAAI,CAACS,QAAQ,CAACN,GAAG,IAAIA,GAAG;AACnD;AAEA,QAAA,IAAI,CAACO,WAAW,CAACR,KAAK,EAAEC,GAAG,CAAC;QAC5B,IAAI,CAACQ,MAAM,CAACT,KAAK,EAAEC,GAAE,GAAI,CAAC,CAAC;QAC3B,IAAI,CAACjC,gBAAgB,CAACL,KAAK,CAACM,MAAM,CAACC,KAAK,CAAC;QAEzCP,KAAK,CAAC+C,cAAc,EAAE;AAC1B,OAAA,MAAO,IAAIZ,CAAE,KAAI,OAAO,EAAE;AACtB;AACA,QAAA,IAAI,CAACpB,GAAG,CAACiC,IAAI,EAAE;QACf,IAAI,CAAC3C,gBAAgB,CAACL,KAAK,CAACM,MAAM,CAACC,KAAK,CAAC;AAC7C,OAAA,MAAO,IAAI4B,CAAE,KAAI,QAAQ,EAAE;AACvB;AACA,QAAA,IAAI,CAACpB,GAAG,CAACR,KAAI,GAAI,IAAI,CAACO,SAAS;QAC/B,IAAI,CAACS,KAAK,CAAC,CAAC,EAAE,IAAI,CAACP,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAACX,gBAAgB,CAACL,KAAK,CAACM,MAAM,CAACC,KAAK,CAAC;QACzCP,KAAK,CAAC+C,cAAc,EAAE;AAC1B;AAEA,MAAA,IAAI,CAACvB,KAAK,CAAC,SAAS,EAAExB,KAAK,CAAC;KAC/B;AACDiD,IAAAA,UAAU,EAAVA,SAAAA,UAAUA,CAACjD,KAAK,EAAE;AAAA,MAAA,IAAAkD,MAAA,GAAA,IAAA;MACd,IAAI,IAAI,CAACzE,QAAQ,EAAE;AACf,QAAA;AACJ;AAEA,MAAA,IAAI0D,CAAE,GAAEnC,KAAK,CAACoC,IAAI;AACdvB,QAAAA,GAAE,GAAI,IAAI,CAACU,KAAK,EAAE;QAClB4B,CAAC;QACDC,CAAC;QACDC,IAAI;QACJC,SAAS;AAEb,MAAA,IAAItD,KAAK,CAACuD,OAAQ,IAAGvD,KAAK,CAACwD,MAAO,IAAGxD,KAAK,CAACyD,OAAM,IAAKzD,KAAK,CAAC0D,QAAO,IAAK1D,KAAK,CAAC2D,GAAI,KAAI,UAAS,IAAK3D,KAAK,CAAC2D,GAAI,KAAI,QAAO,IAAK3D,KAAK,CAAC2D,GAAI,KAAI,KAAK,EAAE;AAC/I;AACA,QAAA;AACJ,OAAE,MAAK,IAAIxB,KAAKA,MAAM,OAAO,EAAE;QAC3B,IAAItB,GAAG,CAACyB,GAAE,GAAIzB,GAAG,CAACwB,UAAU,CAAC,EAAE;UAC3B,IAAI,CAACQ,WAAW,CAAChC,GAAG,CAACwB,KAAK,EAAExB,GAAG,CAACyB,GAAG,CAAC;AACpC,UAAA,IAAI,CAACQ,MAAM,CAACjC,GAAG,CAACwB,KAAK,EAAExB,GAAG,CAACyB,GAAI,GAAE,CAAC,CAAC;AACvC;QAEAa,CAAE,GAAE,IAAI,CAACP,QAAQ,CAAC/B,GAAG,CAACwB,KAAI,GAAI,CAAC,CAAC;AAEhC,QAAA,IAAIc,CAAE,GAAE,IAAI,CAACS,GAAG,EAAE;UACdR,CAAE,GAAEpD,KAAK,CAAC2D,GAAG;UAEb,IAAI,IAAI,CAACE,KAAK,CAACV,CAAC,CAAC,CAACX,IAAI,CAACY,CAAC,CAAC,EAAE;AACvB,YAAA,IAAI,CAACU,MAAM,CAACX,CAAC,CAAC;AAEd,YAAA,IAAI,CAACY,MAAM,CAACZ,CAAC,CAAA,GAAIC,CAAC;YAClB,IAAI,CAAChC,WAAW,EAAE;AAClBiC,YAAAA,IAAG,GAAI,IAAI,CAACT,QAAQ,CAACO,CAAC,CAAC;YAEvB,IAAI,UAAU,CAACX,IAAI,CAACC,YAAY,EAAE,CAAC,EAAE;AACjC;AACA,cAAA,IAAIuB,KAAI,GAAI,SAARA,KAAIA,GAAU;AACdd,gBAAAA,MAAI,CAAC3B,KAAK,CAAC8B,IAAI,CAAC;eACnB;AAEDpC,cAAAA,UAAU,CAAC+C,KAAK,EAAE,CAAC,CAAC;AACxB,aAAE,MAAK;AACH,cAAA,IAAI,CAACzC,KAAK,CAAC8B,IAAI,CAAC;AACpB;AAEA,YAAA,IAAIxC,GAAG,CAACwB,KAAI,IAAK,IAAI,CAAC4B,sBAAsB,EAAE;AAC1CX,cAAAA,SAAU,GAAE,IAAI,CAACY,WAAW,EAAE;AAClC;AACJ;AACJ;QAEAlE,KAAK,CAAC+C,cAAc,EAAE;AAC1B;MAEA,IAAI,CAAC1C,gBAAgB,CAACL,KAAK,CAACM,MAAM,CAACC,KAAK,CAAC;AAEzC,MAAA,IAAI+C,SAAS,EAAE;AACX,QAAA,IAAI,CAAC9B,KAAK,CAAC,UAAU,EAAExB,KAAK,CAAC;AACjC;AAEA,MAAA,IAAI,CAACwB,KAAK,CAAC,UAAU,EAAExB,KAAK,CAAC;KAChC;AACDmE,IAAAA,OAAO,EAAPA,SAAAA,OAAOA,CAACnE,KAAK,EAAE;AACX,MAAA,IAAI,CAACI,iBAAiB,CAACJ,KAAK,CAAC;AAE7B,MAAA,IAAI,CAACwB,KAAK,CAAC,OAAO,EAAExB,KAAK,CAAC;KAC7B;AACDuB,IAAAA,KAAK,WAALA,KAAKA,CAAC6C,KAAK,EAAEC,IAAI,EAAE;AACf,MAAA,IAAIC,KAAK,EAAEjC,KAAK,EAAEC,GAAG;AAErB,MAAA,IAAI,CAAC,IAAI,CAACvB,GAAG,CAACwD,YAAa,IAAG,IAAI,CAACxD,GAAI,KAAIG,QAAQ,CAACC,aAAa,EAAE;AAC/D,QAAA;AACJ;AAEA,MAAA,IAAI,OAAOiD,UAAU,QAAQ,EAAE;AAC3B/B,QAAAA,KAAI,GAAI+B,KAAK;QACb9B,GAAE,GAAI,OAAO+B,IAAK,KAAI,WAAWA,OAAOhC,KAAK;AAE7C,QAAA,IAAI,IAAI,CAACtB,GAAG,CAACyD,iBAAiB,EAAE;UAC5B,IAAI,CAACzD,GAAG,CAACyD,iBAAiB,CAACnC,KAAK,EAAEC,GAAG,CAAC;SAC1C,MAAO,IAAI,IAAI,CAACvB,GAAG,CAAC,iBAAiB,CAAC,EAAE;UACpCuD,KAAI,GAAI,IAAI,CAACvD,GAAG,CAAC,iBAAiB,CAAC,EAAE;AACrCuD,UAAAA,KAAK,CAACG,QAAQ,CAAC,IAAI,CAAC;AACpBH,UAAAA,KAAK,CAACI,OAAO,CAAC,WAAW,EAAEpC,GAAG,CAAC;AAC/BgC,UAAAA,KAAK,CAACK,SAAS,CAAC,WAAW,EAAEtC,KAAK,CAAC;UACnCiC,KAAK,CAACM,MAAM,EAAE;AAClB;AACJ,OAAE,MAAK;AACH,QAAA,IAAI,IAAI,CAAC7D,GAAG,CAACyD,iBAAiB,EAAE;AAC5BnC,UAAAA,KAAM,GAAE,IAAI,CAACtB,GAAG,CAAC8D,cAAc;AAC/BvC,UAAAA,MAAM,IAAI,CAACvB,GAAG,CAAC+D,YAAY;AAC/B,SAAA,MAAO,IAAI5D,QAAQ,CAAC,WAAW,CAAA,IAAKA,QAAQ,CAAC,WAAW,CAAC,CAAC6D,WAAW,EAAE;UACnET,KAAM,GAAEpD,QAAQ,CAAC,WAAW,CAAC,CAAC6D,WAAW,EAAE;AAC3C1C,UAAAA,KAAM,GAAE,IAAIiC,KAAK,CAACU,SAAS,EAAE,CAACL,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;AAC7DrC,UAAAA,GAAI,GAAED,KAAI,GAAIiC,KAAK,CAACW,IAAI,CAAC3D,MAAM;AACnC;QAEA,OAAO;AAAEe,UAAAA,KAAK,EAAEA,KAAK;AAAEC,UAAAA,GAAG,EAAEA;SAAK;AACrC;KACH;IACD4B,WAAW,EAAA,SAAXA,WAAWA,GAAG;AACV,MAAA,KAAK,IAAIgB,CAAE,GAAE,IAAI,CAACC,eAAe,EAAED,CAAE,IAAG,IAAI,CAACjB,sBAAsB,EAAEiB,CAAC,EAAE,EAAE;QACtE,IAAI,IAAI,CAACrB,KAAK,CAACqB,CAAC,CAAE,IAAG,IAAI,CAACnB,MAAM,CAACmB,CAAC,CAAA,KAAM,IAAI,CAACE,cAAc,CAACF,CAAC,CAAC,EAAE;AAC5D,UAAA,OAAO,KAAK;AAChB;AACJ;AAEA,MAAA,OAAO,IAAI;KACd;AACDE,IAAAA,cAAc,EAAdA,SAAAA,cAAcA,CAACF,CAAC,EAAE;AACd,MAAA,IAAIA,CAAA,GAAI,IAAI,CAACnH,QAAQ,CAACuD,MAAM,EAAE;AAC1B,QAAA,OAAO,IAAI,CAACvD,QAAQ,CAACsH,MAAM,CAACH,CAAC,CAAC;AAClC;AAEA,MAAA,OAAO,IAAI,CAACnH,QAAQ,CAACsH,MAAM,CAAC,CAAC,CAAC;KACjC;AACDzC,IAAAA,QAAQ,EAARA,SAAAA,QAAQA,CAAC/B,GAAG,EAAE;AACV,MAAA,OAAO,EAAEA,GAAE,GAAI,IAAI,CAAC+C,GAAI,IAAG,CAAC,IAAI,CAACC,KAAK,CAAChD,GAAG,CAAC,CAAC;AAE5C,MAAA,OAAOA,GAAG;KACb;AACD8B,IAAAA,QAAQ,EAARA,SAAAA,QAAQA,CAAC9B,GAAG,EAAE;AACV,MAAA,OAAO,EAAEA,GAAE,IAAK,KAAK,CAAC,IAAI,CAACgD,KAAK,CAAChD,GAAG,CAAC,CAAC;AAEtC,MAAA,OAAOA,GAAG;KACb;AACDiC,IAAAA,MAAM,WAANA,MAAMA,CAACT,KAAK,EAAEC,GAAG,EAAE;MACf,IAAI4C,CAAC,EAAEI,CAAC;MAER,IAAIjD,KAAI,GAAI,CAAC,EAAE;AACX,QAAA;AACJ;MAEA,KAAK6C,CAAA,GAAI7C,KAAK,EAAEiD,CAAE,GAAE,IAAI,CAAC1C,QAAQ,CAACN,GAAG,CAAC,EAAE4C,IAAI,IAAI,CAACtB,GAAG,EAAEsB,CAAC,EAAE,EAAE;AACvD,QAAA,IAAI,IAAI,CAACrB,KAAK,CAACqB,CAAC,CAAC,EAAE;UACf,IAAII,CAAE,GAAE,IAAI,CAAC1B,OAAO,IAAI,CAACC,KAAK,CAACqB,CAAC,CAAC,CAAC1C,IAAI,CAAC,IAAI,CAACuB,MAAM,CAACuB,CAAC,CAAC,CAAC,EAAE;YACpD,IAAI,CAACvB,MAAM,CAACmB,CAAC,CAAA,GAAI,IAAI,CAACnB,MAAM,CAACuB,CAAC,CAAC;YAC/B,IAAI,CAACvB,MAAM,CAACuB,CAAC,CAAE,GAAE,IAAI,CAACF,cAAc,CAACE,CAAC,CAAC;AAC3C,WAAE,MAAK;AACH,YAAA;AACJ;AAEAA,UAAAA,CAAA,GAAI,IAAI,CAAC1C,QAAQ,CAAC0C,CAAC,CAAC;AACxB;AACJ;MAEA,IAAI,CAAClE,WAAW,EAAE;AAClB,MAAA,IAAI,CAACG,KAAK,CAACgE,IAAI,CAACC,GAAG,CAAC,IAAI,CAACL,eAAe,EAAE9C,KAAK,CAAC,CAAC;KACpD;AACDyB,IAAAA,MAAM,EAANA,SAAAA,MAAMA,CAACjD,GAAG,EAAE;AACR,MAAA,IAAIqE,CAAC,EAAE9B,CAAC,EAAEkC,CAAC,EAAEG,CAAC;MAEd,KAAKP,CAAA,GAAIrE,GAAG,EAAEuC,CAAE,GAAE,IAAI,CAACgC,cAAc,CAACvE,GAAG,CAAC,EAAEqE,CAAE,GAAE,IAAI,CAACtB,GAAG,EAAEsB,CAAC,EAAE,EAAE;AAC3D,QAAA,IAAI,IAAI,CAACrB,KAAK,CAACqB,CAAC,CAAC,EAAE;AACfI,UAAAA,CAAA,GAAI,IAAI,CAAC1C,QAAQ,CAACsC,CAAC,CAAC;AACpBO,UAAAA,CAAA,GAAI,IAAI,CAAC1B,MAAM,CAACmB,CAAC,CAAC;AAClB,UAAA,IAAI,CAACnB,MAAM,CAACmB,CAAC,CAAA,GAAI9B,CAAC;AAElB,UAAA,IAAIkC,CAAE,GAAE,IAAI,CAAC1B,GAAE,IAAK,IAAI,CAACC,KAAK,CAACyB,CAAC,CAAC,CAAC9C,IAAI,CAACiD,CAAC,CAAC,EAAE;AACvCrC,YAAAA,CAAA,GAAIqC,CAAC;AACT,WAAE,MAAK;AACH,YAAA;AACJ;AACJ;AACJ;KACH;AACDtF,IAAAA,kBAAkB,EAAlBA,SAAAA,kBAAkBA,CAACH,KAAK,EAAE;AACtB,MAAA,IAAI0F,MAAO,GAAE,IAAI,CAAC3E,GAAG,CAACR,KAAK;AAC3B,MAAA,IAAIM,GAAE,GAAI,IAAI,CAACU,KAAK,EAAE;AAEtB,MAAA,IAAI,IAAI,CAACmB,UAAU,IAAI,CAACA,MAAM,CAACpB,MAAK,IAAK,IAAI,CAACoB,MAAM,CAACpB,MAAK,GAAIoE,MAAM,CAACpE,MAAM,EAAE;AACzE;AACA,QAAA,IAAI,CAACN,QAAQ,CAAC,IAAI,CAAC;QACnB,OAAOH,GAAG,CAACwB,KAAM,GAAE,CAAE,IAAG,CAAC,IAAI,CAACwB,KAAK,CAAChD,GAAG,CAACwB,KAAM,GAAE,CAAC,CAAC,EAAExB,GAAG,CAACwB,KAAK,EAAE;AAE/D,QAAA,IAAIxB,GAAG,CAACwB,KAAM,KAAI,CAAC,EAAE;UACjB,OAAOxB,GAAG,CAACwB,QAAQ,IAAI,CAAC8C,eAAc,IAAK,CAAC,IAAI,CAACtB,KAAK,CAAChD,GAAG,CAACwB,KAAK,CAAC,EAAExB,GAAG,CAACwB,KAAK,EAAE;AAClF;QAEA,IAAI,CAACd,KAAK,CAACV,GAAG,CAACwB,KAAK,EAAExB,GAAG,CAACwB,KAAK,CAAC;AACpC,OAAE,MAAK;AACH,QAAA,IAAI,CAACrB,QAAQ,CAAC,IAAI,CAAC;QACnB,OAAOH,GAAG,CAACwB,KAAM,GAAE,IAAI,CAACuB,GAAE,IAAK,CAAC,IAAI,CAACC,KAAK,CAAChD,GAAG,CAACwB,KAAK,CAAC,EAAExB,GAAG,CAACwB,KAAK,EAAE;QAElE,IAAI,CAACd,KAAK,CAACV,GAAG,CAACwB,KAAK,EAAExB,GAAG,CAACwB,KAAK,CAAC;AACpC;AAEA,MAAA,IAAI,IAAI,CAAC6B,WAAW,EAAE,EAAE;AACpB,QAAA,IAAI,CAAC1C,KAAK,CAAC,UAAU,EAAExB,KAAK,CAAC;AACjC;KACH;AACD6C,IAAAA,WAAW,WAAXA,WAAWA,CAAC8C,KAAK,EAAErD,GAAG,EAAE;AACpB,MAAA,IAAI4C,CAAC;AAEL,MAAA,KAAKA,CAAA,GAAIS,KAAK,EAAET,CAAE,GAAE5C,GAAE,IAAK4C,CAAE,GAAE,IAAI,CAACtB,GAAG,EAAEsB,CAAC,EAAE,EAAE;AAC1C,QAAA,IAAI,IAAI,CAACrB,KAAK,CAACqB,CAAC,CAAC,EAAE;UACf,IAAI,CAACnB,MAAM,CAACmB,CAAC,CAAE,GAAE,IAAI,CAACE,cAAc,CAACF,CAAC,CAAC;AAC3C;AACJ;KACH;IACD9D,WAAW,EAAA,SAAXA,WAAWA,GAAG;AACV,MAAA,IAAI,CAACL,GAAG,CAACR,KAAI,GAAI,IAAI,CAACwD,MAAM,CAAC6B,IAAI,CAAC,EAAE,CAAC;KACxC;AACD5E,IAAAA,QAAQ,EAARA,SAAAA,QAAQA,CAAC6E,KAAK,EAAE;MACZ,IAAI,CAACC,iBAAiB,IAAI;AAC1B;AACA,MAAA,IAAItD,IAAK,GAAE,IAAI,CAACzB,GAAG,CAACR,KAAK;QACrBwF,SAAQ,GAAI,CAAC,CAAC;QACdb,CAAC;QACD9B,CAAC;QACDvC,GAAG;AAEP,MAAA,KAAKqE,CAAE,GAAE,CAAC,EAAErE,GAAI,GAAE,CAAC,EAAEqE,CAAE,GAAE,IAAI,CAACtB,GAAG,EAAEsB,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI,IAAI,CAACrB,KAAK,CAACqB,CAAC,CAAC,EAAE;UACf,IAAI,CAACnB,MAAM,CAACmB,CAAC,CAAE,GAAE,IAAI,CAACE,cAAc,CAACF,CAAC,CAAC;AAEvC,UAAA,OAAOrE,GAAG,EAAG,GAAE2B,IAAI,CAAClB,MAAM,EAAE;YACxB8B,CAAA,GAAIZ,IAAI,CAAC6C,MAAM,CAACxE,GAAI,GAAE,CAAC,CAAC;YAExB,IAAI,IAAI,CAACgD,KAAK,CAACqB,CAAC,CAAC,CAAC1C,IAAI,CAACY,CAAC,CAAC,EAAE;AACvB,cAAA,IAAI,CAACW,MAAM,CAACmB,CAAC,CAAA,GAAI9B,CAAC;AAClB2C,cAAAA,SAAU,GAAEb,CAAC;AACb,cAAA;AACJ;AACJ;AAEA,UAAA,IAAIrE,GAAE,GAAI2B,IAAI,CAAClB,MAAM,EAAE;YACnB,IAAI,CAACuB,WAAW,CAACqC,CAAE,GAAE,CAAC,EAAE,IAAI,CAACtB,GAAG,CAAC;AACjC,YAAA;AACJ;AACJ,SAAE,MAAK;AACH,UAAA,IAAI,IAAI,CAACG,MAAM,CAACmB,CAAC,CAAE,KAAI1C,IAAI,CAAC6C,MAAM,CAACxE,GAAG,CAAC,EAAE;AACrCA,YAAAA,GAAG,EAAE;AACT;AAEA,UAAA,IAAIqE,CAAA,GAAI,IAAI,CAACc,eAAe,EAAE;AAC1BD,YAAAA,SAAU,GAAEb,CAAC;AACjB;AACJ;AACJ;AAEA,MAAA,IAAIW,KAAK,EAAE;QACP,IAAI,CAACzE,WAAW,EAAE;OACtB,MAAO,IAAI2E,SAAQ,GAAI,CAAE,GAAE,IAAI,CAACC,eAAe,EAAE;AAC7C,QAAA,IAAI,IAAI,CAAC1H,SAAU,IAAG,IAAI,CAACyF,MAAM,CAAC6B,IAAI,CAAC,EAAE,CAAE,KAAI,IAAI,CAACK,aAAa,EAAE;AAC/D;AACA;AACA,UAAA,IAAI,IAAI,CAAClF,GAAG,CAACR,KAAK,EAAE,IAAI,CAACQ,GAAG,CAACR,KAAM,GAAE,EAAE;UACvC,IAAI,CAACsC,WAAW,CAAC,CAAC,EAAE,IAAI,CAACe,GAAG,CAAC;AACjC,SAAE,MAAK;AACH;AACA;UACA,IAAI,CAACxC,WAAW,EAAE;AACtB;AACJ,OAAE,MAAK;QACH,IAAI,CAACA,WAAW,EAAE;AAClB,QAAA,IAAI,CAACL,GAAG,CAACR,QAAQ,IAAI,CAACQ,GAAG,CAACR,KAAK,CAAC2F,SAAS,CAAC,CAAC,EAAEH,SAAQ,GAAI,CAAC,CAAC;AAC/D;MAEA,OAAO,IAAI,CAACC,eAAgB,GAAEd,IAAI,IAAI,CAACC,eAAe;KACzD;AACD/E,IAAAA,iBAAiB,EAAjBA,SAAAA,iBAAiBA,CAACJ,KAAK,EAAE;AACrB,MAAA,IAAMmG,eAAenG,KAAK,CAAChC,IAAK,KAAI,OAAO;AAE3C,MAAA,IAAI,IAAI,CAACS,QAAS,IAAG0H,YAAY,EAAE;AAC/B,QAAA;AACJ;AAEA,MAAA,IAAItF,GAAE,GAAI,IAAI,CAACG,QAAQ,CAAC,IAAI,CAAC;AAE7B,MAAA,IAAI,CAACO,KAAK,CAACV,GAAG,CAAC;MACf,IAAI,CAACR,gBAAgB,CAACL,KAAK,CAACM,MAAM,CAACC,KAAK,CAAC;AAEzC,MAAA,IAAI,IAAI,CAAC2D,WAAW,EAAE,EAAE;AACpB,QAAA,IAAI,CAAC1C,KAAK,CAAC,UAAU,EAAExB,KAAK,CAAC;AACjC;KACH;IACDoG,gBAAgB,EAAA,SAAhBA,gBAAgBA,GAAG;MACf,IAAIC,cAAe,GAAE,EAAE;AAEvB,MAAA,KAAK,IAAInB,CAAA,GAAI,CAAC,EAAEA,CAAE,GAAE,IAAI,CAACnB,MAAM,CAACzC,MAAM,EAAE4D,CAAC,EAAE,EAAE;AACzC,QAAA,IAAI9B,CAAA,GAAI,IAAI,CAACW,MAAM,CAACmB,CAAC,CAAC;AAEtB,QAAA,IAAI,IAAI,CAACrB,KAAK,CAACqB,CAAC,CAAA,IAAK9B,CAAA,KAAM,IAAI,CAACgC,cAAc,CAACF,CAAC,CAAC,EAAE;AAC/CmB,UAAAA,cAAc,CAACC,IAAI,CAAClD,CAAC,CAAC;AAC1B;AACJ;AAEA,MAAA,OAAOiD,cAAc,CAACT,IAAI,CAAC,EAAE,CAAC;KACjC;AAEDvF,IAAAA,gBAAgB,EAAhBA,SAAAA,gBAAgBA,CAACE,KAAK,EAAE;AACpB,MAAA,IAAMgG,GAAE,GAAI,IAAI,CAAC/H,MAAO,GAAE,IAAI,CAAC4H,gBAAgB,EAAC,GAAI7F,KAAK;MAEzD,IAAI,CAAClB,UAAW,GAAEkB,KAAK;AAEvB,MAAA,IAAI,CAACiG,UAAU,CAAC,IAAI,CAACP,kBAAkBM,MAAMA,GAAI,GAAE,EAAE,CAAC;KACzD;IACD1G,WAAW,EAAA,SAAXA,WAAWA,GAAqB;AAAA,MAAA,IAAA4G,MAAA,GAAA,IAAA;AAAA,MAAA,IAApBC,WAAY,GAAAC,SAAA,CAAArF,MAAA,GAAA,CAAA,IAAAqF,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAE,IAAI;MAC1B,IAAI,IAAI,CAAC5F,GAAG,EAAE;AACV,QAAA,IAAI,IAAI,CAAC8F,WAAW,IAAI,EAAE;AACtB,UAAA,IAAI,CAAC9F,GAAG,CAACR,KAAM,GAAE,EAAE;AACnBmG,UAAAA,WAAU,IAAK,IAAI,CAACrG,gBAAgB,CAAC,EAAE,CAAC;AAC5C,SAAE,MAAK;AACH,UAAA,IAAI,CAACU,GAAG,CAACR,QAAQ,IAAI,CAACsG,OAAO;UAC7B,IAAI,CAAC7F,QAAQ,EAAE;AAEfC,UAAAA,UAAU,CAAC,YAAM;YACb,IAAIwF,MAAI,CAAC1F,GAAG,EAAE;cACV0F,MAAI,CAACrF,WAAW,EAAE;cAClBqF,MAAI,CAACzF,QAAQ,EAAE;cAEf,IAAI0F,WAAW,EAAED,MAAI,CAACpG,gBAAgB,CAACoG,MAAI,CAAC1F,GAAG,CAACR,KAAK,CAAC;AAC1D;WACH,EAAE,EAAE,CAAC;AACV;AAEA,QAAA,IAAI,CAACO,SAAQ,GAAI,IAAI,CAACC,GAAG,CAACR,KAAK;AACnC;KACH;IACDd,QAAQ,EAAA,SAARA,QAAQA,GAAG;MACP,IAAI,CAACoE,KAAI,GAAI,EAAE;AACf,MAAA,IAAI,CAACmC,eAAc,GAAI,IAAI,CAAC5H,IAAI,CAACkD,MAAM;AACvC,MAAA,IAAI,CAACsC,GAAE,GAAI,IAAI,CAACxF,IAAI,CAACkD,MAAM;MAC3B,IAAI,CAAC6D,kBAAkB,IAAI;MAC3B,IAAI,CAAC2B,OAAO;AACR,QAAA,CAAC,EAAE,OAAO;AACVC,QAAAA,CAAC,EAAE,UAAU;AACb,QAAA,GAAG,EAAE;OACR;AAED,MAAA,IAAIC,KAAKvE,YAAY,EAAE;AAEvB,MAAA,IAAI,CAACvC,aAAc,GAAE,SAAS,CAACsC,IAAI,CAACwE,EAAE,CAAE,IAAG,UAAU,CAACxE,IAAI,CAACwE,EAAE,CAAC;MAE9D,IAAIC,UAAS,GAAI,IAAI,CAAC7I,IAAI,CAAC8I,KAAK,CAAC,EAAE,CAAC;AAEpC,MAAA,KAAK,IAAIhC,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAI+B,UAAU,CAAC3F,MAAM,EAAE4D,CAAC,EAAE,EAAE;AACxC,QAAA,IAAI9B,CAAA,GAAI6D,UAAU,CAAC/B,CAAC,CAAC;QAErB,IAAI9B,CAAE,KAAI,GAAG,EAAE;UACX,IAAI,CAACQ,GAAG,EAAE;UACV,IAAI,CAACoC,eAAc,GAAId,CAAC;SAC5B,MAAO,IAAI,IAAI,CAAC4B,IAAI,CAAC1D,CAAC,CAAC,EAAE;AACrB,UAAA,IAAI,CAACS,KAAK,CAACyC,IAAI,CAAC,IAAIa,MAAM,CAAC,IAAI,CAACL,IAAI,CAAC1D,CAAC,CAAC,CAAC,CAAC;AAEzC,UAAA,IAAI,IAAI,CAAC+B,eAAc,KAAM,IAAI,EAAE;YAC/B,IAAI,CAACA,eAAc,GAAI,IAAI,CAACtB,KAAK,CAACvC,MAAK,GAAI,CAAC;AAChD;AAEA,UAAA,IAAI4D,CAAA,GAAI,IAAI,CAACc,eAAe,EAAE;YAC1B,IAAI,CAAC/B,yBAAyB,IAAI,CAACJ,KAAK,CAACvC,MAAO,GAAE,CAAC;AACvD;AACJ,SAAE,MAAK;AACH,UAAA,IAAI,CAACuC,KAAK,CAACyC,IAAI,CAAC,IAAI,CAAC;AACzB;AACJ;MAEA,IAAI,CAACvC,MAAK,GAAI,EAAE;AAEhB,MAAA,KAAK,IAAImB,EAAA,GAAI,CAAC,EAAEA,EAAA,GAAI+B,UAAU,CAAC3F,MAAM,EAAE4D,EAAC,EAAE,EAAE;AACxC,QAAA,IAAI9B,EAAA,GAAI6D,UAAU,CAAC/B,EAAC,CAAC;QAErB,IAAI9B,EAAE,KAAI,GAAG,EAAE;AACX,UAAA,IAAI,IAAI,CAAC0D,IAAI,CAAC1D,EAAC,CAAC,EAAE,IAAI,CAACW,MAAM,CAACuC,IAAI,CAAC,IAAI,CAAClB,cAAc,CAACF,EAAC,CAAC,CAAC,CAAA,KACrD,IAAI,CAACnB,MAAM,CAACuC,IAAI,CAAClD,EAAC,CAAC;AAC5B;AACJ;MAEA,IAAI,CAAC6C,aAAc,GAAE,IAAI,CAAClC,MAAM,CAAC6B,IAAI,CAAC,EAAE,CAAC;AACzC,MAAA,IAAI,CAAC/F,WAAW,CAAC,KAAK,CAAC;KAC1B;IACDD,cAAc,EAAA,SAAdA,cAAcA,GAAG;AACb,MAAA,OAAO,IAAI,CAACpB,MAAO,GAAE,IAAI,CAACqI,OAAM,IAAK,IAAI,CAACT,gBAAgB,EAAC,GAAI,IAAI,CAACH,aAAY,KAAM,IAAI,CAAClF,GAAG,CAACR,KAAM,IAAG,IAAI,CAACQ,GAAG,CAACR,KAAI,KAAM,IAAI,CAACsG,OAAO;AAC3I;GACH;AACDO,EAAAA,QAAQ,EAAE;IACNC,UAAU,EAAA,SAAVA,UAAUA,GAAG;MACT,OAAO,CAAC,IAAI,CAACC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAA,OAAA,CAAM,CAAC;KACvC;IACDC,aAAa,EAAA,SAAbA,aAAaA,GAAG;MACZ,OAAO;QACHC,IAAI,EAAEC,UAAU,CAAC,IAAI,CAACC,GAAG,CAAC,aAAa,EAAE,IAAI,CAACC,SAAS,CAAC,EAAE,IAAI,CAACC,IAAI,CAAC,MAAM,EAAE,IAAI,CAACD,SAAS,CAAC;OAC9F;KACJ;IACDA,SAAS,EAAA,SAATA,SAASA,GAAG;MACR,OAAO;AACHE,QAAAA,OAAO,EAAE;UACLC,MAAM,EAAE,IAAI,CAACC;AACjB;OACH;AACL;GACH;AACDC,EAAAA,UAAU,EAAE;AACRC,IAAAA,SAAQ,EAARA;AACJ;AACJ,CAAC;;;;sBCxiBGC,WAqBC,CAAAC,oBAAA,EAAA;IApBIjK,EAAE,EAAEkK,IAAE,CAAAlK,EAAA;IACNqC,KAAK,EAAE8H,KAAU,CAAAhJ,UAAA;AACjB,IAAA,OAAA,iBAAOiJ,QAAU,CAAAjB,UAAA,CAAA;IACjB5I,QAAQ,EAAE2J,IAAQ,CAAA3J,QAAA;IAClB8J,QAAQ,EAAEH,IAAQ,CAAAG,QAAA;IAClBC,OAAO,EAAEJ,IAAO,CAAAI,OAAA;IAChBC,IAAI,EAAEL,IAAI,CAAAK,IAAA;IACV7K,IAAI,EAAEwK,IAAI,CAAAxK,IAAA;IACV8K,OAAO,EAAEN,IAAO,CAAAM,OAAA;IAChBrK,WAAW,EAAE+J,IAAW,CAAA/J,WAAA;IACxBsK,KAAK,EAAEP,IAAM,CAAAQ,MAAA;IACbC,QAAQ,EAAET,IAAQ,CAAAS,QAAA;IAClB9I,OAAK,EAAEuI,QAAO,CAAAvI,OAAA;IACd+I,gBAAc,EAAER,QAAO,CAAAvI,OAAA;IACvBS,OAAK,EAAE8H,QAAO,CAAA9H,OAAA;IACdiB,MAAI,EAAE6G,QAAM,CAAA7G,MAAA;IACZsH,SAAO,EAAET,QAAS,CAAApG,SAAA;IAClB8G,UAAQ,EAAEV,QAAU,CAAArF,UAAA;IACpBkB,OAAK,EAAEmE,QAAO,CAAAnE,OAAA;IACd8E,EAAE,EAAEX,QAAa,CAAAf;;;;;;;;"}