{"version":3,"file":"jena-utilities.umd.min.js","sources":["../lib/instruments.js","../lib/form/fillForm.js","../lib/form/getStyle.js","../lib/form/updateIconNMR.js","../node_modules/screening/lib/generateIconNMRFile.js","../lib/form/ExperimentForm.js","../lib/form/getForm.js"],"sourcesContent":["export const instruments = {\n    instrument1: {\n        solventMapping: {\n            CDCl3: 'CDCl3',\n            'DMSO-d6': 'DMSO-d6',\n        },\n        defaultExperiments: {\n            '1h': 'N proton',\n            '13c': 'N carbon',\n            cosy: 'N COSY',\n        },\n        experiments: [\n            {\n                experiment: 'N proton',\n                enabled: true,\n                parameters: [\n                    { label: 'd1', value: '' },\n                    { label: 'd9', value: '' },\n                ],\n            },\n            {\n                experiment: 'N carbon',\n                parameters: [\n                    { label: 'ds', value: '' },\n                    { label: 'ns', value: '' },\n                    { label: 'd1', value: '' },\n                ],\n            },\n            {\n                experiment: 'N COSY',\n                parameters: [],\n            },\n        ],\n    },\n    instrument2: {\n        solventMapping: {\n            CDCl3: 'Chloroform-d',\n            'DMSO-d6': 'Dimethyl sulfoxide-d6',\n        },\n        defaultExperiments: {\n            '1h': 'H1 NMR',\n            '13c': 'C13 NMR',\n            hsqc: 'HSQC',\n        },\n        experiments: [\n            {\n                experiment: 'H1 NMR',\n                parameters: [\n                    { label: 'd1', value: '' },\n                    { label: 'number of scans', value: '' },\n                ],\n            },\n            {\n                experiment: 'C13 NMR',\n                parameters: [\n                    { label: 'ds', value: '' },\n                    { label: 'ns', value: '' },\n                    { label: 'd1', value: '' },\n                ],\n            },\n            {\n                experiment: 'HSQC',\n                parameters: [],\n            },\n        ],\n    },\n};\n//# sourceMappingURL=instruments.js.map","import { instruments } from \"../instruments.js\";\nfunction collectFormData(form) {\n    const formData = {};\n    const experimentsDiv = form.document.querySelector(`#${form.id}`);\n    const activeTab = experimentsDiv.querySelector('.tab-content.active');\n    const instrumentId = activeTab?.dataset.instrument;\n    if (!instrumentId)\n        return formData;\n    formData.instrument = instrumentId;\n    formData.experiments = [];\n    const experiments = activeTab.querySelectorAll('.experiment-item');\n    for (const exp of experiments) {\n        const checkbox = exp.querySelector('.experiment-toggle');\n        const experimentData = {\n            name: checkbox.dataset.experiment,\n            enabled: checkbox.checked,\n            parameters: {},\n        };\n        for (const input of exp.querySelectorAll('.parameter-input')) {\n            experimentData.parameters[input.dataset.label] = input.value;\n        }\n        formData.experiments.push(experimentData);\n    }\n    return formData;\n}\nfunction createExperimentElement(document, experiment) {\n    const div = document.createElement('div');\n    div.className = 'experiment-item';\n    const header = document.createElement('div');\n    header.className = 'experiment-header';\n    const checkbox = document.createElement('input');\n    checkbox.type = 'checkbox';\n    checkbox.className = 'experiment-toggle';\n    checkbox.dataset.experiment = experiment.experiment;\n    checkbox.checked = experiment.enabled || false;\n    const label = document.createElement('label');\n    label.textContent = experiment.experiment;\n    label.style.cursor = 'pointer';\n    header.append(checkbox);\n    header.append(label);\n    const paramsDiv = document.createElement('div');\n    paramsDiv.className = 'experiment-parameters';\n    paramsDiv.style.display = experiment.enabled || false ? 'block' : 'none';\n    for (const param of experiment.parameters) {\n        const paramDiv = document.createElement('div');\n        paramDiv.className = 'parameter-item';\n        const paramLabel = document.createElement('label');\n        paramLabel.textContent = param.label;\n        const input = document.createElement('input');\n        input.type = 'text';\n        input.className = 'parameter-input';\n        input.dataset.label = param.label;\n        input.value = param.value;\n        paramDiv.append(paramLabel);\n        paramDiv.append(input);\n        paramsDiv.append(paramDiv);\n    }\n    div.append(header);\n    div.append(paramsDiv);\n    return div;\n}\nfunction createTabContent(form, instrumentId, instrumentData) {\n    const content = form.document.createElement('div');\n    content.className = 'tab-content';\n    content.dataset.instrument = instrumentId;\n    for (const experiment of instrumentData.experiments) {\n        content.append(createExperimentElement(form.document, experiment));\n    }\n    return content;\n}\nfunction switchTab(form, instrumentId) {\n    const experimentsDiv = form.document.querySelector(`#${form.id}`);\n    for (const tab of experimentsDiv.querySelectorAll('.tab')) {\n        tab.classList.toggle('active', tab.dataset.instrument === instrumentId);\n    }\n    for (const content of experimentsDiv.querySelectorAll('.tab-content')) {\n        content.classList.toggle('active', content.dataset.instrument === instrumentId);\n    }\n    form.onFormChange(collectFormData(form));\n}\nexport function fillForm(form) {\n    const experimentsDiv = form.document.querySelector(`#${form.id}`);\n    const tabsContainer = experimentsDiv.querySelector('#tabs');\n    const formContainer = experimentsDiv.querySelector('#form-container');\n    // Clear existing content\n    tabsContainer.innerHTML = '';\n    formContainer.innerHTML = '';\n    const instrumentIds = Object.keys(instruments);\n    for (const [index, instrumentId] of instrumentIds.entries()) {\n        const tab = form.document.createElement('button');\n        tab.className = 'tab';\n        tab.dataset.instrument = instrumentId;\n        tab.textContent = instrumentId;\n        if (index === 0)\n            tab.classList.add('active');\n        tabsContainer.append(tab);\n        const content = createTabContent(form, instrumentId, instruments[instrumentId]);\n        if (index === 0)\n            content.classList.add('active');\n        formContainer.append(content);\n    }\n    // Event delegation at experiments div level\n    experimentsDiv.addEventListener('click', (e) => {\n        if (e.target.classList.contains('tab')) {\n            switchTab(form, e.target.dataset.instrument);\n        }\n        else if (e.target.classList.contains('experiment-header') ||\n            e.target.closest('.experiment-header label')) {\n            const checkbox = e.currentTarget\n                .querySelector('.experiment-item')\n                ?.querySelector('.experiment-toggle');\n            if (checkbox &&\n                (e.target.tagName === 'LABEL' || e.target.closest('.experiment-header'))) {\n                const experimentItem = e.target.closest('.experiment-item');\n                if (experimentItem) {\n                    const checkboxInItem = experimentItem.querySelector('.experiment-toggle');\n                    if (checkboxInItem) {\n                        checkboxInItem.click();\n                    }\n                }\n            }\n        }\n    });\n    experimentsDiv.addEventListener('change', (e) => {\n        if (e.target.classList.contains('experiment-toggle')) {\n            const experimentItem = e.target.closest('.experiment-item');\n            const params = experimentItem.querySelector('.experiment-parameters');\n            params.style.display = e.target.checked ? 'block' : 'none';\n            form.onFormChange(collectFormData(form));\n        }\n    });\n    experimentsDiv.addEventListener('input', (e) => {\n        if (e.target.classList.contains('parameter-input')) {\n            form.onFormChange(collectFormData(form));\n        }\n    });\n}\n//# sourceMappingURL=fillForm.js.map","export function getStyle(id) {\n    return `#${id} {\n  max-width: 800px;\n  margin: 0 auto;\n  background-color: white;\n  padding: 20px;\n  border-radius: 8px;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n  box-sizing: border-box;\n}\n\n#${id} .tabs {\n  display: flex;\n  gap: 5px;\n  border-bottom: 2px solid #ddd;\n  margin-bottom: 20px;\n}\n\n#${id} .tab {\n  padding: 10px 20px;\n  background-color: #f0f0f0;\n  border: none;\n  border-radius: 5px 5px 0 0;\n  cursor: pointer;\n  font-size: 14px;\n  transition: background-color 0.3s;\n}\n\n#${id} .tab:hover {\n  background-color: #e0e0e0;\n}\n\n#${id} .tab.active {\n  background-color: #007bff;\n  color: white;\n}\n\n#${id} .tab-content {\n  display: none;\n}\n\n#${id} .tab-content.active {\n  display: block;\n}\n\n#${id} .experiment-item {\n  border: 1px solid #ddd;\n  border-radius: 5px;\n  padding: 15px;\n  margin-bottom: 10px;\n  background-color: #fafafa;\n}\n\n#${id} .experiment-header {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n}\n\n#${id} .experiment-toggle {\n  width: 18px;\n  height: 18px;\n  cursor: pointer;\n}\n\n#${id} .experiment-header label {\n  font-weight: bold;\n  color: #333;\n  user-select: none;\n}\n\n#${id} .experiment-parameters {\n  margin-top: 15px;\n  padding-left: 28px;\n}\n\n#${id} .parameter-item {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  margin-bottom: 10px;\n}\n\n#${id} .parameter-item label {\n  min-width: 150px;\n  color: #555;\n}\n\n#${id} .parameter-input {\n  flex: 1;\n  padding: 8px;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  font-size: 14px;\n}\n\n#${id} .parameter-input:focus {\n  outline: none;\n  border-color: #007bff;\n}\n`;\n}\n//# sourceMappingURL=getStyle.js.map","import { generateIconNMRFile } from 'screening';\nexport function updateIconNMR(form) {\n    const { experiments, iconNMROptions } = form;\n    const { user, name, title, holder, solvent, deleteExistingHolder, autoSubmit, } = iconNMROptions;\n    const data = {\n        user,\n        name,\n        title,\n        holder,\n        experiments: [],\n    };\n    for (const experiment of experiments) {\n        const parameters = [];\n        for (const key in experiment.parameters) {\n            parameters.push({ label: key, value: experiment.parameters[key] });\n        }\n        data.experiments.push({\n            experiment: experiment.name,\n            solvent,\n            parameters,\n        });\n    }\n    form.iconNMR = generateIconNMRFile([data], {\n        deleteExistingHolder,\n        autoSubmit,\n    });\n}\n//# sourceMappingURL=updateIconNMR.js.map","/**\n * Generate iconNMR text file from requests\n * @param requests - array of PlateRequest objects\n * @param options - options for generating the file\n * @returns iconNMR text file\n */\nexport function generateIconNMRFile(requests, options = {}) {\n    const { eol = '\\r\\n', deleteExistingHolder = false, autoSubmit = false, } = options;\n    const textFile = [];\n    for (const request of requests) {\n        let experimentNumberCounter = 1;\n        const { holder } = request;\n        if (deleteExistingHolder) {\n            textFile.push(`USER ${request.user}`, `HOLDER ${holder}`, 'DELETE'); // this is required to delete already existing entries\n        }\n        textFile.push(`USER ${request.user}`, `HOLDER ${holder}`);\n        if (!autoSubmit)\n            textFile.push('NO_SUBMIT');\n        textFile.push(`NAME ${request.name}`, `TITLE ${request.title}`);\n        for (const experiment of request.experiments) {\n            let experimentNumber = experiment.experimentNumber || experimentNumberCounter++;\n            textFile.push(`EXPNO ${experimentNumber++}`, `SOLVENT ${experiment.solvent}`, `EXPERIMENT ${experiment.experiment}`);\n            if (experiment.parameters && experiment.parameters.length > 0) {\n                const parameters = [];\n                for (const parameter of experiment.parameters) {\n                    parameters.push(parameter.label, parameter.value);\n                }\n                textFile.push(`PARAMETERS ${parameters.join(',')}`);\n            }\n        }\n        textFile.push('');\n    }\n    return textFile.join(eol);\n}\n//# sourceMappingURL=generateIconNMRFile.js.map","/* eslint-disable unicorn/prefer-structured-clone */\nimport { fillForm } from './fillForm.js';\nimport { getForm } from \"./getForm.js\";\nimport { updateIconNMR } from \"./updateIconNMR.js\";\nexport class ExperimentForm {\n    document;\n    id;\n    html;\n    instrument = null;\n    experiments = [];\n    iconNMR;\n    iconNMROptions;\n    onFormChange;\n    constructor(document, options = {}) {\n        this.document = document;\n        const form = getForm(options);\n        this.id = options.id ?? form.id;\n        this.html = form.html;\n        this.iconNMR = '';\n        this.iconNMROptions = {\n            user: 'defaultUser',\n            name: 'defaultName',\n            title: 'defaultTitle',\n            holder: 0,\n            solvent: 'defaultSolvent',\n            deleteExistingHolder: false,\n            autoSubmit: false,\n        };\n        updateIconNMR(this);\n        this.onFormChange = (formData) => {\n            this.instrument = formData.instrument;\n            this.experiments = JSON.parse(JSON.stringify(formData.experiments)).filter((experiment) => experiment.enabled);\n            updateIconNMR(this);\n            if (options.onFormChange) {\n                options.onFormChange(formData);\n            }\n            else {\n                console.log('Form changed:', formData);\n            }\n        };\n    }\n    updateIconNMROptions(options) {\n        this.iconNMROptions = options;\n        updateIconNMR(this);\n    }\n    fillForm() {\n        fillForm(this);\n    }\n}\n//# sourceMappingURL=ExperimentForm.js.map","import { getStyle } from \"./getStyle.js\";\nexport function getForm(options = {}) {\n    const { id = `instrument-${crypto.randomUUID()}` } = options;\n    return {\n        id,\n        html: `<style>${getStyle(id)}</style>\n<div id=\"${id}\">\n  <div id=\"tabs\" class=\"tabs\"></div>\n  <div id=\"form-container\" class=\"form-container\"></div>\n</div>`,\n    };\n}\n//# sourceMappingURL=getForm.js.map"],"names":["instruments","instrument1","solventMapping","CDCl3","defaultExperiments","cosy","experiments","experiment","enabled","parameters","label","value","instrument2","hsqc","collectFormData","form","formData","activeTab","document","querySelector","id","instrumentId","dataset","instrument","querySelectorAll","exp","checkbox","experimentData","name","checked","input","push","createExperimentElement","div","createElement","className","header","type","textContent","style","cursor","append","paramsDiv","display","param","paramDiv","paramLabel","createTabContent","instrumentData","content","fillForm","experimentsDiv","tabsContainer","formContainer","innerHTML","instrumentIds","Object","keys","index","entries","tab","classList","add","addEventListener","e","target","contains","toggle","onFormChange","switchTab","closest","currentTarget","tagName","experimentItem","checkboxInItem","click","getStyle","updateIconNMR","iconNMROptions","user","title","holder","solvent","deleteExistingHolder","autoSubmit","data","key","iconNMR","requests","options","eol","textFile","request","experimentNumberCounter","experimentNumber","length","parameter","join","generateIconNMRFile","html","constructor","this","crypto","randomUUID","getForm","JSON","parse","stringify","filter","console","log","updateIconNMROptions"],"mappings":";oPAAO,MAAMA,EAAc,CACzBC,YAAa,CACXC,eAAgB,CACdC,MAAO,QACP,UAAW,WAEbC,mBAAoB,CAClB,KAAM,WACN,MAAO,WACPC,KAAM,UAERC,YAAa,CACX,CACEC,WAAY,WACZC,SAAS,EACTC,WAAY,CACV,CAAEC,MAAO,KAAMC,MAAO,IACtB,CAAED,MAAO,KAAMC,MAAO,MAG1B,CACEJ,WAAY,WACZE,WAAY,CACV,CAAEC,MAAO,KAAMC,MAAO,IACtB,CAAED,MAAO,KAAMC,MAAO,IACtB,CAAED,MAAO,KAAMC,MAAO,MAG1B,CACEJ,WAAY,SACZE,WAAY,MAIlBG,YAAa,CACXV,eAAgB,CACdC,MAAO,eACP,UAAW,yBAEbC,mBAAoB,CAClB,KAAM,SACN,MAAO,UACPS,KAAM,QAERP,YAAa,CACX,CACEC,WAAY,SACZE,WAAY,CACV,CAAEC,MAAO,KAAMC,MAAO,IACtB,CAAED,MAAO,kBAAmBC,MAAO,MAGvC,CACEJ,WAAY,UACZE,WAAY,CACV,CAAEC,MAAO,KAAMC,MAAO,IACtB,CAAED,MAAO,KAAMC,MAAO,IACtB,CAAED,MAAO,KAAMC,MAAO,MAG1B,CACEJ,WAAY,OACZE,WAAY,OC5DpB,SAASK,EAAgBC,GACvB,MAAMC,EAAW,CAAA,EAEXC,EADiBF,EAAKG,SAASC,cAAc,IAAIJ,EAAKK,MAC3BD,cAAc,uBACzCE,EAAeJ,GAAWK,QAAQC,WAExC,IAAKF,EAAc,OAAOL,EAE1BA,EAASO,WAAaF,EACtBL,EAASV,YAAc,GAEvB,MAAMA,EAAcW,EAAUO,iBAAiB,oBAC/C,IAAK,MAAMC,KAAOnB,EAAa,CAC7B,MAAMoB,EAAWD,EAAIN,cAAc,sBAC7BQ,EAAiB,CACrBC,KAAMF,EAASJ,QAAQf,WACvBC,QAASkB,EAASG,QAClBpB,WAAY,CAAA,GAGd,IAAK,MAAMqB,KAASL,EAAID,iBAAiB,oBACvCG,EAAelB,WAAWqB,EAAMR,QAAQZ,OAASoB,EAAMnB,MAGzDK,EAASV,YAAYyB,KAAKJ,EAC5B,CAEA,OAAOX,CACT,CAEA,SAASgB,EAAwBd,EAAUX,GACzC,MAAM0B,EAAMf,EAASgB,cAAc,OACnCD,EAAIE,UAAY,kBAEhB,MAAMC,EAASlB,EAASgB,cAAc,OACtCE,EAAOD,UAAY,oBAEnB,MAAMT,EAAWR,EAASgB,cAAc,SACxCR,EAASW,KAAO,WAChBX,EAASS,UAAY,oBACrBT,EAASJ,QAAQf,WAAaA,EAAWA,WACzCmB,EAASG,QAAUtB,EAAWC,UAAW,EAEzC,MAAME,EAAQQ,EAASgB,cAAc,SACrCxB,EAAM4B,YAAc/B,EAAWA,WAC/BG,EAAM6B,MAAMC,OAAS,UAErBJ,EAAOK,OAAOf,GACdU,EAAOK,OAAO/B,GAEd,MAAMgC,EAAYxB,EAASgB,cAAc,OACzCQ,EAAUP,UAAY,wBACtBO,EAAUH,MAAMI,QAAUpC,EAAWC,QAAmB,QAAU,OAElE,IAAK,MAAMoC,KAASrC,EAAWE,WAAY,CACzC,MAAMoC,EAAW3B,EAASgB,cAAc,OACxCW,EAASV,UAAY,iBAErB,MAAMW,EAAa5B,EAASgB,cAAc,SAC1CY,EAAWR,YAAcM,EAAMlC,MAE/B,MAAMoB,EAAQZ,EAASgB,cAAc,SACrCJ,EAAMO,KAAO,OACbP,EAAMK,UAAY,kBAClBL,EAAMR,QAAQZ,MAAQkC,EAAMlC,MAC5BoB,EAAMnB,MAAQiC,EAAMjC,MAEpBkC,EAASJ,OAAOK,GAChBD,EAASJ,OAAOX,GAChBY,EAAUD,OAAOI,EACnB,CAKA,OAHAZ,EAAIQ,OAAOL,GACXH,EAAIQ,OAAOC,GAEJT,CACT,CAEA,SAASc,EAAiBhC,EAAMM,EAAc2B,GAC5C,MAAMC,EAAUlC,EAAKG,SAASgB,cAAc,OAC5Ce,EAAQd,UAAY,cACpBc,EAAQ3B,QAAQC,WAAaF,EAE7B,IAAK,MAAMd,KAAcyC,EAAe1C,YACtC2C,EAAQR,OAAOT,EAAwBjB,EAAKG,SAAUX,IAGxD,OAAO0C,CACT,CAkBM,SAAUC,EAASnC,GACvB,MAAMoC,EAAiBpC,EAAKG,SAASC,cAAc,IAAIJ,EAAKK,MACtDgC,EAAgBD,EAAehC,cAAc,SAC7CkC,EAAgBF,EAAehC,cAAc,mBAEnDiC,EAAcE,UAAY,GAC1BD,EAAcC,UAAY,GAE1B,MAAMC,EAAgBC,OAAOC,KAAKzD,GAElC,IAAK,MAAO0D,EAAOrC,KAAiBkC,EAAcI,UAAW,CAC3D,MAAMC,EAAM7C,EAAKG,SAASgB,cAAc,UACxC0B,EAAIzB,UAAY,MAChByB,EAAItC,QAAQC,WAAaF,EACzBuC,EAAItB,YAAcjB,EAEJ,IAAVqC,GAAaE,EAAIC,UAAUC,IAAI,UAEnCV,EAAcX,OAAOmB,GAErB,MAAMX,EAAUF,EACdhC,EACAM,EACArB,EAAYqB,IAEA,IAAVqC,GAAaT,EAAQY,UAAUC,IAAI,UAEvCT,EAAcZ,OAAOQ,EACvB,CAGAE,EAAeY,iBAAiB,QAAUC,IACxC,GAAIA,EAAEC,OAAOJ,UAAUK,SAAS,QAhDpC,SAAmBnD,EAAMM,GACvB,MAAM8B,EAAiBpC,EAAKG,SAASC,cAAc,IAAIJ,EAAKK,MAC5D,IAAK,MAAMwC,KAAOT,EAAe3B,iBAAiB,QAChDoC,EAAIC,UAAUM,OAAO,SAAUP,EAAItC,QAAQC,aAAeF,GAG5D,IAAK,MAAM4B,KAAWE,EAAe3B,iBAAiB,gBACpDyB,EAAQY,UAAUM,OAChB,SACAlB,EAAQ3B,QAAQC,aAAeF,GAInCN,EAAKqD,aAAatD,EAAgBC,GACpC,CAmCMsD,CAAUtD,EAAMiD,EAAEC,OAAO3C,QAAQC,iBAC5B,GACLyC,EAAEC,OAAOJ,UAAUK,SAAS,sBAC5BF,EAAEC,OAAOK,QAAQ,4BACjB,CACA,MAAM5C,EAAWsC,EAAEO,cAChBpD,cAAc,qBACbA,cAAc,sBAClB,GACEO,IACsB,UAArBsC,EAAEC,OAAOO,SAAuBR,EAAEC,OAAOK,QAAQ,uBAClD,CACA,MAAMG,EAAiBT,EAAEC,OAAOK,QAAQ,oBACxC,GAAIG,EAAgB,CAClB,MAAMC,EACJD,EAAetD,cAAc,sBAC3BuD,GACFA,EAAeC,OAEnB,CACF,CACF,IAGFxB,EAAeY,iBAAiB,SAAWC,IACzC,GAAIA,EAAEC,OAAOJ,UAAUK,SAAS,qBAAsB,CAC7BF,EAAEC,OAAOK,QAAQ,oBACVnD,cAAc,0BACrCoB,MAAMI,QAAUqB,EAAEC,OAAOpC,QAAU,QAAU,OACpDd,EAAKqD,aAAatD,EAAgBC,GACpC,IAGFoC,EAAeY,iBAAiB,QAAUC,IACpCA,EAAEC,OAAOJ,UAAUK,SAAS,oBAC9BnD,EAAKqD,aAAatD,EAAgBC,KAGxC,CCnLM,SAAU6D,EAASxD,GACvB,MAAO,IAAIA,mMAUVA,6GAOAA,sMAUAA,uDAIAA,yEAKAA,6CAIAA,qDAIAA,yJAQAA,yFAMAA,sFAMAA,mGAMAA,iFAKAA,8GAOAA,yEAKAA,kIAQAA,6EAKH,CCxFM,SAAUyD,EAAc9D,GAC5B,MAAMT,YAAEA,EAAWwE,eAAEA,GAAmB/D,GAElCgE,KACJA,EAAInD,KACJA,EAAIoD,MACJA,EAAKC,OACLA,EAAMC,QACNA,EAAOC,qBACPA,EAAoBC,WACpBA,GACEN,EAEEO,EAAsB,CAC1BN,OACAnD,OACAoD,QACAC,SACA3E,YAAa,IAEf,IAAK,MAAMC,KAAcD,EAAa,CACpC,MAAMG,EAAa,GACnB,IAAK,MAAM6E,KAAO/E,EAAWE,WAC3BA,EAAWsB,KAAK,CAAErB,MAAO4E,EAAK3E,MAAOJ,EAAWE,WAAW6E,KAE7DD,EAAK/E,YAAYyB,KAAK,CACpBxB,WAAYA,EAAWqB,KACvBsD,UACAzE,cAEJ,CAEAM,EAAKwE,QCnBD,SACJC,EACAC,EAAsC,IAEtC,MAAMC,IACJA,EAAM,OAAMP,qBACZA,GAAuB,EAAKC,WAC5BA,GAAa,GACXK,EACEE,EAAW,GACjB,IAAK,MAAMC,KAAWJ,EAAU,CAC9B,IAAIK,EAA0B,EAC9B,MAAMZ,OAAEA,GAAWW,EACfT,GACFQ,EAAS5D,KAAK,QAAQ6D,EAAQb,OAAQ,UAAUE,IAAU,UAE5DU,EAAS5D,KAAK,QAAQ6D,EAAQb,OAAQ,UAAUE,KAC3CG,GAAYO,EAAS5D,KAAK,aAC/B4D,EAAS5D,KAAK,QAAQ6D,EAAQhE,OAAQ,SAASgE,EAAQZ,SACvD,IAAK,MAAMzE,KAAcqF,EAAQtF,YAAa,CAC5C,IAAIwF,EACFvF,EAAWuF,kBAAoBD,IAMjC,GALAF,EAAS5D,KACP,SAAS+D,IACT,WAAWvF,EAAW2E,UACtB,cAAc3E,EAAWA,cAEvBA,EAAWE,YAAcF,EAAWE,WAAWsF,OAAS,EAAG,CAC7D,MAAMtF,EAAa,GACnB,IAAK,MAAMuF,KAAazF,EAAWE,WACjCA,EAAWsB,KAAKiE,EAAUtF,MAAOsF,EAAUrF,OAE7CgF,EAAS5D,KAAK,cAActB,EAAWwF,KAAK,OAC9C,CACF,CACAN,EAAS5D,KAAK,GAChB,CACA,OAAO4D,EAASM,KAAKP,EACvB,CDnBiBQ,CAAoB,CAACb,GAAO,CACzCF,uBACAC,cAEJ,kBE7BM,MACJlE,SACAE,GACA+E,KACA5E,WAA4B,KAC5BjB,YAAqB,GACrBiF,QACAT,eAEAV,aAEAgC,WAAAA,CAAYlF,EAAoBuE,EAAiC,IAC/DY,KAAKnF,SAAWA,EAChB,MAAMH,EC3BJ,SAAkB0E,EAA0B,IAChD,MAAMrE,GAAEA,EAAK,cAAckF,OAAOC,gBAAmBd,EACrD,MAAO,CACLrE,KACA+E,KAAM,UAAUvB,EAASxD,wBAClBA,8GAKX,CDiBiBoF,CAAQf,GACrBY,KAAKjF,GAAKqE,EAAQrE,IAAML,EAAKK,GAC7BiF,KAAKF,KAAOpF,EAAKoF,KACjBE,KAAKd,QAAU,GACfc,KAAKvB,eAAiB,CACpBC,KAAM,cACNnD,KAAM,cACNoD,MAAO,eACPC,OAAQ,EACRC,QAAS,iBACTC,sBAAsB,EACtBC,YAAY,GAEdP,EAAcwB,MAEdA,KAAKjC,aAAgBpD,IACnBqF,KAAK9E,WAAaP,EAASO,WAC3B8E,KAAK/F,YAAcmG,KAAKC,MACtBD,KAAKE,UAAU3F,EAASV,cACxBsG,OAAQrG,GAAoBA,EAAWC,SAEzCqE,EAAcwB,MACVZ,EAAQrB,aACVqB,EAAQrB,aAAapD,GAErB6F,QAAQC,IAAI,gBAAiB9F,GAGnC,CAEA+F,oBAAAA,CAAqBtB,GACnBY,KAAKvB,eAAiBW,EACtBZ,EAAcwB,KAChB,CAEAnD,QAAAA,GACEA,EAASmD,KACX","x_google_ignoreList":[4]}