{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/W9pZlTbV45AK340axNN5/bpJOd1Cgvur0Ipev1Wv9/Marketo_Form.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/index.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/marketo-form/lib/marketo-framer-form.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/marketo-form/lib/marketo-components.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/marketo-form/lib/marketo-helpers.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/utils/live-reload/use-realtime-component.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/utils/live-reload/bootstrap.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/utils/live-reload/socket.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/index.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/url.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/socket.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/index.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/polling-xhr.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/polling.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transport.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/encodePacket.browser.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/commons.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/decodePacket.browser.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/@socket.io/component-emitter/lib/esm/index.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/util.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/globals.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/contrib/parseqs.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/index.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/contrib/has-cors.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/websocket.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/webtransport.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/contrib/parseuri.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/manager.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/socket.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-parser/build/esm/index.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-parser/build/esm/binary.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-parser/build/esm/is-binary.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/on.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/contrib/backo2.esm.js", "ssg:https://mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/polling-fetch.esm.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls}from\"framer\";import{MarketoFramerForm as ImportedComponent}from\"https://mirostatic.com/website/static/production-eu/framer-code-components/index.esm.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function MarketoForm(props){return /*#__PURE__*/_jsx(\"div\",{children:/*#__PURE__*/_jsx(ImportedComponent,{...props})});}addPropertyControls(MarketoForm,ImportedComponent.propertyControls||{});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MarketoForm\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Marketo_Form.map", "export { MarketoFramerForm } from './marketo-form/lib/marketo-framer-form.esm.js';\nexport { isDev, useRealtimeComponent } from './utils/live-reload/use-realtime-component.esm.js';\n", "import { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { ControlType } from 'framer';\nimport ButtonsSubmitButton from 'https://framer.com/m/Buttons-Submit-Button-s9Qi.js@9fVDNfrYO6MqcwTbTmCa';\nimport { useState, useRef, useEffect } from 'react';\nimport { SuccessMessage, Loader, FormContainer, FormRow, ErrorMessage, Label, Input, RadioGroup, RadioOption, Radio, Checkbox, Checkmark, CheckboxLabel, CheckboxContainer, TextArea, Select, TextOnlyContent } from './marketo-components.esm.js';\nimport { useInvalidDomains, useMarketoFormStore, processFormRow, processHiddenFields, getLastServerViewedExperiment, getURLParameter, getMarketoParamKey, addLinkedinPixel } from './marketo-helpers.esm.js';\n\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */ function MarketoFramerForm({ formId, successMessage, isSalesForm, fastlaneCampaignId, validateBusinessEmails, invalidBusinessEmailMessage }) {\n    const [fields, setFields] = useState([]);\n    const [fieldRows, setFieldRows] = useState([]);\n    const [formData, setFormData] = useState({});\n    const [hiddenFields, setHiddenFields] = useState({});\n    const [status, setStatus] = useState({\n        type: null,\n        message: ''\n    });\n    const [formErrors, setFormErrors] = useState({});\n    const { loadDomains, checkDomainName } = useInvalidDomains();\n    const [isScriptLoaded, setScrpitLoaded] = useState(false);\n    const [marketoFormStore, setMarketoFormStore] = useMarketoFormStore();\n    const marketoFormRef = useRef(null);\n    const FORM_BASE_URL = 'https://228-gpv-835.mktoweb.com';\n    const FORM_MUNCHKIN_ID = '228-gpv-835';\n    const initializeForm = ()=>{\n        if (marketoFormStore.isFormLoading) {\n            return false;\n        }\n        setMarketoFormStore({\n            isFormLoading: true\n        });\n        marketoFormRef?.current?.setAttribute('id', 'mktoForm_' + formId);\n        window?.MktoForms2?.loadForm(FORM_BASE_URL, FORM_MUNCHKIN_ID, formId);\n        window?.MktoForms2?.whenReady((form)=>{\n            const formElement = form.getFormElem()[0];\n            const formRows = formElement.querySelectorAll('.mktoFormRow');\n            const processedFormRows = [];\n            const formFields = [];\n            formRows.forEach((row)=>{\n                const fieldsInRow = processFormRow(row);\n                if (fieldsInRow && fieldsInRow.length > 0) {\n                    processedFormRows.push(fieldsInRow);\n                    formFields.push(...fieldsInRow);\n                }\n            });\n            const hiddenFormFields = processHiddenFields(formElement);\n            setFields(formFields);\n            setFieldRows(processedFormRows);\n            setHiddenFields(hiddenFormFields);\n            marketoFormRef.current?.setAttribute('id', '');\n            setMarketoFormStore({\n                isFormLoading: false\n            });\n        });\n        return true;\n    };\n    const appendScript = async ()=>{\n        if (window.MktoForms2) return setScrpitLoaded(true);\n        const script = document.createElement('script');\n        script.defer = true;\n        script.onload = ()=>window.MktoForms2 ? setScrpitLoaded(true) : null;\n        script.src = `${FORM_BASE_URL}/js/forms2/js/forms2.min.js`;\n        document.head.appendChild(script);\n    };\n    useEffect(()=>{\n        if (validateBusinessEmails) {\n            loadDomains();\n        }\n    }, [\n        validateBusinessEmails,\n        loadDomains\n    ]);\n    useEffect(()=>{\n        let intervalId;\n        if (isScriptLoaded) {\n            intervalId = setInterval(()=>{\n                if (initializeForm()) {\n                    clearInterval(intervalId);\n                }\n            }, 250);\n        }\n        appendScript();\n        return ()=>{\n            clearInterval(intervalId);\n        };\n    }, [\n        isScriptLoaded,\n        formId\n    ]);\n    const validateBusinessEmail = (name, email)=>{\n        if (!validateBusinessEmails || !email) return true;\n        const isValidBusinessEmail = !checkDomainName(email);\n        if (!isValidBusinessEmail) {\n            setFormErrors((prev)=>({\n                    ...prev,\n                    [name]: invalidBusinessEmailMessage || 'Must be a Business email.'\n                }));\n        } else {\n            setFormErrors((prev)=>({\n                    ...prev,\n                    [name]: ''\n                }));\n        }\n        return isValidBusinessEmail;\n    };\n    const handleEmailBlur = (field, email)=>{\n        if (!field.isEmailField) {\n            return;\n        }\n        validateBusinessEmail(field.name, email);\n    };\n    const handleInputChange = (name, value)=>{\n        setFormData((prev)=>({\n                ...prev,\n                [name]: value\n            }));\n        if (formErrors[name]) {\n            setFormErrors((prev)=>({\n                    ...prev,\n                    [name]: ''\n                }));\n        }\n    };\n    const renderField = (field)=>{\n        const hasError = !!formErrors[field.name];\n        switch(field.type){\n            case 'text-only':\n                return jsx(TextOnlyContent, {\n                    dangerouslySetInnerHTML: {\n                        __html: field.htmlContent || ''\n                    }\n                });\n            case 'select':\n                return jsxs(\"div\", {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        jsx(Select, {\n                            name: field.name,\n                            required: field.required,\n                            hasError: hasError,\n                            value: formData[field.name] || '',\n                            onChange: (e)=>handleInputChange(field.name, e.target.value),\n                            children: field.options?.map((option)=>jsx(\"option\", {\n                                    value: option.value,\n                                    children: option.label\n                                }, option.value))\n                        })\n                    ]\n                });\n            case 'textarea':\n                return jsxs(Fragment, {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        jsx(TextArea, {\n                            name: field.name,\n                            required: field.required,\n                            placeholder: field.placeholder,\n                            hasError: hasError,\n                            value: formData[field.name] || '',\n                            onChange: (e)=>handleInputChange(field.name, e.target.value)\n                        })\n                    ]\n                });\n            case 'checkbox':\n                return jsxs(CheckboxContainer, {\n                    children: [\n                        jsxs(\"div\", {\n                            style: {\n                                position: 'relative'\n                            },\n                            children: [\n                                jsx(Checkbox, {\n                                    name: field.name,\n                                    isChecked: !!formData[field.name],\n                                    hasError: hasError,\n                                    onChange: (e)=>handleInputChange(field.name, e.target.checked),\n                                    checked: !!formData[field.name]\n                                }),\n                                !!formData[field.name] && jsx(Checkmark, {})\n                            ]\n                        }),\n                        jsx(CheckboxLabel, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        })\n                    ]\n                });\n            case 'checkboxList':\n                return jsxs(\"div\", {\n                    children: [\n                        jsx(Label, {\n                            style: {\n                                marginBottom: '12px'\n                            },\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        field.options?.map((option)=>{\n                            // Initialize the selected values as an array if not already\n                            const selectedValues = Array.isArray(formData[field.name]) ? formData[field.name] : [];\n                            const isChecked = selectedValues.includes(option.value);\n                            return jsxs(\"div\", {\n                                style: {\n                                    display: 'flex',\n                                    alignItems: 'center',\n                                    gap: '8px'\n                                },\n                                children: [\n                                    jsxs(\"div\", {\n                                        style: {\n                                            position: 'relative'\n                                        },\n                                        children: [\n                                            jsx(Checkbox, {\n                                                name: `${field.name}[]`,\n                                                value: option.value,\n                                                isChecked: isChecked,\n                                                hasError: hasError,\n                                                onChange: (e)=>{\n                                                    const newValues = [\n                                                        ...selectedValues\n                                                    ];\n                                                    if (e.target.checked) {\n                                                        if (!newValues.includes(option.value)) {\n                                                            newValues.push(option.value);\n                                                        }\n                                                    } else {\n                                                        const index = newValues.indexOf(option.value);\n                                                        if (index !== -1) {\n                                                            newValues.splice(index, 1);\n                                                        }\n                                                    }\n                                                    handleInputChange(field.name, newValues);\n                                                },\n                                                checked: isChecked\n                                            }),\n                                            isChecked && jsx(Checkmark, {})\n                                        ]\n                                    }),\n                                    jsx(CheckboxLabel, {\n                                        children: option.label\n                                    })\n                                ]\n                            }, option.value);\n                        })\n                    ]\n                });\n            case 'radio':\n                return jsxs(RadioGroup, {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        field.options?.map((option)=>jsxs(RadioOption, {\n                                children: [\n                                    jsx(Radio, {\n                                        name: field.name,\n                                        value: option.value,\n                                        checked: formData[field.name] === option.value,\n                                        onChange: (e)=>handleInputChange(field.name, e.target.value)\n                                    }),\n                                    jsx(\"span\", {\n                                        children: option.label\n                                    })\n                                ]\n                            }, option.value))\n                    ]\n                });\n            default:\n                return jsxs(Fragment, {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        jsx(Input, {\n                            type: field.type,\n                            name: field.name,\n                            required: field.required,\n                            placeholder: field.placeholder,\n                            hasError: hasError,\n                            value: formData[field.name] || '',\n                            onChange: (e)=>handleInputChange(field.name, e.target.value),\n                            onBlur: (e)=>handleEmailBlur(field, e.target.value)\n                        })\n                    ]\n                });\n        }\n    };\n    const handleSubmit = async (e)=>{\n        e.preventDefault();\n        const emailField = fields.find((field)=>field.isEmailField);\n        // Validate business email if needed\n        if (validateBusinessEmails && emailField) {\n            const isValidBusinessEmail = validateBusinessEmail(emailField.name, formData[emailField.name]);\n            if (!isValidBusinessEmail) {\n                return;\n            }\n        }\n        setStatus({\n            type: 'loading',\n            message: ''\n        });\n        setFormErrors({});\n        try {\n            const marketoForm = window.MktoForms2.getForm(formId);\n            // Set form values\n            const marketoFormData = {\n                ...formData,\n                ...hiddenFields\n            };\n            // Add experiment data for sales forms\n            if (isSalesForm) {\n                const experiment = getLastServerViewedExperiment();\n                if (experiment && experiment.name) {\n                    marketoForm.addHiddenFields({\n                        server_experiment_viewed: experiment.name + '=' + experiment.variant\n                    });\n                }\n            }\n            marketoForm.vals(marketoFormData);\n            // Validate form\n            const validationResult = marketoForm.validate();\n            if (!validationResult) {\n                const formElement = marketoForm.getFormElem()[0];\n                const fieldDescriptors = [\n                    ...formElement.querySelectorAll('.mktoFieldDescriptor')\n                ];\n                const newErrors = {};\n                fieldDescriptors.map((descriptor)=>{\n                    // Get the field descriptor data\n                    return window.MktoForms2.$(descriptor).data('mktoFieldDescriptor');\n                }).filter((descriptor)=>{\n                    // Filter only fields that have validation messages and are invalid\n                    return descriptor && descriptor.validationMessage !== undefined && descriptor.validatorElem[0].classList.contains('mktoInvalid');\n                }).forEach((descriptor)=>{\n                    const fieldName = descriptor.name;\n                    newErrors[fieldName] = descriptor.validationMessage;\n                });\n                setFormErrors(newErrors);\n                setStatus({\n                    type: 'error',\n                    message: ''\n                });\n                return;\n            }\n            // Submit form\n            await new Promise((resolve, reject)=>{\n                marketoForm.onSuccess((data, followUpUrl)=>{\n                    const currentUrl = window.location.origin + window.location.pathname;\n                    const _followUpUrl = new URL(followUpUrl);\n                    const parsedFollowUpUrl = _followUpUrl.origin + _followUpUrl.pathname;\n                    let leadSource = getURLParameter('lead_source');\n                    const referrer = document.referrer;\n                    const events = [];\n                    // Handle lead source for sales forms\n                    if (!!leadSource && isSalesForm) {\n                        const _trigger = getURLParameter('Trigger');\n                        const _window = getURLParameter('window');\n                        if (_trigger) {\n                            leadSource = 'Trigger_' + leadSource;\n                        } else if (_window) {\n                            leadSource = leadSource + ' window';\n                        }\n                    }\n                    // Push data layer events\n                    events.push({\n                        event: 'marketo_form_submitted',\n                        form_id: formId,\n                        form_data: data,\n                        lead_source: leadSource,\n                        user_email: data.Email ?? '',\n                        referer: referrer,\n                        Contact_form_page: window.location.href\n                    });\n                    if (isSalesForm) {\n                        events.push({\n                            event: 'ga-event',\n                            hitType: 'event',\n                            eventCategory: 'company_form_submission',\n                            eventAction: 'Sales',\n                            eventLabel: referrer,\n                            utm_source: leadSource\n                        });\n                        events.push({\n                            event: 'contact-sales-form-submit'\n                        });\n                        // Clear localStorage UTM parameters\n                        const marketoQueryParamsNames = [\n                            'utmsource',\n                            'utmmedium',\n                            'utmcampaign',\n                            'utmcontent',\n                            'utmname'\n                        ];\n                        marketoQueryParamsNames.forEach((name)=>{\n                            window.localStorage.removeItem(getMarketoParamKey(name));\n                        });\n                    }\n                    // Push events to dataLayer\n                    if (typeof window.dataLayer !== 'undefined') {\n                        window.dataLayer.push(...events);\n                    }\n                    // Handle sales form specific actions\n                    if (isSalesForm) {\n                        addLinkedinPixel();\n                        // Handle Drift API integration\n                        if (fastlaneCampaignId) {\n                            try {\n                                window.drift?.api?.collectFormData(marketoFormData, {\n                                    campaignId: Number(fastlaneCampaignId),\n                                    followupUrl: currentUrl !== parsedFollowUpUrl ? followUpUrl : undefined\n                                });\n                                resolve(true);\n                                return false;\n                            } catch (error) {\n                                console.error('Error executing fastlane on sales form', error);\n                            }\n                        }\n                    }\n                    // Handle redirect\n                    const shouldRedirect = currentUrl !== parsedFollowUpUrl;\n                    if (shouldRedirect) {\n                        window.open(followUpUrl, followUpUrl.startsWith('https://miro.com/') ? '_self' : '_blank');\n                    }\n                    setStatus({\n                        type: 'success',\n                        message: ''\n                    });\n                    setFormData({});\n                    resolve(true);\n                    return false;\n                });\n                marketoForm.submit();\n            });\n        } catch (error) {\n            setStatus({\n                type: 'error',\n                message: ''\n            });\n        }\n    };\n    if (status.type === 'success') {\n        return jsx(SuccessMessage, {\n            dangerouslySetInnerHTML: {\n                __html: successMessage || ''\n            }\n        });\n    }\n    return jsxs(\"div\", {\n        children: [\n            fields.length === 0 ? jsx(Loader, {}) : jsxs(FormContainer, {\n                children: [\n                    fieldRows.map((row)=>{\n                        const haveMultipleElements = row.length > 1;\n                        if (haveMultipleElements) {\n                            return jsx(FormRow, {\n                                children: row.map((field)=>jsx(\"div\", {\n                                        children: renderField(field)\n                                    }, field.id))\n                            }, `row-${row[0]?.id}`);\n                        } else {\n                            const field = row[0];\n                            return jsxs(\"div\", {\n                                children: [\n                                    renderField(field),\n                                    formErrors[field.name] && jsx(ErrorMessage, {\n                                        dangerouslySetInnerHTML: {\n                                            __html: formErrors[field.name]\n                                        }\n                                    })\n                                ]\n                            }, field.id);\n                        }\n                    }),\n                    jsx(ButtonsSubmitButton, {\n                        style: {\n                            width: '100%'\n                        },\n                        button: \"Submit\",\n                        onClick: handleSubmit,\n                        variant: status.type === 'loading' ? 'Loading' : status.type === 'success' ? 'Success' : 'Default'\n                    })\n                ]\n            }),\n            jsx(\"form\", {\n                ref: marketoFormRef,\n                style: {\n                    display: 'none'\n                }\n            })\n        ]\n    });\n}\n// Add Framer property controls\nconst propertyControls = {\n    formId: {\n        type: ControlType.String,\n        title: 'Marketo Form ID',\n        defaultValue: ''\n    },\n    successMessage: {\n        type: ControlType.String,\n        title: 'Success Message',\n        defaultValue: 'Thank you!'\n    },\n    isSalesForm: {\n        type: ControlType.Boolean,\n        title: 'Is Sales Form',\n        defaultValue: false\n    },\n    fastlaneCampaignId: {\n        type: ControlType.String,\n        title: 'Fastlane Campaign ID',\n        defaultValue: ''\n    },\n    validateBusinessEmails: {\n        type: ControlType.Boolean,\n        title: 'Validate Business Emails',\n        defaultValue: false\n    },\n    invalidBusinessEmailMessage: {\n        type: ControlType.String,\n        title: 'Invalid Business Email Message',\n        defaultValue: 'Must be a Business email.'\n    }\n};\nMarketoFramerForm.propertyControls = propertyControls;\n\nexport { MarketoFramerForm };\n", "import { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { withCSS } from 'framer';\n\nconst version = 'version-2';\nconst classNamePrefix = 'framer-marketo-';\nconst classNames = {\n    input: classNamePrefix + 'input',\n    select: classNamePrefix + 'select',\n    textarea: classNamePrefix + 'textarea',\n    error: classNamePrefix + 'error',\n    formContainer: classNamePrefix + 'form-container',\n    formRow: classNamePrefix + 'form-row',\n    loader: classNamePrefix + 'loader',\n    label: classNamePrefix + 'label',\n    fieldErrorMessage: classNamePrefix + 'error-message',\n    checkboxContainer: classNamePrefix + 'checkbox-container',\n    checkbox: classNamePrefix + 'checkbox',\n    checkboxLabel: classNamePrefix + 'checkbox-label',\n    checkmark: classNamePrefix + 'checkmark',\n    radioGroup: classNamePrefix + 'radio-group',\n    radioOption: classNamePrefix + 'radio-option',\n    hiddenRadio: classNamePrefix + 'hidden-radio',\n    customRadio: classNamePrefix + 'custom-radio',\n    textOnlyContent: classNamePrefix + 'text-only-content',\n    successMessage: classNamePrefix + 'success-message',\n    formErrorMessage: classNamePrefix + 'success-message'\n};\nconst formContainerStyles = [\n    `.${classNames.formContainer} {\n        display: flex;\n        flex-direction: column;\n        gap: 16px;\n        font-family: 'Noto Sans', 'Noto Sans Placeholder', sans-serif;\n    }`,\n    `.${classNames.formContainer} a {\n        color: #3859ff;\n        text-decoration: none;\n        font-weight: 400;\n        font-size: 16px;\n    }`,\n    `.${classNames.formContainer} a:hover {\n         color: #314cd9;\n         text-decoration: underline;\n    }`,\n    `.${classNames.formContainer} a:active {\n         color: #2a41b6;\n    }`\n];\nconst formRowStyles = [\n    `.${classNames.formRow} {\n        display: flex;\n        gap: 16px;\n    }`,\n    `.${classNames.formRow} > div {\n        flex-grow: 1;\n    }`,\n    `@media (max-width: 768px) { \n    .${classNames.formRow} {\n        flex-direction: column;\n    }\n  }`\n];\nconst inputStyles = [\n    `.${classNames.input} { \n        padding: 12px 16px;\n        background: transparent;\n        font-family: 'Noto Sans';\n        font-weight: 400;\n        font-size: 16px;\n        line-height: 150%;\n        color: #1c1c1e;\n        white-space: nowrap;\n        overflow: hidden;\n        width: 100%;\n        height: 48px;\n        letter-spacing: -0.16px;\n        border-radius: 8px;\n        border: 1px solid #e0e2e8;\n        box-sizing: border-box;\n        margin-top: 8px;\n    }`,\n    `.${classNames.input}:hover {\n            border-color: #314cd9;\n     }`,\n    `.${classNames.input}:focus {\n            border-color: #3859ff;\n     }`,\n    `.${classNames.input}.${classNames.error} {\n            border: 2px solid #d8182c;\n     }`\n];\nconst loaderStyles = [\n    `.${classNames.loader} {\n        width: 40px;\n        height: 40px;\n        border: 4px solid #7a90fe;\n        border-top-color: #314cd9;\n        border-radius: 50%;\n        animation: mktoLoaderSpin 1s linear infinite;\n     }`,\n    `.${classNames.loader}-wrapper {\n        width: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n     }`,\n    `@keyframes mktoLoaderSpin {\n    from { transform: rotate(0deg); }\n    to { transform: rotate(360deg); }\n    }`\n];\nconst labelStyles = [\n    `.${classNames.label} {\n        display: inline-block;\n        font-family: 'Noto Sans', 'Noto Sans Placeholder', sans-serif;\n        font-style: normal;\n        font-weight: 600;\n        color: #1c1c1e;\n        font-size: 16px;\n        line-height: 150%;\n        letter-spacing: -0.16px;\n        text-decoration: none;\n     }`\n];\nconst selectStyles = [\n    `.${classNames.select} {\n        appearance: none;\n        padding-right: 32px;\n        text-overflow: ellipsis;\n     }`,\n    `.${classNames.select}-wrapper {\n        position: relative;\n     }`,\n    `.${classNames.select}-arrow {\n        position: absolute;\n        right: 16px;\n        top: 24px;\n     }`\n];\nconst textAreaStyles = [\n    `.${classNames.textarea} {\n        min-height: 100px;\n        white-space: break-spaces;\n        resize: vertical;\n     }`\n];\nconst errorMessageStyles = [\n    `.${classNames.fieldErrorMessage} {\n        color: #d8182c;\n        font-size: 14px;\n        margin-top: 4px;\n        line-height: 145%;\n     }`\n];\nconst checkboxContainerStyles = [\n    `.${classNames.checkboxContainer} {\n        display: flex;\n        align-items: center;\n        gap: 8px;\n        position: relative;\n    }`\n];\nconst checkboxStyles = [\n    `.${classNames.checkbox} {\n        appearance: none;\n        background: transparent;\n        width: 24px;\n        height: 24px;\n        border: 2px solid #e0e2e8;\n        border-radius: 4px;\n        cursor: pointer;\n        transition: all 0.2s ease-in-out;\n        position: relative;\n        z-index: 2;\n    }`,\n    `.${classNames.checkbox}:checked {\n        border-color: #1e40af;\n    }`,\n    `.${classNames.checkbox}.${classNames.error} {\n        border-color: #d8182c;\n    }`,\n    `.${classNames.checkbox}:disabled {\n        border-color: #ddd;\n        background-color: #f9f9f9;\n        cursor: not-allowed;\n        opacity: 0.6;\n    }`\n];\nconst checkboxLabelStyles = [\n    `.${classNames.checkboxLabel} {\n        font-weight: 400;\n    }`\n];\nconst checkmarkStyles = [\n    `.${classNames.checkmark} {\n        position: absolute;\n        top: 8px;\n        left: 8px;\n        z-index: 1;\n    }`\n];\n// Radio button styles\nconst radioGroupStyles = [\n    `.${classNames.radioGroup} {\n        margin-top: 8px;\n        display: flex;\n        flex-direction: column;\n        gap: 12px;\n    }`\n];\nconst radioOptionStyles = [\n    `.${classNames.radioOption} {\n        display: flex;\n        align-items: center;\n        cursor: pointer;\n        font-size: 16px;\n        font-weight: 400;\n        color: #1c1c1e;\n    }`\n];\nconst hiddenRadioStyles = [\n    `.${classNames.hiddenRadio} {\n        opacity: 0;\n        position: absolute;\n        width: 0;\n        height: 0;\n    }`\n];\nconst customRadioStyles = [\n    `.${classNames.customRadio} {\n        display: inline-block;\n        width: 24px;\n        height: 24px;\n        border: 3px solid #e0e2e8;\n        border-radius: 50%;\n        margin-right: 8px;\n        position: relative;\n        transition: border 0.2s ease-in-out;\n    }`,\n    `.${classNames.hiddenRadio}:checked + .${classNames.customRadio} {\n        border: 3px solid #2f52e0;\n    }`,\n    `.${classNames.hiddenRadio}:checked + .${classNames.customRadio}::after {\n        content: '';\n        width: 12px;\n        height: 12px;\n        background-color: #454954;\n        border-radius: 50%;\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n    }`\n];\n// Additional styles\nconst textOnlyContentStyles = [\n    `.${classNames.textOnlyContent} {\n        font-size: 14px;\n        line-height: 1.5;\n    }`\n];\nconst successMessageStyles = [\n    `.${classNames.successMessage} {\n        font-size: 16px;\n        text-align: center;\n    }`,\n    `.${classNames.successMessage} a {\n        font-size: 16px;\n    }`\n];\nconst formErrorMessageStyles = [\n    `.${classNames.formErrorMessage} {\n        background-color: #d8182c;\n        color: white;\n        padding: 16px;\n        text-align: center;\n    }`\n];\nconst _FormContainer = ({ children })=>{\n    return jsx(\"form\", {\n        className: `${classNames.formContainer}`,\n        children: children\n    });\n};\nconst _FormRow = ({ children })=>{\n    return jsx(\"div\", {\n        className: `${classNames.formRow}`,\n        children: children\n    });\n};\nconst _Label = ({ children, ...props })=>{\n    return jsx(\"label\", {\n        className: `${classNames.label}`,\n        ...props,\n        children: children\n    });\n};\nconst _Input = ({ hasError, ...props })=>{\n    return jsx(\"input\", {\n        className: `${classNames.input} ${hasError ? classNames.error : ''}`,\n        ...props\n    });\n};\nconst _Textarea = ({ hasError, ...props })=>{\n    return jsx(\"textarea\", {\n        className: `${classNames.input} ${classNames.textarea} ${hasError ? classNames.error : ''}`,\n        ...props\n    });\n};\nconst _Select = ({ children, hasError, ...props })=>{\n    return jsxs(\"div\", {\n        className: `${classNames.select}-wrapper`,\n        children: [\n            jsx(\"div\", {\n                className: `${classNames.select}-arrow`,\n                children: jsx(\"svg\", {\n                    xmlns: \"http://www.w3.org/2000/svg\",\n                    width: \"16\",\n                    height: \"16\",\n                    children: jsx(\"path\", {\n                        d: \"M 3.5 6 L 8 10.5 L 12.5 6\",\n                        fill: \"transparent\",\n                        strokeWidth: \"1.5\",\n                        stroke: \"rgb(153, 153, 153)\",\n                        strokeLinecap: \"round\",\n                        strokeLinejoin: \"round\"\n                    })\n                })\n            }),\n            jsx(\"select\", {\n                className: `${classNames.input} ${classNames.select} ${hasError ? classNames.error : ''}`,\n                ...props,\n                children: children\n            })\n        ]\n    });\n};\nconst _Loader = ()=>{\n    return jsx(\"div\", {\n        className: `${classNames.loader}-wrapper`,\n        children: jsx(\"div\", {\n            className: `${classNames.loader}`\n        })\n    });\n};\nconst _ErrorMessage = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.fieldErrorMessage}`,\n        ...props,\n        children: children\n    });\n};\nconst _CheckboxContainer = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.checkboxContainer}`,\n        ...props,\n        children: children\n    });\n};\nconst _Checkbox = ({ isChecked, hasError, disabled, ...props })=>{\n    return jsx(\"input\", {\n        type: \"checkbox\",\n        className: `${classNames.checkbox} ${hasError ? classNames.error : ''}`,\n        checked: isChecked,\n        disabled: disabled,\n        ...props\n    });\n};\nconst _CheckboxLabel = ({ children, ...props })=>{\n    return jsx(\"label\", {\n        className: `${classNames.label} ${classNames.checkboxLabel}`,\n        ...props,\n        children: children\n    });\n};\nconst _Checkmark = ({ ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.checkmark}`,\n        ...props,\n        children: jsx(\"svg\", {\n            width: \"16\",\n            height: \"16\",\n            viewBox: \"0 0 16 16\",\n            fill: \"none\",\n            xmlns: \"http://www.w3.org/2000/svg\",\n            children: jsx(\"path\", {\n                d: \"M3 7.5L6.5 11L13 4.5\",\n                stroke: \"#1e40af\",\n                strokeWidth: \"2\",\n                strokeLinecap: \"round\",\n                strokeLinejoin: \"round\"\n            })\n        })\n    });\n};\nconst _RadioGroup = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.radioGroup}`,\n        ...props,\n        children: children\n    });\n};\nconst _RadioOption = ({ children, ...props })=>{\n    return jsx(\"label\", {\n        className: `${classNames.radioOption}`,\n        ...props,\n        children: children\n    });\n};\nconst _Radio = ({ ...props })=>{\n    return jsxs(Fragment, {\n        children: [\n            jsx(\"input\", {\n                type: \"radio\",\n                className: `${classNames.hiddenRadio}`,\n                ...props\n            }),\n            jsx(\"span\", {\n                className: `${classNames.customRadio}`\n            })\n        ]\n    });\n};\nconst _TextOnlyContent = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.textOnlyContent}`,\n        ...props,\n        children: children\n    });\n};\nconst _SuccessMessage = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.successMessage}`,\n        ...props,\n        children: children\n    });\n};\nconst _FormErrorMessage = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.successMessage}`,\n        ...props,\n        children: children\n    });\n};\nconst CheckboxContainer = withCSS(_CheckboxContainer, checkboxContainerStyles, 'CheckboxContainer' + version);\nconst Checkbox = withCSS(_Checkbox, checkboxStyles, 'Checkbox' + version);\nconst CheckboxLabel = withCSS(_CheckboxLabel, checkboxLabelStyles, 'CheckboxLabel' + version);\nconst Checkmark = withCSS(_Checkmark, checkmarkStyles, 'Checkmark' + version);\nconst RadioGroup = withCSS(_RadioGroup, radioGroupStyles, 'RadioGroup' + version);\nconst RadioOption = withCSS(_RadioOption, radioOptionStyles, 'RadioOption' + version);\nconst Radio = withCSS(_Radio, [\n    ...hiddenRadioStyles,\n    ...customRadioStyles\n], 'Radio' + version);\nconst TextOnlyContent = withCSS(_TextOnlyContent, textOnlyContentStyles, 'TextOnlyContent' + version);\nconst SuccessMessage = withCSS(_SuccessMessage, successMessageStyles, 'SuccessMessage' + version);\nwithCSS(_FormErrorMessage, formErrorMessageStyles, 'FormErrorMessage' + version);\nconst Input = withCSS(_Input, inputStyles, 'Input' + version);\nconst FormContainer = withCSS(_FormContainer, formContainerStyles, 'FormContainer' + version);\nconst FormRow = withCSS(_FormRow, formRowStyles, 'FormRow' + version);\nconst Loader = withCSS(_Loader, loaderStyles, 'Loader' + version);\nconst Label = withCSS(_Label, labelStyles, 'Label' + version);\nconst Select = withCSS(_Select, selectStyles, 'Select' + version);\nconst TextArea = withCSS(_Textarea, textAreaStyles, 'TextArea' + version);\nconst ErrorMessage = withCSS(_ErrorMessage, errorMessageStyles, 'ErrorMessage' + version);\n\nexport { Checkbox, CheckboxContainer, CheckboxLabel, Checkmark, ErrorMessage, FormContainer, FormRow, Input, Label, Loader, Radio, RadioGroup, RadioOption, Select, SuccessMessage, TextArea, TextOnlyContent };\n", "import { createStore } from 'https://framer.com/m/framer/store.js';\nimport { useState, useCallback } from 'react';\n\n// Hook for validating business email domains\nconst useInvalidDomains = ()=>{\n    const [invalidDomains, setInvalidDomains] = useState([]);\n    const [isLoaded, setIsLoaded] = useState(false);\n    const loadDomains = useCallback(async ()=>{\n        if (!isLoaded) {\n            try {\n                const endpoint = \"/miro-site-lp-build-api\";\n                const response = await fetch(`${endpoint}/invalid-email-domains/`);\n                const result = await response.json();\n                setInvalidDomains(result);\n                setIsLoaded(true);\n            } catch (error) {\n                console.error(\"Error loading invalid domains:\", error);\n            }\n        }\n    }, [\n        isLoaded\n    ]);\n    const checkDomainName = useCallback((email)=>{\n        let emailDomain = \"\";\n        const pos = email.search(\"@\");\n        if (pos > 0) {\n            emailDomain = email.slice(pos + 1);\n        }\n        return invalidDomains.includes(emailDomain);\n    }, [\n        invalidDomains\n    ]);\n    return {\n        loadDomains,\n        checkDomainName\n    };\n};\nconst getCookie = (key)=>{\n    const cookies = document.cookie.split(\";\").reduce((acc, curr)=>{\n        const [cookieKey, cookieValue] = curr.trim().split(\"=\");\n        acc[cookieKey] = cookieValue;\n        return acc;\n    }, {});\n    return cookies[key] || \"\";\n};\nconst getURLParameter = (param)=>{\n    const urlParams = new URLSearchParams(window.location.search);\n    return urlParams.get(param) || \"\";\n};\nconst getMarketoParamKey = (name)=>{\n    return \"marketoUtm.\" + name;\n};\nconst getLastServerViewedExperiment = ()=>{\n    const cookieValue = getCookie(\"server_experiment_viewed\");\n    const result = cookieValue ? JSON.parse(cookieValue) : {};\n    return {\n        name: result?.experiment_name,\n        variant: result?.treatment\n    };\n};\nconst addLinkedinPixel = ()=>{\n    const linkedinPixel = document.createElement(\"img\");\n    linkedinPixel.setAttribute(\"width\", \"1\");\n    linkedinPixel.setAttribute(\"height\", \"1\");\n    linkedinPixel.setAttribute(\"src\", \"https://px.ads.linkedin.com/collect/?pid=1370905&conversionId=2514145&fmt=gif\");\n    linkedinPixel.style.display = \"none\";\n    document.body.appendChild(linkedinPixel);\n};\nconst extractFieldOptions = (element)=>{\n    const options = [];\n    Array.from(element.options).forEach((option)=>{\n        options.push({\n            value: option.value,\n            label: option.text\n        });\n    });\n    return options;\n};\nconst formatLabel = (label)=>{\n    if (label) {\n        label?.querySelector(\".mktoAsterix\")?.remove();\n    }\n    return label?.innerHTML || \"\";\n};\nconst getLabelForFieldRow = (row, inputElement)=>{\n    // Find the label associated with this input\n    // First try by for attribute\n    let label = row.querySelector(`label[for=\"${inputElement.id}\"]`);\n    // If not found, try finding the closest label\n    if (!label) {\n        const formCol = inputElement.closest(\".mktoFormCol\");\n        if (formCol) {\n            label = formCol.querySelector(\"label\");\n        }\n    }\n    return formatLabel(label);\n};\nconst processFormRow = (row)=>{\n    // Check for text-only content\n    const htmlTextElement = row.querySelector(\".mktoHtmlText\");\n    if (htmlTextElement) {\n        return [\n            {\n                id: \"\",\n                name: \"\",\n                type: \"text-only\",\n                required: false,\n                label: \"\",\n                htmlContent: htmlTextElement.innerHTML\n            }\n        ];\n    }\n    const inputs = row.querySelectorAll(\"input, select, textarea\");\n    if (!inputs.length) return [];\n    const fields = [];\n    const processedGroups = new Set();\n    inputs.forEach((input)=>{\n        const inputElement = input;\n        // Skip hidden inputs as they're handled separately\n        if (inputElement instanceof HTMLInputElement && inputElement.type === \"hidden\") {\n            return;\n        }\n        const fieldType = inputElement.tagName.toLowerCase() === \"select\" ? \"select\" : inputElement.tagName.toLowerCase() === \"textarea\" ? \"textarea\" : inputElement.type;\n        const name = inputElement.name;\n        // Skip if we've already processed this group\n        if ((fieldType === \"radio\" || fieldType === \"checkbox\") && processedGroups.has(name)) {\n            return;\n        }\n        // Check if this is a checkbox list (multiple checkboxes with the same name)\n        const isCheckboxList = fieldType === \"checkbox\" && row.querySelectorAll(`input[name=\"${name}\"]`).length > 1;\n        const field = {\n            id: inputElement.id,\n            name: name,\n            type: isCheckboxList ? \"checkboxList\" : fieldType,\n            required: inputElement.required,\n            label: getLabelForFieldRow(row, inputElement),\n            placeholder: \"placeholder\" in inputElement ? inputElement.placeholder : undefined,\n            isEmailField: inputElement?.classList?.contains(\"mktoEmailField\"),\n            options: []\n        };\n        if (fieldType === \"select\") {\n            field.options = extractFieldOptions(inputElement);\n        } else if (fieldType === \"radio\" || isCheckboxList) {\n            processedGroups.add(name);\n            // Get all inputs in this group within the row\n            const groupInputs = row.querySelectorAll(`input[name=\"${name}\"]`);\n            // For group fields, try to get the overall label from the row\n            const groupLabel = formatLabel(row.querySelector(\"label\"));\n            field.label = groupLabel;\n            field.options = Array.from(groupInputs).map((groupInput)=>{\n                const input = groupInput;\n                const inputLabel = row.querySelector(`label[for=\"${input.id}\"]`);\n                return {\n                    value: input.value,\n                    label: inputLabel ? inputLabel.textContent || input.value : input.value\n                };\n            });\n        }\n        fields.push(field);\n    });\n    return fields;\n};\nconst processHiddenFields = (form)=>{\n    const hiddenInputs = form.querySelectorAll('input[type=\"hidden\"]');\n    const hiddenFieldsData = {};\n    hiddenInputs.forEach((input)=>{\n        const inputElement = input;\n        const fieldName = inputElement.name;\n        hiddenFieldsData[fieldName] = getHiddenFieldValue(inputElement, fieldName);\n    });\n    return hiddenFieldsData;\n};\nconst getHiddenFieldValue = (inputElement, fieldName)=>{\n    if (inputElement.value) {\n        return inputElement.value;\n    }\n    // Check cookies first and then URL parameters\n    const cookieValue = getCookie(fieldName);\n    if (cookieValue) {\n        return cookieValue;\n    }\n    return getURLParameter(fieldName) || \"\";\n};\nconst useMarketoFormStore = createStore({\n    isFormLoading: false\n});\n\nexport { addLinkedinPixel, extractFieldOptions, formatLabel, getCookie, getHiddenFieldValue, getLabelForFieldRow, getLastServerViewedExperiment, getMarketoParamKey, getURLParameter, processFormRow, processHiddenFields, useInvalidDomains, useMarketoFormStore };\n", "import * as React from 'react';\nimport { initLiveReload } from './bootstrap.esm.js';\nimport { RenderTarget } from 'framer';\n\nconst isDev = [\n    RenderTarget.canvas,\n    RenderTarget.preview\n].includes(RenderTarget.current());\nfunction useRealtimeComponent(originalComponent, importPath, componentName) {\n    if (!isDev) return originalComponent;\n    const [, setForceRerender] = React.useState(0);\n    const updateCount = React.useRef(0);\n    const updatedInstance = React.useRef(null);\n    React.useLayoutEffect(()=>{\n        const onRebuild = async (event)=>{\n            console.log(`[framer-live-esm] Build complete, refreshing ${componentName}`);\n            const response = await import(`http://localhost:8000/${importPath}.esm.js?${updateCount.current}`);\n            console.log(updateCount.current, response);\n            updateCount.current++;\n            updatedInstance.current = response[componentName];\n            setForceRerender(updateCount.current);\n        };\n        const setupHandler = (retryCount = 0)=>{\n            // @ts-ignore\n            if (!window.framerRealtimeSocket) {\n                setTimeout(()=>setupHandler(retryCount + 1), retryCount + 1 * 500);\n                return;\n            }\n            // @ts-ignore\n            window.framerRealtimeSocket.on(\"build\", onRebuild);\n        };\n        setupHandler();\n        return ()=>{\n            // @ts-ignore\n            if (window.framerRealtimeSocket) {\n                // @ts-ignore\n                window.framerRealtimeSocket.off(\"build\", onRebuild);\n            }\n        };\n    }, [\n        componentName\n    ]);\n    React.useEffect(()=>{\n        initLiveReload();\n    }, []);\n    return updatedInstance.current || originalComponent;\n}\n\nexport { isDev, useRealtimeComponent };\n", "import SocketIO from './socket.esm.js';\n\nconst SOCKET_SERVER_URL = \"http://127.0.0.1:8001\";\nasync function initLiveReload() {\n    // @ts-ignore\n    if (window.framerRealtimeSocket) return;\n    try {\n        console.log(`[framer-live-esm] Connecting on ${SOCKET_SERVER_URL}`);\n        const createdSocket = await SocketIO.connect(SOCKET_SERVER_URL);\n        console.log(`[framer-live-esm] Created socket`);\n        // @ts-ignore\n        window.framerRealtimeSocket = createdSocket;\n    } catch (err) {\n        console.error(`[framer-live-esm] Error trying to create socket `, err);\n    }\n}\n\nexport { initLiveReload };\n", "import { io as lookup } from '../../node_modules/socket.io-client/build/esm/index.esm.js';\nimport { Fetch } from '../../node_modules/engine.io-client/build/esm/transports/polling-fetch.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/socket.esm.js';\nimport '../../node_modules/engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../node_modules/engine.io-parser/build/esm/commons.esm.js';\nimport '../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport '../../node_modules/@socket.io/component-emitter/lib/esm/index.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/util.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/transports/polling-xhr.esm.js';\nimport { WS } from '../../node_modules/engine.io-client/build/esm/transports/websocket.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/globals.esm.js';\n\nvar SocketIO = {\n    connect (endpoint) {\n        return new Promise((resolve, reject)=>{\n            const socket = lookup(endpoint, {\n                transports: [\n                    Fetch,\n                    WS\n                ]\n            });\n            socket.on(\"connect\", ()=>{\n                console.log(`[framer-live-esm] Socket connected`);\n                return resolve(socket);\n            });\n            socket.on(\"reconnect\", (data)=>{\n                console.error(`[framer-live-esm] Socket reconnected`);\n            });\n            socket.on(\"connect_error\", (err)=>{\n                console.error(`[framer-live-esm] Socket had a connection error: ${err.message}`, socket);\n                return reject(err);\n            });\n            socket.on(\"connect_timeout\", (err)=>{\n                console.error(`[framer-live-esm] Socket connection timed out: ${err.message}`);\n                return reject(err);\n            });\n        });\n    }\n};\n\nexport { SocketIO as default };\n", "import { url } from './url.esm.js';\nimport { Manager } from './manager.esm.js';\nimport { Socket } from './socket.esm.js';\nexport { protocol } from '../../../socket.io-parser/build/esm/index.esm.js';\nimport '../../../engine.io-client/build/esm/socket.esm.js';\nimport '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport '../../../engine.io-client/build/esm/util.esm.js';\nexport { XHR as NodeXHR, XHR } from '../../../engine.io-client/build/esm/transports/polling-xhr.esm.js';\nexport { WS as NodeWebSocket, WS as WebSocket } from '../../../engine.io-client/build/esm/transports/websocket.esm.js';\nimport '../../../engine.io-client/build/esm/globals.esm.js';\n\n/**\n * Managers cache.\n */ const cache = {};\nfunction lookup(uri, opts) {\n    if (typeof uri === \"object\") {\n        opts = uri;\n        uri = undefined;\n    }\n    opts = opts || {};\n    const parsed = url(uri, opts.path || \"/socket.io\");\n    const source = parsed.source;\n    const id = parsed.id;\n    const path = parsed.path;\n    const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n    const newConnection = opts.forceNew || opts[\"force new connection\"] || false === opts.multiplex || sameNamespace;\n    let io;\n    if (newConnection) {\n        io = new Manager(source, opts);\n    } else {\n        if (!cache[id]) {\n            cache[id] = new Manager(source, opts);\n        }\n        io = cache[id];\n    }\n    if (parsed.query && !opts.query) {\n        opts.query = parsed.queryKey;\n    }\n    return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n    Manager,\n    Socket,\n    io: lookup,\n    connect: lookup\n});\n\nexport { Manager, Socket, lookup as connect, lookup as default, lookup as io };\n", "import '../../../engine.io-client/build/esm/socket.esm.js';\nimport '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport '../../../engine.io-client/build/esm/util.esm.js';\nimport '../../../engine.io-client/build/esm/transports/polling-xhr.esm.js';\nimport '../../../engine.io-client/build/esm/transports/websocket.esm.js';\nimport '../../../engine.io-client/build/esm/globals.esm.js';\nimport { parse } from '../../../engine.io-client/build/esm/contrib/parseuri.esm.js';\n\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n *        Defaults to window.location.\n * @public\n */ function url(uri, path = \"\", loc) {\n    let obj = uri;\n    // default to window.location\n    loc = loc || typeof location !== \"undefined\" && location;\n    if (null == uri) uri = loc.protocol + \"//\" + loc.host;\n    // relative path support\n    if (typeof uri === \"string\") {\n        if (\"/\" === uri.charAt(0)) {\n            if (\"/\" === uri.charAt(1)) {\n                uri = loc.protocol + uri;\n            } else {\n                uri = loc.host + uri;\n            }\n        }\n        if (!/^(https?|wss?):\\/\\//.test(uri)) {\n            if (\"undefined\" !== typeof loc) {\n                uri = loc.protocol + \"//\" + uri;\n            } else {\n                uri = \"https://\" + uri;\n            }\n        }\n        // parse\n        obj = parse(uri);\n    }\n    // make sure we treat `localhost:80` and `localhost` equally\n    if (!obj.port) {\n        if (/^(http|ws)$/.test(obj.protocol)) {\n            obj.port = \"80\";\n        } else if (/^(http|ws)s$/.test(obj.protocol)) {\n            obj.port = \"443\";\n        }\n    }\n    obj.path = obj.path || \"/\";\n    const ipv6 = obj.host.indexOf(\":\") !== -1;\n    const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n    // define unique id\n    obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n    // define href\n    obj.href = obj.protocol + \"://\" + host + (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n    return obj;\n}\n\nexport { url };\n", "import { transports } from './transports/index.esm.js';\nimport { byteLength, installTimerFunctions } from './util.esm.js';\nimport { decode } from './contrib/parseqs.esm.js';\nimport { parse } from './contrib/parseuri.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { protocol } from '../../../engine.io-parser/build/esm/index.esm.js';\nimport { nextTick, defaultBinaryType, createCookieJar } from './globals.esm.js';\n\nconst withEventListeners = typeof addEventListener === \"function\" && typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n    // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n    // script, so we create one single event listener here which will forward the event to the socket instances\n    addEventListener(\"offline\", ()=>{\n        OFFLINE_EVENT_LISTENERS.forEach((listener)=>listener());\n    }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n *   transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n *   socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */ class SocketWithoutUpgrade extends Emitter {\n    /**\n     * Creates transport of the given type.\n     *\n     * @param {String} name - transport name\n     * @return {Transport}\n     * @private\n     */ createTransport(name) {\n        const query = Object.assign({}, this.opts.query);\n        // append engine.io protocol identifier\n        query.EIO = protocol;\n        // transport name\n        query.transport = name;\n        // session id if we already have one\n        if (this.id) query.sid = this.id;\n        const opts = Object.assign({}, this.opts, {\n            query,\n            socket: this,\n            hostname: this.hostname,\n            secure: this.secure,\n            port: this.port\n        }, this.opts.transportOptions[name]);\n        return new this._transportsByName[name](opts);\n    }\n    /**\n     * Initializes transport to use and starts probe.\n     *\n     * @private\n     */ _open() {\n        if (this.transports.length === 0) {\n            // Emit error on next tick so it can be listened to\n            this.setTimeoutFn(()=>{\n                this.emitReserved(\"error\", \"No transports available\");\n            }, 0);\n            return;\n        }\n        const transportName = this.opts.rememberUpgrade && SocketWithoutUpgrade.priorWebsocketSuccess && this.transports.indexOf(\"websocket\") !== -1 ? \"websocket\" : this.transports[0];\n        this.readyState = \"opening\";\n        const transport = this.createTransport(transportName);\n        transport.open();\n        this.setTransport(transport);\n    }\n    /**\n     * Sets the current transport. Disables the existing one (if any).\n     *\n     * @private\n     */ setTransport(transport) {\n        if (this.transport) {\n            this.transport.removeAllListeners();\n        }\n        // set up transport\n        this.transport = transport;\n        // set up transport listeners\n        transport.on(\"drain\", this._onDrain.bind(this)).on(\"packet\", this._onPacket.bind(this)).on(\"error\", this._onError.bind(this)).on(\"close\", (reason)=>this._onClose(\"transport close\", reason));\n    }\n    /**\n     * Called when connection is deemed open.\n     *\n     * @private\n     */ onOpen() {\n        this.readyState = \"open\";\n        SocketWithoutUpgrade.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n        this.emitReserved(\"open\");\n        this.flush();\n    }\n    /**\n     * Handles a packet.\n     *\n     * @private\n     */ _onPacket(packet) {\n        if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n            this.emitReserved(\"packet\", packet);\n            // Socket is live - any packet counts\n            this.emitReserved(\"heartbeat\");\n            switch(packet.type){\n                case \"open\":\n                    this.onHandshake(JSON.parse(packet.data));\n                    break;\n                case \"ping\":\n                    this._sendPacket(\"pong\");\n                    this.emitReserved(\"ping\");\n                    this.emitReserved(\"pong\");\n                    this._resetPingTimeout();\n                    break;\n                case \"error\":\n                    const err = new Error(\"server error\");\n                    // @ts-ignore\n                    err.code = packet.data;\n                    this._onError(err);\n                    break;\n                case \"message\":\n                    this.emitReserved(\"data\", packet.data);\n                    this.emitReserved(\"message\", packet.data);\n                    break;\n            }\n        }\n    }\n    /**\n     * Called upon handshake completion.\n     *\n     * @param {Object} data - handshake obj\n     * @private\n     */ onHandshake(data) {\n        this.emitReserved(\"handshake\", data);\n        this.id = data.sid;\n        this.transport.query.sid = data.sid;\n        this._pingInterval = data.pingInterval;\n        this._pingTimeout = data.pingTimeout;\n        this._maxPayload = data.maxPayload;\n        this.onOpen();\n        // In case open handler closes socket\n        if (\"closed\" === this.readyState) return;\n        this._resetPingTimeout();\n    }\n    /**\n     * Sets and resets ping timeout timer based on server pings.\n     *\n     * @private\n     */ _resetPingTimeout() {\n        this.clearTimeoutFn(this._pingTimeoutTimer);\n        const delay = this._pingInterval + this._pingTimeout;\n        this._pingTimeoutTime = Date.now() + delay;\n        this._pingTimeoutTimer = this.setTimeoutFn(()=>{\n            this._onClose(\"ping timeout\");\n        }, delay);\n        if (this.opts.autoUnref) {\n            this._pingTimeoutTimer.unref();\n        }\n    }\n    /**\n     * Called on `drain` event\n     *\n     * @private\n     */ _onDrain() {\n        this.writeBuffer.splice(0, this._prevBufferLen);\n        // setting prevBufferLen = 0 is very important\n        // for example, when upgrading, upgrade packet is sent over,\n        // and a nonzero prevBufferLen could cause problems on `drain`\n        this._prevBufferLen = 0;\n        if (0 === this.writeBuffer.length) {\n            this.emitReserved(\"drain\");\n        } else {\n            this.flush();\n        }\n    }\n    /**\n     * Flush write buffers.\n     *\n     * @private\n     */ flush() {\n        if (\"closed\" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {\n            const packets = this._getWritablePackets();\n            this.transport.send(packets);\n            // keep track of current length of writeBuffer\n            // splice writeBuffer and callbackBuffer on `drain`\n            this._prevBufferLen = packets.length;\n            this.emitReserved(\"flush\");\n        }\n    }\n    /**\n     * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n     * long-polling)\n     *\n     * @private\n     */ _getWritablePackets() {\n        const shouldCheckPayloadSize = this._maxPayload && this.transport.name === \"polling\" && this.writeBuffer.length > 1;\n        if (!shouldCheckPayloadSize) {\n            return this.writeBuffer;\n        }\n        let payloadSize = 1; // first packet type\n        for(let i = 0; i < this.writeBuffer.length; i++){\n            const data = this.writeBuffer[i].data;\n            if (data) {\n                payloadSize += byteLength(data);\n            }\n            if (i > 0 && payloadSize > this._maxPayload) {\n                return this.writeBuffer.slice(0, i);\n            }\n            payloadSize += 2; // separator + packet type\n        }\n        return this.writeBuffer;\n    }\n    /**\n     * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n     *\n     * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n     * `write()` method then the message would not be buffered by the Socket.IO client.\n     *\n     * @return {boolean}\n     * @private\n     */ /* private */ _hasPingExpired() {\n        if (!this._pingTimeoutTime) return true;\n        const hasExpired = Date.now() > this._pingTimeoutTime;\n        if (hasExpired) {\n            this._pingTimeoutTime = 0;\n            nextTick(()=>{\n                this._onClose(\"ping timeout\");\n            }, this.setTimeoutFn);\n        }\n        return hasExpired;\n    }\n    /**\n     * Sends a message.\n     *\n     * @param {String} msg - message.\n     * @param {Object} options.\n     * @param {Function} fn - callback function.\n     * @return {Socket} for chaining.\n     */ write(msg, options, fn) {\n        this._sendPacket(\"message\", msg, options, fn);\n        return this;\n    }\n    /**\n     * Sends a message. Alias of {@link Socket#write}.\n     *\n     * @param {String} msg - message.\n     * @param {Object} options.\n     * @param {Function} fn - callback function.\n     * @return {Socket} for chaining.\n     */ send(msg, options, fn) {\n        this._sendPacket(\"message\", msg, options, fn);\n        return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param {String} type: packet type.\n     * @param {String} data.\n     * @param {Object} options.\n     * @param {Function} fn - callback function.\n     * @private\n     */ _sendPacket(type, data, options, fn) {\n        if (\"function\" === typeof data) {\n            fn = data;\n            data = undefined;\n        }\n        if (\"function\" === typeof options) {\n            fn = options;\n            options = null;\n        }\n        if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n            return;\n        }\n        options = options || {};\n        options.compress = false !== options.compress;\n        const packet = {\n            type: type,\n            data: data,\n            options: options\n        };\n        this.emitReserved(\"packetCreate\", packet);\n        this.writeBuffer.push(packet);\n        if (fn) this.once(\"flush\", fn);\n        this.flush();\n    }\n    /**\n     * Closes the connection.\n     */ close() {\n        const close = ()=>{\n            this._onClose(\"forced close\");\n            this.transport.close();\n        };\n        const cleanupAndClose = ()=>{\n            this.off(\"upgrade\", cleanupAndClose);\n            this.off(\"upgradeError\", cleanupAndClose);\n            close();\n        };\n        const waitForUpgrade = ()=>{\n            // wait for upgrade to finish since we can't send packets while pausing a transport\n            this.once(\"upgrade\", cleanupAndClose);\n            this.once(\"upgradeError\", cleanupAndClose);\n        };\n        if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n            this.readyState = \"closing\";\n            if (this.writeBuffer.length) {\n                this.once(\"drain\", ()=>{\n                    if (this.upgrading) {\n                        waitForUpgrade();\n                    } else {\n                        close();\n                    }\n                });\n            } else if (this.upgrading) {\n                waitForUpgrade();\n            } else {\n                close();\n            }\n        }\n        return this;\n    }\n    /**\n     * Called upon transport error\n     *\n     * @private\n     */ _onError(err) {\n        SocketWithoutUpgrade.priorWebsocketSuccess = false;\n        if (this.opts.tryAllTransports && this.transports.length > 1 && this.readyState === \"opening\") {\n            this.transports.shift();\n            return this._open();\n        }\n        this.emitReserved(\"error\", err);\n        this._onClose(\"transport error\", err);\n    }\n    /**\n     * Called upon transport close.\n     *\n     * @private\n     */ _onClose(reason, description) {\n        if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n            // clear timers\n            this.clearTimeoutFn(this._pingTimeoutTimer);\n            // stop event from firing again for transport\n            this.transport.removeAllListeners(\"close\");\n            // ensure transport won't stay open\n            this.transport.close();\n            // ignore further transport communication\n            this.transport.removeAllListeners();\n            if (withEventListeners) {\n                if (this._beforeunloadEventListener) {\n                    removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n                }\n                if (this._offlineEventListener) {\n                    const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n                    if (i !== -1) {\n                        OFFLINE_EVENT_LISTENERS.splice(i, 1);\n                    }\n                }\n            }\n            // set ready state\n            this.readyState = \"closed\";\n            // clear session id\n            this.id = null;\n            // emit close event\n            this.emitReserved(\"close\", reason, description);\n            // clean buffers after, so users can still\n            // grab the buffers on `close` event\n            this.writeBuffer = [];\n            this._prevBufferLen = 0;\n        }\n    }\n    /**\n     * Socket constructor.\n     *\n     * @param {String|Object} uri - uri or options\n     * @param {Object} opts - options\n     */ constructor(uri, opts){\n        super();\n        this.binaryType = defaultBinaryType;\n        this.writeBuffer = [];\n        this._prevBufferLen = 0;\n        this._pingInterval = -1;\n        this._pingTimeout = -1;\n        this._maxPayload = -1;\n        /**\n         * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n         * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n         */ this._pingTimeoutTime = Infinity;\n        if (uri && \"object\" === typeof uri) {\n            opts = uri;\n            uri = null;\n        }\n        if (uri) {\n            const parsedUri = parse(uri);\n            opts.hostname = parsedUri.host;\n            opts.secure = parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n            opts.port = parsedUri.port;\n            if (parsedUri.query) opts.query = parsedUri.query;\n        } else if (opts.host) {\n            opts.hostname = parse(opts.host).host;\n        }\n        installTimerFunctions(this, opts);\n        this.secure = null != opts.secure ? opts.secure : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n        if (opts.hostname && !opts.port) {\n            // if no port is specified manually, use the protocol default\n            opts.port = this.secure ? \"443\" : \"80\";\n        }\n        this.hostname = opts.hostname || (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n        this.port = opts.port || (typeof location !== \"undefined\" && location.port ? location.port : this.secure ? \"443\" : \"80\");\n        this.transports = [];\n        this._transportsByName = {};\n        opts.transports.forEach((t)=>{\n            const transportName = t.prototype.name;\n            this.transports.push(transportName);\n            this._transportsByName[transportName] = t;\n        });\n        this.opts = Object.assign({\n            path: \"/engine.io\",\n            agent: false,\n            withCredentials: false,\n            upgrade: true,\n            timestampParam: \"t\",\n            rememberUpgrade: false,\n            addTrailingSlash: true,\n            rejectUnauthorized: true,\n            perMessageDeflate: {\n                threshold: 1024\n            },\n            transportOptions: {},\n            closeOnBeforeunload: false\n        }, opts);\n        this.opts.path = this.opts.path.replace(/\\/$/, \"\") + (this.opts.addTrailingSlash ? \"/\" : \"\");\n        if (typeof this.opts.query === \"string\") {\n            this.opts.query = decode(this.opts.query);\n        }\n        if (withEventListeners) {\n            if (this.opts.closeOnBeforeunload) {\n                // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n                // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n                // closed/reloaded)\n                this._beforeunloadEventListener = ()=>{\n                    if (this.transport) {\n                        // silently close the transport\n                        this.transport.removeAllListeners();\n                        this.transport.close();\n                    }\n                };\n                addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n            }\n            if (this.hostname !== \"localhost\") {\n                this._offlineEventListener = ()=>{\n                    this._onClose(\"transport close\", {\n                        description: \"network connection lost\"\n                    });\n                };\n                OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n            }\n        }\n        if (this.opts.withCredentials) {\n            this._cookieJar = createCookieJar();\n        }\n        this._open();\n    }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n *   transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n *   socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */ class SocketWithUpgrade extends SocketWithoutUpgrade {\n    onOpen() {\n        super.onOpen();\n        if (\"open\" === this.readyState && this.opts.upgrade) {\n            for(let i = 0; i < this._upgrades.length; i++){\n                this._probe(this._upgrades[i]);\n            }\n        }\n    }\n    /**\n     * Probes a transport.\n     *\n     * @param {String} name - transport name\n     * @private\n     */ _probe(name) {\n        let transport = this.createTransport(name);\n        let failed = false;\n        SocketWithoutUpgrade.priorWebsocketSuccess = false;\n        const onTransportOpen = ()=>{\n            if (failed) return;\n            transport.send([\n                {\n                    type: \"ping\",\n                    data: \"probe\"\n                }\n            ]);\n            transport.once(\"packet\", (msg)=>{\n                if (failed) return;\n                if (\"pong\" === msg.type && \"probe\" === msg.data) {\n                    this.upgrading = true;\n                    this.emitReserved(\"upgrading\", transport);\n                    if (!transport) return;\n                    SocketWithoutUpgrade.priorWebsocketSuccess = \"websocket\" === transport.name;\n                    this.transport.pause(()=>{\n                        if (failed) return;\n                        if (\"closed\" === this.readyState) return;\n                        cleanup();\n                        this.setTransport(transport);\n                        transport.send([\n                            {\n                                type: \"upgrade\"\n                            }\n                        ]);\n                        this.emitReserved(\"upgrade\", transport);\n                        transport = null;\n                        this.upgrading = false;\n                        this.flush();\n                    });\n                } else {\n                    const err = new Error(\"probe error\");\n                    // @ts-ignore\n                    err.transport = transport.name;\n                    this.emitReserved(\"upgradeError\", err);\n                }\n            });\n        };\n        function freezeTransport() {\n            if (failed) return;\n            // Any callback called by transport should be ignored since now\n            failed = true;\n            cleanup();\n            transport.close();\n            transport = null;\n        }\n        // Handle any error that happens while probing\n        const onerror = (err)=>{\n            const error = new Error(\"probe error: \" + err);\n            // @ts-ignore\n            error.transport = transport.name;\n            freezeTransport();\n            this.emitReserved(\"upgradeError\", error);\n        };\n        function onTransportClose() {\n            onerror(\"transport closed\");\n        }\n        // When the socket is closed while we're probing\n        function onclose() {\n            onerror(\"socket closed\");\n        }\n        // When the socket is upgraded while we're probing\n        function onupgrade(to) {\n            if (transport && to.name !== transport.name) {\n                freezeTransport();\n            }\n        }\n        // Remove all listeners on the transport and on self\n        const cleanup = ()=>{\n            transport.removeListener(\"open\", onTransportOpen);\n            transport.removeListener(\"error\", onerror);\n            transport.removeListener(\"close\", onTransportClose);\n            this.off(\"close\", onclose);\n            this.off(\"upgrading\", onupgrade);\n        };\n        transport.once(\"open\", onTransportOpen);\n        transport.once(\"error\", onerror);\n        transport.once(\"close\", onTransportClose);\n        this.once(\"close\", onclose);\n        this.once(\"upgrading\", onupgrade);\n        if (this._upgrades.indexOf(\"webtransport\") !== -1 && name !== \"webtransport\") {\n            // favor WebTransport\n            this.setTimeoutFn(()=>{\n                if (!failed) {\n                    transport.open();\n                }\n            }, 200);\n        } else {\n            transport.open();\n        }\n    }\n    onHandshake(data) {\n        this._upgrades = this._filterUpgrades(data.upgrades);\n        super.onHandshake(data);\n    }\n    /**\n     * Filters upgrades, returning only those matching client transports.\n     *\n     * @param {Array} upgrades - server upgrades\n     * @private\n     */ _filterUpgrades(upgrades) {\n        const filteredUpgrades = [];\n        for(let i = 0; i < upgrades.length; i++){\n            if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]);\n        }\n        return filteredUpgrades;\n    }\n    constructor(){\n        super(...arguments);\n        this._upgrades = [];\n    }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n *   socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */ class Socket extends SocketWithUpgrade {\n    constructor(uri, opts = {}){\n        const o = typeof uri === \"object\" ? uri : opts;\n        if (!o.transports || o.transports && typeof o.transports[0] === \"string\") {\n            o.transports = (o.transports || [\n                \"polling\",\n                \"websocket\",\n                \"webtransport\"\n            ]).map((transportName)=>transports[transportName]).filter((t)=>!!t);\n        }\n        super(uri, o);\n    }\n}\n\nexport { Socket, SocketWithUpgrade, SocketWithoutUpgrade };\n", "import { XHR } from './polling-xhr.esm.js';\nimport { WS } from './websocket.esm.js';\nimport { WT } from './webtransport.esm.js';\n\nconst transports = {\n    websocket: WS,\n    webtransport: WT,\n    polling: XHR\n};\n\nexport { transports };\n", "import { Polling } from './polling.esm.js';\nimport { Emitter } from '../../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { pick, installTimerFunctions } from '../util.esm.js';\nimport { globalThisShim } from '../globals.esm.js';\nimport { hasCORS } from '../contrib/has-cors.esm.js';\n\nfunction empty() {}\nclass BaseXHR extends Polling {\n    /**\n     * Sends data.\n     *\n     * @param {String} data to send.\n     * @param {Function} called upon flush.\n     * @private\n     */ doWrite(data, fn) {\n        const req = this.request({\n            method: \"POST\",\n            data: data\n        });\n        req.on(\"success\", fn);\n        req.on(\"error\", (xhrStatus, context)=>{\n            this.onError(\"xhr post error\", xhrStatus, context);\n        });\n    }\n    /**\n     * Starts a poll cycle.\n     *\n     * @private\n     */ doPoll() {\n        const req = this.request();\n        req.on(\"data\", this.onData.bind(this));\n        req.on(\"error\", (xhrStatus, context)=>{\n            this.onError(\"xhr poll error\", xhrStatus, context);\n        });\n        this.pollXhr = req;\n    }\n    /**\n     * XHR Polling constructor.\n     *\n     * @param {Object} opts\n     * @package\n     */ constructor(opts){\n        super(opts);\n        if (typeof location !== \"undefined\") {\n            const isSSL = \"https:\" === location.protocol;\n            let port = location.port;\n            // some user agents have empty `location.port`\n            if (!port) {\n                port = isSSL ? \"443\" : \"80\";\n            }\n            this.xd = typeof location !== \"undefined\" && opts.hostname !== location.hostname || port !== opts.port;\n        }\n    }\n}\nclass Request extends Emitter {\n    /**\n     * Creates the XHR object and sends the request.\n     *\n     * @private\n     */ _create() {\n        var _a;\n        const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n        opts.xdomain = !!this._opts.xd;\n        const xhr = this._xhr = this.createRequest(opts);\n        try {\n            xhr.open(this._method, this._uri, true);\n            try {\n                if (this._opts.extraHeaders) {\n                    // @ts-ignore\n                    xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n                    for(let i in this._opts.extraHeaders){\n                        if (this._opts.extraHeaders.hasOwnProperty(i)) {\n                            xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n                        }\n                    }\n                }\n            } catch (e) {}\n            if (\"POST\" === this._method) {\n                try {\n                    xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n                } catch (e) {}\n            }\n            try {\n                xhr.setRequestHeader(\"Accept\", \"*/*\");\n            } catch (e) {}\n            (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n            // ie6 check\n            if (\"withCredentials\" in xhr) {\n                xhr.withCredentials = this._opts.withCredentials;\n            }\n            if (this._opts.requestTimeout) {\n                xhr.timeout = this._opts.requestTimeout;\n            }\n            xhr.onreadystatechange = ()=>{\n                var _a;\n                if (xhr.readyState === 3) {\n                    (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(// @ts-ignore\n                    xhr.getResponseHeader(\"set-cookie\"));\n                }\n                if (4 !== xhr.readyState) return;\n                if (200 === xhr.status || 1223 === xhr.status) {\n                    this._onLoad();\n                } else {\n                    // make sure the `error` event handler that's user-set\n                    // does not throw in the same tick and gets caught here\n                    this.setTimeoutFn(()=>{\n                        this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n                    }, 0);\n                }\n            };\n            xhr.send(this._data);\n        } catch (e) {\n            // Need to defer since .create() is called directly from the constructor\n            // and thus the 'error' event can only be only bound *after* this exception\n            // occurs.  Therefore, also, we cannot throw here at all.\n            this.setTimeoutFn(()=>{\n                this._onError(e);\n            }, 0);\n            return;\n        }\n        if (typeof document !== \"undefined\") {\n            this._index = Request.requestsCount++;\n            Request.requests[this._index] = this;\n        }\n    }\n    /**\n     * Called upon error.\n     *\n     * @private\n     */ _onError(err) {\n        this.emitReserved(\"error\", err, this._xhr);\n        this._cleanup(true);\n    }\n    /**\n     * Cleans up house.\n     *\n     * @private\n     */ _cleanup(fromError) {\n        if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n            return;\n        }\n        this._xhr.onreadystatechange = empty;\n        if (fromError) {\n            try {\n                this._xhr.abort();\n            } catch (e) {}\n        }\n        if (typeof document !== \"undefined\") {\n            delete Request.requests[this._index];\n        }\n        this._xhr = null;\n    }\n    /**\n     * Called upon load.\n     *\n     * @private\n     */ _onLoad() {\n        const data = this._xhr.responseText;\n        if (data !== null) {\n            this.emitReserved(\"data\", data);\n            this.emitReserved(\"success\");\n            this._cleanup();\n        }\n    }\n    /**\n     * Aborts the request.\n     *\n     * @package\n     */ abort() {\n        this._cleanup();\n    }\n    /**\n     * Request constructor\n     *\n     * @param {Object} options\n     * @package\n     */ constructor(createRequest, uri, opts){\n        super();\n        this.createRequest = createRequest;\n        installTimerFunctions(this, opts);\n        this._opts = opts;\n        this._method = opts.method || \"GET\";\n        this._uri = uri;\n        this._data = undefined !== opts.data ? opts.data : null;\n        this._create();\n    }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */ if (typeof document !== \"undefined\") {\n    // @ts-ignore\n    if (typeof attachEvent === \"function\") {\n        // @ts-ignore\n        attachEvent(\"onunload\", unloadHandler);\n    } else if (typeof addEventListener === \"function\") {\n        const terminationEvent = \"onpagehide\" in globalThisShim ? \"pagehide\" : \"unload\";\n        addEventListener(terminationEvent, unloadHandler, false);\n    }\n}\nfunction unloadHandler() {\n    for(let i in Request.requests){\n        if (Request.requests.hasOwnProperty(i)) {\n            Request.requests[i].abort();\n        }\n    }\n}\nconst hasXHR2 = function() {\n    const xhr = newRequest({\n        xdomain: false\n    });\n    return xhr && xhr.responseType !== null;\n}();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */ class XHR extends BaseXHR {\n    request(opts = {}) {\n        Object.assign(opts, {\n            xd: this.xd\n        }, this.opts);\n        return new Request(newRequest, this.uri(), opts);\n    }\n    constructor(opts){\n        super(opts);\n        const forceBase64 = opts && opts.forceBase64;\n        this.supportsBinary = hasXHR2 && !forceBase64;\n    }\n}\nfunction newRequest(opts) {\n    const xdomain = opts.xdomain;\n    // XMLHttpRequest can be disabled on IE\n    try {\n        if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n            return new XMLHttpRequest();\n        }\n    } catch (e) {}\n    if (!xdomain) {\n        try {\n            return new globalThisShim[[\n                \"Active\"\n            ].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n        } catch (e) {}\n    }\n}\n\nexport { BaseXHR, Request, XHR };\n", "import { Transport } from '../transport.esm.js';\nimport { randomString } from '../util.esm.js';\nimport { decodePayload, encodePayload } from '../../../../engine.io-parser/build/esm/index.esm.js';\n\nclass Polling extends Transport {\n    get name() {\n        return \"polling\";\n    }\n    /**\n     * Opens the socket (triggers polling). We write a PING message to determine\n     * when the transport is open.\n     *\n     * @protected\n     */ doOpen() {\n        this._poll();\n    }\n    /**\n     * Pauses polling.\n     *\n     * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n     * @package\n     */ pause(onPause) {\n        this.readyState = \"pausing\";\n        const pause = ()=>{\n            this.readyState = \"paused\";\n            onPause();\n        };\n        if (this._polling || !this.writable) {\n            let total = 0;\n            if (this._polling) {\n                total++;\n                this.once(\"pollComplete\", function() {\n                    --total || pause();\n                });\n            }\n            if (!this.writable) {\n                total++;\n                this.once(\"drain\", function() {\n                    --total || pause();\n                });\n            }\n        } else {\n            pause();\n        }\n    }\n    /**\n     * Starts polling cycle.\n     *\n     * @private\n     */ _poll() {\n        this._polling = true;\n        this.doPoll();\n        this.emitReserved(\"poll\");\n    }\n    /**\n     * Overloads onData to detect payloads.\n     *\n     * @protected\n     */ onData(data) {\n        const callback = (packet)=>{\n            // if its the first message we consider the transport open\n            if (\"opening\" === this.readyState && packet.type === \"open\") {\n                this.onOpen();\n            }\n            // if its a close packet, we close the ongoing requests\n            if (\"close\" === packet.type) {\n                this.onClose({\n                    description: \"transport closed by the server\"\n                });\n                return false;\n            }\n            // otherwise bypass onData and handle the message\n            this.onPacket(packet);\n        };\n        // decode payload\n        decodePayload(data, this.socket.binaryType).forEach(callback);\n        // if an event did not trigger closing\n        if (\"closed\" !== this.readyState) {\n            // if we got data we're not polling\n            this._polling = false;\n            this.emitReserved(\"pollComplete\");\n            if (\"open\" === this.readyState) {\n                this._poll();\n            }\n        }\n    }\n    /**\n     * For polling, send a close packet.\n     *\n     * @protected\n     */ doClose() {\n        const close = ()=>{\n            this.write([\n                {\n                    type: \"close\"\n                }\n            ]);\n        };\n        if (\"open\" === this.readyState) {\n            close();\n        } else {\n            // in case we're trying to close while\n            // handshaking is in progress (GH-164)\n            this.once(\"open\", close);\n        }\n    }\n    /**\n     * Writes a packets payload.\n     *\n     * @param {Array} packets - data packets\n     * @protected\n     */ write(packets) {\n        this.writable = false;\n        encodePayload(packets, (data)=>{\n            this.doWrite(data, ()=>{\n                this.writable = true;\n                this.emitReserved(\"drain\");\n            });\n        });\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @private\n     */ uri() {\n        const schema = this.opts.secure ? \"https\" : \"http\";\n        const query = this.query || {};\n        // cache busting is forced\n        if (false !== this.opts.timestampRequests) {\n            query[this.opts.timestampParam] = randomString();\n        }\n        if (!this.supportsBinary && !query.sid) {\n            query.b64 = 1;\n        }\n        return this.createUri(schema, query);\n    }\n    constructor(){\n        super(...arguments);\n        this._polling = false;\n    }\n}\n\nexport { Polling };\n", "import '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport { decodePacket } from '../../../engine.io-parser/build/esm/decodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { installTimerFunctions } from './util.esm.js';\nimport { encode } from './contrib/parseqs.esm.js';\n\nclass TransportError extends Error {\n    constructor(reason, description, context){\n        super(reason);\n        this.description = description;\n        this.context = context;\n        this.type = \"TransportError\";\n    }\n}\nclass Transport extends Emitter {\n    /**\n     * Emits an error.\n     *\n     * @param {String} reason\n     * @param description\n     * @param context - the error context\n     * @return {Transport} for chaining\n     * @protected\n     */ onError(reason, description, context) {\n        super.emitReserved(\"error\", new TransportError(reason, description, context));\n        return this;\n    }\n    /**\n     * Opens the transport.\n     */ open() {\n        this.readyState = \"opening\";\n        this.doOpen();\n        return this;\n    }\n    /**\n     * Closes the transport.\n     */ close() {\n        if (this.readyState === \"opening\" || this.readyState === \"open\") {\n            this.doClose();\n            this.onClose();\n        }\n        return this;\n    }\n    /**\n     * Sends multiple packets.\n     *\n     * @param {Array} packets\n     */ send(packets) {\n        if (this.readyState === \"open\") {\n            this.write(packets);\n        }\n    }\n    /**\n     * Called upon open\n     *\n     * @protected\n     */ onOpen() {\n        this.readyState = \"open\";\n        this.writable = true;\n        super.emitReserved(\"open\");\n    }\n    /**\n     * Called with data.\n     *\n     * @param {String} data\n     * @protected\n     */ onData(data) {\n        const packet = decodePacket(data, this.socket.binaryType);\n        this.onPacket(packet);\n    }\n    /**\n     * Called with a decoded packet.\n     *\n     * @protected\n     */ onPacket(packet) {\n        super.emitReserved(\"packet\", packet);\n    }\n    /**\n     * Called upon close.\n     *\n     * @protected\n     */ onClose(details) {\n        this.readyState = \"closed\";\n        super.emitReserved(\"close\", details);\n    }\n    /**\n     * Pauses the transport, in order not to lose packets during an upgrade.\n     *\n     * @param onPause\n     */ pause(onPause) {}\n    createUri(schema, query = {}) {\n        return schema + \"://\" + this._hostname() + this._port() + this.opts.path + this._query(query);\n    }\n    _hostname() {\n        const hostname = this.opts.hostname;\n        return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n    }\n    _port() {\n        if (this.opts.port && (this.opts.secure && Number(this.opts.port !== 443) || !this.opts.secure && Number(this.opts.port) !== 80)) {\n            return \":\" + this.opts.port;\n        } else {\n            return \"\";\n        }\n    }\n    _query(query) {\n        const encodedQuery = encode(query);\n        return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n    }\n    /**\n     * Transport abstract constructor.\n     *\n     * @param {Object} opts - options\n     * @protected\n     */ constructor(opts){\n        super();\n        this.writable = false;\n        installTimerFunctions(this, opts);\n        this.opts = opts;\n        this.query = opts.query;\n        this.socket = opts.socket;\n        this.supportsBinary = !opts.forceBase64;\n    }\n}\n\nexport { Transport, TransportError };\n", "import { PACKET_TYPES } from './commons.esm.js';\n\nconst withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj)=>{\n    return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback)=>{\n    if (withNativeBlob && data instanceof Blob) {\n        if (supportsBinary) {\n            return callback(data);\n        } else {\n            return encodeBlobAsBase64(data, callback);\n        }\n    } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {\n        if (supportsBinary) {\n            return callback(data);\n        } else {\n            return encodeBlobAsBase64(new Blob([\n                data\n            ]), callback);\n        }\n    }\n    // plain string\n    return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback)=>{\n    const fileReader = new FileReader();\n    fileReader.onload = function() {\n        const content = fileReader.result.split(\",\")[1];\n        callback(\"b\" + (content || \"\"));\n    };\n    return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n    if (data instanceof Uint8Array) {\n        return data;\n    } else if (data instanceof ArrayBuffer) {\n        return new Uint8Array(data);\n    } else {\n        return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n    }\n}\nlet TEXT_ENCODER;\nfunction encodePacketToBinary(packet, callback) {\n    if (withNativeBlob && packet.data instanceof Blob) {\n        return packet.data.arrayBuffer().then(toArray).then(callback);\n    } else if (withNativeArrayBuffer && (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n        return callback(toArray(packet.data));\n    }\n    encodePacket(packet, false, (encoded)=>{\n        if (!TEXT_ENCODER) {\n            TEXT_ENCODER = new TextEncoder();\n        }\n        callback(TEXT_ENCODER.encode(encoded));\n    });\n}\n\nexport { encodePacket, encodePacketToBinary };\n", "const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key)=>{\n    PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = {\n    type: \"error\",\n    data: \"parser error\"\n};\n\nexport { ERROR_PACKET, PACKET_TYPES, PACKET_TYPES_REVERSE };\n", "import { PACKET_TYPES_REVERSE, ERROR_PACKET } from './commons.esm.js';\nimport { decode } from './contrib/base64-arraybuffer.esm.js';\n\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType)=>{\n    if (typeof encodedPacket !== \"string\") {\n        return {\n            type: \"message\",\n            data: mapBinary(encodedPacket, binaryType)\n        };\n    }\n    const type = encodedPacket.charAt(0);\n    if (type === \"b\") {\n        return {\n            type: \"message\",\n            data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n        };\n    }\n    const packetType = PACKET_TYPES_REVERSE[type];\n    if (!packetType) {\n        return ERROR_PACKET;\n    }\n    return encodedPacket.length > 1 ? {\n        type: PACKET_TYPES_REVERSE[type],\n        data: encodedPacket.substring(1)\n    } : {\n        type: PACKET_TYPES_REVERSE[type]\n    };\n};\nconst decodeBase64Packet = (data, binaryType)=>{\n    if (withNativeArrayBuffer) {\n        const decoded = decode(data);\n        return mapBinary(decoded, binaryType);\n    } else {\n        return {\n            base64: true,\n            data\n        }; // fallback for old browsers\n    }\n};\nconst mapBinary = (data, binaryType)=>{\n    switch(binaryType){\n        case \"blob\":\n            if (data instanceof Blob) {\n                // from WebSocket + binaryType \"blob\"\n                return data;\n            } else {\n                // from HTTP long-polling or WebTransport\n                return new Blob([\n                    data\n                ]);\n            }\n        case \"arraybuffer\":\n        default:\n            if (data instanceof ArrayBuffer) {\n                // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n                return data;\n            } else {\n                // from WebTransport (Uint8Array)\n                return data.buffer;\n            }\n    }\n};\n\nexport { decodePacket };\n", "// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor(let i = 0; i < chars.length; i++){\n    lookup[chars.charCodeAt(i)] = i;\n}\nconst decode = (base64)=>{\n    let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n    const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n    for(i = 0; i < len; i += 4){\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n        bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n        bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n        bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n    return arraybuffer;\n};\n\nexport { decode };\n", "/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */ function Emitter(obj) {\n    if (obj) return mixin(obj);\n}\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */ function mixin(obj) {\n    for(var key in Emitter.prototype){\n        obj[key] = Emitter.prototype[key];\n    }\n    return obj;\n}\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */ Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {\n    this._callbacks = this._callbacks || {};\n    (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn);\n    return this;\n};\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */ Emitter.prototype.once = function(event, fn) {\n    function on() {\n        this.off(event, on);\n        fn.apply(this, arguments);\n    }\n    on.fn = fn;\n    this.on(event, on);\n    return this;\n};\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */ Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {\n    this._callbacks = this._callbacks || {};\n    // all\n    if (0 == arguments.length) {\n        this._callbacks = {};\n        return this;\n    }\n    // specific event\n    var callbacks = this._callbacks['$' + event];\n    if (!callbacks) return this;\n    // remove all handlers\n    if (1 == arguments.length) {\n        delete this._callbacks['$' + event];\n        return this;\n    }\n    // remove specific handler\n    var cb;\n    for(var i = 0; i < callbacks.length; i++){\n        cb = callbacks[i];\n        if (cb === fn || cb.fn === fn) {\n            callbacks.splice(i, 1);\n            break;\n        }\n    }\n    // Remove event specific arrays for event types that no\n    // one is subscribed for to avoid memory leak.\n    if (callbacks.length === 0) {\n        delete this._callbacks['$' + event];\n    }\n    return this;\n};\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */ Emitter.prototype.emit = function(event) {\n    this._callbacks = this._callbacks || {};\n    var args = new Array(arguments.length - 1), callbacks = this._callbacks['$' + event];\n    for(var i = 1; i < arguments.length; i++){\n        args[i - 1] = arguments[i];\n    }\n    if (callbacks) {\n        callbacks = callbacks.slice(0);\n        for(var i = 0, len = callbacks.length; i < len; ++i){\n            callbacks[i].apply(this, args);\n        }\n    }\n    return this;\n};\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */ Emitter.prototype.listeners = function(event) {\n    this._callbacks = this._callbacks || {};\n    return this._callbacks['$' + event] || [];\n};\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */ Emitter.prototype.hasListeners = function(event) {\n    return !!this.listeners(event).length;\n};\n\nexport { Emitter };\n", "import { globalThisShim } from './globals.esm.js';\n\nfunction pick(obj, ...attr) {\n    return attr.reduce((acc, k)=>{\n        if (obj.hasOwnProperty(k)) {\n            acc[k] = obj[k];\n        }\n        return acc;\n    }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThisShim.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThisShim.clearTimeout;\nfunction installTimerFunctions(obj, opts) {\n    if (opts.useNativeTimers) {\n        obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThisShim);\n        obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThisShim);\n    } else {\n        obj.setTimeoutFn = globalThisShim.setTimeout.bind(globalThisShim);\n        obj.clearTimeoutFn = globalThisShim.clearTimeout.bind(globalThisShim);\n    }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nfunction byteLength(obj) {\n    if (typeof obj === \"string\") {\n        return utf8Length(obj);\n    }\n    // arraybuffer or blob\n    return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n    let c = 0, length = 0;\n    for(let i = 0, l = str.length; i < l; i++){\n        c = str.charCodeAt(i);\n        if (c < 0x80) {\n            length += 1;\n        } else if (c < 0x800) {\n            length += 2;\n        } else if (c < 0xd800 || c >= 0xe000) {\n            length += 3;\n        } else {\n            i++;\n            length += 4;\n        }\n    }\n    return length;\n}\n/**\n * Generates a random 8-characters string.\n */ function randomString() {\n    return Date.now().toString(36).substring(3) + Math.random().toString(36).substring(2, 5);\n}\n\nexport { byteLength, installTimerFunctions, pick, randomString };\n", "const nextTick = (()=>{\n    const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n    if (isPromiseAvailable) {\n        return (cb)=>Promise.resolve().then(cb);\n    } else {\n        return (cb, setTimeoutFn)=>setTimeoutFn(cb, 0);\n    }\n})();\nconst globalThisShim = (()=>{\n    if (typeof self !== \"undefined\") {\n        return self;\n    } else if (typeof window !== \"undefined\") {\n        return window;\n    } else {\n        return Function(\"return this\")();\n    }\n})();\nconst defaultBinaryType = \"arraybuffer\";\nfunction createCookieJar() {}\n\nexport { createCookieJar, defaultBinaryType, globalThisShim, nextTick };\n", "// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */ function encode(obj) {\n    let str = '';\n    for(let i in obj){\n        if (obj.hasOwnProperty(i)) {\n            if (str.length) str += '&';\n            str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n        }\n    }\n    return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */ function decode(qs) {\n    let qry = {};\n    let pairs = qs.split('&');\n    for(let i = 0, l = pairs.length; i < l; i++){\n        let pair = pairs[i].split('=');\n        qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n    }\n    return qry;\n}\n\nexport { decode, encode };\n", "import { encodePacketToBinary, encodePacket } from './encodePacket.browser.esm.js';\nimport { decodePacket } from './decodePacket.browser.esm.js';\nimport { ERROR_PACKET } from './commons.esm.js';\n\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback)=>{\n    // some packets may be added to the array while encoding, so the initial length must be saved\n    const length = packets.length;\n    const encodedPackets = new Array(length);\n    let count = 0;\n    packets.forEach((packet, i)=>{\n        // force base64 encoding for binary packets\n        encodePacket(packet, false, (encodedPacket)=>{\n            encodedPackets[i] = encodedPacket;\n            if (++count === length) {\n                callback(encodedPackets.join(SEPARATOR));\n            }\n        });\n    });\n};\nconst decodePayload = (encodedPayload, binaryType)=>{\n    const encodedPackets = encodedPayload.split(SEPARATOR);\n    const packets = [];\n    for(let i = 0; i < encodedPackets.length; i++){\n        const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n        packets.push(decodedPacket);\n        if (decodedPacket.type === \"error\") {\n            break;\n        }\n    }\n    return packets;\n};\nfunction createPacketEncoderStream() {\n    return new TransformStream({\n        transform (packet, controller) {\n            encodePacketToBinary(packet, (encodedPacket)=>{\n                const payloadLength = encodedPacket.length;\n                let header;\n                // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n                if (payloadLength < 126) {\n                    header = new Uint8Array(1);\n                    new DataView(header.buffer).setUint8(0, payloadLength);\n                } else if (payloadLength < 65536) {\n                    header = new Uint8Array(3);\n                    const view = new DataView(header.buffer);\n                    view.setUint8(0, 126);\n                    view.setUint16(1, payloadLength);\n                } else {\n                    header = new Uint8Array(9);\n                    const view = new DataView(header.buffer);\n                    view.setUint8(0, 127);\n                    view.setBigUint64(1, BigInt(payloadLength));\n                }\n                // first bit indicates whether the payload is plain text (0) or binary (1)\n                if (packet.data && typeof packet.data !== \"string\") {\n                    header[0] |= 0x80;\n                }\n                controller.enqueue(header);\n                controller.enqueue(encodedPacket);\n            });\n        }\n    });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n    return chunks.reduce((acc, chunk)=>acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n    if (chunks[0].length === size) {\n        return chunks.shift();\n    }\n    const buffer = new Uint8Array(size);\n    let j = 0;\n    for(let i = 0; i < size; i++){\n        buffer[i] = chunks[0][j++];\n        if (j === chunks[0].length) {\n            chunks.shift();\n            j = 0;\n        }\n    }\n    if (chunks.length && j < chunks[0].length) {\n        chunks[0] = chunks[0].slice(j);\n    }\n    return buffer;\n}\nfunction createPacketDecoderStream(maxPayload, binaryType) {\n    if (!TEXT_DECODER) {\n        TEXT_DECODER = new TextDecoder();\n    }\n    const chunks = [];\n    let state = 0 /* State.READ_HEADER */ ;\n    let expectedLength = -1;\n    let isBinary = false;\n    return new TransformStream({\n        transform (chunk, controller) {\n            chunks.push(chunk);\n            while(true){\n                if (state === 0 /* State.READ_HEADER */ ) {\n                    if (totalLength(chunks) < 1) {\n                        break;\n                    }\n                    const header = concatChunks(chunks, 1);\n                    isBinary = (header[0] & 0x80) === 0x80;\n                    expectedLength = header[0] & 0x7f;\n                    if (expectedLength < 126) {\n                        state = 3 /* State.READ_PAYLOAD */ ;\n                    } else if (expectedLength === 126) {\n                        state = 1 /* State.READ_EXTENDED_LENGTH_16 */ ;\n                    } else {\n                        state = 2 /* State.READ_EXTENDED_LENGTH_64 */ ;\n                    }\n                } else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */ ) {\n                    if (totalLength(chunks) < 2) {\n                        break;\n                    }\n                    const headerArray = concatChunks(chunks, 2);\n                    expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n                    state = 3 /* State.READ_PAYLOAD */ ;\n                } else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */ ) {\n                    if (totalLength(chunks) < 8) {\n                        break;\n                    }\n                    const headerArray = concatChunks(chunks, 8);\n                    const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n                    const n = view.getUint32(0);\n                    if (n > Math.pow(2, 53 - 32) - 1) {\n                        // the maximum safe integer in JavaScript is 2^53 - 1\n                        controller.enqueue(ERROR_PACKET);\n                        break;\n                    }\n                    expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n                    state = 3 /* State.READ_PAYLOAD */ ;\n                } else {\n                    if (totalLength(chunks) < expectedLength) {\n                        break;\n                    }\n                    const data = concatChunks(chunks, expectedLength);\n                    controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n                    state = 0 /* State.READ_HEADER */ ;\n                }\n                if (expectedLength === 0 || expectedLength > maxPayload) {\n                    controller.enqueue(ERROR_PACKET);\n                    break;\n                }\n            }\n        }\n    });\n}\nconst protocol = 4;\n\nexport { createPacketDecoderStream, createPacketEncoderStream, decodePacket, decodePayload, encodePacket, encodePayload, protocol };\n", "// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n    value = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n// if XMLHttp support is disabled in IE then it will throw\n// when trying to create\n}\nconst hasCORS = value;\n\nexport { hasCORS };\n", "import { Transport } from '../transport.esm.js';\nimport { pick, randomString } from '../util.esm.js';\nimport { encodePacket } from '../../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport { globalThisShim, nextTick } from '../globals.esm.js';\n\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" && typeof navigator.product === \"string\" && navigator.product.toLowerCase() === \"reactnative\";\nclass BaseWS extends Transport {\n    get name() {\n        return \"websocket\";\n    }\n    doOpen() {\n        const uri = this.uri();\n        const protocols = this.opts.protocols;\n        // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n        const opts = isReactNative ? {} : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n        if (this.opts.extraHeaders) {\n            opts.headers = this.opts.extraHeaders;\n        }\n        try {\n            this.ws = this.createSocket(uri, protocols, opts);\n        } catch (err) {\n            return this.emitReserved(\"error\", err);\n        }\n        this.ws.binaryType = this.socket.binaryType;\n        this.addEventListeners();\n    }\n    /**\n     * Adds event listeners to the socket\n     *\n     * @private\n     */ addEventListeners() {\n        this.ws.onopen = ()=>{\n            if (this.opts.autoUnref) {\n                this.ws._socket.unref();\n            }\n            this.onOpen();\n        };\n        this.ws.onclose = (closeEvent)=>this.onClose({\n                description: \"websocket connection closed\",\n                context: closeEvent\n            });\n        this.ws.onmessage = (ev)=>this.onData(ev.data);\n        this.ws.onerror = (e)=>this.onError(\"websocket error\", e);\n    }\n    write(packets) {\n        this.writable = false;\n        // encodePacket efficient as it uses WS framing\n        // no need for encodePayload\n        for(let i = 0; i < packets.length; i++){\n            const packet = packets[i];\n            const lastPacket = i === packets.length - 1;\n            encodePacket(packet, this.supportsBinary, (data)=>{\n                // Sometimes the websocket has already been closed but the browser didn't\n                // have a chance of informing us about it yet, in that case send will\n                // throw an error\n                try {\n                    this.doWrite(packet, data);\n                } catch (e) {}\n                if (lastPacket) {\n                    // fake drain\n                    // defer to next tick to allow Socket to clear writeBuffer\n                    nextTick(()=>{\n                        this.writable = true;\n                        this.emitReserved(\"drain\");\n                    }, this.setTimeoutFn);\n                }\n            });\n        }\n    }\n    doClose() {\n        if (typeof this.ws !== \"undefined\") {\n            this.ws.onerror = ()=>{};\n            this.ws.close();\n            this.ws = null;\n        }\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @private\n     */ uri() {\n        const schema = this.opts.secure ? \"wss\" : \"ws\";\n        const query = this.query || {};\n        // append timestamp to URI\n        if (this.opts.timestampRequests) {\n            query[this.opts.timestampParam] = randomString();\n        }\n        // communicate binary support capabilities\n        if (!this.supportsBinary) {\n            query.b64 = 1;\n        }\n        return this.createUri(schema, query);\n    }\n}\nconst WebSocketCtor = globalThisShim.WebSocket || globalThisShim.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */ class WS extends BaseWS {\n    createSocket(uri, protocols, opts) {\n        return !isReactNative ? protocols ? new WebSocketCtor(uri, protocols) : new WebSocketCtor(uri) : new WebSocketCtor(uri, protocols, opts);\n    }\n    doWrite(_packet, data) {\n        this.ws.send(data);\n    }\n}\n\nexport { BaseWS, WS };\n", "import { Transport } from '../transport.esm.js';\nimport { nextTick } from '../globals.esm.js';\nimport { createPacketDecoderStream, createPacketEncoderStream } from '../../../../engine.io-parser/build/esm/index.esm.js';\n\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */ class WT extends Transport {\n    get name() {\n        return \"webtransport\";\n    }\n    doOpen() {\n        try {\n            // @ts-ignore\n            this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n        } catch (err) {\n            return this.emitReserved(\"error\", err);\n        }\n        this._transport.closed.then(()=>{\n            this.onClose();\n        }).catch((err)=>{\n            this.onError(\"webtransport error\", err);\n        });\n        // note: we could have used async/await, but that would require some additional polyfills\n        this._transport.ready.then(()=>{\n            this._transport.createBidirectionalStream().then((stream)=>{\n                const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n                const reader = stream.readable.pipeThrough(decoderStream).getReader();\n                const encoderStream = createPacketEncoderStream();\n                encoderStream.readable.pipeTo(stream.writable);\n                this._writer = encoderStream.writable.getWriter();\n                const read = ()=>{\n                    reader.read().then(({ done, value })=>{\n                        if (done) {\n                            return;\n                        }\n                        this.onPacket(value);\n                        read();\n                    }).catch((err)=>{});\n                };\n                read();\n                const packet = {\n                    type: \"open\"\n                };\n                if (this.query.sid) {\n                    packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n                }\n                this._writer.write(packet).then(()=>this.onOpen());\n            });\n        });\n    }\n    write(packets) {\n        this.writable = false;\n        for(let i = 0; i < packets.length; i++){\n            const packet = packets[i];\n            const lastPacket = i === packets.length - 1;\n            this._writer.write(packet).then(()=>{\n                if (lastPacket) {\n                    nextTick(()=>{\n                        this.writable = true;\n                        this.emitReserved(\"drain\");\n                    }, this.setTimeoutFn);\n                }\n            });\n        }\n    }\n    doClose() {\n        var _a;\n        (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n    }\n}\n\nexport { WT };\n", "// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */ const re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n    'source',\n    'protocol',\n    'authority',\n    'userInfo',\n    'user',\n    'password',\n    'host',\n    'port',\n    'relative',\n    'path',\n    'directory',\n    'file',\n    'query',\n    'anchor'\n];\nfunction parse(str) {\n    if (str.length > 8000) {\n        throw \"URI too long\";\n    }\n    const src = str, b = str.indexOf('['), e = str.indexOf(']');\n    if (b != -1 && e != -1) {\n        str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n    }\n    let m = re.exec(str || ''), uri = {}, i = 14;\n    while(i--){\n        uri[parts[i]] = m[i] || '';\n    }\n    if (b != -1 && e != -1) {\n        uri.source = src;\n        uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n        uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n        uri.ipv6uri = true;\n    }\n    uri.pathNames = pathNames(uri, uri['path']);\n    uri.queryKey = queryKey(uri, uri['query']);\n    return uri;\n}\nfunction pathNames(obj, path) {\n    const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n    if (path.slice(0, 1) == '/' || path.length === 0) {\n        names.splice(0, 1);\n    }\n    if (path.slice(-1) == '/') {\n        names.splice(names.length - 1, 1);\n    }\n    return names;\n}\nfunction queryKey(uri, query) {\n    const data = {};\n    query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {\n        if ($1) {\n            data[$1] = $2;\n        }\n    });\n    return data;\n}\n\nexport { parse };\n", "import { Socket } from '../../../engine.io-client/build/esm/socket.esm.js';\nimport '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { installTimerFunctions } from '../../../engine.io-client/build/esm/util.esm.js';\nimport '../../../engine.io-client/build/esm/transports/polling-xhr.esm.js';\nimport '../../../engine.io-client/build/esm/transports/websocket.esm.js';\nimport { nextTick } from '../../../engine.io-client/build/esm/globals.esm.js';\nimport { Socket as Socket$1 } from './socket.esm.js';\nimport * as index from '../../../socket.io-parser/build/esm/index.esm.js';\nimport { on } from './on.esm.js';\nimport { Backoff } from './contrib/backo2.esm.js';\n\nclass Manager extends Emitter {\n    reconnection(v) {\n        if (!arguments.length) return this._reconnection;\n        this._reconnection = !!v;\n        if (!v) {\n            this.skipReconnect = true;\n        }\n        return this;\n    }\n    reconnectionAttempts(v) {\n        if (v === undefined) return this._reconnectionAttempts;\n        this._reconnectionAttempts = v;\n        return this;\n    }\n    reconnectionDelay(v) {\n        var _a;\n        if (v === undefined) return this._reconnectionDelay;\n        this._reconnectionDelay = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n        return this;\n    }\n    randomizationFactor(v) {\n        var _a;\n        if (v === undefined) return this._randomizationFactor;\n        this._randomizationFactor = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n        return this;\n    }\n    reconnectionDelayMax(v) {\n        var _a;\n        if (v === undefined) return this._reconnectionDelayMax;\n        this._reconnectionDelayMax = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n        return this;\n    }\n    timeout(v) {\n        if (!arguments.length) return this._timeout;\n        this._timeout = v;\n        return this;\n    }\n    /**\n     * Starts trying to reconnect if reconnection is enabled and we have not\n     * started reconnecting yet\n     *\n     * @private\n     */ maybeReconnectOnOpen() {\n        // Only try to reconnect if it's the first time we're connecting\n        if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {\n            // keeps reconnection from firing twice for the same reconnection loop\n            this.reconnect();\n        }\n    }\n    /**\n     * Sets the current transport `socket`.\n     *\n     * @param {Function} fn - optional, callback\n     * @return self\n     * @public\n     */ open(fn) {\n        if (~this._readyState.indexOf(\"open\")) return this;\n        this.engine = new Socket(this.uri, this.opts);\n        const socket = this.engine;\n        const self = this;\n        this._readyState = \"opening\";\n        this.skipReconnect = false;\n        // emit `open`\n        const openSubDestroy = on(socket, \"open\", function() {\n            self.onopen();\n            fn && fn();\n        });\n        const onError = (err)=>{\n            this.cleanup();\n            this._readyState = \"closed\";\n            this.emitReserved(\"error\", err);\n            if (fn) {\n                fn(err);\n            } else {\n                // Only do this if there is no fn to handle the error\n                this.maybeReconnectOnOpen();\n            }\n        };\n        // emit `error`\n        const errorSub = on(socket, \"error\", onError);\n        if (false !== this._timeout) {\n            const timeout = this._timeout;\n            // set timer\n            const timer = this.setTimeoutFn(()=>{\n                openSubDestroy();\n                onError(new Error(\"timeout\"));\n                socket.close();\n            }, timeout);\n            if (this.opts.autoUnref) {\n                timer.unref();\n            }\n            this.subs.push(()=>{\n                this.clearTimeoutFn(timer);\n            });\n        }\n        this.subs.push(openSubDestroy);\n        this.subs.push(errorSub);\n        return this;\n    }\n    /**\n     * Alias for open()\n     *\n     * @return self\n     * @public\n     */ connect(fn) {\n        return this.open(fn);\n    }\n    /**\n     * Called upon transport open.\n     *\n     * @private\n     */ onopen() {\n        // clear old subs\n        this.cleanup();\n        // mark as open\n        this._readyState = \"open\";\n        this.emitReserved(\"open\");\n        // add new subs\n        const socket = this.engine;\n        this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), // @ts-ignore\n        on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n    }\n    /**\n     * Called upon a ping.\n     *\n     * @private\n     */ onping() {\n        this.emitReserved(\"ping\");\n    }\n    /**\n     * Called with data.\n     *\n     * @private\n     */ ondata(data) {\n        try {\n            this.decoder.add(data);\n        } catch (e) {\n            this.onclose(\"parse error\", e);\n        }\n    }\n    /**\n     * Called when parser fully decodes a packet.\n     *\n     * @private\n     */ ondecoded(packet) {\n        // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n        nextTick(()=>{\n            this.emitReserved(\"packet\", packet);\n        }, this.setTimeoutFn);\n    }\n    /**\n     * Called upon socket error.\n     *\n     * @private\n     */ onerror(err) {\n        this.emitReserved(\"error\", err);\n    }\n    /**\n     * Creates a new socket for the given `nsp`.\n     *\n     * @return {Socket}\n     * @public\n     */ socket(nsp, opts) {\n        let socket = this.nsps[nsp];\n        if (!socket) {\n            socket = new Socket$1(this, nsp, opts);\n            this.nsps[nsp] = socket;\n        } else if (this._autoConnect && !socket.active) {\n            socket.connect();\n        }\n        return socket;\n    }\n    /**\n     * Called upon a socket close.\n     *\n     * @param socket\n     * @private\n     */ _destroy(socket) {\n        const nsps = Object.keys(this.nsps);\n        for (const nsp of nsps){\n            const socket = this.nsps[nsp];\n            if (socket.active) {\n                return;\n            }\n        }\n        this._close();\n    }\n    /**\n     * Writes a packet.\n     *\n     * @param packet\n     * @private\n     */ _packet(packet) {\n        const encodedPackets = this.encoder.encode(packet);\n        for(let i = 0; i < encodedPackets.length; i++){\n            this.engine.write(encodedPackets[i], packet.options);\n        }\n    }\n    /**\n     * Clean up transport subscriptions and packet buffer.\n     *\n     * @private\n     */ cleanup() {\n        this.subs.forEach((subDestroy)=>subDestroy());\n        this.subs.length = 0;\n        this.decoder.destroy();\n    }\n    /**\n     * Close the current socket.\n     *\n     * @private\n     */ _close() {\n        this.skipReconnect = true;\n        this._reconnecting = false;\n        this.onclose(\"forced close\");\n    }\n    /**\n     * Alias for close()\n     *\n     * @private\n     */ disconnect() {\n        return this._close();\n    }\n    /**\n     * Called when:\n     *\n     * - the low-level engine is closed\n     * - the parser encountered a badly formatted packet\n     * - all sockets are disconnected\n     *\n     * @private\n     */ onclose(reason, description) {\n        var _a;\n        this.cleanup();\n        (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n        this.backoff.reset();\n        this._readyState = \"closed\";\n        this.emitReserved(\"close\", reason, description);\n        if (this._reconnection && !this.skipReconnect) {\n            this.reconnect();\n        }\n    }\n    /**\n     * Attempt a reconnection.\n     *\n     * @private\n     */ reconnect() {\n        if (this._reconnecting || this.skipReconnect) return this;\n        const self = this;\n        if (this.backoff.attempts >= this._reconnectionAttempts) {\n            this.backoff.reset();\n            this.emitReserved(\"reconnect_failed\");\n            this._reconnecting = false;\n        } else {\n            const delay = this.backoff.duration();\n            this._reconnecting = true;\n            const timer = this.setTimeoutFn(()=>{\n                if (self.skipReconnect) return;\n                this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n                // check again for the case socket closed in above events\n                if (self.skipReconnect) return;\n                self.open((err)=>{\n                    if (err) {\n                        self._reconnecting = false;\n                        self.reconnect();\n                        this.emitReserved(\"reconnect_error\", err);\n                    } else {\n                        self.onreconnect();\n                    }\n                });\n            }, delay);\n            if (this.opts.autoUnref) {\n                timer.unref();\n            }\n            this.subs.push(()=>{\n                this.clearTimeoutFn(timer);\n            });\n        }\n    }\n    /**\n     * Called upon successful reconnect.\n     *\n     * @private\n     */ onreconnect() {\n        const attempt = this.backoff.attempts;\n        this._reconnecting = false;\n        this.backoff.reset();\n        this.emitReserved(\"reconnect\", attempt);\n    }\n    constructor(uri, opts){\n        var _a;\n        super();\n        this.nsps = {};\n        this.subs = [];\n        if (uri && \"object\" === typeof uri) {\n            opts = uri;\n            uri = undefined;\n        }\n        opts = opts || {};\n        opts.path = opts.path || \"/socket.io\";\n        this.opts = opts;\n        installTimerFunctions(this, opts);\n        this.reconnection(opts.reconnection !== false);\n        this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n        this.reconnectionDelay(opts.reconnectionDelay || 1000);\n        this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n        this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n        this.backoff = new Backoff({\n            min: this.reconnectionDelay(),\n            max: this.reconnectionDelayMax(),\n            jitter: this.randomizationFactor()\n        });\n        this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n        this._readyState = \"closed\";\n        this.uri = uri;\n        const _parser = opts.parser || index;\n        this.encoder = new _parser.Encoder();\n        this.decoder = new _parser.Decoder();\n        this._autoConnect = opts.autoConnect !== false;\n        if (this._autoConnect) this.open();\n    }\n}\n\nexport { Manager };\n", "import { PacketType } from '../../../socket.io-parser/build/esm/index.esm.js';\nimport { on } from './on.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\n\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */ const RESERVED_EVENTS = Object.freeze({\n    connect: 1,\n    connect_error: 1,\n    disconnect: 1,\n    disconnecting: 1,\n    // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n    newListener: 1,\n    removeListener: 1\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n *   console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n *   // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n *   console.log(`disconnected due to ${reason}`);\n * });\n */ class Socket extends Emitter {\n    /**\n     * Whether the socket is currently disconnected\n     *\n     * @example\n     * const socket = io();\n     *\n     * socket.on(\"connect\", () => {\n     *   console.log(socket.disconnected); // false\n     * });\n     *\n     * socket.on(\"disconnect\", () => {\n     *   console.log(socket.disconnected); // true\n     * });\n     */ get disconnected() {\n        return !this.connected;\n    }\n    /**\n     * Subscribe to open, close and packet events\n     *\n     * @private\n     */ subEvents() {\n        if (this.subs) return;\n        const io = this.io;\n        this.subs = [\n            on(io, \"open\", this.onopen.bind(this)),\n            on(io, \"packet\", this.onpacket.bind(this)),\n            on(io, \"error\", this.onerror.bind(this)),\n            on(io, \"close\", this.onclose.bind(this))\n        ];\n    }\n    /**\n     * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n     *\n     * @example\n     * const socket = io();\n     *\n     * console.log(socket.active); // true\n     *\n     * socket.on(\"disconnect\", (reason) => {\n     *   if (reason === \"io server disconnect\") {\n     *     // the disconnection was initiated by the server, you need to manually reconnect\n     *     console.log(socket.active); // false\n     *   }\n     *   // else the socket will automatically try to reconnect\n     *   console.log(socket.active); // true\n     * });\n     */ get active() {\n        return !!this.subs;\n    }\n    /**\n     * \"Opens\" the socket.\n     *\n     * @example\n     * const socket = io({\n     *   autoConnect: false\n     * });\n     *\n     * socket.connect();\n     */ connect() {\n        if (this.connected) return this;\n        this.subEvents();\n        if (!this.io[\"_reconnecting\"]) this.io.open(); // ensure open\n        if (\"open\" === this.io._readyState) this.onopen();\n        return this;\n    }\n    /**\n     * Alias for {@link connect()}.\n     */ open() {\n        return this.connect();\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * This method mimics the WebSocket.send() method.\n     *\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n     *\n     * @example\n     * socket.send(\"hello\");\n     *\n     * // this is equivalent to\n     * socket.emit(\"message\", \"hello\");\n     *\n     * @return self\n     */ send(...args) {\n        args.unshift(\"message\");\n        this.emit.apply(this, args);\n        return this;\n    }\n    /**\n     * Override `emit`.\n     * If the event is in `events`, it's emitted normally.\n     *\n     * @example\n     * socket.emit(\"hello\", \"world\");\n     *\n     * // all serializable datastructures are supported (no need to call JSON.stringify)\n     * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n     *\n     * // with an acknowledgement from the server\n     * socket.emit(\"hello\", \"world\", (val) => {\n     *   // ...\n     * });\n     *\n     * @return self\n     */ emit(ev, ...args) {\n        var _a, _b, _c;\n        if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n            throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n        }\n        args.unshift(ev);\n        if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n            this._addToQueue(args);\n            return this;\n        }\n        const packet = {\n            type: PacketType.EVENT,\n            data: args\n        };\n        packet.options = {};\n        packet.options.compress = this.flags.compress !== false;\n        // event ack callback\n        if (\"function\" === typeof args[args.length - 1]) {\n            const id = this.ids++;\n            const ack = args.pop();\n            this._registerAckCallback(id, ack);\n            packet.id = id;\n        }\n        const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n        const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n        const discardPacket = this.flags.volatile && !isTransportWritable;\n        if (discardPacket) ; else if (isConnected) {\n            this.notifyOutgoingListeners(packet);\n            this.packet(packet);\n        } else {\n            this.sendBuffer.push(packet);\n        }\n        this.flags = {};\n        return this;\n    }\n    /**\n     * @private\n     */ _registerAckCallback(id, ack) {\n        var _a;\n        const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n        if (timeout === undefined) {\n            this.acks[id] = ack;\n            return;\n        }\n        // @ts-ignore\n        const timer = this.io.setTimeoutFn(()=>{\n            delete this.acks[id];\n            for(let i = 0; i < this.sendBuffer.length; i++){\n                if (this.sendBuffer[i].id === id) {\n                    this.sendBuffer.splice(i, 1);\n                }\n            }\n            ack.call(this, new Error(\"operation has timed out\"));\n        }, timeout);\n        const fn = (...args)=>{\n            // @ts-ignore\n            this.io.clearTimeoutFn(timer);\n            ack.apply(this, args);\n        };\n        fn.withError = true;\n        this.acks[id] = fn;\n    }\n    /**\n     * Emits an event and waits for an acknowledgement\n     *\n     * @example\n     * // without timeout\n     * const response = await socket.emitWithAck(\"hello\", \"world\");\n     *\n     * // with a specific timeout\n     * try {\n     *   const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n     * } catch (err) {\n     *   // the server did not acknowledge the event in the given delay\n     * }\n     *\n     * @return a Promise that will be fulfilled when the server acknowledges the event\n     */ emitWithAck(ev, ...args) {\n        return new Promise((resolve, reject)=>{\n            const fn = (arg1, arg2)=>{\n                return arg1 ? reject(arg1) : resolve(arg2);\n            };\n            fn.withError = true;\n            args.push(fn);\n            this.emit(ev, ...args);\n        });\n    }\n    /**\n     * Add the packet to the queue.\n     * @param args\n     * @private\n     */ _addToQueue(args) {\n        let ack;\n        if (typeof args[args.length - 1] === \"function\") {\n            ack = args.pop();\n        }\n        const packet = {\n            id: this._queueSeq++,\n            tryCount: 0,\n            pending: false,\n            args,\n            flags: Object.assign({\n                fromQueue: true\n            }, this.flags)\n        };\n        args.push((err, ...responseArgs)=>{\n            if (packet !== this._queue[0]) {\n                // the packet has already been acknowledged\n                return;\n            }\n            const hasError = err !== null;\n            if (hasError) {\n                if (packet.tryCount > this._opts.retries) {\n                    this._queue.shift();\n                    if (ack) {\n                        ack(err);\n                    }\n                }\n            } else {\n                this._queue.shift();\n                if (ack) {\n                    ack(null, ...responseArgs);\n                }\n            }\n            packet.pending = false;\n            return this._drainQueue();\n        });\n        this._queue.push(packet);\n        this._drainQueue();\n    }\n    /**\n     * Send the first packet of the queue, and wait for an acknowledgement from the server.\n     * @param force - whether to resend a packet that has not been acknowledged yet\n     *\n     * @private\n     */ _drainQueue(force = false) {\n        if (!this.connected || this._queue.length === 0) {\n            return;\n        }\n        const packet = this._queue[0];\n        if (packet.pending && !force) {\n            return;\n        }\n        packet.pending = true;\n        packet.tryCount++;\n        this.flags = packet.flags;\n        this.emit.apply(this, packet.args);\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param packet\n     * @private\n     */ packet(packet) {\n        packet.nsp = this.nsp;\n        this.io._packet(packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\n     */ onopen() {\n        if (typeof this.auth == \"function\") {\n            this.auth((data)=>{\n                this._sendConnectPacket(data);\n            });\n        } else {\n            this._sendConnectPacket(this.auth);\n        }\n    }\n    /**\n     * Sends a CONNECT packet to initiate the Socket.IO session.\n     *\n     * @param data\n     * @private\n     */ _sendConnectPacket(data) {\n        this.packet({\n            type: PacketType.CONNECT,\n            data: this._pid ? Object.assign({\n                pid: this._pid,\n                offset: this._lastOffset\n            }, data) : data\n        });\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\n     */ onerror(err) {\n        if (!this.connected) {\n            this.emitReserved(\"connect_error\", err);\n        }\n    }\n    /**\n     * Called upon engine `close`.\n     *\n     * @param reason\n     * @param description\n     * @private\n     */ onclose(reason, description) {\n        this.connected = false;\n        delete this.id;\n        this.emitReserved(\"disconnect\", reason, description);\n        this._clearAcks();\n    }\n    /**\n     * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n     * the server.\n     *\n     * @private\n     */ _clearAcks() {\n        Object.keys(this.acks).forEach((id)=>{\n            const isBuffered = this.sendBuffer.some((packet)=>String(packet.id) === id);\n            if (!isBuffered) {\n                // note: handlers that do not accept an error as first argument are ignored here\n                const ack = this.acks[id];\n                delete this.acks[id];\n                if (ack.withError) {\n                    ack.call(this, new Error(\"socket has been disconnected\"));\n                }\n            }\n        });\n    }\n    /**\n     * Called with socket packet.\n     *\n     * @param packet\n     * @private\n     */ onpacket(packet) {\n        const sameNamespace = packet.nsp === this.nsp;\n        if (!sameNamespace) return;\n        switch(packet.type){\n            case PacketType.CONNECT:\n                if (packet.data && packet.data.sid) {\n                    this.onconnect(packet.data.sid, packet.data.pid);\n                } else {\n                    this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n                }\n                break;\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                this.onevent(packet);\n                break;\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                this.onack(packet);\n                break;\n            case PacketType.DISCONNECT:\n                this.ondisconnect();\n                break;\n            case PacketType.CONNECT_ERROR:\n                this.destroy();\n                const err = new Error(packet.data.message);\n                // @ts-ignore\n                err.data = packet.data.data;\n                this.emitReserved(\"connect_error\", err);\n                break;\n        }\n    }\n    /**\n     * Called upon a server event.\n     *\n     * @param packet\n     * @private\n     */ onevent(packet) {\n        const args = packet.data || [];\n        if (null != packet.id) {\n            args.push(this.ack(packet.id));\n        }\n        if (this.connected) {\n            this.emitEvent(args);\n        } else {\n            this.receiveBuffer.push(Object.freeze(args));\n        }\n    }\n    emitEvent(args) {\n        if (this._anyListeners && this._anyListeners.length) {\n            const listeners = this._anyListeners.slice();\n            for (const listener of listeners){\n                listener.apply(this, args);\n            }\n        }\n        super.emit.apply(this, args);\n        if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n            this._lastOffset = args[args.length - 1];\n        }\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @private\n     */ ack(id) {\n        const self = this;\n        let sent = false;\n        return function(...args) {\n            // prevent double callbacks\n            if (sent) return;\n            sent = true;\n            self.packet({\n                type: PacketType.ACK,\n                id: id,\n                data: args\n            });\n        };\n    }\n    /**\n     * Called upon a server acknowledgement.\n     *\n     * @param packet\n     * @private\n     */ onack(packet) {\n        const ack = this.acks[packet.id];\n        if (typeof ack !== \"function\") {\n            return;\n        }\n        delete this.acks[packet.id];\n        // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n        if (ack.withError) {\n            packet.data.unshift(null);\n        }\n        // @ts-ignore\n        ack.apply(this, packet.data);\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */ onconnect(id, pid) {\n        this.id = id;\n        this.recovered = pid && this._pid === pid;\n        this._pid = pid; // defined only if connection state recovery is enabled\n        this.connected = true;\n        this.emitBuffered();\n        this.emitReserved(\"connect\");\n        this._drainQueue(true);\n    }\n    /**\n     * Emit buffered events (received and emitted).\n     *\n     * @private\n     */ emitBuffered() {\n        this.receiveBuffer.forEach((args)=>this.emitEvent(args));\n        this.receiveBuffer = [];\n        this.sendBuffer.forEach((packet)=>{\n            this.notifyOutgoingListeners(packet);\n            this.packet(packet);\n        });\n        this.sendBuffer = [];\n    }\n    /**\n     * Called upon server disconnect.\n     *\n     * @private\n     */ ondisconnect() {\n        this.destroy();\n        this.onclose(\"io server disconnect\");\n    }\n    /**\n     * Called upon forced client/server side disconnections,\n     * this method ensures the manager stops tracking us and\n     * that reconnections don't get triggered for this.\n     *\n     * @private\n     */ destroy() {\n        if (this.subs) {\n            // clean subscriptions to avoid reconnections\n            this.subs.forEach((subDestroy)=>subDestroy());\n            this.subs = undefined;\n        }\n        this.io[\"_destroy\"](this);\n    }\n    /**\n     * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n     *\n     * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n     *\n     * @example\n     * const socket = io();\n     *\n     * socket.on(\"disconnect\", (reason) => {\n     *   // console.log(reason); prints \"io client disconnect\"\n     * });\n     *\n     * socket.disconnect();\n     *\n     * @return self\n     */ disconnect() {\n        if (this.connected) {\n            this.packet({\n                type: PacketType.DISCONNECT\n            });\n        }\n        // remove socket from pool\n        this.destroy();\n        if (this.connected) {\n            // fire events\n            this.onclose(\"io client disconnect\");\n        }\n        return this;\n    }\n    /**\n     * Alias for {@link disconnect()}.\n     *\n     * @return self\n     */ close() {\n        return this.disconnect();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @example\n     * socket.compress(false).emit(\"hello\");\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     */ compress(compress) {\n        this.flags.compress = compress;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n     * ready to send messages.\n     *\n     * @example\n     * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n     *\n     * @returns self\n     */ get volatile() {\n        this.flags.volatile = true;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n     * given number of milliseconds have elapsed without an acknowledgement from the server:\n     *\n     * @example\n     * socket.timeout(5000).emit(\"my-event\", (err) => {\n     *   if (err) {\n     *     // the server did not acknowledge the event in the given delay\n     *   }\n     * });\n     *\n     * @returns self\n     */ timeout(timeout) {\n        this.flags.timeout = timeout;\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @example\n     * socket.onAny((event, ...args) => {\n     *   console.log(`got ${event}`);\n     * });\n     *\n     * @param listener\n     */ onAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @example\n     * socket.prependAny((event, ...args) => {\n     *   console.log(`got event ${event}`);\n     * });\n     *\n     * @param listener\n     */ prependAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @example\n     * const catchAllListener = (event, ...args) => {\n     *   console.log(`got event ${event}`);\n     * }\n     *\n     * socket.onAny(catchAllListener);\n     *\n     * // remove a specific listener\n     * socket.offAny(catchAllListener);\n     *\n     * // or remove all listeners\n     * socket.offAny();\n     *\n     * @param listener\n     */ offAny(listener) {\n        if (!this._anyListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyListeners;\n            for(let i = 0; i < listeners.length; i++){\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        } else {\n            this._anyListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     */ listenersAny() {\n        return this._anyListeners || [];\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * Note: acknowledgements sent to the server are not included.\n     *\n     * @example\n     * socket.onAnyOutgoing((event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * });\n     *\n     * @param listener\n     */ onAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * Note: acknowledgements sent to the server are not included.\n     *\n     * @example\n     * socket.prependAnyOutgoing((event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * });\n     *\n     * @param listener\n     */ prependAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @example\n     * const catchAllListener = (event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * }\n     *\n     * socket.onAnyOutgoing(catchAllListener);\n     *\n     * // remove a specific listener\n     * socket.offAnyOutgoing(catchAllListener);\n     *\n     * // or remove all listeners\n     * socket.offAnyOutgoing();\n     *\n     * @param [listener] - the catch-all listener (optional)\n     */ offAnyOutgoing(listener) {\n        if (!this._anyOutgoingListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyOutgoingListeners;\n            for(let i = 0; i < listeners.length; i++){\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        } else {\n            this._anyOutgoingListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     */ listenersAnyOutgoing() {\n        return this._anyOutgoingListeners || [];\n    }\n    /**\n     * Notify the listeners for each packet sent\n     *\n     * @param packet\n     *\n     * @private\n     */ notifyOutgoingListeners(packet) {\n        if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n            const listeners = this._anyOutgoingListeners.slice();\n            for (const listener of listeners){\n                listener.apply(this, packet.data);\n            }\n        }\n    }\n    /**\n     * `Socket` constructor.\n     */ constructor(io, nsp, opts){\n        super();\n        /**\n         * Whether the socket is currently connected to the server.\n         *\n         * @example\n         * const socket = io();\n         *\n         * socket.on(\"connect\", () => {\n         *   console.log(socket.connected); // true\n         * });\n         *\n         * socket.on(\"disconnect\", () => {\n         *   console.log(socket.connected); // false\n         * });\n         */ this.connected = false;\n        /**\n         * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n         * be transmitted by the server.\n         */ this.recovered = false;\n        /**\n         * Buffer for packets received before the CONNECT packet\n         */ this.receiveBuffer = [];\n        /**\n         * Buffer for packets that will be sent once the socket is connected\n         */ this.sendBuffer = [];\n        /**\n         * The queue of packets to be sent with retry in case of failure.\n         *\n         * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n         * @private\n         */ this._queue = [];\n        /**\n         * A sequence to generate the ID of the {@link QueuedPacket}.\n         * @private\n         */ this._queueSeq = 0;\n        this.ids = 0;\n        /**\n         * A map containing acknowledgement handlers.\n         *\n         * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n         *\n         * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n         * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n         * - `const value = await socket.emitWithAck(\"test\")`\n         *\n         * From those that don't:\n         *\n         * - `socket.emit(\"test\", (value) => { ... });`\n         *\n         * In the first case, the handlers will be called with an error when:\n         *\n         * - the timeout is reached\n         * - the socket gets disconnected\n         *\n         * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n         * an acknowledgement from the server.\n         *\n         * @private\n         */ this.acks = {};\n        this.flags = {};\n        this.io = io;\n        this.nsp = nsp;\n        if (opts && opts.auth) {\n            this.auth = opts.auth;\n        }\n        this._opts = Object.assign({}, opts);\n        if (this.io._autoConnect) this.open();\n    }\n}\n\nexport { Socket };\n", "import { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { deconstructPacket, reconstructPacket } from './binary.esm.js';\nimport { hasBinary, isBinary } from './is-binary.esm.js';\n\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */ const RESERVED_EVENTS = [\n    \"connect\",\n    \"connect_error\",\n    \"disconnect\",\n    \"disconnecting\",\n    \"newListener\",\n    \"removeListener\"\n];\n/**\n * Protocol version.\n *\n * @public\n */ const protocol = 5;\nvar PacketType;\n(function(PacketType) {\n    PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n    PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n    PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n    PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n    PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n    PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n    PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */ class Encoder {\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */ encode(obj) {\n        if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n            if (hasBinary(obj)) {\n                return this.encodeAsBinary({\n                    type: obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK,\n                    nsp: obj.nsp,\n                    data: obj.data,\n                    id: obj.id\n                });\n            }\n        }\n        return [\n            this.encodeAsString(obj)\n        ];\n    }\n    /**\n     * Encode packet as string.\n     */ encodeAsString(obj) {\n        // first is type\n        let str = \"\" + obj.type;\n        // attachments if we have them\n        if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {\n            str += obj.attachments + \"-\";\n        }\n        // if we have a namespace other than `/`\n        // we append it followed by a comma `,`\n        if (obj.nsp && \"/\" !== obj.nsp) {\n            str += obj.nsp + \",\";\n        }\n        // immediately followed by the id\n        if (null != obj.id) {\n            str += obj.id;\n        }\n        // json data\n        if (null != obj.data) {\n            str += JSON.stringify(obj.data, this.replacer);\n        }\n        return str;\n    }\n    /**\n     * Encode packet as 'buffer sequence' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */ encodeAsBinary(obj) {\n        const deconstruction = deconstructPacket(obj);\n        const pack = this.encodeAsString(deconstruction.packet);\n        const buffers = deconstruction.buffers;\n        buffers.unshift(pack); // add packet info to beginning of data list\n        return buffers; // write all the buffers\n    }\n    /**\n     * Encoder constructor\n     *\n     * @param {function} replacer - custom replacer to pass down to JSON.parse\n     */ constructor(replacer){\n        this.replacer = replacer;\n    }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n    return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */ class Decoder extends Emitter {\n    /**\n     * Decodes an encoded packet string into packet JSON.\n     *\n     * @param {String} obj - encoded packet\n     */ add(obj) {\n        let packet;\n        if (typeof obj === \"string\") {\n            if (this.reconstructor) {\n                throw new Error(\"got plaintext data when reconstructing a packet\");\n            }\n            packet = this.decodeString(obj);\n            const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n            if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n                packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n                // binary packet's json\n                this.reconstructor = new BinaryReconstructor(packet);\n                // no attachments, labeled binary but no binary data to follow\n                if (packet.attachments === 0) {\n                    super.emitReserved(\"decoded\", packet);\n                }\n            } else {\n                // non-binary full packet\n                super.emitReserved(\"decoded\", packet);\n            }\n        } else if (isBinary(obj) || obj.base64) {\n            // raw binary data\n            if (!this.reconstructor) {\n                throw new Error(\"got binary data when not reconstructing a packet\");\n            } else {\n                packet = this.reconstructor.takeBinaryData(obj);\n                if (packet) {\n                    // received final buffer\n                    this.reconstructor = null;\n                    super.emitReserved(\"decoded\", packet);\n                }\n            }\n        } else {\n            throw new Error(\"Unknown type: \" + obj);\n        }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */ decodeString(str) {\n        let i = 0;\n        // look up type\n        const p = {\n            type: Number(str.charAt(0))\n        };\n        if (PacketType[p.type] === undefined) {\n            throw new Error(\"unknown packet type \" + p.type);\n        }\n        // look up attachments if type binary\n        if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {\n            const start = i + 1;\n            while(str.charAt(++i) !== \"-\" && i != str.length){}\n            const buf = str.substring(start, i);\n            if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n                throw new Error(\"Illegal attachments\");\n            }\n            p.attachments = Number(buf);\n        }\n        // look up namespace (if any)\n        if (\"/\" === str.charAt(i + 1)) {\n            const start = i + 1;\n            while(++i){\n                const c = str.charAt(i);\n                if (\",\" === c) break;\n                if (i === str.length) break;\n            }\n            p.nsp = str.substring(start, i);\n        } else {\n            p.nsp = \"/\";\n        }\n        // look up id\n        const next = str.charAt(i + 1);\n        if (\"\" !== next && Number(next) == next) {\n            const start = i + 1;\n            while(++i){\n                const c = str.charAt(i);\n                if (null == c || Number(c) != c) {\n                    --i;\n                    break;\n                }\n                if (i === str.length) break;\n            }\n            p.id = Number(str.substring(start, i + 1));\n        }\n        // look up json data\n        if (str.charAt(++i)) {\n            const payload = this.tryParse(str.substr(i));\n            if (Decoder.isPayloadValid(p.type, payload)) {\n                p.data = payload;\n            } else {\n                throw new Error(\"invalid payload\");\n            }\n        }\n        return p;\n    }\n    tryParse(str) {\n        try {\n            return JSON.parse(str, this.reviver);\n        } catch (e) {\n            return false;\n        }\n    }\n    static isPayloadValid(type, payload) {\n        switch(type){\n            case PacketType.CONNECT:\n                return isObject(payload);\n            case PacketType.DISCONNECT:\n                return payload === undefined;\n            case PacketType.CONNECT_ERROR:\n                return typeof payload === \"string\" || isObject(payload);\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                return Array.isArray(payload) && (typeof payload[0] === \"number\" || typeof payload[0] === \"string\" && RESERVED_EVENTS.indexOf(payload[0]) === -1);\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                return Array.isArray(payload);\n        }\n    }\n    /**\n     * Deallocates a parser's resources\n     */ destroy() {\n        if (this.reconstructor) {\n            this.reconstructor.finishedReconstruction();\n            this.reconstructor = null;\n        }\n    }\n    /**\n     * Decoder constructor\n     *\n     * @param {function} reviver - custom reviver to pass down to JSON.stringify\n     */ constructor(reviver){\n        super();\n        this.reviver = reviver;\n    }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */ class BinaryReconstructor {\n    /**\n     * Method to be called when binary data received from connection\n     * after a BINARY_EVENT packet.\n     *\n     * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n     * @return {null | Object} returns null if more binary data is expected or\n     *   a reconstructed packet object if all buffers have been received.\n     */ takeBinaryData(binData) {\n        this.buffers.push(binData);\n        if (this.buffers.length === this.reconPack.attachments) {\n            // done with buffer list\n            const packet = reconstructPacket(this.reconPack, this.buffers);\n            this.finishedReconstruction();\n            return packet;\n        }\n        return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */ finishedReconstruction() {\n        this.reconPack = null;\n        this.buffers = [];\n    }\n    constructor(packet){\n        this.packet = packet;\n        this.buffers = [];\n        this.reconPack = packet;\n    }\n}\n\nexport { Decoder, Encoder, PacketType, protocol };\n", "import { isBinary } from './is-binary.esm.js';\n\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */ function deconstructPacket(packet) {\n    const buffers = [];\n    const packetData = packet.data;\n    const pack = packet;\n    pack.data = _deconstructPacket(packetData, buffers);\n    pack.attachments = buffers.length; // number of binary 'attachments'\n    return {\n        packet: pack,\n        buffers: buffers\n    };\n}\nfunction _deconstructPacket(data, buffers) {\n    if (!data) return data;\n    if (isBinary(data)) {\n        const placeholder = {\n            _placeholder: true,\n            num: buffers.length\n        };\n        buffers.push(data);\n        return placeholder;\n    } else if (Array.isArray(data)) {\n        const newData = new Array(data.length);\n        for(let i = 0; i < data.length; i++){\n            newData[i] = _deconstructPacket(data[i], buffers);\n        }\n        return newData;\n    } else if (typeof data === \"object\" && !(data instanceof Date)) {\n        const newData = {};\n        for(const key in data){\n            if (Object.prototype.hasOwnProperty.call(data, key)) {\n                newData[key] = _deconstructPacket(data[key], buffers);\n            }\n        }\n        return newData;\n    }\n    return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */ function reconstructPacket(packet, buffers) {\n    packet.data = _reconstructPacket(packet.data, buffers);\n    delete packet.attachments; // no longer useful\n    return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n    if (!data) return data;\n    if (data && data._placeholder === true) {\n        const isIndexValid = typeof data.num === \"number\" && data.num >= 0 && data.num < buffers.length;\n        if (isIndexValid) {\n            return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n        } else {\n            throw new Error(\"illegal attachments\");\n        }\n    } else if (Array.isArray(data)) {\n        for(let i = 0; i < data.length; i++){\n            data[i] = _reconstructPacket(data[i], buffers);\n        }\n    } else if (typeof data === \"object\") {\n        for(const key in data){\n            if (Object.prototype.hasOwnProperty.call(data, key)) {\n                data[key] = _reconstructPacket(data[key], buffers);\n            }\n        }\n    }\n    return data;\n}\n\nexport { deconstructPacket, reconstructPacket };\n", "const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj)=>{\n    return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && toString.call(Blob) === \"[object BlobConstructor]\";\nconst withNativeFile = typeof File === \"function\" || typeof File !== \"undefined\" && toString.call(File) === \"[object FileConstructor]\";\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */ function isBinary(obj) {\n    return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File;\n}\nfunction hasBinary(obj, toJSON) {\n    if (!obj || typeof obj !== \"object\") {\n        return false;\n    }\n    if (Array.isArray(obj)) {\n        for(let i = 0, l = obj.length; i < l; i++){\n            if (hasBinary(obj[i])) {\n                return true;\n            }\n        }\n        return false;\n    }\n    if (isBinary(obj)) {\n        return true;\n    }\n    if (obj.toJSON && typeof obj.toJSON === \"function\" && arguments.length === 1) {\n        return hasBinary(obj.toJSON(), true);\n    }\n    for(const key in obj){\n        if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n            return true;\n        }\n    }\n    return false;\n}\n\nexport { hasBinary, isBinary };\n", "function on(obj, ev, fn) {\n    obj.on(ev, fn);\n    return function subDestroy() {\n        obj.off(ev, fn);\n    };\n}\n\nexport { on };\n", "/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */ function Backoff(opts) {\n    opts = opts || {};\n    this.ms = opts.min || 100;\n    this.max = opts.max || 10000;\n    this.factor = opts.factor || 2;\n    this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n    this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */ Backoff.prototype.duration = function() {\n    var ms = this.ms * Math.pow(this.factor, this.attempts++);\n    if (this.jitter) {\n        var rand = Math.random();\n        var deviation = Math.floor(rand * this.jitter * ms);\n        ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n    }\n    return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */ Backoff.prototype.reset = function() {\n    this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */ Backoff.prototype.setMin = function(min) {\n    this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */ Backoff.prototype.setMax = function(max) {\n    this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */ Backoff.prototype.setJitter = function(jitter) {\n    this.jitter = jitter;\n};\n\nexport { Backoff };\n", "import { Polling } from './polling.esm.js';\n\n/**\n * HTTP long-polling based on the built-in `fetch()` method.\n *\n * Usage: browser, Node.js (since v18), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch\n * @see https://caniuse.com/fetch\n * @see https://nodejs.org/api/globals.html#fetch\n */ class Fetch extends Polling {\n    doPoll() {\n        this._fetch().then((res)=>{\n            if (!res.ok) {\n                return this.onError(\"fetch read error\", res.status, res);\n            }\n            res.text().then((data)=>this.onData(data));\n        }).catch((err)=>{\n            this.onError(\"fetch read error\", err);\n        });\n    }\n    doWrite(data, callback) {\n        this._fetch(data).then((res)=>{\n            if (!res.ok) {\n                return this.onError(\"fetch write error\", res.status, res);\n            }\n            callback();\n        }).catch((err)=>{\n            this.onError(\"fetch write error\", err);\n        });\n    }\n    _fetch(data) {\n        var _a;\n        const isPost = data !== undefined;\n        const headers = new Headers(this.opts.extraHeaders);\n        if (isPost) {\n            headers.set(\"content-type\", \"text/plain;charset=UTF-8\");\n        }\n        (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.appendCookies(headers);\n        return fetch(this.uri(), {\n            method: isPost ? \"POST\" : \"GET\",\n            body: isPost ? data : null,\n            headers,\n            credentials: this.opts.withCredentials ? \"include\" : \"omit\"\n        }).then((res)=>{\n            var _a;\n            // @ts-ignore getSetCookie() was added in Node.js v19.7.0\n            (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(res.headers.getSetCookie());\n            return res;\n        });\n    }\n}\n\nexport { Fetch };\n"],
  "mappings": "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",
  "names": ["init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "version", "classNamePrefix", "classNames", "formContainerStyles", "formRowStyles", "inputStyles", "loaderStyles", "labelStyles", "selectStyles", "textAreaStyles", "errorMessageStyles", "checkboxContainerStyles", "checkboxStyles", "checkboxLabelStyles", "checkmarkStyles", "radioGroupStyles", "radioOptionStyles", "hiddenRadioStyles", "customRadioStyles", "textOnlyContentStyles", "successMessageStyles", "formErrorMessageStyles", "_FormContainer", "children", "p", "_FormRow", "_Label", "props", "_Input", "hasError", "_Textarea", "_Select", "u", "_Loader", "_ErrorMessage", "_CheckboxContainer", "_Checkbox", "isChecked", "disabled", "_CheckboxLabel", "_Checkmark", "_RadioGroup", "_RadioOption", "_Radio", "l", "_TextOnlyContent", "_SuccessMessage", "_FormErrorMessage", "CheckboxContainer", "withCSS", "Checkbox", "CheckboxLabel", "Checkmark", "RadioGroup", "RadioOption", "Radio", "TextOnlyContent", "SuccessMessage", "Input", "FormContainer", "FormRow", "Loader", "Label", "Select", "TextArea", "ErrorMessage", "init_ssg_sandbox_shims", "useInvalidDomains", "invalidDomains", "setInvalidDomains", "ye", "isLoaded", "setIsLoaded", "loadDomains", "te", "result", "error", "checkDomainName", "email", "emailDomain", "pos", "getCookie", "key", "acc", "curr", "cookieKey", "cookieValue", "getURLParameter", "param", "getMarketoParamKey", "name", "getLastServerViewedExperiment", "addLinkedinPixel", "linkedinPixel", "extractFieldOptions", "element", "options", "option", "formatLabel", "label", "getLabelForFieldRow", "row", "inputElement", "formCol", "processFormRow", "htmlTextElement", "inputs", "fields", "processedGroups", "input", "fieldType", "isCheckboxList", "field", "groupInputs", "groupLabel", "groupInput", "inputLabel", "processHiddenFields", "form", "hiddenInputs", "hiddenFieldsData", "fieldName", "getHiddenFieldValue", "useMarketoFormStore", "createStore", "MarketoFramerForm", "formId", "successMessage", "isSalesForm", "fastlaneCampaignId", "validateBusinessEmails", "invalidBusinessEmailMessage", "fields", "setFields", "ye", "fieldRows", "setFieldRows", "formData", "setFormData", "hiddenFields", "setHiddenFields", "status", "setStatus", "formErrors", "setFormErrors", "loadDomains", "checkDomainName", "useInvalidDomains", "isScriptLoaded", "setScrpitLoaded", "marketoFormStore", "setMarketoFormStore", "useMarketoFormStore", "marketoFormRef", "pe", "FORM_BASE_URL", "FORM_MUNCHKIN_ID", "initializeForm", "form", "formElement", "formRows", "processedFormRows", "formFields", "row", "fieldsInRow", "processFormRow", "hiddenFormFields", "processHiddenFields", "appendScript", "script", "ue", "intervalId", "validateBusinessEmail", "name", "email", "isValidBusinessEmail", "prev", "handleEmailBlur", "field", "handleInputChange", "value", "renderField", "hasError", "p", "TextOnlyContent", "u", "Label", "Select", "e", "option", "l", "TextArea", "CheckboxContainer", "Checkbox", "Checkmark", "CheckboxLabel", "selectedValues", "isChecked", "newValues", "index", "RadioGroup", "RadioOption", "Radio", "Input", "handleSubmit", "emailField", "marketoForm", "marketoFormData", "experiment", "getLastServerViewedExperiment", "fieldDescriptors", "newErrors", "descriptor", "fieldName", "resolve", "reject", "data", "followUpUrl", "currentUrl", "_followUpUrl", "parsedFollowUpUrl", "leadSource", "getURLParameter", "referrer", "events", "_trigger", "_window", "getMarketoParamKey", "addLinkedinPixel", "error", "SuccessMessage", "Loader", "FormContainer", "FormRow", "ErrorMessage", "Buttons_Submit_Button_s9Qi_default", "propertyControls", "ControlType", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "PACKET_TYPES", "PACKET_TYPES_REVERSE", "key", "ERROR_PACKET", "withNativeBlob", "withNativeArrayBuffer", "isView", "obj", "encodePacket", "type", "data", "supportsBinary", "callback", "encodeBlobAsBase64", "PACKET_TYPES", "fileReader", "content", "toArray", "TEXT_ENCODER", "encodePacketToBinary", "packet", "encoded", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "chars", "lookup", "i", "decode", "base64", "bufferLength", "len", "p", "encoded1", "encoded2", "encoded3", "encoded4", "arraybuffer", "bytes", "withNativeArrayBuffer", "decodePacket", "encodedPacket", "binaryType", "mapBinary", "type", "decodeBase64Packet", "PACKET_TYPES_REVERSE", "ERROR_PACKET", "data", "decoded", "decode", "init_ssg_sandbox_shims", "Emitter", "obj", "mixin", "key", "event", "fn", "on", "callbacks", "cb", "i", "args", "len", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "nextTick", "cb", "setTimeoutFn", "globalThisShim", "defaultBinaryType", "pick", "obj", "attr", "acc", "k", "NATIVE_SET_TIMEOUT", "globalThisShim", "NATIVE_CLEAR_TIMEOUT", "installTimerFunctions", "opts", "BASE64_OVERHEAD", "byteLength", "utf8Length", "str", "c", "length", "i", "l", "randomString", "init_ssg_sandbox_shims", "encode", "obj", "str", "i", "decode", "qs", "qry", "pairs", "l", "pair", "TransportError", "reason", "description", "context", "Transport", "Emitter", "packets", "data", "packet", "decodePacket", "details", "onPause", "schema", "query", "hostname", "encodedQuery", "encode", "opts", "installTimerFunctions", "init_ssg_sandbox_shims", "SEPARATOR", "encodePayload", "packets", "callback", "length", "encodedPackets", "count", "packet", "i", "encodePacket", "encodedPacket", "decodePayload", "encodedPayload", "binaryType", "decodedPacket", "decodePacket", "createPacketEncoderStream", "controller", "encodePacketToBinary", "payloadLength", "header", "view", "TEXT_DECODER", "totalLength", "chunks", "acc", "chunk", "concatChunks", "size", "buffer", "j", "createPacketDecoderStream", "maxPayload", "state", "expectedLength", "isBinary", "headerArray", "n", "ERROR_PACKET", "data", "protocol", "Polling", "Transport", "onPause", "pause", "total", "data", "callback", "packet", "decodePayload", "close", "packets", "encodePayload", "schema", "query", "randomString", "init_ssg_sandbox_shims", "value", "hasCORS", "empty", "BaseXHR", "Polling", "data", "fn", "req", "xhrStatus", "context", "opts", "isSSL", "port", "Request", "_Request", "Emitter", "_a", "pick", "xhr", "i", "e", "err", "fromError", "createRequest", "uri", "installTimerFunctions", "unloadHandler", "terminationEvent", "globalThisShim", "hasXHR2", "newRequest", "XHR", "forceBase64", "xdomain", "hasCORS", "init_ssg_sandbox_shims", "isReactNative", "BaseWS", "Transport", "uri", "protocols", "opts", "pick", "err", "closeEvent", "ev", "packets", "i", "packet", "lastPacket", "encodePacket", "data", "nextTick", "schema", "query", "randomString", "WebSocketCtor", "globalThisShim", "WS", "_packet", "init_ssg_sandbox_shims", "WT", "Transport", "err", "stream", "decoderStream", "createPacketDecoderStream", "reader", "encoderStream", "createPacketEncoderStream", "read", "done", "value", "packet", "packets", "i", "lastPacket", "nextTick", "_a", "transports", "WS", "WT", "XHR", "init_ssg_sandbox_shims", "re", "parts", "parse", "str", "src", "b", "e", "m", "uri", "i", "pathNames", "queryKey", "obj", "path", "regx", "names", "query", "data", "$0", "$1", "$2", "withEventListeners", "OFFLINE_EVENT_LISTENERS", "listener", "SocketWithoutUpgrade", "_SocketWithoutUpgrade", "Emitter", "name", "query", "protocol", "opts", "transportName", "transport", "reason", "packet", "err", "data", "delay", "packets", "payloadSize", "i", "byteLength", "hasExpired", "nextTick", "msg", "options", "fn", "type", "close", "cleanupAndClose", "waitForUpgrade", "description", "uri", "defaultBinaryType", "parsedUri", "parse", "installTimerFunctions", "t", "decode", "SocketWithUpgrade", "failed", "onTransportOpen", "cleanup", "freezeTransport", "onerror", "error", "onTransportClose", "onclose", "onupgrade", "to", "upgrades", "filteredUpgrades", "Socket", "o", "transports", "url", "uri", "path", "loc", "obj", "parse", "host", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "index_esm_exports", "__export", "Decoder", "Encoder", "PacketType", "protocol", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "withNativeArrayBuffer", "isView", "obj", "toString", "withNativeBlob", "withNativeFile", "isBinary", "hasBinary", "toJSON", "i", "l", "key", "deconstructPacket", "packet", "buffers", "packetData", "pack", "_deconstructPacket", "data", "isBinary", "placeholder", "newData", "i", "key", "reconstructPacket", "_reconstructPacket", "RESERVED_EVENTS", "protocol", "PacketType", "Encoder", "obj", "hasBinary", "str", "deconstruction", "deconstructPacket", "pack", "buffers", "replacer", "isObject", "value", "Decoder", "_Decoder", "Emitter", "packet", "isBinaryEvent", "BinaryReconstructor", "isBinary", "i", "p", "start", "buf", "next", "c", "payload", "type", "reviver", "binData", "reconstructPacket", "init_ssg_sandbox_shims", "on", "obj", "ev", "fn", "RESERVED_EVENTS", "Socket", "Emitter", "io", "on", "args", "ev", "_a", "_b", "_c", "packet", "PacketType", "id", "ack", "isTransportWritable", "isConnected", "timeout", "timer", "i", "fn", "resolve", "reject", "arg1", "arg2", "err", "responseArgs", "force", "data", "reason", "description", "listeners", "listener", "self", "sent", "pid", "subDestroy", "compress", "nsp", "opts", "init_ssg_sandbox_shims", "Backoff", "opts", "ms", "rand", "deviation", "min", "max", "jitter", "Manager", "Emitter", "v", "_a", "fn", "Socket", "socket", "self", "openSubDestroy", "on", "onError", "err", "errorSub", "timeout", "timer", "data", "e", "packet", "nextTick", "nsp", "opts", "nsps", "encodedPackets", "i", "subDestroy", "reason", "description", "delay", "attempt", "uri", "installTimerFunctions", "Backoff", "_parser", "index_esm_exports", "cache", "lookup", "uri", "opts", "parsed", "url", "source", "id", "path", "sameNamespace", "newConnection", "io", "Manager", "Socket", "init_ssg_sandbox_shims", "isDev", "RenderTarget", "MarketoForm", "props", "p", "MarketoFramerForm", "addPropertyControls"]
}
