UNPKG

409 kBSource Map (JSON)View Raw
1{"version":3,"file":"bin.js","sources":["clean.js","add-to-map-set.js","morph/fonts.js","morph/react-dom/morph-font.js","morph/react-native/morph-fonts.js","relativise.js","ensure-dir.js","fonts.js","match-files.js","get-files.js","add-file-if-it-doesnt-exist.js","ensure-file.js","ensure-data.js","get-view-relative-to-view.js","ensure-flow.js","ensure-is-before.js","ensure-is-hovered.js","ensure-is-media.js","ensure-tools.js","make-get-system-import.js","morph/react/block-add-test-id-prop.js","morph/react/block-add-view-path.js","morph/get-unit.js","morph/react/wrap.js","morph/react/safe.js","morph/utils.js","morph/react-dom/block-capture.js","morph/react/property-rest.js","morph/react/block-column.js","morph/react/block-explicit-children.js","morph/react-dom/block-go-to.js","morph/react/block-group.js","morph/react/block-in-list.js","morph/react/block-list.js","morph/react/block-maybe-skip.js","morph/react/block-name.js","morph/react/block-name-handle-table.js","morph/react-dom/get-block-name.js","morph/react-dom/block-name.js","morph/react/block-off-when.js","morph/react-dom/properties-class-name.js","morph/react-dom/properties-image.js","morph/react/properties-style.js","morph/react-dom/properties-style.js","morph/react/property-format.js","morph/react-dom/property-onclick-user-select.js","morph/react/property-ref.js","morph/react/property-style.js","morph/react/property-text.js","morph/react/property-view-path.js","morph/react-dom/is-valid-property-for-block.js","morph/react-dom/block-properties.js","morph/react/block-set-test-id.js","morph/react/block-table.js","morph/react-dom/block.js","morph/react-dom/get-style-for-property.js","morph/react-dom/get-styles.js","morph/react-dom/get-value-for-property.js","morph/react/make-get-import.js","morph/react/restricted-names.js","morph/react/get-body.js","morph/react/get-default-props.js","morph/react/svg.js","morph/react/get-dependencies.js","morph/react/get-flatlist.js","morph/react/to-component.js","morph/walk.js","morph/react-dom.js","morph/react-native/block-background-image.js","morph/react-native/block-capture.js","morph/react-native/get-block-name.js","morph/react-native/block-name.js","morph/react-native/properties-style.js","morph/react-native/is-valid-property-for-block.js","morph/react-native/block-properties.js","morph/react-native/block-svg.js","morph/react-native/block-wrap.js","morph/react-native/block.js","morph/react-native/get-style-for-property.js","morph/react-native/get-styles.js","morph/react-native/get-value-for-property.js","morph/react-native/maybe-uses-style-sheet.js","morph/react-native.js","morph/react-pdf.js","morphers.js","maybe-morph.js","morph-all-views.js","maybe-print-warnings.js","parse/prop-is-style.js","parse/prop-is-number.js","parse/helpers.js","parse/get-loc.js","parse/get-tags.js","parse/index.js","sort-sets-in-map.js","parse-views.js","get-view-id-from-file.js","process-view-custom-files.js","process-view-files.js","make-morpher.js","get-points-of-use.js","watch-files.js","watch.js","cli.js"],"sourcesContent":["import del from 'del'\nimport deleteEmpty from 'delete-empty'\nimport glob from 'fast-glob'\nimport path from 'path'\nimport trash from 'trash'\n\nexport default async function clean(src, verbose, all = false) {\n let views = await glob(['**/view.blocks', '**/view.js'], {\n cwd: src,\n ignore: ['*node_modules*'],\n })\n\n let map = {}\n views.forEach(item => {\n let dir = path.dirname(item)\n if (!map[dir]) {\n map[dir] = new Set()\n }\n map[dir].add(path.basename(item))\n })\n\n let empty = Object.keys(map)\n .filter(key => map[key].size === 1 && map[key].has('view.js'))\n .map(item => path.join(src, item))\n\n await trash(empty)\n\n if (all) {\n await del(\n [\n '**/view.js',\n 'Data/ViewsData.js',\n `DesignSystem/Fonts/*.js`,\n 'Logic/ViewsFlow.js',\n 'Logic/useIsMedia.js',\n 'Logic/useIsBefore.js',\n 'Logic/useIsHovered.js',\n 'Logic/ViewsTools.js',\n ].map(item => path.join(src, item))\n )\n\n let deleted = await deleteEmpty(src)\n if (verbose) {\n deleted.forEach(d => console.log(`x ${d}`))\n }\n }\n}\n","export default function addToMapSet(map, key, value) {\n if (!map.has(key)) {\n map.set(key, new Set())\n }\n map.get(key).add(value)\n}\n","import list from 'google-fonts-complete/api-response.json'\n\nlet getWeights = variants =>\n variants\n .filter(v => !v.includes('italic'))\n .map(v => (v === 'regular' ? 400 : v))\n\nlet all = list.map(font => ({\n category: font.category,\n value: font.family,\n weights: getWeights(font.variants),\n}))\n\nlet byName = {}\nall.forEach(f => (byName[f.value] = f))\n\nexport let fontFamily = all.map(f => f.value)\n\nexport let isGoogleFont = family => !!byName[family]\n\nexport let maybeAddFallbackFont = f => {\n let font = byName[f]\n\n return font && font.category ? `${f}, ${font.category}` : f\n}\n","import { isGoogleFont } from '../fonts.js'\n\nexport default (font, sources) => {\n let body\n\n if (isGoogleFont(font.family)) {\n body = `injectGlobal(\"@import url('https://fonts.googleapis.com/css?family=${font.family.replace(\n /\\s/g,\n '+'\n )}:${font.weight}${font.style === 'italic' ? 'i' : ''}');body{}\")`\n } else {\n body = `${sources\n .map(src => `import ${src.type} from '${src.file}'`)\n .join('\\n')}\n\ninjectGlobal(\\`@font-face {\n font-family: '${font.family}';\n font-style: ${font.style};\n font-weight: ${font.weight};\n src: ${sources\n .map(src => `url(\\${${src.type}}) format('${src.type}')`)\n .join(', ')};\n}\\`)`\n }\n\n return `import { injectGlobal } from 'emotion'\\n${body}`\n}\n","export default (font, sources) => {\n // TODO implement\n return `export default \"${font.id}\"`\n\n // let body = `export default {\\n`\n // fonts.forEach(font => {\n // body += `${sources\n // .map(src => `'${font.id}': require('./${src.file}'),\\n`)\n // .join(',')}`\n // })\n // return `${body}}`\n}\n","import path from 'path'\n\nexport default function relativise(from, to, src) {\n let r = path.relative(from, to).replace(/\\\\/g, '/')\n let p = r.substr(r.startsWith('../..') ? 3 : 1)\n\n if (p.startsWith('..')) {\n p = to.replace(`${src}/`, '')\n }\n\n return p\n}\n","import { promises as fs } from 'fs'\n\nexport default async function ensureDir(dir) {\n try {\n await fs.mkdir(dir, { recursive: true })\n } catch (error) {}\n}\n","import addToMapSet from './add-to-map-set.js'\nimport morphFontAsReactDom from './morph/react-dom/morph-font.js'\nimport morphFontAsReactNative from './morph/react-native/morph-fonts.js'\nimport path from 'path'\nimport sort from 'bubblesort'\nimport relativise from './relativise.js'\nimport ensureDir from './ensure-dir.js'\n\nlet morphFont = {\n 'react-dom': morphFontAsReactDom,\n 'react-native': morphFontAsReactNative,\n 'react-pdf': morphFontAsReactNative,\n}\n\nexport async function ensureFontsDirectory(src) {\n await ensureDir(path.join(src, 'DesignSystem', 'Fonts'))\n}\n\nexport let getFontId = file => path.basename(file, path.extname(file))\n\nlet fontsOrder = ['eot', 'woff2', 'woff', 'ttf', 'svg', 'otf']\n\nlet sortFonts = fonts => {\n return new Set(\n sort(\n [...fonts],\n (a, b) => fontsOrder.indexOf(b.type) - fontsOrder.indexOf(a.type)\n )\n )\n}\n\nexport function processCustomFonts({ customFonts, filesFontCustom }) {\n for (let file of filesFontCustom) {\n addToMapSet(customFonts, getFontId(file), file)\n }\n for (let [id, fonts] of customFonts) {\n customFonts.set(id, sortFonts(fonts))\n }\n}\n\nexport function morphAllFonts({\n as,\n customFonts,\n filesView,\n src,\n viewsToFiles,\n}) {\n let fontsDirectory = path.join(src, 'DesignSystem', 'Fonts')\n let fontsInUse = new Set()\n\n let mapCustomFont = file => ({\n type: FONT_TYPES[path.extname(file)],\n file: file.replace(fontsDirectory, '.'),\n })\n\n for (let file of filesView) {\n let view = viewsToFiles.get(file)\n\n if (view.custom) continue\n\n view.parsed.fonts.forEach(font => {\n fontsInUse.add(font.id)\n })\n }\n\n return [...fontsInUse].map(font => {\n let [family, weight, style = 'normal'] = font.split('-')\n\n let customFontSources = []\n if (customFonts.has(font)) {\n customFontSources = [...customFonts.get(font)].map(mapCustomFont)\n }\n\n return {\n file: path.join(src, 'DesignSystem', 'Fonts', `${font}.js`),\n content: morphFont[as](\n {\n id: font,\n family,\n style,\n weight,\n },\n customFontSources\n ),\n }\n })\n}\n\n// let removeFont = file => {\n// let id = getFontId(file)\n// instance.customFonts = instance.customFonts.filter(font => font.id !== id)\n// }\n\nlet FONT_TYPES = {\n '.otf': 'opentype',\n '.eot': 'eot',\n '.svg': 'svg',\n '.ttf': 'truetype',\n '.woff': 'woff',\n '.woff2': 'woff2',\n}\n\nexport let makeGetFontImport = src => (font, view) =>\n `import \"${relativise(\n view.file,\n path.join(src, 'DesignSystem', 'Fonts', `${font}.js`)\n )}\"`\n\n// let isFont = f => Object.keys(FONT_TYPES).includes(path.extname(f))\n","import mm from 'micromatch'\n\nlet PATTERNS = {\n filesView: ['**/App/**/view.blocks', '**/DesignSystem/**/view.blocks'],\n filesViewLogic: ['**/App/**/logic.js', '**/DesignSystem/**/logic.js'],\n filesViewCustom: ['**/DesignSystem/**/react.js'],\n filesFontCustom: [\n '**/DesignSystem/Fonts/*.eot',\n '**/DesignSystem/Fonts/*.otf',\n '**/DesignSystem/Fonts/*.ttf',\n '**/DesignSystem/Fonts/*.svg',\n '**/DesignSystem/Fonts/*.woff',\n '**/DesignSystem/Fonts/*.woff2',\n ],\n}\n\nexport let isViewFile = file => mm.isMatch(file, PATTERNS.filesView)\nexport let isViewLogicFile = file => mm.isMatch(file, PATTERNS.filesViewLogic)\nexport let isViewCustomFile = file => mm.isMatch(file, PATTERNS.filesViewCustom)\nexport let isFontCustomFile = file => mm.isMatch(file, PATTERNS.filesFontCustom)\n\nexport let MATCH = ['App/**', 'DesignSystem/**']\n\nexport function getMatchesPerPattern(files) {\n return Object.fromEntries(\n Object.entries(PATTERNS).map(([key, match]) => [\n key,\n new Set(mm(files, match)),\n ])\n )\n}\n","import { getMatchesPerPattern, MATCH } from './match-files.js'\nimport glob from 'fast-glob'\n\nexport default async function getFiles(src) {\n let files = await glob(MATCH, {\n absolute: true,\n cwd: src,\n ignore: ['**/view.js'],\n })\n\n return getMatchesPerPattern(files)\n}\n","import ensureDir from './ensure-dir.js'\nimport { existsSync, promises as fs } from 'fs'\nimport path from 'path'\n\nexport default async function addFileIfItDoesntExist(file, content) {\n await ensureDir(path.dirname(file))\n\n if (existsSync(file)) return\n\n return fs.writeFile(file, content, 'utf-8')\n}\n","import ensureDir from './ensure-dir.js'\nimport path from 'path'\n// import prettier from 'prettier'\n\nexport default async function ensureFile({ file, content }) {\n await ensureDir(path.dirname(file))\n\n return {\n file,\n content,\n // content: prettier.format(content, {\n // parser: 'babel',\n // singleQuote: true,\n // trailingComma: 'es5',\n // }),\n }\n}\n","import addFileIfItDoesntExist from './add-file-if-it-doesnt-exist.js'\nimport ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet DATA = `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-data.js\nimport * as fromValidate from './validate.js'\nimport * as fromFormat from './format.js'\n// import get from 'dlv';\nimport get from 'lodash/get'\nimport produce from 'immer'\n// import set from 'dset';\nimport set from 'lodash/set'\nimport React, {\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\n\nlet SET = 'data/SET'\nlet SET_FN = 'data/SET_FN'\nlet RESET = 'data/RESET'\nlet FORCE_REQUIRED = 'data/FORCE_REQUIRED'\nlet reducer = produce((draft, action) => {\n switch (action.type) {\n case SET: {\n set(draft, action.path, action.value)\n break\n }\n\n case SET_FN: {\n action.fn(draft, set, get)\n break\n }\n\n case RESET: {\n return action.value\n }\n\n case FORCE_REQUIRED: {\n draft._forceRequired = true\n break\n }\n\n default: {\n throw new Error(\n \\`Unknown action type \"\\${action.type}\" in useData reducer.\\`\n )\n }\n }\n})\n\nlet DataContexts = {\n default: React.createContext([]),\n}\nexport function DataProvider(props) {\n if (!props.context) {\n throw new Error(\n \\`You're missing the context value in DataProvider. Eg: <DataProvider context=\"namespace\" ...\\`\n )\n }\n if (!(props.context in DataContexts)) {\n DataContexts[props.context] = React.createContext([])\n DataContexts[props.context].displayName = props.context\n }\n let Context = DataContexts[props.context]\n\n let [state, dispatch] = useReducer(reducer, props.value)\n let isSubmitting = useRef(false)\n let shouldCallOnChange = useRef(false)\n\n useEffect(() => {\n if (isSubmitting.current) return\n\n shouldCallOnChange.current = false\n dispatch({ type: RESET, value: props.value })\n }, [props.value]) // eslint-disable-line\n // ignore dispatch\n\n let value = useMemo(() => {\n async function onSubmit(args) {\n if (isSubmitting.current) return\n isSubmitting.current = true\n\n try {\n let res = await props.onSubmit(state, args)\n isSubmitting.current = false\n\n if (!res) return\n } catch (error) {\n isSubmitting.current = false\n }\n\n dispatch({ type: FORCE_REQUIRED })\n }\n\n return [state, dispatch, onSubmit]\n }, [state, props.onSubmit]) // eslint-disable-line\n // the linter says we need props when props.onSubmit is already there\n\n // keep track of props.onChange outside of the following effect to\n // prevent loops. Making the function useCallback didn't work\n let onChange = useRef(props.onChange)\n useEffect(() => {\n onChange.current = props.onChange\n }, [props.onChange])\n\n useEffect(() => {\n if (!shouldCallOnChange.current) {\n shouldCallOnChange.current = true\n return\n }\n\n onChange.current(state, fn => dispatch({ type: SET_FN, fn }))\n }, [state])\n\n return <Context.Provider value={value}>{props.children}</Context.Provider>\n}\nDataProvider.defaultProps = {\n context: 'default',\n onChange: () => {},\n onSubmit: () => {},\n}\n\nexport function useData({\n path = null,\n context = 'default',\n formatIn = null,\n formatOut = null,\n validate = null,\n validateRequired = false,\n} = {}) {\n if (process.env.NODE_ENV === 'development') {\n if (!(context in DataContexts)) {\n throw new Error(\n \\`\"\\${context}\" isn't a valid Data context. Check that you have <DataProvider context=\"\\${context}\" value={data}> in the component that defines the context for this story.\\`\n )\n }\n\n if (formatIn && !(formatIn in fromFormat)) {\n throw new Error(\n \\`\"\\${formatIn}\" function doesn't exist or is not exported in Data/format.js\\`\n )\n }\n\n if (formatOut && !(formatOut in fromFormat)) {\n throw new Error(\n \\`\"\\${formatOut}\" function doesn't exist or is not exported in Data/format.js\\`\n )\n }\n\n if (validate && !(validate in fromValidate)) {\n throw new Error(\n \\`\"\\${validate}\" function doesn't exist or is not exported in Data/validators.js\\`\n )\n }\n }\n\n let contextValue = useContext(DataContexts[context])\n let touched = useRef(false)\n\n return useMemo(() => {\n let [data, dispatch, onSubmit] = contextValue\n\n if (!data) {\n if (process.env.NODE_ENV === 'development') {\n console.error(\n 'Check that you have <DataProvider value={data}> in the component that defines the data for this story.',\n {\n path,\n formatIn,\n formatOut,\n validate,\n validateRequired,\n data,\n }\n )\n }\n return {}\n }\n\n let rawValue = path ? get(data, path) : data\n let value = rawValue\n if (path && formatIn) {\n value = fromFormat[formatIn](rawValue, data)\n }\n\n let isValidInitial = true\n if (validate) {\n isValidInitial = fromValidate[validate](rawValue, value, data)\n }\n let isValid = touched.current || (validateRequired && data._forceRequired)? isValidInitial : true\n\n function onChange(value, changePath = path) {\n touched.current = !!value\n\n if (typeof value === 'function') {\n dispatch({ type: SET_FN, fn: value })\n } else if (!changePath) {\n dispatch({ type: RESET, value })\n } else {\n dispatch({\n type: SET,\n path: changePath,\n value: formatOut ? fromFormat[formatOut](value, data) : value,\n })\n }\n }\n\n return {\n onChange,\n onSubmit,\n value,\n isValid,\n isValidInitial,\n isInvalid: !isValid,\n isInvalidInitial: !isValidInitial,\n }\n }, [contextValue, path, formatIn, formatOut, validateRequired, validate])\n}\n`\n\nexport default async function ensureData({ src }) {\n await Promise.all([\n addFileIfItDoesntExist(\n path.join(src, 'Data', 'format.js'),\n '// export functions to use in data format'\n ),\n addFileIfItDoesntExist(\n path.join(src, 'Data', 'validate.js'),\n '// export functions to use in data validate'\n ),\n ])\n\n return ensureFile({\n file: path.join(src, 'Data', 'ViewsData.js'),\n content: DATA,\n })\n}\n","import path from 'path'\n\nexport default function getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n}) {\n let importCandidates = viewsById.get(id)\n if (!importCandidates) {\n return null\n }\n importCandidates = new Set([...importCandidates])\n importCandidates.delete(view.file)\n\n let [importViewFile] = importCandidates\n if (importCandidates.size > 1) {\n let pathToView = path.dirname(view.file)\n\n let maybeFileViewInside = path\n .join(pathToView, id, 'view.blocks')\n .replace(/\\\\/g, '/')\n let maybeFileViewCustomInside = path\n .join(pathToView, id, 'react.js')\n .replace(/\\\\/g, '/')\n if (importCandidates.has(maybeFileViewInside)) {\n importViewFile = maybeFileViewInside\n } else if (importCandidates.has(maybeFileViewCustomInside)) {\n importViewFile = maybeFileViewCustomInside\n }\n }\n\n let importView = viewsToFiles.get(importViewFile)\n\n if (\n !importView.custom &&\n view.parsed.view.isStory &&\n importView.parsed.view.isStory\n ) {\n let pathToView = path.dirname(view.file)\n let maybeFileViewInside = path\n .join(pathToView, id, 'view.blocks')\n .replace(/\\\\/g, '/')\n\n if (importViewFile !== maybeFileViewInside) {\n return null\n }\n }\n\n return importView\n}\n","import ensureFile from './ensure-file.js'\nimport getViewRelativeToView from './get-view-relative-to-view.js'\nimport path from 'path'\n\nfunction ensureFirstStoryIsOn(flow, key, stories) {\n if (!stories.has(key)) return\n\n let story = flow.get(key)\n if (story && story.stories.size > 0) {\n let index = 0\n for (let id of story.stories) {\n if (index === 0 || !story.isSeparate) {\n stories.add(id)\n }\n index++\n ensureFirstStoryIsOn(flow, id, stories)\n }\n }\n}\n\nfunction makeFlow({ tools, viewsById, viewsToFiles }) {\n let flowMap = new Map()\n let flowMapStr = []\n\n for (let view of viewsToFiles.values()) {\n if (!view || view.custom || !view.parsed.view.isStory) continue\n\n let states = []\n for (let id of view.parsed.view.views) {\n let viewInView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n\n if (viewInView && !viewInView.custom && viewInView.parsed.view.isStory) {\n states.push(viewInView.parsed.view.viewPath) // `${pathToViewId}/${id}`)\n }\n }\n\n let isSeparate = view.parsed.view.flow === 'separate'\n let parent = view.parsed.view.viewPathParent\n\n flowMapStr.push(\n `['${view.parsed.view.viewPath}', { isSeparate: ${isSeparate}, parent: '${\n parent === '/' ? '' : parent\n }',\n stories: new Set(${states.length > 0 ? JSON.stringify(states) : ''}) }]`\n )\n flowMap.set(view.parsed.view.viewPath, {\n parent,\n isSeparate,\n stories: new Set(states),\n })\n }\n\n let topStory = '/App'\n let initialState = new Set([topStory])\n ensureFirstStoryIsOn(flowMap, topStory, initialState)\n\n return `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-flow.js\n\nimport React, { useCallback, useContext, useEffect, useReducer } from 'react'\n${tools ? \"import ViewsTools from './ViewsTools.js'\" : ''}\n\nexport let flow = new Map([\n${flowMapStr.join(',\\n')}\n])\n\nlet TOP_STORY = \"${topStory}\"\n\nfunction ensureFirstStoryIsOn(key, stories) {\n if (!stories.has(key)) return\n\n let story = flow.get(key)\n if (story.stories.size > 0) {\n let index = 0\n let canAdd = intersection(stories, story.stories).size === 0\n for (let id of story.stories) {\n if ((canAdd && index === 0) || !story.isSeparate) {\n stories.add(id)\n }\n index++\n ensureFirstStoryIsOn(id, stories)\n }\n }\n}\n\nfunction ensureParents(key, stories) {\n let story = flow.get(key)\n if (!story) {\n console.error(\\`View \"\\${key}\" is missing its parent\\`)\n return\n }\n if (!story.parent) {\n return\n }\n\n stories.add(story.parent)\n ensureParents(story.parent, stories)\n}\n\nfunction getAllChildrenOf(key, children) {\n if (!flow.has(key)) return\n\n let story = flow.get(key)\n for (let id of story.stories) {\n children.add(id)\n getAllChildrenOf(id, children)\n }\n}\n\n\nlet intersection = (a, b) => new Set([...a].filter(ai => b.has(ai)))\nlet difference = (a, b) => new Set([...a].filter(ai => !b.has(ai)))\n\nfunction getNextFlow(key, state) {\n if (state.has(key)) return state\n\n let next = new Set([key])\n\n ensureFirstStoryIsOn(key, next)\n ensureParents(key, next)\n\n let diffIn = difference(next, state)\n let diffOut = new Set()\n\n difference(state, next).forEach(id => {\n let story = flow.get(id)\n if (!story) {\n console.debug({ type: 'views/flow/missing-story', id })\n diffOut.add(id)\n return\n }\n\n if (state.has(story.parent)) {\n let parent = flow.get(story.parent)\n if (intersection(parent.stories, diffIn).size > 0) {\n diffOut.add(id)\n let children = new Set()\n getAllChildrenOf(id, children)\n children.forEach(cid => diffOut.add(cid))\n }\n }\n })\n\n let nextState = new Set([...difference(state, diffOut), ...diffIn])\n ensureFirstStoryIsOn(TOP_STORY, nextState)\n return new Set([...nextState].sort())\n}\n\nlet MAX_ACTIONS = 10000\nlet SYNC = 'flow/SYNC'\nlet SET = 'flow/SET'\n\nlet Context = React.createContext([{ actions: [], flow: new Set() }, () => {}])\nexport let useFlowState = () => useContext(Context)[0]\nexport let useFlow = () => useFlowState().flow\nexport let useSetFlowTo = () => {\n let [, dispatch] = useContext(Context)\n return useCallback(id => dispatch({ type: SET, id }), []) // eslint-disable-line\n // ignore dispatch\n}\n\nfunction getNextActions(state, id) {\n return [id, ...state.actions].slice(0, MAX_ACTIONS)\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n ${\n tools\n ? `case SYNC: {\n console.debug({ type: 'views/flow/sync', id: action.id });\n\n return {\n flow: new Set(action.flow),\n actions: getNextActions(state, action.id)\n }\n }`\n : ''\n }\n\n case SET: {\n if (process.env.NODE_ENV === 'development') {\n console.debug({ type: 'views/flow/set', id: action.id })\n\n if (!flow.has(action.id)) {\n console.debug({ type: 'views/flow/invalid-story', id: action.id, availableStories: flow })\n throw new Error(\n \\`Story \"$\\{action.id}\" doesn't exist. See the valid stories logged above this error.\\`\n )\n }\n\n ${\n tools\n ? `if (ViewsTools.SYNC_ONE_WAY) {\n return action.id.startsWith(ViewsTools.SYNC_ONE_WAY)\n ? {\n flow: getNextFlow(action.id, state.flow),\n actions: state.actions,\n }\n : state;\n }`\n : ''\n }\n }\n\n if (state.actions[0] === action.id) {\n if (process.env.NODE_ENV === 'development') {\n console.debug({ type: 'views/flow/already-set-as-last-action-ignoring', id: action.id, actions: state.actions })\n }\n return state\n }\n\n return {\n flow: getNextFlow(action.id, state.flow),\n actions: getNextActions(state, action.id)\n }\n }\n\n default: {\n throw new Error(\\`Unknown action \"\\${action.type}\" in Flow\\`)\n }\n }\n}\n\nexport function ViewsFlow(props) {\n let context = useReducer(reducer, { actions: [], flow: props.initialState })\n let [state] = context\n\n useEffect(() => {\n if (typeof props.onChange === 'function') {\n props.onChange(state)\n }\n }, [state]) // eslint-disable-line\n // ignore props.onChange\n\n return (\n <Context.Provider value={context}>\n ${\n tools\n ? '<ViewsTools flow={context}>{props.children}</ViewsTools>'\n : '{props.children}'\n }\n </Context.Provider>\n )\n}\n\nViewsFlow.defaultProps = {\n initialState: new Set(${JSON.stringify([...initialState], null, ' ')})\n}\n\nexport function normalizePath(viewPath, relativePath) {\n let url = new URL(\\`file://\\${viewPath}/\\${relativePath}\\`)\n return url.pathname\n}`\n}\n\nexport default function ensureFlow({ src, tools, viewsById, viewsToFiles }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'ViewsFlow.js'),\n content: makeFlow({ tools, viewsById, viewsToFiles }),\n })\n}\n","import ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet USE_IS_BEFORE = `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-is-before.js\nimport { useEffect, useState } from 'react'\n\nexport default function useIsBefore() {\n let [isBefore, setIsBefore] = useState(true)\n\n useEffect(function() {\n let cancel = false\n requestAnimationFrame(function() {\n if (cancel) return\n setIsBefore(false)\n })\n return () => cancel = true\n }, [])\n\n return isBefore\n}`\n\nexport default function ensureIsBefore({ src }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'useIsBefore.js'),\n content: USE_IS_BEFORE,\n })\n}\n","import ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet USE_IS_HOVERED = `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-is-hovered.js\nimport { useEffect, useMemo, useState } from 'react'\n\n// TODO replace with something more performant like:\n// https://github.com/therealparmesh/use-hovering/blob/master/src/index.js\n// or useTooltip from Reach UI\n// https://github.com/reach/reach-ui/blob/master/packages/tooltip/src/index.tsx\nexport default function useIsHovered({ isDisabled, isSelected, onMouseEnter, onMouseLeave }) {\n let [isHovered, setIsHovered] = useState(false)\n\n let isHoveredBind = useMemo(() => {\n return {\n onMouseEnter: event => {\n setIsHovered(true)\n\n if (typeof onMouseEnter === 'function') {\n onMouseEnter(event)\n }\n },\n onMouseLeave: event => {\n setIsHovered(false)\n\n if (typeof onMouseLeave === 'function') {\n onMouseLeave(event)\n }\n },\n }\n }, [onMouseEnter, onMouseLeave])\n\n useEffect(() => {\n if (!isDisabled) return\n\n setIsHovered(false)\n }, [isDisabled])\n\n return [isHovered, isHovered && isSelected, isHoveredBind]\n}`\n\nexport default function ensureIsHovered({ src }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'useIsHovered.js'),\n content: USE_IS_HOVERED,\n })\n}\n","import { promises as fs } from 'fs'\nimport ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet makeUseIsMedia = media => `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-is-media.js\n\nimport { useMedia } from 'use-media';\n\nlet useIsMedia = () => ({\n ${media\n .map(({ name, minWidth, maxWidth }) => {\n let ret = [`\"${name}\": useMedia({ minWidth: ${minWidth}`]\n if (maxWidth) {\n ret.push(`, maxWidth: ${maxWidth}`)\n }\n ret.push('})')\n return ret.join('')\n })\n .join(',')}\n})\nexport default useIsMedia`\n\nasync function getMediaConfig(src) {\n let media = {\n mobile: {\n width: 414,\n },\n tablet: {\n width: 1024,\n },\n laptop: {\n width: 1280,\n },\n }\n try {\n media = JSON.parse(\n await fs.readFile(\n path.resolve(path.join(src, '..', 'app.viewstools')),\n 'utf8'\n )\n ).media\n delete media.base\n } catch (error) {}\n\n return Object.entries(media)\n .sort((a, b) => a[1].width - b[1].width)\n .map(([name, item], index, list) => ({\n name,\n minWidth: index === 0 ? 0 : list[index - 1][1].width + 1,\n maxWidth:\n index === 0\n ? item.width\n : index === list.length - 1\n ? null\n : item.width,\n }))\n}\n\nexport default async function ensureIsMedia({ src }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'useIsMedia.js'),\n content: makeUseIsMedia(await getMediaConfig(src)),\n })\n}\n","import ensureFile from './ensure-file.js'\nimport fs from 'fs'\nimport path from 'path'\n\nlet TOOLS_FILE = `import { useEffect } from 'react'\n\nexport default function ViewsTools(props) {\n useEffect(() => {\n console.log(\\`\n\n\n\n 😱😱😱😱😱😱😱😱😱😱😱\n\n\n\n 🚨 You're missing out!!!\n\n 🚀 Views Tools can help you find product market fit before you run out of money.\n\n ✨ Find out how 👉 https://views.tools\n\n\n\n\n \\`)\n }, [])\n\n return props.children\n}`\n\nexport default async function ensureTools({ src }) {\n let file = path.join(src, 'Logic', 'ViewsTools.js')\n\n if (fs.existsSync(file) && process.env.REACT_APP_VIEWS_TOOLS) return null\n\n return ensureFile({ file, content: TOOLS_FILE })\n}\n","import relativise from './relativise.js'\nimport path from 'path'\n\nlet FILE_USE_IS_BEFORE = path.join('Logic', 'useIsBefore.js')\nlet FILE_USE_IS_HOVERED = path.join('Logic', 'useIsHovered.js')\nlet FILE_USE_IS_MEDIA = path.join('Logic', 'useIsMedia.js')\nlet FILE_USE_DATA = path.join('Data', 'ViewsData.js')\nlet FILE_USE_FLOW = path.join('Logic', 'ViewsFlow.js')\n\nexport default function makeGetSystemImport(src) {\n return function getSystemImport(id, file) {\n switch (id) {\n case 'Column':\n // Column is imported from react-virtualized\n break\n\n case 'ViewsUseIsMedia':\n return `import useIsMedia from '${relativise(\n file,\n path.join(src, FILE_USE_IS_MEDIA),\n src\n )}'`\n\n case 'ViewsUseIsBefore':\n return `import useIsBefore from '${relativise(\n file,\n path.join(src, FILE_USE_IS_BEFORE),\n src\n )}'`\n\n case 'ViewsUseIsHovered':\n return `import useIsHovered from '${relativise(\n file,\n path.join(src, FILE_USE_IS_HOVERED),\n src\n )}'`\n\n case 'ViewsUseData':\n return `import * as fromData from '${relativise(\n file,\n path.join(src, FILE_USE_DATA),\n src\n )}'`\n\n case 'ViewsUseFlow':\n return `import * as fromFlow from '${relativise(\n file,\n path.join(src, FILE_USE_FLOW),\n src\n )}'`\n\n default:\n return false\n }\n }\n}\n","export let enter = (node, parent, state) => {\n if (node.isFragment) return\n\n let value\n if (parent) {\n value = `\"${state.name}.${node.testId}\"`\n } else {\n value = `{\\`\\${props['${state.testIdKey}'] || '${node.testId}'}\\`}`\n }\n\n state.render.push(` ${state.testIdKey}=${value}`)\n}\n","export let enter = (node, parent, state) => {\n if (node.isFragment || !process.env.REACT_APP_VIEWS_TOOLS) return\n\n if (state.viewPath) {\n state.render.push(` ${state.viewPathKey}=\"${state.viewPath}\"`)\n } else {\n state.render.push(` ${state.viewPathKey}={props[\"${state.viewPathKey}\"]}`)\n }\n}\n","let IS_INT = /^([0-9]+)(.*)$/\nlet IS_FLOAT = /^([0-9]+\\.[0-9]+)(.*)$/\n\nlet MULTIPLE_BY_FONT_SIZE = 'x font size'\nlet PIXEL = 'px'\nlet PERCENTAGE = '%'\nlet EM = 'em'\nlet REM = 'rem'\nlet VW = 'vw'\nlet VH = 'vh'\n\nlet DEGREES = 'deg'\nlet GRADIANS = 'grad'\nlet RADIANS = 'rad'\nlet TURN = 'turn'\n\nlet getUnit = (node) => {\n let units = getUnits(node.name)\n\n if (typeof node.value === 'number') return units[0] || ''\n\n let match =\n typeof node.value === 'string' &&\n node.value.match(IS_INT.test(node.value) ? IS_INT : IS_FLOAT)\n return (match && units.find((u) => u === match[2])) || units[0] || ''\n}\nexport default getUnit\n\nlet LENGTH = [PIXEL, PERCENTAGE, EM, REM, VW, VH]\nlet PERCENTAGE_FIRST_LENGTH = [PERCENTAGE, PIXEL, EM, REM, VW, VH]\nlet MULTIPLE_BY_FONT_SIZE_LENGTH = [\n MULTIPLE_BY_FONT_SIZE,\n PIXEL,\n PERCENTAGE,\n EM,\n REM,\n VW,\n VH,\n]\nlet ANGLE = [DEGREES, GRADIANS, RADIANS, TURN]\nlet UNITLESS = []\n\nlet UNITS = {\n blurRadius: LENGTH,\n borderBottomLeftRadius: LENGTH,\n borderBottomRightRadius: LENGTH,\n borderBottomWidth: LENGTH,\n borderLeftWidth: LENGTH,\n borderRadius: LENGTH,\n borderRightWidth: LENGTH,\n borderTopLeftRadius: LENGTH,\n borderTopRightRadius: LENGTH,\n borderTopWidth: LENGTH,\n borderWidth: LENGTH,\n bottom: LENGTH,\n flexBasis: PERCENTAGE_FIRST_LENGTH,\n flexGrow: UNITLESS,\n flexShrink: UNITLESS,\n fontSize: LENGTH,\n height: LENGTH,\n left: LENGTH,\n letterSpacing: UNITLESS,\n lineHeight: MULTIPLE_BY_FONT_SIZE_LENGTH,\n margin: LENGTH,\n marginBottom: LENGTH,\n marginLeft: LENGTH,\n marginRight: LENGTH,\n marginTop: LENGTH,\n maxHeight: LENGTH,\n maxWidth: LENGTH,\n minHeight: LENGTH,\n minWidth: LENGTH,\n offsetX: LENGTH,\n offsetY: LENGTH,\n opacity: UNITLESS,\n outline: LENGTH,\n padding: LENGTH,\n paddingBottom: LENGTH,\n paddingLeft: LENGTH,\n paddingRight: LENGTH,\n paddingTop: LENGTH,\n perspective: LENGTH,\n right: LENGTH,\n rotate: ANGLE,\n rotateX: ANGLE,\n rotateY: ANGLE,\n scale: UNITLESS,\n scaleX: UNITLESS,\n scaleY: UNITLESS,\n strokeDasharray: UNITLESS,\n strokeDashoffset: UNITLESS,\n shadowOffsetY: LENGTH,\n shadowOffsetX: LENGTH,\n shadowBlur: LENGTH,\n shadowSpread: LENGTH,\n skew: ANGLE,\n spreadRadius: LENGTH,\n top: LENGTH,\n translateX: LENGTH,\n translateY: LENGTH,\n width: LENGTH,\n wordSpacing: LENGTH,\n zIndex: UNITLESS,\n}\nlet UNITS_KEYS = Object.keys(UNITS)\n\nlet getUnits = (key) => {\n let found = UNITS_KEYS.find((ukey) => key.startsWith(ukey))\n return UNITS[found] || UNITLESS\n}\n","export default s => `{${s}}`\n","import { isSlot } from '../utils.js'\nimport wrap from './wrap.js'\n\nexport default (value, node) =>\n typeof value === 'string' && !isSlot(value, node)\n ? JSON.stringify(value)\n : wrap(value)\n","import flatten from 'flatten'\nimport getUnit from './get-unit.js'\nimport safe from './react/safe.js'\nimport toCamelCase from 'to-camel-case'\nimport toSlugCase from 'to-slug-case'\nimport path from 'path'\nimport wrap from './react/wrap.js'\n\nlet safeScope = (value) =>\n typeof value === 'string' && !isSlot(value) ? JSON.stringify(value) : value\n\nexport let checkParentStem = (node, styleKey) => {\n if (\n styleKey !== 'isHovered' ||\n styleKey !== 'isDisabled' ||\n styleKey !== 'isSelected' ||\n styleKey !== 'isSelectedHovered' ||\n !node.parent\n )\n return false\n\n let matchingParentStem = node.parent.scopes.some(\n (scope) => scope.value === styleKey\n )\n\n return matchingParentStem && (node.parent.is || node.parent.name)\n}\n\nlet INTERPOLATION = /\\${(.+)}/\nexport let isInterpolation = (str) => INTERPOLATION.test(str)\nexport let deinterpolate = (str) => {\n let match = str.match(INTERPOLATION)\n return match ? match[1] : str\n}\n\nexport let getObjectAsString = (obj) =>\n Array.isArray(obj)\n ? `[${obj.map(getObjectAsString)}]`\n : wrap(\n Object.keys(obj)\n .map((k) => {\n let v =\n typeof obj[k] === 'object' && hasKeys(obj[k])\n ? getObjectAsString(obj[k])\n : obj[k]\n return `${JSON.stringify(k)}: ${v}`\n })\n .join(',')\n )\n\nexport let getPropertiesAsObject = (list) => {\n let obj = {}\n\n list.forEach((prop) => {\n obj[prop.name] = safeScope(prop.value)\n })\n\n return getObjectAsString(obj)\n}\n\nexport let getProp = (node, key, scope = 'base') => {\n let finder =\n typeof key === 'string' ? (p) => p.name === key : (p) => key.test(p.name)\n\n if (scope !== 'base') {\n let nodeScope = node.scopes.find((item) => item.value === scope)\n let prop = nodeScope && nodeScope.properties.find(finder)\n if (prop) {\n return prop\n }\n }\n\n return node.properties && node.properties.find(finder)\n}\n\nexport let getPropValueOrDefault = (node, key, defaultValue) => {\n return hasProp(node, key) ? getProp(node, key).value : defaultValue\n}\n\nexport let getScope = (node) => node.value.split('when ')[1]\n\nlet getScopedProps = (propNode, blockNode) => {\n let scopes = blockNode.scopes\n .filter((scope) => !scope.isSystem)\n .map((scope) => {\n let prop = scope.properties.find((prop) => prop.name === propNode.name)\n return prop && { prop, when: scope.value, scope }\n })\n .filter(Boolean)\n .reverse()\n\n if (isEmpty(scopes)) return false\n\n return scopes\n}\n\nfunction getScopedConditionPropValue(node, parent, state) {\n let value = null\n\n if (/^on[A-Z]/.test(node.name) && node.slotName === 'setFlowTo') {\n let flowPath = getFlowPath(node, parent, state)\n state.use('ViewsUseFlow')\n state.setFlowTo = true\n\n return `() => setFlowTo('${flowPath}')`\n } else if (node.tags.slot) {\n value = node.value\n } else if (typeof node.value === 'string') {\n value = safe(node.value)\n } else if (typeof node.value === 'boolean' && node.name === 'shadowInset') {\n value = node.value ? \"'inset'\" : \"''\"\n } else {\n let unit = getUnit(node)\n value = unit ? `\"${node.value}${unit}\"` : node.value\n }\n\n return value\n}\n\nlet CHILD_VALUES = /!?props\\.(isSelected|isHovered|isFocused|isSelectedHovered)/\nlet DATA_VALUES = /!?props\\.(isInvalid|isInvalidInitial|isValid|isValidInitial|value)/\nlet IS_HOVERED_OR_SELECTED_HOVER = /!?props\\.(isHovered|isSelectedHovered)/\nlet IS_FLOW = /!?props\\.(isFlow|flow)$/\n\nexport function getScopedCondition(propNode, blockNode, state) {\n let scopedProps = getScopedProps(propNode, blockNode)\n\n if (!scopedProps) return false\n\n let conditional = getScopedConditionPropValue(propNode, blockNode, state)\n scopedProps.forEach((scope) => {\n let when = scope.when\n if (state.data && DATA_VALUES.test(when)) {\n when = when.replace('props', 'data')\n } else if (hasCustomBlockParent(blockNode) && CHILD_VALUES.test(when)) {\n when = when.replace('props.', 'childProps.')\n } else if (IS_FLOW.test(when)) {\n let flowPath = getFlowPath(scope.scope, blockNode, state)\n state.use('ViewsUseFlow')\n state.useFlow = true\n when = when.replace(/props\\.(isFlow|flow)/, `flow.has('${flowPath}')`)\n } else if (\n (blockNode.action || !!getActionableParent(blockNode)) &&\n IS_HOVERED_OR_SELECTED_HOVER.test(when)\n ) {\n when = when.replace('props.', '')\n }\n\n conditional = `${when} ? ${getScopedConditionPropValue(\n scope.prop,\n blockNode,\n state\n )} : ${conditional}`\n })\n\n let lastScope = scopedProps[scopedProps.length - 1]\n\n if (\n !lastScope.prop.animation ||\n lastScope.prop.animation.curve !== 'spring'\n ) {\n lastScope.prop.conditional = conditional\n }\n\n return conditional\n}\n\nexport let getScopedImageCondition = (scopes, scopedNames, defaultName) => {\n let conditional = defaultName\n\n scopes.forEach((scope, index) => {\n conditional = `${scope.when} ? ${scopedNames[index]} : ` + conditional\n })\n\n return conditional\n}\n\nlet styleStems = [\n 'isHovered',\n 'isFocused',\n 'isPlaceholder',\n 'isDisabled',\n 'isSelected',\n 'isSelectedHovered',\n]\nexport let getStyleType = (node) =>\n styleStems.find((tag) => isTag(node, tag)) || 'base'\nexport let hasKeys = (obj) => Object.keys(obj).length > 0\nexport let hasKeysInChildren = (obj) =>\n Object.keys(obj).some((k) => hasKeys(obj[k]))\n\nexport let hasProp = (node, key, match) => {\n let prop = getProp(node, key)\n if (!prop) return false\n return typeof match === 'function' ? match(prop.value) : true\n}\n\nexport let hasDefaultProp = (node, parent) =>\n parent.properties.some((prop) => prop.nameRaw === node.nameRaw)\n\nexport let isSlot = (maybeNode1, maybeNode2) => {\n let node = maybeNode2 || maybeNode1\n\n return typeof node === 'string'\n ? /(flow\\.|data|isHovered|childProps|props|isBefore|isMedia\\.)/.test(node)\n : isTag(node, 'slot')\n}\nexport let isStyle = (node) => isTag(node, 'style')\nexport let isRowStyle = (node) => isTag(node, 'rowStyle')\nexport let isTag = (node, tag) => node && node.tags[tag]\n\nexport let getActionableParent = (node) => {\n if (!node.parent) return false\n if (node.parent.action) return node.parent\n return getActionableParent(node.parent)\n}\n\nexport let hasCustomBlockParent = (node) => {\n if (!node.parent) return !node.isBasic\n if (!node.parent.isBasic) return true\n return hasCustomBlockParent(node.parent)\n}\n\nexport let getAllowedStyleKeys = (node) => {\n if (node.isCapture) {\n return ['base', 'isFocused', 'isHovered', 'isDisabled', 'isPlaceholder']\n } else if (node.action || isTable(node) || getActionableParent(node)) {\n return [\n 'base',\n 'isFocused',\n 'isHovered',\n 'isDisabled',\n 'isSelected',\n 'isSelectedHovered',\n ]\n }\n return ['base', 'isFocused']\n}\n\nexport let isList = (node) =>\n node && node.type === 'Block' && node.name === 'List'\n\nexport let isCell = (node) =>\n node.properties.some((prop) => prop.name === 'isCell')\n\nexport let isHeader = (node) =>\n node.properties.some((prop) => prop.name === 'isHeader')\n\nexport let isColumn = (node) =>\n node && node.type === 'Block' && node.name === 'Column'\n\nexport let isTable = (node) =>\n node && node.type === 'Block' && node.name === 'Table'\n\nexport let isEmpty = (list) => list.length === 0\n\nexport let isValidImgSrc = (node, parent) =>\n node.name === 'source' && parent.name === 'Image' && parent.isBasic\n\nexport let pushImageToState = (state, scopedNames, paths) =>\n scopedNames.forEach((name) => {\n let path = paths[scopedNames.findIndex((item) => item === name)]\n if (!state.images.includes(path)) {\n state.images.push({\n name,\n file: path,\n })\n }\n })\n\nexport let getScopes = (node, parent) => {\n let scopedProps = getScopedProps(node, parent)\n if (!scopedProps) return false\n let paths = scopedProps.map((scope) => scope.prop.value)\n let scopedNames = paths.map((path) => toCamelCase(path))\n\n return { scopedProps, paths, scopedNames }\n}\n\nexport let isSvg = (node) => /^Svg/.test(node.name) && node.isBasic\n\nexport let hasCustomScopes = (propNode, blockNode) =>\n blockNode.scopes.some(\n (scope) =>\n !scope.isSystem &&\n scope.properties.some((prop) => prop.name === propNode.name)\n )\n\n// let isRotate = name =>\n// name === 'rotate' || name === 'rotateX' || name === 'rotateY'\n\nlet getStandardAnimatedString = (node, prop, isNative) => {\n let value = `animated${node.id}${\n prop.animationIndexOnBlock > 0 ? prop.animationIndexOnBlock : ''\n }.${prop.name}`\n\n // let unit = getUnit(prop)\n // if (unit) {\n // value = `\\`\\${${value}}${unit}\\``\n // }\n\n return `${isNative ? prop.name : `\"--${prop.name}\"`}: ${value}`\n}\n\nlet getTransformString = (node, transform, isNative) => {\n let transformStr = `transform: [`\n\n transform.props.forEach((prop, i) => {\n transformStr += `{${getAnimatedString(node, prop, isNative)}},`\n })\n\n return `${transformStr}]`\n}\n\nexport let getScopeIndex = (node, currentScope) =>\n node.scopes.findIndex((scope) => {\n return scope.slotName === currentScope\n })\n\nexport let isNewScope = (state, currentAnimation, index) =>\n index ===\n state.animations.findIndex(\n (animation) => animation.scope === currentAnimation.scope\n )\n\nexport let getAnimatedStyles = (node, isNative) => {\n let props = isNative ? getAllAnimatedProps(node, true) : getSpringProps(node)\n\n return props.map((prop) => getAnimatedString(node, prop, isNative)).join(', ')\n}\n\nlet getPropValue = (prop, interpolateValue = true) => {\n let unit = getUnit(prop)\n if (unit) {\n let value = interpolateValue\n ? `\\`\\${${prop.value}}${unit}\\``\n : `\"${prop.value}${unit}\"`\n return `typeof ${prop.value} === 'number' ? ${value} : ${prop.value}`\n } else {\n return prop.value\n }\n}\n\nexport let getDynamicStyles = (node) => {\n return flatten([\n node.properties\n .filter(\n (prop) =>\n prop.tags.style && prop.tags.slot && !getScopedProps(prop, node)\n )\n .map((prop) => `'--${prop.name}': ${getPropValue(prop)}`),\n node.scopes.map((scope) =>\n scope.properties\n .filter((prop) => prop.tags.style)\n .map((prop) => {\n let value = null\n\n if (prop.conditional) {\n value = prop.conditional\n // } else if (prop.tags.slot && prop.scope === 'isHovered') {\n // value = getPropValue(prop)\n }\n\n return value && `'--${prop.name}': ${value}`\n })\n ),\n ]).filter(Boolean)\n}\n\nlet getAnimatedString = (node, prop, isNative) =>\n prop.name === 'transform'\n ? getTransformString(node, prop, isNative)\n : getStandardAnimatedString(node, prop, isNative)\n\nexport let getNonAnimatedDynamicStyles = (node) => {\n let animatedProps = getAllAnimatedProps(node, true).map((prop) => prop.name)\n let animatedTransforms = animatedProps.includes('transform')\n ? getAllAnimatedProps(node, true)\n .find((prop) => prop.name === 'transform')\n .props.map((prop) => prop.name)\n : []\n\n return Object.keys(node.style.dynamic.base)\n .filter(\n (key) => !animatedProps.includes(key) && !animatedTransforms.includes(key)\n )\n .reduce((obj, key) => {\n obj[key] = node.style.dynamic.base[key]\n return obj\n }, {})\n}\n\nexport let getAllAnimatedProps = (node, isNative) => {\n let props = flatten(\n node.scopes.map((scope) =>\n scope.properties.filter((prop) => prop.animation)\n )\n )\n return checkForTransforms(props) && isNative\n ? combineTransforms(props)\n : props\n}\n\nlet combineTransforms = (props) => {\n // TODO: handle transforms on different scopes\n let transform = { name: 'transform', props: [] }\n props.forEach((prop, i) => {\n if (TRANSFORM_WHITELIST[prop.name]) {\n prop.isTransform = true\n transform.props.push(prop)\n }\n })\n props.push(transform)\n return props.filter((prop) => !prop.isTransform)\n}\n\nlet checkForTransforms = (props) =>\n props.some((prop) => TRANSFORM_WHITELIST[prop.name])\n\nexport let getTimingProps = (node) =>\n flatten(\n node.scopes.map((scope) =>\n scope.properties.filter(\n (prop) => prop.animation && prop.animation.curve !== 'spring'\n )\n )\n )\n\nlet getSpringProps = (node) =>\n flatten(\n node.scopes.map((scope) =>\n scope.properties.filter(\n (prop) => prop.animation && prop.animation.curve === 'spring'\n )\n )\n )\n\n// https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Animated/src/NativeAnimatedHelper.js\n/**\n * Styles allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric property that doesn't need\n * to be updated through the shadow view hierarchy (all non-layout properties).\n */\nlet STYLES_WHITELIST = {\n opacity: true,\n transform: true,\n /* ios styles */\n shadowOpacity: true,\n shadowRadius: true,\n /* legacy android transform properties */\n scaleX: true,\n scaleY: true,\n translateX: true,\n translateY: true,\n}\n\nlet TRANSFORM_WHITELIST = {\n translateX: true,\n translateY: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n rotate: true,\n rotateX: true,\n rotateY: true,\n perspective: true,\n}\n\nexport let canUseNativeDriver = (name) =>\n STYLES_WHITELIST[name] || TRANSFORM_WHITELIST[name] || false\n\nexport let createId = (node, state, addClassName = true) => {\n let id = node.is || node.name\n // count repeatead ones\n if (state.usedBlockNames[id]) {\n id = `${id}${state.usedBlockNames[id]++}`\n } else {\n state.usedBlockNames[id] = 1\n }\n\n node.styleName = id\n if (addClassName && node.className) {\n node.className.push(`\\${styles.${id}}`)\n }\n\n return id\n}\n\nlet CONTENT_CONTAINER_STYLE_PROPS = [\n 'paddingTop',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'flexDirection',\n 'justifyContent',\n 'alignItems',\n]\n\nlet isContentContainerStyleProp = (prop) =>\n CONTENT_CONTAINER_STYLE_PROPS.includes(prop)\n\nexport let hasContentContainerStyleProp = (styleProps) =>\n Object.keys(styleProps).some(isContentContainerStyleProp)\n\nexport let getContentContainerStyleProps = (styleProps) =>\n Object.keys(styleProps)\n .filter(isContentContainerStyleProp)\n .reduce((obj, key) => {\n obj[key] = styleProps[key]\n return obj\n }, {})\n\nexport let removeContentContainerStyleProps = (styleProps) =>\n Object.keys(styleProps)\n .filter((key) => !isContentContainerStyleProp(key))\n .reduce((obj, key) => {\n obj[key] = styleProps[key]\n return obj\n }, {})\n\nexport let hasRowStyles = (node) =>\n node.properties.some(\n (prop) => prop.name.match(/^row/) && prop.name !== 'rowHeight'\n )\n\nlet MAYBE_HYPHENATED_STYLE_PROPS = [\n 'alignContent',\n 'alignItems',\n 'alignSelf',\n 'backgroundBlendMode',\n 'backgroundClip',\n 'backgroudOrigin',\n 'backgroundRepeat',\n 'boxSizing',\n 'clear',\n 'cursor',\n 'flexBasis',\n 'flexDirection',\n 'flexFlow',\n 'flexWrap',\n 'float',\n 'fontFamily',\n 'fontStretch',\n 'justifyContent',\n 'objectFit',\n 'overflowWrap',\n 'textAlign',\n 'textDecorationLine',\n 'textTransform',\n 'whiteSpace',\n 'wordBreak',\n]\n\nexport let maybeMakeHyphenated = ({ name, value }) =>\n MAYBE_HYPHENATED_STYLE_PROPS.includes(name) && /^[a-zA-Z]+$/.test(value)\n ? toSlugCase(value)\n : value\n\nexport let isStory = (node, state) =>\n !node.isBasic && state.isStory(node.name) && state.flow === 'separate'\n\nexport function getFlowPath(node, parent, state) {\n // TODO warn if action is used but it isn't in actions (on parser)\n // TODO warn that there's setFlowTo without an id (on parser)\n let setFlowTo = node.defaultValue\n if (!setFlowTo.startsWith('/')) {\n setFlowTo = path.normalize(path.join(state.viewPath, setFlowTo))\n }\n\n return setFlowTo\n}\n","import { getProp, isSlot } from '../utils.js'\nimport safe from '../react/safe.js'\n\nlet typesMap = {\n email: 'email',\n text: 'text',\n number: 'number',\n phone: 'tel',\n secure: 'password',\n file: 'file',\n}\n\nexport let enter = (node, parent, state) => {\n if (!node.isCapture || node.name === 'CaptureTextArea') return\n\n let type = getProp(node, 'type')\n\n if (isSlot(type)) {\n state.render.push(` type=${safe(type.value)}`)\n\n // fix for iOS Safari to show the numpad on\n // http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios-numeric-keypad/\n let maybeNumber = (name, valueWhenTrue) =>\n `${name}={${type.value} === 'number' || ${\n type.value\n } === 'phone'? \"${valueWhenTrue}\" : undefined}`\n state.render.push(maybeNumber('inputMode', 'numeric'))\n state.render.push(maybeNumber('pattern', '[0-9]*'))\n } else {\n state.render.push(` type=${safe(typesMap[type.value])}`)\n\n // fix for iOS Safari to show the numpad on\n // http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios-numeric-keypad/\n if (type.value === 'number' || type.value === 'phone') {\n state.render.push(` inputMode=\"numeric\" pattern=\"[0-9]*\"`)\n }\n }\n}\n","export function enter(node, parent, state) {\n let value = state.getValueForProperty(node, parent, state)\n\n if (value) {\n Object.keys(value).forEach(k => {\n if (k === '...') {\n return state.render.push(` {...${value[k]}}`)\n } else {\n return state.render.push(` ${k}=${value[k]}`)\n }\n })\n }\n}\n","import * as PropertyRest from './property-rest.js'\nimport { getProp, isColumn, isHeader, isCell } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (!isColumn(node)) return\n\n let dataKey = getProp(node, 'key')\n let width = getWidth(node, parent)\n\n state.render.push(` dataKey=\"${dataKey.value}\" width={${width}}`)\n\n // let label = getLabel(node)\n // if (label) {\n // state.render.push(`label=\"${label}\"`)\n // }\n\n let header = node.children.find(isHeader)\n if (header && !header.isBasic) {\n state.render.push(\n ` headerRenderer={headerProps => <${header.name} {...headerProps} `\n )\n header.properties.forEach(propNode => {\n if (propNode.name === 'isHeader') return\n PropertyRest.enter(propNode, header, state)\n })\n state.render.push(` />}`)\n }\n\n let cell = node.children.find(isCell)\n if (cell && !cell.isBasic) {\n state.render.push(\n ` cellRenderer={cellProps => <${cell.name} {...cellProps} `\n )\n cell.properties.forEach(propNode => {\n if (propNode.name === 'isCell') return\n PropertyRest.enter(propNode, cell, state)\n })\n state.render.push(` />}`)\n }\n}\n\nlet getWidth = (node, parent) => {\n let width = getProp(node, 'width')\n if (width && width.value !== 'auto') {\n return width.value\n }\n\n let columns = parent.children.filter(child => child.name === 'Column')\n let columnsWithFixedWidth = columns\n .map(node => {\n let width = getProp(node, 'width')\n return width && typeof width.value === 'number' && width.value\n })\n .filter(Boolean)\n\n let columnsWidthSum = columnsWithFixedWidth.reduce(\n (res, value) => res + value,\n 0\n )\n\n return columnsWidthSum\n ? `(width - ${columnsWidthSum}) / ${columns.length -\n columnsWithFixedWidth.length}`\n : `width / ${columns.length}`\n}\n\n// let getLabel = node => {\n// let header = node.children.find(node => getProp(node, 'isHeader'))\n// if (!header) return\n\n// if (header.name === 'Text') {\n// // removing the text node, because the column handles the label\n// node.children.splice(node.children.indexOf(header), 1)\n// } else {\n// node.externalHeader = header\n// }\n\n// return getProp(header, 'text').value\n// }\n","export function leave(node, parent, state) {\n if (node.explicitChildren) {\n state.render.push('>')\n state.render.push(node.explicitChildren)\n }\n}\n","import { getProp } from '../utils.js'\nimport safe from '../react/safe.js'\n\nexport let enter = (node, parent, state) => {\n if (node.goTo) {\n let goTo = getProp(node, 'goTo')\n state.render.push(\n ` href=${safe(goTo.value)} rel='noopener noreferrer' target='_blank'`\n )\n }\n}\n","export function enter(node, parent, state) {\n if (\n !node.isDefiningChildrenExplicitly &&\n node.isGroup &&\n node.children.length > 0 &&\n !node.nameFinal.includes('FlatList')\n ) {\n state.render.push('>')\n\n if (!node.isBasic) {\n state.render.push('{childProps => (')\n if (node.children.length > 1) {\n state.render.push('<React.Fragment>')\n }\n }\n }\n}\n\nexport function leave(node, parent, state) {\n if (\n !node.isDefiningChildrenExplicitly &&\n node.isGroup &&\n node.children.length > 0 &&\n !node.nameFinal.includes('FlatList') &&\n !node.isBasic\n ) {\n if (node.children.length > 1) {\n state.render.push('</React.Fragment>')\n }\n state.render.push(')}')\n }\n}\n","import { getProp, isList } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (isList(parent)) {\n state.render.push(` index={index}`)\n\n let pass = getProp(parent, 'pass')\n if (pass) {\n state.render.push(` ${pass.value}={${pass.value}}`)\n } else {\n state.render.push(' {...item}')\n }\n\n if (!parent.nameFinal.includes('FlatList')) {\n let key = getProp(node, 'key')\n key = key ? key.value : 'index'\n\n state.render.push(` key={${key}}`)\n }\n }\n}\n","import { getProp, isList } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (isList(node)) {\n let from = getProp(node, 'from')\n if (!from) return\n\n let pass = getProp(node, 'pass')\n let itemName = pass ? pass.value : 'item'\n\n if (node.nameFinal.includes('FlatList')) {\n let key = getProp(node.children[0], 'key')\n key = key ? key.value : 'index'\n\n state.render.push(\n `data={${\n from.value\n }} keyExtractor={(item, index) => ${key}} renderItem={({ ${itemName}, index }) =>`\n )\n } else {\n state.render.push(\n `{Array.isArray(${from.value}) && ${\n from.value\n }.map((${itemName}, index) => `\n )\n }\n }\n}\n\nexport function leave(node, parent, state) {\n if (isList(node)) {\n state.render.push(node.nameFinal.includes('FlatList') ? '}' : ')}')\n }\n}\n","export let enter = node => node.skip\n","export function leave(node, parent, state) {\n if (node.isDefiningChildrenExplicitly) return\n\n if (\n ((!parent && node.isGroup) ||\n node.explicitChildren ||\n (node.isGroup && node.children.length > 0)) &&\n !node.nameFinal.includes('FlatList')\n ) {\n if (!parent && node.isGroup) {\n if (node.children.length === 0) {\n state.render.push('>')\n }\n\n if (!state.hasAlreadyDefinedChildren) {\n state.hasAlreadyDefinedChildren = true\n state.render.push(`{props.children}`)\n }\n }\n\n state.render.push(`</${node.nameFinal}>`)\n } else {\n state.render.push('/>')\n }\n}\n","import { getProp, isCell, isHeader, isTable } from '../utils.js'\n\nexport default (node, parent, state) => {\n if (isTable(node)) {\n let from = getProp(node, 'from')\n // skip the table if we don't have a from prop\n if (!from) return true\n\n state.isTable = true\n\n state.render.push(`<AutoSizer>{({ width, height }) => (`)\n }\n\n return isCell(node) || isHeader(node)\n}\n","import { getProp, hasProp } from '../utils.js'\nimport toCamelCase from 'to-camel-case'\n\nexport default (node, parent, state) => {\n let name = node.name\n\n switch (node.name) {\n case 'Capture':\n name = 'input'\n break\n\n case 'CaptureTextArea':\n name = 'textarea'\n break\n\n case 'Horizontal':\n case 'Vertical':\n name = getGroupBlockName(node, parent, state)\n break\n\n case 'Image':\n name = 'img'\n break\n\n case 'Text':\n return 'span'\n\n case 'List':\n name = 'div'\n break\n\n case 'Svg':\n name = 'svg'\n break\n\n case 'SvgGroup':\n name = 'g'\n break\n\n case 'SvgCircle':\n case 'SvgEllipse':\n case 'SvgLinearGradient':\n case 'SvgRadialGradient':\n case 'SvgLine':\n case 'SvgText':\n case 'SvgPath':\n case 'SvgPolygon':\n case 'SvgPolyline':\n case 'SvgRect':\n case 'SvgSymbol':\n case 'SvgUse':\n case 'SvgDefs':\n case 'SvgStop':\n name = toCamelCase(node.name.replace('Svg', ''))\n break\n\n case 'Block':\n case 'View':\n name = 'React.Fragment'\n break\n\n default:\n break\n }\n\n if (node.hasSpringAnimation) {\n return `animated.${name}`\n }\n\n return name\n}\n\nlet getGroupBlockName = (node, parent, state) => {\n let name = 'div'\n\n if (node.isFragment) {\n name = 'React.Fragment'\n } else if (hasProp(node, 'isModal')) {\n name = 'ViewsModalOverlay'\n } else if (parent && hasProp(parent, 'isModal')) {\n name = 'ViewsModalOverlayContent'\n } else if (hasProp(node, 'goTo')) {\n name = 'a'\n node.goTo = true\n node.action = getProp(node, 'goTo').value\n } else if (hasProp(node, 'onClick')) {\n let propNode = getProp(node, 'onClick')\n let prevParent = parent\n let canBeButton = true\n\n while (prevParent && canBeButton) {\n if (prevParent.type === 'Block') {\n canBeButton = !hasProp(prevParent, 'onClick')\n }\n prevParent = prevParent.parent\n }\n\n if (canBeButton) {\n if (!hasProp(node, 'onClickUseDiv')) {\n name = 'button'\n }\n node.action = propNode.value\n }\n } else if (hasProp(node, 'overflowY', v => v === 'auto' || v === 'scroll')) {\n name = 'div'\n } else if (hasProp(node, 'onSubmit')) {\n name = 'form'\n }\n\n return name\n}\n","import {\n getActionableParent,\n getPropValueOrDefault,\n isStory,\n} from '../utils.js'\nimport { leave } from '../react/block-name.js'\nimport handleTable from '../react/block-name-handle-table.js'\nimport getBlockName from './get-block-name.js'\n\nexport function enter(node, parent, state) {\n // if (parent && !parent.isBasic && !node.isBasic) return true\n if (node.isFragment && node.children.length === 0) return true\n if (node.isChildren) {\n state.hasAlreadyDefinedChildren = true\n\n state.render.push(\n `{typeof props.children === 'function'? props.children({ isSelected: props.isSelected`\n )\n let useIsHovered = !!getActionableParent(node)\n if (useIsHovered) {\n state.useIsHovered = true\n state.render.push(', isHovered, isSelectedHovered')\n }\n state.render.push(`}) : null}`)\n\n return true\n }\n\n if (node.isFragment && node.name === 'View') {\n state.flow = getPropValueOrDefault(node, 'is', false)\n state.flowDefaultState = null\n }\n\n if (isStory(node, state)) {\n state.use('ViewsUseFlow')\n }\n\n let name = getBlockName(node, parent, state)\n if (name === null) return true\n\n state.use(name, node.isLazy)\n\n // TODO remove the use of those because they're just the name and keep one\n node.nameFinal = name\n node.nameTag = name\n\n if (handleTable(node, parent, state)) return true\n\n if (!node.isDefiningChildrenExplicitly) {\n state.render.push(`<${node.nameFinal}`)\n }\n}\n\nexport { leave }\n","import {\n getFlowPath,\n getProp,\n hasCustomBlockParent,\n isList,\n isStory,\n} from '../utils.js'\n\nlet IS_MEDIA = /(!?props\\.isMedia)(.+)/\nlet DATA_VALUES = /!?props\\.(isInvalid|isInvalidInitial|isValid|isValidInitial|value)/\nlet CHILD_VALUES = /!?props\\.(isSelected|isHovered|isFocused)/\nlet IS_HOVERED = /!?props\\.(isHovered|isSelectedHovered)/\nlet IS_FLOW = /!?props\\.(isFlow|flow)$/\n\nexport function enter(node, parent, state) {\n if (node.isFragment && node.children.length === 0) return\n\n // onWhen lets you show/hide blocks depending on props\n let onWhen = getProp(node, 'onWhen')\n\n if (onWhen) {\n node.onWhen = true\n\n if (parent && !isList(parent)) state.render.push('{')\n\n let value = onWhen.value\n if (state.data && DATA_VALUES.test(value)) {\n value = value.replace('props', 'data')\n } else if (IS_MEDIA.test(value)) {\n let [, variable, media] = value.match(IS_MEDIA)\n value = `${variable.replace('props.', '')}.${media.toLowerCase()}`\n } else if (hasCustomBlockParent(node) && CHILD_VALUES.test(value)) {\n value = value.replace('props.', 'childProps.')\n } else if (IS_FLOW.test(value)) {\n let flowPath = getFlowPath(onWhen, node, state)\n value = value.replace('props.flow', `flow.has('${flowPath}')`)\n } else if (IS_HOVERED.test(value)) {\n value = value.replace('props.', '')\n }\n\n state.render.push(`${value} ? `)\n } else if (isStory(node, state)) {\n node.onWhen = true\n state.render.push(`{flow.has(\"${state.viewPath}/${node.name}\") ? `)\n }\n}\n\nexport function leave(node, parent, state) {\n if (node.onWhen) {\n state.render.push(` : null`)\n if (parent && !isList(parent)) state.render.push('}')\n }\n}\n","import { deinterpolate, getProp, isSlot, isInterpolation } from '../utils.js'\nimport wrap from '../react/wrap.js'\n\nexport let enter = (node, parent, state) => {\n node.className = node.isBasic\n ? [\n node.name === 'Text'\n ? 'views-text'\n : node.isCapture\n ? 'views-capture'\n : 'views-block',\n ]\n : []\n\n let className = getProp(node, 'className')\n if (className) {\n node.className.push(\n className.tags.slot ? `\\${${className.value}}` : className.value\n )\n }\n}\n\nexport let leave = (node, parent, state) => {\n if (node.isFragment) return\n\n if (node.className.length === 1) {\n let className = node.className[0]\n let shouldWrap = true\n\n if (isInterpolation(className)) {\n className = deinterpolate(className)\n } else if (!isSlot(className)) {\n className = `\"${className}\"`\n shouldWrap = false\n }\n\n state.render.push(` className=${shouldWrap ? wrap(className) : className}`)\n } else if (node.className.length > 1) {\n let className = `\\`${node.className.join(' ')}\\``\n state.render.push(` className=${wrap(className)}`)\n }\n}\n","export let enter = (node, parent, state) => {\n // TODO caption\n if (node.name === 'Image') {\n state.render.push(' alt={\"\"}')\n }\n}\n","import { checkParentStem, isSlot } from '../utils.js'\nimport safe from './safe.js'\n\nexport function enter(node, parent, state) {\n node.style = {\n dynamic: {\n base: {},\n isHovered: {},\n isFocused: {},\n isDisabled: {},\n isPlaceholder: {},\n isSelected: {},\n isSelectedHovered: {},\n },\n static: {\n base: {},\n isHovered: {},\n isFocused: {},\n isDisabled: {},\n isPlaceholder: {},\n isSelected: {},\n isSelectedHovered: {},\n },\n }\n\n if (node.isFragment) return\n\n // TODO use this directly in styles without having to go through this\n node.scopes\n .filter(scope => scope.isSystem)\n .forEach(scope => {\n scope.properties.forEach(propNode => {\n if (propNode.name === 'when') return\n\n let { _isProp, ...styleForProperty } = state.getStyleForProperty(\n propNode,\n node,\n state,\n isSlot(propNode)\n )\n\n if (_isProp) {\n Object.keys(styleForProperty).forEach(k =>\n state.render.push(` ${k}=${safe(styleForProperty[k], node)}`)\n )\n } else {\n let hasMatchingParent =\n parent && node.isDynamic\n ? checkParentStem(node, scope.value)\n : false\n let target =\n isSlot(propNode) || hasMatchingParent\n ? node.style.dynamic\n : node.style.static\n\n Object.assign(target[scope.value], styleForProperty)\n }\n })\n })\n\n // ensure flex-direction in Horizontals\n if (node.isGroup && node.name === 'Horizontal') {\n node.style.static.base.flexDirection = 'row'\n }\n}\n","import { enter } from '../react/properties-style.js'\nimport {\n createId,\n getActionableParent,\n getAllAnimatedProps,\n getAllowedStyleKeys,\n getAnimatedStyles,\n getDynamicStyles,\n getTimingProps,\n hasKeys,\n hasKeysInChildren,\n hasRowStyles,\n isTable,\n} from '../utils.js'\nimport toSlugCase from 'to-slug-case'\nimport uniq from 'array-uniq'\n\nexport { enter }\n\nexport function leave(node, parent, state) {\n if (node.isFragment) return\n\n let allowedStyleKeys = getAllowedStyleKeys(node)\n\n let scopedUnderParent =\n !node.isCapture && !node.action && getActionableParent(node)\n\n if (scopedUnderParent) {\n scopedUnderParent = scopedUnderParent.styleName\n }\n\n if (node.hasSpringAnimation) {\n state.isAnimated = true\n state.hasSpringAnimation = true\n state.animations[node.id] = node.animations\n state.scopes = node.scopes\n }\n\n let id = null\n\n if (isTable(node) && hasRowStyles(node)) {\n id = createId(node, state, false)\n getTableRowCss({ node, state, id, scopedUnderParent })\n }\n\n let css = [\n getStaticCss({ node, scopedUnderParent, state, allowedStyleKeys }),\n node.isAnimated && getAnimatedCss(node),\n getDynamicCss({ node, scopedUnderParent, state, allowedStyleKeys }),\n ].filter(Boolean)\n\n if (css.length > 0) {\n if (id === null) {\n id = createId(node, state)\n } else if (isTable(node)) {\n if (node.className) {\n node.className.push(`\\${styles.${id}}`)\n }\n }\n\n state.styles[id] = `css({label: '${id}',\\n ${css.join(',\\n ')}})`\n state.stylesOrder.push(id)\n }\n}\n\nlet composeStyles = (node, styles, scopedUnderParent) => {\n let allowedStyleKeys = getAllowedStyleKeys(node)\n\n if (hasKeysInChildren(styles.dynamic)) {\n let cssStatic = Object.keys(styles.static)\n .filter(\n key => allowedStyleKeys.includes(key) && hasKeys(styles.static[key])\n )\n .map(key =>\n asCss(\n asStaticCss(styles.static[key], Object.keys(styles.dynamic[key])),\n key,\n scopedUnderParent\n ).join('\\n')\n )\n\n cssStatic = cssStatic.join(',\\n')\n\n let cssDynamic = Object.keys(styles.dynamic)\n .filter(\n key => allowedStyleKeys.includes(key) && hasKeys(styles.dynamic[key])\n )\n .map(key =>\n asCss(asDynamicCss(styles.dynamic[key]), key, scopedUnderParent).join(\n '\\n'\n )\n )\n .join(',\\n')\n\n return { cssDynamic, cssStatic }\n }\n\n let cssStatic = Object.keys(styles.static)\n .filter(\n key => allowedStyleKeys.includes(key) && hasKeys(styles.static[key])\n )\n .map(key =>\n asCss(asStaticCss(styles.static[key]), key, scopedUnderParent).join('\\n')\n )\n .join(',\\n')\n\n return { cssStatic }\n}\n\nlet getStaticCss = ({ node, scopedUnderParent, state, allowedStyleKeys }) => {\n let style = node.style.static\n if (!hasKeysInChildren(style)) return false\n\n state.cssStatic = true\n\n let hasDynamicCss = hasKeysInChildren(node.style.dynamic)\n\n return Object.keys(style)\n .filter(key => allowedStyleKeys.includes(key) && hasKeys(style[key]))\n .map(key =>\n asCss(\n asStaticCss(\n style[key],\n hasDynamicCss ? Object.keys(node.style.dynamic[key]) : []\n ),\n key,\n scopedUnderParent\n ).join('\\n')\n )\n .join(',\\n')\n}\n\nlet getDynamicCss = ({ node, scopedUnderParent, state, allowedStyleKeys }) => {\n let style = node.style.dynamic\n if (!hasKeysInChildren(style)) return false\n\n state.cssDynamic = true\n node.styleName = node.nameFinal\n\n if (node.hasSpringAnimation) {\n state.render.push(\n ` style={{${getAnimatedStyles(\n node,\n state.isReactNative\n )},${getDynamicStyles(node)}}}`\n )\n } else {\n let inlineDynamicStyles = getDynamicStyles(node)\n if (inlineDynamicStyles) {\n state.render.push(` style={{${inlineDynamicStyles}}}`)\n }\n }\n\n return Object.keys(style)\n .filter(key => allowedStyleKeys.includes(key) && hasKeys(style[key]))\n .map(key =>\n asCss(asDynamicCss(style[key]), key, scopedUnderParent).join('\\n')\n )\n .join(',\\n')\n}\n\nlet getAnimatedCss = node => {\n if (node.hasTimingAnimation) {\n let transition = uniq(getTimingProps(node).map(makeTransition)).join(', ')\n\n return `\\ntransition: '${transition}',\\nwillChange: '${getUniqueNames(\n node\n )}'`\n }\n\n return `\\nwillChange: '${getUniqueNames(node)}'`\n}\n\nlet getUniqueNames = node => {\n let names = [\n ...new Set(getAllAnimatedProps(node, false).map(prop => prop.name)),\n ]\n return uniq(names.map(name => ensurePropName(name))).join(', ')\n}\n\nlet ensurePropName = name => {\n switch (name) {\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return 'transform'\n\n case 'shadowColor':\n case 'shadowBlur':\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n case 'shadowSpread':\n case 'shadowInset':\n return 'box-shadow'\n\n default:\n return toSlugCase(name)\n }\n}\n\nlet makeTransition = ({ name, animation }) =>\n [\n ensurePropName(name),\n `${animation.duration}ms`,\n toSlugCase(animation.curve),\n animation.delay && `${animation.delay}ms`,\n ]\n .filter(Boolean)\n .join(' ')\n\nlet asDynamicCss = styles =>\n Object.keys(styles).map(prop => `${prop}: ${styles[prop]}`)\n\nlet safe = str =>\n typeof str === 'string' ? `\"${str.replace(/\"/g, \"'\")}\"` : str\n\nlet asStaticCss = (styles, dynamicStyles = []) =>\n Object.keys(styles)\n .filter(prop => !dynamicStyles.includes(prop))\n .map(prop => `${prop}: ${safe(styles[prop])}`)\n\nlet systemScopeToCssKey = {\n isDisabled: 'disabled',\n // isHovered: 'hover:enabled',\n isFocused: 'focus:enabled',\n}\nlet ensureSystemScopeCssKey = key => systemScopeToCssKey[key] || key\n\nlet asCss = (styles, key, scopedUnderParent) => {\n let css = []\n\n if (key !== 'base') {\n if (scopedUnderParent) {\n let parent = `.\\${styles.${scopedUnderParent}}`\n let theKey = ensureSystemScopeCssKey(key)\n css.push(`[\\`${parent}:${theKey} &\\`]: {`)\n } else if (\n key === 'isDisabled' ||\n // key === 'isHovered' ||\n key === 'isFocused'\n ) {\n css.push(`\"&:${ensureSystemScopeCssKey(key)}\": {`)\n } else if (key === 'isPlaceholder') {\n css.push(`\"&::placeholder\": {`)\n }\n }\n\n css.push(styles.join(',\\n'))\n\n if (key !== 'base') css.push(`}`)\n\n return css\n}\n\nlet getTableRowCss = ({ node, state, id, scopedUnderParent }) => {\n let normalStyles = {}\n let alternateStyles = {}\n\n Object.entries(node.style).forEach(([type, typeScopes]) => {\n if (!(type in alternateStyles)) {\n alternateStyles[type] = {}\n }\n if (!(type in normalStyles)) {\n normalStyles[type] = {}\n }\n\n Object.entries(typeScopes).forEach(([scope, scopeStyles]) => {\n if (!(scope in alternateStyles[type])) {\n alternateStyles[type][scope] = {}\n }\n if (!(scope in normalStyles[type])) {\n normalStyles[type][scope] = {}\n }\n\n Object.entries(scopeStyles).forEach(([key, value]) => {\n switch (key) {\n case 'rowColor':\n normalStyles[type][scope]['color'] = value\n delete node.style[type][scope][key]\n break\n case 'rowBackgroundColor':\n normalStyles[type][scope]['backgroundColor'] = value\n delete node.style[type][scope][key]\n break\n case 'rowColorAlternate':\n alternateStyles[type][scope]['color'] = value\n delete node.style[type][scope][key]\n break\n case 'rowBackgroundColorAlternate':\n alternateStyles[type][scope]['backgroundColor'] = value\n delete node.style[type][scope][key]\n break\n\n default:\n break\n }\n })\n })\n })\n\n let { cssDynamic: normalDynamic, cssStatic: normalStatic } = composeStyles(\n node,\n normalStyles,\n scopedUnderParent\n )\n\n let {\n cssDynamic: alternateDynamic,\n cssStatic: alternateStatic,\n } = composeStyles(node, alternateStyles, scopedUnderParent)\n\n let normalCss = `${normalStatic ? `${normalStatic}` : ''} ${\n normalDynamic ? `, ${normalDynamic}` : ''\n }`\n\n let alternateCss = `${alternateStatic ? `${alternateStatic}` : ''} ${\n alternateDynamic ? `, ${alternateDynamic}` : ''\n }`\n\n node.hasDynamicRowStyles = !!(normalDynamic || alternateDynamic)\n state.render.push(` rowClassName={styles.${id}Row}`)\n\n state.styles[`${id}Row`] = `css({ display: 'flex'\n ${normalCss ? `, ${normalCss}` : ''}\n ${alternateCss ? `, \"&:nth-child(even)\": {${alternateCss}}` : ''}\n })`\n state.stylesOrder.push(`${id}Row`)\n}\n","export let enter = (node, parent, state) => {\n if (node.children && node.children.some(child => child.format)) {\n state.isFormatted = true\n state.formats = []\n node.children\n .filter(child => child.format)\n .forEach(child => state.formats.push(child.format))\n } else if (node.format && !parent) {\n state.isFormatted = true\n state.formats = []\n state.formats.push(node.format)\n }\n}\n","export function enter(node, parent, state) {\n if (!node.action || 'userSelect' in node.style.static.base) return\n\n node.style.static.base.userSelect = 'none'\n}\n","import wrap from '../react/wrap.js'\n\nexport function enter(node, parent, state) {\n if (node.name === 'ref') {\n if (!parent.isBasic) {\n state.hasRefs = true\n }\n\n // TODO swap for React.forwardRef\n state.render.push(\n ` ${parent.isDynamic ? 'innerRef' : 'ref'}=${wrap(node.value)}`\n )\n return true\n }\n}\n","import {\n checkParentStem,\n getProp,\n getStyleType,\n isSlot,\n isStyle,\n isSvg,\n} from '../utils.js'\nimport safe from './safe.js'\n\nlet PROPS_THAT_IMPLY_CODE_FOR_OTHERS = {\n fontFamily: 'fontWeight',\n shadowOffsetX: 'shadowOffsetY',\n shadowOffsetY: 'shadowOffsetX',\n}\n\nexport function enter(node, parent, state) {\n if (\n !isStyle(node) ||\n !parent.isBasic ||\n (isSvg(parent) && state.isReactNative) ||\n parent.name === 'SvgGroup'\n )\n return\n\n let code = isSlot(node)\n\n if (!code && state.isReactNative) {\n let otherProp = PROPS_THAT_IMPLY_CODE_FOR_OTHERS[node.name]\n if (otherProp) {\n code = isSlot(getProp(parent, otherProp))\n }\n }\n\n let { _isProp, _isScoped, ...styleForProperty } = state.getStyleForProperty(\n node,\n parent,\n state,\n code\n )\n\n if (_isProp) {\n Object.keys(styleForProperty).forEach(k =>\n state.render.push(` ${k}=${safe(styleForProperty[k], node)}`)\n )\n } else {\n let hasMatchingParent =\n parent && node.isDynamic\n ? checkParentStem(node, getStyleType(node))\n : false\n let target =\n code || _isScoped || hasMatchingParent\n ? parent.style.dynamic\n : parent.style.static\n\n Object.assign(target[getStyleType(node)], styleForProperty)\n }\n\n return true\n}\n","import { getScopedCondition, hasCustomScopes, isSlot } from '../utils.js'\nimport wrap from './wrap.js'\n\nlet HAS_RESTRICTED_CHARACTERS = /[{}<>/]/\n\nexport function enter(node, parent, state) {\n if (node.name === 'text' && parent.name === 'Text') {\n if (state.data && node.value === 'props.value') {\n parent.explicitChildren = '{data.value}'\n } else if (hasCustomScopes(node, parent)) {\n parent.explicitChildren = wrap(getScopedCondition(node, parent, state))\n } else if (isSlot(node)) {\n parent.explicitChildren = wrap(node.value)\n } else if (HAS_RESTRICTED_CHARACTERS.test(node.value)) {\n parent.explicitChildren = `{\"${node.value}\"}`\n } else {\n parent.explicitChildren = node.value\n }\n\n return true\n }\n}\n","export function enter(node, parent, state) {\n if (node.isBasic || !state.viewPath) return\n\n // this is something we may use when going into dynamic paths through data\n // state.render.push(`viewPath={\\`\\${props.viewPath}/${state.name}\\`}`)\n state.render.push(`viewPath=\"${state.viewPath}/${node.name}\"`)\n}\n","let blacklist = [\n 'classname',\n 'format',\n 'goto',\n 'isfragment',\n 'ismodal',\n 'onclickid',\n 'onclickselected',\n 'onclickselectedtype',\n 'onclickusediv',\n 'perspective',\n 'rotatez',\n 'scalez',\n 'teleportto',\n 'transformoriginz',\n 'translatez',\n 'type',\n]\n\nexport default (node, parent, state) =>\n !blacklist.includes(node.name.toLowerCase())\n","import * as PropertiesClassName from './properties-class-name.js'\nimport * as PropertiesImage from './properties-image.js'\nimport * as PropertiesStyle from './properties-style.js'\nimport * as PropertyFormat from '../react/property-format.js'\nimport * as PropertyOnClickUserSelect from './property-onclick-user-select.js'\nimport * as PropertyRef from '../react/property-ref.js'\nimport * as PropertyRest from '../react/property-rest.js'\nimport * as PropertyStyle from '../react/property-style.js'\nimport * as PropertyText from '../react/property-text.js'\nimport * as PropertyViewPath from '../react/property-view-path.js'\nimport { isColumn } from '../utils.js'\nimport isValidPropertyForBlock from './is-valid-property-for-block.js'\n\nexport function enter(node, parent, state) {\n if (node.isFragment) return false\n\n PropertiesStyle.enter(node, parent, state)\n PropertiesClassName.enter(node, parent, state)\n PropertiesImage.enter(node, parent, state)\n PropertyFormat.enter(node, parent, state)\n PropertyViewPath.enter(node, parent, state)\n\n node.properties.forEach(propNode => {\n if (\n propNode.name === 'lazy' ||\n propNode.name === 'at' ||\n propNode.name === 'when' ||\n propNode.name === 'onWhen' ||\n propNode.tags.unsupportedShorthand ||\n (!isValidPropertyForBlock(propNode, node, state) && node.isBasic) ||\n (propNode.name === 'from' &&\n (node.name === 'List' || node.name === 'Table')) ||\n (propNode.name === 'key' && parent.isList) ||\n (propNode.name === 'pass' && node.isList) ||\n (propNode.name === 'width' && isColumn(node))\n )\n return\n\n !PropertyRef.enter(propNode, node, state) &&\n !PropertyStyle.enter(propNode, node, state) &&\n !PropertyText.enter(propNode, node, state) &&\n PropertyRest.enter(propNode, node, state)\n })\n PropertyOnClickUserSelect.enter(node, parent, state)\n\n PropertiesStyle.leave(node, parent, state)\n PropertiesClassName.leave(node, parent, state)\n}\n","export let enter = (node, parent, state) => {\n let blockName = node.is || node.name\n\n if (typeof state.testIds[blockName] === 'number') {\n state.testIds[blockName]++\n blockName = `${blockName}:${state.testIds[blockName]}`\n } else {\n state.testIds[blockName] = 0\n }\n\n node.testId = blockName\n}\n","import { getProp, isTable } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (!isTable(node)) return\n\n state.render.push(\n ` width={width} height={height} rowCount={Array.isArray(props.from) ? props.from.length : 0} rowGetter={({ index }) => props.from[index]}`\n )\n}\n\nexport function leave(node, parent, state) {\n if (!isTable(node)) return\n\n state.render.push(`)}</AutoSizer>`)\n}\n","import * as BlockAddTestIdProp from '../react/block-add-test-id-prop.js'\nimport * as BlockAddViewPath from '../react/block-add-view-path.js'\nimport * as BlockCapture from './block-capture.js'\nimport * as BlockColumn from '../react/block-column.js'\nimport * as BlockExplicitChildren from '../react/block-explicit-children.js'\nimport * as BlockGoTo from './block-go-to.js'\nimport * as BlockGroup from '../react/block-group.js'\nimport * as BlockInList from '../react/block-in-list.js'\nimport * as BlockList from '../react/block-list.js'\nimport * as BlockMaybeSkip from '../react/block-maybe-skip.js'\nimport * as BlockName from './block-name.js'\nimport * as BlockOffWhen from '../react/block-off-when.js'\nimport * as BlockProperties from './block-properties.js'\nimport * as BlockSetTestId from '../react/block-set-test-id.js'\nimport * as BlockTable from '../react/block-table.js'\n\n// match new lines with ../react-native/block.js\nexport let enter = [\n BlockMaybeSkip.enter,\n BlockSetTestId.enter,\n BlockOffWhen.enter,\n\n BlockName.enter,\n BlockTable.enter,\n BlockColumn.enter,\n\n BlockCapture.enter,\n BlockGoTo.enter,\n\n BlockInList.enter,\n BlockAddTestIdProp.enter,\n BlockAddViewPath.enter,\n BlockProperties.enter,\n BlockGroup.enter,\n BlockList.enter,\n]\n\nexport let leave = [\n BlockList.leave,\n BlockExplicitChildren.leave,\n BlockGroup.leave,\n BlockName.leave,\n BlockTable.leave,\n\n BlockOffWhen.leave,\n]\n","import {\n getProp,\n getScopedCondition,\n isSlot,\n maybeMakeHyphenated,\n} from '../utils.js'\nimport { maybeAddFallbackFont } from '../fonts.js'\n\nexport default function getStyleForProperty(node, parent, state, code) {\n let scopedVar = setScopedVar(node, parent, state)\n\n if (scopedVar) {\n switch (node.name) {\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return {\n _isScoped: true,\n transform: `'${getTransform(node, parent, state)}'`,\n }\n\n case 'shadowColor':\n case 'shadowBlur':\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n case 'shadowSpread':\n case 'shadowInset': {\n let shadow = getShadow(node, parent, state)\n let key = Object.keys(shadow)[0]\n\n return {\n _isScoped: true,\n [key]: `'${shadow[key]}'`,\n }\n }\n\n default:\n return {\n _isScoped: true,\n [node.name]: scopedVar,\n }\n }\n }\n\n switch (node.name) {\n case 'appRegion':\n return {\n WebkitAppRegion: maybeAsVar(node, code),\n }\n\n case 'backgroundImage':\n return {\n backgroundImage: code\n ? `\\`url(\\${${asVar(node)}})\\``\n : `url(\"${node.value}\")`,\n }\n\n case 'fontFamily':\n return {\n fontFamily: code ? asVar(node) : maybeAddFallbackFont(node.value),\n }\n\n case 'shadowColor':\n case 'shadowBlur':\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n case 'shadowSpread':\n case 'shadowInset':\n return getShadow(node, parent, state)\n\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return { transform: getTransform(node, parent, state) }\n\n case 'transformOriginX':\n case 'transformOriginY':\n return {\n transformOrigin: getTransformOrigin(node, parent, state),\n }\n\n case 'zIndex':\n return {\n zIndex: code ? asVar(node) : parseInt(node.value, 10),\n }\n\n default:\n return {\n [node.name]: maybeAsVar(node, code),\n }\n }\n}\n\nlet maybeAsVar = (prop, code) =>\n code ? asVar(prop) : maybeMakeHyphenated(prop)\n\nlet asVar = prop => `'var(--${prop.name})'`\n\nlet setScopedVar = (prop, block, state) => {\n if (\n prop.scope === 'isHovered' ||\n prop.scope === 'isFocused' ||\n prop.scope === 'isDisabled'\n )\n return false\n\n let scopedCondition = getScopedCondition(prop, block, state)\n return scopedCondition && asVar(prop)\n}\n\nlet getPropValue = (prop, block, state, unit = '') => {\n if (!prop) return false\n\n let scopedVar = setScopedVar(prop, block, state)\n\n if (scopedVar) return scopedVar\n\n if (prop.tags.slot) {\n return `var(--${prop.name})`\n }\n\n return typeof prop.value === 'number' ? `${prop.value}${unit}` : prop.value\n}\n\nlet getShadow = (node, parent, state) => {\n let isText = parent.name === 'Text'\n\n let shadowColor = getProp(parent, 'shadowColor', node.scope)\n let shadowBlur = getProp(parent, 'shadowBlur', node.scope)\n let shadowOffsetX = getProp(parent, 'shadowOffsetX', node.scope)\n let shadowOffsetY = getProp(parent, 'shadowOffsetY', node.scope)\n let shadowSpread = getProp(parent, 'shadowSpread', node.scope)\n let shadowInset = getProp(parent, 'shadowInset', node.scope)\n let shadowInsetValue = getPropValue(shadowInset, parent, state)\n\n let value = [\n !isText &&\n (typeof shadowInsetValue === 'string' && /var\\(/.test(shadowInsetValue)\n ? shadowInsetValue\n : shadowInsetValue && 'inset'),\n getPropValue(shadowOffsetX, parent, state, 'px'),\n getPropValue(shadowOffsetY, parent, state, 'px'),\n getPropValue(shadowBlur, parent, state, 'px'),\n !isText && getPropValue(shadowSpread, parent, state, 'px'),\n getPropValue(shadowColor, parent, state),\n ]\n .filter(Boolean)\n .join(' ')\n .replace(/'/g, '')\n\n if (\n isSlot(shadowColor) ||\n isSlot(shadowBlur) ||\n isSlot(shadowOffsetY) ||\n isSlot(shadowOffsetX) ||\n isSlot(shadowSpread) ||\n isSlot(shadowInset)\n ) {\n value = `\\`${value}\\``\n }\n\n return {\n [isText ? 'textShadow' : 'boxShadow']: value,\n }\n}\n\nlet getTransformValue = (prop, parent, unit) => {\n if (!prop) return false\n return `${prop.name}(${getPropValue(prop, parent, unit)})`\n}\n\nlet getTransform = (node, parent) => {\n let rotate = getProp(parent, 'rotate', node.scope)\n let rotateX = getProp(parent, 'rotateX', node.scope)\n let rotateY = getProp(parent, 'rotateY', node.scope)\n let scale = getProp(parent, 'scale', node.scope)\n let scaleX = getProp(parent, 'scaleX', node.scope)\n let scaleY = getProp(parent, 'scaleY', node.scope)\n let translateX = getProp(parent, 'translateX', node.scope)\n let translateY = getProp(parent, 'translateY', node.scope)\n\n let value = [\n getTransformValue(rotate, parent, 'deg'),\n getTransformValue(rotateX, parent, 'deg'),\n getTransformValue(rotateY, parent, 'deg'),\n getTransformValue(scale, parent, ''),\n getTransformValue(scaleX, parent, ''),\n getTransformValue(scaleY, parent, ''),\n\n getTransformValue(translateX, parent, 'px'),\n getTransformValue(translateY, parent, 'px'),\n ]\n .filter(Boolean)\n .join(' ')\n\n if (\n isSlot(rotate) ||\n isSlot(rotateX) ||\n isSlot(rotateY) ||\n isSlot(scale) ||\n isSlot(scaleX) ||\n isSlot(scaleY) ||\n isSlot(translateX) ||\n isSlot(translateY)\n ) {\n value = `\\`${value}\\``\n }\n\n // TODO FIXME this is a hack to remove strings because my head is fried\n // and yeah it does what we need for now :)\n return value.replace(/'/g, '')\n}\n\nlet getTransformOrigin = (node, parent) => {\n let transformOriginX = getProp(parent, 'transformOriginX', node.scope)\n let transformOriginY = getProp(parent, 'transformOriginY', node.scope)\n let value = [\n getPropValue(\n transformOriginX,\n parent,\n Number.isInteger(transformOriginX.value) ? 'px' : ''\n ),\n getPropValue(\n transformOriginY,\n parent,\n Number.isInteger(transformOriginY.value) ? 'px' : ''\n ),\n ]\n .filter(Boolean)\n .join(' ')\n\n if (isSlot(transformOriginX) || isSlot(transformOriginY)) {\n value = `\\`${value}\\``\n }\n return value\n}\n","import { hasKeys } from '../utils.js'\n\nexport default ({ styles, stylesOrder }) => {\n if (!hasKeys(styles)) return ''\n\n let res = [`let styles = {}`]\n\n stylesOrder.forEach(id => {\n res.push(`styles.${id} = ${styles[id]}`)\n })\n\n return res.join('\\n')\n}\n","import {\n getActionableParent,\n getFlowPath,\n getProp,\n getScopedCondition,\n getScopedImageCondition,\n getScopes,\n hasCustomBlockParent,\n isValidImgSrc,\n pushImageToState,\n} from '../utils.js'\nimport safe from '../react/safe.js'\nimport toCamelCase from 'to-camel-case'\nimport wrap from '../react/wrap.js'\n\nlet isUrl = (str) => /^https?:\\/\\//.test(str)\n\nfunction getImageSource(node, parent, state) {\n let scopes = getScopes(node, parent)\n\n if (scopes && (isUrl(node.value) || node.tags.slot)) {\n return wrap(getScopedCondition(node, parent, state))\n } else if (isUrl(node.value) || node.tags.slot) {\n if (node.defaultValue && !isUrl(node.defaultValue)) {\n state.slots.forEach((item) => {\n if (item.defaultValue === node.defaultValue) {\n item.type = 'import'\n let name = toCamelCase(item.defaultValue)\n if (!state.images.includes(item.defaultValue)) {\n state.images.push({\n name,\n file: item.defaultValue,\n })\n }\n item.defaultValue = name\n }\n })\n }\n return safe(node.value)\n } else {\n if (scopes) {\n pushImageToState(state, scopes.scopedNames, scopes.paths)\n }\n let name = toCamelCase(node.value)\n if (!state.images.includes(node.value)) {\n state.images.push({\n name,\n file: node.value,\n })\n }\n return scopes\n ? wrap(\n getScopedImageCondition(scopes.scopedProps, scopes.scopedNames, name)\n )\n : `{${name}}`\n }\n}\n\nlet CHILD_VALUES = /props\\.(isSelected|isHovered|isFocused|isSelectedHovered)/\nlet ON_IS_SELECTED = /(onClick|onPress|goTo)/\n\nexport default function getValueForProperty(node, parent, state) {\n if (\n state.data &&\n (node.value === '!props.value' ||\n node.value === 'props.value' ||\n node.value === 'props.onSubmit' ||\n node.value === 'props.onChange' ||\n node.value === 'props.isInvalid' ||\n node.value === 'props.isInvalidInitial' ||\n node.value === 'props.isValid' ||\n node.value === 'props.isValidInitial' ||\n node.value === 'props.onSubmit')\n ) {\n return {\n [node.name]: `{${node.value.replace('props.', 'data.')}}`,\n }\n } else if (/!?props\\.(isFlow|flow)$/.test(node.value)) {\n let flowPath = getFlowPath(node, parent, state)\n state.use('ViewsUseFlow')\n state.useFlow = true\n\n return {\n [node.name]: `{${node.value.replace(\n /props\\.(isFlow|flow)/,\n `flow.has('${flowPath}')`\n )}}`,\n }\n } else if (hasCustomBlockParent(parent) && CHILD_VALUES.test(node.value)) {\n return {\n [node.name]: `{${node.value.replace('props.', 'childProps.')}}`,\n }\n } else if (isValidImgSrc(node, parent)) {\n return {\n src: getImageSource(node, parent, state),\n }\n } else if (parent.isBasic && node.name === 'isDisabled') {\n return {\n disabled: safe(node.value, node),\n }\n } else if (getScopedCondition(node, parent, state)) {\n return {\n [node.name]: safe(getScopedCondition(node, parent, state)),\n }\n } else if (/^on[A-Z]/.test(node.name) && node.slotName === 'setFlowTo') {\n let flowPath = getFlowPath(node, parent, state)\n state.use('ViewsUseFlow')\n state.setFlowTo = true\n\n let ret = {\n [node.name]: `{() => setFlowTo('${flowPath}')}`,\n }\n\n if (!parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useFlow = true\n ret[\n node.name.replace(ON_IS_SELECTED, 'isSelected')\n ] = `{flow.has('${flowPath}')}`\n }\n\n if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n ret['...'] = `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`\n }\n\n return ret\n } else if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n return {\n '...': `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`,\n [node.name]: safe(node.value, node),\n }\n } else if (\n CHILD_VALUES.test(node.value) &&\n !!getActionableParent(parent) &&\n !parent.isBasic\n ) {\n // TODO support more than one hover/selected in the same block - let's wait\n // for a use case\n if (/isHovered/.test(node.value)) {\n return {\n [node.name]: safe(node.value.replace('props.', ''), node),\n }\n } else if (/isSelected/.test(node.value)) {\n let actionableParent = getActionableParent(parent)\n let actionableProp =\n getProp(actionableParent, 'onClick') ||\n getProp(actionableParent, 'goTo')\n if (!actionableProp.defaultValue) {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n\n let flowPath = getFlowPath(actionableProp, actionableParent, state)\n state.use('ViewsUseFlow')\n state.useFlow = true\n return {\n [node.name]: `{flow.has('${flowPath}')}`,\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n}\n","import getViewRelativeToView from '../../get-view-relative-to-view.js'\nimport relativise from '../../relativise.js'\nimport path from 'path'\nimport chalk from 'chalk'\n\nexport default function makeGetImport({\n imports,\n getSystemImport,\n src,\n view,\n viewsById,\n viewsToFiles,\n}) {\n return function getImport(id, isLazy) {\n if (imports[id]) return imports[id]\n\n let externalImport = getSystemImport(id, view.file)\n if (externalImport) return externalImport\n\n let importView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n if (!importView) {\n let error = `View \"${id}\" doesn't exist inside ${\n view.id\n } or in the DesignSystem.\nIt's being imported from ${view.id} at ${view.file}.\nEither remove the reference to the view or create a new file ${path.join(\n path.dirname(view.file),\n id,\n 'view.blocks'\n )} like\n\n ${id} View\n is together\n`\n\n console.error(chalk.red(error))\n\n return `console.error(${JSON.stringify(error)})\nfunction ${id}() {\n throw new Error(${JSON.stringify(error)})\n}`\n }\n\n let importFile = importView.file\n\n if (importView.logic) {\n importFile = importView.logic\n } else if (!importView.custom) {\n importFile = path.join(path.dirname(importFile), 'view.js')\n }\n let importPath = relativise(view.file, importFile, src)\n\n return isLazy\n ? `let ${id} = React.lazy(() => import('${importPath}'))`\n : `import ${id} from '${importPath}'`\n }\n}\n","export default [\n 'Block',\n 'Capture',\n 'CaptureTextArea',\n 'Children',\n 'Column',\n 'Horizontal',\n 'Image',\n 'List',\n 'ViewsModalOverlay',\n 'ViewsModalOverlayContent',\n 'Spring',\n 'Svg',\n 'SvgCircle',\n 'SvgDefs',\n 'SvgEllipse',\n 'SvgGroup',\n 'SvgLine',\n 'SvgLinearGradient',\n 'SvgPath',\n 'SvgPolygon',\n 'SvgPolyline',\n 'SvgRadialGradient',\n 'SvgRect',\n 'SvgStop',\n 'SvgSymbol',\n 'SvgText',\n 'SvgUse',\n 'Table',\n 'Text',\n 'Timing',\n 'Vertical',\n 'View',\n]\n","export default ({ state, name }) => {\n let render = state.render.join('\\n')\n\n let animated = []\n if (state.isAnimated) {\n Object.keys(state.animations).forEach((blockId) => {\n Object.values(state.animations[blockId]).forEach((item) => {\n let { curve, ...configValues } = item.animation.properties\n\n if (!state.isReactNative && curve !== 'spring') return\n\n let spring = ['{', '\"config\": {']\n Object.entries(configValues).forEach(([k, v]) => {\n spring.push(`${k}: ${JSON.stringify(v)},`)\n })\n\n if (curve !== 'spring' && curve !== 'linear') {\n spring.push(`\"easing\": Easing.${curve.replace('ease', 'easeCubic')},`)\n }\n spring.push('},')\n\n let toValue = []\n let fromValue = []\n Object.values(item.props).forEach((prop) => {\n prop.scopes.reverse()\n\n let value = prop.scopes.reduce(\n (current, scope) =>\n `props.${scope.name}? ${JSON.stringify(\n scope.value\n )} : ${current}`,\n JSON.stringify(prop.value)\n )\n\n toValue.push(`${JSON.stringify(prop.name)}: ${value}`)\n fromValue.push(\n `${JSON.stringify(prop.name)}: ${JSON.stringify(\n prop.scopes[0].value\n )}`\n )\n })\n\n spring.push(`\"from\": {${fromValue.join(',')}},`)\n spring.push(`\"to\": {${toValue.join(',')}},`)\n spring.push('}')\n\n animated.push(\n `let animated${blockId}${\n item.index > 0 ? item.index : ''\n } = useSpring(${spring.join('\\n')})`\n )\n })\n })\n }\n\n let flow = []\n if (\n state.useFlow ||\n (state.flow === 'separate' && state.uses.includes('ViewsUseFlow'))\n ) {\n flow.push(`let flow = fromFlow.useFlow()`)\n }\n if (state.setFlowTo) {\n flow.push(`let setFlowTo = fromFlow.useSetFlowTo()`)\n }\n let data = []\n if (state.data) {\n data.push(`let data = fromData.useData({ path: '${state.data.path}', `)\n maybeDataContext(state.data, data)\n maybeDataFormat(state.dataFormat, data)\n maybeDataValidate(state.dataValidate, data)\n data.push('})')\n }\n\n if (state.hasRefs) {\n return `export default class ${name} extends React.Component {\n render() {\n let { props } = this\n return (${render})\n }\n}`\n } else {\n let ret = render ? `(${render})` : null\n\n return `export default function ${name}(props) {\n ${state.useIsBefore ? 'let isBefore = useIsBefore()' : ''}\n ${\n state.useIsHovered\n ? 'let [isHovered, isSelectedHovered, isHoveredBind] = useIsHovered(props)'\n : ''\n }\n ${state.useIsMedia ? 'let isMedia = useIsMedia()' : ''}\n ${animated.join('\\n')}\n ${flow.join('\\n')}\n ${data.join('\\n')}\n\n return ${ret}\n}`\n }\n}\n\nfunction maybeDataContext(dataDefinition, data) {\n if (dataDefinition.context === null) return\n\n data.push(`context: '${dataDefinition.context}',`)\n}\nfunction maybeDataFormat(format, data) {\n if (!format) return\n\n if (format.formatIn) {\n data.push(`formatIn: '${format.formatIn}',`)\n }\n\n if (format.formatOut) {\n data.push(`formatOut: '${format.formatOut}',`)\n }\n}\nfunction maybeDataValidate(validate, data) {\n if (!validate || validate.type !== 'js') return\n data.push(`validate: '${validate.value}',`)\n if (validate.required) {\n data.push('validateRequired: true,')\n }\n}\n","let stringify = slot => {\n if (slot.type === 'array') {\n return JSON.stringify([])\n } else if (/^[0-9]+$/.test(slot.defaultValue) || slot.type === 'import') {\n return slot.defaultValue\n } else {\n return JSON.stringify(slot.defaultValue)\n }\n}\n\nexport default ({ state, name }) => {\n let slots = state.slots\n .filter(slot => slot.defaultValue !== false)\n .map(slot => `${slot.name}: ${stringify(slot)}`)\n\n return slots.length === 0\n ? ''\n : `${name}.defaultProps = {${slots.join(',\\n')}}`\n}\n","export default [\n 'Svg',\n 'SvgCircle',\n 'SvgEllipse',\n 'SvgDefs',\n 'SvgGroup',\n 'SvgLinearGradient',\n 'SvgRadialGradient',\n 'SvgLine',\n 'SvgPath',\n 'SvgPolygon',\n 'SvgPolyline',\n 'SvgRect',\n 'SvgSymbol',\n 'SvgText',\n 'SvgUse',\n 'SvgDefs',\n 'SvgStop',\n]\n","import SVG from './svg.js'\n\nlet NATIVE = [\n 'Animated',\n 'Image',\n 'KeyboardAvoidingView',\n 'FlatList',\n 'ScrollView',\n 'StyleSheet',\n 'Text',\n 'TextInput',\n 'TouchableWithoutFeedback',\n 'TouchableHighlight',\n 'View',\n]\n\nlet sortAlphabetically = (a, b) => {\n return a === b ? 0 : a < b ? -1 : 1\n}\n\nfunction filterAndSort(list) {\n return list.filter(Boolean).sort(sortAlphabetically)\n}\n\nexport default (state, getImport) => {\n let usesNative = []\n let usesSvg = []\n\n let useNative = d => {\n if (!usesNative.includes(d)) {\n usesNative.push(d)\n }\n }\n let useSvg = d => {\n if (!usesSvg.includes(d)) {\n usesSvg.push(d)\n }\n }\n\n let dependencies = [`import React from 'react'`]\n let dependenciesLazy = []\n let dependenciesDisplayNames = []\n let dependenciesErrors = []\n\n state.uses.sort().forEach(d => {\n if (state.isReactNative && NATIVE.includes(d)) {\n useNative(d)\n } else if (state.isReactNative && SVG.includes(d)) {\n useSvg(\n d === 'Svg'\n ? d\n : d === 'SvgGroup'\n ? `G as SvgGroup`\n : `${d.replace('Svg', '')} as ${d}`\n )\n } else if (d === 'Table') {\n } else if (/^[A-Z]/.test(d)) {\n let importStatement = getImport(d, state.lazy[d])\n\n if (importStatement.startsWith('import ')) {\n dependencies.push(importStatement)\n } else if (importStatement.startsWith('let ')) {\n dependenciesLazy.push(importStatement)\n } else {\n dependenciesErrors.push(importStatement)\n }\n\n if (/logic\\.js'/.test(importStatement)) {\n dependenciesDisplayNames.push(`${d}.displayName = '${d}Logic'`)\n }\n }\n })\n\n if (state.isReactNative) {\n // TODO fonts in RN\n // state.getFont(state.fonts)\n } else {\n state.fonts.forEach(usedFont =>\n dependencies.push(state.getFontImport(usedFont.id))\n )\n }\n\n // TODO we probably want to check that the file exists and do something if it\n // doesn't, like warn the user at least?\n state.images.forEach(img =>\n dependencies.push(`import ${img.name} from \"${img.file}\"`)\n )\n\n if (state.cssDynamic || state.cssStatic) {\n dependencies.push('import { css } from \"emotion\"')\n state.dependencies.add('emotion')\n }\n\n if (state.isAnimated) {\n let animations = [\n 'animated',\n (state.hasSpringAnimation ||\n (state.hasTimingAnimation && state.isReactNative)) &&\n 'useSpring',\n ].filter(Boolean)\n\n if (animations.length > 0) {\n dependencies.push(\n `import { ${animations.join(', ')} } from \"react-spring\"`\n )\n\n state.dependencies.add('react-spring')\n\n if (state.hasTimingAnimation && state.isReactNative) {\n dependencies.push(`import * as Easing from 'd3-ease'`)\n state.dependencies.add('d3-ease')\n }\n }\n }\n\n if (state.isReactNative) {\n for (let component of state.animated) {\n dependencies.push(`let Animated${component} = animated(${component})`)\n }\n }\n\n if (state.isTable) {\n dependencies.push(\n `import { AutoSizer, Column, Table } from \"@viewstools/tables/${\n state.isReactNative ? 'native' : 'dom'\n }\"`\n )\n state.dependencies.add('@viewstools/tables')\n }\n\n if (usesSvg.length > 0) {\n let svg = usesSvg.filter(m => m !== 'Svg').join(', ')\n dependencies.push(`import Svg, { ${svg} } from 'react-native-svg'`)\n }\n\n if (usesNative.length > 0) {\n dependencies.push(\n `import { ${usesNative.join(', ')} } from '${\n state.reactNativeLibraryImport\n }'`\n )\n }\n\n if (state.useIsBefore) {\n dependencies.push(getImport('ViewsUseIsBefore'))\n }\n\n if (state.useIsHovered) {\n dependencies.push(getImport('ViewsUseIsHovered'))\n }\n\n if (state.useIsMedia) {\n dependencies.push(getImport('ViewsUseIsMedia'))\n }\n\n return [\n ...filterAndSort(dependencies),\n ...filterAndSort(dependenciesLazy),\n ...filterAndSort(dependenciesErrors),\n ...filterAndSort(dependenciesDisplayNames),\n ].join('\\n')\n}\n","export default ({ uses }) => {\n return uses.includes('Animated') && uses.includes('FlatList')\n ? `let AnimatedFlatList = Animated.createAnimatedComponent(FlatList)`\n : ''\n}\n","import getBody from './get-body.js'\nimport getDefaultProps from './get-default-props.js'\nimport getDependencies from './get-dependencies.js'\nimport getFlatList from './get-flatlist.js'\n\nexport default ({ getImport, getStyles, name, state }) => {\n // TODO Emojis should be wrapped in <span>, have role=\"img\", and have an accessible description\n // with aria-label or aria-labelledby jsx-a11y/accessible-emoji\n return `/* eslint-disable jsx-a11y/accessible-emoji, no-unused-vars, no-dupe-keys, react/jsx-no-duplicate-props */\n// This file is auto-generated. Edit ${name}.view to change it. More info: https://github.com/viewstools/docs/blob/master/UseViews/README.md#viewjs-is-auto-generated-and-shouldnt-be-edited\n${getDependencies(state, getImport)}\n\n${getStyles(state, name)}\n${getFlatList(state, name)}\n\n${getBody({ state, name })}\n${getDefaultProps({ state, name })}`\n}\n","export default function walk(ast, { enter, leave }, state) {\n visit(ast, null, enter, leave, state)\n}\n\nfunction visit(node, parent, enter, leave, state) {\n if (!node) return\n\n if (enter) {\n if (enter.some(fn => fn(node, parent, state))) return\n }\n\n if (Array.isArray(node.children)) {\n node.children.forEach(child => {\n child.parent = node\n visit(child, node, enter, leave, state)\n })\n }\n\n if (leave) {\n leave.forEach(fn => fn(node, parent, state))\n }\n}\n","import * as visitor from './react-dom/block.js'\nimport getStyleForProperty from './react-dom/get-style-for-property.js'\nimport getStyles from './react-dom/get-styles.js'\nimport getValueForProperty from './react-dom/get-value-for-property.js'\nimport getViewRelativeToView from '../get-view-relative-to-view.js'\nimport makeGetImport from './react/make-get-import.js'\nimport restrictedNames from './react-dom/restricted-names.js'\nimport toComponent from './react/to-component.js'\nimport walk from './walk.js'\n\nlet imports = {\n ViewsModalOverlay:\n \"import { DialogOverlay as ViewsModalOverlay, DialogContent as ViewsModalOverlayContent } from '@reach/dialog'\",\n}\n\nexport default ({\n getFontImport,\n getSystemImport,\n src,\n tools,\n view,\n viewsById,\n viewsToFiles,\n}) => {\n let name = view.id\n let finalName = restrictedNames.includes(name) ? `${name}1` : name\n\n let state = {\n animated: new Set(),\n animations: {},\n cssDynamic: false,\n cssStatic: false,\n data: view.parsed.view.data,\n dataFormat: view.parsed.view.dataFormat,\n dataValidate: view.parsed.view.dataValidate,\n dependencies: new Set(),\n flow: null,\n setFlowTo: false,\n getFontImport: (font) => getFontImport(font, view),\n getStyleForProperty,\n getValueForProperty,\n hasRefs: false,\n images: [],\n isDynamic: false,\n isReactNative: false,\n isStory: (id) => {\n let viewInView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n\n return viewInView && !viewInView.custom && viewInView.parsed.view.isStory\n },\n lazy: {},\n name: finalName,\n viewPath: view.parsed.view.viewPath,\n viewPathParent: view.parsed.view.viewPathParent,\n render: [],\n styles: {},\n stylesOrder: [],\n usedBlockNames: { [finalName]: 1, AutoSizer: 1, Column: 1, Table: 1 },\n uses: [],\n testIdKey: 'data-testid',\n viewPathKey: 'data-view-path',\n testIds: {},\n tools,\n use(block, isLazy = false) {\n if (isLazy) {\n state.lazy[block] = true\n }\n\n if (\n state.uses.includes(block) ||\n /props/.test(block) ||\n /^Animated/.test(block) ||\n 'React.Fragment' === block ||\n 'ViewsModalOverlayContent' === block\n )\n return\n\n if (block === finalName) {\n state.name = `${view.id}${state.usedBlockNames[finalName]++}`\n }\n\n state.uses.push(block)\n },\n useIsBefore: view.parsed.view.useIsBefore,\n useIsMedia: view.parsed.view.useIsMedia,\n }\n\n // TIP: use the following code to trace generated code\n // let _push = state.render.push.bind(state.render)\n // state.render.push = item => {\n // _push(item)\n // if (item.includes(\"Some <isHovered\")) {\n // console.trace()\n // }\n // }\n\n if (state.data) {\n state.use('ViewsUseData')\n }\n\n if (name !== finalName) {\n console.warn(\n `// ${name} is a Views reserved name. To fix this, change its file name to something else.`\n )\n }\n\n state.fonts = view.parsed.fonts\n state.slots = view.parsed.slots\n\n walk(view.parsed.view, visitor, state)\n\n return {\n code: toComponent({\n getImport: makeGetImport({\n src,\n imports,\n getSystemImport,\n view,\n viewsById,\n viewsToFiles,\n }),\n getStyles,\n name: state.name,\n state,\n }),\n dependencies: state.dependencies,\n flow: state.flow,\n flowDefaultState: state.flowDefaultState,\n // TODO flow supported states\n // fonts: view.parsed.fonts,\n // slots: view.parsed.slots,\n }\n}\n","import { hasProp, getObjectAsString, getProp } from '../utils.js'\nimport safe from '../react/safe.js'\nlet BORDER_RADIUS = [\n 'borderRadius',\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n]\n\nexport let enter = (node, parent, state) => {\n if (node.backgroundImage) {\n let source = getObjectAsString({ uri: node.backgroundImage })\n\n let resizeMode = getProp(node, 'backgroundSize')\n resizeMode = safe(resizeMode ? resizeMode.value.value : 'cover')\n\n state.render.push(` resizeMode=${resizeMode} source={${source}}`)\n\n // hack until https://github.com/facebook/react-native/issues/8885\n // is fixed\n BORDER_RADIUS.forEach(prop => {\n if (hasProp(node, prop)) {\n let propNode = getProp(node, prop)\n state.render.push(` ${prop}={${propNode.value.value}}`)\n }\n })\n }\n}\n","import { getProp, isSlot } from '../utils.js'\n\nlet keyboardType = {\n email: 'email-address',\n number: 'numeric',\n phone: 'phone-pad',\n}\n\nexport let enter = (node, parent, state) => {\n if (!node.isCapture) return\n\n if (node.name === 'CaptureTextArea') {\n state.render.push(` multiline={true}`)\n } else {\n let type = getProp(node, 'type')\n\n // TODO warn on parser\n // TODO support file upload in RN\n if (type.value === 'file') {\n type.value = 'text'\n }\n\n if (type.value === 'secure') {\n state.render.push(` secureTextEntry`)\n } else {\n if (isSlot(type)) {\n let dynamicKeyboardType = `\n ${type.value} === 'email'?\n '${keyboardType.email}' :\n ${type.value} === 'number'?\n '${keyboardType.number}' :\n ${type.value} === 'phone'?\n '${keyboardType.phone}' : 'default'\n `\n state.render.push(` keyboardType={${dynamicKeyboardType}}`)\n } else if (keyboardType[type.value]) {\n state.render.push(` keyboardType='${keyboardType[type.value]}'`)\n }\n }\n }\n\n let autoCorrect = getProp(node, 'autoCorrect')\n if (!autoCorrect) {\n state.render.push(` autoCorrect={false}`)\n }\n\n let underlineColorAndroid = getProp(node, 'underlineColorAndroid')\n if (!underlineColorAndroid) {\n state.render.push(` underlineColorAndroid=\"transparent\"`)\n }\n\n let textAlignVertical = getProp(node, 'textAlignVertical')\n if (!textAlignVertical) {\n state.render.push(` textAlignVertical=\"top\"`)\n }\n}\n","import { getProp, hasProp, isSlot } from '../utils.js'\n\nexport default (node, parent, state) => {\n switch (node.name) {\n case 'Capture':\n case 'CaptureTextArea':\n return 'TextInput'\n\n case 'Horizontal':\n case 'Vertical':\n return getGroupBlockName(node, state)\n\n case 'List':\n return getListBlockName(node, state)\n\n case 'Text':\n if (node.isAnimated) {\n state.animated.add('Text')\n return 'AnimatedText'\n } else {\n return 'Text'\n }\n\n case 'Block':\n case 'View':\n return 'React.Fragment'\n\n default:\n return node.name\n }\n}\n\nlet getGroupBlockName = (node, state) => {\n let name = 'View'\n\n if (node.isFragment) {\n name = 'React.Fragment'\n } else if (hasProp(node, 'goTo')) {\n node.goTo = true\n let propNode = getProp(node, 'goTo')\n node.action = propNode.value\n } else if (hasProp(node, 'onClick')) {\n let propNode = getProp(node, 'onClick')\n node.action = propNode.value\n }\n\n if (hasProp(node, 'backgroundImage')) {\n let propNode = getProp(node, 'backgroundImage')\n node.backgroundImage = isSlot(propNode)\n ? propNode.value\n : JSON.stringify(propNode.value)\n\n name = 'Image'\n } else if (hasProp(node, 'overflowY', v => v === 'auto' || v === 'scroll')) {\n name = 'ScrollView'\n }\n\n if (node.isAnimated) {\n state.animated.add(name)\n name = `Animated${name}`\n }\n\n return name\n}\n\nlet getListBlockName = (node, state) => {\n let base = hasProp(node, /^overflow/, v => v === 'auto' || v === 'scroll')\n ? 'FlatList'\n : 'View'\n if (node.isAnimated) {\n state.animated.add(base)\n return `Animated${base}`\n } else {\n return base\n }\n}\n","import {\n getActionableParent,\n getPropValueOrDefault,\n isStory,\n} from '../utils.js'\nimport { leave } from '../react/block-name.js'\nimport handleTable from '../react/block-name-handle-table.js'\nimport getBlockName from './get-block-name.js'\n\nexport function enter(node, parent, state) {\n // if (parent && !parent.isBasic && !node.isBasic) return true\n if (node.isFragment && node.children.length === 0) return true\n if (node.isChildren) {\n state.hasAlreadyDefinedChildren = true\n\n state.render.push(\n `{typeof props.children === 'function'? props.children({ isSelected: props.isSelected`\n )\n let useIsHovered = !!getActionableParent(node)\n if (useIsHovered) {\n state.useIsHovered = true\n state.render.push(', isHovered, isSelectedHovered')\n }\n state.render.push(`}) : props.children}`)\n\n return true\n }\n\n if (node.isFragment && node.name === 'View') {\n state.flow = getPropValueOrDefault(node, 'is', false)\n state.flowDefaultState = null\n }\n\n if (isStory(node, state)) {\n state.use('ViewsUseFlow')\n }\n\n let name = getBlockName(node, parent, state)\n if (name === null) return true\n\n if (name === 'Animated.FlatList') {\n state.use('FlatList')\n name = 'AnimatedFlatList'\n }\n\n state.use(node.isBasic ? name.replace(/^Animated/, '') : name, node.isLazy)\n\n node.nameFinal = name\n\n if (handleTable(node, parent, state)) return true\n\n if (!node.isDefiningChildrenExplicitly) {\n state.render.push(`<${name}`)\n }\n}\n\nexport { leave }\n","import { enter } from '../react/properties-style.js'\nimport {\n createId,\n getAnimatedStyles,\n getObjectAsString,\n // TODO: Think of a better name 🙈\n getNonAnimatedDynamicStyles,\n hasContentContainerStyleProp,\n getContentContainerStyleProps,\n removeContentContainerStyleProps,\n hasKeys,\n} from '../utils.js'\n\nexport { enter }\n\nexport let leave = (node, parent, state) => {\n if (node.isFragment) return\n\n let dynamicStyles = getNonAnimatedDynamicStyles(node)\n let baseStyle = null\n let animatedStyle = null\n let dynamicStyle = null\n let containerStyle = null\n\n if (\n node.ensureBackgroundColor &&\n (!('backgroundColor' in node.style.static.base) ||\n !('backgroundColor' in node.style.dynamic.base))\n ) {\n node.style.static.base.backgroundColor = 'transparent'\n }\n\n if (hasKeys(node.style.static.base)) {\n let id = createId(node, state)\n if (\n node.nameFinal.includes('FlatList') &&\n hasContentContainerStyleProp(node.style.static.base)\n ) {\n state.styles[`${id}ContentContainer`] = getContentContainerStyleProps(\n node.style.static.base\n )\n node.style.static.base = removeContentContainerStyleProps(\n node.style.static.base\n )\n containerStyle = `styles.${id}ContentContainer`\n }\n if (hasKeys(node.style.static.base)) {\n state.styles[id] = node.style.static.base\n baseStyle = `styles.${id}`\n }\n }\n\n if (node.isAnimated) {\n animatedStyle = getAnimatedStyles(node, state.isReactNative)\n\n state.isAnimated = true\n state.animations[node.id] = node.animations\n if (node.hasSpringAnimation) {\n state.hasSpringAnimation = true\n }\n\n if (node.hasTimingAnimation) {\n state.hasTimingAnimation = true\n }\n state.scopes = node.scopes\n }\n\n if (hasKeys(dynamicStyles)) {\n if (\n node.nameFinal.includes('FlatList') &&\n hasContentContainerStyleProp(dynamicStyles)\n ) {\n let dynamicContainerStyle = getObjectAsString(\n getContentContainerStyleProps(dynamicStyles)\n )\n dynamicStyles = removeContentContainerStyleProps(dynamicStyles)\n containerStyle = containerStyle\n ? `[${containerStyle},${dynamicContainerStyle}]`\n : dynamicContainerStyle\n }\n if (hasKeys(dynamicStyles)) {\n dynamicStyle = getObjectAsString(dynamicStyles)\n dynamicStyle = dynamicStyle.substr(1, dynamicStyle.length - 2)\n }\n }\n\n if (baseStyle || animatedStyle || dynamicStyle) {\n let style = baseStyle\n if (animatedStyle) {\n // TODO once https://github.com/drcmda/react-spring/issues/337 gets\n // fixed, come back to using the array notation\n style = `{...${baseStyle},${animatedStyle},${dynamicStyle || ''}}`\n } else if (dynamicStyle) {\n style = `[${baseStyle},{${dynamicStyle}}]`\n }\n\n state.render.push(` style={${style}}`)\n }\n\n if (containerStyle) {\n state.render.push(` contentContainerStyle={${containerStyle}}`)\n }\n}\n","let blacklist = [\n 'appregion',\n 'backgroundimage',\n 'backgroundsize',\n 'classname',\n 'clippath',\n 'cursor',\n 'fontweight',\n 'format',\n 'goto',\n 'isdisabled',\n 'isfragment',\n 'onclickusediv',\n 'onsubmit',\n 'overflow',\n 'overflowx',\n 'overflowy',\n 'pagebreakinside',\n 'perspective',\n 'rotatez',\n 'scalez',\n 'shadowspread',\n 'texttransform',\n 'transformorigin',\n 'transformoriginz',\n 'transition',\n 'translatez',\n 'type',\n 'userselect',\n]\n\nexport default (node, parent, state) =>\n !blacklist.includes(node.name.toLowerCase())\n","import * as PropertiesStyle from './properties-style.js'\nimport * as PropertyFormat from '../react/property-format.js'\nimport * as PropertyRef from '../react/property-ref.js'\nimport * as PropertyRest from '../react/property-rest.js'\nimport * as PropertyStyle from '../react/property-style.js'\nimport * as PropertyText from '../react/property-text.js'\nimport * as PropertyViewPath from '../react/property-view-path.js'\nimport { isColumn } from '../utils.js'\nimport isValidPropertyForBlock from './is-valid-property-for-block.js'\n\nexport function enter(node, parent, state) {\n if (node.isFragment) return false\n\n PropertiesStyle.enter(node, parent, state)\n PropertyFormat.enter(node, parent, state)\n PropertyViewPath.enter(node, parent, state)\n\n node.properties.forEach(propNode => {\n if (\n propNode.name === 'lazy' ||\n propNode.name === 'at' ||\n propNode.name === 'when' ||\n propNode.name === 'onWhen' ||\n propNode.tags.unsupportedShorthand ||\n (!isValidPropertyForBlock(propNode, node, state) && node.isBasic) ||\n (propNode.name === 'from' &&\n (node.name === 'List' || node.name === 'Table')) ||\n (propNode.name === 'key' && parent.isList) ||\n (propNode.name === 'pass' && node.isList) ||\n (propNode.name === 'opacity' && state.isSvg) ||\n (propNode.name === 'width' && isColumn(node))\n )\n return\n\n !PropertyRef.enter(propNode, node, state) &&\n !PropertyStyle.enter(propNode, node, state) &&\n !PropertyText.enter(propNode, node, state) &&\n PropertyRest.enter(propNode, node, state)\n })\n\n PropertiesStyle.leave(node, parent, state)\n}\n","import { getProp, hasProp } from '../utils.js'\n\nlet SVG_BLOCKS_WITH_OPACITY = [\n 'SvgPath',\n 'SvgCircle',\n 'SvgEllipse',\n 'SvgPolygon',\n 'SvgPolyline',\n 'SvgRect',\n 'SvgText',\n]\n\nexport function enter(node, parent, state) {\n if (node.name === 'Svg' && !parent) {\n state.isSvg = true\n state.svgOpacity = getProp(node, 'opacity')\n } else if (\n state.isSvg &&\n state.svgOpacity &&\n SVG_BLOCKS_WITH_OPACITY.includes(node.name)\n ) {\n if (hasProp(node, 'fill')) {\n node.properties.push({ ...state.svgOpacity, name: 'fillOpacity' })\n }\n\n if (hasProp(node, 'stroke')) {\n node.properties.push({ ...state.svgOpacity, name: 'strokeOpacity' })\n }\n }\n}\n","import { getFlowPath, getProp } from '../utils.js'\nimport getBlockName from './get-block-name.js'\nimport wrap from '../react/wrap.js'\n\nexport let enter = (node, parent, state) => {\n let name = getBlockName(node, parent, state)\n if (\n name === 'Text' &&\n parent &&\n (parent.backgroundImage || parent.ensureBackgroundColor)\n ) {\n node.ensureBackgroundColor = true\n }\n\n if (node.action) {\n let block = 'TouchableWithoutFeedback'\n let isDisabled = getProp(node, 'isDisabled')\n let onClick = getProp(node, 'onClick')\n\n let onPress = wrap(onClick.value)\n\n if (/^on[A-Z]/.test(onClick.name) && onClick.slotName === 'setFlowTo') {\n // TODO warn if action is used but it isn't in actions (on parser)\n // TODO warn that there's setFlowTo without an id (on parser)\n let setFlowTo = getFlowPath(onClick, parent, state)\n state.use('ViewsUseFlow')\n state.setFlowTo = true\n\n onPress = `{() => setFlowTo('${setFlowTo}')}`\n }\n\n let key = getProp(node, 'key')\n\n state.use(block)\n\n state.render.push(\n `<${block}\n activeOpacity={0.7}\n onPress=${onPress}\n ${isDisabled ? `disabled=${wrap(isDisabled.value)}` : ''}\n underlayColor='transparent'\n ${node.isInList ? `key={${key ? key.value : 'index'}}` : ''}>`\n )\n node.wrapEnd = `</${block}>`\n } else if (node.goTo) {\n // let goTo = getProp(node, 'goTo')\n // TODO https://facebook.github.io/react-native/docs/linking.html\n }\n}\n\nexport let leave = (node, parent, state) => {\n if (node.wrapEnd) {\n state.render.push(node.wrapEnd)\n }\n}\n","import * as BlockAddTestIdProp from '../react/block-add-test-id-prop.js'\nimport * as BlockBackgroundImage from './block-background-image.js'\nimport * as BlockCapture from './block-capture.js'\nimport * as BlockColumn from '../react/block-column.js'\nimport * as BlockExplicitChildren from '../react/block-explicit-children.js'\nimport * as BlockGroup from '../react/block-group.js'\nimport * as BlockInList from '../react/block-in-list.js'\nimport * as BlockList from '../react/block-list.js'\nimport * as BlockMaybeSkip from '../react/block-maybe-skip.js'\nimport * as BlockName from './block-name.js'\nimport * as BlockOffWhen from '../react/block-off-when.js'\nimport * as BlockProperties from './block-properties.js'\nimport * as BlockSetTestId from '../react/block-set-test-id.js'\nimport * as BlockSvg from './block-svg.js'\nimport * as BlockTable from '../react/block-table.js'\nimport * as BlockWrap from './block-wrap.js'\n\n// match new lines with ../react-dom/block.js\nexport let enter = [\n BlockMaybeSkip.enter,\n BlockSetTestId.enter,\n BlockOffWhen.enter,\n BlockWrap.enter,\n BlockName.enter,\n BlockTable.enter,\n BlockColumn.enter,\n BlockSvg.enter,\n BlockCapture.enter,\n\n BlockBackgroundImage.enter,\n BlockInList.enter,\n BlockAddTestIdProp.enter,\n\n BlockProperties.enter,\n BlockGroup.enter,\n BlockList.enter,\n]\n\nexport let leave = [\n BlockList.leave,\n BlockExplicitChildren.leave,\n BlockGroup.leave,\n BlockName.leave,\n BlockTable.leave,\n BlockWrap.leave,\n BlockOffWhen.leave,\n]\n","import {\n getProp,\n getScopedCondition,\n isTag,\n maybeMakeHyphenated,\n} from '../utils.js'\n\nexport default function getStyleForProperty(node, parent, state, code) {\n let scopedCondition = getScopedCondition(node, parent, state)\n if (scopedCondition) {\n switch (node.name) {\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return {\n _isScoped: true,\n transform: getTransform(node, parent, state),\n }\n\n default:\n return {\n _isScoped: true,\n [node.name]: getScopedCondition(node, parent, state),\n }\n }\n }\n\n switch (node.name) {\n case 'borderTopLeftRadius':\n case 'borderTopRightRadius':\n case 'borderBottomLeftRadius':\n case 'borderBottomRightRadius':\n return {\n [parent.name === 'Image' ? 'borderRadius' : node.name]: node.value,\n }\n\n case 'borderTopStyle':\n case 'borderBottomStyle':\n case 'borderLeftStyle':\n case 'borderRightStyle':\n return {\n borderStyle: node.value,\n }\n\n case 'shadowColor':\n return decorateShadow({\n shadowColor: node.value,\n })\n\n case 'shadowBlur':\n return decorateShadow({\n shadowRadius: node.value,\n })\n\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n return getShadowOffset(node, parent, state)\n\n case 'fontWeight':\n case 'fontFamily':\n return {\n fontFamily: getFontFamily(node, parent, state),\n }\n\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return {\n transform: getTransform(node, parent, state),\n }\n\n case 'zIndex':\n return {\n zIndex: code ? node.value : parseInt(node.value, 10),\n }\n\n case 'color':\n // TODO handle this but differently as we don't have the placeholder tag anymore\n if (/Capture/.test(parent.name) && isTag(node, 'placeholder')) {\n return {\n _isProp: true,\n placeholderTextColor: node.value,\n }\n }\n // Just returning the node.value in cases where if statement is not true\n // Otherwise it was falling through to the next case.\n return {\n color: node.value,\n }\n\n case 'lineHeight':\n return {\n lineHeight: getLineHeight(node, parent),\n }\n\n default:\n return {\n [node.name]: maybeMakeHyphenated(node),\n }\n }\n}\n\nlet getFontFamily = (node, parent, state) => {\n let fontWeight = getProp(parent, 'fontWeight')\n // let key = node.key.value\n let fontFamily = node.value.replace(/\\s/g, '')\n\n if (fontWeight && (node.tags.slot || fontWeight.tags.slot)) {\n return `\\`${node.tags.slot ? '${props.fontFamily}' : fontFamily}-${\n fontWeight.tags.slot ? '${props.fontWeight}' : fontWeight.value\n }\\``\n }\n\n return fontWeight ? `${fontFamily}-${fontWeight.value}` : fontFamily\n}\n\nlet getLineHeight = (node, parent, state) => {\n let fontSize = getProp(parent, 'fontSize')\n // using a default font size of 16 if none specified\n let fontSizeValue = fontSize ? fontSize.value : 16\n return node.value * fontSizeValue\n}\n\nlet getShadowOffset = (node, parent, state) => {\n let shadowOffsetX = getProp(parent, 'shadowOffsetX')\n let shadowOffsetY = getProp(parent, 'shadowOffsetY')\n\n return decorateShadow({\n // iOS,\n shadowOffset: {\n width: shadowOffsetX ? shadowOffsetX.value : 0,\n height: shadowOffsetY ? shadowOffsetY.value : 0,\n },\n })\n}\n\nlet decorateShadow = obj => {\n obj.elevation = 1 // for Android\n obj.shadowOpacity = 1\n return obj\n}\n\nlet getPropValue = (prop, block, state, unit = '') => {\n if (!prop) return false\n\n let scopedCondition = getScopedCondition(prop, block, state)\n if (scopedCondition) {\n return unit ? `\\`\\${${scopedCondition}}${unit}\\`` : scopedCondition\n }\n\n if (prop.tags.slot) {\n return `\\${${prop.value}}${unit}`\n }\n\n return typeof prop.value === 'number' && unit\n ? `${prop.value}${unit}`\n : prop.value\n}\n\nlet getTransformValue = (prop, parent, state, unit) =>\n prop && {\n [prop.name]: getPropValue(prop, parent, state, unit),\n }\n\nlet getTransform = (node, parent, state) => {\n let rotate = getProp(parent, 'rotate')\n let rotateX = getProp(parent, 'rotateX')\n let rotateY = getProp(parent, 'rotateY')\n let scale = getProp(parent, 'scale')\n let scaleX = getProp(parent, 'scaleX')\n let scaleY = getProp(parent, 'scaleY')\n let translateX = getProp(parent, 'translateX')\n let translateY = getProp(parent, 'translateY')\n\n return [\n getTransformValue(rotate, parent, state, 'deg'),\n getTransformValue(rotateX, parent, state, 'deg'),\n getTransformValue(rotateY, parent, state, 'deg'),\n getTransformValue(scale, parent, state),\n getTransformValue(scaleX, parent, state),\n getTransformValue(scaleY, parent, state),\n getTransformValue(translateX, parent, state),\n getTransformValue(translateY, parent, state),\n ].filter(Boolean)\n}\n","import { hasKeys } from '../utils.js'\n\nexport default ({ styles }) =>\n hasKeys(styles)\n ? `let styles = StyleSheet.create(${JSON.stringify(styles)})`\n : ''\n","import {\n getActionableParent,\n getFlowPath,\n getProp,\n getScopedCondition,\n getScopedImageCondition,\n getScopes,\n hasCustomBlockParent,\n isValidImgSrc,\n pushImageToState,\n} from '../utils.js'\nimport safe from '../react/safe.js'\nimport wrap from '../react/wrap.js'\nimport toCamelCase from 'to-camel-case'\n\nlet isUrl = (str) => /^https?:\\/\\//.test(str)\n\nfunction getImageSource(node, parent, state) {\n let scopes = getScopes(node, parent, state)\n\n if (scopes && (isUrl(node.value) || node.tags.slot)) {\n return `{{ uri: ${getScopedCondition(node, parent, state)} }}`\n } else if (isUrl(node.value) || node.tags.slot) {\n if (node.defaultValue && !isUrl(node.defaultValue)) {\n state.slots.forEach((item) => {\n if (item.defaultValue === node.defaultValue) {\n item.type = 'import'\n let name = toCamelCase(item.defaultValue)\n if (!state.images.includes(item.defaultValue)) {\n state.images.push({\n name,\n file: item.defaultValue,\n })\n }\n item.defaultValue = name\n }\n })\n }\n return `{{ uri: ${node.tags.slot ? node.value : safe(node.value)} }}`\n } else {\n if (scopes) {\n pushImageToState(state, scopes.scopedNames, scopes.paths)\n }\n let name = toCamelCase(node.value)\n if (!state.images.includes(node.value)) {\n state.images.push({\n name,\n file: node.value,\n })\n }\n\n return scopes\n ? wrap(\n getScopedImageCondition(scopes.scopedProps, scopes.scopedNames, name)\n )\n : `{${name}}`\n }\n}\n\nlet CHILD_VALUES = /props\\.(isSelected|isHovered|isFocused|isSelectedHovered)/\nlet ON_IS_SELECTED = /(onClick|onPress|goTo)/\n\nexport default function getValueForProperty(node, parent, state) {\n if (\n state.data &&\n (node.value === '!props.value' ||\n node.value === 'props.value' ||\n node.value === 'props.onSubmit' ||\n node.value === 'props.onChange' ||\n node.value === 'props.isInvalid' ||\n node.value === 'props.isInvalidInitial' ||\n node.value === 'props.isValid' ||\n node.value === 'props.isValidInitial' ||\n node.value === 'props.onSubmit')\n ) {\n return {\n [node.name]: `{${node.value.replace('props.', 'data.')}}`,\n }\n } else if (/!?props\\.(isFlow|flow)$/.test(node.value)) {\n let flowPath = getFlowPath(node, parent, state)\n state.use('ViewsUseFlow')\n state.useFlow = true\n\n return {\n [node.name]: `{${node.value.replace(\n /props\\.(isFlow|flow)/,\n `flow.has('${flowPath}')`\n )}}`,\n }\n } else if (hasCustomBlockParent(parent) && CHILD_VALUES.test(node.value)) {\n return {\n [node.name]: `{${node.value.replace('props.', 'childProps.')}}`,\n }\n } else if (isValidImgSrc(node, parent)) {\n return (\n !parent.isSvg && {\n source: getImageSource(node, parent, state),\n }\n )\n } else if (getScopedCondition(node, parent, state)) {\n return {\n [node.name]: safe(getScopedCondition(node, parent, state)),\n }\n } else if (/^on[A-Z]/.test(node.name) && node.slotName === 'setFlowTo') {\n let flowPath = getFlowPath(node, parent, state)\n state.use('ViewsUseFlow')\n state.setFlowTo = true\n\n let ret = {\n [node.name]: `{() => setFlowTo('${flowPath}')}`,\n }\n\n if (!parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useFlow = true\n ret[\n node.name.replace(ON_IS_SELECTED, 'isSelected')\n ] = `{flow.has('${flowPath}')}`\n }\n\n if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n ret['...'] = `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`\n }\n\n return ret\n } else if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n return {\n '...': `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`,\n [node.name]: safe(node.value, node),\n }\n } else if (\n CHILD_VALUES.test(node.value) &&\n !!getActionableParent(parent) &&\n !parent.isBasic\n ) {\n // TODO support more than one hover/selected in the same block - let's wait\n // for a use case\n if (/isHovered/.test(node.value)) {\n return {\n [node.name]: safe(node.value.replace('props.', ''), node),\n }\n } else if (/isSelected/.test(node.value)) {\n try {\n let actionableParent = getActionableParent(parent)\n let flowPath = getFlowPath(\n getProp(actionableParent, 'onClick'),\n actionableParent,\n state\n )\n state.use('ViewsUseFlow')\n state.useFlow = true\n return {\n [node.name]: `{flow.has('${flowPath}')}`,\n }\n } catch (error) {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n}\n","export default state => {\n if (Object.keys(state.styles).length > 0) {\n state.uses.push('StyleSheet')\n }\n}\n","import * as visitor from './react-native/block.js'\nimport getStyleForProperty from './react-native/get-style-for-property.js'\nimport getStyles from './react-native/get-styles.js'\nimport getValueForProperty from './react-native/get-value-for-property.js'\nimport getViewRelativeToView from '../get-view-relative-to-view.js'\nimport makeGetImport from './react/make-get-import.js'\nimport maybeUsesTextInput from './react-native/maybe-uses-text-input.js'\nimport maybeUsesStyleSheet from './react-native/maybe-uses-style-sheet.js'\nimport restrictedNames from './react-native/restricted-names.js'\nimport toComponent from './react/to-component.js'\nimport walk from './walk.js'\n\nlet imports = {\n DismissKeyboard: `import dismissKeyboard from 'dismissKeyboard'`,\n}\n\nexport default ({\n getFontImport,\n getSystemImport,\n reactNativeLibraryImport = 'react-native',\n src,\n tools,\n view,\n viewsById,\n viewsToFiles,\n}) => {\n let name = view.id\n let finalName = restrictedNames.includes(name) ? `${name}1` : name\n\n let state = {\n animations: {},\n animated: new Set(),\n images: [],\n data: view.parsed.view.data,\n dataFormat: view.parsed.view.dataFormat,\n dataValidate: view.parsed.view.dataValidate,\n dependencies: new Set(),\n flow: null,\n setFlowTo: false,\n getFontImport: (font) => getFontImport(font, view),\n getStyleForProperty,\n getValueForProperty,\n hasRefs: false,\n isReactNative: true,\n isStory: (id) => {\n let viewInView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n\n return viewInView && !viewInView.custom && viewInView.parsed.view.isStory\n },\n lazy: {},\n name: finalName,\n viewPath: view.parsed.view.viewPath,\n viewPathParent: view.parsed.view.viewPathParent,\n remap: {},\n render: [],\n styles: {},\n testIdKey: 'testID',\n viewPathKey: 'testID',\n testIds: {},\n tools,\n reactNativeLibraryImport,\n usedBlockNames: { [finalName]: 1, AutoSizer: 1, Column: 1, Table: 1 },\n uses: [],\n use(block, isLazy = false) {\n if (isLazy) {\n state.lazy[block] = true\n }\n\n if (\n state.uses.includes(block) ||\n /props/.test(block) ||\n 'React.Fragment' === block\n )\n return\n\n if (block === finalName) {\n state.name = `${view.id}${state.usedBlockNames[finalName]++}`\n }\n\n state.uses.push(block)\n },\n useIsBefore: view.parsed.view.useIsBefore,\n useIsMedia: view.parsed.view.useIsMedia,\n }\n\n state.fonts = view.parsed.fonts\n state.slots = view.parsed.slots\n\n walk(view.parsed.view, visitor, state)\n\n maybeUsesTextInput(state)\n maybeUsesStyleSheet(state)\n\n if (state.data) {\n state.use('ViewsUseData')\n }\n\n return {\n code: toComponent({\n getImport: makeGetImport({\n imports,\n getSystemImport,\n src,\n view,\n viewsById,\n viewsToFiles,\n }),\n getStyles,\n name: finalName,\n state,\n }),\n dependencies: state.dependencies,\n flow: state.flow,\n flowDefaultState: state.flowDefaultState,\n // fonts: view.parsed.fonts,\n // slots: view.parsed.slots,\n }\n}\n","import reactNativeMorph from './react-native.js'\n\nexport default options =>\n reactNativeMorph({\n ...options,\n reactNativeLibraryImport: '@react-pdf/renderer',\n })\n","import reactDom from './morph/react-dom.js'\nimport reactNative from './morph/react-native.js'\nimport reactPdf from './morph/react-pdf.js'\n\nexport default {\n 'react-dom': reactDom,\n 'react-native': reactNative,\n 'react-pdf': reactPdf,\n}\n","import chalk from 'chalk'\nimport morphers from './morphers.js'\n// import prettier from 'prettier'\n\nexport default function maybeMorph({\n as,\n getFontImport,\n getSystemImport,\n src,\n tools,\n view,\n viewsById,\n viewsToFiles,\n verbose,\n}) {\n let result = null\n try {\n result = morphers[as]({\n getFontImport,\n getSystemImport,\n src,\n tools,\n view,\n viewsById,\n viewsToFiles,\n })\n\n view.version++\n\n verbose &&\n console.log(\n `${chalk.green('M')} ${view.id}@${view.version}:${chalk.dim(view.file)}`\n )\n\n return result.code\n\n // return prettier.format(result.code, {\n // parser: 'babel',\n // singleQuote: true,\n // trailingComma: 'es5',\n // })\n } catch (error) {\n console.error(chalk.red('M'), view, error.codeFrame || error)\n return `import { useEffect } from 'react'\n\nexport default function ${view.id}() {\n useEffect(() => {\n console.error({\n type: 'morph',\n view: '${view.id}',\n file: '${view.file}',\n todo: \"Report to https://github.com/viewstools/morph/issues/new with .view and .view.js files and what changed when it failed. This will help us improve the morpher. Thanks!\",\n })\n }, [])\n\n return \"😳 Can't morph '${view.id}'. See console for more details.\"\n}\n\n/*\n>>> CODE\n${result && result.code.replace(/(\\/\\*|\\*\\/)/g, '')}\n\n\n>>> ERROR\n${error.message}\n${error.stack}\n*/`\n }\n}\n","import maybeMorph from './maybe-morph.js'\nimport path from 'path'\n\nexport default function morphAllViews({\n as,\n getFontImport,\n getSystemImport,\n filesView,\n src,\n tools,\n viewsById,\n viewsToFiles,\n}) {\n return [...filesView]\n .map(file => viewsToFiles.get(file))\n .filter(view => !view.custom)\n .map(view => ({\n file: path.join(path.dirname(view.file), 'view.js'),\n content: maybeMorph({\n as,\n getFontImport,\n getSystemImport,\n src,\n tools,\n verbose: false,\n view,\n viewsById,\n viewsToFiles,\n }),\n }))\n}\n","import chalk from 'chalk'\n\nexport default function maybePrintWarnings(view, verbose) {\n if (!verbose || !view.parsed || view.parsed.warnings.length === 0) return\n\n console.error(chalk.red(view.id), chalk.dim(view.file))\n\n view.parsed.warnings.forEach(warning => {\n console.error(\n ` ${chalk.yellow(warning.loc.start.line)}: ${chalk.blue(\n warning.type\n )} Line: \"${warning.line}\"`\n )\n })\n console.log('')\n}\n","export let STYLE = [\n 'alignContent',\n 'alignItems',\n 'alignSelf',\n 'animation',\n 'appRegion',\n 'background',\n 'backgroundColor',\n 'backgroundImage',\n 'backgroundPosition',\n 'backgroundRepeat',\n 'backgroundSize',\n 'backdropFilter',\n 'borderBottomColor',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n 'borderBottomStyle',\n 'borderBottomWidth',\n 'borderColor',\n 'borderLeftColor',\n 'borderLeftStyle',\n 'borderLeftWidth',\n 'borderRightColor',\n 'borderRightStyle',\n 'borderRightWidth',\n 'borderStyle',\n 'borderTopColor',\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderTopStyle',\n 'borderTopWidth',\n 'borderWidth',\n 'bottom',\n 'clipPath',\n 'color',\n 'cursor',\n 'display',\n 'direction',\n 'fill',\n 'filter',\n 'flexGrow',\n 'flexBasis',\n 'flexDirection',\n 'flexFlow',\n 'flexShrink',\n 'flexWrap',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'height',\n 'hyphens',\n 'justifyContent',\n 'left',\n 'letterSpacing',\n 'lineHeight',\n 'marginBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'maxHeight',\n 'maxWidth',\n 'minHeight',\n 'minWidth',\n 'opacity',\n 'outlineColor',\n 'outlineOffset',\n 'outlineStyle',\n 'outlineWidth',\n 'overflowWrap',\n 'overflowX',\n 'overflowY',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'pointerEvents',\n 'position',\n 'resize',\n 'right',\n 'shadowColor',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'shadowBlur',\n 'shadowSpread',\n 'shadowInset',\n 'stroke',\n 'strokeDashoffset',\n 'strokeDasharray',\n 'textAlign',\n 'textDecoration',\n 'textOverflow',\n 'textJustify',\n 'textTransform',\n 'top',\n 'translateX',\n 'translateY',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'transformOriginX',\n 'transformOriginY',\n 'transition',\n 'unicodeBidi',\n 'userSelect',\n 'whiteSpace',\n 'width',\n 'wordBreak',\n 'wordSpacing',\n 'wordWrap',\n 'zIndex',\n // '@fontFace',\n // '@keyframes',\n // '@media',\n // 'background',\n // 'backgroundAttachment',\n // 'backgroundBlend-mode',\n // 'backgroundClip',\n // 'backgroundOrigin',\n // 'backgroundPosition',\n // 'backgroundRepeat',\n // 'border',\n // 'borderBottom',\n // 'borderCollapse',\n // 'borderImage',\n // 'borderImageOutset',\n // 'borderImageRepeat',\n // 'borderImageSlice',\n // 'borderImageSource',\n // 'borderImageWidth',\n // 'borderLeft',\n // 'borderRadius',\n // 'borderRight',\n // 'borderSpacing',\n // 'borderTop',\n // 'boxShadow',\n // 'boxSizing',\n // 'captionSide',\n // 'clear',\n // 'clip',\n // 'column-gap',\n // 'columnCount',\n // 'columnFill',\n // 'columnRule',\n // 'columnRuleColor',\n // 'columnRuleStyle',\n // 'columnRuleWidth',\n // 'columnSpan',\n // 'columnWidth',\n // 'columns',\n // 'content',\n // 'counterIncrement',\n // 'counterReset',\n // 'direction',\n // 'display',\n // 'emptyCells',\n // 'float',\n // 'font',\n // 'font-variant',\n // 'fontSizeAdjust',\n // 'fontStretch',\n // 'hangingPunctuation',\n // 'listStyle',\n // 'listStyleImage',\n // 'listStylePosition',\n // 'listStyleType',\n // 'margin',\n // 'nav-up',\n // 'navDown',\n // 'navIndex',\n // 'navLeft',\n // 'navRight',\n 'order',\n // 'outline',\n // 'overflow',\n // 'padding',\n // 'pageBreakAfter',\n // 'pageBreakBefore',\n // 'pageBreakInside',\n 'perspective',\n 'perspectiveOrigin',\n // 'quotes',\n // 'tabSize',\n // 'tableLayout',\n // 'textAlignLast',\n 'textDecorationColor',\n 'textDecorationLine',\n 'textDecorationStyle',\n // 'textIndent',\n // 'textShadow',\n // 'transformStyle',\n // 'transitionDelay',\n // 'transitionDuration',\n // 'transitionProperty',\n // 'transitionTimingFunction',\n // 'unicodeBidi',\n // 'verticalAlign',\n 'visibility',\n]\nexport let ROWSTYLE = [\n 'rowBackgroundColor',\n 'rowBackgroundColorAlternate',\n 'rowColor',\n 'rowColorAlternate',\n]\n\nexport let isStyle = (name) => STYLE.includes(name)\nexport let isRowStyle = (name) => ROWSTYLE.includes(name)\n","export default {\n width: true,\n maxWidth: true,\n minWidth: true,\n height: true,\n maxHeight: true,\n minHeight: true,\n margin: true,\n marginBottom: true,\n marginLeft: true,\n marginRight: true,\n marginTop: true,\n padding: true,\n paddingBottom: true,\n paddingLeft: true,\n paddingRight: true,\n paddingTop: true,\n bottom: true,\n left: true,\n right: true,\n top: true,\n outline: true,\n opacity: true,\n zIndex: true,\n shadowOffsetY: true,\n shadowOffsetX: true,\n shadowSpread: true,\n shadowRadius: true,\n perspective: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n translateX: true,\n translateY: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: true,\n borderBottomWidth: true,\n borderLeftWidth: true,\n borderRadius: true,\n borderRightWidth: true,\n borderTopLeftRadius: true,\n borderTopRightRadius: true,\n borderTopWidth: true,\n borderWidth: true,\n fontSize: true,\n fontWeight: true,\n letterSpacing: true,\n lineHeight: true,\n wordSpacing: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n}\n","import { isRowStyle, isStyle /*, STYLE*/ } from './prop-is-style.js'\nimport { fontFamily as googleFontFamilies } from '../morph/fonts.js'\n// import DidYouMeanMatcher from './did-you-mean.js'\nimport isNumber from './prop-is-number.js'\nimport toSlugCase from 'to-slug-case'\n\n// let dymPropMatcher = new DidYouMeanMatcher([\n// ...STYLE,\n// 'at',\n// 'className',\n// 'cx',\n// 'cy',\n// 'd',\n// 'data',\n// 'xdata',\n// 'dataFormat',\n// 'defaultValue',\n// 'fill',\n// 'from',\n// 'direction',\n// 'id',\n// 'is',\n// 'key',\n// 'maxLength',\n// 'max',\n// 'min',\n// 'onBlur',\n// 'onChange',\n// 'onClick',\n// 'onClickUseDiv',\n// 'onDrag',\n// 'onDragEnd',\n// 'onDragEnter',\n// 'onDragExit',\n// 'onDragLeave',\n// 'onDragOver',\n// 'onDragStart',\n// 'onDrop',\n// 'onFocus',\n// 'onFocus',\n// 'onMouseDown',\n// 'onMouseEnter',\n// 'onMouseLeave',\n// 'onMouseMove',\n// 'onMouseOver',\n// 'onMouseUp',\n// 'onWheel',\n// 'onWhen',\n// 'order',\n// 'r',\n// 'ref',\n// 'rx',\n// 'ry',\n// 'step',\n// 'stroke',\n// 'stroke',\n// 'strokeLinecap',\n// 'strokeLinejoin',\n// 'strokeMiterlimit',\n// 'strokeWidth',\n// 'tabIndex',\n// 'text',\n// 'type',\n// 'value',\n// 'viewBox',\n// 'when',\n// 'x',\n// 'x1',\n// 'x2',\n// 'y',\n// 'y1',\n// 'y2',\n// ])\n\nexport let makeDidYouMeanBlock = (views) => {\n let dymBlockMatcher = new DidYouMeanMatcher(\n 'Block|Capture|CaptureTextArea|Children|Horizontal|Image|List|Svg|SvgCircle|SvgEllipse|SvgDefs|SvgGroup|SvgLinearGradient|SvgRadialGradient|SvgLine|SvgPath|SvgPolygon|SvgPolyline|SvgRect|SvgSymbol|SvgText|SvgUse|SvgStop|Text|View|Vertical'\n .split('|')\n .concat(views)\n )\n return (block) => dymBlockMatcher.get(block)\n}\n\n// export let didYouMeanProp = (prop) => dymPropMatcher.get(prop)\n\n// export let makeDidYouMeanFontFamily = (customFonts) => {\n// let dymFontFamilyMatcher = new DidYouMeanMatcher(\n// googleFontFamilies.concat(customFonts)\n// )\n// return (family) => dymFontFamilyMatcher.get(family)\n// }\n\nlet ANIMATION = /(.+)(?:\\s)(spring|linear|easeOut|easeInOut|easeIn|ease)(?:\\s?(.*)?)/\nlet BASIC = /^(Block|Capture|CaptureTextArea|Children|Column|Horizontal|Image|List|Svg|SvgCircle|SvgEllipse|SvgDefs|SvgGroup|SvgLinearGradient|SvgRadialGradient|SvgLine|SvgPath|SvgPolygon|SvgPolyline|SvgRect|SvgSymbol|SvgText|SvgUse|SvgStop|Table|Text|View|Vertical)$/i\nlet BLOCK = /^(\\s*)([A-Z][a-zA-Z0-9]*)(\\s+([A-Z][a-zA-Z0-9]*))?$/\nlet BOOL = /^(false|true)$/i\nlet CAPTURE = /^(Capture|CaptureTextArea)$/i\nexport let CAPTURE_TYPES = [\n 'email',\n 'file',\n 'number',\n 'phone',\n 'secure',\n 'text',\n]\nlet COMMENT = /^#(.+)$/\nlet FLOAT = /^-?[0-9]+\\.[0-9]+$/\nlet FONTABLE = /^(Capture|CaptureTextArea|Text)$/\nlet INT = /^-?[0-9]+$/\nlet NOT_GROUP = /^(Image|Text|SvgCircle|SvgEllipse|SvgLine|SvgPath|SvgPolygon|SvgPolyline|SvgRect|SvgText|SvgStop)$/i\nlet PROP = /^([a-z][a-zA-Z0-9]*)(\\s+(.+))?$/\nlet UNSUPPORTED_SHORTHAND = {\n border: ['borderWidth', 'borderStyle', 'borderColor'],\n borderBottom: ['borderBottomWidth', 'borderBottomStyle', 'borderBottomColor'],\n borderTop: ['borderTopWidth', 'borderTopStyle', 'borderTopColor'],\n borderRight: ['borderRightWidth', 'borderRightStyle', 'borderRightColor'],\n borderLeft: ['borderLeftWidth', 'borderLeftStyle', 'borderLeftColor'],\n borderRadius: [\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n ],\n boxShadow: [\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'shadowBlur',\n 'shadowSpread',\n 'shadowColor',\n ],\n flex: ['flexGrow', 'flexShrink', 'flexBasis'],\n margin: ['marginTop', 'marginRight', 'marginBottom', 'marginLeft'],\n padding: ['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n textShadow: ['shadowOffsetX', 'shadowOffsetY', 'shadowBlur', 'shadowColor'],\n outline: ['outlineWidth', 'outlineStyle', 'outlineColor'],\n overflow: ['overflowX', 'overflowY'],\n transform: [\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'scale',\n 'translateX',\n 'translateY',\n ],\n transformOrigin: ['transformOriginX', 'transformOriginY'],\n}\nlet TRUE = /^true$/i\nlet USER_COMMENT = /^##(.*)$/\n// TODO slot can't start with a number\nlet SLOT = /^<((!)?([a-zA-Z0-9]+))?(\\s+(.+))?$/\n\nexport let is = (thing, line) => thing.test(line)\n// TODO only parse animations on lines with less than 250 chars because longer\n// lines are too expensive for that regex - like svg paths\nexport let isAnimation = (line) => line.length < 250 && is(ANIMATION, line)\nexport let isBasic = (line) => is(BASIC, line)\nexport let isBlock = (line) => is(BLOCK, line)\nexport let isBool = (line) => is(BOOL, line)\nexport let isCapture = (line) => is(CAPTURE, line)\nexport let isColumn = (line) => line === 'Column'\nexport let isComment = (line) => is(COMMENT, line)\nexport let isEmptyText = (line) => line === ''\nexport let isEnd = (line) => line === ''\nexport let isFloat = (line) => is(FLOAT, line)\nexport let isFragment = (line) => line === 'isFragment'\nexport let isFontable = (line) => is(FONTABLE, line)\nexport let isGroup = (line) => !is(NOT_GROUP, line) && !isCapture(line)\nexport let isList = (line) => line === 'List'\nexport let isInt = (line) => is(INT, line)\nexport let isProp = (line) => is(PROP, line)\nexport let isSlot = (line) => is(SLOT, line)\nexport let isTable = (line) => line === 'Table'\nexport let isUnsupportedShorthand = (name) => name in UNSUPPORTED_SHORTHAND\nexport { isRowStyle, isStyle }\nexport let isTrue = (line) => is(TRUE, line)\nexport let isUserComment = (line) => is(USER_COMMENT, line)\n\nlet get = (regex, line) => line.match(regex)\n\nlet addDefaults = (animationType, properties) => {\n // if (!properties.delay) {\n // properties.delay = 0\n // }\n\n if (animationType !== 'spring' && !properties.duration) {\n properties.duration = 150\n } else if (animationType === 'spring') {\n if (!properties.tension) {\n properties.tension = 170\n }\n if (!properties.friction) {\n properties.friction = 26\n }\n }\n return properties\n}\n\nexport let getAnimation = (line) => {\n // eslint-disable-next-line\n let [_, defaultValue, animationType, animationValues] = get(ANIMATION, line)\n let properties = {\n curve: animationType,\n }\n\n if (animationValues) {\n let values = animationValues.split(' ')\n for (let i = 0; i < values.length; i = i + 2) {\n properties[values[i]] = getValue(values[i + 1])\n }\n }\n\n addDefaults(animationType, properties)\n\n return {\n id: Object.keys(properties)\n .sort()\n .map((key) => `${key}${properties[key]}`)\n .join(''),\n defaultValue: getValue(defaultValue),\n properties,\n }\n}\n\nexport let getBlock = (line) => {\n // eslint-disable-next-line\n let [_, indentation, is, _1, block] = get(BLOCK, line)\n return {\n block: block || is,\n is: block ? is : null,\n level: Math.floor(indentation.length / 2),\n }\n}\nexport let getComment = (line) => {\n try {\n return get(COMMENT, line).slice(1)\n } catch (err) {\n return ''\n }\n}\n\nexport let getData = (maybeProp) => {\n if (!maybeProp) return null\n\n let match = maybeProp.value.match(/^((show|capture)\\s+)?(.+)$/)\n if (!match) return null\n\n let path = match[3]\n let [context = null] = /\\./.test(path) ? path.split('.') : [path]\n\n return { path, context }\n}\n\nexport let getDataFormat = (maybeProp) => {\n if (!maybeProp || !maybeProp.value) return null\n let [formatIn, formatOut] = maybeProp.value.split(' ')\n return {\n type: 'js',\n formatIn,\n formatOut,\n }\n}\n\nexport let getDataValidate = (maybeProp) => {\n if (!maybeProp || !maybeProp.value) return null\n let [value, required] = maybeProp.value.split(' ')\n return {\n type: 'js',\n value,\n required: required === 'required',\n }\n}\n\nexport let getFormat = (line) => {\n let properties = {}\n let values = line.split(' ')\n let formatKey = values[0]\n\n if (values.length === 2) {\n properties[formatKey] = values[1]\n } else {\n properties[formatKey] = {}\n for (let i = 1; i < values.length; i = i + 2) {\n properties[formatKey][values[i]] = getValue(values[i + 1])\n }\n }\n\n return properties\n}\nexport let getProp = (line) => {\n // eslint-disable-next-line\n let [_, name, _1, value = ''] = get(PROP, line)\n\n let prop = { name, isSlot: false, value }\n\n if (is(SLOT, value)) {\n let [\n // eslint-disable-next-line\n _2,\n slotIsNot = false,\n slotName = '',\n // eslint-disable-next-line\n _3,\n // eslint-disable-next-line\n defaultValue = '',\n ] = getSlot(value)\n\n prop.isSlot = true\n prop.slotIsNot = slotIsNot === '!'\n prop.slotName = slotName\n prop.value = defaultValue || value\n }\n\n return prop\n}\nexport let getSlot = (line) => get(SLOT, line).slice(1)\nexport let getUnsupportedShorthandExpanded = (name, value) => {\n let props = UNSUPPORTED_SHORTHAND[name]\n\n if (name === 'borderRadius') {\n let theValue = value.replace('px', '')\n\n return [\n `${props[0]} ${theValue}`,\n `${props[1]} ${theValue}`,\n `${props[2]} ${theValue}`,\n `${props[3]} ${theValue}`,\n ]\n } else if (name.startsWith('border') || name === 'outline') {\n let [width, style, ...color] = value.split(' ')\n\n return [\n `${props[0]} ${width.replace('px', '')}`,\n `${props[1]} ${style}`,\n `${props[2]} ${color.join(' ')}`,\n ]\n } else if (name === 'boxShadow') {\n let [offsetX, offsetY, blurRadius, spreadRadius, ...color] = value.split(\n ' '\n )\n\n return [\n `${props[0]} ${offsetX.replace('px', '')}`,\n `${props[1]} ${offsetY.replace('px', '')}`,\n `${props[2]} ${blurRadius.replace('px', '')}`,\n `${props[3]} ${spreadRadius.replace('px', '')}`,\n `${props[4]} ${color.join(' ')}`,\n ]\n } else if (name === 'textShadow') {\n let [offsetX, offsetY, blurRadius, ...color] = value.split(' ')\n\n return [\n `${props[0]} ${offsetX.replace('px', '')}`,\n `${props[1]} ${offsetY.replace('px', '')}`,\n `${props[2]} ${blurRadius.replace('px', '')}`,\n `${props[3]} ${color.join(' ')}`,\n ]\n } else if (name === 'overflow') {\n return [`${props[0]} ${value}`, `${props[1]} ${value}`]\n } else if (name === 'padding' || name === 'margin') {\n let [top, right, bottom, left] = value.split(' ')\n top = top.replace('px', '')\n right = right ? right.replace('px', '') : top\n bottom = bottom ? bottom.replace('px', '') : top\n left = left ? left.replace('px', '') : right || top\n\n return [\n `${props[0]} ${top}`,\n `${props[1]} ${right}`,\n `${props[2]} ${bottom}`,\n `${props[3]} ${left}`,\n ]\n } else if (name === 'flex') {\n return [`flexGrow ${value}`, 'flexShrink 1', 'flexBasis 0%']\n } else if (name === 'transform') {\n return [`expand the values like: translateX 10`]\n } else if (name === 'transformOrigin') {\n let [x, y] = value.split(' ')\n return [`${props[0]} ${x}`, `${props[1]} ${y || x}`]\n }\n\n return []\n}\nexport let getValue = (value, name) => {\n if (isFloat(value)) {\n return parseFloat(value, 10)\n } else if (isInt(value)) {\n return parseInt(value, 10)\n } else if (isEmptyText(value)) {\n return ''\n } else if (isBool(value)) {\n return isTrue(value)\n } else {\n return maybeMakeHyphenated(value, name)\n }\n}\n\nlet SYSTEM_SCOPES = [\n 'isDisabled',\n 'isFocused',\n // 'isHovered',\n 'isPlaceholder',\n // 'isSelected',\n // TODO do we want to do media queries here?\n]\nexport let isSystemScope = (name) => SYSTEM_SCOPES.includes(name)\n\nlet isActionable = (name) => name !== 'onWhen' && /^on[A-Z]/.test(name)\n\nexport let getPropType = (block, name, defaultValue) =>\n block.isList && name === 'from'\n ? 'array'\n : isActionable(name)\n ? 'function'\n : isNumber[name]\n ? 'number'\n : 'string'\n\nlet MAYBE_HYPHENATED_STYLE_PROPS = [\n 'alignContent',\n 'alignItems',\n 'alignSelf',\n 'backgroundBlendMode',\n 'backgroundClip',\n 'backgroudOrigin',\n 'backgroundRepeat',\n 'boxSizing',\n 'clear',\n 'cursor',\n 'flexBasis',\n 'flexDirection',\n 'flexFlow',\n 'flexWrap',\n 'float',\n 'fontStretch',\n 'justifyContent',\n 'objectFit',\n 'overflowWrap',\n 'textAlign',\n 'textDecorationLine',\n 'textTransform',\n 'whiteSpace',\n 'wordBreak',\n]\n\nexport let maybeMakeHyphenated = (value, name) =>\n MAYBE_HYPHENATED_STYLE_PROPS.includes(name) && /^[a-zA-Z]+$/.test(value)\n ? toSlugCase(value)\n : value\n\nexport function sortScopes(scopes) {\n let isHovered = scopes.find((item) => item.slotName === 'isHovered')\n let isSelected = scopes.find((item) => item.slotName === 'isSelected')\n let isSelectedHovered = scopes.find(\n (item) => item.slotName === 'isSelectedHovered'\n )\n\n return [\n isSelectedHovered,\n isSelected,\n isHovered,\n ...scopes.filter(\n (item) =>\n !/^(isHovered|isSelected|isSelectedHovered)$/.test(item.slotName)\n ),\n ].filter(Boolean)\n}\n","export default (line, scolumn, ecolumn) => ({\n start: {\n line,\n column: scolumn,\n },\n end: {\n line,\n column: ecolumn,\n },\n})\n","import {\n isAnimation,\n isRowStyle,\n isFragment,\n isStyle,\n isUnsupportedShorthand,\n} from './helpers.js'\n\nlet SLOT_PROPS = [\n 'onBlur',\n 'onChange',\n 'onClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onFocus',\n 'onFocus',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOver',\n 'onMouseUp',\n 'onWheel',\n 'onWhen',\n 'when',\n]\nlet shouldBeSlot = (prop, block) =>\n SLOT_PROPS.includes(prop) || (block.isList && prop === 'from')\n\nexport default ({ name, isSlot, slotIsNot, value, block }) => {\n let tags = {}\n\n if (isAnimation(value) && name !== 'text' && name !== 'animation')\n tags.animation = true\n if (isStyle(name)) tags.style = true\n if (isRowStyle(name)) {\n tags.style = true\n tags.rowStyle = true\n }\n if (\n isUnsupportedShorthand(name) &&\n block.isBasic &&\n !block.name.startsWith('Svg')\n ) {\n tags.unsupportedShorthand = true\n }\n\n if (shouldBeSlot(name, block)) tags.shouldBeSlot = true\n if (isSlot) tags.slot = true\n if (slotIsNot) tags.slotIsNot = true\n\n tags.validSlot = tags.slot || (tags.shouldBeSlot && tags.slot) || null\n\n if (isFragment(name)) tags.fragment = true\n\n return tags\n}\n","import {\n CAPTURE_TYPES,\n // makeDidYouMeanBlock,\n // didYouMeanProp,\n getAnimation,\n getBlock,\n getComment,\n getData,\n getDataFormat,\n getDataValidate,\n getFormat,\n getProp,\n getPropType,\n getUnsupportedShorthandExpanded,\n getValue,\n isBasic,\n isBlock,\n isCapture,\n isColumn,\n isComment,\n isFontable,\n isGroup,\n isList,\n isProp,\n isTable,\n isSystemScope,\n isUserComment,\n // makeDidYouMeanFontFamily,\n sortScopes,\n} from './helpers.js'\nimport { isGoogleFont } from '../morph/fonts.js'\nimport getLoc from './get-loc.js'\nimport getTags from './get-tags.js'\nimport path from 'path'\n\nexport default ({\n convertSlotToProps = true,\n customFonts,\n enableSystemScopes = true,\n file,\n id,\n skipComments = true,\n skipInvalidProps = true,\n warnMissingDefaultValue = false,\n source,\n src,\n views,\n}) => {\n // convert crlf to lf\n let text = source.replace(/\\r\\n/g, '\\n')\n let rlines = text.split('\\n')\n let lines = rlines.map((line) => line.trimRight())\n let ignoreIndex = lines.findIndex((line) => /# ignore/.test(line))\n if (ignoreIndex !== -1) {\n lines = lines.slice(0, ignoreIndex)\n }\n let fonts = []\n let isDefiningChildrenExplicitly = false\n let stack = []\n let slots = []\n let useIsBefore = false\n let useIsMedia = false\n let topBlockShouldBe = file.endsWith('.view') ? 'View' : 'Block'\n let view = null\n let viewsInView = new Set()\n let warnings = []\n\n // TODO revisit at a later stage, it was making longer files super slow to\n // parse so we're removing it for now\n // let didYouMeanBlock = makeDidYouMeanBlock([...views.keys()])\n // let didYouMeanFontFamily = makeDidYouMeanFontFamily(\n // [...customFonts.keys()].map((id) => id.split('-')[0])\n // )\n\n let blockIds = []\n function getBlockId(node) {\n let maybeId = node.is || node.name\n\n if (!blockIds.includes(maybeId)) {\n blockIds.push(maybeId)\n return maybeId\n }\n\n let index = 1\n while (blockIds.includes(`${maybeId}${index}`)) {\n index++\n }\n let id = `${maybeId}${index}`\n blockIds.push(id)\n return id\n }\n\n function lookForFonts(block) {\n if (block.properties && (isFontable(block.name) || !block.isBasic)) {\n let fontFamilyProp = block.properties.find((p) => p.name === 'fontFamily')\n if (!fontFamilyProp) return\n\n let family = fontFamilyProp.value\n\n let fontWeightProp = block.properties.find((p) => p.name === 'fontWeight')\n let weight = fontWeightProp ? fontWeightProp.value.toString() : '400'\n\n let fontStyleProp = block.properties.find((p) => p.name === 'fontStyle')\n let style = fontStyleProp ? fontStyleProp.value.toString() : 'normal'\n\n if (\n !fonts.find(\n (font) =>\n font.family === family &&\n font.weight === weight &&\n font.style === style\n )\n ) {\n let font = {\n id: `${family}-${weight}${style === 'italic' ? '-italic' : ''}`,\n isGoogleFont: isGoogleFont(family),\n family,\n weight,\n style,\n }\n\n if (font.isGoogleFont || customFonts.has(font.id)) {\n fonts.push(font)\n\n // TODO revisit at a later stage, it was making longer files super slow to\n // parse so we're removing it for now\n // } else {\n // let meant = didYouMeanFontFamily(family)\n // if (meant && meant !== family) {\n // warnings.push({\n // loc: fontFamilyProp.loc,\n // type: `The font \"${family}\" is missing. Did you mean \"${meant}\" instead?\\nIf not, download the font files (eg, \"${font.id}.woff2\", \"${font.id}.woff\", \"${font.id}.ttf\", etc) and add the to the \"Fonts\" folder.`,\n // line: lines[fontFamilyProp.loc.start.line - 1],\n // })\n // } else if (!font.weight.startsWith('props.')) {\n // warnings.push({\n // loc: fontFamilyProp.loc,\n // type: `The font \"${family}\" is missing.\\nDownload the font files (eg, \"${font.id}.woff2\", \"${font.id}.woff\", \"${font.id}.ttf\", etc) and add the to the \"Fonts\" folder.`,\n // line: lines[fontFamilyProp.loc.start.line - 1],\n // })\n // }\n }\n }\n }\n }\n\n function lookForMultiples(block) {\n let freq = {}\n block.properties.forEach((prop) => {\n if (!(prop.name in freq)) {\n freq[prop.name] = 0\n }\n freq[prop.name]++\n })\n\n let multiples = Object.keys(freq).filter((name) => freq[name] > 1)\n\n if (multiples.length > 0) {\n multiples.forEach((name) =>\n warnings.push({\n loc: block.loc,\n type: `You have declared a value for ${name} ${freq[name]} times. Only the last value will be used. Delete the ones you don't use.`,\n line: lines[block.loc.start.line - 1],\n })\n )\n }\n }\n\n function end(block, endLine) {\n block.loc.end = {\n line: endLine + 1,\n column: Math.max(0, lines[endLine].length - 1),\n }\n\n if (!block.properties) {\n block.properties = []\n }\n\n if (\n block.name === 'List' &&\n !block.properties.some((prop) => prop.name === 'from')\n ) {\n warnings.push({\n loc: block.loc,\n type: `A List needs \"from <\" to work`,\n line: lines[block.loc.start.line - 1],\n })\n }\n\n if (stack.length === 0) {\n // if we're the last block on the stack, then this is the view!\n view = block\n return true\n }\n return false\n }\n\n function parseBlock(line, i) {\n let { block: name, is, level } = getBlock(line)\n let shouldPushToStack = false\n\n let isChildren = name === 'Children'\n if (isChildren) {\n isDefiningChildrenExplicitly = true\n }\n\n let block = {\n type: 'Block',\n name,\n animations: {},\n isAnimated: false,\n isBasic: isBasic(name),\n isCapture: isCapture(name),\n isColumn: isColumn(name),\n isGroup: false,\n isChildren,\n level,\n loc: getLoc(i + 1, 0),\n properties: [],\n scopes: [],\n }\n\n // TODO revisit at a later stage, it was making longer files super slow to\n // parse so we're removing it for now\n // let meant = didYouMeanBlock(name)\n // if (meant) {\n // if (meant !== name) {\n // warnings.push({\n // loc: block.loc,\n // type: `\"${name}\" doesn't exist and won't be morphed. Did you mean \"${meant}\" instead of \"${name}\"?`,\n // line,\n // })\n // block.skip = true\n // }\n // } else {\n // warnings.push({\n // loc: block.loc,\n // type: `\"${name}\" doesn't exist and won't be morphed.\\nCreate the view or rename the block to point to the right view.`,\n // line,\n // })\n // block.skip = true\n // }\n\n if (!block.isBasic) {\n viewsInView.add(block.name)\n }\n\n if (is) {\n block.is = is\n }\n block.id = getBlockId(block)\n let last = stack[stack.length - 1]\n while (last && last.level >= block.level) {\n end(stack.pop(), i)\n last = stack[stack.length - 1]\n }\n\n if (last) {\n shouldPushToStack = true\n\n if (last.isGroup) {\n if (last.isList) {\n if (block.isBasic) {\n warnings.push({\n loc: block.loc,\n type: `A basic block \"${block.name}\" can't be inside a List. Use a view you made instead.`,\n line,\n blocker: true,\n })\n } else if (last.children.length > 0) {\n warnings.push({\n loc: block.loc,\n type: `A List can only have one view inside. \"${block.name}\" is outside of it. Put 1 empty line before.`,\n line,\n })\n } else {\n last.children.push(block)\n }\n } else if (block.isColumn && !last.isTable) {\n warnings.push({\n loc: block.loc,\n type: `Only tables can contain columns. Put this column directly inside a table.`,\n line,\n })\n } else {\n last.children.push(block)\n }\n } else {\n end(stack.pop(), i)\n\n // inside a block that isn't a group\n if (last.isBasic) {\n warnings.push({\n loc: block.loc,\n type: `${block.is || block.name} is inside a block ${\n last.is || last.name\n } but ${\n last.name\n } isn't a container and can't have blocks inside of it.\\nIndent it one level less.`,\n line,\n })\n } else {\n warnings.push({\n loc: block.loc,\n type: `${\n block.is || block.name\n } is inside a view. While that's allowed for now, it may break in the future. Ideally, you'd refactor it into its specific own view.`,\n line,\n })\n }\n }\n } else if (view !== null) {\n warnings.push({\n loc: block.loc,\n type: `${\n block.is || block.name\n } is outside of the top block and it won't render. Views relies on indentation to nest child views within ${topBlockShouldBe} blocks\\nTo fix it, either:\\na) Indent ${\n block.is || block.name\n } within the top block and indent all nested views within ${\n block.is || block.name\n }, or\\nb) remove it.`,\n line,\n })\n }\n\n if (isGroup(name)) {\n block.isGroup = true\n block.isList = isList(name)\n block.isTable = isTable(name)\n block.children = []\n }\n\n if (block.isBasic && (block.name === 'View' || block.name === 'Block')) {\n block.isFragment = true\n if (stack.length > 0) {\n warnings.push({\n type: `A view can only have one ${block.name} block. Maybe you want to split this block into another view?`,\n line,\n loc: block.loc,\n })\n }\n } else if (stack.length === 0) {\n warnings.push({\n type: `A view must start with a ${topBlockShouldBe} block. ${block.name} isn't valid.\\nWrap everything within a ${topBlockShouldBe} block at the top.`,\n line,\n loc: block.loc,\n })\n }\n\n if (shouldPushToStack || stack.length === 0) {\n stack.push(block)\n }\n\n parseProps(i, block, last)\n lookForFonts(block)\n lookForMultiples(block)\n }\n\n function parseProps(i, block) {\n let endOfBlockIndex = i\n while (\n endOfBlockIndex < lines.length - 1 &&\n !isBlock(lines[endOfBlockIndex + 1])\n ) {\n endOfBlockIndex++\n }\n\n let properties = []\n let scopes = []\n let scope\n let inScope = false\n\n for (let j = i; j <= endOfBlockIndex; j++) {\n let line = lines[j].trim()\n\n let propNode = null\n\n if (isProp(line)) {\n let { name, isSlot, slotName, slotIsNot, value } = getProp(line)\n let loc = getLoc(j + 1, line.indexOf(name), line.length - 1)\n\n let tags = getTags({\n name,\n isSlot,\n slotIsNot,\n value,\n block,\n })\n\n if (block.isBasic) {\n if (tags.unsupportedShorthand) {\n warnings.push({\n loc,\n type: `The shorthand ${name} isn't supported. You need to expand it like:\\n${getUnsupportedShorthandExpanded(\n name,\n value\n ).join('\\n')}`,\n line,\n })\n\n // TODO revisit at a later stage, it was making longer files super slow to\n // parse so we're removing it for now\n // } else {\n // let meant = didYouMeanProp(name)\n // if (meant && meant !== name) {\n // warnings.push({\n // loc,\n // type: `Did you mean \"${meant}\" instead of \"${name}\"?`,\n // line,\n // })\n // }\n }\n\n if (tags.fragment && block.isGroup) {\n if (isSlot) {\n warnings.push({\n loc,\n type: `The isFragment prop can't be a slot. You need to change it to isFragment true. Treating it as true for now.`,\n line,\n })\n }\n block.isFragment = true\n }\n\n if (block.type === 'Capture' && !CAPTURE_TYPES.includes(value)) {\n if (/textarea/i.test(value)) {\n warnings.push({\n loc,\n type: `Invalid type ${value} for Capture. Perhaps you want to use a CaptureTextArea block instead? Using type text as a default.`,\n line,\n })\n } else {\n warnings.push({\n loc,\n type: `Invalid type ${value} for Capture. You can use ${CAPTURE_TYPES.join(\n ', '\n )}. Using type text as a default.`,\n line,\n })\n }\n value = 'text'\n }\n } else {\n if (name === 'lazy') {\n block.isLazy = true\n }\n }\n\n if (name === 'when') {\n let isSystem = enableSystemScopes && isSystemScope(slotName)\n\n if (value === '' || value === '<' || value === '<!') {\n warnings.push({\n loc,\n type:\n 'This when has no condition assigned to it. Add one like: \"when <isCondition\"',\n line,\n })\n if (skipInvalidProps) continue\n } else if (!tags.validSlot) {\n warnings.push({\n loc,\n type: `The slot name \"${name}\" isn't valid. Fix it like: \"when <isCondition\" `,\n line,\n })\n if (skipInvalidProps) continue\n }\n\n if (isSystem && slotIsNot) {\n warnings.push({\n loc,\n type: `\"${slotName}\" is a system slot and it can't take a \"!\" in its value. Replace the line for: \"when <${slotName}\".`,\n })\n }\n\n tags.scope = value\n inScope = true\n scope = {\n isSystem,\n defaultValue: getValue(value, name),\n value,\n name,\n slotName,\n slotIsNot: isSystem ? false : slotIsNot,\n properties: [],\n }\n\n if (convertSlotToProps) {\n scope.value = slotName\n\n if (slotName === 'isBefore') {\n useIsBefore = true\n } else if (/!?isMedia.+/.test(slotName)) {\n scope.value = `isMedia.${slotName\n .replace('isMedia', '')\n .toLowerCase()}`\n useIsMedia = true\n } else if (!isSystem) {\n scope.value = `${slotIsNot ? '!' : ''}props.${slotName || name}`\n }\n }\n\n scopes.push(scope)\n } else if ((tags.slot || tags.shouldBeSlot) && !tags.validSlot) {\n if ((name === 'from' && block.name === 'List') || name !== 'from') {\n warnings.push({\n loc,\n type: `The value you used in the slot \"${name}\" is invalid`,\n line,\n })\n if (skipInvalidProps) continue\n }\n }\n\n if (name === 'onWhen' && properties.length > 0) {\n warnings.push({\n type: `Put onWhen at the top of the block. It's easier to see it that way!`,\n line,\n loc,\n })\n }\n\n if (name === 'onWhen' && /!?isMedia.+/.test(slotName)) {\n useIsMedia = true\n }\n\n if (name === 'format') {\n block.format = getFormat(value)\n }\n\n if (value === '' && name !== 'text') {\n warnings.push({\n loc,\n type: `\"${name}\" has no value. Please give it a value.`,\n line,\n })\n if (skipInvalidProps) continue\n }\n\n propNode = {\n type: 'Property',\n loc,\n name,\n tags,\n value: getValue(value, name),\n }\n\n if (tags.animation && scope) {\n block.isAnimated = true\n\n let currentAnimation = getAnimation(value)\n propNode.value = currentAnimation.defaultValue\n propNode.animation = currentAnimation.properties\n\n if (propNode.animation.curve === 'spring') {\n block.hasSpringAnimation = true\n } else {\n block.hasTimingAnimation = true\n }\n\n if (!block.animations[currentAnimation.id]) {\n block.animations[currentAnimation.id] = {\n index: Object.keys(block.animations).length,\n animation: currentAnimation,\n props: {},\n }\n }\n propNode.animationIndexOnBlock =\n block.animations[currentAnimation.id].index\n\n if (!block.animations[currentAnimation.id].props[name]) {\n let baseValue = null\n let baseProp = properties.find((prop) => prop.name === name)\n if (baseProp) {\n baseValue = baseProp.value\n }\n\n block.animations[currentAnimation.id].props[name] = {\n name,\n scopes: [],\n value: baseValue,\n }\n }\n\n block.animations[currentAnimation.id].props[name].scopes.push({\n name: scope.slotName,\n value: currentAnimation.defaultValue,\n })\n }\n\n if (scope) {\n propNode.scope = scope.slotName\n }\n\n if (tags.slot) {\n let needsDefaultValue = !tags.shouldBeSlot && /</.test(propNode.value)\n\n if (typeof propNode.value === 'string') {\n propNode.value = propNode.value.replace(/^</, '')\n }\n\n propNode.slotName = slotName\n\n // if (name !== 'when' || (name === 'when' && !scope.isSystem)) {\n propNode.defaultValue = propNode.value\n\n if (convertSlotToProps) {\n propNode.value = `${slotIsNot ? '!' : ''}props.${slotName || name}`\n }\n\n if (needsDefaultValue) {\n if (name === 'text' && block.name === 'Text') {\n propNode.defaultValue = ''\n } else {\n propNode.defaultValue = false\n\n if (\n warnMissingDefaultValue &&\n block.isBasic &&\n (propNode.tags.style ||\n (block.name === 'Text' && propNode.name === 'text'))\n ) {\n warnings.push({\n loc,\n type: `Add a default value to \"${name}\" like: \"${name} <${slotName} default value\"`,\n line,\n })\n }\n }\n }\n\n let existingDefaultValue = slots.find(\n (vp) => vp.name === (slotName || name)\n )\n if (\n // !inScope &&\n !propNode.tags.fragment &&\n (!existingDefaultValue || !existingDefaultValue.defaultValue)\n ) {\n if (existingDefaultValue) {\n existingDefaultValue.name = slotName || name\n existingDefaultValue.type = getPropType(block, name, value)\n existingDefaultValue.defaultValue = tags.shouldBeSlot\n ? false\n : propNode.defaultValue\n } else {\n slots.push({\n name: slotName || name,\n type: getPropType(block, name, value),\n defaultValue: tags.shouldBeSlot ? false : propNode.defaultValue,\n })\n }\n }\n // }\n }\n } else if (isComment(line) && !skipComments) {\n let [value] = getComment(line)\n\n let userComment = isUserComment(line)\n if (userComment) {\n value = getComment(value)\n }\n\n propNode = {\n type: 'Property',\n loc: getLoc(j + 1, 0, line.length - 1),\n value,\n tags: { comment: true, userComment },\n }\n }\n\n if (propNode) {\n block.loc.end = propNode.loc.end\n\n if (inScope) {\n if (\n propNode.name !== 'when' &&\n !propNode.tags.comment &&\n !properties.some((baseProp) => baseProp.name === propNode.name)\n ) {\n warnings.push({\n loc: propNode.loc,\n type: `You're missing a base prop for ${propNode.name}. Add it before all whens on the block.`,\n line,\n })\n }\n\n scope.properties.push(propNode)\n } else {\n properties.push(propNode)\n }\n }\n }\n\n block.properties = properties\n block.scopes = sortScopes(scopes)\n\n if (block.name !== 'View' && block.isFragment) {\n let invalidProps = properties\n .filter((prop) => prop.name !== 'isFragment' || prop.name !== 'onWhen')\n .map((prop) => prop.name)\n\n if (invalidProps.length > 0) {\n warnings.push({\n type: `A fragment can only have isFragment and onWhen props.\\nEvery other prop will be dismissed.\\nEither remove ${invalidProps.join(\n ', '\n )} or remove isFragment.`,\n loc: block.loc,\n line: rlines[i],\n })\n }\n }\n }\n\n lines.forEach((line, i) => {\n if (line !== rlines[i].trimRight()) {\n warnings.push({\n type: `You have some spaces before or after this line. Clean them up.`,\n loc: {\n start: {\n line: i + 1,\n },\n },\n line: rlines[i],\n })\n }\n\n if (isBlock(line)) {\n parseBlock(line, i)\n }\n })\n\n if (stack.length > 0) {\n while (!end(stack.pop(), lines.length - 1)) {}\n }\n\n if (!view) {\n view = {\n type: 'Block',\n name: id,\n animations: {},\n isAnimated: false,\n isBasic: true,\n isCapture: false,\n isColumn: false,\n isGroup: false,\n isChildren: false,\n level: 0,\n loc: getLoc(1, 0),\n properties: [],\n scopes: [],\n }\n\n warnings.push({\n loc: view.loc,\n type: `The file for ${id} is empty and won't render! Add some blocks to it like:\\n${topBlockShouldBe}\\n Text\\n text content`,\n line: '',\n })\n }\n\n let flowProp = view.properties.find((p) => p.name === 'is')\n if (flowProp) {\n view.isStory = true\n view.flow = flowProp.value\n view.viewPath = path.dirname(file.replace(src.replace(/\\\\/g, '/'), ''))\n view.viewPathParent = path.dirname(view.viewPath)\n\n view.data = getData(view.properties.find((p) => p.name === 'data'))\n view.dataFormat = getDataFormat(\n view.properties.find((p) => p.name === 'dataFormat')\n )\n view.dataValidate = getDataValidate(\n view.properties.find((p) => p.name === 'dataValidate')\n )\n } else {\n view.isStory = false\n }\n\n view.isDefiningChildrenExplicitly = isDefiningChildrenExplicitly\n view.useIsBefore = useIsBefore\n view.useIsMedia = useIsMedia\n view.views = viewsInView\n\n return {\n fonts,\n slots,\n view,\n warnings,\n }\n}\n","import path from 'path'\n\nlet getFileDepth = file => file.split(path.sep).length - 1\n\nlet sortByFileDepth = (a, b) => {\n let depthA = getFileDepth(a)\n let depthB = getFileDepth(b)\n let depthDelta = depthA - depthB\n\n if (depthDelta !== 0) return depthDelta\n\n return a < b ? 1 : a > b ? -1 : 0\n}\n\nexport default function sortSetsInMap(map) {\n for (let [key, value] of map) {\n if (value.size <= 1) continue\n\n map.set(key, new Set([...value].sort(sortByFileDepth)))\n }\n}\n","import maybePrintWarnings from './maybe-print-warnings.js'\nimport parse from './parse/index.js'\nimport sortSetsInMap from './sort-sets-in-map.js'\n\nexport default function parseViews({\n customFonts,\n filesView,\n src,\n verbose,\n viewsById,\n viewsToFiles,\n}) {\n for (let file of filesView) {\n let view = viewsToFiles.get(file)\n\n if (view.custom) continue\n\n view.parsed = parse({\n customFonts,\n file,\n id: view.id,\n src,\n source: view.source,\n views: viewsById,\n })\n\n maybePrintWarnings(view, verbose)\n }\n sortSetsInMap(viewsById)\n}\n","import path from 'path'\n\nlet EXTENSIONS = ['view.blocks', 'logic.js', 'react.js']\n\nexport default function getViewIdFromFile(file) {\n let extension = EXTENSIONS.find(item => file.endsWith(item))\n\n if (!extension) {\n throw new Error(\n `Can't recognise the extension of \"${file}\" to get a view's id.`\n )\n }\n\n return path.basename(path.dirname(file))\n}\n","import addToMapSet from './add-to-map-set.js'\nimport getViewIdFromFile from './get-view-id-from-file.js'\n\nexport default function processViewCustomFiles({\n filesViewCustom,\n viewsById,\n viewsToFiles,\n}) {\n ;[...filesViewCustom].forEach(file => {\n let id = getViewIdFromFile(file)\n\n addToMapSet(viewsById, id, file)\n\n viewsToFiles.set(file, {\n custom: true,\n file,\n id,\n logic: false,\n source: null,\n version: 0,\n })\n })\n}\n","import { promises as fs } from 'fs'\nimport addToMapSet from './add-to-map-set.js'\nimport getViewIdFromFile from './get-view-id-from-file.js'\nimport path from 'path'\n\nexport default async function processViewFiles({\n filesView,\n filesViewLogic,\n viewsById,\n viewsToFiles,\n}) {\n await Promise.all(\n [...filesView].map(async file => {\n let id = getViewIdFromFile(file)\n\n addToMapSet(viewsById, id, file)\n\n let view = viewsToFiles.has(file) ? viewsToFiles.get(file) : {}\n let logic = path.join(path.dirname(file), 'logic.js')\n\n viewsToFiles.set(file, {\n ...view,\n custom: false,\n file,\n id,\n logic: filesViewLogic.has(logic) && logic,\n source: await fs.readFile(file, 'utf8'),\n version: view.version ? view.version + 1 : 0,\n })\n })\n )\n}\n","import {\n makeGetFontImport,\n morphAllFonts,\n processCustomFonts,\n} from './fonts.js'\nimport { promises as fs } from 'fs'\nimport ensureData from './ensure-data.js'\nimport ensureFlow from './ensure-flow.js'\nimport ensureIsBefore from './ensure-is-before.js'\nimport ensureIsHovered from './ensure-is-hovered.js'\nimport ensureIsMedia from './ensure-is-media.js'\nimport ensureTools from './ensure-tools.js'\nimport makeGetSystemImport from './make-get-system-import.js'\nimport morphAllViews from './morph-all-views.js'\nimport parseViews from './parse-views.js'\nimport processViewCustomFiles from './process-view-custom-files.js'\nimport processViewFiles from './process-view-files.js'\n\nexport default function makeMorpher({\n as = 'react-dom',\n src,\n tools = false,\n verbose = true,\n}) {\n let state = {\n as,\n src,\n tools,\n verbose,\n customFonts: new Map(),\n viewsById: new Map(),\n viewsToFiles: new Map(),\n }\n\n state.processFiles = async function processFiles({\n filesFontCustom = new Set(),\n filesView = new Set(),\n filesViewCustom = new Set(),\n filesViewLogic = new Set(),\n }) {\n if (filesFontCustom.size > 0) {\n processCustomFonts({\n customFonts: state.customFonts,\n filesFontCustom,\n })\n }\n\n // detect .view files\n await processViewFiles({\n filesView,\n filesViewLogic,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n // detect .js files meant to be custom views with \"// @view\" at the top\n processViewCustomFiles({\n filesViewCustom,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n // TODO optimise\n // parse views\n parseViews({\n customFonts: state.customFonts,\n filesView,\n src: state.src,\n verbose: state.verbose,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n let morphedFonts = morphAllFonts({\n as: state.as,\n customFonts: state.customFonts,\n filesView,\n src: state.src,\n viewsToFiles: state.viewsToFiles,\n })\n\n // TODO optimise\n // morph views\n let morphedViews = morphAllViews({\n as: state.as,\n filesView,\n getFontImport: makeGetFontImport(state.src),\n getSystemImport: makeGetSystemImport(state.src),\n src,\n tools: state.tools,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n // TODO optimise, only if they changed, cache, etc\n let viewsFiles = await Promise.all([\n ensureData(state),\n ensureFlow(state),\n ensureTools(state),\n ensureIsBefore(state),\n ensureIsHovered(state),\n ensureIsMedia(state),\n ])\n\n let filesToWrite = [...morphedFonts, ...morphedViews, ...viewsFiles].filter(\n Boolean\n )\n\n await Promise.all(\n filesToWrite.map(({ file, content }) =>\n fs.writeFile(file, content, 'utf-8')\n )\n )\n }\n\n return state\n}\n","export default function getPointsOfUse({ view, viewsToFiles }) {\n let filesView = new Set([view.file])\n let filesViewLogic = new Set()\n let viewsId = new Set()\n\n if (view.logic) {\n filesViewLogic.add(view.logic)\n }\n\n for (let viewInView of viewsToFiles.values()) {\n if (viewInView.custom) continue\n\n if (viewInView.parsed.view.views.has(view.id)) {\n filesView.add(viewInView.file)\n if (viewInView.logic) {\n filesViewLogic.add(viewInView.logic)\n }\n viewsId.add(viewInView.id)\n }\n }\n\n return { filesView, filesViewLogic, viewsId }\n}\n","import {\n MATCH,\n isFontCustomFile,\n isViewCustomFile,\n isViewFile,\n isViewLogicFile,\n} from './match-files.js'\nimport { debounce } from 'debounce'\nimport { promises as fs, existsSync } from 'fs'\nimport { getFontId } from './fonts.js'\nimport chalk from 'chalk'\nimport chokidar from 'chokidar'\nimport getPointsOfUse from './get-points-of-use.js'\nimport path from 'path'\n\nexport default async function watchFiles({ morpher }) {\n let watcher = chokidar.watch(MATCH, {\n cwd: morpher.src,\n ignored: ['**/view.js', 'DesignSystem/Fonts/*.js'],\n ignoreInitial: true,\n // awaitWriteFinish: true,\n })\n\n let processing = false\n let queue = []\n let processEvents = debounce(async () => {\n if (queue.length === 0 || processing) {\n return\n }\n\n let queueClone = [...queue]\n queue = []\n\n processing = true\n try {\n await processQueue({ queue: queueClone, morpher })\n } catch (error) {\n console.error(error)\n process.exit(1)\n }\n processing = false\n\n if (queue.length > 0) {\n processEvents()\n }\n }, 10)\n\n function onEvent({ file, op }) {\n queue.push({ file: path.join(morpher.src, file), op })\n processEvents()\n }\n\n watcher.on('add', (file) => onEvent({ file, op: 'add' }))\n watcher.on('change', (file) => onEvent({ file, op: 'change' }))\n watcher.on('unlink', (file) => onEvent({ file, op: 'unlink' }))\n\n return watcher\n}\n\nasync function processQueue({ queue, morpher }) {\n let filesToProcess = {\n filesView: new Set(),\n filesViewLogic: new Set(),\n filesViewCustom: new Set(),\n filesFontCustom: new Set(),\n }\n\n processAddedOrChanged({\n files: queue.filter((item) => item.op !== 'unlink'),\n morpher,\n filesToProcess,\n })\n\n await processUnlinked({\n files: queue.filter((item) => item.op === 'unlink'),\n morpher,\n filesToProcess,\n })\n\n return morpher.processFiles(filesToProcess)\n}\n\nasync function processUnlinked({ files, morpher, filesToProcess }) {\n await Promise.all(\n files.map(async ({ file }) => {\n morpher.verbose &&\n console.log(\n chalk.magenta('X'),\n path.basename(path.dirname(file)),\n chalk.dim(file.replace(morpher.src, '').replace(/^\\//, ''))\n )\n\n if (isFontCustomFile(file)) {\n let id = getFontId(file)\n let font = morpher.customFonts.get(id)\n font.delete(file)\n\n if (font.size === 0) {\n morpher.customFonts.delete(id)\n }\n } else {\n let viewFile = path.join(path.dirname(file), 'view.blocks')\n let view = morpher.viewsToFiles.get(viewFile)\n if (!view) return\n\n processPointsOfUse({ view, morpher, filesToProcess })\n\n filesToProcess.filesView.delete(view.file)\n\n let viewFilesSet = morpher.viewsById.get(view.id)\n viewFilesSet.delete(view.file)\n if (viewFilesSet.size === 0) {\n morpher.viewsById.delete(view.id)\n }\n\n morpher.viewsToFiles.delete(view.file)\n\n if (isViewFile(file)) {\n filesToProcess.filesView.delete(file)\n try {\n await fs.unlink(file.replace('view.blocks', 'view.js'))\n } catch (error) {}\n } else if (isViewLogicFile(file)) {\n if (files.every((item) => item.file !== view.file)) {\n filesToProcess.filesView.add(view.file)\n }\n filesToProcess.filesViewLogic.delete(file)\n } else if (isViewCustomFile(file)) {\n filesToProcess.filesViewCustom.delete(file)\n }\n }\n })\n )\n}\n\nfunction processAddedOrChanged({ files, morpher, filesToProcess }) {\n files.forEach(({ file, op }) => {\n morpher.verbose &&\n console.log(\n chalk.yellow(op.toUpperCase()[0]),\n path.basename(path.dirname(file)),\n chalk.dim(file.replace(morpher.src, '').replace(/^\\//, ''))\n )\n\n if (isFontCustomFile(file)) {\n filesToProcess.filesFontCustom.add(file)\n } else {\n if (isViewFile(file)) {\n filesToProcess.filesView.add(file)\n\n let logicFile = path.join(path.dirname(file), 'logic.js')\n if (existsSync(logicFile)) {\n filesToProcess.filesViewLogic.add(logicFile)\n }\n\n let parentFile = path.join(\n path.dirname(path.dirname(file)),\n 'view.blocks'\n )\n if (existsSync(parentFile)) {\n filesToProcess.filesView.add(parentFile)\n }\n } else if (isViewLogicFile(file)) {\n filesToProcess.filesView.add(\n path.join(path.dirname(file), 'view.blocks')\n )\n filesToProcess.filesViewLogic.add(file)\n } else if (isViewCustomFile(file)) {\n filesToProcess.filesViewCustom.add(file)\n }\n\n let viewFile = path.join(path.dirname(file), 'view.blocks')\n let view = morpher.viewsToFiles.get(viewFile)\n if (!view) return\n\n processPointsOfUse({ view, morpher, filesToProcess })\n }\n })\n}\n\nfunction processPointsOfUse({ view, morpher, filesToProcess }) {\n let { filesView, filesViewLogic } = getPointsOfUse({\n view,\n viewsToFiles: morpher.viewsToFiles,\n })\n\n for (let file of filesView) {\n filesToProcess.filesView.add(file)\n }\n for (let file of filesViewLogic) {\n filesToProcess.filesViewLogic.add(file)\n }\n}\n","import { ensureFontsDirectory } from './fonts.js'\nimport getFiles from './get-files.js'\nimport chalk from 'chalk'\nimport makeMorpher from './make-morpher.js'\nimport maybePrintWarnings from './maybe-print-warnings.js'\nimport path from 'path'\nimport watchFiles from './watch-files.js'\n\nexport default async function watch(options) {\n console.time('startup time')\n let morpher = makeMorpher(options)\n\n await ensureFontsDirectory(morpher.src)\n\n await morpher.processFiles(await getFiles(morpher.src))\n\n if (options.verbose) {\n if (morpher.customFonts.size > 0) {\n console.log(chalk.yellow(`\\nCustom fonts detected:`))\n console.log([...morpher.customFonts.keys()].sort().join('\\n'))\n }\n\n let views = [...morpher.viewsToFiles.values()]\n console.log(\n views\n .map((view) => {\n let msg = view.id\n if (view.custom) {\n msg = `${view.id} ${chalk.dim('(is custom)')}`\n } else if (view.logic) {\n msg = `${view.id} ${chalk.dim('(has logic)')}`\n }\n return `${chalk.yellow('A')} ${chalk.green('M')} ${msg} ${chalk.dim(\n path.relative(morpher.src, view.file)\n )}`\n })\n .sort()\n .join('\\n')\n )\n\n views.forEach(maybePrintWarnings)\n }\n\n console.log(chalk.green('Views Morpher is ready'))\n console.timeEnd('startup time')\n if (options.once) return\n\n let watcher = watchFiles({ morpher })\n\n process.on('beforeExit', () => {\n console.log('Stopping Views morpher file watcher...')\n watcher.close()\n })\n}\n","import { promises as fs } from 'fs'\nimport chalk from 'chalk'\nimport cleanup from './clean.js'\nimport minimist from 'minimist'\nimport path from 'path'\nimport pkg from './package.json'\nimport updateNotifier from 'update-notifier'\nimport watch from './watch.js'\n\nlet wait = time => new Promise(resolve => setTimeout(resolve, time))\n\n;(async function() {\n let {\n _,\n as,\n clean,\n help,\n tools,\n watch: shouldWatch,\n verbose,\n version,\n } = minimist(process.argv.slice(2), {\n alias: {\n help: 'h',\n },\n booleans: ['clean', 'help', 'tools', 'watch', 'version'],\n default: {\n as: 'react-dom',\n clean: false,\n tools: true,\n verbose: true,\n version: false,\n watch: false,\n },\n })\n\n if (!shouldWatch && tools) {\n tools = false\n }\n\n if (help) {\n console.log(`\n views-morph [directory]\n --as target platform\n react-dom (default)\n react-native\n react-pdf\n --clean clean the autogenerated .view.js files\n --tools use with Views Tools, defauls to true when\n --watch is enabled, otherwise defaults to false\n --verbose defaults to true\n --version print the version\n --watch watch a directory and produce .view.js files\n `)\n\n process.exit()\n }\n\n if (version) {\n console.log(`v${pkg.version}`)\n process.exit()\n }\n\n let input = Array.isArray(_) && _[0]\n\n if (!input || !(await fs.stat(input)).isDirectory()) {\n console.error(\n `You need to specify an input directory to watch. ${input} is a file.`\n )\n process.exit()\n }\n\n if (!path.isAbsolute(input)) {\n input = path.normalize(path.join(process.cwd(), input))\n }\n\n try {\n if ((await fs.stat(path.join(input, 'src'))).isDirectory()) {\n input = path.join(input, 'src')\n }\n } catch (error) {}\n\n if (clean) {\n console.log(`Cleaning up ${input}...`)\n await cleanup(input, verbose, true)\n process.exit()\n } else {\n await cleanup(input, verbose)\n }\n\n updateNotifier({ pkg }).notify()\n\n if (verbose) {\n console.log(chalk.underline(`Views Tools morpher v${pkg.version}`))\n\n console.log(\n `\\nWill morph files at \"${chalk.green(input)}\" as \"${chalk.green(as)}\" ${\n tools ? 'with Views Tools' : 'without Views Tools'\n }`\n )\n\n if (shouldWatch && !tools) {\n console.log(\n chalk.bgRed(' ')\n )\n console.log()\n console.log(`🚨 You're missing out!!!`)\n console.log(\n chalk.bold(\n '🚀 Views Tools can help you find product market\\n fit before you run out of money.'\n )\n )\n console.log()\n console.log(\n '✨ Find out how 👉',\n chalk.bold(chalk.green('https://views.tools'))\n )\n console.log()\n console.log(\n chalk.bgRed(' ')\n )\n await wait(15000)\n }\n\n console.log(chalk.yellow('A'), '= Added')\n console.log(chalk.green('M'), `= Morphed`)\n console.log(chalk.magenta('X'), `= Deleted`)\n console.log('\\nPress', chalk.blue('ctrl+c'), 'to stop at any time.\\n')\n }\n\n watch({\n as,\n once: !shouldWatch,\n src: input,\n tools,\n verbose,\n })\n})()\n"],"names":["clean","src","verbose","all","views","glob","cwd","ignore","map","forEach","item","dir","path","dirname","Set","add","basename","empty","Object","keys","filter","key","size","has","join","trash","del","deleted","deleteEmpty","d","console","log","addToMapSet","value","set","get","getWeights","variants","v","includes","list","font","category","family","weights","byName","f","fontFamily","isGoogleFont","maybeAddFallbackFont","sources","body","replace","weight","style","type","file","id","relativise","from","to","r","relative","p","substr","startsWith","ensureDir","fs","mkdir","recursive","error","morphFont","morphFontAsReactDom","morphFontAsReactNative","ensureFontsDirectory","getFontId","extname","fontsOrder","sortFonts","fonts","sort","a","b","indexOf","processCustomFonts","customFonts","filesFontCustom","morphAllFonts","as","filesView","viewsToFiles","fontsDirectory","fontsInUse","mapCustomFont","FONT_TYPES","view","custom","parsed","split","customFontSources","content","makeGetFontImport","PATTERNS","filesViewLogic","filesViewCustom","isViewFile","mm","isMatch","isViewLogicFile","isViewCustomFile","isFontCustomFile","MATCH","getMatchesPerPattern","files","fromEntries","entries","match","getFiles","absolute","addFileIfItDoesntExist","existsSync","writeFile","ensureFile","DATA","ensureData","Promise","getViewRelativeToView","viewsById","importCandidates","delete","importViewFile","pathToView","maybeFileViewInside","maybeFileViewCustomInside","importView","isStory","ensureFirstStoryIsOn","flow","stories","story","index","isSeparate","makeFlow","tools","flowMap","Map","flowMapStr","values","states","viewInView","push","viewPath","parent","viewPathParent","length","JSON","stringify","topStory","initialState","ensureFlow","USE_IS_BEFORE","ensureIsBefore","USE_IS_HOVERED","ensureIsHovered","makeUseIsMedia","media","name","minWidth","maxWidth","ret","getMediaConfig","mobile","width","tablet","laptop","parse","readFile","resolve","base","ensureIsMedia","TOOLS_FILE","ensureTools","process","env","REACT_APP_VIEWS_TOOLS","FILE_USE_IS_BEFORE","FILE_USE_IS_HOVERED","FILE_USE_IS_MEDIA","FILE_USE_DATA","FILE_USE_FLOW","makeGetSystemImport","getSystemImport","enter","node","state","isFragment","testId","testIdKey","render","viewPathKey","IS_INT","IS_FLOAT","MULTIPLE_BY_FONT_SIZE","PIXEL","PERCENTAGE","EM","REM","VW","VH","DEGREES","GRADIANS","RADIANS","TURN","getUnit","units","getUnits","test","find","u","LENGTH","PERCENTAGE_FIRST_LENGTH","MULTIPLE_BY_FONT_SIZE_LENGTH","ANGLE","UNITLESS","UNITS","blurRadius","borderBottomLeftRadius","borderBottomRightRadius","borderBottomWidth","borderLeftWidth","borderRadius","borderRightWidth","borderTopLeftRadius","borderTopRightRadius","borderTopWidth","borderWidth","bottom","flexBasis","flexGrow","flexShrink","fontSize","height","left","letterSpacing","lineHeight","margin","marginBottom","marginLeft","marginRight","marginTop","maxHeight","minHeight","offsetX","offsetY","opacity","outline","padding","paddingBottom","paddingLeft","paddingRight","paddingTop","perspective","right","rotate","rotateX","rotateY","scale","scaleX","scaleY","strokeDasharray","strokeDashoffset","shadowOffsetY","shadowOffsetX","shadowBlur","shadowSpread","skew","spreadRadius","top","translateX","translateY","wordSpacing","zIndex","UNITS_KEYS","found","ukey","s","isSlot","wrap","checkParentStem","styleKey","matchingParentStem","scopes","some","scope","is","INTERPOLATION","isInterpolation","str","deinterpolate","getObjectAsString","obj","Array","isArray","k","hasKeys","getProp","finder","nodeScope","prop","properties","getPropValueOrDefault","defaultValue","hasProp","getScopedProps","propNode","blockNode","isSystem","when","Boolean","reverse","isEmpty","getScopedConditionPropValue","slotName","flowPath","getFlowPath","use","setFlowTo","tags","slot","safe","unit","CHILD_VALUES","DATA_VALUES","IS_HOVERED_OR_SELECTED_HOVER","IS_FLOW","getScopedCondition","scopedProps","conditional","data","hasCustomBlockParent","useFlow","action","getActionableParent","lastScope","animation","curve","getScopedImageCondition","scopedNames","defaultName","styleStems","getStyleType","tag","isTag","hasKeysInChildren","maybeNode1","maybeNode2","isStyle","isBasic","getAllowedStyleKeys","isCapture","isTable","isList","isCell","isHeader","isColumn","isValidImgSrc","pushImageToState","paths","findIndex","images","getScopes","toCamelCase","isSvg","hasCustomScopes","getStandardAnimatedString","isNative","animationIndexOnBlock","getTransformString","transform","transformStr","props","i","getAnimatedString","getAnimatedStyles","getAllAnimatedProps","getSpringProps","getPropValue","interpolateValue","getDynamicStyles","flatten","getNonAnimatedDynamicStyles","animatedProps","animatedTransforms","dynamic","reduce","checkForTransforms","combineTransforms","TRANSFORM_WHITELIST","isTransform","getTimingProps","createId","addClassName","usedBlockNames","styleName","className","CONTENT_CONTAINER_STYLE_PROPS","isContentContainerStyleProp","hasContentContainerStyleProp","styleProps","getContentContainerStyleProps","removeContentContainerStyleProps","hasRowStyles","MAYBE_HYPHENATED_STYLE_PROPS","maybeMakeHyphenated","toSlugCase","normalize","typesMap","email","text","number","phone","secure","maybeNumber","valueWhenTrue","getValueForProperty","dataKey","getWidth","header","children","PropertyRest","cell","columns","child","columnsWithFixedWidth","columnsWidthSum","res","leave","explicitChildren","goTo","isDefiningChildrenExplicitly","isGroup","nameFinal","pass","itemName","skip","hasAlreadyDefinedChildren","getGroupBlockName","hasSpringAnimation","prevParent","canBeButton","isChildren","useIsHovered","flowDefaultState","getBlockName","isLazy","nameTag","handleTable","IS_MEDIA","IS_HOVERED","onWhen","variable","toLowerCase","shouldWrap","isHovered","isFocused","isDisabled","isPlaceholder","isSelected","isSelectedHovered","static","_isProp","styleForProperty","getStyleForProperty","hasMatchingParent","isDynamic","target","assign","flexDirection","allowedStyleKeys","scopedUnderParent","isAnimated","animations","getTableRowCss","css","getStaticCss","getAnimatedCss","getDynamicCss","styles","stylesOrder","composeStyles","cssStatic","asCss","asStaticCss","cssDynamic","asDynamicCss","hasDynamicCss","isReactNative","inlineDynamicStyles","hasTimingAnimation","transition","uniq","makeTransition","getUniqueNames","names","ensurePropName","duration","delay","dynamicStyles","systemScopeToCssKey","ensureSystemScopeCssKey","theKey","normalStyles","alternateStyles","typeScopes","scopeStyles","normalDynamic","normalStatic","alternateDynamic","alternateStatic","normalCss","alternateCss","hasDynamicRowStyles","format","isFormatted","formats","userSelect","hasRefs","PROPS_THAT_IMPLY_CODE_FOR_OTHERS","code","otherProp","_isScoped","HAS_RESTRICTED_CHARACTERS","blacklist","PropertiesStyle","PropertiesClassName","PropertiesImage","PropertyFormat","PropertyViewPath","unsupportedShorthand","isValidPropertyForBlock","PropertyRef","PropertyStyle","PropertyText","PropertyOnClickUserSelect","blockName","testIds","BlockMaybeSkip","BlockSetTestId","BlockOffWhen","BlockName","BlockTable","BlockColumn","BlockCapture","BlockGoTo","BlockInList","BlockAddTestIdProp","BlockAddViewPath","BlockProperties","BlockGroup","BlockList","BlockExplicitChildren","scopedVar","setScopedVar","getTransform","shadow","getShadow","WebkitAppRegion","maybeAsVar","backgroundImage","asVar","transformOrigin","getTransformOrigin","parseInt","block","scopedCondition","isText","shadowColor","shadowInset","shadowInsetValue","getTransformValue","transformOriginX","transformOriginY","Number","isInteger","isUrl","getImageSource","slots","ON_IS_SELECTED","disabled","actionableParent","actionableProp","makeGetImport","imports","getImport","externalImport","chalk","red","importFile","logic","importPath","animated","blockId","configValues","spring","toValue","fromValue","current","uses","maybeDataContext","maybeDataFormat","dataFormat","maybeDataValidate","dataValidate","useIsBefore","useIsMedia","dataDefinition","context","formatIn","formatOut","validate","required","NATIVE","sortAlphabetically","filterAndSort","usesNative","usesSvg","useNative","useSvg","dependencies","dependenciesLazy","dependenciesDisplayNames","dependenciesErrors","SVG","importStatement","lazy","usedFont","getFontImport","img","component","svg","m","reactNativeLibraryImport","getStyles","getDependencies","getFlatList","getBody","getDefaultProps","walk","ast","visit","fn","ViewsModalOverlay","finalName","restrictedNames","AutoSizer","Column","Table","warn","visitor","toComponent","BORDER_RADIUS","source","uri","resizeMode","keyboardType","dynamicKeyboardType","autoCorrect","underlineColorAndroid","textAlignVertical","getListBlockName","baseStyle","animatedStyle","dynamicStyle","containerStyle","ensureBackgroundColor","backgroundColor","dynamicContainerStyle","SVG_BLOCKS_WITH_OPACITY","svgOpacity","onClick","onPress","isInList","wrapEnd","BlockWrap","BlockSvg","BlockBackgroundImage","borderStyle","decorateShadow","shadowRadius","getShadowOffset","getFontFamily","placeholderTextColor","color","getLineHeight","fontWeight","fontSizeValue","shadowOffset","elevation","shadowOpacity","DismissKeyboard","remap","maybeUsesTextInput","maybeUsesStyleSheet","options","reactNativeMorph","reactDom","reactNative","reactPdf","maybeMorph","result","morphers","version","green","dim","codeFrame","message","stack","morphAllViews","maybePrintWarnings","warnings","warning","yellow","loc","start","line","blue","STYLE","ROWSTYLE","isRowStyle","ANIMATION","BASIC","BLOCK","BOOL","CAPTURE","CAPTURE_TYPES","COMMENT","FLOAT","FONTABLE","INT","NOT_GROUP","PROP","UNSUPPORTED_SHORTHAND","border","borderBottom","borderTop","borderRight","borderLeft","boxShadow","flex","textShadow","overflow","TRUE","USER_COMMENT","SLOT","thing","isAnimation","isBlock","isBool","isComment","isEmptyText","isFloat","isFontable","isInt","isProp","isUnsupportedShorthand","isTrue","isUserComment","regex","addDefaults","animationType","tension","friction","getAnimation","_","animationValues","getValue","getBlock","indentation","_1","level","Math","floor","getComment","slice","err","getData","maybeProp","getDataFormat","getDataValidate","getFormat","formatKey","_2","slotIsNot","_3","getSlot","getUnsupportedShorthandExpanded","theValue","x","y","parseFloat","SYSTEM_SCOPES","isSystemScope","isActionable","getPropType","isNumber","sortScopes","scolumn","ecolumn","column","end","SLOT_PROPS","shouldBeSlot","rowStyle","validSlot","fragment","convertSlotToProps","enableSystemScopes","skipComments","skipInvalidProps","warnMissingDefaultValue","rlines","lines","trimRight","ignoreIndex","topBlockShouldBe","endsWith","viewsInView","blockIds","getBlockId","maybeId","lookForFonts","fontFamilyProp","fontWeightProp","toString","fontStyleProp","lookForMultiples","freq","multiples","endLine","max","parseBlock","shouldPushToStack","getLoc","last","pop","blocker","parseProps","endOfBlockIndex","inScope","j","trim","getTags","currentAnimation","baseValue","baseProp","needsDefaultValue","existingDefaultValue","vp","userComment","comment","invalidProps","flowProp","getFileDepth","sep","sortByFileDepth","depthA","depthB","depthDelta","sortSetsInMap","parseViews","EXTENSIONS","getViewIdFromFile","extension","Error","processViewCustomFiles","processViewFiles","makeMorpher","processFiles","morphedFonts","morphedViews","viewsFiles","filesToWrite","getPointsOfUse","viewsId","watchFiles","morpher","watcher","chokidar","watch","ignored","ignoreInitial","processing","queue","processEvents","debounce","queueClone","processQueue","exit","onEvent","op","on","filesToProcess","processAddedOrChanged","processUnlinked","magenta","viewFile","processPointsOfUse","viewFilesSet","unlink","every","toUpperCase","logicFile","parentFile","time","msg","timeEnd","once","close","wait","setTimeout","help","shouldWatch","minimist","argv","alias","booleans","default","pkg","input","stat","isDirectory","isAbsolute","cleanup","updateNotifier","notify","underline","bgRed","bold"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMe,eAAeA,KAAf,CAAqBC,GAArB,EAA0BC,OAA1B,EAAmCC,GAAG,GAAG,KAAzC,EAAgD;AAC7D,MAAIC,KAAK,GAAG,MAAMC,IAAI,CAAC,CAAC,gBAAD,EAAmB,YAAnB,CAAD,EAAmC;AACvDC,IAAAA,GAAG,EAAEL,GADkD;AAEvDM,IAAAA,MAAM,EAAE,CAAC,gBAAD;AAF+C,GAAnC,CAAtB;AAKA,MAAIC,GAAG,GAAG,EAAV;AACAJ,EAAAA,KAAK,CAACK,OAAN,CAAcC,IAAI,IAAI;AACpB,QAAIC,GAAG,GAAGC,IAAI,CAACC,OAAL,CAAaH,IAAb,CAAV;;AACA,QAAI,CAACF,GAAG,CAACG,GAAD,CAAR,EAAe;AACbH,MAAAA,GAAG,CAACG,GAAD,CAAH,GAAW,IAAIG,GAAJ,EAAX;AACD;;AACDN,IAAAA,GAAG,CAACG,GAAD,CAAH,CAASI,GAAT,CAAaH,IAAI,CAACI,QAAL,CAAcN,IAAd,CAAb;AACD,GAND;AAQA,MAAIO,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYX,GAAZ,EACTY,MADS,CACFC,GAAG,IAAIb,GAAG,CAACa,GAAD,CAAH,CAASC,IAAT,KAAkB,CAAlB,IAAuBd,GAAG,CAACa,GAAD,CAAH,CAASE,GAAT,CAAa,SAAb,CAD5B,EAETf,GAFS,CAELE,IAAI,IAAIE,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAeS,IAAf,CAFH,CAAZ;AAIA,QAAMe,KAAK,CAACR,KAAD,CAAX;;AAEA,MAAId,GAAJ,EAAS;AACP,UAAMuB,GAAG,CACP,CACE,YADF,EAEE,mBAFF,EAGG,yBAHH,EAIE,oBAJF,EAKE,qBALF,EAME,sBANF,EAOE,uBAPF,EAQE,qBARF,EASElB,GATF,CASME,IAAI,IAAIE,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAeS,IAAf,CATd,CADO,CAAT;AAaA,QAAIiB,OAAO,GAAG,MAAMC,WAAW,CAAC3B,GAAD,CAA/B;;AACA,QAAIC,OAAJ,EAAa;AACXyB,MAAAA,OAAO,CAAClB,OAAR,CAAgBoB,CAAC,IAAIC,OAAO,CAACC,GAAR,CAAa,KAAIF,CAAE,EAAnB,CAArB;AACD;AACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9Cc,SAASG,WAAT,CAAqBxB,GAArB,EAA0Ba,GAA1B,EAA+BY,KAA/B,EAAsC;AACnD,MAAI,CAACzB,GAAG,CAACe,GAAJ,CAAQF,GAAR,CAAL,EAAmB;AACjBb,IAAAA,GAAG,CAAC0B,GAAJ,CAAQb,GAAR,EAAa,IAAIP,GAAJ,EAAb;AACD;;AACDN,EAAAA,GAAG,CAAC2B,GAAJ,CAAQd,GAAR,EAAaN,GAAb,CAAiBkB,KAAjB;AACD;;ACHD,IAAIG,UAAU,GAAGC,QAAQ,IACvBA,QAAQ,CACLjB,MADH,CACUkB,CAAC,IAAI,CAACA,CAAC,CAACC,QAAF,CAAW,QAAX,CADhB,EAEG/B,GAFH,CAEO8B,CAAC,IAAKA,CAAC,KAAK,SAAN,GAAkB,GAAlB,GAAwBA,CAFrC,CADF;;AAKA,IAAInC,GAAG,GAAGqC,IAAI,CAAChC,GAAL,CAASiC,IAAI,KAAK;AAC1BC,EAAAA,QAAQ,EAAED,IAAI,CAACC,QADW;AAE1BT,EAAAA,KAAK,EAAEQ,IAAI,CAACE,MAFc;AAG1BC,EAAAA,OAAO,EAAER,UAAU,CAACK,IAAI,CAACJ,QAAN;AAHO,CAAL,CAAb,CAAV;AAMA,IAAIQ,MAAM,GAAG,EAAb;AACA1C,GAAG,CAACM,OAAJ,CAAYqC,CAAC,IAAKD,MAAM,CAACC,CAAC,CAACb,KAAH,CAAN,GAAkBa,CAApC;AAEA,AAAO,IAAIC,UAAU,GAAG5C,GAAG,CAACK,GAAJ,CAAQsC,CAAC,IAAIA,CAAC,CAACb,KAAf,CAAjB;AAEP,AAAO,IAAIe,YAAY,GAAGL,MAAM,IAAI,CAAC,CAACE,MAAM,CAACF,MAAD,CAArC;AAEP,AAAO,IAAIM,oBAAoB,GAAGH,CAAC,IAAI;AACrC,MAAIL,IAAI,GAAGI,MAAM,CAACC,CAAD,CAAjB;AAEA,SAAOL,IAAI,IAAIA,IAAI,CAACC,QAAb,GAAyB,GAAEI,CAAE,KAAIL,IAAI,CAACC,QAAS,EAA/C,GAAmDI,CAA1D;AACD,CAJM;;AClBP,2BAAe,CAACL,IAAD,EAAOS,OAAP,KAAmB;AAChC,MAAIC,IAAJ;;AAEA,MAAIH,YAAY,CAACP,IAAI,CAACE,MAAN,CAAhB,EAA+B;AAC7BQ,IAAAA,IAAI,GAAI,sEAAqEV,IAAI,CAACE,MAAL,CAAYS,OAAZ,CAC3E,KAD2E,EAE3E,GAF2E,CAG3E,IAAGX,IAAI,CAACY,MAAO,GAAEZ,IAAI,CAACa,KAAL,KAAe,QAAf,GAA0B,GAA1B,GAAgC,EAAG,aAHtD;AAID,GALD,MAKO;AACLH,IAAAA,IAAI,GAAI,GAAED,OAAO,CACd1C,GADO,CACHP,GAAG,IAAK,UAASA,GAAG,CAACsD,IAAK,UAAStD,GAAG,CAACuD,IAAK,GADzC,EAEPhC,IAFO,CAEF,IAFE,CAEI;;;kBAGAiB,IAAI,CAACE,MAAO;gBACdF,IAAI,CAACa,KAAM;iBACVb,IAAI,CAACY,MAAO;SACpBH,OAAO,CACX1C,GADI,CACAP,GAAG,IAAK,UAASA,GAAG,CAACsD,IAAK,cAAatD,GAAG,CAACsD,IAAK,IADhD,EAEJ/B,IAFI,CAEC,IAFD,CAEO;KAVZ;AAYD;;AAED,SAAQ,2CAA0C2B,IAAK,EAAvD;AACD,CAxBD;;ACFA,8BAAe,CAACV,IAAD,EAAOS,OAAP,KAAmB;AAChC;AACA,SAAQ,mBAAkBT,IAAI,CAACgB,EAAG,GAAlC,CAFgC;AAKhC;AACA;AACA;AACA;AACA;AACA;AACD,CAXD;;ACEe,SAASC,UAAT,CAAoBC,IAApB,EAA0BC,EAA1B,EAA8B3D,GAA9B,EAAmC;AAChD,MAAI4D,CAAC,GAAGjD,IAAI,CAACkD,QAAL,CAAcH,IAAd,EAAoBC,EAApB,EAAwBR,OAAxB,CAAgC,KAAhC,EAAuC,GAAvC,CAAR;AACA,MAAIW,CAAC,GAAGF,CAAC,CAACG,MAAF,CAASH,CAAC,CAACI,UAAF,CAAa,OAAb,IAAwB,CAAxB,GAA4B,CAArC,CAAR;;AAEA,MAAIF,CAAC,CAACE,UAAF,CAAa,IAAb,CAAJ,EAAwB;AACtBF,IAAAA,CAAC,GAAGH,EAAE,CAACR,OAAH,CAAY,GAAEnD,GAAI,GAAlB,EAAsB,EAAtB,CAAJ;AACD;;AAED,SAAO8D,CAAP;AACD;;ACTc,eAAeG,SAAf,CAAyBvD,GAAzB,EAA8B;AAC3C,MAAI;AACF,UAAMwD,WAAE,CAACC,KAAH,CAASzD,GAAT,EAAc;AAAE0D,MAAAA,SAAS,EAAE;AAAb,KAAd,CAAN;AACD,GAFD,CAEE,OAAOC,KAAP,EAAc;AACjB;;ACED,IAAIC,SAAS,GAAG;AACd,eAAaC,mBADC;AAEd,kBAAgBC,sBAFF;AAGd,eAAaA;AAHC,CAAhB;AAMA,AAAO,eAAeC,oBAAf,CAAoCzE,GAApC,EAAyC;AAC9C,QAAMiE,SAAS,CAACtD,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,cAAf,EAA+B,OAA/B,CAAD,CAAf;AACD;AAED,AAAO,IAAI0E,SAAS,GAAGnB,IAAI,IAAI5C,IAAI,CAACI,QAAL,CAAcwC,IAAd,EAAoB5C,IAAI,CAACgE,OAAL,CAAapB,IAAb,CAApB,CAAxB;AAEP,IAAIqB,UAAU,GAAG,CAAC,KAAD,EAAQ,OAAR,EAAiB,MAAjB,EAAyB,KAAzB,EAAgC,KAAhC,EAAuC,KAAvC,CAAjB;;AAEA,IAAIC,SAAS,GAAGC,KAAK,IAAI;AACvB,SAAO,IAAIjE,GAAJ,CACLkE,IAAI,CACF,CAAC,GAAGD,KAAJ,CADE,EAEF,CAACE,CAAD,EAAIC,CAAJ,KAAUL,UAAU,CAACM,OAAX,CAAmBD,CAAC,CAAC3B,IAArB,IAA6BsB,UAAU,CAACM,OAAX,CAAmBF,CAAC,CAAC1B,IAArB,CAFrC,CADC,CAAP;AAMD,CAPD;;AASA,AAAO,SAAS6B,kBAAT,CAA4B;AAAEC,EAAAA,WAAF;AAAeC,EAAAA;AAAf,CAA5B,EAA8D;AACnE,OAAK,IAAI9B,IAAT,IAAiB8B,eAAjB,EAAkC;AAChCtD,IAAAA,WAAW,CAACqD,WAAD,EAAcV,SAAS,CAACnB,IAAD,CAAvB,EAA+BA,IAA/B,CAAX;AACD;;AACD,OAAK,IAAI,CAACC,EAAD,EAAKsB,KAAL,CAAT,IAAwBM,WAAxB,EAAqC;AACnCA,IAAAA,WAAW,CAACnD,GAAZ,CAAgBuB,EAAhB,EAAoBqB,SAAS,CAACC,KAAD,CAA7B;AACD;AACF;AAED,AAAO,SAASQ,aAAT,CAAuB;AAC5BC,EAAAA,EAD4B;AAE5BH,EAAAA,WAF4B;AAG5BI,EAAAA,SAH4B;AAI5BxF,EAAAA,GAJ4B;AAK5ByF,EAAAA;AAL4B,CAAvB,EAMJ;AACD,MAAIC,cAAc,GAAG/E,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,cAAf,EAA+B,OAA/B,CAArB;AACA,MAAI2F,UAAU,GAAG,IAAI9E,GAAJ,EAAjB;;AAEA,MAAI+E,aAAa,GAAGrC,IAAI,KAAK;AAC3BD,IAAAA,IAAI,EAAEuC,UAAU,CAAClF,IAAI,CAACgE,OAAL,CAAapB,IAAb,CAAD,CADW;AAE3BA,IAAAA,IAAI,EAAEA,IAAI,CAACJ,OAAL,CAAauC,cAAb,EAA6B,GAA7B;AAFqB,GAAL,CAAxB;;AAKA,OAAK,IAAInC,IAAT,IAAiBiC,SAAjB,EAA4B;AAC1B,QAAIM,IAAI,GAAGL,YAAY,CAACvD,GAAb,CAAiBqB,IAAjB,CAAX;AAEA,QAAIuC,IAAI,CAACC,MAAT,EAAiB;AAEjBD,IAAAA,IAAI,CAACE,MAAL,CAAYlB,KAAZ,CAAkBtE,OAAlB,CAA0BgC,IAAI,IAAI;AAChCmD,MAAAA,UAAU,CAAC7E,GAAX,CAAe0B,IAAI,CAACgB,EAApB;AACD,KAFD;AAGD;;AAED,SAAO,CAAC,GAAGmC,UAAJ,EAAgBpF,GAAhB,CAAoBiC,IAAI,IAAI;AACjC,QAAI,CAACE,MAAD,EAASU,MAAT,EAAiBC,KAAK,GAAG,QAAzB,IAAqCb,IAAI,CAACyD,KAAL,CAAW,GAAX,CAAzC;AAEA,QAAIC,iBAAiB,GAAG,EAAxB;;AACA,QAAId,WAAW,CAAC9D,GAAZ,CAAgBkB,IAAhB,CAAJ,EAA2B;AACzB0D,MAAAA,iBAAiB,GAAG,CAAC,GAAGd,WAAW,CAAClD,GAAZ,CAAgBM,IAAhB,CAAJ,EAA2BjC,GAA3B,CAA+BqF,aAA/B,CAApB;AACD;;AAED,WAAO;AACLrC,MAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,cAAf,EAA+B,OAA/B,EAAyC,GAAEwC,IAAK,KAAhD,CADD;AAEL2D,MAAAA,OAAO,EAAE7B,SAAS,CAACiB,EAAD,CAAT,CACP;AACE/B,QAAAA,EAAE,EAAEhB,IADN;AAEEE,QAAAA,MAFF;AAGEW,QAAAA,KAHF;AAIED,QAAAA;AAJF,OADO,EAOP8C,iBAPO;AAFJ,KAAP;AAYD,GApBM,CAAP;AAqBD;AAGD;AACA;AACA;;AAEA,IAAIL,UAAU,GAAG;AACf,UAAQ,UADO;AAEf,UAAQ,KAFO;AAGf,UAAQ,KAHO;AAIf,UAAQ,UAJO;AAKf,WAAS,MALM;AAMf,YAAU;AANK,CAAjB;AASA,AAAO,IAAIO,iBAAiB,GAAGpG,GAAG,IAAI,CAACwC,IAAD,EAAOsD,IAAP,KACnC,WAAUrC,UAAU,CACnBqC,IAAI,CAACvC,IADc,EAEnB5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,cAAf,EAA+B,OAA/B,EAAyC,GAAEwC,IAAK,KAAhD,CAFmB,CAGnB,GAJG;;ACpGP,IAAI6D,QAAQ,GAAG;AACbb,EAAAA,SAAS,EAAE,CAAC,uBAAD,EAA0B,gCAA1B,CADE;AAEbc,EAAAA,cAAc,EAAE,CAAC,oBAAD,EAAuB,6BAAvB,CAFH;AAGbC,EAAAA,eAAe,EAAE,CAAC,6BAAD,CAHJ;AAIblB,EAAAA,eAAe,EAAE,CACf,6BADe,EAEf,6BAFe,EAGf,6BAHe,EAIf,6BAJe,EAKf,8BALe,EAMf,+BANe;AAJJ,CAAf;AAcA,AAAO,IAAImB,UAAU,GAAGjD,IAAI,IAAIkD,EAAE,CAACC,OAAH,CAAWnD,IAAX,EAAiB8C,QAAQ,CAACb,SAA1B,CAAzB;AACP,AAAO,IAAImB,eAAe,GAAGpD,IAAI,IAAIkD,EAAE,CAACC,OAAH,CAAWnD,IAAX,EAAiB8C,QAAQ,CAACC,cAA1B,CAA9B;AACP,AAAO,IAAIM,gBAAgB,GAAGrD,IAAI,IAAIkD,EAAE,CAACC,OAAH,CAAWnD,IAAX,EAAiB8C,QAAQ,CAACE,eAA1B,CAA/B;AACP,AAAO,IAAIM,gBAAgB,GAAGtD,IAAI,IAAIkD,EAAE,CAACC,OAAH,CAAWnD,IAAX,EAAiB8C,QAAQ,CAAChB,eAA1B,CAA/B;AAEP,AAAO,IAAIyB,KAAK,GAAG,CAAC,QAAD,EAAW,iBAAX,CAAZ;AAEP,AAAO,SAASC,oBAAT,CAA8BC,KAA9B,EAAqC;AAC1C,SAAO/F,MAAM,CAACgG,WAAP,CACLhG,MAAM,CAACiG,OAAP,CAAeb,QAAf,EAAyB9F,GAAzB,CAA6B,CAAC,CAACa,GAAD,EAAM+F,KAAN,CAAD,KAAkB,CAC7C/F,GAD6C,EAE7C,IAAIP,GAAJ,CAAQ4F,EAAE,CAACO,KAAD,EAAQG,KAAR,CAAV,CAF6C,CAA/C,CADK,CAAP;AAMD;;AC3Bc,eAAeC,QAAf,CAAwBpH,GAAxB,EAA6B;AAC1C,MAAIgH,KAAK,GAAG,MAAM5G,IAAI,CAAC0G,KAAD,EAAQ;AAC5BO,IAAAA,QAAQ,EAAE,IADkB;AAE5BhH,IAAAA,GAAG,EAAEL,GAFuB;AAG5BM,IAAAA,MAAM,EAAE,CAAC,YAAD;AAHoB,GAAR,CAAtB;AAMA,SAAOyG,oBAAoB,CAACC,KAAD,CAA3B;AACD;;ACPc,eAAeM,sBAAf,CAAsC/D,IAAtC,EAA4C4C,OAA5C,EAAqD;AAClE,QAAMlC,SAAS,CAACtD,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAD,CAAf;AAEA,MAAIgE,aAAU,CAAChE,IAAD,CAAd,EAAsB;AAEtB,SAAOW,WAAE,CAACsD,SAAH,CAAajE,IAAb,EAAmB4C,OAAnB,EAA4B,OAA5B,CAAP;AACD;;ACNc,eAAesB,UAAf,CAA0B;AAAElE,EAAAA,IAAF;AAAQ4C,EAAAA;AAAR,CAA1B,EAA6C;AAC1D,QAAMlC,SAAS,CAACtD,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAD,CAAf;AAEA,SAAO;AACLA,IAAAA,IADK;AAEL4C,IAAAA,OAFK;AAIL;AACA;AACA;AACA;;AAPK,GAAP;AASD;;ACZD,IAAIuB,IAAI,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAZ;AA8NA,AAAe,eAAeC,UAAf,CAA0B;AAAE3H,EAAAA;AAAF,CAA1B,EAAmC;AAChD,QAAM4H,OAAO,CAAC1H,GAAR,CAAY,CAChBoH,sBAAsB,CACpB3G,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,MAAf,EAAuB,WAAvB,CADoB,EAEpB,2CAFoB,CADN,EAKhBsH,sBAAsB,CACpB3G,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,MAAf,EAAuB,aAAvB,CADoB,EAEpB,6CAFoB,CALN,CAAZ,CAAN;AAWA,SAAOyH,UAAU,CAAC;AAChBlE,IAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,MAAf,EAAuB,cAAvB,CADU;AAEhBmG,IAAAA,OAAO,EAAEuB;AAFO,GAAD,CAAjB;AAID;;AChPc,SAASG,qBAAT,CAA+B;AAC5CrE,EAAAA,EAD4C;AAE5CsC,EAAAA,IAF4C;AAG5CgC,EAAAA,SAH4C;AAI5CrC,EAAAA;AAJ4C,CAA/B,EAKZ;AACD,MAAIsC,gBAAgB,GAAGD,SAAS,CAAC5F,GAAV,CAAcsB,EAAd,CAAvB;;AACA,MAAI,CAACuE,gBAAL,EAAuB;AACrB,WAAO,IAAP;AACD;;AACDA,EAAAA,gBAAgB,GAAG,IAAIlH,GAAJ,CAAQ,CAAC,GAAGkH,gBAAJ,CAAR,CAAnB;AACAA,EAAAA,gBAAgB,CAACC,MAAjB,CAAwBlC,IAAI,CAACvC,IAA7B;AAEA,MAAI,CAAC0E,cAAD,IAAmBF,gBAAvB;;AACA,MAAIA,gBAAgB,CAAC1G,IAAjB,GAAwB,CAA5B,EAA+B;AAC7B,QAAI6G,UAAU,GAAGvH,IAAI,CAACC,OAAL,CAAakF,IAAI,CAACvC,IAAlB,CAAjB;AAEA,QAAI4E,mBAAmB,GAAGxH,IAAI,CAC3BY,IADuB,CAClB2G,UADkB,EACN1E,EADM,EACF,aADE,EAEvBL,OAFuB,CAEf,KAFe,EAER,GAFQ,CAA1B;AAGA,QAAIiF,yBAAyB,GAAGzH,IAAI,CACjCY,IAD6B,CACxB2G,UADwB,EACZ1E,EADY,EACR,UADQ,EAE7BL,OAF6B,CAErB,KAFqB,EAEd,GAFc,CAAhC;;AAGA,QAAI4E,gBAAgB,CAACzG,GAAjB,CAAqB6G,mBAArB,CAAJ,EAA+C;AAC7CF,MAAAA,cAAc,GAAGE,mBAAjB;AACD,KAFD,MAEO,IAAIJ,gBAAgB,CAACzG,GAAjB,CAAqB8G,yBAArB,CAAJ,EAAqD;AAC1DH,MAAAA,cAAc,GAAGG,yBAAjB;AACD;AACF;;AAED,MAAIC,UAAU,GAAG5C,YAAY,CAACvD,GAAb,CAAiB+F,cAAjB,CAAjB;;AAEA,MACE,CAACI,UAAU,CAACtC,MAAZ,IACAD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBwC,OADjB,IAEAD,UAAU,CAACrC,MAAX,CAAkBF,IAAlB,CAAuBwC,OAHzB,EAIE;AACA,QAAIJ,UAAU,GAAGvH,IAAI,CAACC,OAAL,CAAakF,IAAI,CAACvC,IAAlB,CAAjB;AACA,QAAI4E,mBAAmB,GAAGxH,IAAI,CAC3BY,IADuB,CAClB2G,UADkB,EACN1E,EADM,EACF,aADE,EAEvBL,OAFuB,CAEf,KAFe,EAER,GAFQ,CAA1B;;AAIA,QAAI8E,cAAc,KAAKE,mBAAvB,EAA4C;AAC1C,aAAO,IAAP;AACD;AACF;;AAED,SAAOE,UAAP;AACD;;AC9CD,SAASE,oBAAT,CAA8BC,IAA9B,EAAoCpH,GAApC,EAAyCqH,OAAzC,EAAkD;AAChD,MAAI,CAACA,OAAO,CAACnH,GAAR,CAAYF,GAAZ,CAAL,EAAuB;AAEvB,MAAIsH,KAAK,GAAGF,IAAI,CAACtG,GAAL,CAASd,GAAT,CAAZ;;AACA,MAAIsH,KAAK,IAAIA,KAAK,CAACD,OAAN,CAAcpH,IAAd,GAAqB,CAAlC,EAAqC;AACnC,QAAIsH,KAAK,GAAG,CAAZ;;AACA,SAAK,IAAInF,EAAT,IAAekF,KAAK,CAACD,OAArB,EAA8B;AAC5B,UAAIE,KAAK,KAAK,CAAV,IAAe,CAACD,KAAK,CAACE,UAA1B,EAAsC;AACpCH,QAAAA,OAAO,CAAC3H,GAAR,CAAY0C,EAAZ;AACD;;AACDmF,MAAAA,KAAK;AACLJ,MAAAA,oBAAoB,CAACC,IAAD,EAAOhF,EAAP,EAAWiF,OAAX,CAApB;AACD;AACF;AACF;;AAED,SAASI,QAAT,CAAkB;AAAEC,EAAAA,KAAF;AAAShB,EAAAA,SAAT;AAAoBrC,EAAAA;AAApB,CAAlB,EAAsD;AACpD,MAAIsD,OAAO,GAAG,IAAIC,GAAJ,EAAd;AACA,MAAIC,UAAU,GAAG,EAAjB;;AAEA,OAAK,IAAInD,IAAT,IAAiBL,YAAY,CAACyD,MAAb,EAAjB,EAAwC;AACtC,QAAI,CAACpD,IAAD,IAASA,IAAI,CAACC,MAAd,IAAwB,CAACD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBwC,OAA9C,EAAuD;AAEvD,QAAIa,MAAM,GAAG,EAAb;;AACA,SAAK,IAAI3F,EAAT,IAAesC,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB3F,KAAhC,EAAuC;AACrC,UAAIiJ,UAAU,GAAGvB,qBAAqB,CAAC;AACrCrE,QAAAA,EADqC;AAErCsC,QAAAA,IAFqC;AAGrCgC,QAAAA,SAHqC;AAIrCrC,QAAAA;AAJqC,OAAD,CAAtC;;AAOA,UAAI2D,UAAU,IAAI,CAACA,UAAU,CAACrD,MAA1B,IAAoCqD,UAAU,CAACpD,MAAX,CAAkBF,IAAlB,CAAuBwC,OAA/D,EAAwE;AACtEa,QAAAA,MAAM,CAACE,IAAP,CAAYD,UAAU,CAACpD,MAAX,CAAkBF,IAAlB,CAAuBwD,QAAnC,EADsE;AAEvE;AACF;;AAED,QAAIV,UAAU,GAAG9C,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB0C,IAAjB,KAA0B,UAA3C;AACA,QAAIe,MAAM,GAAGzD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB0D,cAA9B;AAEAP,IAAAA,UAAU,CAACI,IAAX,CACG,KAAIvD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBwD,QAAS,oBAAmBV,UAAW,cAC3DW,MAAM,KAAK,GAAX,GAAiB,EAAjB,GAAsBA,MACvB;qBACcJ,MAAM,CAACM,MAAP,GAAgB,CAAhB,GAAoBC,IAAI,CAACC,SAAL,CAAeR,MAAf,CAApB,GAA6C,EAAG,MAJjE;AAMAJ,IAAAA,OAAO,CAAC9G,GAAR,CAAY6D,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBwD,QAA7B,EAAuC;AACrCC,MAAAA,MADqC;AAErCX,MAAAA,UAFqC;AAGrCH,MAAAA,OAAO,EAAE,IAAI5H,GAAJ,CAAQsI,MAAR;AAH4B,KAAvC;AAKD;;AAED,MAAIS,QAAQ,GAAG,MAAf;AACA,MAAIC,YAAY,GAAG,IAAIhJ,GAAJ,CAAQ,CAAC+I,QAAD,CAAR,CAAnB;AACArB,EAAAA,oBAAoB,CAACQ,OAAD,EAAUa,QAAV,EAAoBC,YAApB,CAApB;AAEA,SAAQ;;;;;;EAMRf,KAAK,GAAG,0CAAH,GAAgD,EAAG;;;EAGxDG,UAAU,CAAC1H,IAAX,CAAgB,KAAhB,CAAuB;;;mBAGNqI,QAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsGtBd,KAAK,GACA;;;;;;;MADA,GASD,EACL;;;;;;;;;;;;;QAcGA,KAAK,GACA;;;;;;;UADA,GASD,EACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoCCA,KAAK,GACD,0DADC,GAED,kBACL;;;;;;0BAMmBY,IAAI,CAACC,SAAL,CAAe,CAAC,GAAGE,YAAJ,CAAf,EAAkC,IAAlC,EAAwC,IAAxC,CAA8C;;;;;;EAjMtE;AAwMD;;AAED,AAAe,SAASC,UAAT,CAAoB;AAAE9J,EAAAA,GAAF;AAAO8I,EAAAA,KAAP;AAAchB,EAAAA,SAAd;AAAyBrC,EAAAA;AAAzB,CAApB,EAA6D;AAC1E,SAAOgC,UAAU,CAAC;AAChBlE,IAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,OAAf,EAAwB,cAAxB,CADU;AAEhBmG,IAAAA,OAAO,EAAE0C,QAAQ,CAAC;AAAEC,MAAAA,KAAF;AAAShB,MAAAA,SAAT;AAAoBrC,MAAAA;AAApB,KAAD;AAFD,GAAD,CAAjB;AAID;;ACzQD,IAAIsE,aAAa,GAAI;;;;;;;;;;;;;;;;;;;EAArB;AAqBA,AAAe,SAASC,cAAT,CAAwB;AAAEhK,EAAAA;AAAF,CAAxB,EAAiC;AAC9C,SAAOyH,UAAU,CAAC;AAChBlE,IAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,OAAf,EAAwB,gBAAxB,CADU;AAEhBmG,IAAAA,OAAO,EAAE4D;AAFO,GAAD,CAAjB;AAID;;AC1BD,IAAIE,cAAc,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAtB;AAyCA,AAAe,SAASC,eAAT,CAAyB;AAAElK,EAAAA;AAAF,CAAzB,EAAkC;AAC/C,SAAOyH,UAAU,CAAC;AAChBlE,IAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,OAAf,EAAwB,iBAAxB,CADU;AAEhBmG,IAAAA,OAAO,EAAE8D;AAFO,GAAD,CAAjB;AAID;;AC7CD,IAAIE,cAAc,GAAGC,KAAK,IAAK;;;;;;;;IAQ3BA,KAAK,CACJ7J,GADD,CACK,CAAC;AAAE8J,EAAAA,IAAF;AAAQC,EAAAA,QAAR;AAAkBC,EAAAA;AAAlB,CAAD,KAAkC;AACrC,MAAIC,GAAG,GAAG,CAAE,IAAGH,IAAK,2BAA0BC,QAAS,EAA7C,CAAV;;AACA,MAAIC,QAAJ,EAAc;AACZC,IAAAA,GAAG,CAACnB,IAAJ,CAAU,eAAckB,QAAS,EAAjC;AACD;;AACDC,EAAAA,GAAG,CAACnB,IAAJ,CAAS,IAAT;AACA,SAAOmB,GAAG,CAACjJ,IAAJ,CAAS,EAAT,CAAP;AACD,CARD,EASCA,IATD,CASM,GATN,CASW;;0BAjBf;;AAqBA,eAAekJ,cAAf,CAA8BzK,GAA9B,EAAmC;AACjC,MAAIoK,KAAK,GAAG;AACVM,IAAAA,MAAM,EAAE;AACNC,MAAAA,KAAK,EAAE;AADD,KADE;AAIVC,IAAAA,MAAM,EAAE;AACND,MAAAA,KAAK,EAAE;AADD,KAJE;AAOVE,IAAAA,MAAM,EAAE;AACNF,MAAAA,KAAK,EAAE;AADD;AAPE,GAAZ;;AAWA,MAAI;AACFP,IAAAA,KAAK,GAAGV,IAAI,CAACoB,KAAL,CACN,MAAM5G,WAAE,CAAC6G,QAAH,CACJpK,IAAI,CAACqK,OAAL,CAAarK,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,IAAf,EAAqB,gBAArB,CAAb,CADI,EAEJ,MAFI,CADA,EAKNoK,KALF;AAMA,WAAOA,KAAK,CAACa,IAAb;AACD,GARD,CAQE,OAAO5G,KAAP,EAAc;;AAEhB,SAAOpD,MAAM,CAACiG,OAAP,CAAekD,KAAf,EACJrF,IADI,CACC,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAAC,CAAD,CAAD,CAAK2F,KAAL,GAAa1F,CAAC,CAAC,CAAD,CAAD,CAAK0F,KAD7B,EAEJpK,GAFI,CAEA,CAAC,CAAC8J,IAAD,EAAO5J,IAAP,CAAD,EAAekI,KAAf,EAAsBpG,IAAtB,MAAgC;AACnC8H,IAAAA,IADmC;AAEnCC,IAAAA,QAAQ,EAAE3B,KAAK,KAAK,CAAV,GAAc,CAAd,GAAkBpG,IAAI,CAACoG,KAAK,GAAG,CAAT,CAAJ,CAAgB,CAAhB,EAAmBgC,KAAnB,GAA2B,CAFpB;AAGnCJ,IAAAA,QAAQ,EACN5B,KAAK,KAAK,CAAV,GACIlI,IAAI,CAACkK,KADT,GAEIhC,KAAK,KAAKpG,IAAI,CAACkH,MAAL,GAAc,CAAxB,GACA,IADA,GAEAhJ,IAAI,CAACkK;AARwB,GAAhC,CAFA,CAAP;AAYD;;AAED,AAAe,eAAeO,aAAf,CAA6B;AAAElL,EAAAA;AAAF,CAA7B,EAAsC;AACnD,SAAOyH,UAAU,CAAC;AAChBlE,IAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,OAAf,EAAwB,eAAxB,CADU;AAEhBmG,IAAAA,OAAO,EAAEgE,cAAc,CAAC,MAAMM,cAAc,CAACzK,GAAD,CAArB;AAFP,GAAD,CAAjB;AAID;;AC9DD,IAAImL,UAAU,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;EAAlB;AA2BA,AAAe,eAAeC,WAAf,CAA2B;AAAEpL,EAAAA;AAAF,CAA3B,EAAoC;AACjD,MAAIuD,IAAI,GAAG5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe,OAAf,EAAwB,eAAxB,CAAX;AAEA,MAAIkE,WAAE,CAACqD,UAAH,CAAchE,IAAd,KAAuB8H,OAAO,CAACC,GAAR,CAAYC,qBAAvC,EAA8D,OAAO,IAAP;AAE9D,SAAO9D,UAAU,CAAC;AAAElE,IAAAA,IAAF;AAAQ4C,IAAAA,OAAO,EAAEgF;AAAjB,GAAD,CAAjB;AACD;;AClCD,IAAIK,kBAAkB,GAAG7K,IAAI,CAACY,IAAL,CAAU,OAAV,EAAmB,gBAAnB,CAAzB;AACA,IAAIkK,mBAAmB,GAAG9K,IAAI,CAACY,IAAL,CAAU,OAAV,EAAmB,iBAAnB,CAA1B;AACA,IAAImK,iBAAiB,GAAG/K,IAAI,CAACY,IAAL,CAAU,OAAV,EAAmB,eAAnB,CAAxB;AACA,IAAIoK,aAAa,GAAGhL,IAAI,CAACY,IAAL,CAAU,MAAV,EAAkB,cAAlB,CAApB;AACA,IAAIqK,aAAa,GAAGjL,IAAI,CAACY,IAAL,CAAU,OAAV,EAAmB,cAAnB,CAApB;AAEA,AAAe,SAASsK,mBAAT,CAA6B7L,GAA7B,EAAkC;AAC/C,SAAO,SAAS8L,eAAT,CAAyBtI,EAAzB,EAA6BD,IAA7B,EAAmC;AACxC,YAAQC,EAAR;AACE,WAAK,QAAL;AACE;AACA;;AAEF,WAAK,iBAAL;AACE,eAAQ,2BAA0BC,UAAU,CAC1CF,IAD0C,EAE1C5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe0L,iBAAf,CAF0C,EAG1C1L,GAH0C,CAI1C,GAJF;;AAMF,WAAK,kBAAL;AACE,eAAQ,4BAA2ByD,UAAU,CAC3CF,IAD2C,EAE3C5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAewL,kBAAf,CAF2C,EAG3CxL,GAH2C,CAI3C,GAJF;;AAMF,WAAK,mBAAL;AACE,eAAQ,6BAA4ByD,UAAU,CAC5CF,IAD4C,EAE5C5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAeyL,mBAAf,CAF4C,EAG5CzL,GAH4C,CAI5C,GAJF;;AAMF,WAAK,cAAL;AACE,eAAQ,8BAA6ByD,UAAU,CAC7CF,IAD6C,EAE7C5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe2L,aAAf,CAF6C,EAG7C3L,GAH6C,CAI7C,GAJF;;AAMF,WAAK,cAAL;AACE,eAAQ,8BAA6ByD,UAAU,CAC7CF,IAD6C,EAE7C5C,IAAI,CAACY,IAAL,CAAUvB,GAAV,EAAe4L,aAAf,CAF6C,EAG7C5L,GAH6C,CAI7C,GAJF;;AAMF;AACE,eAAO,KAAP;AAzCJ;AA2CD,GA5CD;AA6CD;;ACvDM,IAAI+L,KAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAT,EAAqB;AAErB,MAAIlK,KAAJ;;AACA,MAAIuH,MAAJ,EAAY;AACVvH,IAAAA,KAAK,GAAI,IAAGiK,KAAK,CAAC5B,IAAK,IAAG2B,IAAI,CAACG,MAAO,GAAtC;AACD,GAFD,MAEO;AACLnK,IAAAA,KAAK,GAAI,gBAAeiK,KAAK,CAACG,SAAU,UAASJ,IAAI,CAACG,MAAO,OAA7D;AACD;;AAEDF,EAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAG4C,KAAK,CAACG,SAAU,IAAGpK,KAAM,EAA/C;AACD,CAXM;;ACAA,IAAI+J,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAL,IAAmB,CAACb,OAAO,CAACC,GAAR,CAAYC,qBAApC,EAA2D;;AAE3D,MAAIU,KAAK,CAAC3C,QAAV,EAAoB;AAClB2C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAG4C,KAAK,CAACK,WAAY,KAAIL,KAAK,CAAC3C,QAAS,GAA3D;AACD,GAFD,MAEO;AACL2C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAG4C,KAAK,CAACK,WAAY,YAAWL,KAAK,CAACK,WAAY,KAArE;AACD;AACF,CARM;;ACAP,IAAIC,MAAM,GAAG,gBAAb;AACA,IAAIC,QAAQ,GAAG,wBAAf;AAEA,IAAIC,qBAAqB,GAAG,aAA5B;AACA,IAAIC,KAAK,GAAG,IAAZ;AACA,IAAIC,UAAU,GAAG,GAAjB;AACA,IAAIC,EAAE,GAAG,IAAT;AACA,IAAIC,GAAG,GAAG,KAAV;AACA,IAAIC,EAAE,GAAG,IAAT;AACA,IAAIC,EAAE,GAAG,IAAT;AAEA,IAAIC,OAAO,GAAG,KAAd;AACA,IAAIC,QAAQ,GAAG,MAAf;AACA,IAAIC,OAAO,GAAG,KAAd;AACA,IAAIC,IAAI,GAAG,MAAX;;AAEA,IAAIC,OAAO,GAAIpB,IAAD,IAAU;AACtB,MAAIqB,KAAK,GAAGC,QAAQ,CAACtB,IAAI,CAAC3B,IAAN,CAApB;AAEA,MAAI,OAAO2B,IAAI,CAAChK,KAAZ,KAAsB,QAA1B,EAAoC,OAAOqL,KAAK,CAAC,CAAD,CAAL,IAAY,EAAnB;AAEpC,MAAIlG,KAAK,GACP,OAAO6E,IAAI,CAAChK,KAAZ,KAAsB,QAAtB,IACAgK,IAAI,CAAChK,KAAL,CAAWmF,KAAX,CAAiBoF,MAAM,CAACgB,IAAP,CAAYvB,IAAI,CAAChK,KAAjB,IAA0BuK,MAA1B,GAAmCC,QAApD,CAFF;AAGA,SAAQrF,KAAK,IAAIkG,KAAK,CAACG,IAAN,CAAYC,CAAD,IAAOA,CAAC,KAAKtG,KAAK,CAAC,CAAD,CAA7B,CAAV,IAAgDkG,KAAK,CAAC,CAAD,CAArD,IAA4D,EAAnE;AACD,CATD;AAYA,IAAIK,MAAM,GAAG,CAAChB,KAAD,EAAQC,UAAR,EAAoBC,EAApB,EAAwBC,GAAxB,EAA6BC,EAA7B,EAAiCC,EAAjC,CAAb;AACA,IAAIY,uBAAuB,GAAG,CAAChB,UAAD,EAAaD,KAAb,EAAoBE,EAApB,EAAwBC,GAAxB,EAA6BC,EAA7B,EAAiCC,EAAjC,CAA9B;AACA,IAAIa,4BAA4B,GAAG,CACjCnB,qBADiC,EAEjCC,KAFiC,EAGjCC,UAHiC,EAIjCC,EAJiC,EAKjCC,GALiC,EAMjCC,EANiC,EAOjCC,EAPiC,CAAnC;AASA,IAAIc,KAAK,GAAG,CAACb,OAAD,EAAUC,QAAV,EAAoBC,OAApB,EAA6BC,IAA7B,CAAZ;AACA,IAAIW,QAAQ,GAAG,EAAf;AAEA,IAAIC,KAAK,GAAG;AACVC,EAAAA,UAAU,EAAEN,MADF;AAEVO,EAAAA,sBAAsB,EAAEP,MAFd;AAGVQ,EAAAA,uBAAuB,EAAER,MAHf;AAIVS,EAAAA,iBAAiB,EAAET,MAJT;AAKVU,EAAAA,eAAe,EAAEV,MALP;AAMVW,EAAAA,YAAY,EAAEX,MANJ;AAOVY,EAAAA,gBAAgB,EAAEZ,MAPR;AAQVa,EAAAA,mBAAmB,EAAEb,MARX;AASVc,EAAAA,oBAAoB,EAAEd,MATZ;AAUVe,EAAAA,cAAc,EAAEf,MAVN;AAWVgB,EAAAA,WAAW,EAAEhB,MAXH;AAYViB,EAAAA,MAAM,EAAEjB,MAZE;AAaVkB,EAAAA,SAAS,EAAEjB,uBAbD;AAcVkB,EAAAA,QAAQ,EAAEf,QAdA;AAeVgB,EAAAA,UAAU,EAAEhB,QAfF;AAgBViB,EAAAA,QAAQ,EAAErB,MAhBA;AAiBVsB,EAAAA,MAAM,EAAEtB,MAjBE;AAkBVuB,EAAAA,IAAI,EAAEvB,MAlBI;AAmBVwB,EAAAA,aAAa,EAAEpB,QAnBL;AAoBVqB,EAAAA,UAAU,EAAEvB,4BApBF;AAqBVwB,EAAAA,MAAM,EAAE1B,MArBE;AAsBV2B,EAAAA,YAAY,EAAE3B,MAtBJ;AAuBV4B,EAAAA,UAAU,EAAE5B,MAvBF;AAwBV6B,EAAAA,WAAW,EAAE7B,MAxBH;AAyBV8B,EAAAA,SAAS,EAAE9B,MAzBD;AA0BV+B,EAAAA,SAAS,EAAE/B,MA1BD;AA2BVnD,EAAAA,QAAQ,EAAEmD,MA3BA;AA4BVgC,EAAAA,SAAS,EAAEhC,MA5BD;AA6BVpD,EAAAA,QAAQ,EAAEoD,MA7BA;AA8BViC,EAAAA,OAAO,EAAEjC,MA9BC;AA+BVkC,EAAAA,OAAO,EAAElC,MA/BC;AAgCVmC,EAAAA,OAAO,EAAE/B,QAhCC;AAiCVgC,EAAAA,OAAO,EAAEpC,MAjCC;AAkCVqC,EAAAA,OAAO,EAAErC,MAlCC;AAmCVsC,EAAAA,aAAa,EAAEtC,MAnCL;AAoCVuC,EAAAA,WAAW,EAAEvC,MApCH;AAqCVwC,EAAAA,YAAY,EAAExC,MArCJ;AAsCVyC,EAAAA,UAAU,EAAEzC,MAtCF;AAuCV0C,EAAAA,WAAW,EAAE1C,MAvCH;AAwCV2C,EAAAA,KAAK,EAAE3C,MAxCG;AAyCV4C,EAAAA,MAAM,EAAEzC,KAzCE;AA0CV0C,EAAAA,OAAO,EAAE1C,KA1CC;AA2CV2C,EAAAA,OAAO,EAAE3C,KA3CC;AA4CV4C,EAAAA,KAAK,EAAE3C,QA5CG;AA6CV4C,EAAAA,MAAM,EAAE5C,QA7CE;AA8CV6C,EAAAA,MAAM,EAAE7C,QA9CE;AA+CV8C,EAAAA,eAAe,EAAE9C,QA/CP;AAgDV+C,EAAAA,gBAAgB,EAAE/C,QAhDR;AAiDVgD,EAAAA,aAAa,EAAEpD,MAjDL;AAkDVqD,EAAAA,aAAa,EAAErD,MAlDL;AAmDVsD,EAAAA,UAAU,EAAEtD,MAnDF;AAoDVuD,EAAAA,YAAY,EAAEvD,MApDJ;AAqDVwD,EAAAA,IAAI,EAAErD,KArDI;AAsDVsD,EAAAA,YAAY,EAAEzD,MAtDJ;AAuDV0D,EAAAA,GAAG,EAAE1D,MAvDK;AAwDV2D,EAAAA,UAAU,EAAE3D,MAxDF;AAyDV4D,EAAAA,UAAU,EAAE5D,MAzDF;AA0DV/C,EAAAA,KAAK,EAAE+C,MA1DG;AA2DV6D,EAAAA,WAAW,EAAE7D,MA3DH;AA4DV8D,EAAAA,MAAM,EAAE1D;AA5DE,CAAZ;AA8DA,IAAI2D,UAAU,GAAGxQ,MAAM,CAACC,IAAP,CAAY6M,KAAZ,CAAjB;;AAEA,IAAIT,QAAQ,GAAIlM,GAAD,IAAS;AACtB,MAAIsQ,KAAK,GAAGD,UAAU,CAACjE,IAAX,CAAiBmE,IAAD,IAAUvQ,GAAG,CAAC4C,UAAJ,CAAe2N,IAAf,CAA1B,CAAZ;AACA,SAAO5D,KAAK,CAAC2D,KAAD,CAAL,IAAgB5D,QAAvB;AACD,CAHD;;AC1GA,YAAe8D,CAAC,IAAK,IAAGA,CAAE,GAA1B;;ACGA,YAAe,CAAC5P,KAAD,EAAQgK,IAAR,KACb,OAAOhK,KAAP,KAAiB,QAAjB,IAA6B,CAAC6P,MAAM,CAAC7P,KAAD,EAAQgK,IAAR,CAApC,GACItC,IAAI,CAACC,SAAL,CAAe3H,KAAf,CADJ,GAEI8P,IAAI,CAAC9P,KAAD,CAHV;;ACQO,IAAI+P,eAAe,GAAG,CAAC/F,IAAD,EAAOgG,QAAP,KAAoB;AAC/C,MACEA,QAAQ,KAAK,WAAb,IACAA,QAAQ,KAAK,YADb,IAEAA,QAAQ,KAAK,YAFb,IAGAA,QAAQ,KAAK,mBAHb,IAIA,CAAChG,IAAI,CAACzC,MALR,EAOE,OAAO,KAAP;AAEF,MAAI0I,kBAAkB,GAAGjG,IAAI,CAACzC,MAAL,CAAY2I,MAAZ,CAAmBC,IAAnB,CACtBC,KAAD,IAAWA,KAAK,CAACpQ,KAAN,KAAgBgQ,QADJ,CAAzB;AAIA,SAAOC,kBAAkB,KAAKjG,IAAI,CAACzC,MAAL,CAAY8I,EAAZ,IAAkBrG,IAAI,CAACzC,MAAL,CAAYc,IAAnC,CAAzB;AACD,CAfM;AAiBP,IAAIiI,aAAa,GAAG,UAApB;AACA,AAAO,IAAIC,eAAe,GAAIC,GAAD,IAASF,aAAa,CAAC/E,IAAd,CAAmBiF,GAAnB,CAA/B;AACP,AAAO,IAAIC,aAAa,GAAID,GAAD,IAAS;AAClC,MAAIrL,KAAK,GAAGqL,GAAG,CAACrL,KAAJ,CAAUmL,aAAV,CAAZ;AACA,SAAOnL,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAR,GAAcqL,GAA1B;AACD,CAHM;AAKP,AAAO,IAAIE,iBAAiB,GAAIC,GAAD,IAC7BC,KAAK,CAACC,OAAN,CAAcF,GAAd,IACK,IAAGA,GAAG,CAACpS,GAAJ,CAAQmS,iBAAR,CAA2B,GADnC,GAEIZ,IAAI,CACF7Q,MAAM,CAACC,IAAP,CAAYyR,GAAZ,EACGpS,GADH,CACQuS,CAAD,IAAO;AACV,MAAIzQ,CAAC,GACH,OAAOsQ,GAAG,CAACG,CAAD,CAAV,KAAkB,QAAlB,IAA8BC,OAAO,CAACJ,GAAG,CAACG,CAAD,CAAJ,CAArC,GACIJ,iBAAiB,CAACC,GAAG,CAACG,CAAD,CAAJ,CADrB,GAEIH,GAAG,CAACG,CAAD,CAHT;AAIA,SAAQ,GAAEpJ,IAAI,CAACC,SAAL,CAAemJ,CAAf,CAAkB,KAAIzQ,CAAE,EAAlC;AACD,CAPH,EAQGd,IARH,CAQQ,GARR,CADE,CAHH;AAeP,AAUO,IAAIyR,OAAO,GAAG,CAAChH,IAAD,EAAO5K,GAAP,EAAYgR,KAAK,GAAG,MAApB,KAA+B;AAClD,MAAIa,MAAM,GACR,OAAO7R,GAAP,KAAe,QAAf,GAA2B0C,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAWjJ,GAA5C,GAAmD0C,CAAD,IAAO1C,GAAG,CAACmM,IAAJ,CAASzJ,CAAC,CAACuG,IAAX,CAD3D;;AAGA,MAAI+H,KAAK,KAAK,MAAd,EAAsB;AACpB,QAAIc,SAAS,GAAGlH,IAAI,CAACkG,MAAL,CAAY1E,IAAZ,CAAkB/M,IAAD,IAAUA,IAAI,CAACuB,KAAL,KAAeoQ,KAA1C,CAAhB;AACA,QAAIe,IAAI,GAAGD,SAAS,IAAIA,SAAS,CAACE,UAAV,CAAqB5F,IAArB,CAA0ByF,MAA1B,CAAxB;;AACA,QAAIE,IAAJ,EAAU;AACR,aAAOA,IAAP;AACD;AACF;;AAED,SAAOnH,IAAI,CAACoH,UAAL,IAAmBpH,IAAI,CAACoH,UAAL,CAAgB5F,IAAhB,CAAqByF,MAArB,CAA1B;AACD,CAbM;AAeP,AAAO,IAAII,qBAAqB,GAAG,CAACrH,IAAD,EAAO5K,GAAP,EAAYkS,YAAZ,KAA6B;AAC9D,SAAOC,OAAO,CAACvH,IAAD,EAAO5K,GAAP,CAAP,GAAqB4R,OAAO,CAAChH,IAAD,EAAO5K,GAAP,CAAP,CAAmBY,KAAxC,GAAgDsR,YAAvD;AACD,CAFM;AAIP;AAEA,IAAIE,cAAc,GAAG,CAACC,QAAD,EAAWC,SAAX,KAAyB;AAC5C,MAAIxB,MAAM,GAAGwB,SAAS,CAACxB,MAAV,CACV/Q,MADU,CACFiR,KAAD,IAAW,CAACA,KAAK,CAACuB,QADf,EAEVpT,GAFU,CAEL6R,KAAD,IAAW;AACd,QAAIe,IAAI,GAAGf,KAAK,CAACgB,UAAN,CAAiB5F,IAAjB,CAAuB2F,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAcoJ,QAAQ,CAACpJ,IAAvD,CAAX;AACA,WAAO8I,IAAI,IAAI;AAAEA,MAAAA,IAAF;AAAQS,MAAAA,IAAI,EAAExB,KAAK,CAACpQ,KAApB;AAA2BoQ,MAAAA;AAA3B,KAAf;AACD,GALU,EAMVjR,MANU,CAMH0S,OANG,EAOVC,OAPU,EAAb;AASA,MAAIC,OAAO,CAAC7B,MAAD,CAAX,EAAqB,OAAO,KAAP;AAErB,SAAOA,MAAP;AACD,CAbD;;AAeA,SAAS8B,2BAAT,CAAqChI,IAArC,EAA2CzC,MAA3C,EAAmD0C,KAAnD,EAA0D;AACxD,MAAIjK,KAAK,GAAG,IAAZ;;AAEA,MAAI,WAAWuL,IAAX,CAAgBvB,IAAI,CAAC3B,IAArB,KAA8B2B,IAAI,CAACiI,QAAL,KAAkB,WAApD,EAAiE;AAC/D,QAAIC,QAAQ,GAAGC,WAAW,CAACnI,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAA1B;AACAA,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,IAAAA,KAAK,CAACoI,SAAN,GAAkB,IAAlB;AAEA,WAAQ,oBAAmBH,QAAS,IAApC;AACD,GAND,MAMO,IAAIlI,IAAI,CAACsI,IAAL,CAAUC,IAAd,EAAoB;AACzBvS,IAAAA,KAAK,GAAGgK,IAAI,CAAChK,KAAb;AACD,GAFM,MAEA,IAAI,OAAOgK,IAAI,CAAChK,KAAZ,KAAsB,QAA1B,EAAoC;AACzCA,IAAAA,KAAK,GAAGwS,IAAI,CAACxI,IAAI,CAAChK,KAAN,CAAZ;AACD,GAFM,MAEA,IAAI,OAAOgK,IAAI,CAAChK,KAAZ,KAAsB,SAAtB,IAAmCgK,IAAI,CAAC3B,IAAL,KAAc,aAArD,EAAoE;AACzErI,IAAAA,KAAK,GAAGgK,IAAI,CAAChK,KAAL,GAAa,SAAb,GAAyB,IAAjC;AACD,GAFM,MAEA;AACL,QAAIyS,IAAI,GAAGrH,OAAO,CAACpB,IAAD,CAAlB;AACAhK,IAAAA,KAAK,GAAGyS,IAAI,GAAI,IAAGzI,IAAI,CAAChK,KAAM,GAAEyS,IAAK,GAAzB,GAA8BzI,IAAI,CAAChK,KAA/C;AACD;;AAED,SAAOA,KAAP;AACD;;AAED,IAAI0S,YAAY,GAAG,6DAAnB;AACA,IAAIC,WAAW,GAAG,oEAAlB;AACA,IAAIC,4BAA4B,GAAG,wCAAnC;AACA,IAAIC,OAAO,GAAG,yBAAd;AAEA,AAAO,SAASC,kBAAT,CAA4BrB,QAA5B,EAAsCC,SAAtC,EAAiDzH,KAAjD,EAAwD;AAC7D,MAAI8I,WAAW,GAAGvB,cAAc,CAACC,QAAD,EAAWC,SAAX,CAAhC;AAEA,MAAI,CAACqB,WAAL,EAAkB,OAAO,KAAP;AAElB,MAAIC,WAAW,GAAGhB,2BAA2B,CAACP,QAAD,EAAWC,SAAX,EAAsBzH,KAAtB,CAA7C;AACA8I,EAAAA,WAAW,CAACvU,OAAZ,CAAqB4R,KAAD,IAAW;AAC7B,QAAIwB,IAAI,GAAGxB,KAAK,CAACwB,IAAjB;;AACA,QAAI3H,KAAK,CAACgJ,IAAN,IAAcN,WAAW,CAACpH,IAAZ,CAAiBqG,IAAjB,CAAlB,EAA0C;AACxCA,MAAAA,IAAI,GAAGA,IAAI,CAACzQ,OAAL,CAAa,OAAb,EAAsB,MAAtB,CAAP;AACD,KAFD,MAEO,IAAI+R,oBAAoB,CAACxB,SAAD,CAApB,IAAmCgB,YAAY,CAACnH,IAAb,CAAkBqG,IAAlB,CAAvC,EAAgE;AACrEA,MAAAA,IAAI,GAAGA,IAAI,CAACzQ,OAAL,CAAa,QAAb,EAAuB,aAAvB,CAAP;AACD,KAFM,MAEA,IAAI0R,OAAO,CAACtH,IAAR,CAAaqG,IAAb,CAAJ,EAAwB;AAC7B,UAAIM,QAAQ,GAAGC,WAAW,CAAC/B,KAAK,CAACA,KAAP,EAAcsB,SAAd,EAAyBzH,KAAzB,CAA1B;AACAA,MAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,MAAAA,KAAK,CAACkJ,OAAN,GAAgB,IAAhB;AACAvB,MAAAA,IAAI,GAAGA,IAAI,CAACzQ,OAAL,CAAa,sBAAb,EAAsC,aAAY+Q,QAAS,IAA3D,CAAP;AACD,KALM,MAKA,IACL,CAACR,SAAS,CAAC0B,MAAV,IAAoB,CAAC,CAACC,mBAAmB,CAAC3B,SAAD,CAA1C,KACAkB,4BAA4B,CAACrH,IAA7B,CAAkCqG,IAAlC,CAFK,EAGL;AACAA,MAAAA,IAAI,GAAGA,IAAI,CAACzQ,OAAL,CAAa,QAAb,EAAuB,EAAvB,CAAP;AACD;;AAED6R,IAAAA,WAAW,GAAI,GAAEpB,IAAK,MAAKI,2BAA2B,CACpD5B,KAAK,CAACe,IAD8C,EAEpDO,SAFoD,EAGpDzH,KAHoD,CAIpD,MAAK+I,WAAY,EAJnB;AAKD,GAvBD;AAyBA,MAAIM,SAAS,GAAGP,WAAW,CAACA,WAAW,CAACtL,MAAZ,GAAqB,CAAtB,CAA3B;;AAEA,MACE,CAAC6L,SAAS,CAACnC,IAAV,CAAeoC,SAAhB,IACAD,SAAS,CAACnC,IAAV,CAAeoC,SAAf,CAAyBC,KAAzB,KAAmC,QAFrC,EAGE;AACAF,IAAAA,SAAS,CAACnC,IAAV,CAAe6B,WAAf,GAA6BA,WAA7B;AACD;;AAED,SAAOA,WAAP;AACD;AAED,AAAO,IAAIS,uBAAuB,GAAG,CAACvD,MAAD,EAASwD,WAAT,EAAsBC,WAAtB,KAAsC;AACzE,MAAIX,WAAW,GAAGW,WAAlB;AAEAzD,EAAAA,MAAM,CAAC1R,OAAP,CAAe,CAAC4R,KAAD,EAAQzJ,KAAR,KAAkB;AAC/BqM,IAAAA,WAAW,GAAI,GAAE5C,KAAK,CAACwB,IAAK,MAAK8B,WAAW,CAAC/M,KAAD,CAAQ,KAAtC,GAA6CqM,WAA3D;AACD,GAFD;AAIA,SAAOA,WAAP;AACD,CARM;AAUP,IAAIY,UAAU,GAAG,CACf,WADe,EAEf,WAFe,EAGf,eAHe,EAIf,YAJe,EAKf,YALe,EAMf,mBANe,CAAjB;AAQA,AAAO,IAAIC,YAAY,GAAI7J,IAAD,IACxB4J,UAAU,CAACpI,IAAX,CAAiBsI,GAAD,IAASC,KAAK,CAAC/J,IAAD,EAAO8J,GAAP,CAA9B,KAA8C,MADzC;AAEP,AAAO,IAAI/C,OAAO,GAAIJ,GAAD,IAAS1R,MAAM,CAACC,IAAP,CAAYyR,GAAZ,EAAiBlJ,MAAjB,GAA0B,CAAjD;AACP,AAAO,IAAIuM,iBAAiB,GAAIrD,GAAD,IAC7B1R,MAAM,CAACC,IAAP,CAAYyR,GAAZ,EAAiBR,IAAjB,CAAuBW,CAAD,IAAOC,OAAO,CAACJ,GAAG,CAACG,CAAD,CAAJ,CAApC,CADK;AAGP,AAAO,IAAIS,OAAO,GAAG,CAACvH,IAAD,EAAO5K,GAAP,EAAY+F,KAAZ,KAAsB;AACzC,MAAIgM,IAAI,GAAGH,OAAO,CAAChH,IAAD,EAAO5K,GAAP,CAAlB;AACA,MAAI,CAAC+R,IAAL,EAAW,OAAO,KAAP;AACX,SAAO,OAAOhM,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACgM,IAAI,CAACnR,KAAN,CAAnC,GAAkD,IAAzD;AACD,CAJM;AAMP,AAGO,IAAI6P,MAAM,GAAG,CAACoE,UAAD,EAAaC,UAAb,KAA4B;AAC9C,MAAIlK,IAAI,GAAGkK,UAAU,IAAID,UAAzB;AAEA,SAAO,OAAOjK,IAAP,KAAgB,QAAhB,GACH,8DAA8DuB,IAA9D,CAAmEvB,IAAnE,CADG,GAEH+J,KAAK,CAAC/J,IAAD,EAAO,MAAP,CAFT;AAGD,CANM;AAOP,AAAO,IAAImK,OAAO,GAAInK,IAAD,IAAU+J,KAAK,CAAC/J,IAAD,EAAO,OAAP,CAA7B;AACP,AACO,IAAI+J,KAAK,GAAG,CAAC/J,IAAD,EAAO8J,GAAP,KAAe9J,IAAI,IAAIA,IAAI,CAACsI,IAAL,CAAUwB,GAAV,CAAnC;AAEP,AAAO,IAAIT,mBAAmB,GAAIrJ,IAAD,IAAU;AACzC,MAAI,CAACA,IAAI,CAACzC,MAAV,EAAkB,OAAO,KAAP;AAClB,MAAIyC,IAAI,CAACzC,MAAL,CAAY6L,MAAhB,EAAwB,OAAOpJ,IAAI,CAACzC,MAAZ;AACxB,SAAO8L,mBAAmB,CAACrJ,IAAI,CAACzC,MAAN,CAA1B;AACD,CAJM;AAMP,AAAO,IAAI2L,oBAAoB,GAAIlJ,IAAD,IAAU;AAC1C,MAAI,CAACA,IAAI,CAACzC,MAAV,EAAkB,OAAO,CAACyC,IAAI,CAACoK,OAAb;AAClB,MAAI,CAACpK,IAAI,CAACzC,MAAL,CAAY6M,OAAjB,EAA0B,OAAO,IAAP;AAC1B,SAAOlB,oBAAoB,CAAClJ,IAAI,CAACzC,MAAN,CAA3B;AACD,CAJM;AAMP,AAAO,IAAI8M,mBAAmB,GAAIrK,IAAD,IAAU;AACzC,MAAIA,IAAI,CAACsK,SAAT,EAAoB;AAClB,WAAO,CAAC,MAAD,EAAS,WAAT,EAAsB,WAAtB,EAAmC,YAAnC,EAAiD,eAAjD,CAAP;AACD,GAFD,MAEO,IAAItK,IAAI,CAACoJ,MAAL,IAAemB,OAAO,CAACvK,IAAD,CAAtB,IAAgCqJ,mBAAmB,CAACrJ,IAAD,CAAvD,EAA+D;AACpE,WAAO,CACL,MADK,EAEL,WAFK,EAGL,WAHK,EAIL,YAJK,EAKL,YALK,EAML,mBANK,CAAP;AAQD;;AACD,SAAO,CAAC,MAAD,EAAS,WAAT,CAAP;AACD,CAdM;AAgBP,AAAO,IAAIwK,MAAM,GAAIxK,IAAD,IAClBA,IAAI,IAAIA,IAAI,CAAC1I,IAAL,KAAc,OAAtB,IAAiC0I,IAAI,CAAC3B,IAAL,KAAc,MAD1C;AAGP,AAAO,IAAIoM,MAAM,GAAIzK,IAAD,IAClBA,IAAI,CAACoH,UAAL,CAAgBjB,IAAhB,CAAsBgB,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAc,QAA7C,CADK;AAGP,AAAO,IAAIqM,QAAQ,GAAI1K,IAAD,IACpBA,IAAI,CAACoH,UAAL,CAAgBjB,IAAhB,CAAsBgB,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAc,UAA7C,CADK;AAGP,AAAO,IAAIsM,QAAQ,GAAI3K,IAAD,IACpBA,IAAI,IAAIA,IAAI,CAAC1I,IAAL,KAAc,OAAtB,IAAiC0I,IAAI,CAAC3B,IAAL,KAAc,QAD1C;AAGP,AAAO,IAAIkM,OAAO,GAAIvK,IAAD,IACnBA,IAAI,IAAIA,IAAI,CAAC1I,IAAL,KAAc,OAAtB,IAAiC0I,IAAI,CAAC3B,IAAL,KAAc,OAD1C;AAGP,AAAO,IAAI0J,OAAO,GAAIxR,IAAD,IAAUA,IAAI,CAACkH,MAAL,KAAgB,CAAxC;AAEP,AAAO,IAAImN,aAAa,GAAG,CAAC5K,IAAD,EAAOzC,MAAP,KACzByC,IAAI,CAAC3B,IAAL,KAAc,QAAd,IAA0Bd,MAAM,CAACc,IAAP,KAAgB,OAA1C,IAAqDd,MAAM,CAAC6M,OADvD;AAGP,AAAO,IAAIS,gBAAgB,GAAG,CAAC5K,KAAD,EAAQyJ,WAAR,EAAqBoB,KAArB,KAC5BpB,WAAW,CAAClV,OAAZ,CAAqB6J,IAAD,IAAU;AAC5B,MAAI1J,IAAI,GAAGmW,KAAK,CAACpB,WAAW,CAACqB,SAAZ,CAAuBtW,IAAD,IAAUA,IAAI,KAAK4J,IAAzC,CAAD,CAAhB;;AACA,MAAI,CAAC4B,KAAK,CAAC+K,MAAN,CAAa1U,QAAb,CAAsB3B,IAAtB,CAAL,EAAkC;AAChCsL,IAAAA,KAAK,CAAC+K,MAAN,CAAa3N,IAAb,CAAkB;AAChBgB,MAAAA,IADgB;AAEhB9G,MAAAA,IAAI,EAAE5C;AAFU,KAAlB;AAID;AACF,CARD,CADK;AAWP,AAAO,IAAIsW,SAAS,GAAG,CAACjL,IAAD,EAAOzC,MAAP,KAAkB;AACvC,MAAIwL,WAAW,GAAGvB,cAAc,CAACxH,IAAD,EAAOzC,MAAP,CAAhC;AACA,MAAI,CAACwL,WAAL,EAAkB,OAAO,KAAP;AAClB,MAAI+B,KAAK,GAAG/B,WAAW,CAACxU,GAAZ,CAAiB6R,KAAD,IAAWA,KAAK,CAACe,IAAN,CAAWnR,KAAtC,CAAZ;AACA,MAAI0T,WAAW,GAAGoB,KAAK,CAACvW,GAAN,CAAWI,IAAD,IAAUuW,WAAW,CAACvW,IAAD,CAA/B,CAAlB;AAEA,SAAO;AAAEoU,IAAAA,WAAF;AAAe+B,IAAAA,KAAf;AAAsBpB,IAAAA;AAAtB,GAAP;AACD,CAPM;AASP,AAAO,IAAIyB,KAAK,GAAInL,IAAD,IAAU,OAAOuB,IAAP,CAAYvB,IAAI,CAAC3B,IAAjB,KAA0B2B,IAAI,CAACoK,OAArD;AAEP,AAAO,IAAIgB,eAAe,GAAG,CAAC3D,QAAD,EAAWC,SAAX,KAC3BA,SAAS,CAACxB,MAAV,CAAiBC,IAAjB,CACGC,KAAD,IACE,CAACA,KAAK,CAACuB,QAAP,IACAvB,KAAK,CAACgB,UAAN,CAAiBjB,IAAjB,CAAuBgB,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAcoJ,QAAQ,CAACpJ,IAAvD,CAHJ,CADK;AAQP;;AAEA,IAAIgN,yBAAyB,GAAG,CAACrL,IAAD,EAAOmH,IAAP,EAAamE,QAAb,KAA0B;AACxD,MAAItV,KAAK,GAAI,WAAUgK,IAAI,CAACxI,EAAG,GAC7B2P,IAAI,CAACoE,qBAAL,GAA6B,CAA7B,GAAiCpE,IAAI,CAACoE,qBAAtC,GAA8D,EAC/D,IAAGpE,IAAI,CAAC9I,IAAK,EAFd,CADwD;AAMxD;AACA;AACA;;AAEA,SAAQ,GAAEiN,QAAQ,GAAGnE,IAAI,CAAC9I,IAAR,GAAgB,MAAK8I,IAAI,CAAC9I,IAAK,GAAG,KAAIrI,KAAM,EAA9D;AACD,CAXD;;AAaA,IAAIwV,kBAAkB,GAAG,CAACxL,IAAD,EAAOyL,SAAP,EAAkBH,QAAlB,KAA+B;AACtD,MAAII,YAAY,GAAI,cAApB;AAEAD,EAAAA,SAAS,CAACE,KAAV,CAAgBnX,OAAhB,CAAwB,CAAC2S,IAAD,EAAOyE,CAAP,KAAa;AACnCF,IAAAA,YAAY,IAAK,IAAGG,iBAAiB,CAAC7L,IAAD,EAAOmH,IAAP,EAAamE,QAAb,CAAuB,IAA5D;AACD,GAFD;AAIA,SAAQ,GAAEI,YAAa,GAAvB;AACD,CARD;AAqBO,IAAII,iBAAiB,GAAG,CAAC9L,IAAD,EAAOsL,QAAP,KAAoB;AACjD,MAAIK,KAAK,GAAGL,QAAQ,GAAGS,mBAAmB,CAAC/L,IAAD,EAAO,IAAP,CAAtB,GAAqCgM,cAAc,CAAChM,IAAD,CAAvE;AAEA,SAAO2L,KAAK,CAACpX,GAAN,CAAW4S,IAAD,IAAU0E,iBAAiB,CAAC7L,IAAD,EAAOmH,IAAP,EAAamE,QAAb,CAArC,EAA6D/V,IAA7D,CAAkE,IAAlE,CAAP;AACD,CAJM;;AAMP,IAAI0W,YAAY,GAAG,CAAC9E,IAAD,EAAO+E,gBAAgB,GAAG,IAA1B,KAAmC;AACpD,MAAIzD,IAAI,GAAGrH,OAAO,CAAC+F,IAAD,CAAlB;;AACA,MAAIsB,IAAJ,EAAU;AACR,QAAIzS,KAAK,GAAGkW,gBAAgB,GACvB,QAAO/E,IAAI,CAACnR,KAAM,IAAGyS,IAAK,IADH,GAEvB,IAAGtB,IAAI,CAACnR,KAAM,GAAEyS,IAAK,GAF1B;AAGA,WAAQ,UAAStB,IAAI,CAACnR,KAAM,mBAAkBA,KAAM,MAAKmR,IAAI,CAACnR,KAAM,EAApE;AACD,GALD,MAKO;AACL,WAAOmR,IAAI,CAACnR,KAAZ;AACD;AACF,CAVD;;AAYA,AAAO,IAAImW,gBAAgB,GAAInM,IAAD,IAAU;AACtC,SAAOoM,OAAO,CAAC,CACbpM,IAAI,CAACoH,UAAL,CACGjS,MADH,CAEKgS,IAAD,IACEA,IAAI,CAACmB,IAAL,CAAUjR,KAAV,IAAmB8P,IAAI,CAACmB,IAAL,CAAUC,IAA7B,IAAqC,CAACf,cAAc,CAACL,IAAD,EAAOnH,IAAP,CAH1D,EAKGzL,GALH,CAKQ4S,IAAD,IAAW,MAAKA,IAAI,CAAC9I,IAAK,MAAK4N,YAAY,CAAC9E,IAAD,CAAO,EALzD,CADa,EAObnH,IAAI,CAACkG,MAAL,CAAY3R,GAAZ,CAAiB6R,KAAD,IACdA,KAAK,CAACgB,UAAN,CACGjS,MADH,CACWgS,IAAD,IAAUA,IAAI,CAACmB,IAAL,CAAUjR,KAD9B,EAEG9C,GAFH,CAEQ4S,IAAD,IAAU;AACb,QAAInR,KAAK,GAAG,IAAZ;;AAEA,QAAImR,IAAI,CAAC6B,WAAT,EAAsB;AACpBhT,MAAAA,KAAK,GAAGmR,IAAI,CAAC6B,WAAb,CADoB;AAGpB;AACD;;AAED,WAAOhT,KAAK,IAAK,MAAKmR,IAAI,CAAC9I,IAAK,MAAKrI,KAAM,EAA3C;AACD,GAZH,CADF,CAPa,CAAD,CAAP,CAsBJb,MAtBI,CAsBG0S,OAtBH,CAAP;AAuBD,CAxBM;;AA0BP,IAAIgE,iBAAiB,GAAG,CAAC7L,IAAD,EAAOmH,IAAP,EAAamE,QAAb,KACtBnE,IAAI,CAAC9I,IAAL,KAAc,WAAd,GACImN,kBAAkB,CAACxL,IAAD,EAAOmH,IAAP,EAAamE,QAAb,CADtB,GAEID,yBAAyB,CAACrL,IAAD,EAAOmH,IAAP,EAAamE,QAAb,CAH/B;;AAKA,AAAO,IAAIe,2BAA2B,GAAIrM,IAAD,IAAU;AACjD,MAAIsM,aAAa,GAAGP,mBAAmB,CAAC/L,IAAD,EAAO,IAAP,CAAnB,CAAgCzL,GAAhC,CAAqC4S,IAAD,IAAUA,IAAI,CAAC9I,IAAnD,CAApB;AACA,MAAIkO,kBAAkB,GAAGD,aAAa,CAAChW,QAAd,CAAuB,WAAvB,IACrByV,mBAAmB,CAAC/L,IAAD,EAAO,IAAP,CAAnB,CACGwB,IADH,CACS2F,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAc,WADhC,EAEGsN,KAFH,CAESpX,GAFT,CAEc4S,IAAD,IAAUA,IAAI,CAAC9I,IAF5B,CADqB,GAIrB,EAJJ;AAMA,SAAOpJ,MAAM,CAACC,IAAP,CAAY8K,IAAI,CAAC3I,KAAL,CAAWmV,OAAX,CAAmBvN,IAA/B,EACJ9J,MADI,CAEFC,GAAD,IAAS,CAACkX,aAAa,CAAChW,QAAd,CAAuBlB,GAAvB,CAAD,IAAgC,CAACmX,kBAAkB,CAACjW,QAAnB,CAA4BlB,GAA5B,CAFvC,EAIJqX,MAJI,CAIG,CAAC9F,GAAD,EAAMvR,GAAN,KAAc;AACpBuR,IAAAA,GAAG,CAACvR,GAAD,CAAH,GAAW4K,IAAI,CAAC3I,KAAL,CAAWmV,OAAX,CAAmBvN,IAAnB,CAAwB7J,GAAxB,CAAX;AACA,WAAOuR,GAAP;AACD,GAPI,EAOF,EAPE,CAAP;AAQD,CAhBM;AAkBP,AAAO,IAAIoF,mBAAmB,GAAG,CAAC/L,IAAD,EAAOsL,QAAP,KAAoB;AACnD,MAAIK,KAAK,GAAGS,OAAO,CACjBpM,IAAI,CAACkG,MAAL,CAAY3R,GAAZ,CAAiB6R,KAAD,IACdA,KAAK,CAACgB,UAAN,CAAiBjS,MAAjB,CAAyBgS,IAAD,IAAUA,IAAI,CAACoC,SAAvC,CADF,CADiB,CAAnB;AAKA,SAAOmD,kBAAkB,CAACf,KAAD,CAAlB,IAA6BL,QAA7B,GACHqB,iBAAiB,CAAChB,KAAD,CADd,GAEHA,KAFJ;AAGD,CATM;;AAWP,IAAIgB,iBAAiB,GAAIhB,KAAD,IAAW;AACjC;AACA,MAAIF,SAAS,GAAG;AAAEpN,IAAAA,IAAI,EAAE,WAAR;AAAqBsN,IAAAA,KAAK,EAAE;AAA5B,GAAhB;AACAA,EAAAA,KAAK,CAACnX,OAAN,CAAc,CAAC2S,IAAD,EAAOyE,CAAP,KAAa;AACzB,QAAIgB,mBAAmB,CAACzF,IAAI,CAAC9I,IAAN,CAAvB,EAAoC;AAClC8I,MAAAA,IAAI,CAAC0F,WAAL,GAAmB,IAAnB;AACApB,MAAAA,SAAS,CAACE,KAAV,CAAgBtO,IAAhB,CAAqB8J,IAArB;AACD;AACF,GALD;AAMAwE,EAAAA,KAAK,CAACtO,IAAN,CAAWoO,SAAX;AACA,SAAOE,KAAK,CAACxW,MAAN,CAAcgS,IAAD,IAAU,CAACA,IAAI,CAAC0F,WAA7B,CAAP;AACD,CAXD;;AAaA,IAAIH,kBAAkB,GAAIf,KAAD,IACvBA,KAAK,CAACxF,IAAN,CAAYgB,IAAD,IAAUyF,mBAAmB,CAACzF,IAAI,CAAC9I,IAAN,CAAxC,CADF;;AAGA,AAAO,IAAIyO,cAAc,GAAI9M,IAAD,IAC1BoM,OAAO,CACLpM,IAAI,CAACkG,MAAL,CAAY3R,GAAZ,CAAiB6R,KAAD,IACdA,KAAK,CAACgB,UAAN,CAAiBjS,MAAjB,CACGgS,IAAD,IAAUA,IAAI,CAACoC,SAAL,IAAkBpC,IAAI,CAACoC,SAAL,CAAeC,KAAf,KAAyB,QADvD,CADF,CADK,CADF;;AASP,IAAIwC,cAAc,GAAIhM,IAAD,IACnBoM,OAAO,CACLpM,IAAI,CAACkG,MAAL,CAAY3R,GAAZ,CAAiB6R,KAAD,IACdA,KAAK,CAACgB,UAAN,CAAiBjS,MAAjB,CACGgS,IAAD,IAAUA,IAAI,CAACoC,SAAL,IAAkBpC,IAAI,CAACoC,SAAL,CAAeC,KAAf,KAAyB,QADvD,CADF,CADK,CADT;AA6BA,IAAIoD,mBAAmB,GAAG;AACxBvH,EAAAA,UAAU,EAAE,IADY;AAExBC,EAAAA,UAAU,EAAE,IAFY;AAGxBb,EAAAA,KAAK,EAAE,IAHiB;AAIxBC,EAAAA,MAAM,EAAE,IAJgB;AAKxBC,EAAAA,MAAM,EAAE,IALgB;AAMxBL,EAAAA,MAAM,EAAE,IANgB;AAOxBC,EAAAA,OAAO,EAAE,IAPe;AAQxBC,EAAAA,OAAO,EAAE,IARe;AASxBJ,EAAAA,WAAW,EAAE;AATW,CAA1B;AAYA,AAGO,IAAI2I,QAAQ,GAAG,CAAC/M,IAAD,EAAOC,KAAP,EAAc+M,YAAY,GAAG,IAA7B,KAAsC;AAC1D,MAAIxV,EAAE,GAAGwI,IAAI,CAACqG,EAAL,IAAWrG,IAAI,CAAC3B,IAAzB,CAD0D;;AAG1D,MAAI4B,KAAK,CAACgN,cAAN,CAAqBzV,EAArB,CAAJ,EAA8B;AAC5BA,IAAAA,EAAE,GAAI,GAAEA,EAAG,GAAEyI,KAAK,CAACgN,cAAN,CAAqBzV,EAArB,GAA2B,EAAxC;AACD,GAFD,MAEO;AACLyI,IAAAA,KAAK,CAACgN,cAAN,CAAqBzV,EAArB,IAA2B,CAA3B;AACD;;AAEDwI,EAAAA,IAAI,CAACkN,SAAL,GAAiB1V,EAAjB;;AACA,MAAIwV,YAAY,IAAIhN,IAAI,CAACmN,SAAzB,EAAoC;AAClCnN,IAAAA,IAAI,CAACmN,SAAL,CAAe9P,IAAf,CAAqB,aAAY7F,EAAG,GAApC;AACD;;AAED,SAAOA,EAAP;AACD,CAfM;AAiBP,IAAI4V,6BAA6B,GAAG,CAClC,YADkC,EAElC,eAFkC,EAGlC,aAHkC,EAIlC,cAJkC,EAKlC,eALkC,EAMlC,gBANkC,EAOlC,YAPkC,CAApC;;AAUA,IAAIC,2BAA2B,GAAIlG,IAAD,IAChCiG,6BAA6B,CAAC9W,QAA9B,CAAuC6Q,IAAvC,CADF;;AAGA,AAAO,IAAImG,4BAA4B,GAAIC,UAAD,IACxCtY,MAAM,CAACC,IAAP,CAAYqY,UAAZ,EAAwBpH,IAAxB,CAA6BkH,2BAA7B,CADK;AAGP,AAAO,IAAIG,6BAA6B,GAAID,UAAD,IACzCtY,MAAM,CAACC,IAAP,CAAYqY,UAAZ,EACGpY,MADH,CACUkY,2BADV,EAEGZ,MAFH,CAEU,CAAC9F,GAAD,EAAMvR,GAAN,KAAc;AACpBuR,EAAAA,GAAG,CAACvR,GAAD,CAAH,GAAWmY,UAAU,CAACnY,GAAD,CAArB;AACA,SAAOuR,GAAP;AACD,CALH,EAKK,EALL,CADK;AAQP,AAAO,IAAI8G,gCAAgC,GAAIF,UAAD,IAC5CtY,MAAM,CAACC,IAAP,CAAYqY,UAAZ,EACGpY,MADH,CACWC,GAAD,IAAS,CAACiY,2BAA2B,CAACjY,GAAD,CAD/C,EAEGqX,MAFH,CAEU,CAAC9F,GAAD,EAAMvR,GAAN,KAAc;AACpBuR,EAAAA,GAAG,CAACvR,GAAD,CAAH,GAAWmY,UAAU,CAACnY,GAAD,CAArB;AACA,SAAOuR,GAAP;AACD,CALH,EAKK,EALL,CADK;AAQP,AAAO,IAAI+G,YAAY,GAAI1N,IAAD,IACxBA,IAAI,CAACoH,UAAL,CAAgBjB,IAAhB,CACGgB,IAAD,IAAUA,IAAI,CAAC9I,IAAL,CAAUlD,KAAV,CAAgB,MAAhB,KAA2BgM,IAAI,CAAC9I,IAAL,KAAc,WADrD,CADK;AAKP,IAAIsP,4BAA4B,GAAG,CACjC,cADiC,EAEjC,YAFiC,EAGjC,WAHiC,EAIjC,qBAJiC,EAKjC,gBALiC,EAMjC,iBANiC,EAOjC,kBAPiC,EAQjC,WARiC,EASjC,OATiC,EAUjC,QAViC,EAWjC,WAXiC,EAYjC,eAZiC,EAajC,UAbiC,EAcjC,UAdiC,EAejC,OAfiC,EAgBjC,YAhBiC,EAiBjC,aAjBiC,EAkBjC,gBAlBiC,EAmBjC,WAnBiC,EAoBjC,cApBiC,EAqBjC,WArBiC,EAsBjC,oBAtBiC,EAuBjC,eAvBiC,EAwBjC,YAxBiC,EAyBjC,WAzBiC,CAAnC;AA4BA,AAAO,IAAIC,mBAAmB,GAAG,CAAC;AAAEvP,EAAAA,IAAF;AAAQrI,EAAAA;AAAR,CAAD,KAC/B2X,4BAA4B,CAACrX,QAA7B,CAAsC+H,IAAtC,KAA+C,cAAckD,IAAd,CAAmBvL,KAAnB,CAA/C,GACI6X,UAAU,CAAC7X,KAAD,CADd,GAEIA,KAHC;AAKP,AAAO,IAAIsG,OAAO,GAAG,CAAC0D,IAAD,EAAOC,KAAP,KACnB,CAACD,IAAI,CAACoK,OAAN,IAAiBnK,KAAK,CAAC3D,OAAN,CAAc0D,IAAI,CAAC3B,IAAnB,CAAjB,IAA6C4B,KAAK,CAACzD,IAAN,KAAe,UADvD;AAGP,AAAO,SAAS2L,WAAT,CAAqBnI,IAArB,EAA2BzC,MAA3B,EAAmC0C,KAAnC,EAA0C;AAC/C;AACA;AACA,MAAIoI,SAAS,GAAGrI,IAAI,CAACsH,YAArB;;AACA,MAAI,CAACe,SAAS,CAACrQ,UAAV,CAAqB,GAArB,CAAL,EAAgC;AAC9BqQ,IAAAA,SAAS,GAAG1T,IAAI,CAACmZ,SAAL,CAAenZ,IAAI,CAACY,IAAL,CAAU0K,KAAK,CAAC3C,QAAhB,EAA0B+K,SAA1B,CAAf,CAAZ;AACD;;AAED,SAAOA,SAAP;AACD;;ACxjBD,IAAI0F,QAAQ,GAAG;AACbC,EAAAA,KAAK,EAAE,OADM;AAEbC,EAAAA,IAAI,EAAE,MAFO;AAGbC,EAAAA,MAAM,EAAE,QAHK;AAIbC,EAAAA,KAAK,EAAE,KAJM;AAKbC,EAAAA,MAAM,EAAE,UALK;AAMb7W,EAAAA,IAAI,EAAE;AANO,CAAf;AASA,AAAO,IAAIwI,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAI,CAACD,IAAI,CAACsK,SAAN,IAAmBtK,IAAI,CAAC3B,IAAL,KAAc,iBAArC,EAAwD;AAExD,MAAI/G,IAAI,GAAG0P,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAlB;;AAEA,MAAI6F,MAAM,CAACvO,IAAD,CAAV,EAAkB;AAChB2I,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,SAAQmL,IAAI,CAAClR,IAAI,CAACtB,KAAN,CAAa,EAA5C,EADgB;AAIhB;;AACA,QAAIqY,WAAW,GAAG,CAAChQ,IAAD,EAAOiQ,aAAP,KACf,GAAEjQ,IAAK,KAAI/G,IAAI,CAACtB,KAAM,oBACrBsB,IAAI,CAACtB,KACN,kBAAiBsY,aAAc,gBAHlC;;AAIArO,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkBgR,WAAW,CAAC,WAAD,EAAc,SAAd,CAA7B;AACApO,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkBgR,WAAW,CAAC,SAAD,EAAY,QAAZ,CAA7B;AACD,GAXD,MAWO;AACLpO,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,SAAQmL,IAAI,CAACuF,QAAQ,CAACzW,IAAI,CAACtB,KAAN,CAAT,CAAuB,EAAtD,EADK;AAIL;;AACA,QAAIsB,IAAI,CAACtB,KAAL,KAAe,QAAf,IAA2BsB,IAAI,CAACtB,KAAL,KAAe,OAA9C,EAAuD;AACrDiK,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,uCAAnB;AACD;AACF;AACF,CAzBM;;ACZA,SAAS0C,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAIjK,KAAK,GAAGiK,KAAK,CAACsO,mBAAN,CAA0BvO,IAA1B,EAAgCzC,MAAhC,EAAwC0C,KAAxC,CAAZ;;AAEA,MAAIjK,KAAJ,EAAW;AACTf,IAAAA,MAAM,CAACC,IAAP,CAAYc,KAAZ,EAAmBxB,OAAnB,CAA2BsS,CAAC,IAAI;AAC9B,UAAIA,CAAC,KAAK,KAAV,EAAiB;AACf,eAAO7G,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,QAAOrH,KAAK,CAAC8Q,CAAD,CAAI,GAAnC,CAAP;AACD,OAFD,MAEO;AACL,eAAO7G,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAGyJ,CAAE,IAAG9Q,KAAK,CAAC8Q,CAAD,CAAI,EAApC,CAAP;AACD;AACF,KAND;AAOD;AACF;;ACTM,SAAS/G,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAI,CAAC0K,QAAQ,CAAC3K,IAAD,CAAb,EAAqB;AAErB,MAAIwO,OAAO,GAAGxH,OAAO,CAAChH,IAAD,EAAO,KAAP,CAArB;AACA,MAAIrB,KAAK,GAAG8P,QAAQ,CAACzO,IAAD,EAAOzC,MAAP,CAApB;AAEA0C,EAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,aAAYmR,OAAO,CAACxY,KAAM,YAAW2I,KAAM,GAA9D,EANyC;AASzC;AACA;AACA;;AAEA,MAAI+P,MAAM,GAAG1O,IAAI,CAAC2O,QAAL,CAAcnN,IAAd,CAAmBkJ,QAAnB,CAAb;;AACA,MAAIgE,MAAM,IAAI,CAACA,MAAM,CAACtE,OAAtB,EAA+B;AAC7BnK,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,oCAAmCqR,MAAM,CAACrQ,IAAK,oBADlD;AAGAqQ,IAAAA,MAAM,CAACtH,UAAP,CAAkB5S,OAAlB,CAA0BiT,QAAQ,IAAI;AACpC,UAAIA,QAAQ,CAACpJ,IAAT,KAAkB,UAAtB,EAAkC;AAClCuQ,MAAAA,OAAA,CAAmBnH,QAAnB,EAA6BiH,MAA7B,EAAqCzO,KAArC;AACD,KAHD;AAIAA,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,MAAnB;AACD;;AAED,MAAIwR,IAAI,GAAG7O,IAAI,CAAC2O,QAAL,CAAcnN,IAAd,CAAmBiJ,MAAnB,CAAX;;AACA,MAAIoE,IAAI,IAAI,CAACA,IAAI,CAACzE,OAAlB,EAA2B;AACzBnK,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,gCAA+BwR,IAAI,CAACxQ,IAAK,kBAD5C;AAGAwQ,IAAAA,IAAI,CAACzH,UAAL,CAAgB5S,OAAhB,CAAwBiT,QAAQ,IAAI;AAClC,UAAIA,QAAQ,CAACpJ,IAAT,KAAkB,QAAtB,EAAgC;AAChCuQ,MAAAA,OAAA,CAAmBnH,QAAnB,EAA6BoH,IAA7B,EAAmC5O,KAAnC;AACD,KAHD;AAIAA,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,MAAnB;AACD;AACF;;AAED,IAAIoR,QAAQ,GAAG,CAACzO,IAAD,EAAOzC,MAAP,KAAkB;AAC/B,MAAIoB,KAAK,GAAGqI,OAAO,CAAChH,IAAD,EAAO,OAAP,CAAnB;;AACA,MAAIrB,KAAK,IAAIA,KAAK,CAAC3I,KAAN,KAAgB,MAA7B,EAAqC;AACnC,WAAO2I,KAAK,CAAC3I,KAAb;AACD;;AAED,MAAI8Y,OAAO,GAAGvR,MAAM,CAACoR,QAAP,CAAgBxZ,MAAhB,CAAuB4Z,KAAK,IAAIA,KAAK,CAAC1Q,IAAN,KAAe,QAA/C,CAAd;AACA,MAAI2Q,qBAAqB,GAAGF,OAAO,CAChCva,GADyB,CACrByL,IAAI,IAAI;AACX,QAAIrB,KAAK,GAAGqI,OAAO,CAAChH,IAAD,EAAO,OAAP,CAAnB;AACA,WAAOrB,KAAK,IAAI,OAAOA,KAAK,CAAC3I,KAAb,KAAuB,QAAhC,IAA4C2I,KAAK,CAAC3I,KAAzD;AACD,GAJyB,EAKzBb,MALyB,CAKlB0S,OALkB,CAA5B;AAOA,MAAIoH,eAAe,GAAGD,qBAAqB,CAACvC,MAAtB,CACpB,CAACyC,GAAD,EAAMlZ,KAAN,KAAgBkZ,GAAG,GAAGlZ,KADF,EAEpB,CAFoB,CAAtB;AAKA,SAAOiZ,eAAe,GACjB,YAAWA,eAAgB,OAAMH,OAAO,CAACrR,MAAR,GAChCuR,qBAAqB,CAACvR,MAAO,EAFb,GAGjB,WAAUqR,OAAO,CAACrR,MAAO,EAH9B;AAID,CAvBD;AA0BA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;AC9EO,SAAS0R,KAAT,CAAenP,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACoP,gBAAT,EAA2B;AACzBnP,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,GAAlB;AACA4C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB2C,IAAI,CAACoP,gBAAvB;AACD;AACF;;ACFM,IAAIrP,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACqP,IAAT,EAAe;AACb,QAAIA,IAAI,GAAGrI,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAlB;AACAC,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,SAAQmL,IAAI,CAAC6G,IAAI,CAACrZ,KAAN,CAAa,4CAD5B;AAGD;AACF,CAPM;;ACHA,SAAS+J,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MACE,CAACD,IAAI,CAACsP,4BAAN,IACAtP,IAAI,CAACuP,OADL,IAEAvP,IAAI,CAAC2O,QAAL,CAAclR,MAAd,GAAuB,CAFvB,IAGA,CAACuC,IAAI,CAACwP,SAAL,CAAelZ,QAAf,CAAwB,UAAxB,CAJH,EAKE;AACA2J,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,GAAlB;;AAEA,QAAI,CAAC2C,IAAI,CAACoK,OAAV,EAAmB;AACjBnK,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,kBAAlB;;AACA,UAAI2C,IAAI,CAAC2O,QAAL,CAAclR,MAAd,GAAuB,CAA3B,EAA8B;AAC5BwC,QAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,kBAAlB;AACD;AACF;AACF;AACF;AAED,AAAO,SAAS8R,OAAT,CAAenP,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MACE,CAACD,IAAI,CAACsP,4BAAN,IACAtP,IAAI,CAACuP,OADL,IAEAvP,IAAI,CAAC2O,QAAL,CAAclR,MAAd,GAAuB,CAFvB,IAGA,CAACuC,IAAI,CAACwP,SAAL,CAAelZ,QAAf,CAAwB,UAAxB,CAHD,IAIA,CAAC0J,IAAI,CAACoK,OALR,EAME;AACA,QAAIpK,IAAI,CAAC2O,QAAL,CAAclR,MAAd,GAAuB,CAA3B,EAA8B;AAC5BwC,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,mBAAlB;AACD;;AACD4C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,IAAlB;AACD;AACF;;AC7BM,SAAS0C,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAIuK,MAAM,CAACjN,MAAD,CAAV,EAAoB;AAClB0C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,gBAAnB;AAEA,QAAIoS,IAAI,GAAGzI,OAAO,CAACzJ,MAAD,EAAS,MAAT,CAAlB;;AACA,QAAIkS,IAAJ,EAAU;AACRxP,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAGoS,IAAI,CAACzZ,KAAM,KAAIyZ,IAAI,CAACzZ,KAAM,GAAhD;AACD,KAFD,MAEO;AACLiK,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,YAAlB;AACD;;AAED,QAAI,CAACE,MAAM,CAACiS,SAAP,CAAiBlZ,QAAjB,CAA0B,UAA1B,CAAL,EAA4C;AAC1C,UAAIlB,GAAG,GAAG4R,OAAO,CAAChH,IAAD,EAAO,KAAP,CAAjB;AACA5K,MAAAA,GAAG,GAAGA,GAAG,GAAGA,GAAG,CAACY,KAAP,GAAe,OAAxB;AAEAiK,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,SAAQjI,GAAI,GAA/B;AACD;AACF;AACF;;AClBM,SAAS2K,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAIuK,MAAM,CAACxK,IAAD,CAAV,EAAkB;AAChB,QAAItI,IAAI,GAAGsP,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAlB;AACA,QAAI,CAACtI,IAAL,EAAW;AAEX,QAAI+X,IAAI,GAAGzI,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAlB;AACA,QAAI0P,QAAQ,GAAGD,IAAI,GAAGA,IAAI,CAACzZ,KAAR,GAAgB,MAAnC;;AAEA,QAAIgK,IAAI,CAACwP,SAAL,CAAelZ,QAAf,CAAwB,UAAxB,CAAJ,EAAyC;AACvC,UAAIlB,GAAG,GAAG4R,OAAO,CAAChH,IAAI,CAAC2O,QAAL,CAAc,CAAd,CAAD,EAAmB,KAAnB,CAAjB;AACAvZ,MAAAA,GAAG,GAAGA,GAAG,GAAGA,GAAG,CAACY,KAAP,GAAe,OAAxB;AAEAiK,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,SACC3F,IAAI,CAAC1B,KACN,oCAAmCZ,GAAI,oBAAmBsa,QAAS,eAHtE;AAKD,KATD,MASO;AACLzP,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,kBAAiB3F,IAAI,CAAC1B,KAAM,QAC3B0B,IAAI,CAAC1B,KACN,SAAQ0Z,QAAS,cAHpB;AAKD;AACF;AACF;AAED,AAAO,SAASP,OAAT,CAAenP,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAIuK,MAAM,CAACxK,IAAD,CAAV,EAAkB;AAChBC,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB2C,IAAI,CAACwP,SAAL,CAAelZ,QAAf,CAAwB,UAAxB,IAAsC,GAAtC,GAA4C,IAA9D;AACD;AACF;;ACjCM,IAAIyJ,OAAK,GAAGC,IAAI,IAAIA,IAAI,CAAC2P,IAAzB;;ACAA,SAASR,OAAT,CAAenP,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACsP,4BAAT,EAAuC;;AAEvC,MACE,CAAE,CAAC/R,MAAD,IAAWyC,IAAI,CAACuP,OAAjB,IACCvP,IAAI,CAACoP,gBADN,IAEEpP,IAAI,CAACuP,OAAL,IAAgBvP,IAAI,CAAC2O,QAAL,CAAclR,MAAd,GAAuB,CAF1C,KAGA,CAACuC,IAAI,CAACwP,SAAL,CAAelZ,QAAf,CAAwB,UAAxB,CAJH,EAKE;AACA,QAAI,CAACiH,MAAD,IAAWyC,IAAI,CAACuP,OAApB,EAA6B;AAC3B,UAAIvP,IAAI,CAAC2O,QAAL,CAAclR,MAAd,KAAyB,CAA7B,EAAgC;AAC9BwC,QAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,GAAlB;AACD;;AAED,UAAI,CAAC4C,KAAK,CAAC2P,yBAAX,EAAsC;AACpC3P,QAAAA,KAAK,CAAC2P,yBAAN,GAAkC,IAAlC;AACA3P,QAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,kBAAnB;AACD;AACF;;AAED4C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,KAAI2C,IAAI,CAACwP,SAAU,GAAtC;AACD,GAlBD,MAkBO;AACLvP,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,IAAlB;AACD;AACF;;ACtBD,mBAAe,CAAC2C,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AACtC,MAAIsK,OAAO,CAACvK,IAAD,CAAX,EAAmB;AACjB,QAAItI,IAAI,GAAGsP,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAlB,CADiB;;AAGjB,QAAI,CAACtI,IAAL,EAAW,OAAO,IAAP;AAEXuI,IAAAA,KAAK,CAACsK,OAAN,GAAgB,IAAhB;AAEAtK,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,sCAAnB;AACD;;AAED,SAAOoN,MAAM,CAACzK,IAAD,CAAN,IAAgB0K,QAAQ,CAAC1K,IAAD,CAA/B;AACD,CAZD;;ACCA,oBAAe,CAACA,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AACtC,MAAI5B,IAAI,GAAG2B,IAAI,CAAC3B,IAAhB;;AAEA,UAAQ2B,IAAI,CAAC3B,IAAb;AACE,SAAK,SAAL;AACEA,MAAAA,IAAI,GAAG,OAAP;AACA;;AAEF,SAAK,iBAAL;AACEA,MAAAA,IAAI,GAAG,UAAP;AACA;;AAEF,SAAK,YAAL;AACA,SAAK,UAAL;AACEA,MAAAA,IAAI,GAAGwR,iBAAiB,CAAC7P,IAAD,EAAOzC,MAAP,AAAA,CAAxB;AACA;;AAEF,SAAK,OAAL;AACEc,MAAAA,IAAI,GAAG,KAAP;AACA;;AAEF,SAAK,MAAL;AACE,aAAO,MAAP;;AAEF,SAAK,MAAL;AACEA,MAAAA,IAAI,GAAG,KAAP;AACA;;AAEF,SAAK,KAAL;AACEA,MAAAA,IAAI,GAAG,KAAP;AACA;;AAEF,SAAK,UAAL;AACEA,MAAAA,IAAI,GAAG,GAAP;AACA;;AAEF,SAAK,WAAL;AACA,SAAK,YAAL;AACA,SAAK,mBAAL;AACA,SAAK,mBAAL;AACA,SAAK,SAAL;AACA,SAAK,SAAL;AACA,SAAK,SAAL;AACA,SAAK,YAAL;AACA,SAAK,aAAL;AACA,SAAK,SAAL;AACA,SAAK,WAAL;AACA,SAAK,QAAL;AACA,SAAK,SAAL;AACA,SAAK,SAAL;AACEA,MAAAA,IAAI,GAAG6M,WAAW,CAAClL,IAAI,CAAC3B,IAAL,CAAUlH,OAAV,CAAkB,KAAlB,EAAyB,EAAzB,CAAD,CAAlB;AACA;;AAEF,SAAK,OAAL;AACA,SAAK,MAAL;AACEkH,MAAAA,IAAI,GAAG,gBAAP;AACA;AArDJ;;AA2DA,MAAI2B,IAAI,CAAC8P,kBAAT,EAA6B;AAC3B,WAAQ,YAAWzR,IAAK,EAAxB;AACD;;AAED,SAAOA,IAAP;AACD,CAnED;;AAqEA,IAAIwR,iBAAiB,GAAG,CAAC7P,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC/C,MAAI5B,IAAI,GAAG,KAAX;;AAEA,MAAI2B,IAAI,CAACE,UAAT,EAAqB;AACnB7B,IAAAA,IAAI,GAAG,gBAAP;AACD,GAFD,MAEO,IAAIkJ,OAAO,CAACvH,IAAD,EAAO,SAAP,CAAX,EAA8B;AACnC3B,IAAAA,IAAI,GAAG,mBAAP;AACD,GAFM,MAEA,IAAId,MAAM,IAAIgK,OAAO,CAAChK,MAAD,EAAS,SAAT,CAArB,EAA0C;AAC/Cc,IAAAA,IAAI,GAAG,0BAAP;AACD,GAFM,MAEA,IAAIkJ,OAAO,CAACvH,IAAD,EAAO,MAAP,CAAX,EAA2B;AAChC3B,IAAAA,IAAI,GAAG,GAAP;AACA2B,IAAAA,IAAI,CAACqP,IAAL,GAAY,IAAZ;AACArP,IAAAA,IAAI,CAACoJ,MAAL,GAAcpC,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAP,CAAsBhK,KAApC;AACD,GAJM,MAIA,IAAIuR,OAAO,CAACvH,IAAD,EAAO,SAAP,CAAX,EAA8B;AACnC,QAAIyH,QAAQ,GAAGT,OAAO,CAAChH,IAAD,EAAO,SAAP,CAAtB;AACA,QAAI+P,UAAU,GAAGxS,MAAjB;AACA,QAAIyS,WAAW,GAAG,IAAlB;;AAEA,WAAOD,UAAU,IAAIC,WAArB,EAAkC;AAChC,UAAID,UAAU,CAACzY,IAAX,KAAoB,OAAxB,EAAiC;AAC/B0Y,QAAAA,WAAW,GAAG,CAACzI,OAAO,CAACwI,UAAD,EAAa,SAAb,CAAtB;AACD;;AACDA,MAAAA,UAAU,GAAGA,UAAU,CAACxS,MAAxB;AACD;;AAED,QAAIyS,WAAJ,EAAiB;AACf,UAAI,CAACzI,OAAO,CAACvH,IAAD,EAAO,eAAP,CAAZ,EAAqC;AACnC3B,QAAAA,IAAI,GAAG,QAAP;AACD;;AACD2B,MAAAA,IAAI,CAACoJ,MAAL,GAAc3B,QAAQ,CAACzR,KAAvB;AACD;AACF,GAlBM,MAkBA,IAAIuR,OAAO,CAACvH,IAAD,EAAO,WAAP,EAAoB3J,CAAC,IAAIA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,QAA/C,CAAX,EAAqE;AAC1EgI,IAAAA,IAAI,GAAG,KAAP;AACD,GAFM,MAEA,IAAIkJ,OAAO,CAACvH,IAAD,EAAO,UAAP,CAAX,EAA+B;AACpC3B,IAAAA,IAAI,GAAG,MAAP;AACD;;AAED,SAAOA,IAAP;AACD,CAtCD;;AC/DO,SAAS0B,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC;AACA,MAAID,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC2O,QAAL,CAAclR,MAAd,KAAyB,CAAhD,EAAmD,OAAO,IAAP;;AACnD,MAAIuC,IAAI,CAACiQ,UAAT,EAAqB;AACnBhQ,IAAAA,KAAK,CAAC2P,yBAAN,GAAkC,IAAlC;AAEA3P,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,sFADH;AAGA,QAAI6S,YAAY,GAAG,CAAC,CAAC7G,mBAAmB,CAACrJ,IAAD,CAAxC;;AACA,QAAIkQ,YAAJ,EAAkB;AAChBjQ,MAAAA,KAAK,CAACiQ,YAAN,GAAqB,IAArB;AACAjQ,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,gCAAlB;AACD;;AACD4C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,YAAnB;AAEA,WAAO,IAAP;AACD;;AAED,MAAI2C,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC3B,IAAL,KAAc,MAArC,EAA6C;AAC3C4B,IAAAA,KAAK,CAACzD,IAAN,GAAa6K,qBAAqB,CAACrH,IAAD,EAAO,IAAP,EAAa,KAAb,CAAlC;AACAC,IAAAA,KAAK,CAACkQ,gBAAN,GAAyB,IAAzB;AACD;;AAED,MAAI7T,OAAO,CAAC0D,IAAD,EAAOC,KAAP,CAAX,EAA0B;AACxBA,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACD;;AAED,MAAI/J,IAAI,GAAG+R,YAAY,CAACpQ,IAAD,EAAOzC,MAAP,AAAA,CAAvB;AACA,MAAIc,IAAI,KAAK,IAAb,EAAmB,OAAO,IAAP;AAEnB4B,EAAAA,KAAK,CAACmI,GAAN,CAAU/J,IAAV,EAAgB2B,IAAI,CAACqQ,MAArB,EA/ByC;;AAkCzCrQ,EAAAA,IAAI,CAACwP,SAAL,GAAiBnR,IAAjB;AACA2B,EAAAA,IAAI,CAACsQ,OAAL,GAAejS,IAAf;AAEA,MAAIkS,WAAW,CAACvQ,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAf,EAAsC,OAAO,IAAP;;AAEtC,MAAI,CAACD,IAAI,CAACsP,4BAAV,EAAwC;AACtCrP,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAG2C,IAAI,CAACwP,SAAU,EAArC;AACD;AACF;;AC3CD,IAAIgB,QAAQ,GAAG,wBAAf;AACA,IAAI7H,aAAW,GAAG,oEAAlB;AACA,IAAID,cAAY,GAAG,2CAAnB;AACA,IAAI+H,UAAU,GAAG,wCAAjB;AACA,IAAI5H,SAAO,GAAG,yBAAd;AAEA,AAAO,SAAS9I,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC2O,QAAL,CAAclR,MAAd,KAAyB,CAAhD,EAAmD,OADV;;AAIzC,MAAIiT,MAAM,GAAG1J,OAAO,CAAChH,IAAD,EAAO,QAAP,CAApB;;AAEA,MAAI0Q,MAAJ,EAAY;AACV1Q,IAAAA,IAAI,CAAC0Q,MAAL,GAAc,IAAd;AAEA,QAAInT,MAAM,IAAI,CAACiN,MAAM,CAACjN,MAAD,CAArB,EAA+B0C,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,GAAlB;AAE/B,QAAIrH,KAAK,GAAG0a,MAAM,CAAC1a,KAAnB;;AACA,QAAIiK,KAAK,CAACgJ,IAAN,IAAcN,aAAW,CAACpH,IAAZ,CAAiBvL,KAAjB,CAAlB,EAA2C;AACzCA,MAAAA,KAAK,GAAGA,KAAK,CAACmB,OAAN,CAAc,OAAd,EAAuB,MAAvB,CAAR;AACD,KAFD,MAEO,IAAIqZ,QAAQ,CAACjP,IAAT,CAAcvL,KAAd,CAAJ,EAA0B;AAC/B,UAAI,GAAG2a,QAAH,EAAavS,KAAb,IAAsBpI,KAAK,CAACmF,KAAN,CAAYqV,QAAZ,CAA1B;AACAxa,MAAAA,KAAK,GAAI,GAAE2a,QAAQ,CAACxZ,OAAT,CAAiB,QAAjB,EAA2B,EAA3B,CAA+B,IAAGiH,KAAK,CAACwS,WAAN,EAAoB,EAAjE;AACD,KAHM,MAGA,IAAI1H,oBAAoB,CAAClJ,IAAD,CAApB,IAA8B0I,cAAY,CAACnH,IAAb,CAAkBvL,KAAlB,CAAlC,EAA4D;AACjEA,MAAAA,KAAK,GAAGA,KAAK,CAACmB,OAAN,CAAc,QAAd,EAAwB,aAAxB,CAAR;AACD,KAFM,MAEA,IAAI0R,SAAO,CAACtH,IAAR,CAAavL,KAAb,CAAJ,EAAyB;AAC9B,UAAIkS,QAAQ,GAAGC,WAAW,CAACuI,MAAD,EAAS1Q,IAAT,EAAeC,KAAf,CAA1B;AACAjK,MAAAA,KAAK,GAAGA,KAAK,CAACmB,OAAN,CAAc,YAAd,EAA6B,aAAY+Q,QAAS,IAAlD,CAAR;AACD,KAHM,MAGA,IAAIuI,UAAU,CAAClP,IAAX,CAAgBvL,KAAhB,CAAJ,EAA4B;AACjCA,MAAAA,KAAK,GAAGA,KAAK,CAACmB,OAAN,CAAc,QAAd,EAAwB,EAAxB,CAAR;AACD;;AAED8I,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,GAAErH,KAAM,KAA3B;AACD,GArBD,MAqBO,IAAIsG,OAAO,CAAC0D,IAAD,EAAOC,KAAP,CAAX,EAA0B;AAC/BD,IAAAA,IAAI,CAAC0Q,MAAL,GAAc,IAAd;AACAzQ,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,cAAa4C,KAAK,CAAC3C,QAAS,IAAG0C,IAAI,CAAC3B,IAAK,OAA5D;AACD;AACF;AAED,AAAO,SAAS8Q,OAAT,CAAenP,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC0Q,MAAT,EAAiB;AACfzQ,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,SAAnB;AACA,QAAIE,MAAM,IAAI,CAACiN,MAAM,CAACjN,MAAD,CAArB,EAA+B0C,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,GAAlB;AAChC;AACF;;ACjDM,IAAI0C,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1CD,EAAAA,IAAI,CAACmN,SAAL,GAAiBnN,IAAI,CAACoK,OAAL,GACb,CACEpK,IAAI,CAAC3B,IAAL,KAAc,MAAd,GACI,YADJ,GAEI2B,IAAI,CAACsK,SAAL,GACA,eADA,GAEA,aALN,CADa,GAQb,EARJ;AAUA,MAAI6C,SAAS,GAAGnG,OAAO,CAAChH,IAAD,EAAO,WAAP,CAAvB;;AACA,MAAImN,SAAJ,EAAe;AACbnN,IAAAA,IAAI,CAACmN,SAAL,CAAe9P,IAAf,CACE8P,SAAS,CAAC7E,IAAV,CAAeC,IAAf,GAAuB,MAAK4E,SAAS,CAACnX,KAAM,GAA5C,GAAiDmX,SAAS,CAACnX,KAD7D;AAGD;AACF,CAjBM;AAmBP,AAAO,IAAImZ,OAAK,GAAG,CAACnP,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAT,EAAqB;;AAErB,MAAIF,IAAI,CAACmN,SAAL,CAAe1P,MAAf,KAA0B,CAA9B,EAAiC;AAC/B,QAAI0P,SAAS,GAAGnN,IAAI,CAACmN,SAAL,CAAe,CAAf,CAAhB;AACA,QAAI0D,UAAU,GAAG,IAAjB;;AAEA,QAAItK,eAAe,CAAC4G,SAAD,CAAnB,EAAgC;AAC9BA,MAAAA,SAAS,GAAG1G,aAAa,CAAC0G,SAAD,CAAzB;AACD,KAFD,MAEO,IAAI,CAACtH,MAAM,CAACsH,SAAD,CAAX,EAAwB;AAC7BA,MAAAA,SAAS,GAAI,IAAGA,SAAU,GAA1B;AACA0D,MAAAA,UAAU,GAAG,KAAb;AACD;;AAED5Q,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,cAAawT,UAAU,GAAG/K,IAAI,CAACqH,SAAD,CAAP,GAAqBA,SAAU,EAAzE;AACD,GAZD,MAYO,IAAInN,IAAI,CAACmN,SAAL,CAAe1P,MAAf,GAAwB,CAA5B,EAA+B;AACpC,QAAI0P,SAAS,GAAI,KAAInN,IAAI,CAACmN,SAAL,CAAe5X,IAAf,CAAoB,GAApB,CAAyB,IAA9C;AACA0K,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,cAAayI,IAAI,CAACqH,SAAD,CAAY,EAAhD;AACD;AACF,CAnBM;;ACtBA,IAAIpN,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C;AACA,MAAID,IAAI,CAAC3B,IAAL,KAAc,OAAlB,EAA2B;AACzB4B,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,WAAlB;AACD;AACF,CALM;;ACGA,SAAS0C,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzCD,EAAAA,IAAI,CAAC3I,KAAL,GAAa;AACXmV,IAAAA,OAAO,EAAE;AACPvN,MAAAA,IAAI,EAAE,EADC;AAEP6R,MAAAA,SAAS,EAAE,EAFJ;AAGPC,MAAAA,SAAS,EAAE,EAHJ;AAIPC,MAAAA,UAAU,EAAE,EAJL;AAKPC,MAAAA,aAAa,EAAE,EALR;AAMPC,MAAAA,UAAU,EAAE,EANL;AAOPC,MAAAA,iBAAiB,EAAE;AAPZ,KADE;AAUXC,IAAAA,MAAM,EAAE;AACNnS,MAAAA,IAAI,EAAE,EADA;AAEN6R,MAAAA,SAAS,EAAE,EAFL;AAGNC,MAAAA,SAAS,EAAE,EAHL;AAINC,MAAAA,UAAU,EAAE,EAJN;AAKNC,MAAAA,aAAa,EAAE,EALT;AAMNC,MAAAA,UAAU,EAAE,EANN;AAONC,MAAAA,iBAAiB,EAAE;AAPb;AAVG,GAAb;AAqBA,MAAInR,IAAI,CAACE,UAAT,EAAqB,OAtBoB;;AAyBzCF,EAAAA,IAAI,CAACkG,MAAL,CACG/Q,MADH,CACUiR,KAAK,IAAIA,KAAK,CAACuB,QADzB,EAEGnT,OAFH,CAEW4R,KAAK,IAAI;AAChBA,IAAAA,KAAK,CAACgB,UAAN,CAAiB5S,OAAjB,CAAyBiT,QAAQ,IAAI;AACnC,UAAIA,QAAQ,CAACpJ,IAAT,KAAkB,MAAtB,EAA8B;AAE9B,UAAI;AAAEgT,QAAAA,OAAF;AAAW,WAAGC;AAAd,UAAmCrR,KAAK,CAACsR,mBAAN,CACrC9J,QADqC,EAErCzH,IAFqC,EAGrCC,KAHqC,EAIrC4F,MAAM,CAAC4B,QAAD,CAJ+B,CAAvC;;AAOA,UAAI4J,OAAJ,EAAa;AACXpc,QAAAA,MAAM,CAACC,IAAP,CAAYoc,gBAAZ,EAA8B9c,OAA9B,CAAsCsS,CAAC,IACrC7G,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAGyJ,CAAE,IAAG0B,IAAI,CAAC8I,gBAAgB,CAACxK,CAAD,CAAjB,EAAsB9G,IAAtB,CAA4B,EAA3D,CADF;AAGD,OAJD,MAIO;AACL,YAAIwR,iBAAiB,GACnBjU,MAAM,IAAIyC,IAAI,CAACyR,SAAf,GACI1L,eAAe,CAAC/F,IAAD,EAAOoG,KAAK,CAACpQ,KAAb,CADnB,GAEI,KAHN;AAIA,YAAI0b,MAAM,GACR7L,MAAM,CAAC4B,QAAD,CAAN,IAAoB+J,iBAApB,GACIxR,IAAI,CAAC3I,KAAL,CAAWmV,OADf,GAEIxM,IAAI,CAAC3I,KAAL,CAAW+Z,MAHjB;AAKAnc,QAAAA,MAAM,CAAC0c,MAAP,CAAcD,MAAM,CAACtL,KAAK,CAACpQ,KAAP,CAApB,EAAmCsb,gBAAnC;AACD;AACF,KA1BD;AA2BD,GA9BH,EAzByC;;AA0DzC,MAAItR,IAAI,CAACuP,OAAL,IAAgBvP,IAAI,CAAC3B,IAAL,KAAc,YAAlC,EAAgD;AAC9C2B,IAAAA,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAlB,CAAuB2S,aAAvB,GAAuC,KAAvC;AACD;AACF;;AC7CM,SAASzC,OAAT,CAAenP,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAT,EAAqB;AAErB,MAAI2R,gBAAgB,GAAGxH,mBAAmB,CAACrK,IAAD,CAA1C;AAEA,MAAI8R,iBAAiB,GACnB,CAAC9R,IAAI,CAACsK,SAAN,IAAmB,CAACtK,IAAI,CAACoJ,MAAzB,IAAmCC,mBAAmB,CAACrJ,IAAD,CADxD;;AAGA,MAAI8R,iBAAJ,EAAuB;AACrBA,IAAAA,iBAAiB,GAAGA,iBAAiB,CAAC5E,SAAtC;AACD;;AAED,MAAIlN,IAAI,CAAC8P,kBAAT,EAA6B;AAC3B7P,IAAAA,KAAK,CAAC8R,UAAN,GAAmB,IAAnB;AACA9R,IAAAA,KAAK,CAAC6P,kBAAN,GAA2B,IAA3B;AACA7P,IAAAA,KAAK,CAAC+R,UAAN,CAAiBhS,IAAI,CAACxI,EAAtB,IAA4BwI,IAAI,CAACgS,UAAjC;AACA/R,IAAAA,KAAK,CAACiG,MAAN,GAAelG,IAAI,CAACkG,MAApB;AACD;;AAED,MAAI1O,EAAE,GAAG,IAAT;;AAEA,MAAI+S,OAAO,CAACvK,IAAD,CAAP,IAAiB0N,YAAY,CAAC1N,IAAD,CAAjC,EAAyC;AACvCxI,IAAAA,EAAE,GAAGuV,QAAQ,CAAC/M,IAAD,EAAOC,KAAP,EAAc,KAAd,CAAb;AACAgS,IAAAA,cAAc,CAAC;AAAEjS,MAAAA,IAAF;AAAQC,MAAAA,KAAR;AAAezI,MAAAA,EAAf;AAAmBsa,MAAAA;AAAnB,KAAD,CAAd;AACD;;AAED,MAAII,GAAG,GAAG,CACRC,YAAY,CAAC;AAAEnS,IAAAA,IAAF;AAAQ8R,IAAAA,iBAAR;AAA2B7R,IAAAA,KAA3B;AAAkC4R,IAAAA;AAAlC,GAAD,CADJ,EAER7R,IAAI,CAAC+R,UAAL,IAAmBK,cAAc,CAACpS,IAAD,CAFzB,EAGRqS,aAAa,CAAC;AAAErS,IAAAA,IAAF;AAAQ8R,IAAAA,iBAAR;AAA2B7R,IAAAA,KAA3B;AAAkC4R,IAAAA;AAAlC,GAAD,CAHL,EAIR1c,MAJQ,CAID0S,OAJC,CAAV;;AAMA,MAAIqK,GAAG,CAACzU,MAAJ,GAAa,CAAjB,EAAoB;AAClB,QAAIjG,EAAE,KAAK,IAAX,EAAiB;AACfA,MAAAA,EAAE,GAAGuV,QAAQ,CAAC/M,IAAD,EAAOC,KAAP,CAAb;AACD,KAFD,MAEO,IAAIsK,OAAO,CAACvK,IAAD,CAAX,EAAmB;AACxB,UAAIA,IAAI,CAACmN,SAAT,EAAoB;AAClBnN,QAAAA,IAAI,CAACmN,SAAL,CAAe9P,IAAf,CAAqB,aAAY7F,EAAG,GAApC;AACD;AACF;;AAEDyI,IAAAA,KAAK,CAACqS,MAAN,CAAa9a,EAAb,IAAoB,gBAAeA,EAAG,SAAQ0a,GAAG,CAAC3c,IAAJ,CAAS,OAAT,CAAkB,IAAhE;AACA0K,IAAAA,KAAK,CAACsS,WAAN,CAAkBlV,IAAlB,CAAuB7F,EAAvB;AACD;AACF;;AAED,IAAIgb,aAAa,GAAG,CAACxS,IAAD,EAAOsS,MAAP,EAAeR,iBAAf,KAAqC;AACvD,MAAID,gBAAgB,GAAGxH,mBAAmB,CAACrK,IAAD,CAA1C;;AAEA,MAAIgK,iBAAiB,CAACsI,MAAM,CAAC9F,OAAR,CAArB,EAAuC;AACrC,QAAIiG,SAAS,GAAGxd,MAAM,CAACC,IAAP,CAAYod,MAAM,CAAClB,MAAnB,EACbjc,MADa,CAEZC,GAAG,IAAIyc,gBAAgB,CAACvb,QAAjB,CAA0BlB,GAA1B,KAAkC2R,OAAO,CAACuL,MAAM,CAAClB,MAAP,CAAchc,GAAd,CAAD,CAFpC,EAIbb,GAJa,CAITa,GAAG,IACNsd,KAAK,CACHC,WAAW,CAACL,MAAM,CAAClB,MAAP,CAAchc,GAAd,CAAD,EAAqBH,MAAM,CAACC,IAAP,CAAYod,MAAM,CAAC9F,OAAP,CAAepX,GAAf,CAAZ,CAArB,CADR,EAEHA,GAFG,EAGH0c,iBAHG,CAAL,CAIEvc,IAJF,CAIO,IAJP,CALY,CAAhB;AAYAkd,IAAAA,SAAS,GAAGA,SAAS,CAACld,IAAV,CAAe,KAAf,CAAZ;AAEA,QAAIqd,UAAU,GAAG3d,MAAM,CAACC,IAAP,CAAYod,MAAM,CAAC9F,OAAnB,EACdrX,MADc,CAEbC,GAAG,IAAIyc,gBAAgB,CAACvb,QAAjB,CAA0BlB,GAA1B,KAAkC2R,OAAO,CAACuL,MAAM,CAAC9F,OAAP,CAAepX,GAAf,CAAD,CAFnC,EAIdb,GAJc,CAIVa,GAAG,IACNsd,KAAK,CAACG,YAAY,CAACP,MAAM,CAAC9F,OAAP,CAAepX,GAAf,CAAD,CAAb,EAAoCA,GAApC,EAAyC0c,iBAAzC,CAAL,CAAiEvc,IAAjE,CACE,IADF,CALa,EASdA,IATc,CAST,KATS,CAAjB;AAWA,WAAO;AAAEqd,MAAAA,UAAF;AAAcH,MAAAA;AAAd,KAAP;AACD;;AAED,MAAIA,SAAS,GAAGxd,MAAM,CAACC,IAAP,CAAYod,MAAM,CAAClB,MAAnB,EACbjc,MADa,CAEZC,GAAG,IAAIyc,gBAAgB,CAACvb,QAAjB,CAA0BlB,GAA1B,KAAkC2R,OAAO,CAACuL,MAAM,CAAClB,MAAP,CAAchc,GAAd,CAAD,CAFpC,EAIbb,GAJa,CAITa,GAAG,IACNsd,KAAK,CAACC,WAAW,CAACL,MAAM,CAAClB,MAAP,CAAchc,GAAd,CAAD,CAAZ,EAAkCA,GAAlC,EAAuC0c,iBAAvC,CAAL,CAA+Dvc,IAA/D,CAAoE,IAApE,CALY,EAObA,IAPa,CAOR,KAPQ,CAAhB;AASA,SAAO;AAAEkd,IAAAA;AAAF,GAAP;AACD,CA1CD;;AA4CA,IAAIN,YAAY,GAAG,CAAC;AAAEnS,EAAAA,IAAF;AAAQ8R,EAAAA,iBAAR;AAA2B7R,EAAAA,KAA3B;AAAkC4R,EAAAA;AAAlC,CAAD,KAA0D;AAC3E,MAAIxa,KAAK,GAAG2I,IAAI,CAAC3I,KAAL,CAAW+Z,MAAvB;AACA,MAAI,CAACpH,iBAAiB,CAAC3S,KAAD,CAAtB,EAA+B,OAAO,KAAP;AAE/B4I,EAAAA,KAAK,CAACwS,SAAN,GAAkB,IAAlB;AAEA,MAAIK,aAAa,GAAG9I,iBAAiB,CAAChK,IAAI,CAAC3I,KAAL,CAAWmV,OAAZ,CAArC;AAEA,SAAOvX,MAAM,CAACC,IAAP,CAAYmC,KAAZ,EACJlC,MADI,CACGC,GAAG,IAAIyc,gBAAgB,CAACvb,QAAjB,CAA0BlB,GAA1B,KAAkC2R,OAAO,CAAC1P,KAAK,CAACjC,GAAD,CAAN,CADnD,EAEJb,GAFI,CAEAa,GAAG,IACNsd,KAAK,CACHC,WAAW,CACTtb,KAAK,CAACjC,GAAD,CADI,EAET0d,aAAa,GAAG7d,MAAM,CAACC,IAAP,CAAY8K,IAAI,CAAC3I,KAAL,CAAWmV,OAAX,CAAmBpX,GAAnB,CAAZ,CAAH,GAA0C,EAF9C,CADR,EAKHA,GALG,EAMH0c,iBANG,CAAL,CAOEvc,IAPF,CAOO,IAPP,CAHG,EAYJA,IAZI,CAYC,KAZD,CAAP;AAaD,CArBD;;AAuBA,IAAI8c,aAAa,GAAG,CAAC;AAAErS,EAAAA,IAAF;AAAQ8R,EAAAA,iBAAR;AAA2B7R,EAAAA,KAA3B;AAAkC4R,EAAAA;AAAlC,CAAD,KAA0D;AAC5E,MAAIxa,KAAK,GAAG2I,IAAI,CAAC3I,KAAL,CAAWmV,OAAvB;AACA,MAAI,CAACxC,iBAAiB,CAAC3S,KAAD,CAAtB,EAA+B,OAAO,KAAP;AAE/B4I,EAAAA,KAAK,CAAC2S,UAAN,GAAmB,IAAnB;AACA5S,EAAAA,IAAI,CAACkN,SAAL,GAAiBlN,IAAI,CAACwP,SAAtB;;AAEA,MAAIxP,IAAI,CAAC8P,kBAAT,EAA6B;AAC3B7P,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,YAAWyO,iBAAiB,CAC3B9L,IAD2B,EAE3BC,KAAK,CAAC8S,aAFqB,CAG3B,IAAG5G,gBAAgB,CAACnM,IAAD,CAAO,IAJ9B;AAMD,GAPD,MAOO;AACL,QAAIgT,mBAAmB,GAAG7G,gBAAgB,CAACnM,IAAD,CAA1C;;AACA,QAAIgT,mBAAJ,EAAyB;AACvB/S,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,YAAW2V,mBAAoB,IAAlD;AACD;AACF;;AAED,SAAO/d,MAAM,CAACC,IAAP,CAAYmC,KAAZ,EACJlC,MADI,CACGC,GAAG,IAAIyc,gBAAgB,CAACvb,QAAjB,CAA0BlB,GAA1B,KAAkC2R,OAAO,CAAC1P,KAAK,CAACjC,GAAD,CAAN,CADnD,EAEJb,GAFI,CAEAa,GAAG,IACNsd,KAAK,CAACG,YAAY,CAACxb,KAAK,CAACjC,GAAD,CAAN,CAAb,EAA2BA,GAA3B,EAAgC0c,iBAAhC,CAAL,CAAwDvc,IAAxD,CAA6D,IAA7D,CAHG,EAKJA,IALI,CAKC,KALD,CAAP;AAMD,CA3BD;;AA6BA,IAAI6c,cAAc,GAAGpS,IAAI,IAAI;AAC3B,MAAIA,IAAI,CAACiT,kBAAT,EAA6B;AAC3B,QAAIC,UAAU,GAAGC,IAAI,CAACrG,cAAc,CAAC9M,IAAD,CAAd,CAAqBzL,GAArB,CAAyB6e,cAAzB,CAAD,CAAJ,CAA+C7d,IAA/C,CAAoD,IAApD,CAAjB;AAEA,WAAQ,kBAAiB2d,UAAW,oBAAmBG,cAAc,CACnErT,IADmE,CAEnE,GAFF;AAGD;;AAED,SAAQ,kBAAiBqT,cAAc,CAACrT,IAAD,CAAO,GAA9C;AACD,CAVD;;AAYA,IAAIqT,cAAc,GAAGrT,IAAI,IAAI;AAC3B,MAAIsT,KAAK,GAAG,CACV,GAAG,IAAIze,GAAJ,CAAQkX,mBAAmB,CAAC/L,IAAD,EAAO,KAAP,CAAnB,CAAiCzL,GAAjC,CAAqC4S,IAAI,IAAIA,IAAI,CAAC9I,IAAlD,CAAR,CADO,CAAZ;AAGA,SAAO8U,IAAI,CAACG,KAAK,CAAC/e,GAAN,CAAU8J,IAAI,IAAIkV,cAAc,CAAClV,IAAD,CAAhC,CAAD,CAAJ,CAA8C9I,IAA9C,CAAmD,IAAnD,CAAP;AACD,CALD;;AAOA,IAAIge,cAAc,GAAGlV,IAAI,IAAI;AAC3B,UAAQA,IAAR;AACE,SAAK,QAAL;AACA,SAAK,SAAL;AACA,SAAK,SAAL;AACA,SAAK,OAAL;AACA,SAAK,QAAL;AACA,SAAK,QAAL;AACA,SAAK,YAAL;AACA,SAAK,YAAL;AACE,aAAO,WAAP;;AAEF,SAAK,aAAL;AACA,SAAK,YAAL;AACA,SAAK,eAAL;AACA,SAAK,eAAL;AACA,SAAK,cAAL;AACA,SAAK,aAAL;AACE,aAAO,YAAP;;AAEF;AACE,aAAOwP,UAAU,CAACxP,IAAD,CAAjB;AApBJ;AAsBD,CAvBD;;AAyBA,IAAI+U,cAAc,GAAG,CAAC;AAAE/U,EAAAA,IAAF;AAAQkL,EAAAA;AAAR,CAAD,KACnB,CACEgK,cAAc,CAAClV,IAAD,CADhB,EAEG,GAAEkL,SAAS,CAACiK,QAAS,IAFxB,EAGE3F,UAAU,CAACtE,SAAS,CAACC,KAAX,CAHZ,EAIED,SAAS,CAACkK,KAAV,IAAoB,GAAElK,SAAS,CAACkK,KAAM,IAJxC,EAMGte,MANH,CAMU0S,OANV,EAOGtS,IAPH,CAOQ,GAPR,CADF;;AAUA,IAAIsd,YAAY,GAAGP,MAAM,IACvBrd,MAAM,CAACC,IAAP,CAAYod,MAAZ,EAAoB/d,GAApB,CAAwB4S,IAAI,IAAK,GAAEA,IAAK,KAAImL,MAAM,CAACnL,IAAD,CAAO,EAAzD,CADF;;AAGA,IAAIqB,MAAI,GAAGhC,GAAG,IACZ,OAAOA,GAAP,KAAe,QAAf,GAA2B,IAAGA,GAAG,CAACrP,OAAJ,CAAY,IAAZ,EAAkB,GAAlB,CAAuB,GAArD,GAA0DqP,GAD5D;;AAGA,IAAImM,WAAW,GAAG,CAACL,MAAD,EAASoB,aAAa,GAAG,EAAzB,KAChBze,MAAM,CAACC,IAAP,CAAYod,MAAZ,EACGnd,MADH,CACUgS,IAAI,IAAI,CAACuM,aAAa,CAACpd,QAAd,CAAuB6Q,IAAvB,CADnB,EAEG5S,GAFH,CAEO4S,IAAI,IAAK,GAAEA,IAAK,KAAIqB,MAAI,CAAC8J,MAAM,CAACnL,IAAD,CAAP,CAAe,EAF9C,CADF;;AAKA,IAAIwM,mBAAmB,GAAG;AACxB3C,EAAAA,UAAU,EAAE,UADY;AAExB;AACAD,EAAAA,SAAS,EAAE;AAHa,CAA1B;;AAKA,IAAI6C,uBAAuB,GAAGxe,GAAG,IAAIue,mBAAmB,CAACve,GAAD,CAAnB,IAA4BA,GAAjE;;AAEA,IAAIsd,KAAK,GAAG,CAACJ,MAAD,EAASld,GAAT,EAAc0c,iBAAd,KAAoC;AAC9C,MAAII,GAAG,GAAG,EAAV;;AAEA,MAAI9c,GAAG,KAAK,MAAZ,EAAoB;AAClB,QAAI0c,iBAAJ,EAAuB;AACrB,UAAIvU,MAAM,GAAI,cAAauU,iBAAkB,GAA7C;AACA,UAAI+B,MAAM,GAAGD,uBAAuB,CAACxe,GAAD,CAApC;AACA8c,MAAAA,GAAG,CAAC7U,IAAJ,CAAU,MAAKE,MAAO,IAAGsW,MAAO,UAAhC;AACD,KAJD,MAIO,IACLze,GAAG,KAAK,YAAR;AAEAA,IAAAA,GAAG,KAAK,WAHH,EAIL;AACA8c,MAAAA,GAAG,CAAC7U,IAAJ,CAAU,MAAKuW,uBAAuB,CAACxe,GAAD,CAAM,MAA5C;AACD,KANM,MAMA,IAAIA,GAAG,KAAK,eAAZ,EAA6B;AAClC8c,MAAAA,GAAG,CAAC7U,IAAJ,CAAU,qBAAV;AACD;AACF;;AAED6U,EAAAA,GAAG,CAAC7U,IAAJ,CAASiV,MAAM,CAAC/c,IAAP,CAAY,KAAZ,CAAT;AAEA,MAAIH,GAAG,KAAK,MAAZ,EAAoB8c,GAAG,CAAC7U,IAAJ,CAAU,GAAV;AAEpB,SAAO6U,GAAP;AACD,CAxBD;;AA0BA,IAAID,cAAc,GAAG,CAAC;AAAEjS,EAAAA,IAAF;AAAQC,EAAAA,KAAR;AAAezI,EAAAA,EAAf;AAAmBsa,EAAAA;AAAnB,CAAD,KAA4C;AAC/D,MAAIgC,YAAY,GAAG,EAAnB;AACA,MAAIC,eAAe,GAAG,EAAtB;AAEA9e,EAAAA,MAAM,CAACiG,OAAP,CAAe8E,IAAI,CAAC3I,KAApB,EAA2B7C,OAA3B,CAAmC,CAAC,CAAC8C,IAAD,EAAO0c,UAAP,CAAD,KAAwB;AACzD,QAAI,EAAE1c,IAAI,IAAIyc,eAAV,CAAJ,EAAgC;AAC9BA,MAAAA,eAAe,CAACzc,IAAD,CAAf,GAAwB,EAAxB;AACD;;AACD,QAAI,EAAEA,IAAI,IAAIwc,YAAV,CAAJ,EAA6B;AAC3BA,MAAAA,YAAY,CAACxc,IAAD,CAAZ,GAAqB,EAArB;AACD;;AAEDrC,IAAAA,MAAM,CAACiG,OAAP,CAAe8Y,UAAf,EAA2Bxf,OAA3B,CAAmC,CAAC,CAAC4R,KAAD,EAAQ6N,WAAR,CAAD,KAA0B;AAC3D,UAAI,EAAE7N,KAAK,IAAI2N,eAAe,CAACzc,IAAD,CAA1B,CAAJ,EAAuC;AACrCyc,QAAAA,eAAe,CAACzc,IAAD,CAAf,CAAsB8O,KAAtB,IAA+B,EAA/B;AACD;;AACD,UAAI,EAAEA,KAAK,IAAI0N,YAAY,CAACxc,IAAD,CAAvB,CAAJ,EAAoC;AAClCwc,QAAAA,YAAY,CAACxc,IAAD,CAAZ,CAAmB8O,KAAnB,IAA4B,EAA5B;AACD;;AAEDnR,MAAAA,MAAM,CAACiG,OAAP,CAAe+Y,WAAf,EAA4Bzf,OAA5B,CAAoC,CAAC,CAACY,GAAD,EAAMY,KAAN,CAAD,KAAkB;AACpD,gBAAQZ,GAAR;AACE,eAAK,UAAL;AACE0e,YAAAA,YAAY,CAACxc,IAAD,CAAZ,CAAmB8O,KAAnB,EAA0B,OAA1B,IAAqCpQ,KAArC;AACA,mBAAOgK,IAAI,CAAC3I,KAAL,CAAWC,IAAX,EAAiB8O,KAAjB,EAAwBhR,GAAxB,CAAP;AACA;;AACF,eAAK,oBAAL;AACE0e,YAAAA,YAAY,CAACxc,IAAD,CAAZ,CAAmB8O,KAAnB,EAA0B,iBAA1B,IAA+CpQ,KAA/C;AACA,mBAAOgK,IAAI,CAAC3I,KAAL,CAAWC,IAAX,EAAiB8O,KAAjB,EAAwBhR,GAAxB,CAAP;AACA;;AACF,eAAK,mBAAL;AACE2e,YAAAA,eAAe,CAACzc,IAAD,CAAf,CAAsB8O,KAAtB,EAA6B,OAA7B,IAAwCpQ,KAAxC;AACA,mBAAOgK,IAAI,CAAC3I,KAAL,CAAWC,IAAX,EAAiB8O,KAAjB,EAAwBhR,GAAxB,CAAP;AACA;;AACF,eAAK,6BAAL;AACE2e,YAAAA,eAAe,CAACzc,IAAD,CAAf,CAAsB8O,KAAtB,EAA6B,iBAA7B,IAAkDpQ,KAAlD;AACA,mBAAOgK,IAAI,CAAC3I,KAAL,CAAWC,IAAX,EAAiB8O,KAAjB,EAAwBhR,GAAxB,CAAP;AACA;AAhBJ;AAqBD,OAtBD;AAuBD,KA/BD;AAgCD,GAxCD;AA0CA,MAAI;AAAEwd,IAAAA,UAAU,EAAEsB,aAAd;AAA6BzB,IAAAA,SAAS,EAAE0B;AAAxC,MAAyD3B,aAAa,CACxExS,IADwE,EAExE8T,YAFwE,EAGxEhC,iBAHwE,CAA1E;AAMA,MAAI;AACFc,IAAAA,UAAU,EAAEwB,gBADV;AAEF3B,IAAAA,SAAS,EAAE4B;AAFT,MAGA7B,aAAa,CAACxS,IAAD,EAAO+T,eAAP,EAAwBjC,iBAAxB,CAHjB;AAKA,MAAIwC,SAAS,GAAI,GAAEH,YAAY,GAAI,GAAEA,YAAa,EAAnB,GAAuB,EAAG,IACvDD,aAAa,GAAI,KAAIA,aAAc,EAAtB,GAA0B,EACxC,EAFD;AAIA,MAAIK,YAAY,GAAI,GAAEF,eAAe,GAAI,GAAEA,eAAgB,EAAtB,GAA0B,EAAG,IAChED,gBAAgB,GAAI,KAAIA,gBAAiB,EAAzB,GAA6B,EAC9C,EAFD;AAIApU,EAAAA,IAAI,CAACwU,mBAAL,GAA2B,CAAC,EAAEN,aAAa,IAAIE,gBAAnB,CAA5B;AACAnU,EAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,yBAAwB7F,EAAG,MAA9C;AAEAyI,EAAAA,KAAK,CAACqS,MAAN,CAAc,GAAE9a,EAAG,KAAnB,IAA4B;MACxB8c,SAAS,GAAI,KAAIA,SAAU,EAAlB,GAAsB,EAAG;MAClCC,YAAY,GAAI,2BAA0BA,YAAa,GAA3C,GAAgD,EAAG;OAFnE;AAIAtU,EAAAA,KAAK,CAACsS,WAAN,CAAkBlV,IAAlB,CAAwB,GAAE7F,EAAG,KAA7B;AACD,CAzED;;ACnQO,IAAIuI,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAAC2O,QAAL,IAAiB3O,IAAI,CAAC2O,QAAL,CAAcxI,IAAd,CAAmB4I,KAAK,IAAIA,KAAK,CAAC0F,MAAlC,CAArB,EAAgE;AAC9DxU,IAAAA,KAAK,CAACyU,WAAN,GAAoB,IAApB;AACAzU,IAAAA,KAAK,CAAC0U,OAAN,GAAgB,EAAhB;AACA3U,IAAAA,IAAI,CAAC2O,QAAL,CACGxZ,MADH,CACU4Z,KAAK,IAAIA,KAAK,CAAC0F,MADzB,EAEGjgB,OAFH,CAEWua,KAAK,IAAI9O,KAAK,CAAC0U,OAAN,CAActX,IAAd,CAAmB0R,KAAK,CAAC0F,MAAzB,CAFpB;AAGD,GAND,MAMO,IAAIzU,IAAI,CAACyU,MAAL,IAAe,CAAClX,MAApB,EAA4B;AACjC0C,IAAAA,KAAK,CAACyU,WAAN,GAAoB,IAApB;AACAzU,IAAAA,KAAK,CAAC0U,OAAN,GAAgB,EAAhB;AACA1U,IAAAA,KAAK,CAAC0U,OAAN,CAActX,IAAd,CAAmB2C,IAAI,CAACyU,MAAxB;AACD;AACF,CAZM;;ACAA,SAAS1U,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAI,CAACD,IAAI,CAACoJ,MAAN,IAAgB,gBAAgBpJ,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAtD,EAA4D;AAE5De,EAAAA,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAlB,CAAuB2V,UAAvB,GAAoC,MAApC;AACD;;ACFM,SAAS7U,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC3B,IAAL,KAAc,KAAlB,EAAyB;AACvB,QAAI,CAACd,MAAM,CAAC6M,OAAZ,EAAqB;AACnBnK,MAAAA,KAAK,CAAC4U,OAAN,GAAgB,IAAhB;AACD,KAHsB;;;AAMvB5U,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,IAAGE,MAAM,CAACkU,SAAP,GAAmB,UAAnB,GAAgC,KAAM,IAAG3L,IAAI,CAAC9F,IAAI,CAAChK,KAAN,CAAa,EADhE;AAGA,WAAO,IAAP;AACD;AACF;;ACJD,IAAI8e,gCAAgC,GAAG;AACrChe,EAAAA,UAAU,EAAE,YADyB;AAErCiO,EAAAA,aAAa,EAAE,eAFsB;AAGrCD,EAAAA,aAAa,EAAE;AAHsB,CAAvC;AAMA,AAAO,SAAS/E,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MACE,CAACkK,OAAO,CAACnK,IAAD,CAAR,IACA,CAACzC,MAAM,CAAC6M,OADR,IAECe,KAAK,CAAC5N,MAAD,CAAL,IAAiB0C,KAAK,CAAC8S,aAFxB,IAGAxV,MAAM,CAACc,IAAP,KAAgB,UAJlB,EAME;AAEF,MAAI0W,IAAI,GAAGlP,MAAM,CAAC7F,IAAD,CAAjB;;AAEA,MAAI,CAAC+U,IAAD,IAAS9U,KAAK,CAAC8S,aAAnB,EAAkC;AAChC,QAAIiC,SAAS,GAAGF,gCAAgC,CAAC9U,IAAI,CAAC3B,IAAN,CAAhD;;AACA,QAAI2W,SAAJ,EAAe;AACbD,MAAAA,IAAI,GAAGlP,MAAM,CAACmB,OAAO,CAACzJ,MAAD,EAASyX,SAAT,CAAR,CAAb;AACD;AACF;;AAED,MAAI;AAAE3D,IAAAA,OAAF;AAAW4D,IAAAA,SAAX;AAAsB,OAAG3D;AAAzB,MAA8CrR,KAAK,CAACsR,mBAAN,CAChDvR,IADgD,EAEhDzC,MAFgD,EAGhD0C,KAHgD,EAIhD8U,IAJgD,CAAlD;;AAOA,MAAI1D,OAAJ,EAAa;AACXpc,IAAAA,MAAM,CAACC,IAAP,CAAYoc,gBAAZ,EAA8B9c,OAA9B,CAAsCsS,CAAC,IACrC7G,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAGyJ,CAAE,IAAG0B,IAAI,CAAC8I,gBAAgB,CAACxK,CAAD,CAAjB,EAAsB9G,IAAtB,CAA4B,EAA3D,CADF;AAGD,GAJD,MAIO;AACL,QAAIwR,iBAAiB,GACnBjU,MAAM,IAAIyC,IAAI,CAACyR,SAAf,GACI1L,eAAe,CAAC/F,IAAD,EAAO6J,YAAY,CAAC7J,IAAD,CAAnB,CADnB,GAEI,KAHN;AAIA,QAAI0R,MAAM,GACRqD,IAAI,IAAIE,SAAR,IAAqBzD,iBAArB,GACIjU,MAAM,CAAClG,KAAP,CAAamV,OADjB,GAEIjP,MAAM,CAAClG,KAAP,CAAa+Z,MAHnB;AAKAnc,IAAAA,MAAM,CAAC0c,MAAP,CAAcD,MAAM,CAAC7H,YAAY,CAAC7J,IAAD,CAAb,CAApB,EAA0CsR,gBAA1C;AACD;;AAED,SAAO,IAAP;AACD;;ACxDD,IAAI4D,yBAAyB,GAAG,SAAhC;AAEA,AAAO,SAASnV,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC3B,IAAL,KAAc,MAAd,IAAwBd,MAAM,CAACc,IAAP,KAAgB,MAA5C,EAAoD;AAClD,QAAI4B,KAAK,CAACgJ,IAAN,IAAcjJ,IAAI,CAAChK,KAAL,KAAe,aAAjC,EAAgD;AAC9CuH,MAAAA,MAAM,CAAC6R,gBAAP,GAA0B,cAA1B;AACD,KAFD,MAEO,IAAIhE,eAAe,CAACpL,IAAD,EAAOzC,MAAP,CAAnB,EAAmC;AACxCA,MAAAA,MAAM,CAAC6R,gBAAP,GAA0BtJ,IAAI,CAACgD,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAnB,CAA9B;AACD,KAFM,MAEA,IAAI4F,MAAM,CAAC7F,IAAD,CAAV,EAAkB;AACvBzC,MAAAA,MAAM,CAAC6R,gBAAP,GAA0BtJ,IAAI,CAAC9F,IAAI,CAAChK,KAAN,CAA9B;AACD,KAFM,MAEA,IAAIkf,yBAAyB,CAAC3T,IAA1B,CAA+BvB,IAAI,CAAChK,KAApC,CAAJ,EAAgD;AACrDuH,MAAAA,MAAM,CAAC6R,gBAAP,GAA2B,KAAIpP,IAAI,CAAChK,KAAM,IAA1C;AACD,KAFM,MAEA;AACLuH,MAAAA,MAAM,CAAC6R,gBAAP,GAA0BpP,IAAI,CAAChK,KAA/B;AACD;;AAED,WAAO,IAAP;AACD;AACF;;ACrBM,SAAS+J,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACoK,OAAL,IAAgB,CAACnK,KAAK,CAAC3C,QAA3B,EAAqC,OADI;AAIzC;;AACA2C,EAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,aAAY4C,KAAK,CAAC3C,QAAS,IAAG0C,IAAI,CAAC3B,IAAK,GAA3D;AACD;;ACND,IAAI8W,SAAS,GAAG,CACd,WADc,EAEd,QAFc,EAGd,MAHc,EAId,YAJc,EAKd,SALc,EAMd,WANc,EAOd,iBAPc,EAQd,qBARc,EASd,eATc,EAUd,aAVc,EAWd,SAXc,EAYd,QAZc,EAad,YAbc,EAcd,kBAdc,EAed,YAfc,EAgBd,MAhBc,CAAhB;AAmBA,+BAAe,CAACnV,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KACb,CAACkV,SAAS,CAAC7e,QAAV,CAAmB0J,IAAI,CAAC3B,IAAL,CAAUuS,WAAV,EAAnB,CADH;;ACNO,SAAS7Q,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAT,EAAqB,OAAO,KAAP;AAErBkV,EAAAA,OAAA,CAAsBpV,IAAtB,EAA4BzC,MAA5B,EAAoC0C,KAApC;AACAoV,EAAAA,OAAA,CAA0BrV,IAA1B,AAAA;AACAsV,EAAAA,OAAA,CAAsBtV,IAAtB,EAA4BzC,MAA5B,EAAoC0C,KAApC;AACAsV,EAAAA,OAAA,CAAqBvV,IAArB,EAA2BzC,MAA3B,EAAmC0C,KAAnC;AACAuV,EAAAA,OAAA,CAAuBxV,IAAvB,EAA6BzC,MAA7B,EAAqC0C,KAArC;AAEAD,EAAAA,IAAI,CAACoH,UAAL,CAAgB5S,OAAhB,CAAwBiT,QAAQ,IAAI;AAClC,QACEA,QAAQ,CAACpJ,IAAT,KAAkB,MAAlB,IACAoJ,QAAQ,CAACpJ,IAAT,KAAkB,IADlB,IAEAoJ,QAAQ,CAACpJ,IAAT,KAAkB,MAFlB,IAGAoJ,QAAQ,CAACpJ,IAAT,KAAkB,QAHlB,IAIAoJ,QAAQ,CAACa,IAAT,CAAcmN,oBAJd,IAKC,CAACC,uBAAuB,CAACjO,QAAD,AAAA,CAAxB,IAAmDzH,IAAI,CAACoK,OALzD,IAMC3C,QAAQ,CAACpJ,IAAT,KAAkB,MAAlB,KACE2B,IAAI,CAAC3B,IAAL,KAAc,MAAd,IAAwB2B,IAAI,CAAC3B,IAAL,KAAc,OADxC,CAND,IAQCoJ,QAAQ,CAACpJ,IAAT,KAAkB,KAAlB,IAA2Bd,MAAM,CAACiN,MARnC,IASC/C,QAAQ,CAACpJ,IAAT,KAAkB,MAAlB,IAA4B2B,IAAI,CAACwK,MATlC,IAUC/C,QAAQ,CAACpJ,IAAT,KAAkB,OAAlB,IAA6BsM,QAAQ,CAAC3K,IAAD,CAXxC,EAaE;AAEF,KAAC2V,OAAA,CAAkBlO,QAAlB,EAA4BzH,IAA5B,EAAkCC,KAAlC,CAAD,IACE,CAAC2V,OAAA,CAAoBnO,QAApB,EAA8BzH,IAA9B,EAAoCC,KAApC,CADH,IAEE,CAAC4V,OAAA,CAAmBpO,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAFH,IAGE2O,OAAA,CAAmBnH,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAHF;AAID,GApBD;AAqBA6V,EAAAA,OAAA,CAAgC9V,IAAhC,AAAA;AAEAoV,EAAAA,OAAA,CAAsBpV,IAAtB,EAA4BzC,MAA5B,EAAoC0C,KAApC;AACAoV,EAAAA,OAAA,CAA0BrV,IAA1B,EAAgCzC,MAAhC,EAAwC0C,KAAxC;AACD;;AC/CM,IAAIF,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAI8V,SAAS,GAAG/V,IAAI,CAACqG,EAAL,IAAWrG,IAAI,CAAC3B,IAAhC;;AAEA,MAAI,OAAO4B,KAAK,CAAC+V,OAAN,CAAcD,SAAd,CAAP,KAAoC,QAAxC,EAAkD;AAChD9V,IAAAA,KAAK,CAAC+V,OAAN,CAAcD,SAAd;AACAA,IAAAA,SAAS,GAAI,GAAEA,SAAU,IAAG9V,KAAK,CAAC+V,OAAN,CAAcD,SAAd,CAAyB,EAArD;AACD,GAHD,MAGO;AACL9V,IAAAA,KAAK,CAAC+V,OAAN,CAAcD,SAAd,IAA2B,CAA3B;AACD;;AAED/V,EAAAA,IAAI,CAACG,MAAL,GAAc4V,SAAd;AACD,CAXM;;ACEA,SAAShW,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAI,CAACsK,OAAO,CAACvK,IAAD,CAAZ,EAAoB;AAEpBC,EAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,0IADH;AAGD;AAED,AAAO,SAAS8R,OAAT,CAAenP,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAI,CAACsK,OAAO,CAACvK,IAAD,CAAZ,EAAoB;AAEpBC,EAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,gBAAnB;AACD;;ACGM,IAAI0C,OAAK,GAAG,CACjBkW,OADiB,EAEjBC,OAFiB,EAGjBC,OAHiB,EAKjBC,OALiB,EAMjBC,OANiB,EAOjBC,OAPiB,EASjBC,OATiB,EAUjBC,OAViB,EAYjBC,OAZiB,EAajBC,KAbiB,EAcjBC,OAdiB,EAejBC,OAfiB,EAgBjBC,OAhBiB,EAiBjBC,OAjBiB,CAAZ;AAoBP,AAAO,IAAI3H,OAAK,GAAG,CACjB2H,OADiB,EAEjBC,KAFiB,EAGjBF,OAHiB,EAIjBT,OAJiB,EAKjBC,OALiB,EAOjBF,OAPiB,CAAZ;;;;;;;;AC7BQ,SAAS5E,mBAAT,CAA6BvR,IAA7B,EAAmCzC,MAAnC,EAA2C0C,KAA3C,EAAkD8U,IAAlD,EAAwD;AACrE,MAAIiC,SAAS,GAAGC,YAAY,CAACjX,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAA5B;;AAEA,MAAI+W,SAAJ,EAAe;AACb,YAAQhX,IAAI,CAAC3B,IAAb;AACE,WAAK,QAAL;AACA,WAAK,SAAL;AACA,WAAK,SAAL;AACA,WAAK,OAAL;AACA,WAAK,QAAL;AACA,WAAK,QAAL;AACA,WAAK,YAAL;AACA,WAAK,YAAL;AACE,eAAO;AACL4W,UAAAA,SAAS,EAAE,IADN;AAELxJ,UAAAA,SAAS,EAAG,IAAGyL,YAAY,CAAClX,IAAD,EAAOzC,MAAP,AAAA,CAAsB;AAF5C,SAAP;;AAKF,WAAK,aAAL;AACA,WAAK,YAAL;AACA,WAAK,eAAL;AACA,WAAK,eAAL;AACA,WAAK,cAAL;AACA,WAAK,aAAL;AAAoB;AAClB,cAAI4Z,MAAM,GAAGC,SAAS,CAACpX,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAtB;AACA,cAAI7K,GAAG,GAAGH,MAAM,CAACC,IAAP,CAAYiiB,MAAZ,EAAoB,CAApB,CAAV;AAEA,iBAAO;AACLlC,YAAAA,SAAS,EAAE,IADN;AAEL,aAAC7f,GAAD,GAAQ,IAAG+hB,MAAM,CAAC/hB,GAAD,CAAM;AAFlB,WAAP;AAID;;AAED;AACE,eAAO;AACL6f,UAAAA,SAAS,EAAE,IADN;AAEL,WAACjV,IAAI,CAAC3B,IAAN,GAAa2Y;AAFR,SAAP;AA9BJ;AAmCD;;AAED,UAAQhX,IAAI,CAAC3B,IAAb;AACE,SAAK,WAAL;AACE,aAAO;AACLgZ,QAAAA,eAAe,EAAEC,UAAU,CAACtX,IAAD,EAAO+U,IAAP;AADtB,OAAP;;AAIF,SAAK,iBAAL;AACE,aAAO;AACLwC,QAAAA,eAAe,EAAExC,IAAI,GAChB,YAAWyC,KAAK,CAACxX,IAAD,CAAO,MADP,GAEhB,QAAOA,IAAI,CAAChK,KAAM;AAHlB,OAAP;;AAMF,SAAK,YAAL;AACE,aAAO;AACLc,QAAAA,UAAU,EAAEie,IAAI,GAAGyC,KAAK,CAACxX,IAAD,CAAR,GAAiBhJ,oBAAoB,CAACgJ,IAAI,CAAChK,KAAN;AADhD,OAAP;;AAIF,SAAK,aAAL;AACA,SAAK,YAAL;AACA,SAAK,eAAL;AACA,SAAK,eAAL;AACA,SAAK,cAAL;AACA,SAAK,aAAL;AACE,aAAOohB,SAAS,CAACpX,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAhB;;AAEF,SAAK,QAAL;AACA,SAAK,SAAL;AACA,SAAK,SAAL;AACA,SAAK,OAAL;AACA,SAAK,QAAL;AACA,SAAK,QAAL;AACA,SAAK,YAAL;AACA,SAAK,YAAL;AACE,aAAO;AAAEwL,QAAAA,SAAS,EAAEyL,YAAY,CAAClX,IAAD,EAAOzC,MAAP,AAAA;AAAzB,OAAP;;AAEF,SAAK,kBAAL;AACA,SAAK,kBAAL;AACE,aAAO;AACLka,QAAAA,eAAe,EAAEC,kBAAkB,CAAC1X,IAAD,EAAOzC,MAAP,AAAA;AAD9B,OAAP;;AAIF,SAAK,QAAL;AACE,aAAO;AACLiI,QAAAA,MAAM,EAAEuP,IAAI,GAAGyC,KAAK,CAACxX,IAAD,CAAR,GAAiB2X,QAAQ,CAAC3X,IAAI,CAAChK,KAAN,EAAa,EAAb;AADhC,OAAP;;AAIF;AACE,aAAO;AACL,SAACgK,IAAI,CAAC3B,IAAN,GAAaiZ,UAAU,CAACtX,IAAD,EAAO+U,IAAP;AADlB,OAAP;AAhDJ;AAoDD;;AAED,IAAIuC,UAAU,GAAG,CAACnQ,IAAD,EAAO4N,IAAP,KACfA,IAAI,GAAGyC,KAAK,CAACrQ,IAAD,CAAR,GAAiByG,mBAAmB,CAACzG,IAAD,CAD1C;;AAGA,IAAIqQ,KAAK,GAAGrQ,IAAI,IAAK,UAASA,IAAI,CAAC9I,IAAK,IAAxC;;AAEA,IAAI4Y,YAAY,GAAG,CAAC9P,IAAD,EAAOyQ,KAAP,EAAc3X,KAAd,KAAwB;AACzC,MACEkH,IAAI,CAACf,KAAL,KAAe,WAAf,IACAe,IAAI,CAACf,KAAL,KAAe,WADf,IAEAe,IAAI,CAACf,KAAL,KAAe,YAHjB,EAKE,OAAO,KAAP;AAEF,MAAIyR,eAAe,GAAG/O,kBAAkB,CAAC3B,IAAD,EAAOyQ,KAAP,EAAc3X,KAAd,CAAxC;AACA,SAAO4X,eAAe,IAAIL,KAAK,CAACrQ,IAAD,CAA/B;AACD,CAVD;;AAYA,IAAI8E,cAAY,GAAG,CAAC9E,IAAD,EAAOyQ,KAAP,EAAc3X,KAAd,EAAqBwI,IAAI,GAAG,EAA5B,KAAmC;AACpD,MAAI,CAACtB,IAAL,EAAW,OAAO,KAAP;AAEX,MAAI6P,SAAS,GAAGC,YAAY,CAAC9P,IAAD,EAAOyQ,KAAP,EAAc3X,KAAd,CAA5B;AAEA,MAAI+W,SAAJ,EAAe,OAAOA,SAAP;;AAEf,MAAI7P,IAAI,CAACmB,IAAL,CAAUC,IAAd,EAAoB;AAClB,WAAQ,SAAQpB,IAAI,CAAC9I,IAAK,GAA1B;AACD;;AAED,SAAO,OAAO8I,IAAI,CAACnR,KAAZ,KAAsB,QAAtB,GAAkC,GAAEmR,IAAI,CAACnR,KAAM,GAAEyS,IAAK,EAAtD,GAA0DtB,IAAI,CAACnR,KAAtE;AACD,CAZD;;AAcA,IAAIohB,SAAS,GAAG,CAACpX,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AACvC,MAAI6X,MAAM,GAAGva,MAAM,CAACc,IAAP,KAAgB,MAA7B;AAEA,MAAI0Z,WAAW,GAAG/Q,OAAO,CAACzJ,MAAD,EAAS,aAAT,EAAwByC,IAAI,CAACoG,KAA7B,CAAzB;AACA,MAAIpB,UAAU,GAAGgC,OAAO,CAACzJ,MAAD,EAAS,YAAT,EAAuByC,IAAI,CAACoG,KAA5B,CAAxB;AACA,MAAIrB,aAAa,GAAGiC,OAAO,CAACzJ,MAAD,EAAS,eAAT,EAA0ByC,IAAI,CAACoG,KAA/B,CAA3B;AACA,MAAItB,aAAa,GAAGkC,OAAO,CAACzJ,MAAD,EAAS,eAAT,EAA0ByC,IAAI,CAACoG,KAA/B,CAA3B;AACA,MAAInB,YAAY,GAAG+B,OAAO,CAACzJ,MAAD,EAAS,cAAT,EAAyByC,IAAI,CAACoG,KAA9B,CAA1B;AACA,MAAI4R,WAAW,GAAGhR,OAAO,CAACzJ,MAAD,EAAS,aAAT,EAAwByC,IAAI,CAACoG,KAA7B,CAAzB;AACA,MAAI6R,gBAAgB,GAAGhM,cAAY,CAAC+L,WAAD,EAAcza,MAAd,EAAsB0C,KAAtB,CAAnC;AAEA,MAAIjK,KAAK,GAAG,CACV,CAAC8hB,MAAD,KACG,OAAOG,gBAAP,KAA4B,QAA5B,IAAwC,QAAQ1W,IAAR,CAAa0W,gBAAb,CAAxC,GACGA,gBADH,GAEGA,gBAAgB,IAAI,OAH1B,CADU,EAKVhM,cAAY,CAAClH,aAAD,EAAgBxH,MAAhB,EAAwB0C,KAAxB,EAA+B,IAA/B,CALF,EAMVgM,cAAY,CAACnH,aAAD,EAAgBvH,MAAhB,EAAwB0C,KAAxB,EAA+B,IAA/B,CANF,EAOVgM,cAAY,CAACjH,UAAD,EAAazH,MAAb,EAAqB0C,KAArB,EAA4B,IAA5B,CAPF,EAQV,CAAC6X,MAAD,IAAW7L,cAAY,CAAChH,YAAD,EAAe1H,MAAf,EAAuB0C,KAAvB,EAA8B,IAA9B,CARb,EASVgM,cAAY,CAAC8L,WAAD,EAAcxa,MAAd,EAAsB0C,KAAtB,CATF,EAWT9K,MAXS,CAWF0S,OAXE,EAYTtS,IAZS,CAYJ,GAZI,EAaT4B,OAbS,CAaD,IAbC,EAaK,EAbL,CAAZ;;AAeA,MACE0O,MAAM,CAACkS,WAAD,CAAN,IACAlS,MAAM,CAACb,UAAD,CADN,IAEAa,MAAM,CAACf,aAAD,CAFN,IAGAe,MAAM,CAACd,aAAD,CAHN,IAIAc,MAAM,CAACZ,YAAD,CAJN,IAKAY,MAAM,CAACmS,WAAD,CANR,EAOE;AACAhiB,IAAAA,KAAK,GAAI,KAAIA,KAAM,IAAnB;AACD;;AAED,SAAO;AACL,KAAC8hB,MAAM,GAAG,YAAH,GAAkB,WAAzB,GAAuC9hB;AADlC,GAAP;AAGD,CAxCD;;AA0CA,IAAIkiB,iBAAiB,GAAG,CAAC/Q,IAAD,EAAO5J,MAAP,EAAekL,IAAf,KAAwB;AAC9C,MAAI,CAACtB,IAAL,EAAW,OAAO,KAAP;AACX,SAAQ,GAAEA,IAAI,CAAC9I,IAAK,IAAG4N,cAAY,CAAC9E,IAAD,EAAO5J,MAAP,EAAekL,IAAf,CAAqB,GAAxD;AACD,CAHD;;AAKA,IAAIyO,YAAY,GAAG,CAAClX,IAAD,EAAOzC,MAAP,KAAkB;AACnC,MAAI+G,MAAM,GAAG0C,OAAO,CAACzJ,MAAD,EAAS,QAAT,EAAmByC,IAAI,CAACoG,KAAxB,CAApB;AACA,MAAI7B,OAAO,GAAGyC,OAAO,CAACzJ,MAAD,EAAS,SAAT,EAAoByC,IAAI,CAACoG,KAAzB,CAArB;AACA,MAAI5B,OAAO,GAAGwC,OAAO,CAACzJ,MAAD,EAAS,SAAT,EAAoByC,IAAI,CAACoG,KAAzB,CAArB;AACA,MAAI3B,KAAK,GAAGuC,OAAO,CAACzJ,MAAD,EAAS,OAAT,EAAkByC,IAAI,CAACoG,KAAvB,CAAnB;AACA,MAAI1B,MAAM,GAAGsC,OAAO,CAACzJ,MAAD,EAAS,QAAT,EAAmByC,IAAI,CAACoG,KAAxB,CAApB;AACA,MAAIzB,MAAM,GAAGqC,OAAO,CAACzJ,MAAD,EAAS,QAAT,EAAmByC,IAAI,CAACoG,KAAxB,CAApB;AACA,MAAIf,UAAU,GAAG2B,OAAO,CAACzJ,MAAD,EAAS,YAAT,EAAuByC,IAAI,CAACoG,KAA5B,CAAxB;AACA,MAAId,UAAU,GAAG0B,OAAO,CAACzJ,MAAD,EAAS,YAAT,EAAuByC,IAAI,CAACoG,KAA5B,CAAxB;AAEA,MAAIpQ,KAAK,GAAG,CACVkiB,iBAAiB,CAAC5T,MAAD,EAAS/G,MAAT,EAAiB,KAAjB,CADP,EAEV2a,iBAAiB,CAAC3T,OAAD,EAAUhH,MAAV,EAAkB,KAAlB,CAFP,EAGV2a,iBAAiB,CAAC1T,OAAD,EAAUjH,MAAV,EAAkB,KAAlB,CAHP,EAIV2a,iBAAiB,CAACzT,KAAD,EAAQlH,MAAR,EAAgB,EAAhB,CAJP,EAKV2a,iBAAiB,CAACxT,MAAD,EAASnH,MAAT,EAAiB,EAAjB,CALP,EAMV2a,iBAAiB,CAACvT,MAAD,EAASpH,MAAT,EAAiB,EAAjB,CANP,EAQV2a,iBAAiB,CAAC7S,UAAD,EAAa9H,MAAb,EAAqB,IAArB,CARP,EASV2a,iBAAiB,CAAC5S,UAAD,EAAa/H,MAAb,EAAqB,IAArB,CATP,EAWTpI,MAXS,CAWF0S,OAXE,EAYTtS,IAZS,CAYJ,GAZI,CAAZ;;AAcA,MACEsQ,MAAM,CAACvB,MAAD,CAAN,IACAuB,MAAM,CAACtB,OAAD,CADN,IAEAsB,MAAM,CAACrB,OAAD,CAFN,IAGAqB,MAAM,CAACpB,KAAD,CAHN,IAIAoB,MAAM,CAACnB,MAAD,CAJN,IAKAmB,MAAM,CAAClB,MAAD,CALN,IAMAkB,MAAM,CAACR,UAAD,CANN,IAOAQ,MAAM,CAACP,UAAD,CARR,EASE;AACAtP,IAAAA,KAAK,GAAI,KAAIA,KAAM,IAAnB;AACD,GAnCkC;AAsCnC;;;AACA,SAAOA,KAAK,CAACmB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAP;AACD,CAxCD;;AA0CA,IAAIugB,kBAAkB,GAAG,CAAC1X,IAAD,EAAOzC,MAAP,KAAkB;AACzC,MAAI4a,gBAAgB,GAAGnR,OAAO,CAACzJ,MAAD,EAAS,kBAAT,EAA6ByC,IAAI,CAACoG,KAAlC,CAA9B;AACA,MAAIgS,gBAAgB,GAAGpR,OAAO,CAACzJ,MAAD,EAAS,kBAAT,EAA6ByC,IAAI,CAACoG,KAAlC,CAA9B;AACA,MAAIpQ,KAAK,GAAG,CACViW,cAAY,CACVkM,gBADU,EAEV5a,MAFU,EAGV8a,MAAM,CAACC,SAAP,CAAiBH,gBAAgB,CAACniB,KAAlC,IAA2C,IAA3C,GAAkD,EAHxC,CADF,EAMViW,cAAY,CACVmM,gBADU,EAEV7a,MAFU,EAGV8a,MAAM,CAACC,SAAP,CAAiBF,gBAAgB,CAACpiB,KAAlC,IAA2C,IAA3C,GAAkD,EAHxC,CANF,EAYTb,MAZS,CAYF0S,OAZE,EAaTtS,IAbS,CAaJ,GAbI,CAAZ;;AAeA,MAAIsQ,MAAM,CAACsS,gBAAD,CAAN,IAA4BtS,MAAM,CAACuS,gBAAD,CAAtC,EAA0D;AACxDpiB,IAAAA,KAAK,GAAI,KAAIA,KAAM,IAAnB;AACD;;AACD,SAAOA,KAAP;AACD,CAtBD;;AC7NA,iBAAe,CAAC;AAAEsc,EAAAA,MAAF;AAAUC,EAAAA;AAAV,CAAD,KAA6B;AAC1C,MAAI,CAACxL,OAAO,CAACuL,MAAD,CAAZ,EAAsB,OAAO,EAAP;AAEtB,MAAIpD,GAAG,GAAG,CAAE,iBAAF,CAAV;AAEAqD,EAAAA,WAAW,CAAC/d,OAAZ,CAAoBgD,EAAE,IAAI;AACxB0X,IAAAA,GAAG,CAAC7R,IAAJ,CAAU,UAAS7F,EAAG,MAAK8a,MAAM,CAAC9a,EAAD,CAAK,EAAtC;AACD,GAFD;AAIA,SAAO0X,GAAG,CAAC3Z,IAAJ,CAAS,IAAT,CAAP;AACD,CAVD;;ACaA,IAAIgjB,KAAK,GAAI/R,GAAD,IAAS,eAAejF,IAAf,CAAoBiF,GAApB,CAArB;;AAEA,SAASgS,cAAT,CAAwBxY,IAAxB,EAA8BzC,MAA9B,EAAsC0C,KAAtC,EAA6C;AAC3C,MAAIiG,MAAM,GAAG+E,SAAS,CAACjL,IAAD,EAAOzC,MAAP,CAAtB;;AAEA,MAAI2I,MAAM,KAAKqS,KAAK,CAACvY,IAAI,CAAChK,KAAN,CAAL,IAAqBgK,IAAI,CAACsI,IAAL,CAAUC,IAApC,CAAV,EAAqD;AACnD,WAAOzC,IAAI,CAACgD,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAnB,CAAX;AACD,GAFD,MAEO,IAAIsY,KAAK,CAACvY,IAAI,CAAChK,KAAN,CAAL,IAAqBgK,IAAI,CAACsI,IAAL,CAAUC,IAAnC,EAAyC;AAC9C,QAAIvI,IAAI,CAACsH,YAAL,IAAqB,CAACiR,KAAK,CAACvY,IAAI,CAACsH,YAAN,CAA/B,EAAoD;AAClDrH,MAAAA,KAAK,CAACwY,KAAN,CAAYjkB,OAAZ,CAAqBC,IAAD,IAAU;AAC5B,YAAIA,IAAI,CAAC6S,YAAL,KAAsBtH,IAAI,CAACsH,YAA/B,EAA6C;AAC3C7S,UAAAA,IAAI,CAAC6C,IAAL,GAAY,QAAZ;AACA,cAAI+G,IAAI,GAAG6M,WAAW,CAACzW,IAAI,CAAC6S,YAAN,CAAtB;;AACA,cAAI,CAACrH,KAAK,CAAC+K,MAAN,CAAa1U,QAAb,CAAsB7B,IAAI,CAAC6S,YAA3B,CAAL,EAA+C;AAC7CrH,YAAAA,KAAK,CAAC+K,MAAN,CAAa3N,IAAb,CAAkB;AAChBgB,cAAAA,IADgB;AAEhB9G,cAAAA,IAAI,EAAE9C,IAAI,CAAC6S;AAFK,aAAlB;AAID;;AACD7S,UAAAA,IAAI,CAAC6S,YAAL,GAAoBjJ,IAApB;AACD;AACF,OAZD;AAaD;;AACD,WAAOmK,IAAI,CAACxI,IAAI,CAAChK,KAAN,CAAX;AACD,GAjBM,MAiBA;AACL,QAAIkQ,MAAJ,EAAY;AACV2E,MAAAA,gBAAgB,CAAC5K,KAAD,EAAQiG,MAAM,CAACwD,WAAf,EAA4BxD,MAAM,CAAC4E,KAAnC,CAAhB;AACD;;AACD,QAAIzM,IAAI,GAAG6M,WAAW,CAAClL,IAAI,CAAChK,KAAN,CAAtB;;AACA,QAAI,CAACiK,KAAK,CAAC+K,MAAN,CAAa1U,QAAb,CAAsB0J,IAAI,CAAChK,KAA3B,CAAL,EAAwC;AACtCiK,MAAAA,KAAK,CAAC+K,MAAN,CAAa3N,IAAb,CAAkB;AAChBgB,QAAAA,IADgB;AAEhB9G,QAAAA,IAAI,EAAEyI,IAAI,CAAChK;AAFK,OAAlB;AAID;;AACD,WAAOkQ,MAAM,GACTJ,IAAI,CACF2D,uBAAuB,CAACvD,MAAM,CAAC6C,WAAR,EAAqB7C,MAAM,CAACwD,WAA5B,EAAyCrL,IAAzC,CADrB,CADK,GAIR,IAAGA,IAAK,GAJb;AAKD;AACF;;AAED,IAAIqK,cAAY,GAAG,2DAAnB;AACA,IAAIgQ,cAAc,GAAG,wBAArB;AAEA,AAAe,SAASnK,mBAAT,CAA6BvO,IAA7B,EAAmCzC,MAAnC,EAA2C0C,KAA3C,EAAkD;AAC/D,MACEA,KAAK,CAACgJ,IAAN,KACCjJ,IAAI,CAAChK,KAAL,KAAe,cAAf,IACCgK,IAAI,CAAChK,KAAL,KAAe,aADhB,IAECgK,IAAI,CAAChK,KAAL,KAAe,gBAFhB,IAGCgK,IAAI,CAAChK,KAAL,KAAe,gBAHhB,IAICgK,IAAI,CAAChK,KAAL,KAAe,iBAJhB,IAKCgK,IAAI,CAAChK,KAAL,KAAe,wBALhB,IAMCgK,IAAI,CAAChK,KAAL,KAAe,eANhB,IAOCgK,IAAI,CAAChK,KAAL,KAAe,sBAPhB,IAQCgK,IAAI,CAAChK,KAAL,KAAe,gBATjB,CADF,EAWE;AACA,WAAO;AACL,OAACgK,IAAI,CAAC3B,IAAN,GAAc,IAAG2B,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CAAmB,QAAnB,EAA6B,OAA7B,CAAsC;AADlD,KAAP;AAGD,GAfD,MAeO,IAAI,0BAA0BoK,IAA1B,CAA+BvB,IAAI,CAAChK,KAApC,CAAJ,EAAgD;AACrD,QAAIkS,QAAQ,GAAGC,WAAW,CAACnI,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAA1B;AACAA,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,IAAAA,KAAK,CAACkJ,OAAN,GAAgB,IAAhB;AAEA,WAAO;AACL,OAACnJ,IAAI,CAAC3B,IAAN,GAAc,IAAG2B,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CACf,sBADe,EAEd,aAAY+Q,QAAS,IAFP,CAGf;AAJG,KAAP;AAMD,GAXM,MAWA,IAAIgB,oBAAoB,CAAC3L,MAAD,CAApB,IAAgCmL,cAAY,CAACnH,IAAb,CAAkBvB,IAAI,CAAChK,KAAvB,CAApC,EAAmE;AACxE,WAAO;AACL,OAACgK,IAAI,CAAC3B,IAAN,GAAc,IAAG2B,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CAAmB,QAAnB,EAA6B,aAA7B,CAA4C;AADxD,KAAP;AAGD,GAJM,MAIA,IAAIyT,aAAa,CAAC5K,IAAD,EAAOzC,MAAP,CAAjB,EAAiC;AACtC,WAAO;AACLvJ,MAAAA,GAAG,EAAEwkB,cAAc,CAACxY,IAAD,EAAOzC,MAAP,EAAe0C,KAAf;AADd,KAAP;AAGD,GAJM,MAIA,IAAI1C,MAAM,CAAC6M,OAAP,IAAkBpK,IAAI,CAAC3B,IAAL,KAAc,YAApC,EAAkD;AACvD,WAAO;AACLsa,MAAAA,QAAQ,EAAEnQ,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AADT,KAAP;AAGD,GAJM,MAIA,IAAI8I,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAtB,EAA6C;AAClD,WAAO;AACL,OAACD,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACM,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAnB;AADZ,KAAP;AAGD,GAJM,MAIA,IAAI,WAAWsB,IAAX,CAAgBvB,IAAI,CAAC3B,IAArB,KAA8B2B,IAAI,CAACiI,QAAL,KAAkB,WAApD,EAAiE;AACtE,QAAIC,QAAQ,GAAGC,WAAW,CAACnI,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAA1B;AACAA,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,IAAAA,KAAK,CAACoI,SAAN,GAAkB,IAAlB;AAEA,QAAI7J,GAAG,GAAG;AACR,OAACwB,IAAI,CAAC3B,IAAN,GAAc,qBAAoB6J,QAAS;AADnC,KAAV;;AAIA,QAAI,CAAC3K,MAAM,CAAC6M,OAAR,IAAmBsO,cAAc,CAACnX,IAAf,CAAoBvB,IAAI,CAAC3B,IAAzB,CAAvB,EAAuD;AACrD4B,MAAAA,KAAK,CAACkJ,OAAN,GAAgB,IAAhB;AACA3K,MAAAA,GAAG,CACDwB,IAAI,CAAC3B,IAAL,CAAUlH,OAAV,CAAkBuhB,cAAlB,EAAkC,YAAlC,CADC,CAAH,GAEK,cAAaxQ,QAAS,KAF3B;AAGD;;AAED,QAAI3K,MAAM,CAAC6M,OAAP,IAAkBsO,cAAc,CAACnX,IAAf,CAAoBvB,IAAI,CAAC3B,IAAzB,CAAtB,EAAsD;AACpD4B,MAAAA,KAAK,CAACiQ,YAAN,GAAqB,IAArB;AACA1R,MAAAA,GAAG,CAAC,KAAD,CAAH,GAAc,GAAEwB,IAAI,CAAC3B,IAAL,CAAUlH,OAAV,CAAkBuhB,cAAlB,EAAkC,WAAlC,CAA+C,MAA/D;AACD;;AAED,WAAOla,GAAP;AACD,GAtBM,MAsBA,IAAIjB,MAAM,CAAC6M,OAAP,IAAkBsO,cAAc,CAACnX,IAAf,CAAoBvB,IAAI,CAAC3B,IAAzB,CAAtB,EAAsD;AAC3D4B,IAAAA,KAAK,CAACiQ,YAAN,GAAqB,IAArB;AACA,WAAO;AACL,aAAQ,GAAElQ,IAAI,CAAC3B,IAAL,CAAUlH,OAAV,CAAkBuhB,cAAlB,EAAkC,WAAlC,CAA+C,MADpD;AAEL,OAAC1Y,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AAFZ,KAAP;AAID,GANM,MAMA,IACL0I,cAAY,CAACnH,IAAb,CAAkBvB,IAAI,CAAChK,KAAvB,KACA,CAAC,CAACqT,mBAAmB,CAAC9L,MAAD,CADrB,IAEA,CAACA,MAAM,CAAC6M,OAHH,EAIL;AACA;AACA;AACA,QAAI,YAAY7I,IAAZ,CAAiBvB,IAAI,CAAChK,KAAtB,CAAJ,EAAkC;AAChC,aAAO;AACL,SAACgK,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CAAmB,QAAnB,EAA6B,EAA7B,CAAD,EAAmC6I,IAAnC;AADZ,OAAP;AAGD,KAJD,MAIO,IAAI,aAAauB,IAAb,CAAkBvB,IAAI,CAAChK,KAAvB,CAAJ,EAAmC;AACxC,UAAI4iB,gBAAgB,GAAGvP,mBAAmB,CAAC9L,MAAD,CAA1C;AACA,UAAIsb,cAAc,GAChB7R,OAAO,CAAC4R,gBAAD,EAAmB,SAAnB,CAAP,IACA5R,OAAO,CAAC4R,gBAAD,EAAmB,MAAnB,CAFT;;AAGA,UAAI,CAACC,cAAc,CAACvR,YAApB,EAAkC;AAChC,eAAO;AACL,WAACtH,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AADZ,SAAP;AAGD;;AAED,UAAIkI,QAAQ,GAAGC,WAAW,CAAC0Q,cAAD,EAAiBD,gBAAjB,EAAmC3Y,KAAnC,CAA1B;AACAA,MAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,MAAAA,KAAK,CAACkJ,OAAN,GAAgB,IAAhB;AACA,aAAO;AACL,SAACnJ,IAAI,CAAC3B,IAAN,GAAc,cAAa6J,QAAS;AAD/B,OAAP;AAGD,KAjBM,MAiBA;AACL,aAAO;AACL,SAAClI,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AADZ,OAAP;AAGD;AACF,GAjCM,MAiCA;AACL,WAAO;AACL,OAACA,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AADZ,KAAP;AAGD;AACF;;ACrKc,SAAS8Y,aAAT,CAAuB;AACpCC,EAAAA,OADoC;AAEpCjZ,EAAAA,eAFoC;AAGpC9L,EAAAA,GAHoC;AAIpC8F,EAAAA,IAJoC;AAKpCgC,EAAAA,SALoC;AAMpCrC,EAAAA;AANoC,CAAvB,EAOZ;AACD,SAAO,SAASuf,SAAT,CAAmBxhB,EAAnB,EAAuB6Y,MAAvB,EAA+B;AACpC,QAAI0I,OAAO,CAACvhB,EAAD,CAAX,EAAiB,OAAOuhB,OAAO,CAACvhB,EAAD,CAAd;AAEjB,QAAIyhB,cAAc,GAAGnZ,eAAe,CAACtI,EAAD,EAAKsC,IAAI,CAACvC,IAAV,CAApC;AACA,QAAI0hB,cAAJ,EAAoB,OAAOA,cAAP;AAEpB,QAAI5c,UAAU,GAAGR,qBAAqB,CAAC;AACrCrE,MAAAA,EADqC;AAErCsC,MAAAA,IAFqC;AAGrCgC,MAAAA,SAHqC;AAIrCrC,MAAAA;AAJqC,KAAD,CAAtC;;AAMA,QAAI,CAAC4C,UAAL,EAAiB;AACf,UAAIhE,KAAK,GAAI,SAAQb,EAAG,0BACtBsC,IAAI,CAACtC,EACN;2BACoBsC,IAAI,CAACtC,EAAG,OAAMsC,IAAI,CAACvC,IAAK;+DACY5C,IAAI,CAACY,IAAL,CACvDZ,IAAI,CAACC,OAAL,CAAakF,IAAI,CAACvC,IAAlB,CADuD,EAEvDC,EAFuD,EAGvD,aAHuD,CAIvD;;IAEJA,EAAG;;CAVD;AAcA3B,MAAAA,OAAO,CAACwC,KAAR,CAAc6gB,KAAK,CAACC,GAAN,CAAU9gB,KAAV,CAAd;AAEA,aAAQ,iBAAgBqF,IAAI,CAACC,SAAL,CAAetF,KAAf,CAAsB;WACzCb,EAAG;oBACMkG,IAAI,CAACC,SAAL,CAAetF,KAAf,CAAsB;EAFpC;AAID;;AAED,QAAI+gB,UAAU,GAAG/c,UAAU,CAAC9E,IAA5B;;AAEA,QAAI8E,UAAU,CAACgd,KAAf,EAAsB;AACpBD,MAAAA,UAAU,GAAG/c,UAAU,CAACgd,KAAxB;AACD,KAFD,MAEO,IAAI,CAAChd,UAAU,CAACtC,MAAhB,EAAwB;AAC7Bqf,MAAAA,UAAU,GAAGzkB,IAAI,CAACY,IAAL,CAAUZ,IAAI,CAACC,OAAL,CAAawkB,UAAb,CAAV,EAAoC,SAApC,CAAb;AACD;;AACD,QAAIE,UAAU,GAAG7hB,UAAU,CAACqC,IAAI,CAACvC,IAAN,EAAY6hB,UAAZ,EAAwBplB,GAAxB,CAA3B;AAEA,WAAOqc,MAAM,GACR,OAAM7Y,EAAG,+BAA8B8hB,UAAW,KAD1C,GAER,UAAS9hB,EAAG,UAAS8hB,UAAW,GAFrC;AAGD,GA/CD;AAgDD;;AC7DD,sBAAe,CACb,OADa,EAEb,SAFa,EAGb,iBAHa,EAIb,UAJa,EAKb,QALa,EAMb,YANa,EAOb,OAPa,EAQb,MARa,EASb,mBATa,EAUb,0BAVa,EAWb,QAXa,EAYb,KAZa,EAab,WAba,EAcb,SAda,EAeb,YAfa,EAgBb,UAhBa,EAiBb,SAjBa,EAkBb,mBAlBa,EAmBb,SAnBa,EAoBb,YApBa,EAqBb,aArBa,EAsBb,mBAtBa,EAuBb,SAvBa,EAwBb,SAxBa,EAyBb,WAzBa,EA0Bb,SA1Ba,EA2Bb,QA3Ba,EA4Bb,OA5Ba,EA6Bb,MA7Ba,EA8Bb,QA9Ba,EA+Bb,UA/Ba,EAgCb,MAhCa,CAAf;;ACAA,eAAe,CAAC;AAAErZ,EAAAA,KAAF;AAAS5B,EAAAA;AAAT,CAAD,KAAqB;AAClC,MAAIgC,MAAM,GAAGJ,KAAK,CAACI,MAAN,CAAa9K,IAAb,CAAkB,IAAlB,CAAb;AAEA,MAAIgkB,QAAQ,GAAG,EAAf;;AACA,MAAItZ,KAAK,CAAC8R,UAAV,EAAsB;AACpB9c,IAAAA,MAAM,CAACC,IAAP,CAAY+K,KAAK,CAAC+R,UAAlB,EAA8Bxd,OAA9B,CAAuCglB,OAAD,IAAa;AACjDvkB,MAAAA,MAAM,CAACiI,MAAP,CAAc+C,KAAK,CAAC+R,UAAN,CAAiBwH,OAAjB,CAAd,EAAyChlB,OAAzC,CAAkDC,IAAD,IAAU;AACzD,YAAI;AAAE+U,UAAAA,KAAF;AAAS,aAAGiQ;AAAZ,YAA6BhlB,IAAI,CAAC8U,SAAL,CAAenC,UAAhD;AAEA,YAAI,CAACnH,KAAK,CAAC8S,aAAP,IAAwBvJ,KAAK,KAAK,QAAtC,EAAgD;AAEhD,YAAIkQ,MAAM,GAAG,CAAC,GAAD,EAAM,aAAN,CAAb;AACAzkB,QAAAA,MAAM,CAACiG,OAAP,CAAeue,YAAf,EAA6BjlB,OAA7B,CAAqC,CAAC,CAACsS,CAAD,EAAIzQ,CAAJ,CAAD,KAAY;AAC/CqjB,UAAAA,MAAM,CAACrc,IAAP,CAAa,GAAEyJ,CAAE,KAAIpJ,IAAI,CAACC,SAAL,CAAetH,CAAf,CAAkB,GAAvC;AACD,SAFD;;AAIA,YAAImT,KAAK,KAAK,QAAV,IAAsBA,KAAK,KAAK,QAApC,EAA8C;AAC5CkQ,UAAAA,MAAM,CAACrc,IAAP,CAAa,oBAAmBmM,KAAK,CAACrS,OAAN,CAAc,MAAd,EAAsB,WAAtB,CAAmC,GAAnE;AACD;;AACDuiB,QAAAA,MAAM,CAACrc,IAAP,CAAY,IAAZ;AAEA,YAAIsc,OAAO,GAAG,EAAd;AACA,YAAIC,SAAS,GAAG,EAAhB;AACA3kB,QAAAA,MAAM,CAACiI,MAAP,CAAczI,IAAI,CAACkX,KAAnB,EAA0BnX,OAA1B,CAAmC2S,IAAD,IAAU;AAC1CA,UAAAA,IAAI,CAACjB,MAAL,CAAY4B,OAAZ;AAEA,cAAI9R,KAAK,GAAGmR,IAAI,CAACjB,MAAL,CAAYuG,MAAZ,CACV,CAACoN,OAAD,EAAUzT,KAAV,KACG,SAAQA,KAAK,CAAC/H,IAAK,KAAIX,IAAI,CAACC,SAAL,CACtByI,KAAK,CAACpQ,KADgB,CAEtB,MAAK6jB,OAAQ,EAJP,EAKVnc,IAAI,CAACC,SAAL,CAAewJ,IAAI,CAACnR,KAApB,CALU,CAAZ;AAQA2jB,UAAAA,OAAO,CAACtc,IAAR,CAAc,GAAEK,IAAI,CAACC,SAAL,CAAewJ,IAAI,CAAC9I,IAApB,CAA0B,KAAIrI,KAAM,EAApD;AACA4jB,UAAAA,SAAS,CAACvc,IAAV,CACG,GAAEK,IAAI,CAACC,SAAL,CAAewJ,IAAI,CAAC9I,IAApB,CAA0B,KAAIX,IAAI,CAACC,SAAL,CAC/BwJ,IAAI,CAACjB,MAAL,CAAY,CAAZ,EAAelQ,KADgB,CAE/B,EAHJ;AAKD,SAjBD;AAmBA0jB,QAAAA,MAAM,CAACrc,IAAP,CAAa,YAAWuc,SAAS,CAACrkB,IAAV,CAAe,GAAf,CAAoB,IAA5C;AACAmkB,QAAAA,MAAM,CAACrc,IAAP,CAAa,UAASsc,OAAO,CAACpkB,IAAR,CAAa,GAAb,CAAkB,IAAxC;AACAmkB,QAAAA,MAAM,CAACrc,IAAP,CAAY,GAAZ;AAEAkc,QAAAA,QAAQ,CAAClc,IAAT,CACG,eAAcmc,OAAQ,GACrB/kB,IAAI,CAACkI,KAAL,GAAa,CAAb,GAAiBlI,IAAI,CAACkI,KAAtB,GAA8B,EAC/B,gBAAe+c,MAAM,CAACnkB,IAAP,CAAY,IAAZ,CAAkB,GAHpC;AAKD,OA7CD;AA8CD,KA/CD;AAgDD;;AAED,MAAIiH,IAAI,GAAG,EAAX;;AACA,MACEyD,KAAK,CAACkJ,OAAN,IACClJ,KAAK,CAACzD,IAAN,KAAe,UAAf,IAA6ByD,KAAK,CAAC6Z,IAAN,CAAWxjB,QAAX,CAAoB,cAApB,CAFhC,EAGE;AACAkG,IAAAA,IAAI,CAACa,IAAL,CAAW,+BAAX;AACD;;AACD,MAAI4C,KAAK,CAACoI,SAAV,EAAqB;AACnB7L,IAAAA,IAAI,CAACa,IAAL,CAAW,yCAAX;AACD;;AACD,MAAI4L,IAAI,GAAG,EAAX;;AACA,MAAIhJ,KAAK,CAACgJ,IAAV,EAAgB;AACdA,IAAAA,IAAI,CAAC5L,IAAL,CAAW,wCAAuC4C,KAAK,CAACgJ,IAAN,CAAWtU,IAAK,KAAlE;AACAolB,IAAAA,gBAAgB,CAAC9Z,KAAK,CAACgJ,IAAP,EAAaA,IAAb,CAAhB;AACA+Q,IAAAA,eAAe,CAAC/Z,KAAK,CAACga,UAAP,EAAmBhR,IAAnB,CAAf;AACAiR,IAAAA,iBAAiB,CAACja,KAAK,CAACka,YAAP,EAAqBlR,IAArB,CAAjB;AACAA,IAAAA,IAAI,CAAC5L,IAAL,CAAU,IAAV;AACD;;AAED,MAAI4C,KAAK,CAAC4U,OAAV,EAAmB;AACjB,WAAQ,wBAAuBxW,IAAK;;;cAG1BgC,MAAO;;EAHjB;AAMD,GAPD,MAOO;AACL,QAAI7B,GAAG,GAAG6B,MAAM,GAAI,IAAGA,MAAO,GAAd,GAAmB,IAAnC;AAEA,WAAQ,2BAA0BhC,IAAK;MACrC4B,KAAK,CAACma,WAAN,GAAoB,8BAApB,GAAqD,EAAG;MAExDna,KAAK,CAACiQ,YAAN,GACI,yEADJ,GAEI,EACL;MACCjQ,KAAK,CAACoa,UAAN,GAAmB,4BAAnB,GAAkD,EAAG;MACrDd,QAAQ,CAAChkB,IAAT,CAAc,IAAd,CAAoB;MACpBiH,IAAI,CAACjH,IAAL,CAAU,IAAV,CAAgB;MAChB0T,IAAI,CAAC1T,IAAL,CAAU,IAAV,CAAgB;;WAEXiJ,GAAI;EAZX;AAcD;AACF,CAnGD;;AAqGA,SAASub,gBAAT,CAA0BO,cAA1B,EAA0CrR,IAA1C,EAAgD;AAC9C,MAAIqR,cAAc,CAACC,OAAf,KAA2B,IAA/B,EAAqC;AAErCtR,EAAAA,IAAI,CAAC5L,IAAL,CAAW,aAAYid,cAAc,CAACC,OAAQ,IAA9C;AACD;;AACD,SAASP,eAAT,CAAyBvF,MAAzB,EAAiCxL,IAAjC,EAAuC;AACrC,MAAI,CAACwL,MAAL,EAAa;;AAEb,MAAIA,MAAM,CAAC+F,QAAX,EAAqB;AACnBvR,IAAAA,IAAI,CAAC5L,IAAL,CAAW,cAAaoX,MAAM,CAAC+F,QAAS,IAAxC;AACD;;AAED,MAAI/F,MAAM,CAACgG,SAAX,EAAsB;AACpBxR,IAAAA,IAAI,CAAC5L,IAAL,CAAW,eAAcoX,MAAM,CAACgG,SAAU,IAA1C;AACD;AACF;;AACD,SAASP,iBAAT,CAA2BQ,QAA3B,EAAqCzR,IAArC,EAA2C;AACzC,MAAI,CAACyR,QAAD,IAAaA,QAAQ,CAACpjB,IAAT,KAAkB,IAAnC,EAAyC;AACzC2R,EAAAA,IAAI,CAAC5L,IAAL,CAAW,cAAaqd,QAAQ,CAAC1kB,KAAM,IAAvC;;AACA,MAAI0kB,QAAQ,CAACC,QAAb,EAAuB;AACrB1R,IAAAA,IAAI,CAAC5L,IAAL,CAAU,yBAAV;AACD;AACF;;AC3HD,IAAIM,SAAS,GAAG4K,IAAI,IAAI;AACtB,MAAIA,IAAI,CAACjR,IAAL,KAAc,OAAlB,EAA2B;AACzB,WAAOoG,IAAI,CAACC,SAAL,CAAe,EAAf,CAAP;AACD,GAFD,MAEO,IAAI,WAAW4D,IAAX,CAAgBgH,IAAI,CAACjB,YAArB,KAAsCiB,IAAI,CAACjR,IAAL,KAAc,QAAxD,EAAkE;AACvE,WAAOiR,IAAI,CAACjB,YAAZ;AACD,GAFM,MAEA;AACL,WAAO5J,IAAI,CAACC,SAAL,CAAe4K,IAAI,CAACjB,YAApB,CAAP;AACD;AACF,CARD;;AAUA,uBAAe,CAAC;AAAErH,EAAAA,KAAF;AAAS5B,EAAAA;AAAT,CAAD,KAAqB;AAClC,MAAIoa,KAAK,GAAGxY,KAAK,CAACwY,KAAN,CACTtjB,MADS,CACFoT,IAAI,IAAIA,IAAI,CAACjB,YAAL,KAAsB,KAD5B,EAET/S,GAFS,CAELgU,IAAI,IAAK,GAAEA,IAAI,CAAClK,IAAK,KAAIV,SAAS,CAAC4K,IAAD,CAAO,EAFpC,CAAZ;AAIA,SAAOkQ,KAAK,CAAChb,MAAN,KAAiB,CAAjB,GACH,EADG,GAEF,GAAEY,IAAK,oBAAmBoa,KAAK,CAACljB,IAAN,CAAW,KAAX,CAAkB,GAFjD;AAGD,CARD;;ACVA,UAAe,CACb,KADa,EAEb,WAFa,EAGb,YAHa,EAIb,SAJa,EAKb,UALa,EAMb,mBANa,EAOb,mBAPa,EAQb,SARa,EASb,SATa,EAUb,YAVa,EAWb,aAXa,EAYb,SAZa,EAab,WAba,EAcb,SAda,EAeb,QAfa,EAgBb,SAhBa,EAiBb,SAjBa,CAAf;;ACEA,IAAIqlB,MAAM,GAAG,CACX,UADW,EAEX,OAFW,EAGX,sBAHW,EAIX,UAJW,EAKX,YALW,EAMX,YANW,EAOX,MAPW,EAQX,WARW,EASX,0BATW,EAUX,oBAVW,EAWX,MAXW,CAAb;;AAcA,IAAIC,kBAAkB,GAAG,CAAC7hB,CAAD,EAAIC,CAAJ,KAAU;AACjC,SAAOD,CAAC,KAAKC,CAAN,GAAU,CAAV,GAAcD,CAAC,GAAGC,CAAJ,GAAQ,CAAC,CAAT,GAAa,CAAlC;AACD,CAFD;;AAIA,SAAS6hB,aAAT,CAAuBvkB,IAAvB,EAA6B;AAC3B,SAAOA,IAAI,CAACpB,MAAL,CAAY0S,OAAZ,EAAqB9O,IAArB,CAA0B8hB,kBAA1B,CAAP;AACD;;AAED,uBAAe,CAAC5a,KAAD,EAAQ+Y,SAAR,KAAsB;AACnC,MAAI+B,UAAU,GAAG,EAAjB;AACA,MAAIC,OAAO,GAAG,EAAd;;AAEA,MAAIC,SAAS,GAAGrlB,CAAC,IAAI;AACnB,QAAI,CAACmlB,UAAU,CAACzkB,QAAX,CAAoBV,CAApB,CAAL,EAA6B;AAC3BmlB,MAAAA,UAAU,CAAC1d,IAAX,CAAgBzH,CAAhB;AACD;AACF,GAJD;;AAKA,MAAIslB,MAAM,GAAGtlB,CAAC,IAAI;AAChB,QAAI,CAAColB,OAAO,CAAC1kB,QAAR,CAAiBV,CAAjB,CAAL,EAA0B;AACxBolB,MAAAA,OAAO,CAAC3d,IAAR,CAAazH,CAAb;AACD;AACF,GAJD;;AAMA,MAAIulB,YAAY,GAAG,CAAE,2BAAF,CAAnB;AACA,MAAIC,gBAAgB,GAAG,EAAvB;AACA,MAAIC,wBAAwB,GAAG,EAA/B;AACA,MAAIC,kBAAkB,GAAG,EAAzB;AAEArb,EAAAA,KAAK,CAAC6Z,IAAN,CAAW/gB,IAAX,GAAkBvE,OAAlB,CAA0BoB,CAAC,IAAI;AAC7B,QAAIqK,KAAK,CAAC8S,aAAN,IAAuB6H,MAAM,CAACtkB,QAAP,CAAgBV,CAAhB,CAA3B,EAA+C;AAC7CqlB,MAAAA,SAAS,CAACrlB,CAAD,CAAT;AACD,KAFD,MAEO,IAAIqK,KAAK,CAAC8S,aAAN,IAAuBwI,GAAG,CAACjlB,QAAJ,CAAaV,CAAb,CAA3B,EAA4C;AACjDslB,MAAAA,MAAM,CACJtlB,CAAC,KAAK,KAAN,GACIA,CADJ,GAEIA,CAAC,KAAK,UAAN,GACC,eADD,GAEC,GAAEA,CAAC,CAACuB,OAAF,CAAU,KAAV,EAAiB,EAAjB,CAAqB,OAAMvB,CAAE,EALhC,CAAN;AAOD,KARM,MAQA,IAAIA,CAAC,KAAK,OAAV,EAAmB,CAAnB,MACA,IAAI,SAAS2L,IAAT,CAAc3L,CAAd,CAAJ,EAAsB;AAC3B,UAAI4lB,eAAe,GAAGxC,SAAS,CAACpjB,CAAD,EAAIqK,KAAK,CAACwb,IAAN,CAAW7lB,CAAX,CAAJ,CAA/B;;AAEA,UAAI4lB,eAAe,CAACxjB,UAAhB,CAA2B,SAA3B,CAAJ,EAA2C;AACzCmjB,QAAAA,YAAY,CAAC9d,IAAb,CAAkBme,eAAlB;AACD,OAFD,MAEO,IAAIA,eAAe,CAACxjB,UAAhB,CAA2B,MAA3B,CAAJ,EAAwC;AAC7CojB,QAAAA,gBAAgB,CAAC/d,IAAjB,CAAsBme,eAAtB;AACD,OAFM,MAEA;AACLF,QAAAA,kBAAkB,CAACje,IAAnB,CAAwBme,eAAxB;AACD;;AAED,UAAI,aAAaja,IAAb,CAAkBia,eAAlB,CAAJ,EAAwC;AACtCH,QAAAA,wBAAwB,CAAChe,IAAzB,CAA+B,GAAEzH,CAAE,mBAAkBA,CAAE,QAAvD;AACD;AACF;AACF,GA3BD;;AA6BA,MAAIqK,KAAK,CAAC8S,aAAV,EAAyB,CAAzB,MAGO;AACL9S,IAAAA,KAAK,CAACnH,KAAN,CAAYtE,OAAZ,CAAoBknB,QAAQ,IAC1BP,YAAY,CAAC9d,IAAb,CAAkB4C,KAAK,CAAC0b,aAAN,CAAoBD,QAAQ,CAAClkB,EAA7B,CAAlB,CADF;AAGD,GAxDkC;AA2DnC;;;AACAyI,EAAAA,KAAK,CAAC+K,MAAN,CAAaxW,OAAb,CAAqBonB,GAAG,IACtBT,YAAY,CAAC9d,IAAb,CAAmB,UAASue,GAAG,CAACvd,IAAK,UAASud,GAAG,CAACrkB,IAAK,GAAvD,CADF;;AAIA,MAAI0I,KAAK,CAAC2S,UAAN,IAAoB3S,KAAK,CAACwS,SAA9B,EAAyC;AACvC0I,IAAAA,YAAY,CAAC9d,IAAb,CAAkB,+BAAlB;AACA4C,IAAAA,KAAK,CAACkb,YAAN,CAAmBrmB,GAAnB,CAAuB,SAAvB;AACD;;AAED,MAAImL,KAAK,CAAC8R,UAAV,EAAsB;AACpB,QAAIC,UAAU,GAAG,CACf,UADe,EAEf,CAAC/R,KAAK,CAAC6P,kBAAN,IACE7P,KAAK,CAACgT,kBAAN,IAA4BhT,KAAK,CAAC8S,aADrC,KAEE,WAJa,EAKf5d,MALe,CAKR0S,OALQ,CAAjB;;AAOA,QAAImK,UAAU,CAACvU,MAAX,GAAoB,CAAxB,EAA2B;AACzB0d,MAAAA,YAAY,CAAC9d,IAAb,CACG,YAAW2U,UAAU,CAACzc,IAAX,CAAgB,IAAhB,CAAsB,wBADpC;AAIA0K,MAAAA,KAAK,CAACkb,YAAN,CAAmBrmB,GAAnB,CAAuB,cAAvB;;AAEA,UAAImL,KAAK,CAACgT,kBAAN,IAA4BhT,KAAK,CAAC8S,aAAtC,EAAqD;AACnDoI,QAAAA,YAAY,CAAC9d,IAAb,CAAmB,mCAAnB;AACA4C,QAAAA,KAAK,CAACkb,YAAN,CAAmBrmB,GAAnB,CAAuB,SAAvB;AACD;AACF;AACF;;AAED,MAAImL,KAAK,CAAC8S,aAAV,EAAyB;AACvB,SAAK,IAAI8I,SAAT,IAAsB5b,KAAK,CAACsZ,QAA5B,EAAsC;AACpC4B,MAAAA,YAAY,CAAC9d,IAAb,CAAmB,eAAcwe,SAAU,eAAcA,SAAU,GAAnE;AACD;AACF;;AAED,MAAI5b,KAAK,CAACsK,OAAV,EAAmB;AACjB4Q,IAAAA,YAAY,CAAC9d,IAAb,CACG,gEACC4C,KAAK,CAAC8S,aAAN,GAAsB,QAAtB,GAAiC,KAClC,GAHH;AAKA9S,IAAAA,KAAK,CAACkb,YAAN,CAAmBrmB,GAAnB,CAAuB,oBAAvB;AACD;;AAED,MAAIkmB,OAAO,CAACvd,MAAR,GAAiB,CAArB,EAAwB;AACtB,QAAIqe,GAAG,GAAGd,OAAO,CAAC7lB,MAAR,CAAe4mB,CAAC,IAAIA,CAAC,KAAK,KAA1B,EAAiCxmB,IAAjC,CAAsC,IAAtC,CAAV;AACA4lB,IAAAA,YAAY,CAAC9d,IAAb,CAAmB,iBAAgBye,GAAI,4BAAvC;AACD;;AAED,MAAIf,UAAU,CAACtd,MAAX,GAAoB,CAAxB,EAA2B;AACzB0d,IAAAA,YAAY,CAAC9d,IAAb,CACG,YAAW0d,UAAU,CAACxlB,IAAX,CAAgB,IAAhB,CAAsB,YAChC0K,KAAK,CAAC+b,wBACP,GAHH;AAKD;;AAED,MAAI/b,KAAK,CAACma,WAAV,EAAuB;AACrBe,IAAAA,YAAY,CAAC9d,IAAb,CAAkB2b,SAAS,CAAC,kBAAD,CAA3B;AACD;;AAED,MAAI/Y,KAAK,CAACiQ,YAAV,EAAwB;AACtBiL,IAAAA,YAAY,CAAC9d,IAAb,CAAkB2b,SAAS,CAAC,mBAAD,CAA3B;AACD;;AAED,MAAI/Y,KAAK,CAACoa,UAAV,EAAsB;AACpBc,IAAAA,YAAY,CAAC9d,IAAb,CAAkB2b,SAAS,CAAC,iBAAD,CAA3B;AACD;;AAED,SAAO,CACL,GAAG8B,aAAa,CAACK,YAAD,CADX,EAEL,GAAGL,aAAa,CAACM,gBAAD,CAFX,EAGL,GAAGN,aAAa,CAACQ,kBAAD,CAHX,EAIL,GAAGR,aAAa,CAACO,wBAAD,CAJX,EAKL9lB,IALK,CAKA,IALA,CAAP;AAMD,CAzID;;ACxBA,mBAAe,CAAC;AAAEukB,EAAAA;AAAF,CAAD,KAAc;AAC3B,SAAOA,IAAI,CAACxjB,QAAL,CAAc,UAAd,KAA6BwjB,IAAI,CAACxjB,QAAL,CAAc,UAAd,CAA7B,GACF,mEADE,GAEH,EAFJ;AAGD,CAJD;;ACKA,mBAAe,CAAC;AAAE0iB,EAAAA,SAAF;AAAaiD,EAAAA,SAAb;AAAwB5d,EAAAA,IAAxB;AAA8B4B,EAAAA;AAA9B,CAAD,KAA2C;AACxD;AACA;AACA,SAAQ;uCAC6B5B,IAAK;EAC1C6d,eAAe,CAACjc,KAAD,EAAQ+Y,SAAR,CAAmB;;EAElCiD,SAAS,CAAChc,KAAD,EAAQ5B,IAAR,CAAc;EACvB8d,WAAW,CAAClc,KAAD,AAAA,CAAc;;EAEzBmc,OAAO,CAAC;AAAEnc,IAAAA,KAAF;AAAS5B,IAAAA;AAAT,GAAD,CAAkB;EACzBge,eAAe,CAAC;AAAEpc,IAAAA,KAAF;AAAS5B,IAAAA;AAAT,GAAD,CAAkB,EARjC;AASD,CAZD;;ACLe,SAASie,IAAT,CAAcC,GAAd,EAAmB;AAAExc,EAAAA,KAAF;AAASoP,EAAAA;AAAT,CAAnB,EAAqClP,KAArC,EAA4C;AACzDuc,EAAAA,KAAK,CAACD,GAAD,EAAM,IAAN,EAAYxc,KAAZ,EAAmBoP,KAAnB,EAA0BlP,KAA1B,CAAL;AACD;;AAED,SAASuc,KAAT,CAAexc,IAAf,EAAqBzC,MAArB,EAA6BwC,KAA7B,EAAoCoP,KAApC,EAA2ClP,KAA3C,EAAkD;AAChD,MAAI,CAACD,IAAL,EAAW;;AAEX,MAAID,KAAJ,EAAW;AACT,QAAIA,KAAK,CAACoG,IAAN,CAAWsW,EAAE,IAAIA,EAAE,CAACzc,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAnB,CAAJ,EAA+C;AAChD;;AAED,MAAI2G,KAAK,CAACC,OAAN,CAAc7G,IAAI,CAAC2O,QAAnB,CAAJ,EAAkC;AAChC3O,IAAAA,IAAI,CAAC2O,QAAL,CAAcna,OAAd,CAAsBua,KAAK,IAAI;AAC7BA,MAAAA,KAAK,CAACxR,MAAN,GAAeyC,IAAf;AACAwc,MAAAA,KAAK,CAACzN,KAAD,EAAQ/O,IAAR,EAAcD,KAAd,EAAqBoP,KAArB,EAA4BlP,KAA5B,CAAL;AACD,KAHD;AAID;;AAED,MAAIkP,KAAJ,EAAW;AACTA,IAAAA,KAAK,CAAC3a,OAAN,CAAcioB,EAAE,IAAIA,EAAE,CAACzc,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAtB;AACD;AACF;;ACXD,IAAI8Y,OAAO,GAAG;AACZ2D,EAAAA,iBAAiB,EACf;AAFU,CAAd;AAKA,gBAAe,CAAC;AACdf,EAAAA,aADc;AAEd7b,EAAAA,eAFc;AAGd9L,EAAAA,GAHc;AAId8I,EAAAA,KAJc;AAKdhD,EAAAA,IALc;AAMdgC,EAAAA,SANc;AAOdrC,EAAAA;AAPc,CAAD,KAQT;AACJ,MAAI4E,IAAI,GAAGvE,IAAI,CAACtC,EAAhB;AACA,MAAImlB,SAAS,GAAGC,eAAe,CAACtmB,QAAhB,CAAyB+H,IAAzB,IAAkC,GAAEA,IAAK,GAAzC,GAA8CA,IAA9D;AAEA,MAAI4B,KAAK,GAAG;AACVsZ,IAAAA,QAAQ,EAAE,IAAI1kB,GAAJ,EADA;AAEVmd,IAAAA,UAAU,EAAE,EAFF;AAGVY,IAAAA,UAAU,EAAE,KAHF;AAIVH,IAAAA,SAAS,EAAE,KAJD;AAKVxJ,IAAAA,IAAI,EAAEnP,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBmP,IALb;AAMVgR,IAAAA,UAAU,EAAEngB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBmgB,UANnB;AAOVE,IAAAA,YAAY,EAAErgB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBqgB,YAPrB;AAQVgB,IAAAA,YAAY,EAAE,IAAItmB,GAAJ,EARJ;AASV2H,IAAAA,IAAI,EAAE,IATI;AAUV6L,IAAAA,SAAS,EAAE,KAVD;AAWVsT,IAAAA,aAAa,EAAGnlB,IAAD,IAAUmlB,aAAa,CAACnlB,IAAD,EAAOsD,IAAP,CAX5B;AAYVyX,IAAAA,mBAZU;AAaVhD,IAAAA,mBAbU;AAcVsG,IAAAA,OAAO,EAAE,KAdC;AAeV7J,IAAAA,MAAM,EAAE,EAfE;AAgBVyG,IAAAA,SAAS,EAAE,KAhBD;AAiBVsB,IAAAA,aAAa,EAAE,KAjBL;AAkBVzW,IAAAA,OAAO,EAAG9E,EAAD,IAAQ;AACf,UAAI4F,UAAU,GAAGvB,qBAAqB,CAAC;AACrCrE,QAAAA,EADqC;AAErCsC,QAAAA,IAFqC;AAGrCgC,QAAAA,SAHqC;AAIrCrC,QAAAA;AAJqC,OAAD,CAAtC;AAOA,aAAO2D,UAAU,IAAI,CAACA,UAAU,CAACrD,MAA1B,IAAoCqD,UAAU,CAACpD,MAAX,CAAkBF,IAAlB,CAAuBwC,OAAlE;AACD,KA3BS;AA4BVmf,IAAAA,IAAI,EAAE,EA5BI;AA6BVpd,IAAAA,IAAI,EAAEse,SA7BI;AA8BVrf,IAAAA,QAAQ,EAAExD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBwD,QA9BjB;AA+BVE,IAAAA,cAAc,EAAE1D,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB0D,cA/BvB;AAgCV6C,IAAAA,MAAM,EAAE,EAhCE;AAiCViS,IAAAA,MAAM,EAAE,EAjCE;AAkCVC,IAAAA,WAAW,EAAE,EAlCH;AAmCVtF,IAAAA,cAAc,EAAE;AAAE,OAAC0P,SAAD,GAAa,CAAf;AAAkBE,MAAAA,SAAS,EAAE,CAA7B;AAAgCC,MAAAA,MAAM,EAAE,CAAxC;AAA2CC,MAAAA,KAAK,EAAE;AAAlD,KAnCN;AAoCVjD,IAAAA,IAAI,EAAE,EApCI;AAqCV1Z,IAAAA,SAAS,EAAE,aArCD;AAsCVE,IAAAA,WAAW,EAAE,gBAtCH;AAuCV0V,IAAAA,OAAO,EAAE,EAvCC;AAwCVlZ,IAAAA,KAxCU;;AAyCVsL,IAAAA,GAAG,CAACwP,KAAD,EAAQvH,MAAM,GAAG,KAAjB,EAAwB;AACzB,UAAIA,MAAJ,EAAY;AACVpQ,QAAAA,KAAK,CAACwb,IAAN,CAAW7D,KAAX,IAAoB,IAApB;AACD;;AAED,UACE3X,KAAK,CAAC6Z,IAAN,CAAWxjB,QAAX,CAAoBshB,KAApB,KACA,QAAQrW,IAAR,CAAaqW,KAAb,CADA,IAEA,YAAYrW,IAAZ,CAAiBqW,KAAjB,CAFA,IAGA,qBAAqBA,KAHrB,IAIA,+BAA+BA,KALjC,EAOE;;AAEF,UAAIA,KAAK,KAAK+E,SAAd,EAAyB;AACvB1c,QAAAA,KAAK,CAAC5B,IAAN,GAAc,GAAEvE,IAAI,CAACtC,EAAG,GAAEyI,KAAK,CAACgN,cAAN,CAAqB0P,SAArB,GAAkC,EAA5D;AACD;;AAED1c,MAAAA,KAAK,CAAC6Z,IAAN,CAAWzc,IAAX,CAAgBua,KAAhB;AACD,KA5DS;;AA6DVwC,IAAAA,WAAW,EAAEtgB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBsgB,WA7DpB;AA8DVC,IAAAA,UAAU,EAAEvgB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBugB;AA9DnB,GAAZ,CAJI;AAsEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIpa,KAAK,CAACgJ,IAAV,EAAgB;AACdhJ,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACD;;AAED,MAAI/J,IAAI,KAAKse,SAAb,EAAwB;AACtB9mB,IAAAA,OAAO,CAACmnB,IAAR,CACG,MAAK3e,IAAK,iFADb;AAGD;;AAED4B,EAAAA,KAAK,CAACnH,KAAN,GAAcgB,IAAI,CAACE,MAAL,CAAYlB,KAA1B;AACAmH,EAAAA,KAAK,CAACwY,KAAN,GAAc3e,IAAI,CAACE,MAAL,CAAYye,KAA1B;AAEA6D,EAAAA,IAAI,CAACxiB,IAAI,CAACE,MAAL,CAAYF,IAAb,EAAmBmjB,OAAnB,EAA4Bhd,KAA5B,CAAJ;AAEA,SAAO;AACL8U,IAAAA,IAAI,EAAEmI,WAAW,CAAC;AAChBlE,MAAAA,SAAS,EAAEF,aAAa,CAAC;AACvB9kB,QAAAA,GADuB;AAEvB+kB,QAAAA,OAFuB;AAGvBjZ,QAAAA,eAHuB;AAIvBhG,QAAAA,IAJuB;AAKvBgC,QAAAA,SALuB;AAMvBrC,QAAAA;AANuB,OAAD,CADR;AAShBwiB,MAAAA,SATgB;AAUhB5d,MAAAA,IAAI,EAAE4B,KAAK,CAAC5B,IAVI;AAWhB4B,MAAAA;AAXgB,KAAD,CADZ;AAcLkb,IAAAA,YAAY,EAAElb,KAAK,CAACkb,YAdf;AAeL3e,IAAAA,IAAI,EAAEyD,KAAK,CAACzD,IAfP;AAgBL2T,IAAAA,gBAAgB,EAAElQ,KAAK,CAACkQ,gBAhBnB;AAkBL;AACA;;AAnBK,GAAP;AAqBD,CA1HD;;ACbA,IAAIgN,aAAa,GAAG,CAClB,cADkB,EAElB,qBAFkB,EAGlB,sBAHkB,EAIlB,wBAJkB,EAKlB,yBALkB,CAApB;AAQA,AAAO,IAAIpd,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACuX,eAAT,EAA0B;AACxB,QAAI6F,MAAM,GAAG1W,iBAAiB,CAAC;AAAE2W,MAAAA,GAAG,EAAErd,IAAI,CAACuX;AAAZ,KAAD,CAA9B;AAEA,QAAI+F,UAAU,GAAGtW,OAAO,CAAChH,IAAD,EAAO,gBAAP,CAAxB;AACAsd,IAAAA,UAAU,GAAG9U,IAAI,CAAC8U,UAAU,GAAGA,UAAU,CAACtnB,KAAX,CAAiBA,KAApB,GAA4B,OAAvC,CAAjB;AAEAiK,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,eAAcigB,UAAW,YAAWF,MAAO,GAA9D,EANwB;AASxB;;AACAD,IAAAA,aAAa,CAAC3oB,OAAd,CAAsB2S,IAAI,IAAI;AAC5B,UAAII,OAAO,CAACvH,IAAD,EAAOmH,IAAP,CAAX,EAAyB;AACvB,YAAIM,QAAQ,GAAGT,OAAO,CAAChH,IAAD,EAAOmH,IAAP,CAAtB;AACAlH,QAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAG8J,IAAK,KAAIM,QAAQ,CAACzR,KAAT,CAAeA,KAAM,GAApD;AACD;AACF,KALD;AAMD;AACF,CAlBM;;ACRP,IAAIunB,YAAY,GAAG;AACjBvP,EAAAA,KAAK,EAAE,eADU;AAEjBE,EAAAA,MAAM,EAAE,SAFS;AAGjBC,EAAAA,KAAK,EAAE;AAHU,CAAnB;AAMA,AAAO,IAAIpO,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAI,CAACD,IAAI,CAACsK,SAAV,EAAqB;;AAErB,MAAItK,IAAI,CAAC3B,IAAL,KAAc,iBAAlB,EAAqC;AACnC4B,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,mBAAnB;AACD,GAFD,MAEO;AACL,QAAI/F,IAAI,GAAG0P,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAlB,CADK;AAIL;;AACA,QAAI1I,IAAI,CAACtB,KAAL,KAAe,MAAnB,EAA2B;AACzBsB,MAAAA,IAAI,CAACtB,KAAL,GAAa,MAAb;AACD;;AAED,QAAIsB,IAAI,CAACtB,KAAL,KAAe,QAAnB,EAA6B;AAC3BiK,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,kBAAnB;AACD,KAFD,MAEO;AACL,UAAIwI,MAAM,CAACvO,IAAD,CAAV,EAAkB;AAChB,YAAIkmB,mBAAmB,GAAI;YACvBlmB,IAAI,CAACtB,KAAM;eACRunB,YAAY,CAACvP,KAAM;gBAClB1W,IAAI,CAACtB,KAAM;mBACRunB,YAAY,CAACrP,MAAO;kBACrB5W,IAAI,CAACtB,KAAM;qBACRunB,YAAY,CAACpP,KAAM;SANhC;AAQAlO,QAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,kBAAiBmgB,mBAAoB,GAAxD;AACD,OAVD,MAUO,IAAID,YAAY,CAACjmB,IAAI,CAACtB,KAAN,CAAhB,EAA8B;AACnCiK,QAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,kBAAiBkgB,YAAY,CAACjmB,IAAI,CAACtB,KAAN,CAAa,GAA7D;AACD;AACF;AACF;;AAED,MAAIynB,WAAW,GAAGzW,OAAO,CAAChH,IAAD,EAAO,aAAP,CAAzB;;AACA,MAAI,CAACyd,WAAL,EAAkB;AAChBxd,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,sBAAnB;AACD;;AAED,MAAIqgB,qBAAqB,GAAG1W,OAAO,CAAChH,IAAD,EAAO,uBAAP,CAAnC;;AACA,MAAI,CAAC0d,qBAAL,EAA4B;AAC1Bzd,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,sCAAnB;AACD;;AAED,MAAIsgB,iBAAiB,GAAG3W,OAAO,CAAChH,IAAD,EAAO,mBAAP,CAA/B;;AACA,MAAI,CAAC2d,iBAAL,EAAwB;AACtB1d,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,0BAAnB;AACD;AACF,CA/CM;;ACNP,sBAAe,CAAC2C,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AACtC,UAAQD,IAAI,CAAC3B,IAAb;AACE,SAAK,SAAL;AACA,SAAK,iBAAL;AACE,aAAO,WAAP;;AAEF,SAAK,YAAL;AACA,SAAK,UAAL;AACE,aAAOwR,mBAAiB,CAAC7P,IAAD,EAAOC,KAAP,CAAxB;;AAEF,SAAK,MAAL;AACE,aAAO2d,gBAAgB,CAAC5d,IAAD,EAAOC,KAAP,CAAvB;;AAEF,SAAK,MAAL;AACE,UAAID,IAAI,CAAC+R,UAAT,EAAqB;AACnB9R,QAAAA,KAAK,CAACsZ,QAAN,CAAezkB,GAAf,CAAmB,MAAnB;AACA,eAAO,cAAP;AACD,OAHD,MAGO;AACL,eAAO,MAAP;AACD;;AAEH,SAAK,OAAL;AACA,SAAK,MAAL;AACE,aAAO,gBAAP;;AAEF;AACE,aAAOkL,IAAI,CAAC3B,IAAZ;AAzBJ;AA2BD,CA5BD;;AA8BA,IAAIwR,mBAAiB,GAAG,CAAC7P,IAAD,EAAOC,KAAP,KAAiB;AACvC,MAAI5B,IAAI,GAAG,MAAX;;AAEA,MAAI2B,IAAI,CAACE,UAAT,EAAqB;AACnB7B,IAAAA,IAAI,GAAG,gBAAP;AACD,GAFD,MAEO,IAAIkJ,OAAO,CAACvH,IAAD,EAAO,MAAP,CAAX,EAA2B;AAChCA,IAAAA,IAAI,CAACqP,IAAL,GAAY,IAAZ;AACA,QAAI5H,QAAQ,GAAGT,OAAO,CAAChH,IAAD,EAAO,MAAP,CAAtB;AACAA,IAAAA,IAAI,CAACoJ,MAAL,GAAc3B,QAAQ,CAACzR,KAAvB;AACD,GAJM,MAIA,IAAIuR,OAAO,CAACvH,IAAD,EAAO,SAAP,CAAX,EAA8B;AACnC,QAAIyH,QAAQ,GAAGT,OAAO,CAAChH,IAAD,EAAO,SAAP,CAAtB;AACAA,IAAAA,IAAI,CAACoJ,MAAL,GAAc3B,QAAQ,CAACzR,KAAvB;AACD;;AAED,MAAIuR,OAAO,CAACvH,IAAD,EAAO,iBAAP,CAAX,EAAsC;AACpC,QAAIyH,QAAQ,GAAGT,OAAO,CAAChH,IAAD,EAAO,iBAAP,CAAtB;AACAA,IAAAA,IAAI,CAACuX,eAAL,GAAuB1R,MAAM,CAAC4B,QAAD,CAAN,GACnBA,QAAQ,CAACzR,KADU,GAEnB0H,IAAI,CAACC,SAAL,CAAe8J,QAAQ,CAACzR,KAAxB,CAFJ;AAIAqI,IAAAA,IAAI,GAAG,OAAP;AACD,GAPD,MAOO,IAAIkJ,OAAO,CAACvH,IAAD,EAAO,WAAP,EAAoB3J,CAAC,IAAIA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,QAA/C,CAAX,EAAqE;AAC1EgI,IAAAA,IAAI,GAAG,YAAP;AACD;;AAED,MAAI2B,IAAI,CAAC+R,UAAT,EAAqB;AACnB9R,IAAAA,KAAK,CAACsZ,QAAN,CAAezkB,GAAf,CAAmBuJ,IAAnB;AACAA,IAAAA,IAAI,GAAI,WAAUA,IAAK,EAAvB;AACD;;AAED,SAAOA,IAAP;AACD,CA/BD;;AAiCA,IAAIuf,gBAAgB,GAAG,CAAC5d,IAAD,EAAOC,KAAP,KAAiB;AACtC,MAAIhB,IAAI,GAAGsI,OAAO,CAACvH,IAAD,EAAO,WAAP,EAAoB3J,CAAC,IAAIA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,QAA/C,CAAP,GACP,UADO,GAEP,MAFJ;;AAGA,MAAI2J,IAAI,CAAC+R,UAAT,EAAqB;AACnB9R,IAAAA,KAAK,CAACsZ,QAAN,CAAezkB,GAAf,CAAmBmK,IAAnB;AACA,WAAQ,WAAUA,IAAK,EAAvB;AACD,GAHD,MAGO;AACL,WAAOA,IAAP;AACD;AACF,CAVD;;ACxDO,SAASc,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC;AACA,MAAID,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC2O,QAAL,CAAclR,MAAd,KAAyB,CAAhD,EAAmD,OAAO,IAAP;;AACnD,MAAIuC,IAAI,CAACiQ,UAAT,EAAqB;AACnBhQ,IAAAA,KAAK,CAAC2P,yBAAN,GAAkC,IAAlC;AAEA3P,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,sFADH;AAGA,QAAI6S,YAAY,GAAG,CAAC,CAAC7G,mBAAmB,CAACrJ,IAAD,CAAxC;;AACA,QAAIkQ,YAAJ,EAAkB;AAChBjQ,MAAAA,KAAK,CAACiQ,YAAN,GAAqB,IAArB;AACAjQ,MAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB,gCAAlB;AACD;;AACD4C,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,sBAAnB;AAEA,WAAO,IAAP;AACD;;AAED,MAAI2C,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC3B,IAAL,KAAc,MAArC,EAA6C;AAC3C4B,IAAAA,KAAK,CAACzD,IAAN,GAAa6K,qBAAqB,CAACrH,IAAD,EAAO,IAAP,EAAa,KAAb,CAAlC;AACAC,IAAAA,KAAK,CAACkQ,gBAAN,GAAyB,IAAzB;AACD;;AAED,MAAI7T,OAAO,CAAC0D,IAAD,EAAOC,KAAP,CAAX,EAA0B;AACxBA,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACD;;AAED,MAAI/J,IAAI,GAAG+R,cAAY,CAACpQ,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAvB;AACA,MAAI5B,IAAI,KAAK,IAAb,EAAmB,OAAO,IAAP;;AAEnB,MAAIA,IAAI,KAAK,mBAAb,EAAkC;AAChC4B,IAAAA,KAAK,CAACmI,GAAN,CAAU,UAAV;AACA/J,IAAAA,IAAI,GAAG,kBAAP;AACD;;AAED4B,EAAAA,KAAK,CAACmI,GAAN,CAAUpI,IAAI,CAACoK,OAAL,GAAe/L,IAAI,CAAClH,OAAL,CAAa,WAAb,EAA0B,EAA1B,CAAf,GAA+CkH,IAAzD,EAA+D2B,IAAI,CAACqQ,MAApE;AAEArQ,EAAAA,IAAI,CAACwP,SAAL,GAAiBnR,IAAjB;AAEA,MAAIkS,WAAW,CAACvQ,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAf,EAAsC,OAAO,IAAP;;AAEtC,MAAI,CAACD,IAAI,CAACsP,4BAAV,EAAwC;AACtCrP,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,IAAGgB,IAAK,EAA3B;AACD;AACF;;ACvCM,IAAI8Q,OAAK,GAAG,CAACnP,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAT,EAAqB;AAErB,MAAIwT,aAAa,GAAGrH,2BAA2B,CAACrM,IAAD,CAA/C;AACA,MAAI6d,SAAS,GAAG,IAAhB;AACA,MAAIC,aAAa,GAAG,IAApB;AACA,MAAIC,YAAY,GAAG,IAAnB;AACA,MAAIC,cAAc,GAAG,IAArB;;AAEA,MACEhe,IAAI,CAACie,qBAAL,KACC,EAAE,qBAAqBje,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAzC,KACC,EAAE,qBAAqBe,IAAI,CAAC3I,KAAL,CAAWmV,OAAX,CAAmBvN,IAA1C,CAFF,CADF,EAIE;AACAe,IAAAA,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAlB,CAAuBif,eAAvB,GAAyC,aAAzC;AACD;;AAED,MAAInX,OAAO,CAAC/G,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAnB,CAAX,EAAqC;AACnC,QAAIzH,EAAE,GAAGuV,QAAQ,CAAC/M,IAAD,EAAOC,KAAP,CAAjB;;AACA,QACED,IAAI,CAACwP,SAAL,CAAelZ,QAAf,CAAwB,UAAxB,KACAgX,4BAA4B,CAACtN,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAnB,CAF9B,EAGE;AACAgB,MAAAA,KAAK,CAACqS,MAAN,CAAc,GAAE9a,EAAG,kBAAnB,IAAwCgW,6BAA6B,CACnExN,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IADiD,CAArE;AAGAe,MAAAA,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAlB,GAAyBwO,gCAAgC,CACvDzN,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IADqC,CAAzD;AAGA+e,MAAAA,cAAc,GAAI,UAASxmB,EAAG,kBAA9B;AACD;;AACD,QAAIuP,OAAO,CAAC/G,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAAnB,CAAX,EAAqC;AACnCgB,MAAAA,KAAK,CAACqS,MAAN,CAAa9a,EAAb,IAAmBwI,IAAI,CAAC3I,KAAL,CAAW+Z,MAAX,CAAkBnS,IAArC;AACA4e,MAAAA,SAAS,GAAI,UAASrmB,EAAG,EAAzB;AACD;AACF;;AAED,MAAIwI,IAAI,CAAC+R,UAAT,EAAqB;AACnB+L,IAAAA,aAAa,GAAGhS,iBAAiB,CAAC9L,IAAD,EAAOC,KAAK,CAAC8S,aAAb,CAAjC;AAEA9S,IAAAA,KAAK,CAAC8R,UAAN,GAAmB,IAAnB;AACA9R,IAAAA,KAAK,CAAC+R,UAAN,CAAiBhS,IAAI,CAACxI,EAAtB,IAA4BwI,IAAI,CAACgS,UAAjC;;AACA,QAAIhS,IAAI,CAAC8P,kBAAT,EAA6B;AAC3B7P,MAAAA,KAAK,CAAC6P,kBAAN,GAA2B,IAA3B;AACD;;AAED,QAAI9P,IAAI,CAACiT,kBAAT,EAA6B;AAC3BhT,MAAAA,KAAK,CAACgT,kBAAN,GAA2B,IAA3B;AACD;;AACDhT,IAAAA,KAAK,CAACiG,MAAN,GAAelG,IAAI,CAACkG,MAApB;AACD;;AAED,MAAIa,OAAO,CAAC2M,aAAD,CAAX,EAA4B;AAC1B,QACE1T,IAAI,CAACwP,SAAL,CAAelZ,QAAf,CAAwB,UAAxB,KACAgX,4BAA4B,CAACoG,aAAD,CAF9B,EAGE;AACA,UAAIyK,qBAAqB,GAAGzX,iBAAiB,CAC3C8G,6BAA6B,CAACkG,aAAD,CADc,CAA7C;AAGAA,MAAAA,aAAa,GAAGjG,gCAAgC,CAACiG,aAAD,CAAhD;AACAsK,MAAAA,cAAc,GAAGA,cAAc,GAC1B,IAAGA,cAAe,IAAGG,qBAAsB,GADjB,GAE3BA,qBAFJ;AAGD;;AACD,QAAIpX,OAAO,CAAC2M,aAAD,CAAX,EAA4B;AAC1BqK,MAAAA,YAAY,GAAGrX,iBAAiB,CAACgN,aAAD,CAAhC;AACAqK,MAAAA,YAAY,GAAGA,YAAY,CAAChmB,MAAb,CAAoB,CAApB,EAAuBgmB,YAAY,CAACtgB,MAAb,GAAsB,CAA7C,CAAf;AACD;AACF;;AAED,MAAIogB,SAAS,IAAIC,aAAb,IAA8BC,YAAlC,EAAgD;AAC9C,QAAI1mB,KAAK,GAAGwmB,SAAZ;;AACA,QAAIC,aAAJ,EAAmB;AACjB;AACA;AACAzmB,MAAAA,KAAK,GAAI,OAAMwmB,SAAU,IAAGC,aAAc,IAAGC,YAAY,IAAI,EAAG,GAAhE;AACD,KAJD,MAIO,IAAIA,YAAJ,EAAkB;AACvB1mB,MAAAA,KAAK,GAAI,IAAGwmB,SAAU,KAAIE,YAAa,IAAvC;AACD;;AAED9d,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,WAAUhG,KAAM,GAAnC;AACD;;AAED,MAAI2mB,cAAJ,EAAoB;AAClB/d,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAmB,2BAA0B2gB,cAAe,GAA5D;AACD;AACF,CAvFM;;ACfP,IAAI7I,WAAS,GAAG,CACd,WADc,EAEd,iBAFc,EAGd,gBAHc,EAId,WAJc,EAKd,UALc,EAMd,QANc,EAOd,YAPc,EAQd,QARc,EASd,MATc,EAUd,YAVc,EAWd,YAXc,EAYd,eAZc,EAad,UAbc,EAcd,UAdc,EAed,WAfc,EAgBd,WAhBc,EAiBd,iBAjBc,EAkBd,aAlBc,EAmBd,SAnBc,EAoBd,QApBc,EAqBd,cArBc,EAsBd,eAtBc,EAuBd,iBAvBc,EAwBd,kBAxBc,EAyBd,YAzBc,EA0Bd,YA1Bc,EA2Bd,MA3Bc,EA4Bd,YA5Bc,CAAhB;AA+BA,iCAAe,CAACnV,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KACb,CAACkV,WAAS,CAAC7e,QAAV,CAAmB0J,IAAI,CAAC3B,IAAL,CAAUuS,WAAV,EAAnB,CADH;;ACrBO,SAAS7Q,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAT,EAAqB,OAAO,KAAP;AAErBkV,EAAAA,OAAA,CAAsBpV,IAAtB,EAA4BzC,MAA5B,EAAoC0C,KAApC;AACAsV,EAAAA,OAAA,CAAqBvV,IAArB,EAA2BzC,MAA3B,EAAmC0C,KAAnC;AACAuV,EAAAA,OAAA,CAAuBxV,IAAvB,EAA6BzC,MAA7B,EAAqC0C,KAArC;AAEAD,EAAAA,IAAI,CAACoH,UAAL,CAAgB5S,OAAhB,CAAwBiT,QAAQ,IAAI;AAClC,QACEA,QAAQ,CAACpJ,IAAT,KAAkB,MAAlB,IACAoJ,QAAQ,CAACpJ,IAAT,KAAkB,IADlB,IAEAoJ,QAAQ,CAACpJ,IAAT,KAAkB,MAFlB,IAGAoJ,QAAQ,CAACpJ,IAAT,KAAkB,QAHlB,IAIAoJ,QAAQ,CAACa,IAAT,CAAcmN,oBAJd,IAKC,CAACC,yBAAuB,CAACjO,QAAD,AAAA,CAAxB,IAAmDzH,IAAI,CAACoK,OALzD,IAMC3C,QAAQ,CAACpJ,IAAT,KAAkB,MAAlB,KACE2B,IAAI,CAAC3B,IAAL,KAAc,MAAd,IAAwB2B,IAAI,CAAC3B,IAAL,KAAc,OADxC,CAND,IAQCoJ,QAAQ,CAACpJ,IAAT,KAAkB,KAAlB,IAA2Bd,MAAM,CAACiN,MARnC,IASC/C,QAAQ,CAACpJ,IAAT,KAAkB,MAAlB,IAA4B2B,IAAI,CAACwK,MATlC,IAUC/C,QAAQ,CAACpJ,IAAT,KAAkB,SAAlB,IAA+B4B,KAAK,CAACkL,KAVtC,IAWC1D,QAAQ,CAACpJ,IAAT,KAAkB,OAAlB,IAA6BsM,QAAQ,CAAC3K,IAAD,CAZxC,EAcE;AAEF,KAAC2V,OAAA,CAAkBlO,QAAlB,EAA4BzH,IAA5B,EAAkCC,KAAlC,CAAD,IACE,CAAC2V,OAAA,CAAoBnO,QAApB,EAA8BzH,IAA9B,EAAoCC,KAApC,CADH,IAEE,CAAC4V,OAAA,CAAmBpO,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAFH,IAGE2O,OAAA,CAAmBnH,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAHF;AAID,GArBD;AAuBAmV,EAAAA,OAAA,CAAsBpV,IAAtB,EAA4BzC,MAA5B,EAAoC0C,KAApC;AACD;;ACvCD,IAAIme,uBAAuB,GAAG,CAC5B,SAD4B,EAE5B,WAF4B,EAG5B,YAH4B,EAI5B,YAJ4B,EAK5B,aAL4B,EAM5B,SAN4B,EAO5B,SAP4B,CAA9B;AAUA,AAAO,SAASre,OAAT,CAAeC,IAAf,EAAqBzC,MAArB,EAA6B0C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC3B,IAAL,KAAc,KAAd,IAAuB,CAACd,MAA5B,EAAoC;AAClC0C,IAAAA,KAAK,CAACkL,KAAN,GAAc,IAAd;AACAlL,IAAAA,KAAK,CAACoe,UAAN,GAAmBrX,OAAO,CAAChH,IAAD,EAAO,SAAP,CAA1B;AACD,GAHD,MAGO,IACLC,KAAK,CAACkL,KAAN,IACAlL,KAAK,CAACoe,UADN,IAEAD,uBAAuB,CAAC9nB,QAAxB,CAAiC0J,IAAI,CAAC3B,IAAtC,CAHK,EAIL;AACA,QAAIkJ,OAAO,CAACvH,IAAD,EAAO,MAAP,CAAX,EAA2B;AACzBA,MAAAA,IAAI,CAACoH,UAAL,CAAgB/J,IAAhB,CAAqB,EAAE,GAAG4C,KAAK,CAACoe,UAAX;AAAuBhgB,QAAAA,IAAI,EAAE;AAA7B,OAArB;AACD;;AAED,QAAIkJ,OAAO,CAACvH,IAAD,EAAO,QAAP,CAAX,EAA6B;AAC3BA,MAAAA,IAAI,CAACoH,UAAL,CAAgB/J,IAAhB,CAAqB,EAAE,GAAG4C,KAAK,CAACoe,UAAX;AAAuBhgB,QAAAA,IAAI,EAAE;AAA7B,OAArB;AACD;AACF;AACF;;ACzBM,IAAI0B,OAAK,GAAG,CAACC,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAI5B,IAAI,GAAG+R,cAAY,CAACpQ,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAvB;;AACA,MACE5B,IAAI,KAAK,MAAT,IACAd,MADA,KAECA,MAAM,CAACga,eAAP,IAA0Bha,MAAM,CAAC0gB,qBAFlC,CADF,EAIE;AACAje,IAAAA,IAAI,CAACie,qBAAL,GAA6B,IAA7B;AACD;;AAED,MAAIje,IAAI,CAACoJ,MAAT,EAAiB;AACf,QAAIwO,KAAK,GAAG,0BAAZ;AACA,QAAI5G,UAAU,GAAGhK,OAAO,CAAChH,IAAD,EAAO,YAAP,CAAxB;AACA,QAAIse,OAAO,GAAGtX,OAAO,CAAChH,IAAD,EAAO,SAAP,CAArB;AAEA,QAAIue,OAAO,GAAGzY,IAAI,CAACwY,OAAO,CAACtoB,KAAT,CAAlB;;AAEA,QAAI,WAAWuL,IAAX,CAAgB+c,OAAO,CAACjgB,IAAxB,KAAiCigB,OAAO,CAACrW,QAAR,KAAqB,WAA1D,EAAuE;AACrE;AACA;AACA,UAAII,SAAS,GAAGF,WAAW,CAACmW,OAAD,EAAU/gB,MAAV,EAAkB0C,KAAlB,CAA3B;AACAA,MAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,MAAAA,KAAK,CAACoI,SAAN,GAAkB,IAAlB;AAEAkW,MAAAA,OAAO,GAAI,qBAAoBlW,SAAU,KAAzC;AACD;;AAED,QAAIjT,GAAG,GAAG4R,OAAO,CAAChH,IAAD,EAAO,KAAP,CAAjB;AAEAC,IAAAA,KAAK,CAACmI,GAAN,CAAUwP,KAAV;AAEA3X,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CACG,IAAGua,KAAM;;oBAEI2G,OAAQ;YAChBvN,UAAU,GAAI,YAAWlL,IAAI,CAACkL,UAAU,CAAChb,KAAZ,CAAmB,EAAtC,GAA0C,EAAG;;YAEvDgK,IAAI,CAACwe,QAAL,GAAiB,QAAOppB,GAAG,GAAGA,GAAG,CAACY,KAAP,GAAe,OAAQ,GAAlD,GAAuD,EAAG,GANlE;AAQAgK,IAAAA,IAAI,CAACye,OAAL,GAAgB,KAAI7G,KAAM,GAA1B;AACD,GA9BD,MA8BO,IAAI5X,IAAI,CAACqP,IAAT,EAAe;AAIvB,CA5CM;AA8CP,AAAO,IAAIF,OAAK,GAAG,CAACnP,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACye,OAAT,EAAkB;AAChBxe,IAAAA,KAAK,CAACI,MAAN,CAAahD,IAAb,CAAkB2C,IAAI,CAACye,OAAvB;AACD;AACF,CAJM;;AChCA,IAAI1e,OAAK,GAAG,CACjBkW,OADiB,EAEjBC,OAFiB,EAGjBC,OAHiB,EAIjBuI,OAJiB,EAKjBtI,OALiB,EAMjBC,OANiB,EAOjBC,OAPiB,EAQjBqI,OARiB,EASjBpI,OATiB,EAWjBqI,OAXiB,EAYjBnI,OAZiB,EAajBC,KAbiB,EAejBE,OAfiB,EAgBjBC,OAhBiB,EAiBjBC,OAjBiB,CAAZ;AAoBP,AAAO,IAAI3H,OAAK,GAAG,CACjB2H,OADiB,EAEjBC,KAFiB,EAGjBF,OAHiB,EAIjBT,OAJiB,EAKjBC,OALiB,EAMjBqI,OANiB,EAOjBvI,OAPiB,CAAZ;;;;;;;;AC/BQ,SAAS5E,qBAAT,CAA6BvR,IAA7B,EAAmCzC,MAAnC,EAA2C0C,KAA3C,EAAkD8U,IAAlD,EAAwD;AACrE,MAAI8C,eAAe,GAAG/O,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAxC;;AACA,MAAI4X,eAAJ,EAAqB;AACnB,YAAQ7X,IAAI,CAAC3B,IAAb;AACE,WAAK,QAAL;AACA,WAAK,SAAL;AACA,WAAK,SAAL;AACA,WAAK,OAAL;AACA,WAAK,QAAL;AACA,WAAK,QAAL;AACA,WAAK,YAAL;AACA,WAAK,YAAL;AACE,eAAO;AACL4W,UAAAA,SAAS,EAAE,IADN;AAELxJ,UAAAA,SAAS,EAAEyL,cAAY,CAAClX,IAAD,EAAOzC,MAAP,EAAe0C,KAAf;AAFlB,SAAP;;AAKF;AACE,eAAO;AACLgV,UAAAA,SAAS,EAAE,IADN;AAEL,WAACjV,IAAI,CAAC3B,IAAN,GAAayK,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf;AAF1B,SAAP;AAfJ;AAoBD;;AAED,UAAQD,IAAI,CAAC3B,IAAb;AACE,SAAK,qBAAL;AACA,SAAK,sBAAL;AACA,SAAK,wBAAL;AACA,SAAK,yBAAL;AACE,aAAO;AACL,SAACd,MAAM,CAACc,IAAP,KAAgB,OAAhB,GAA0B,cAA1B,GAA2C2B,IAAI,CAAC3B,IAAjD,GAAwD2B,IAAI,CAAChK;AADxD,OAAP;;AAIF,SAAK,gBAAL;AACA,SAAK,mBAAL;AACA,SAAK,iBAAL;AACA,SAAK,kBAAL;AACE,aAAO;AACL6oB,QAAAA,WAAW,EAAE7e,IAAI,CAAChK;AADb,OAAP;;AAIF,SAAK,aAAL;AACE,aAAO8oB,cAAc,CAAC;AACpB/G,QAAAA,WAAW,EAAE/X,IAAI,CAAChK;AADE,OAAD,CAArB;;AAIF,SAAK,YAAL;AACE,aAAO8oB,cAAc,CAAC;AACpBC,QAAAA,YAAY,EAAE/e,IAAI,CAAChK;AADC,OAAD,CAArB;;AAIF,SAAK,eAAL;AACA,SAAK,eAAL;AACE,aAAOgpB,eAAe,CAAChf,IAAD,EAAOzC,MAAP,AAAA,CAAtB;;AAEF,SAAK,YAAL;AACA,SAAK,YAAL;AACE,aAAO;AACLzG,QAAAA,UAAU,EAAEmoB,aAAa,CAACjf,IAAD,EAAOzC,MAAP,AAAA;AADpB,OAAP;;AAIF,SAAK,QAAL;AACA,SAAK,SAAL;AACA,SAAK,SAAL;AACA,SAAK,OAAL;AACA,SAAK,QAAL;AACA,SAAK,QAAL;AACA,SAAK,YAAL;AACA,SAAK,YAAL;AACE,aAAO;AACLkO,QAAAA,SAAS,EAAEyL,cAAY,CAAClX,IAAD,EAAOzC,MAAP,EAAe0C,KAAf;AADlB,OAAP;;AAIF,SAAK,QAAL;AACE,aAAO;AACLuF,QAAAA,MAAM,EAAEuP,IAAI,GAAG/U,IAAI,CAAChK,KAAR,GAAgB2hB,QAAQ,CAAC3X,IAAI,CAAChK,KAAN,EAAa,EAAb;AAD/B,OAAP;;AAIF,SAAK,OAAL;AACE;AACA,UAAI,UAAUuL,IAAV,CAAehE,MAAM,CAACc,IAAtB,KAA+B0L,KAAK,CAAC/J,IAAD,EAAO,aAAP,CAAxC,EAA+D;AAC7D,eAAO;AACLqR,UAAAA,OAAO,EAAE,IADJ;AAEL6N,UAAAA,oBAAoB,EAAElf,IAAI,CAAChK;AAFtB,SAAP;AAID,OAPH;AASE;;;AACA,aAAO;AACLmpB,QAAAA,KAAK,EAAEnf,IAAI,CAAChK;AADP,OAAP;;AAIF,SAAK,YAAL;AACE,aAAO;AACLmN,QAAAA,UAAU,EAAEic,aAAa,CAACpf,IAAD,EAAOzC,MAAP;AADpB,OAAP;;AAIF;AACE,aAAO;AACL,SAACyC,IAAI,CAAC3B,IAAN,GAAauP,mBAAmB,CAAC5N,IAAD;AAD3B,OAAP;AA1EJ;AA8ED;;AAED,IAAIif,aAAa,GAAG,CAACjf,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC3C,MAAIof,UAAU,GAAGrY,OAAO,CAACzJ,MAAD,EAAS,YAAT,CAAxB,CAD2C;;AAG3C,MAAIzG,UAAU,GAAGkJ,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CAAmB,KAAnB,EAA0B,EAA1B,CAAjB;;AAEA,MAAIkoB,UAAU,KAAKrf,IAAI,CAACsI,IAAL,CAAUC,IAAV,IAAkB8W,UAAU,CAAC/W,IAAX,CAAgBC,IAAvC,CAAd,EAA4D;AAC1D,WAAQ,KAAIvI,IAAI,CAACsI,IAAL,CAAUC,IAAV,GAAiB,qBAAjB,GAAyCzR,UAAW,IAC9DuoB,UAAU,CAAC/W,IAAX,CAAgBC,IAAhB,GAAuB,qBAAvB,GAA+C8W,UAAU,CAACrpB,KAC3D,IAFD;AAGD;;AAED,SAAOqpB,UAAU,GAAI,GAAEvoB,UAAW,IAAGuoB,UAAU,CAACrpB,KAAM,EAArC,GAAyCc,UAA1D;AACD,CAZD;;AAcA,IAAIsoB,aAAa,GAAG,CAACpf,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC3C,MAAI8C,QAAQ,GAAGiE,OAAO,CAACzJ,MAAD,EAAS,UAAT,CAAtB,CAD2C;;AAG3C,MAAI+hB,aAAa,GAAGvc,QAAQ,GAAGA,QAAQ,CAAC/M,KAAZ,GAAoB,EAAhD;AACA,SAAOgK,IAAI,CAAChK,KAAL,GAAaspB,aAApB;AACD,CALD;;AAOA,IAAIN,eAAe,GAAG,CAAChf,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC7C,MAAI8E,aAAa,GAAGiC,OAAO,CAACzJ,MAAD,EAAS,eAAT,CAA3B;AACA,MAAIuH,aAAa,GAAGkC,OAAO,CAACzJ,MAAD,EAAS,eAAT,CAA3B;AAEA,SAAOuhB,cAAc,CAAC;AACpB;AACAS,IAAAA,YAAY,EAAE;AACZ5gB,MAAAA,KAAK,EAAEoG,aAAa,GAAGA,aAAa,CAAC/O,KAAjB,GAAyB,CADjC;AAEZgN,MAAAA,MAAM,EAAE8B,aAAa,GAAGA,aAAa,CAAC9O,KAAjB,GAAyB;AAFlC;AAFM,GAAD,CAArB;AAOD,CAXD;;AAaA,IAAI8oB,cAAc,GAAGnY,GAAG,IAAI;AAC1BA,EAAAA,GAAG,CAAC6Y,SAAJ,GAAgB,CAAhB,CAD0B;;AAE1B7Y,EAAAA,GAAG,CAAC8Y,aAAJ,GAAoB,CAApB;AACA,SAAO9Y,GAAP;AACD,CAJD;;AAMA,IAAIsF,cAAY,GAAG,CAAC9E,IAAD,EAAOyQ,KAAP,EAAc3X,KAAd,EAAqBwI,IAAI,GAAG,EAA5B,KAAmC;AACpD,MAAI,CAACtB,IAAL,EAAW,OAAO,KAAP;AAEX,MAAI0Q,eAAe,GAAG/O,kBAAkB,CAAC3B,IAAD,EAAOyQ,KAAP,EAAc3X,KAAd,CAAxC;;AACA,MAAI4X,eAAJ,EAAqB;AACnB,WAAOpP,IAAI,GAAI,QAAOoP,eAAgB,IAAGpP,IAAK,IAAnC,GAAyCoP,eAApD;AACD;;AAED,MAAI1Q,IAAI,CAACmB,IAAL,CAAUC,IAAd,EAAoB;AAClB,WAAQ,MAAKpB,IAAI,CAACnR,KAAM,IAAGyS,IAAK,EAAhC;AACD;;AAED,SAAO,OAAOtB,IAAI,CAACnR,KAAZ,KAAsB,QAAtB,IAAkCyS,IAAlC,GACF,GAAEtB,IAAI,CAACnR,KAAM,GAAEyS,IAAK,EADlB,GAEHtB,IAAI,CAACnR,KAFT;AAGD,CAfD;;AAiBA,IAAIkiB,mBAAiB,GAAG,CAAC/Q,IAAD,EAAO5J,MAAP,EAAe0C,KAAf,EAAsBwI,IAAtB,KACtBtB,IAAI,IAAI;AACN,GAACA,IAAI,CAAC9I,IAAN,GAAa4N,cAAY,CAAC9E,IAAD,EAAO5J,MAAP,EAAe0C,KAAf,EAAsBwI,IAAtB;AADnB,CADV;;AAKA,IAAIyO,cAAY,GAAG,CAAClX,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,KAAyB;AAC1C,MAAIqE,MAAM,GAAG0C,OAAO,CAACzJ,MAAD,EAAS,QAAT,CAApB;AACA,MAAIgH,OAAO,GAAGyC,OAAO,CAACzJ,MAAD,EAAS,SAAT,CAArB;AACA,MAAIiH,OAAO,GAAGwC,OAAO,CAACzJ,MAAD,EAAS,SAAT,CAArB;AACA,MAAIkH,KAAK,GAAGuC,OAAO,CAACzJ,MAAD,EAAS,OAAT,CAAnB;AACA,MAAImH,MAAM,GAAGsC,OAAO,CAACzJ,MAAD,EAAS,QAAT,CAApB;AACA,MAAIoH,MAAM,GAAGqC,OAAO,CAACzJ,MAAD,EAAS,QAAT,CAApB;AACA,MAAI8H,UAAU,GAAG2B,OAAO,CAACzJ,MAAD,EAAS,YAAT,CAAxB;AACA,MAAI+H,UAAU,GAAG0B,OAAO,CAACzJ,MAAD,EAAS,YAAT,CAAxB;AAEA,SAAO,CACL2a,mBAAiB,CAAC5T,MAAD,EAAS/G,MAAT,EAAiB0C,KAAjB,EAAwB,KAAxB,CADZ,EAELiY,mBAAiB,CAAC3T,OAAD,EAAUhH,MAAV,EAAkB0C,KAAlB,EAAyB,KAAzB,CAFZ,EAGLiY,mBAAiB,CAAC1T,OAAD,EAAUjH,MAAV,EAAkB0C,KAAlB,EAAyB,KAAzB,CAHZ,EAILiY,mBAAiB,CAACzT,KAAD,EAAQlH,MAAR,EAAgB0C,KAAhB,CAJZ,EAKLiY,mBAAiB,CAACxT,MAAD,EAASnH,MAAT,EAAiB0C,KAAjB,CALZ,EAMLiY,mBAAiB,CAACvT,MAAD,EAASpH,MAAT,EAAiB0C,KAAjB,CANZ,EAOLiY,mBAAiB,CAAC7S,UAAD,EAAa9H,MAAb,EAAqB0C,KAArB,CAPZ,EAQLiY,mBAAiB,CAAC5S,UAAD,EAAa/H,MAAb,EAAqB0C,KAArB,CARZ,EASL9K,MATK,CASE0S,OATF,CAAP;AAUD,CApBD;;AC5KA,mBAAe,CAAC;AAAEyK,EAAAA;AAAF,CAAD,KACbvL,OAAO,CAACuL,MAAD,CAAP,GACK,kCAAiC5U,IAAI,CAACC,SAAL,CAAe2U,MAAf,CAAuB,GAD7D,GAEI,EAHN;;ACaA,IAAIiG,OAAK,GAAI/R,GAAD,IAAS,eAAejF,IAAf,CAAoBiF,GAApB,CAArB;;AAEA,SAASgS,gBAAT,CAAwBxY,IAAxB,EAA8BzC,MAA9B,EAAsC0C,KAAtC,EAA6C;AAC3C,MAAIiG,MAAM,GAAG+E,SAAS,CAACjL,IAAD,EAAOzC,MAAP,AAAA,CAAtB;;AAEA,MAAI2I,MAAM,KAAKqS,OAAK,CAACvY,IAAI,CAAChK,KAAN,CAAL,IAAqBgK,IAAI,CAACsI,IAAL,CAAUC,IAApC,CAAV,EAAqD;AACnD,WAAQ,WAAUO,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAsB,KAA1D;AACD,GAFD,MAEO,IAAIsY,OAAK,CAACvY,IAAI,CAAChK,KAAN,CAAL,IAAqBgK,IAAI,CAACsI,IAAL,CAAUC,IAAnC,EAAyC;AAC9C,QAAIvI,IAAI,CAACsH,YAAL,IAAqB,CAACiR,OAAK,CAACvY,IAAI,CAACsH,YAAN,CAA/B,EAAoD;AAClDrH,MAAAA,KAAK,CAACwY,KAAN,CAAYjkB,OAAZ,CAAqBC,IAAD,IAAU;AAC5B,YAAIA,IAAI,CAAC6S,YAAL,KAAsBtH,IAAI,CAACsH,YAA/B,EAA6C;AAC3C7S,UAAAA,IAAI,CAAC6C,IAAL,GAAY,QAAZ;AACA,cAAI+G,IAAI,GAAG6M,WAAW,CAACzW,IAAI,CAAC6S,YAAN,CAAtB;;AACA,cAAI,CAACrH,KAAK,CAAC+K,MAAN,CAAa1U,QAAb,CAAsB7B,IAAI,CAAC6S,YAA3B,CAAL,EAA+C;AAC7CrH,YAAAA,KAAK,CAAC+K,MAAN,CAAa3N,IAAb,CAAkB;AAChBgB,cAAAA,IADgB;AAEhB9G,cAAAA,IAAI,EAAE9C,IAAI,CAAC6S;AAFK,aAAlB;AAID;;AACD7S,UAAAA,IAAI,CAAC6S,YAAL,GAAoBjJ,IAApB;AACD;AACF,OAZD;AAaD;;AACD,WAAQ,WAAU2B,IAAI,CAACsI,IAAL,CAAUC,IAAV,GAAiBvI,IAAI,CAAChK,KAAtB,GAA8BwS,IAAI,CAACxI,IAAI,CAAChK,KAAN,CAAa,KAAjE;AACD,GAjBM,MAiBA;AACL,QAAIkQ,MAAJ,EAAY;AACV2E,MAAAA,gBAAgB,CAAC5K,KAAD,EAAQiG,MAAM,CAACwD,WAAf,EAA4BxD,MAAM,CAAC4E,KAAnC,CAAhB;AACD;;AACD,QAAIzM,IAAI,GAAG6M,WAAW,CAAClL,IAAI,CAAChK,KAAN,CAAtB;;AACA,QAAI,CAACiK,KAAK,CAAC+K,MAAN,CAAa1U,QAAb,CAAsB0J,IAAI,CAAChK,KAA3B,CAAL,EAAwC;AACtCiK,MAAAA,KAAK,CAAC+K,MAAN,CAAa3N,IAAb,CAAkB;AAChBgB,QAAAA,IADgB;AAEhB9G,QAAAA,IAAI,EAAEyI,IAAI,CAAChK;AAFK,OAAlB;AAID;;AAED,WAAOkQ,MAAM,GACTJ,IAAI,CACF2D,uBAAuB,CAACvD,MAAM,CAAC6C,WAAR,EAAqB7C,MAAM,CAACwD,WAA5B,EAAyCrL,IAAzC,CADrB,CADK,GAIR,IAAGA,IAAK,GAJb;AAKD;AACF;;AAED,IAAIqK,cAAY,GAAG,2DAAnB;AACA,IAAIgQ,gBAAc,GAAG,wBAArB;AAEA,AAAe,SAASnK,qBAAT,CAA6BvO,IAA7B,EAAmCzC,MAAnC,EAA2C0C,KAA3C,EAAkD;AAC/D,MACEA,KAAK,CAACgJ,IAAN,KACCjJ,IAAI,CAAChK,KAAL,KAAe,cAAf,IACCgK,IAAI,CAAChK,KAAL,KAAe,aADhB,IAECgK,IAAI,CAAChK,KAAL,KAAe,gBAFhB,IAGCgK,IAAI,CAAChK,KAAL,KAAe,gBAHhB,IAICgK,IAAI,CAAChK,KAAL,KAAe,iBAJhB,IAKCgK,IAAI,CAAChK,KAAL,KAAe,wBALhB,IAMCgK,IAAI,CAAChK,KAAL,KAAe,eANhB,IAOCgK,IAAI,CAAChK,KAAL,KAAe,sBAPhB,IAQCgK,IAAI,CAAChK,KAAL,KAAe,gBATjB,CADF,EAWE;AACA,WAAO;AACL,OAACgK,IAAI,CAAC3B,IAAN,GAAc,IAAG2B,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CAAmB,QAAnB,EAA6B,OAA7B,CAAsC;AADlD,KAAP;AAGD,GAfD,MAeO,IAAI,0BAA0BoK,IAA1B,CAA+BvB,IAAI,CAAChK,KAApC,CAAJ,EAAgD;AACrD,QAAIkS,QAAQ,GAAGC,WAAW,CAACnI,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAA1B;AACAA,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,IAAAA,KAAK,CAACkJ,OAAN,GAAgB,IAAhB;AAEA,WAAO;AACL,OAACnJ,IAAI,CAAC3B,IAAN,GAAc,IAAG2B,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CACf,sBADe,EAEd,aAAY+Q,QAAS,IAFP,CAGf;AAJG,KAAP;AAMD,GAXM,MAWA,IAAIgB,oBAAoB,CAAC3L,MAAD,CAApB,IAAgCmL,cAAY,CAACnH,IAAb,CAAkBvB,IAAI,CAAChK,KAAvB,CAApC,EAAmE;AACxE,WAAO;AACL,OAACgK,IAAI,CAAC3B,IAAN,GAAc,IAAG2B,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CAAmB,QAAnB,EAA6B,aAA7B,CAA4C;AADxD,KAAP;AAGD,GAJM,MAIA,IAAIyT,aAAa,CAAC5K,IAAD,EAAOzC,MAAP,CAAjB,EAAiC;AACtC,WACE,CAACA,MAAM,CAAC4N,KAAR,IAAiB;AACfiS,MAAAA,MAAM,EAAE5E,gBAAc,CAACxY,IAAD,EAAOzC,MAAP,EAAe0C,KAAf;AADP,KADnB;AAKD,GANM,MAMA,IAAI6I,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAtB,EAA6C;AAClD,WAAO;AACL,OAACD,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACM,kBAAkB,CAAC9I,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAAnB;AADZ,KAAP;AAGD,GAJM,MAIA,IAAI,WAAWsB,IAAX,CAAgBvB,IAAI,CAAC3B,IAArB,KAA8B2B,IAAI,CAACiI,QAAL,KAAkB,WAApD,EAAiE;AACtE,QAAIC,QAAQ,GAAGC,WAAW,CAACnI,IAAD,EAAOzC,MAAP,EAAe0C,KAAf,CAA1B;AACAA,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,IAAAA,KAAK,CAACoI,SAAN,GAAkB,IAAlB;AAEA,QAAI7J,GAAG,GAAG;AACR,OAACwB,IAAI,CAAC3B,IAAN,GAAc,qBAAoB6J,QAAS;AADnC,KAAV;;AAIA,QAAI,CAAC3K,MAAM,CAAC6M,OAAR,IAAmBsO,gBAAc,CAACnX,IAAf,CAAoBvB,IAAI,CAAC3B,IAAzB,CAAvB,EAAuD;AACrD4B,MAAAA,KAAK,CAACkJ,OAAN,GAAgB,IAAhB;AACA3K,MAAAA,GAAG,CACDwB,IAAI,CAAC3B,IAAL,CAAUlH,OAAV,CAAkBuhB,gBAAlB,EAAkC,YAAlC,CADC,CAAH,GAEK,cAAaxQ,QAAS,KAF3B;AAGD;;AAED,QAAI3K,MAAM,CAAC6M,OAAP,IAAkBsO,gBAAc,CAACnX,IAAf,CAAoBvB,IAAI,CAAC3B,IAAzB,CAAtB,EAAsD;AACpD4B,MAAAA,KAAK,CAACiQ,YAAN,GAAqB,IAArB;AACA1R,MAAAA,GAAG,CAAC,KAAD,CAAH,GAAc,GAAEwB,IAAI,CAAC3B,IAAL,CAAUlH,OAAV,CAAkBuhB,gBAAlB,EAAkC,WAAlC,CAA+C,MAA/D;AACD;;AAED,WAAOla,GAAP;AACD,GAtBM,MAsBA,IAAIjB,MAAM,CAAC6M,OAAP,IAAkBsO,gBAAc,CAACnX,IAAf,CAAoBvB,IAAI,CAAC3B,IAAzB,CAAtB,EAAsD;AAC3D4B,IAAAA,KAAK,CAACiQ,YAAN,GAAqB,IAArB;AACA,WAAO;AACL,aAAQ,GAAElQ,IAAI,CAAC3B,IAAL,CAAUlH,OAAV,CAAkBuhB,gBAAlB,EAAkC,WAAlC,CAA+C,MADpD;AAEL,OAAC1Y,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AAFZ,KAAP;AAID,GANM,MAMA,IACL0I,cAAY,CAACnH,IAAb,CAAkBvB,IAAI,CAAChK,KAAvB,KACA,CAAC,CAACqT,mBAAmB,CAAC9L,MAAD,CADrB,IAEA,CAACA,MAAM,CAAC6M,OAHH,EAIL;AACA;AACA;AACA,QAAI,YAAY7I,IAAZ,CAAiBvB,IAAI,CAAChK,KAAtB,CAAJ,EAAkC;AAChC,aAAO;AACL,SAACgK,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAL,CAAWmB,OAAX,CAAmB,QAAnB,EAA6B,EAA7B,CAAD,EAAmC6I,IAAnC;AADZ,OAAP;AAGD,KAJD,MAIO,IAAI,aAAauB,IAAb,CAAkBvB,IAAI,CAAChK,KAAvB,CAAJ,EAAmC;AACxC,UAAI;AACF,YAAI4iB,gBAAgB,GAAGvP,mBAAmB,CAAC9L,MAAD,CAA1C;AACA,YAAI2K,QAAQ,GAAGC,WAAW,CACxBnB,OAAO,CAAC4R,gBAAD,EAAmB,SAAnB,CADiB,EAExBA,gBAFwB,EAGxB3Y,KAHwB,CAA1B;AAKAA,QAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACAnI,QAAAA,KAAK,CAACkJ,OAAN,GAAgB,IAAhB;AACA,eAAO;AACL,WAACnJ,IAAI,CAAC3B,IAAN,GAAc,cAAa6J,QAAS;AAD/B,SAAP;AAGD,OAZD,CAYE,OAAO7P,KAAP,EAAc;AACd,eAAO;AACL,WAAC2H,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AADZ,SAAP;AAGD;AACF,KAlBM,MAkBA;AACL,aAAO;AACL,SAACA,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AADZ,OAAP;AAGD;AACF,GAlCM,MAkCA;AACL,WAAO;AACL,OAACA,IAAI,CAAC3B,IAAN,GAAamK,IAAI,CAACxI,IAAI,CAAChK,KAAN,EAAagK,IAAb;AADZ,KAAP;AAGD;AACF;;AC1KD,2BAAeC,KAAK,IAAI;AACtB,MAAIhL,MAAM,CAACC,IAAP,CAAY+K,KAAK,CAACqS,MAAlB,EAA0B7U,MAA1B,GAAmC,CAAvC,EAA0C;AACxCwC,IAAAA,KAAK,CAAC6Z,IAAN,CAAWzc,IAAX,CAAgB,YAAhB;AACD;AACF,CAJD;;ACYA,IAAI0b,SAAO,GAAG;AACZ2G,EAAAA,eAAe,EAAG;AADN,CAAd;AAIA,mBAAe,CAAC;AACd/D,EAAAA,aADc;AAEd7b,EAAAA,eAFc;AAGdkc,EAAAA,wBAAwB,GAAG,cAHb;AAIdhoB,EAAAA,GAJc;AAKd8I,EAAAA,KALc;AAMdhD,EAAAA,IANc;AAOdgC,EAAAA,SAPc;AAQdrC,EAAAA;AARc,CAAD,KAST;AACJ,MAAI4E,IAAI,GAAGvE,IAAI,CAACtC,EAAhB;AACA,MAAImlB,SAAS,GAAGC,eAAe,CAACtmB,QAAhB,CAAyB+H,IAAzB,IAAkC,GAAEA,IAAK,GAAzC,GAA8CA,IAA9D;AAEA,MAAI4B,KAAK,GAAG;AACV+R,IAAAA,UAAU,EAAE,EADF;AAEVuH,IAAAA,QAAQ,EAAE,IAAI1kB,GAAJ,EAFA;AAGVmW,IAAAA,MAAM,EAAE,EAHE;AAIV/B,IAAAA,IAAI,EAAEnP,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBmP,IAJb;AAKVgR,IAAAA,UAAU,EAAEngB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBmgB,UALnB;AAMVE,IAAAA,YAAY,EAAErgB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBqgB,YANrB;AAOVgB,IAAAA,YAAY,EAAE,IAAItmB,GAAJ,EAPJ;AAQV2H,IAAAA,IAAI,EAAE,IARI;AASV6L,IAAAA,SAAS,EAAE,KATD;AAUVsT,IAAAA,aAAa,EAAGnlB,IAAD,IAAUmlB,aAAa,CAACnlB,IAAD,EAAOsD,IAAP,CAV5B;AAWVyX,yBAAAA,qBAXU;AAYVhD,yBAAAA,qBAZU;AAaVsG,IAAAA,OAAO,EAAE,KAbC;AAcV9B,IAAAA,aAAa,EAAE,IAdL;AAeVzW,IAAAA,OAAO,EAAG9E,EAAD,IAAQ;AACf,UAAI4F,UAAU,GAAGvB,qBAAqB,CAAC;AACrCrE,QAAAA,EADqC;AAErCsC,QAAAA,IAFqC;AAGrCgC,QAAAA,SAHqC;AAIrCrC,QAAAA;AAJqC,OAAD,CAAtC;AAOA,aAAO2D,UAAU,IAAI,CAACA,UAAU,CAACrD,MAA1B,IAAoCqD,UAAU,CAACpD,MAAX,CAAkBF,IAAlB,CAAuBwC,OAAlE;AACD,KAxBS;AAyBVmf,IAAAA,IAAI,EAAE,EAzBI;AA0BVpd,IAAAA,IAAI,EAAEse,SA1BI;AA2BVrf,IAAAA,QAAQ,EAAExD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBwD,QA3BjB;AA4BVE,IAAAA,cAAc,EAAE1D,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB0D,cA5BvB;AA6BVmiB,IAAAA,KAAK,EAAE,EA7BG;AA8BVtf,IAAAA,MAAM,EAAE,EA9BE;AA+BViS,IAAAA,MAAM,EAAE,EA/BE;AAgCVlS,IAAAA,SAAS,EAAE,QAhCD;AAiCVE,IAAAA,WAAW,EAAE,QAjCH;AAkCV0V,IAAAA,OAAO,EAAE,EAlCC;AAmCVlZ,IAAAA,KAnCU;AAoCVkf,IAAAA,wBApCU;AAqCV/O,IAAAA,cAAc,EAAE;AAAE,OAAC0P,SAAD,GAAa,CAAf;AAAkBE,MAAAA,SAAS,EAAE,CAA7B;AAAgCC,MAAAA,MAAM,EAAE,CAAxC;AAA2CC,MAAAA,KAAK,EAAE;AAAlD,KArCN;AAsCVjD,IAAAA,IAAI,EAAE,EAtCI;;AAuCV1R,IAAAA,GAAG,CAACwP,KAAD,EAAQvH,MAAM,GAAG,KAAjB,EAAwB;AACzB,UAAIA,MAAJ,EAAY;AACVpQ,QAAAA,KAAK,CAACwb,IAAN,CAAW7D,KAAX,IAAoB,IAApB;AACD;;AAED,UACE3X,KAAK,CAAC6Z,IAAN,CAAWxjB,QAAX,CAAoBshB,KAApB,KACA,QAAQrW,IAAR,CAAaqW,KAAb,CADA,IAEA,qBAAqBA,KAHvB,EAKE;;AAEF,UAAIA,KAAK,KAAK+E,SAAd,EAAyB;AACvB1c,QAAAA,KAAK,CAAC5B,IAAN,GAAc,GAAEvE,IAAI,CAACtC,EAAG,GAAEyI,KAAK,CAACgN,cAAN,CAAqB0P,SAArB,GAAkC,EAA5D;AACD;;AAED1c,MAAAA,KAAK,CAAC6Z,IAAN,CAAWzc,IAAX,CAAgBua,KAAhB;AACD,KAxDS;;AAyDVwC,IAAAA,WAAW,EAAEtgB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBsgB,WAzDpB;AA0DVC,IAAAA,UAAU,EAAEvgB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBugB;AA1DnB,GAAZ;AA6DApa,EAAAA,KAAK,CAACnH,KAAN,GAAcgB,IAAI,CAACE,MAAL,CAAYlB,KAA1B;AACAmH,EAAAA,KAAK,CAACwY,KAAN,GAAc3e,IAAI,CAACE,MAAL,CAAYye,KAA1B;AAEA6D,EAAAA,IAAI,CAACxiB,IAAI,CAACE,MAAL,CAAYF,IAAb,EAAmBmjB,SAAnB,EAA4Bhd,KAA5B,CAAJ;AAEA2f,AACAC,EAAAA,mBAAmB,CAAC5f,KAAD,CAAnB;;AAEA,MAAIA,KAAK,CAACgJ,IAAV,EAAgB;AACdhJ,IAAAA,KAAK,CAACmI,GAAN,CAAU,cAAV;AACD;;AAED,SAAO;AACL2M,IAAAA,IAAI,EAAEmI,WAAW,CAAC;AAChBlE,MAAAA,SAAS,EAAEF,aAAa,CAAC;AACvBC,iBAAAA,SADuB;AAEvBjZ,QAAAA,eAFuB;AAGvB9L,QAAAA,GAHuB;AAIvB8F,QAAAA,IAJuB;AAKvBgC,QAAAA,SALuB;AAMvBrC,QAAAA;AANuB,OAAD,CADR;AAShBwiB,iBAAAA,WATgB;AAUhB5d,MAAAA,IAAI,EAAEse,SAVU;AAWhB1c,MAAAA;AAXgB,KAAD,CADZ;AAcLkb,IAAAA,YAAY,EAAElb,KAAK,CAACkb,YAdf;AAeL3e,IAAAA,IAAI,EAAEyD,KAAK,CAACzD,IAfP;AAgBL2T,IAAAA,gBAAgB,EAAElQ,KAAK,CAACkQ,gBAhBnB;AAkBL;;AAlBK,GAAP;AAoBD,CA1GD;;ACdA,gBAAe2P,OAAO,IACpBC,WAAgB,CAAC,EACf,GAAGD,OADY;AAEf9D,EAAAA,wBAAwB,EAAE;AAFX,CAAD,CADlB;;ACEA,eAAe;AACb,eAAagE,QADA;AAEb,kBAAgBC,WAFH;AAGb,eAAaC;AAHA,CAAf;;ACAe,SAASC,UAAT,CAAoB;AACjC5mB,EAAAA,EADiC;AAEjCoiB,EAAAA,aAFiC;AAGjC7b,EAAAA,eAHiC;AAIjC9L,EAAAA,GAJiC;AAKjC8I,EAAAA,KALiC;AAMjChD,EAAAA,IANiC;AAOjCgC,EAAAA,SAPiC;AAQjCrC,EAAAA,YARiC;AASjCxF,EAAAA;AATiC,CAApB,EAUZ;AACD,MAAImsB,MAAM,GAAG,IAAb;;AACA,MAAI;AACFA,IAAAA,MAAM,GAAGC,QAAQ,CAAC9mB,EAAD,CAAR,CAAa;AACpBoiB,MAAAA,aADoB;AAEpB7b,MAAAA,eAFoB;AAGpB9L,MAAAA,GAHoB;AAIpB8I,MAAAA,KAJoB;AAKpBhD,MAAAA,IALoB;AAMpBgC,MAAAA,SANoB;AAOpBrC,MAAAA;AAPoB,KAAb,CAAT;AAUAK,IAAAA,IAAI,CAACwmB,OAAL;AAEArsB,IAAAA,OAAO,IACL4B,OAAO,CAACC,GAAR,CACG,GAAEojB,KAAK,CAACqH,KAAN,CAAY,GAAZ,CAAiB,IAAGzmB,IAAI,CAACtC,EAAG,IAAGsC,IAAI,CAACwmB,OAAQ,IAAGpH,KAAK,CAACsH,GAAN,CAAU1mB,IAAI,CAACvC,IAAf,CAAqB,EADzE,CADF;AAKA,WAAO6oB,MAAM,CAACrL,IAAd,CAlBE;AAqBF;AACA;AACA;AACA;AACD,GAzBD,CAyBE,OAAO1c,KAAP,EAAc;AACdxC,IAAAA,OAAO,CAACwC,KAAR,CAAc6gB,KAAK,CAACC,GAAN,CAAU,GAAV,CAAd,EAA8Brf,IAA9B,EAAoCzB,KAAK,CAACooB,SAAN,IAAmBpoB,KAAvD;AACA,WAAQ;;0BAEcyB,IAAI,CAACtC,EAAG;;;;eAInBsC,IAAI,CAACtC,EAAG;eACRsC,IAAI,CAACvC,IAAK;;;;;4BAKGuC,IAAI,CAACtC,EAAG;;;;;EAKlC4oB,MAAM,IAAIA,MAAM,CAACrL,IAAP,CAAY5d,OAAZ,CAAoB,cAApB,EAAoC,EAApC,CAAwC;;;;EAIlDkB,KAAK,CAACqoB,OAAQ;EACdroB,KAAK,CAACsoB,KAAM;GAtBV;AAwBD;AACF;;ACjEc,SAASC,aAAT,CAAuB;AACpCrnB,EAAAA,EADoC;AAEpCoiB,EAAAA,aAFoC;AAGpC7b,EAAAA,eAHoC;AAIpCtG,EAAAA,SAJoC;AAKpCxF,EAAAA,GALoC;AAMpC8I,EAAAA,KANoC;AAOpChB,EAAAA,SAPoC;AAQpCrC,EAAAA;AARoC,CAAvB,EASZ;AACD,SAAO,CAAC,GAAGD,SAAJ,EACJjF,GADI,CACAgD,IAAI,IAAIkC,YAAY,CAACvD,GAAb,CAAiBqB,IAAjB,CADR,EAEJpC,MAFI,CAEG2E,IAAI,IAAI,CAACA,IAAI,CAACC,MAFjB,EAGJxF,GAHI,CAGAuF,IAAI,KAAK;AACZvC,IAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAUZ,IAAI,CAACC,OAAL,CAAakF,IAAI,CAACvC,IAAlB,CAAV,EAAmC,SAAnC,CADM;AAEZ4C,IAAAA,OAAO,EAAEgmB,UAAU,CAAC;AAClB5mB,MAAAA,EADkB;AAElBoiB,MAAAA,aAFkB;AAGlB7b,MAAAA,eAHkB;AAIlB9L,MAAAA,GAJkB;AAKlB8I,MAAAA,KALkB;AAMlB7I,MAAAA,OAAO,EAAE,KANS;AAOlB6F,MAAAA,IAPkB;AAQlBgC,MAAAA,SARkB;AASlBrC,MAAAA;AATkB,KAAD;AAFP,GAAL,CAHJ,CAAP;AAiBD;;AC5Bc,SAASonB,kBAAT,CAA4B/mB,IAA5B,EAAkC7F,OAAlC,EAA2C;AACxD,MAAI,CAACA,OAAD,IAAY,CAAC6F,IAAI,CAACE,MAAlB,IAA4BF,IAAI,CAACE,MAAL,CAAY8mB,QAAZ,CAAqBrjB,MAArB,KAAgC,CAAhE,EAAmE;AAEnE5H,EAAAA,OAAO,CAACwC,KAAR,CAAc6gB,KAAK,CAACC,GAAN,CAAUrf,IAAI,CAACtC,EAAf,CAAd,EAAkC0hB,KAAK,CAACsH,GAAN,CAAU1mB,IAAI,CAACvC,IAAf,CAAlC;AAEAuC,EAAAA,IAAI,CAACE,MAAL,CAAY8mB,QAAZ,CAAqBtsB,OAArB,CAA6BusB,OAAO,IAAI;AACtClrB,IAAAA,OAAO,CAACwC,KAAR,CACG,KAAI6gB,KAAK,CAAC8H,MAAN,CAAaD,OAAO,CAACE,GAAR,CAAYC,KAAZ,CAAkBC,IAA/B,CAAqC,KAAIjI,KAAK,CAACkI,IAAN,CAC5CL,OAAO,CAACzpB,IADoC,CAE5C,WAAUypB,OAAO,CAACI,IAAK,GAH3B;AAKD,GAND;AAOAtrB,EAAAA,OAAO,CAACC,GAAR,CAAY,EAAZ;AACD;;ACfM,IAAIurB,KAAK,GAAG,CACjB,cADiB,EAEjB,YAFiB,EAGjB,WAHiB,EAIjB,WAJiB,EAKjB,WALiB,EAMjB,YANiB,EAOjB,iBAPiB,EAQjB,iBARiB,EASjB,oBATiB,EAUjB,kBAViB,EAWjB,gBAXiB,EAYjB,gBAZiB,EAajB,mBAbiB,EAcjB,wBAdiB,EAejB,yBAfiB,EAgBjB,mBAhBiB,EAiBjB,mBAjBiB,EAkBjB,aAlBiB,EAmBjB,iBAnBiB,EAoBjB,iBApBiB,EAqBjB,iBArBiB,EAsBjB,kBAtBiB,EAuBjB,kBAvBiB,EAwBjB,kBAxBiB,EAyBjB,aAzBiB,EA0BjB,gBA1BiB,EA2BjB,qBA3BiB,EA4BjB,sBA5BiB,EA6BjB,gBA7BiB,EA8BjB,gBA9BiB,EA+BjB,aA/BiB,EAgCjB,QAhCiB,EAiCjB,UAjCiB,EAkCjB,OAlCiB,EAmCjB,QAnCiB,EAoCjB,SApCiB,EAqCjB,WArCiB,EAsCjB,MAtCiB,EAuCjB,QAvCiB,EAwCjB,UAxCiB,EAyCjB,WAzCiB,EA0CjB,eA1CiB,EA2CjB,UA3CiB,EA4CjB,YA5CiB,EA6CjB,UA7CiB,EA8CjB,YA9CiB,EA+CjB,UA/CiB,EAgDjB,WAhDiB,EAiDjB,YAjDiB,EAkDjB,QAlDiB,EAmDjB,SAnDiB,EAoDjB,gBApDiB,EAqDjB,MArDiB,EAsDjB,eAtDiB,EAuDjB,YAvDiB,EAwDjB,cAxDiB,EAyDjB,YAzDiB,EA0DjB,aA1DiB,EA2DjB,WA3DiB,EA4DjB,WA5DiB,EA6DjB,UA7DiB,EA8DjB,WA9DiB,EA+DjB,UA/DiB,EAgEjB,SAhEiB,EAiEjB,cAjEiB,EAkEjB,eAlEiB,EAmEjB,cAnEiB,EAoEjB,cApEiB,EAqEjB,cArEiB,EAsEjB,WAtEiB,EAuEjB,WAvEiB,EAwEjB,eAxEiB,EAyEjB,aAzEiB,EA0EjB,cA1EiB,EA2EjB,YA3EiB,EA4EjB,eA5EiB,EA6EjB,UA7EiB,EA8EjB,QA9EiB,EA+EjB,OA/EiB,EAgFjB,aAhFiB,EAiFjB,eAjFiB,EAkFjB,eAlFiB,EAmFjB,YAnFiB,EAoFjB,cApFiB,EAqFjB,aArFiB,EAsFjB,QAtFiB,EAuFjB,kBAvFiB,EAwFjB,iBAxFiB,EAyFjB,WAzFiB,EA0FjB,gBA1FiB,EA2FjB,cA3FiB,EA4FjB,aA5FiB,EA6FjB,eA7FiB,EA8FjB,KA9FiB,EA+FjB,YA/FiB,EAgGjB,YAhGiB,EAiGjB,OAjGiB,EAkGjB,QAlGiB,EAmGjB,QAnGiB,EAoGjB,QApGiB,EAqGjB,SArGiB,EAsGjB,SAtGiB,EAuGjB,kBAvGiB,EAwGjB,kBAxGiB,EAyGjB,YAzGiB,EA0GjB,aA1GiB,EA2GjB,YA3GiB,EA4GjB,YA5GiB,EA6GjB,OA7GiB,EA8GjB,WA9GiB,EA+GjB,aA/GiB,EAgHjB,UAhHiB,EAiHjB,QAjHiB;AAmHjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OA/KiB;AAiLjB;AACA;AACA;AACA;AACA;AACA,aAtLiB,EAuLjB,mBAvLiB;AAyLjB;AACA;AACA;AACA,qBA5LiB,EA6LjB,oBA7LiB,EA8LjB,qBA9LiB;AAgMjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAxMiB,CAAZ;AA0MP,AAAO,IAAIC,QAAQ,GAAG,CACpB,oBADoB,EAEpB,6BAFoB,EAGpB,UAHoB,EAIpB,mBAJoB,CAAf;AAOP,AAAO,IAAInX,SAAO,GAAI9L,IAAD,IAAUgjB,KAAK,CAAC/qB,QAAN,CAAe+H,IAAf,CAAxB;AACP,AAAO,IAAIkjB,UAAU,GAAIljB,IAAD,IAAUijB,QAAQ,CAAChrB,QAAT,CAAkB+H,IAAlB,CAA3B;;AClNP,eAAe;AACbM,EAAAA,KAAK,EAAE,IADM;AAEbJ,EAAAA,QAAQ,EAAE,IAFG;AAGbD,EAAAA,QAAQ,EAAE,IAHG;AAIb0E,EAAAA,MAAM,EAAE,IAJK;AAKbS,EAAAA,SAAS,EAAE,IALE;AAMbC,EAAAA,SAAS,EAAE,IANE;AAObN,EAAAA,MAAM,EAAE,IAPK;AAQbC,EAAAA,YAAY,EAAE,IARD;AASbC,EAAAA,UAAU,EAAE,IATC;AAUbC,EAAAA,WAAW,EAAE,IAVA;AAWbC,EAAAA,SAAS,EAAE,IAXE;AAYbO,EAAAA,OAAO,EAAE,IAZI;AAabC,EAAAA,aAAa,EAAE,IAbF;AAcbC,EAAAA,WAAW,EAAE,IAdA;AAebC,EAAAA,YAAY,EAAE,IAfD;AAgBbC,EAAAA,UAAU,EAAE,IAhBC;AAiBbxB,EAAAA,MAAM,EAAE,IAjBK;AAkBbM,EAAAA,IAAI,EAAE,IAlBO;AAmBboB,EAAAA,KAAK,EAAE,IAnBM;AAoBbe,EAAAA,GAAG,EAAE,IApBQ;AAqBbtB,EAAAA,OAAO,EAAE,IArBI;AAsBbD,EAAAA,OAAO,EAAE,IAtBI;AAuBb2B,EAAAA,MAAM,EAAE,IAvBK;AAwBbV,EAAAA,aAAa,EAAE,IAxBF;AAyBbC,EAAAA,aAAa,EAAE,IAzBF;AA0BbE,EAAAA,YAAY,EAAE,IA1BD;AA2Bb8Z,EAAAA,YAAY,EAAE,IA3BD;AA4Bb3a,EAAAA,WAAW,EAAE,IA5BA;AA6BbK,EAAAA,KAAK,EAAE,IA7BM;AA8BbC,EAAAA,MAAM,EAAE,IA9BK;AA+BbC,EAAAA,MAAM,EAAE,IA/BK;AAgCbU,EAAAA,UAAU,EAAE,IAhCC;AAiCbC,EAAAA,UAAU,EAAE,IAjCC;AAkCbrD,EAAAA,sBAAsB,EAAE,IAlCX;AAmCbC,EAAAA,uBAAuB,EAAE,IAnCZ;AAoCbC,EAAAA,iBAAiB,EAAE,IApCN;AAqCbC,EAAAA,eAAe,EAAE,IArCJ;AAsCbC,EAAAA,YAAY,EAAE,IAtCD;AAuCbC,EAAAA,gBAAgB,EAAE,IAvCL;AAwCbC,EAAAA,mBAAmB,EAAE,IAxCR;AAyCbC,EAAAA,oBAAoB,EAAE,IAzCT;AA0CbC,EAAAA,cAAc,EAAE,IA1CH;AA2CbC,EAAAA,WAAW,EAAE,IA3CA;AA4CbK,EAAAA,QAAQ,EAAE,IA5CG;AA6Cbsc,EAAAA,UAAU,EAAE,IA7CC;AA8Cbnc,EAAAA,aAAa,EAAE,IA9CF;AA+CbC,EAAAA,UAAU,EAAE,IA/CC;AAgDboC,EAAAA,WAAW,EAAE,IAhDA;AAiDbX,EAAAA,eAAe,EAAE,IAjDJ;AAkDbC,EAAAA,gBAAgB,EAAE;AAlDL,CAAf;;ACqFA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI2c,SAAS,GAAG,qEAAhB;AACA,IAAIC,KAAK,GAAG,iQAAZ;AACA,IAAIC,KAAK,GAAG,qDAAZ;AACA,IAAIC,IAAI,GAAG,iBAAX;AACA,IAAIC,OAAO,GAAG,8BAAd;AACA,AAAO,IAAIC,aAAa,GAAG,CACzB,OADyB,EAEzB,MAFyB,EAGzB,QAHyB,EAIzB,OAJyB,EAKzB,QALyB,EAMzB,MANyB,CAApB;AAQP,IAAIC,OAAO,GAAG,SAAd;AACA,IAAIC,KAAK,GAAG,oBAAZ;AACA,IAAIC,QAAQ,GAAG,kCAAf;AACA,IAAIC,GAAG,GAAG,YAAV;AACA,IAAIC,SAAS,GAAG,qGAAhB;AACA,IAAIC,IAAI,GAAG,iCAAX;AACA,IAAIC,qBAAqB,GAAG;AAC1BC,EAAAA,MAAM,EAAE,CAAC,aAAD,EAAgB,aAAhB,EAA+B,aAA/B,CADkB;AAE1BC,EAAAA,YAAY,EAAE,CAAC,mBAAD,EAAsB,mBAAtB,EAA2C,mBAA3C,CAFY;AAG1BC,EAAAA,SAAS,EAAE,CAAC,gBAAD,EAAmB,gBAAnB,EAAqC,gBAArC,CAHe;AAI1BC,EAAAA,WAAW,EAAE,CAAC,kBAAD,EAAqB,kBAArB,EAAyC,kBAAzC,CAJa;AAK1BC,EAAAA,UAAU,EAAE,CAAC,iBAAD,EAAoB,iBAApB,EAAuC,iBAAvC,CALc;AAM1BpgB,EAAAA,YAAY,EAAE,CACZ,qBADY,EAEZ,sBAFY,EAGZ,wBAHY,EAIZ,yBAJY,CANY;AAY1BqgB,EAAAA,SAAS,EAAE,CACT,eADS,EAET,eAFS,EAGT,YAHS,EAIT,cAJS,EAKT,aALS,CAZe;AAmB1BC,EAAAA,IAAI,EAAE,CAAC,UAAD,EAAa,YAAb,EAA2B,WAA3B,CAnBoB;AAoB1Bvf,EAAAA,MAAM,EAAE,CAAC,WAAD,EAAc,aAAd,EAA6B,cAA7B,EAA6C,YAA7C,CApBkB;AAqB1BW,EAAAA,OAAO,EAAE,CAAC,YAAD,EAAe,cAAf,EAA+B,eAA/B,EAAgD,aAAhD,CArBiB;AAsB1B6e,EAAAA,UAAU,EAAE,CAAC,eAAD,EAAkB,eAAlB,EAAmC,YAAnC,EAAiD,aAAjD,CAtBc;AAuB1B9e,EAAAA,OAAO,EAAE,CAAC,cAAD,EAAiB,cAAjB,EAAiC,cAAjC,CAvBiB;AAwB1B+e,EAAAA,QAAQ,EAAE,CAAC,WAAD,EAAc,WAAd,CAxBgB;AAyB1BpX,EAAAA,SAAS,EAAE,CACT,QADS,EAET,SAFS,EAGT,SAHS,EAIT,OAJS,EAKT,YALS,EAMT,YANS,CAzBe;AAiC1BgM,EAAAA,eAAe,EAAE,CAAC,kBAAD,EAAqB,kBAArB;AAjCS,CAA5B;AAmCA,IAAIqL,IAAI,GAAG,SAAX;AACA,IAAIC,YAAY,GAAG,UAAnB;;AAEA,IAAIC,IAAI,GAAG,oCAAX;AAEA,AAAO,IAAI3c,EAAE,GAAG,CAAC4c,KAAD,EAAQ9B,IAAR,KAAiB8B,KAAK,CAAC1hB,IAAN,CAAW4f,IAAX,CAA1B;AAEP;;AACA,AAAO,IAAI+B,WAAW,GAAI/B,IAAD,IAAUA,IAAI,CAAC1jB,MAAL,GAAc,GAAd,IAAqB4I,EAAE,CAACmb,SAAD,EAAYL,IAAZ,CAAnD;AACP,AAAO,IAAI/W,OAAO,GAAI+W,IAAD,IAAU9a,EAAE,CAACob,KAAD,EAAQN,IAAR,CAA1B;AACP,AAAO,IAAIgC,OAAO,GAAIhC,IAAD,IAAU9a,EAAE,CAACqb,KAAD,EAAQP,IAAR,CAA1B;AACP,AAAO,IAAIiC,MAAM,GAAIjC,IAAD,IAAU9a,EAAE,CAACsb,IAAD,EAAOR,IAAP,CAAzB;AACP,AAAO,IAAI7W,SAAS,GAAI6W,IAAD,IAAU9a,EAAE,CAACub,OAAD,EAAUT,IAAV,CAA5B;AACP,AAAO,IAAIxW,UAAQ,GAAIwW,IAAD,IAAUA,IAAI,KAAK,QAAlC;AACP,AAAO,IAAIkC,SAAS,GAAIlC,IAAD,IAAU9a,EAAE,CAACyb,OAAD,EAAUX,IAAV,CAA5B;AACP,AAAO,IAAImC,WAAW,GAAInC,IAAD,IAAUA,IAAI,KAAK,EAArC;AACP,AACO,IAAIoC,OAAO,GAAIpC,IAAD,IAAU9a,EAAE,CAAC0b,KAAD,EAAQZ,IAAR,CAA1B;AACP,AAAO,IAAIjhB,UAAU,GAAIihB,IAAD,IAAUA,IAAI,KAAK,YAApC;AACP,AAAO,IAAIqC,UAAU,GAAIrC,IAAD,IAAU9a,EAAE,CAAC2b,QAAD,EAAWb,IAAX,CAA7B;AACP,AAAO,IAAI5R,OAAO,GAAI4R,IAAD,IAAU,CAAC9a,EAAE,CAAC6b,SAAD,EAAYf,IAAZ,CAAH,IAAwB,CAAC7W,SAAS,CAAC6W,IAAD,CAA1D;AACP,AAAO,IAAI3W,QAAM,GAAI2W,IAAD,IAAUA,IAAI,KAAK,MAAhC;AACP,AAAO,IAAIsC,KAAK,GAAItC,IAAD,IAAU9a,EAAE,CAAC4b,GAAD,EAAMd,IAAN,CAAxB;AACP,AAAO,IAAIuC,MAAM,GAAIvC,IAAD,IAAU9a,EAAE,CAAC8b,IAAD,EAAOhB,IAAP,CAAzB;AACP,AACO,IAAI5W,SAAO,GAAI4W,IAAD,IAAUA,IAAI,KAAK,OAAjC;AACP,AAAO,IAAIwC,sBAAsB,GAAItlB,IAAD,IAAUA,IAAI,IAAI+jB,qBAA/C;AACP,AACO,IAAIwB,MAAM,GAAIzC,IAAD,IAAU9a,EAAE,CAACyc,IAAD,EAAO3B,IAAP,CAAzB;AACP,AAAO,IAAI0C,aAAa,GAAI1C,IAAD,IAAU9a,EAAE,CAAC0c,YAAD,EAAe5B,IAAf,CAAhC;;AAEP,IAAIjrB,GAAG,GAAG,CAAC4tB,KAAD,EAAQ3C,IAAR,KAAiBA,IAAI,CAAChmB,KAAL,CAAW2oB,KAAX,CAA3B;;AAEA,IAAIC,WAAW,GAAG,CAACC,aAAD,EAAgB5c,UAAhB,KAA+B;AAC/C;AACA;AACA;AAEA,MAAI4c,aAAa,KAAK,QAAlB,IAA8B,CAAC5c,UAAU,CAACoM,QAA9C,EAAwD;AACtDpM,IAAAA,UAAU,CAACoM,QAAX,GAAsB,GAAtB;AACD,GAFD,MAEO,IAAIwQ,aAAa,KAAK,QAAtB,EAAgC;AACrC,QAAI,CAAC5c,UAAU,CAAC6c,OAAhB,EAAyB;AACvB7c,MAAAA,UAAU,CAAC6c,OAAX,GAAqB,GAArB;AACD;;AACD,QAAI,CAAC7c,UAAU,CAAC8c,QAAhB,EAA0B;AACxB9c,MAAAA,UAAU,CAAC8c,QAAX,GAAsB,EAAtB;AACD;AACF;;AACD,SAAO9c,UAAP;AACD,CAhBD;;AAkBA,AAAO,IAAI+c,YAAY,GAAIhD,IAAD,IAAU;AAClC;AACA,MAAI,CAACiD,CAAD,EAAI9c,YAAJ,EAAkB0c,aAAlB,EAAiCK,eAAjC,IAAoDnuB,GAAG,CAACsrB,SAAD,EAAYL,IAAZ,CAA3D;AACA,MAAI/Z,UAAU,GAAG;AACfoC,IAAAA,KAAK,EAAEwa;AADQ,GAAjB;;AAIA,MAAIK,eAAJ,EAAqB;AACnB,QAAInnB,MAAM,GAAGmnB,eAAe,CAACpqB,KAAhB,CAAsB,GAAtB,CAAb;;AACA,SAAK,IAAI2R,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1O,MAAM,CAACO,MAA3B,EAAmCmO,CAAC,GAAGA,CAAC,GAAG,CAA3C,EAA8C;AAC5CxE,MAAAA,UAAU,CAAClK,MAAM,CAAC0O,CAAD,CAAP,CAAV,GAAwB0Y,QAAQ,CAACpnB,MAAM,CAAC0O,CAAC,GAAG,CAAL,CAAP,CAAhC;AACD;AACF;;AAEDmY,EAAAA,WAAW,CAACC,aAAD,EAAgB5c,UAAhB,CAAX;AAEA,SAAO;AACL5P,IAAAA,EAAE,EAAEvC,MAAM,CAACC,IAAP,CAAYkS,UAAZ,EACDrO,IADC,GAEDxE,GAFC,CAEIa,GAAD,IAAU,GAAEA,GAAI,GAAEgS,UAAU,CAAChS,GAAD,CAAM,EAFrC,EAGDG,IAHC,CAGI,EAHJ,CADC;AAKL+R,IAAAA,YAAY,EAAEgd,QAAQ,CAAChd,YAAD,CALjB;AAMLF,IAAAA;AANK,GAAP;AAQD,CAxBM;AA0BP,AAAO,IAAImd,QAAQ,GAAIpD,IAAD,IAAU;AAC9B;AACA,MAAI,CAACiD,CAAD,EAAII,WAAJ,EAAiBne,EAAjB,EAAqBoe,EAArB,EAAyB7M,KAAzB,IAAkC1hB,GAAG,CAACwrB,KAAD,EAAQP,IAAR,CAAzC;AACA,SAAO;AACLvJ,IAAAA,KAAK,EAAEA,KAAK,IAAIvR,EADX;AAELA,IAAAA,EAAE,EAAEuR,KAAK,GAAGvR,EAAH,GAAQ,IAFZ;AAGLqe,IAAAA,KAAK,EAAEC,IAAI,CAACC,KAAL,CAAWJ,WAAW,CAAC/mB,MAAZ,GAAqB,CAAhC;AAHF,GAAP;AAKD,CARM;AASP,AAAO,IAAIonB,UAAU,GAAI1D,IAAD,IAAU;AAChC,MAAI;AACF,WAAOjrB,GAAG,CAAC4rB,OAAD,EAAUX,IAAV,CAAH,CAAmB2D,KAAnB,CAAyB,CAAzB,CAAP;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,WAAO,EAAP;AACD;AACF,CANM;AAQP,AAAO,IAAIC,OAAO,GAAIC,SAAD,IAAe;AAClC,MAAI,CAACA,SAAL,EAAgB,OAAO,IAAP;AAEhB,MAAI9pB,KAAK,GAAG8pB,SAAS,CAACjvB,KAAV,CAAgBmF,KAAhB,CAAsB,4BAAtB,CAAZ;AACA,MAAI,CAACA,KAAL,EAAY,OAAO,IAAP;AAEZ,MAAIxG,IAAI,GAAGwG,KAAK,CAAC,CAAD,CAAhB;AACA,MAAI,CAACof,OAAO,GAAG,IAAX,IAAmB,KAAKhZ,IAAL,CAAU5M,IAAV,IAAkBA,IAAI,CAACsF,KAAL,CAAW,GAAX,CAAlB,GAAoC,CAACtF,IAAD,CAA3D;AAEA,SAAO;AAAEA,IAAAA,IAAF;AAAQ4lB,IAAAA;AAAR,GAAP;AACD,CAVM;AAYP,AAAO,IAAI2K,aAAa,GAAID,SAAD,IAAe;AACxC,MAAI,CAACA,SAAD,IAAc,CAACA,SAAS,CAACjvB,KAA7B,EAAoC,OAAO,IAAP;AACpC,MAAI,CAACwkB,QAAD,EAAWC,SAAX,IAAwBwK,SAAS,CAACjvB,KAAV,CAAgBiE,KAAhB,CAAsB,GAAtB,CAA5B;AACA,SAAO;AACL3C,IAAAA,IAAI,EAAE,IADD;AAELkjB,IAAAA,QAFK;AAGLC,IAAAA;AAHK,GAAP;AAKD,CARM;AAUP,AAAO,IAAI0K,eAAe,GAAIF,SAAD,IAAe;AAC1C,MAAI,CAACA,SAAD,IAAc,CAACA,SAAS,CAACjvB,KAA7B,EAAoC,OAAO,IAAP;AACpC,MAAI,CAACA,KAAD,EAAQ2kB,QAAR,IAAoBsK,SAAS,CAACjvB,KAAV,CAAgBiE,KAAhB,CAAsB,GAAtB,CAAxB;AACA,SAAO;AACL3C,IAAAA,IAAI,EAAE,IADD;AAELtB,IAAAA,KAFK;AAGL2kB,IAAAA,QAAQ,EAAEA,QAAQ,KAAK;AAHlB,GAAP;AAKD,CARM;AAUP,AAAO,IAAIyK,SAAS,GAAIjE,IAAD,IAAU;AAC/B,MAAI/Z,UAAU,GAAG,EAAjB;AACA,MAAIlK,MAAM,GAAGikB,IAAI,CAAClnB,KAAL,CAAW,GAAX,CAAb;AACA,MAAIorB,SAAS,GAAGnoB,MAAM,CAAC,CAAD,CAAtB;;AAEA,MAAIA,MAAM,CAACO,MAAP,KAAkB,CAAtB,EAAyB;AACvB2J,IAAAA,UAAU,CAACie,SAAD,CAAV,GAAwBnoB,MAAM,CAAC,CAAD,CAA9B;AACD,GAFD,MAEO;AACLkK,IAAAA,UAAU,CAACie,SAAD,CAAV,GAAwB,EAAxB;;AACA,SAAK,IAAIzZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1O,MAAM,CAACO,MAA3B,EAAmCmO,CAAC,GAAGA,CAAC,GAAG,CAA3C,EAA8C;AAC5CxE,MAAAA,UAAU,CAACie,SAAD,CAAV,CAAsBnoB,MAAM,CAAC0O,CAAD,CAA5B,IAAmC0Y,QAAQ,CAACpnB,MAAM,CAAC0O,CAAC,GAAG,CAAL,CAAP,CAA3C;AACD;AACF;;AAED,SAAOxE,UAAP;AACD,CAfM;AAgBP,AAAO,IAAIJ,SAAO,GAAIma,IAAD,IAAU;AAC7B;AACA,MAAI,CAACiD,CAAD,EAAI/lB,IAAJ,EAAUomB,EAAV,EAAczuB,KAAK,GAAG,EAAtB,IAA4BE,GAAG,CAACisB,IAAD,EAAOhB,IAAP,CAAnC;AAEA,MAAIha,IAAI,GAAG;AAAE9I,IAAAA,IAAF;AAAQwH,IAAAA,MAAM,EAAE,KAAhB;AAAuB7P,IAAAA;AAAvB,GAAX;;AAEA,MAAIqQ,EAAE,CAAC2c,IAAD,EAAOhtB,KAAP,CAAN,EAAqB;AACnB,QAAI;AAEFsvB,IAAAA,EAFE,EAGFC,SAAS,GAAG,KAHV,EAIFtd,QAAQ,GAAG,EAJT;AAMFud,IAAAA,EANE;AAQFle,IAAAA,YAAY,GAAG,EARb,IASAme,OAAO,CAACzvB,KAAD,CATX;AAWAmR,IAAAA,IAAI,CAACtB,MAAL,GAAc,IAAd;AACAsB,IAAAA,IAAI,CAACoe,SAAL,GAAiBA,SAAS,KAAK,GAA/B;AACApe,IAAAA,IAAI,CAACc,QAAL,GAAgBA,QAAhB;AACAd,IAAAA,IAAI,CAACnR,KAAL,GAAasR,YAAY,IAAItR,KAA7B;AACD;;AAED,SAAOmR,IAAP;AACD,CAzBM;AA0BP,AAAO,IAAIse,OAAO,GAAItE,IAAD,IAAUjrB,GAAG,CAAC8sB,IAAD,EAAO7B,IAAP,CAAH,CAAgB2D,KAAhB,CAAsB,CAAtB,CAAxB;AACP,AAAO,IAAIY,+BAA+B,GAAG,CAACrnB,IAAD,EAAOrI,KAAP,KAAiB;AAC5D,MAAI2V,KAAK,GAAGyW,qBAAqB,CAAC/jB,IAAD,CAAjC;;AAEA,MAAIA,IAAI,KAAK,cAAb,EAA6B;AAC3B,QAAIsnB,QAAQ,GAAG3vB,KAAK,CAACmB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAf;AAEA,WAAO,CACJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAGga,QAAS,EADnB,EAEJ,GAAEha,KAAK,CAAC,CAAD,CAAI,IAAGga,QAAS,EAFnB,EAGJ,GAAEha,KAAK,CAAC,CAAD,CAAI,IAAGga,QAAS,EAHnB,EAIJ,GAAEha,KAAK,CAAC,CAAD,CAAI,IAAGga,QAAS,EAJnB,CAAP;AAMD,GATD,MASO,IAAItnB,IAAI,CAACrG,UAAL,CAAgB,QAAhB,KAA6BqG,IAAI,KAAK,SAA1C,EAAqD;AAC1D,QAAI,CAACM,KAAD,EAAQtH,KAAR,EAAe,GAAG8nB,KAAlB,IAA2BnpB,KAAK,CAACiE,KAAN,CAAY,GAAZ,CAA/B;AAEA,WAAO,CACJ,GAAE0R,KAAK,CAAC,CAAD,CAAI,IAAGhN,KAAK,CAACxH,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAwB,EADlC,EAEJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAGtU,KAAM,EAFhB,EAGJ,GAAEsU,KAAK,CAAC,CAAD,CAAI,IAAGwT,KAAK,CAAC5pB,IAAN,CAAW,GAAX,CAAgB,EAH1B,CAAP;AAKD,GARM,MAQA,IAAI8I,IAAI,KAAK,WAAb,EAA0B;AAC/B,QAAI,CAACsF,OAAD,EAAUC,OAAV,EAAmB5B,UAAnB,EAA+BmD,YAA/B,EAA6C,GAAGga,KAAhD,IAAyDnpB,KAAK,CAACiE,KAAN,CAC3D,GAD2D,CAA7D;AAIA,WAAO,CACJ,GAAE0R,KAAK,CAAC,CAAD,CAAI,IAAGhI,OAAO,CAACxM,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EADpC,EAEJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAG/H,OAAO,CAACzM,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EAFpC,EAGJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAG3J,UAAU,CAAC7K,OAAX,CAAmB,IAAnB,EAAyB,EAAzB,CAA6B,EAHvC,EAIJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAGxG,YAAY,CAAChO,OAAb,CAAqB,IAArB,EAA2B,EAA3B,CAA+B,EAJzC,EAKJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAGwT,KAAK,CAAC5pB,IAAN,CAAW,GAAX,CAAgB,EAL1B,CAAP;AAOD,GAZM,MAYA,IAAI8I,IAAI,KAAK,YAAb,EAA2B;AAChC,QAAI,CAACsF,OAAD,EAAUC,OAAV,EAAmB5B,UAAnB,EAA+B,GAAGmd,KAAlC,IAA2CnpB,KAAK,CAACiE,KAAN,CAAY,GAAZ,CAA/C;AAEA,WAAO,CACJ,GAAE0R,KAAK,CAAC,CAAD,CAAI,IAAGhI,OAAO,CAACxM,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EADpC,EAEJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAG/H,OAAO,CAACzM,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EAFpC,EAGJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAG3J,UAAU,CAAC7K,OAAX,CAAmB,IAAnB,EAAyB,EAAzB,CAA6B,EAHvC,EAIJ,GAAEwU,KAAK,CAAC,CAAD,CAAI,IAAGwT,KAAK,CAAC5pB,IAAN,CAAW,GAAX,CAAgB,EAJ1B,CAAP;AAMD,GATM,MASA,IAAI8I,IAAI,KAAK,UAAb,EAAyB;AAC9B,WAAO,CAAE,GAAEsN,KAAK,CAAC,CAAD,CAAI,IAAG3V,KAAM,EAAtB,EAA0B,GAAE2V,KAAK,CAAC,CAAD,CAAI,IAAG3V,KAAM,EAA9C,CAAP;AACD,GAFM,MAEA,IAAIqI,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,QAAnC,EAA6C;AAClD,QAAI,CAAC+G,GAAD,EAAMf,KAAN,EAAa1B,MAAb,EAAqBM,IAArB,IAA6BjN,KAAK,CAACiE,KAAN,CAAY,GAAZ,CAAjC;AACAmL,IAAAA,GAAG,GAAGA,GAAG,CAACjO,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;AACAkN,IAAAA,KAAK,GAAGA,KAAK,GAAGA,KAAK,CAAClN,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAH,GAA6BiO,GAA1C;AACAzC,IAAAA,MAAM,GAAGA,MAAM,GAAGA,MAAM,CAACxL,OAAP,CAAe,IAAf,EAAqB,EAArB,CAAH,GAA8BiO,GAA7C;AACAnC,IAAAA,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC9L,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAH,GAA4BkN,KAAK,IAAIe,GAAhD;AAEA,WAAO,CACJ,GAAEuG,KAAK,CAAC,CAAD,CAAI,IAAGvG,GAAI,EADd,EAEJ,GAAEuG,KAAK,CAAC,CAAD,CAAI,IAAGtH,KAAM,EAFhB,EAGJ,GAAEsH,KAAK,CAAC,CAAD,CAAI,IAAGhJ,MAAO,EAHjB,EAIJ,GAAEgJ,KAAK,CAAC,CAAD,CAAI,IAAG1I,IAAK,EAJf,CAAP;AAMD,GAbM,MAaA,IAAI5E,IAAI,KAAK,MAAb,EAAqB;AAC1B,WAAO,CAAE,YAAWrI,KAAM,EAAnB,EAAsB,cAAtB,EAAsC,cAAtC,CAAP;AACD,GAFM,MAEA,IAAIqI,IAAI,KAAK,WAAb,EAA0B;AAC/B,WAAO,CAAE,uCAAF,CAAP;AACD,GAFM,MAEA,IAAIA,IAAI,KAAK,iBAAb,EAAgC;AACrC,QAAI,CAACunB,CAAD,EAAIC,CAAJ,IAAS7vB,KAAK,CAACiE,KAAN,CAAY,GAAZ,CAAb;AACA,WAAO,CAAE,GAAE0R,KAAK,CAAC,CAAD,CAAI,IAAGia,CAAE,EAAlB,EAAsB,GAAEja,KAAK,CAAC,CAAD,CAAI,IAAGka,CAAC,IAAID,CAAE,EAA3C,CAAP;AACD;;AAED,SAAO,EAAP;AACD,CAlEM;AAmEP,AAAO,IAAItB,QAAQ,GAAG,CAACtuB,KAAD,EAAQqI,IAAR,KAAiB;AACrC,MAAIklB,OAAO,CAACvtB,KAAD,CAAX,EAAoB;AAClB,WAAO8vB,UAAU,CAAC9vB,KAAD,EAAQ,EAAR,CAAjB;AACD,GAFD,MAEO,IAAIytB,KAAK,CAACztB,KAAD,CAAT,EAAkB;AACvB,WAAO2hB,QAAQ,CAAC3hB,KAAD,EAAQ,EAAR,CAAf;AACD,GAFM,MAEA,IAAIstB,WAAW,CAACttB,KAAD,CAAf,EAAwB;AAC7B,WAAO,EAAP;AACD,GAFM,MAEA,IAAIotB,MAAM,CAACptB,KAAD,CAAV,EAAmB;AACxB,WAAO4tB,MAAM,CAAC5tB,KAAD,CAAb;AACD,GAFM,MAEA;AACL,WAAO4X,qBAAmB,CAAC5X,KAAD,EAAQqI,IAAR,CAA1B;AACD;AACF,CAZM;AAcP,IAAI0nB,aAAa,GAAG,CAClB,YADkB,EAElB,WAFkB;AAIlB,eAJkB;AAMlB;AANkB,CAApB;AAQA,AAAO,IAAIC,aAAa,GAAI3nB,IAAD,IAAU0nB,aAAa,CAACzvB,QAAd,CAAuB+H,IAAvB,CAA9B;;AAEP,IAAI4nB,YAAY,GAAI5nB,IAAD,IAAUA,IAAI,KAAK,QAAT,IAAqB,WAAWkD,IAAX,CAAgBlD,IAAhB,CAAlD;;AAEA,AAAO,IAAI6nB,WAAW,GAAG,CAACtO,KAAD,EAAQvZ,IAAR,EAAciJ,YAAd,KACvBsQ,KAAK,CAACpN,MAAN,IAAgBnM,IAAI,KAAK,MAAzB,GACI,OADJ,GAEI4nB,YAAY,CAAC5nB,IAAD,CAAZ,GACA,UADA,GAEA8nB,QAAQ,CAAC9nB,IAAD,CAAR,GACA,QADA,GAEA,QAPC;AASP,IAAIsP,8BAA4B,GAAG,CACjC,cADiC,EAEjC,YAFiC,EAGjC,WAHiC,EAIjC,qBAJiC,EAKjC,gBALiC,EAMjC,iBANiC,EAOjC,kBAPiC,EAQjC,WARiC,EASjC,OATiC,EAUjC,QAViC,EAWjC,WAXiC,EAYjC,eAZiC,EAajC,UAbiC,EAcjC,UAdiC,EAejC,OAfiC,EAgBjC,aAhBiC,EAiBjC,gBAjBiC,EAkBjC,WAlBiC,EAmBjC,cAnBiC,EAoBjC,WApBiC,EAqBjC,oBArBiC,EAsBjC,eAtBiC,EAuBjC,YAvBiC,EAwBjC,WAxBiC,CAAnC;AA2BA,AAAO,IAAIC,qBAAmB,GAAG,CAAC5X,KAAD,EAAQqI,IAAR,KAC/BsP,8BAA4B,CAACrX,QAA7B,CAAsC+H,IAAtC,KAA+C,cAAckD,IAAd,CAAmBvL,KAAnB,CAA/C,GACI6X,UAAU,CAAC7X,KAAD,CADd,GAEIA,KAHC;AAKP,AAAO,SAASowB,UAAT,CAAoBlgB,MAApB,EAA4B;AACjC,MAAI4K,SAAS,GAAG5K,MAAM,CAAC1E,IAAP,CAAa/M,IAAD,IAAUA,IAAI,CAACwT,QAAL,KAAkB,WAAxC,CAAhB;AACA,MAAIiJ,UAAU,GAAGhL,MAAM,CAAC1E,IAAP,CAAa/M,IAAD,IAAUA,IAAI,CAACwT,QAAL,KAAkB,YAAxC,CAAjB;AACA,MAAIkJ,iBAAiB,GAAGjL,MAAM,CAAC1E,IAAP,CACrB/M,IAAD,IAAUA,IAAI,CAACwT,QAAL,KAAkB,mBADN,CAAxB;AAIA,SAAO,CACLkJ,iBADK,EAELD,UAFK,EAGLJ,SAHK,EAIL,GAAG5K,MAAM,CAAC/Q,MAAP,CACAV,IAAD,IACE,CAAC,6CAA6C8M,IAA7C,CAAkD9M,IAAI,CAACwT,QAAvD,CAFF,CAJE,EAQL9S,MARK,CAQE0S,OARF,CAAP;AASD;;ACjdD,cAAe,CAACsZ,IAAD,EAAOkF,OAAP,EAAgBC,OAAhB,MAA6B;AAC1CpF,EAAAA,KAAK,EAAE;AACLC,IAAAA,IADK;AAELoF,IAAAA,MAAM,EAAEF;AAFH,GADmC;AAK1CG,EAAAA,GAAG,EAAE;AACHrF,IAAAA,IADG;AAEHoF,IAAAA,MAAM,EAAED;AAFL;AALqC,CAA7B,CAAf;;ACQA,IAAIG,UAAU,GAAG,CACf,QADe,EAEf,UAFe,EAGf,SAHe,EAIf,QAJe,EAKf,WALe,EAMf,aANe,EAOf,YAPe,EAQf,aARe,EASf,YATe,EAUf,aAVe,EAWf,QAXe,EAYf,SAZe,EAaf,SAbe,EAcf,aAde,EAef,cAfe,EAgBf,cAhBe,EAiBf,aAjBe,EAkBf,aAlBe,EAmBf,WAnBe,EAoBf,SApBe,EAqBf,QArBe,EAsBf,MAtBe,CAAjB;;AAwBA,IAAIC,YAAY,GAAG,CAACvf,IAAD,EAAOyQ,KAAP,KACjB6O,UAAU,CAACnwB,QAAX,CAAoB6Q,IAApB,KAA8ByQ,KAAK,CAACpN,MAAN,IAAgBrD,IAAI,KAAK,MADzD;;AAGA,eAAe,CAAC;AAAE9I,EAAAA,IAAF;AAAQwH,EAAAA,MAAR;AAAgB0f,EAAAA,SAAhB;AAA2BvvB,EAAAA,KAA3B;AAAkC4hB,EAAAA;AAAlC,CAAD,KAA+C;AAC5D,MAAItP,IAAI,GAAG,EAAX;AAEA,MAAI4a,WAAW,CAACltB,KAAD,CAAX,IAAsBqI,IAAI,KAAK,MAA/B,IAAyCA,IAAI,KAAK,WAAtD,EACEiK,IAAI,CAACiB,SAAL,GAAiB,IAAjB;AACF,MAAIY,SAAO,CAAC9L,IAAD,CAAX,EAAmBiK,IAAI,CAACjR,KAAL,GAAa,IAAb;;AACnB,MAAIkqB,UAAU,CAACljB,IAAD,CAAd,EAAsB;AACpBiK,IAAAA,IAAI,CAACjR,KAAL,GAAa,IAAb;AACAiR,IAAAA,IAAI,CAACqe,QAAL,GAAgB,IAAhB;AACD;;AACD,MACEhD,sBAAsB,CAACtlB,IAAD,CAAtB,IACAuZ,KAAK,CAACxN,OADN,IAEA,CAACwN,KAAK,CAACvZ,IAAN,CAAWrG,UAAX,CAAsB,KAAtB,CAHH,EAIE;AACAsQ,IAAAA,IAAI,CAACmN,oBAAL,GAA4B,IAA5B;AACD;;AAED,MAAIiR,YAAY,CAACroB,IAAD,EAAOuZ,KAAP,CAAhB,EAA+BtP,IAAI,CAACoe,YAAL,GAAoB,IAApB;AAC/B,MAAI7gB,MAAJ,EAAYyC,IAAI,CAACC,IAAL,GAAY,IAAZ;AACZ,MAAIgd,SAAJ,EAAejd,IAAI,CAACid,SAAL,GAAiB,IAAjB;AAEfjd,EAAAA,IAAI,CAACse,SAAL,GAAiBte,IAAI,CAACC,IAAL,IAAcD,IAAI,CAACoe,YAAL,IAAqBpe,IAAI,CAACC,IAAxC,IAAiD,IAAlE;AAEA,MAAIrI,UAAU,CAAC7B,IAAD,CAAd,EAAsBiK,IAAI,CAACue,QAAL,GAAgB,IAAhB;AAEtB,SAAOve,IAAP;AACD,CA3BD;;ACAA,aAAe,CAAC;AACdwe,EAAAA,kBAAkB,GAAG,IADP;AAEd1tB,EAAAA,WAFc;AAGd2tB,EAAAA,kBAAkB,GAAG,IAHP;AAIdxvB,EAAAA,IAJc;AAKdC,EAAAA,EALc;AAMdwvB,EAAAA,YAAY,GAAG,IAND;AAOdC,EAAAA,gBAAgB,GAAG,IAPL;AAQdC,EAAAA,uBAAuB,GAAG,KARZ;AASd9J,EAAAA,MATc;AAUdppB,EAAAA,GAVc;AAWdG,EAAAA;AAXc,CAAD,KAYT;AACJ;AACA,MAAI8Z,IAAI,GAAGmP,MAAM,CAACjmB,OAAP,CAAe,OAAf,EAAwB,IAAxB,CAAX;AACA,MAAIgwB,MAAM,GAAGlZ,IAAI,CAAChU,KAAL,CAAW,IAAX,CAAb;AACA,MAAImtB,KAAK,GAAGD,MAAM,CAAC5yB,GAAP,CAAY4sB,IAAD,IAAUA,IAAI,CAACkG,SAAL,EAArB,CAAZ;AACA,MAAIC,WAAW,GAAGF,KAAK,CAACrc,SAAN,CAAiBoW,IAAD,IAAU,WAAW5f,IAAX,CAAgB4f,IAAhB,CAA1B,CAAlB;;AACA,MAAImG,WAAW,KAAK,CAAC,CAArB,EAAwB;AACtBF,IAAAA,KAAK,GAAGA,KAAK,CAACtC,KAAN,CAAY,CAAZ,EAAewC,WAAf,CAAR;AACD;;AACD,MAAIxuB,KAAK,GAAG,EAAZ;AACA,MAAIwW,4BAA4B,GAAG,KAAnC;AACA,MAAIqR,KAAK,GAAG,EAAZ;AACA,MAAIlI,KAAK,GAAG,EAAZ;AACA,MAAI2B,WAAW,GAAG,KAAlB;AACA,MAAIC,UAAU,GAAG,KAAjB;AACA,MAAIkN,gBAAgB,GAAGhwB,IAAI,CAACiwB,QAAL,CAAc,OAAd,IAAyB,MAAzB,GAAkC,OAAzD;AACA,MAAI1tB,IAAI,GAAG,IAAX;AACA,MAAI2tB,WAAW,GAAG,IAAI5yB,GAAJ,EAAlB;AACA,MAAIisB,QAAQ,GAAG,EAAf,CAlBI;AAqBJ;AACA;AACA;AACA;AACA;;AAEA,MAAI4G,QAAQ,GAAG,EAAf;;AACA,WAASC,UAAT,CAAoB3nB,IAApB,EAA0B;AACxB,QAAI4nB,OAAO,GAAG5nB,IAAI,CAACqG,EAAL,IAAWrG,IAAI,CAAC3B,IAA9B;;AAEA,QAAI,CAACqpB,QAAQ,CAACpxB,QAAT,CAAkBsxB,OAAlB,CAAL,EAAiC;AAC/BF,MAAAA,QAAQ,CAACrqB,IAAT,CAAcuqB,OAAd;AACA,aAAOA,OAAP;AACD;;AAED,QAAIjrB,KAAK,GAAG,CAAZ;;AACA,WAAO+qB,QAAQ,CAACpxB,QAAT,CAAmB,GAAEsxB,OAAQ,GAAEjrB,KAAM,EAArC,CAAP,EAAgD;AAC9CA,MAAAA,KAAK;AACN;;AACD,QAAInF,EAAE,GAAI,GAAEowB,OAAQ,GAAEjrB,KAAM,EAA5B;AACA+qB,IAAAA,QAAQ,CAACrqB,IAAT,CAAc7F,EAAd;AACA,WAAOA,EAAP;AACD;;AAED,WAASqwB,YAAT,CAAsBjQ,KAAtB,EAA6B;AAC3B,QAAIA,KAAK,CAACxQ,UAAN,KAAqBoc,UAAU,CAAC5L,KAAK,CAACvZ,IAAP,CAAV,IAA0B,CAACuZ,KAAK,CAACxN,OAAtD,CAAJ,EAAoE;AAClE,UAAI0d,cAAc,GAAGlQ,KAAK,CAACxQ,UAAN,CAAiB5F,IAAjB,CAAuB1J,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAW,YAAxC,CAArB;AACA,UAAI,CAACypB,cAAL,EAAqB;AAErB,UAAIpxB,MAAM,GAAGoxB,cAAc,CAAC9xB,KAA5B;AAEA,UAAI+xB,cAAc,GAAGnQ,KAAK,CAACxQ,UAAN,CAAiB5F,IAAjB,CAAuB1J,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAW,YAAxC,CAArB;AACA,UAAIjH,MAAM,GAAG2wB,cAAc,GAAGA,cAAc,CAAC/xB,KAAf,CAAqBgyB,QAArB,EAAH,GAAqC,KAAhE;AAEA,UAAIC,aAAa,GAAGrQ,KAAK,CAACxQ,UAAN,CAAiB5F,IAAjB,CAAuB1J,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAW,WAAxC,CAApB;AACA,UAAIhH,KAAK,GAAG4wB,aAAa,GAAGA,aAAa,CAACjyB,KAAd,CAAoBgyB,QAApB,EAAH,GAAoC,QAA7D;;AAEA,UACE,CAAClvB,KAAK,CAAC0I,IAAN,CACEhL,IAAD,IACEA,IAAI,CAACE,MAAL,KAAgBA,MAAhB,IACAF,IAAI,CAACY,MAAL,KAAgBA,MADhB,IAEAZ,IAAI,CAACa,KAAL,KAAeA,KAJlB,CADH,EAOE;AACA,YAAIb,IAAI,GAAG;AACTgB,UAAAA,EAAE,EAAG,GAAEd,MAAO,IAAGU,MAAO,GAAEC,KAAK,KAAK,QAAV,GAAqB,SAArB,GAAiC,EAAG,EADrD;AAETN,UAAAA,YAAY,EAAEA,YAAY,CAACL,MAAD,CAFjB;AAGTA,UAAAA,MAHS;AAITU,UAAAA,MAJS;AAKTC,UAAAA;AALS,SAAX;;AAQA,YAAIb,IAAI,CAACO,YAAL,IAAqBqC,WAAW,CAAC9D,GAAZ,CAAgBkB,IAAI,CAACgB,EAArB,CAAzB,EAAmD;AACjDsB,UAAAA,KAAK,CAACuE,IAAN,CAAW7G,IAAX,EADiD;AAIjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACF;AACF;AACF;;AAED,WAAS0xB,gBAAT,CAA0BtQ,KAA1B,EAAiC;AAC/B,QAAIuQ,IAAI,GAAG,EAAX;AACAvQ,IAAAA,KAAK,CAACxQ,UAAN,CAAiB5S,OAAjB,CAA0B2S,IAAD,IAAU;AACjC,UAAI,EAAEA,IAAI,CAAC9I,IAAL,IAAa8pB,IAAf,CAAJ,EAA0B;AACxBA,QAAAA,IAAI,CAAChhB,IAAI,CAAC9I,IAAN,CAAJ,GAAkB,CAAlB;AACD;;AACD8pB,MAAAA,IAAI,CAAChhB,IAAI,CAAC9I,IAAN,CAAJ;AACD,KALD;AAOA,QAAI+pB,SAAS,GAAGnzB,MAAM,CAACC,IAAP,CAAYizB,IAAZ,EAAkBhzB,MAAlB,CAA0BkJ,IAAD,IAAU8pB,IAAI,CAAC9pB,IAAD,CAAJ,GAAa,CAAhD,CAAhB;;AAEA,QAAI+pB,SAAS,CAAC3qB,MAAV,GAAmB,CAAvB,EAA0B;AACxB2qB,MAAAA,SAAS,CAAC5zB,OAAV,CAAmB6J,IAAD,IAChByiB,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,QAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,QAAAA,IAAI,EAAG,iCAAgC+G,IAAK,IAAG8pB,IAAI,CAAC9pB,IAAD,CAAO,0EAF9C;AAGZ8iB,QAAAA,IAAI,EAAEiG,KAAK,CAACxP,KAAK,CAACqJ,GAAN,CAAUC,KAAV,CAAgBC,IAAhB,GAAuB,CAAxB;AAHC,OAAd,CADF;AAOD;AACF;;AAED,WAASqF,GAAT,CAAa5O,KAAb,EAAoByQ,OAApB,EAA6B;AAC3BzQ,IAAAA,KAAK,CAACqJ,GAAN,CAAUuF,GAAV,GAAgB;AACdrF,MAAAA,IAAI,EAAEkH,OAAO,GAAG,CADF;AAEd9B,MAAAA,MAAM,EAAE5B,IAAI,CAAC2D,GAAL,CAAS,CAAT,EAAYlB,KAAK,CAACiB,OAAD,CAAL,CAAe5qB,MAAf,GAAwB,CAApC;AAFM,KAAhB;;AAKA,QAAI,CAACma,KAAK,CAACxQ,UAAX,EAAuB;AACrBwQ,MAAAA,KAAK,CAACxQ,UAAN,GAAmB,EAAnB;AACD;;AAED,QACEwQ,KAAK,CAACvZ,IAAN,KAAe,MAAf,IACA,CAACuZ,KAAK,CAACxQ,UAAN,CAAiBjB,IAAjB,CAAuBgB,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAc,MAA9C,CAFH,EAGE;AACAyiB,MAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,QAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,QAAAA,IAAI,EAAG,+BAFK;AAGZ6pB,QAAAA,IAAI,EAAEiG,KAAK,CAACxP,KAAK,CAACqJ,GAAN,CAAUC,KAAV,CAAgBC,IAAhB,GAAuB,CAAxB;AAHC,OAAd;AAKD;;AAED,QAAIR,KAAK,CAACljB,MAAN,KAAiB,CAArB,EAAwB;AACtB;AACA3D,MAAAA,IAAI,GAAG8d,KAAP;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAED,WAAS2Q,UAAT,CAAoBpH,IAApB,EAA0BvV,CAA1B,EAA6B;AAC3B,QAAI;AAAEgM,MAAAA,KAAK,EAAEvZ,IAAT;AAAegI,MAAAA,EAAf;AAAmBqe,MAAAA;AAAnB,QAA6BH,QAAQ,CAACpD,IAAD,CAAzC;AACA,QAAIqH,iBAAiB,GAAG,KAAxB;AAEA,QAAIvY,UAAU,GAAG5R,IAAI,KAAK,UAA1B;;AACA,QAAI4R,UAAJ,EAAgB;AACdX,MAAAA,4BAA4B,GAAG,IAA/B;AACD;;AAED,QAAIsI,KAAK,GAAG;AACVtgB,MAAAA,IAAI,EAAE,OADI;AAEV+G,MAAAA,IAFU;AAGV2T,MAAAA,UAAU,EAAE,EAHF;AAIVD,MAAAA,UAAU,EAAE,KAJF;AAKV3H,MAAAA,OAAO,EAAEA,OAAO,CAAC/L,IAAD,CALN;AAMViM,MAAAA,SAAS,EAAEA,SAAS,CAACjM,IAAD,CANV;AAOVsM,MAAAA,QAAQ,EAAEA,UAAQ,CAACtM,IAAD,CAPR;AAQVkR,MAAAA,OAAO,EAAE,KARC;AASVU,MAAAA,UATU;AAUVyU,MAAAA,KAVU;AAWVzD,MAAAA,GAAG,EAAEwH,MAAM,CAAC7c,CAAC,GAAG,CAAL,EAAQ,CAAR,CAXD;AAYVxE,MAAAA,UAAU,EAAE,EAZF;AAaVlB,MAAAA,MAAM,EAAE;AAbE,KAAZ,CAT2B;AA0B3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAI,CAAC0R,KAAK,CAACxN,OAAX,EAAoB;AAClBqd,MAAAA,WAAW,CAAC3yB,GAAZ,CAAgB8iB,KAAK,CAACvZ,IAAtB;AACD;;AAED,QAAIgI,EAAJ,EAAQ;AACNuR,MAAAA,KAAK,CAACvR,EAAN,GAAWA,EAAX;AACD;;AACDuR,IAAAA,KAAK,CAACpgB,EAAN,GAAWmwB,UAAU,CAAC/P,KAAD,CAArB;AACA,QAAI8Q,IAAI,GAAG/H,KAAK,CAACA,KAAK,CAACljB,MAAN,GAAe,CAAhB,CAAhB;;AACA,WAAOirB,IAAI,IAAIA,IAAI,CAAChE,KAAL,IAAc9M,KAAK,CAAC8M,KAAnC,EAA0C;AACxC8B,MAAAA,GAAG,CAAC7F,KAAK,CAACgI,GAAN,EAAD,EAAc/c,CAAd,CAAH;AACA8c,MAAAA,IAAI,GAAG/H,KAAK,CAACA,KAAK,CAACljB,MAAN,GAAe,CAAhB,CAAZ;AACD;;AAED,QAAIirB,IAAJ,EAAU;AACRF,MAAAA,iBAAiB,GAAG,IAApB;;AAEA,UAAIE,IAAI,CAACnZ,OAAT,EAAkB;AAChB,YAAImZ,IAAI,CAACle,MAAT,EAAiB;AACf,cAAIoN,KAAK,CAACxN,OAAV,EAAmB;AACjB0W,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,cAAAA,IAAI,EAAG,kBAAiBsgB,KAAK,CAACvZ,IAAK,wDAFvB;AAGZ8iB,cAAAA,IAHY;AAIZyH,cAAAA,OAAO,EAAE;AAJG,aAAd;AAMD,WAPD,MAOO,IAAIF,IAAI,CAAC/Z,QAAL,CAAclR,MAAd,GAAuB,CAA3B,EAA8B;AACnCqjB,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,cAAAA,IAAI,EAAG,0CAAyCsgB,KAAK,CAACvZ,IAAK,8CAF/C;AAGZ8iB,cAAAA;AAHY,aAAd;AAKD,WANM,MAMA;AACLuH,YAAAA,IAAI,CAAC/Z,QAAL,CAActR,IAAd,CAAmBua,KAAnB;AACD;AACF,SAjBD,MAiBO,IAAIA,KAAK,CAACjN,QAAN,IAAkB,CAAC+d,IAAI,CAACne,OAA5B,EAAqC;AAC1CuW,UAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,YAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,YAAAA,IAAI,EAAG,2EAFK;AAGZ6pB,YAAAA;AAHY,WAAd;AAKD,SANM,MAMA;AACLuH,UAAAA,IAAI,CAAC/Z,QAAL,CAActR,IAAd,CAAmBua,KAAnB;AACD;AACF,OA3BD,MA2BO;AACL4O,QAAAA,GAAG,CAAC7F,KAAK,CAACgI,GAAN,EAAD,EAAc/c,CAAd,CAAH,CADK;;AAIL,YAAI8c,IAAI,CAACte,OAAT,EAAkB;AAChB0W,UAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,YAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,YAAAA,IAAI,EAAG,GAAEsgB,KAAK,CAACvR,EAAN,IAAYuR,KAAK,CAACvZ,IAAK,sBAC9BqqB,IAAI,CAACriB,EAAL,IAAWqiB,IAAI,CAACrqB,IACjB,QACCqqB,IAAI,CAACrqB,IACN,mFANW;AAOZ8iB,YAAAA;AAPY,WAAd;AASD,SAVD,MAUO;AACLL,UAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,YAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,YAAAA,IAAI,EAAG,GACLsgB,KAAK,CAACvR,EAAN,IAAYuR,KAAK,CAACvZ,IACnB,qIAJW;AAKZ8iB,YAAAA;AALY,WAAd;AAOD;AACF;AACF,KAtDD,MAsDO,IAAIrnB,IAAI,KAAK,IAAb,EAAmB;AACxBgnB,MAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,QAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GADC;AAEZ3pB,QAAAA,IAAI,EAAG,GACLsgB,KAAK,CAACvR,EAAN,IAAYuR,KAAK,CAACvZ,IACnB,4GAA2GkpB,gBAAiB,0CAC3H3P,KAAK,CAACvR,EAAN,IAAYuR,KAAK,CAACvZ,IACnB,4DACCuZ,KAAK,CAACvR,EAAN,IAAYuR,KAAK,CAACvZ,IACnB,qBARW;AASZ8iB,QAAAA;AATY,OAAd;AAWD;;AAED,QAAI5R,OAAO,CAAClR,IAAD,CAAX,EAAmB;AACjBuZ,MAAAA,KAAK,CAACrI,OAAN,GAAgB,IAAhB;AACAqI,MAAAA,KAAK,CAACpN,MAAN,GAAeA,QAAM,CAACnM,IAAD,CAArB;AACAuZ,MAAAA,KAAK,CAACrN,OAAN,GAAgBA,SAAO,CAAClM,IAAD,CAAvB;AACAuZ,MAAAA,KAAK,CAACjJ,QAAN,GAAiB,EAAjB;AACD;;AAED,QAAIiJ,KAAK,CAACxN,OAAN,KAAkBwN,KAAK,CAACvZ,IAAN,KAAe,MAAf,IAAyBuZ,KAAK,CAACvZ,IAAN,KAAe,OAA1D,CAAJ,EAAwE;AACtEuZ,MAAAA,KAAK,CAAC1X,UAAN,GAAmB,IAAnB;;AACA,UAAIygB,KAAK,CAACljB,MAAN,GAAe,CAAnB,EAAsB;AACpBqjB,QAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ/F,UAAAA,IAAI,EAAG,4BAA2BsgB,KAAK,CAACvZ,IAAK,+DADjC;AAEZ8iB,UAAAA,IAFY;AAGZF,UAAAA,GAAG,EAAErJ,KAAK,CAACqJ;AAHC,SAAd;AAKD;AACF,KATD,MASO,IAAIN,KAAK,CAACljB,MAAN,KAAiB,CAArB,EAAwB;AAC7BqjB,MAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ/F,QAAAA,IAAI,EAAG,4BAA2BiwB,gBAAiB,WAAU3P,KAAK,CAACvZ,IAAK,2CAA0CkpB,gBAAiB,oBADvH;AAEZpG,QAAAA,IAFY;AAGZF,QAAAA,GAAG,EAAErJ,KAAK,CAACqJ;AAHC,OAAd;AAKD;;AAED,QAAIuH,iBAAiB,IAAI7H,KAAK,CAACljB,MAAN,KAAiB,CAA1C,EAA6C;AAC3CkjB,MAAAA,KAAK,CAACtjB,IAAN,CAAWua,KAAX;AACD;;AAEDiR,IAAAA,UAAU,CAACjd,CAAD,EAAIgM,KAAJ,AAAA,CAAV;AACAiQ,IAAAA,YAAY,CAACjQ,KAAD,CAAZ;AACAsQ,IAAAA,gBAAgB,CAACtQ,KAAD,CAAhB;AACD;;AAED,WAASiR,UAAT,CAAoBjd,CAApB,EAAuBgM,KAAvB,EAA8B;AAC5B,QAAIkR,eAAe,GAAGld,CAAtB;;AACA,WACEkd,eAAe,GAAG1B,KAAK,CAAC3pB,MAAN,GAAe,CAAjC,IACA,CAAC0lB,OAAO,CAACiE,KAAK,CAAC0B,eAAe,GAAG,CAAnB,CAAN,CAFV,EAGE;AACAA,MAAAA,eAAe;AAChB;;AAED,QAAI1hB,UAAU,GAAG,EAAjB;AACA,QAAIlB,MAAM,GAAG,EAAb;AACA,QAAIE,KAAJ;AACA,QAAI2iB,OAAO,GAAG,KAAd;;AAEA,SAAK,IAAIC,CAAC,GAAGpd,CAAb,EAAgBod,CAAC,IAAIF,eAArB,EAAsCE,CAAC,EAAvC,EAA2C;AACzC,UAAI7H,IAAI,GAAGiG,KAAK,CAAC4B,CAAD,CAAL,CAASC,IAAT,EAAX;AAEA,UAAIxhB,QAAQ,GAAG,IAAf;;AAEA,UAAIic,MAAM,CAACvC,IAAD,CAAV,EAAkB;AAChB,YAAI;AAAE9iB,UAAAA,IAAF;AAAQwH,UAAAA,MAAR;AAAgBoC,UAAAA,QAAhB;AAA0Bsd,UAAAA,SAA1B;AAAqCvvB,UAAAA;AAArC,YAA+CgR,SAAO,CAACma,IAAD,CAA1D;AACA,YAAIF,GAAG,GAAGwH,MAAM,CAACO,CAAC,GAAG,CAAL,EAAQ7H,IAAI,CAACjoB,OAAL,CAAamF,IAAb,CAAR,EAA4B8iB,IAAI,CAAC1jB,MAAL,GAAc,CAA1C,CAAhB;AAEA,YAAI6K,IAAI,GAAG4gB,OAAO,CAAC;AACjB7qB,UAAAA,IADiB;AAEjBwH,UAAAA,MAFiB;AAGjB0f,UAAAA,SAHiB;AAIjBvvB,UAAAA,KAJiB;AAKjB4hB,UAAAA;AALiB,SAAD,CAAlB;;AAQA,YAAIA,KAAK,CAACxN,OAAV,EAAmB;AACjB,cAAI9B,IAAI,CAACmN,oBAAT,EAA+B;AAC7BqL,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GADY;AAEZ3pB,cAAAA,IAAI,EAAG,iBAAgB+G,IAAK,kDAAiDqnB,+BAA+B,CAC1GrnB,IAD0G,EAE1GrI,KAF0G,CAA/B,CAG3ET,IAH2E,CAGtE,IAHsE,CAGhE,EALD;AAMZ4rB,cAAAA;AANY,aAAd,EAD6B;AAW7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;AAED,cAAI7Y,IAAI,CAACue,QAAL,IAAiBjP,KAAK,CAACrI,OAA3B,EAAoC;AAClC,gBAAI1J,MAAJ,EAAY;AACVib,cAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,gBAAAA,GADY;AAEZ3pB,gBAAAA,IAAI,EAAG,6GAFK;AAGZ6pB,gBAAAA;AAHY,eAAd;AAKD;;AACDvJ,YAAAA,KAAK,CAAC1X,UAAN,GAAmB,IAAnB;AACD;;AAED,cAAI0X,KAAK,CAACtgB,IAAN,KAAe,SAAf,IAA4B,CAACuqB,aAAa,CAACvrB,QAAd,CAAuBN,KAAvB,CAAjC,EAAgE;AAC9D,gBAAI,YAAYuL,IAAZ,CAAiBvL,KAAjB,CAAJ,EAA6B;AAC3B8qB,cAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,gBAAAA,GADY;AAEZ3pB,gBAAAA,IAAI,EAAG,gBAAetB,KAAM,sGAFhB;AAGZmrB,gBAAAA;AAHY,eAAd;AAKD,aAND,MAMO;AACLL,cAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,gBAAAA,GADY;AAEZ3pB,gBAAAA,IAAI,EAAG,gBAAetB,KAAM,6BAA4B6rB,aAAa,CAACtsB,IAAd,CACtD,IADsD,CAEtD,iCAJU;AAKZ4rB,gBAAAA;AALY,eAAd;AAOD;;AACDnrB,YAAAA,KAAK,GAAG,MAAR;AACD;AACF,SArDD,MAqDO;AACL,cAAIqI,IAAI,KAAK,MAAb,EAAqB;AACnBuZ,YAAAA,KAAK,CAACvH,MAAN,GAAe,IAAf;AACD;AACF;;AAED,YAAIhS,IAAI,KAAK,MAAb,EAAqB;AACnB,cAAIsJ,QAAQ,GAAGof,kBAAkB,IAAIf,aAAa,CAAC/d,QAAD,CAAlD;;AAEA,cAAIjS,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,GAA1B,IAAiCA,KAAK,KAAK,IAA/C,EAAqD;AACnD8qB,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GADY;AAEZ3pB,cAAAA,IAAI,EACF,8EAHU;AAIZ6pB,cAAAA;AAJY,aAAd;AAMA,gBAAI8F,gBAAJ,EAAsB;AACvB,WARD,MAQO,IAAI,CAAC3e,IAAI,CAACse,SAAV,EAAqB;AAC1B9F,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GADY;AAEZ3pB,cAAAA,IAAI,EAAG,kBAAiB+G,IAAK,kDAFjB;AAGZ8iB,cAAAA;AAHY,aAAd;AAKA,gBAAI8F,gBAAJ,EAAsB;AACvB;;AAED,cAAItf,QAAQ,IAAI4d,SAAhB,EAA2B;AACzBzE,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GADY;AAEZ3pB,cAAAA,IAAI,EAAG,IAAG2Q,QAAS,yFAAwFA,QAAS;AAFxG,aAAd;AAID;;AAEDK,UAAAA,IAAI,CAAClC,KAAL,GAAapQ,KAAb;AACA+yB,UAAAA,OAAO,GAAG,IAAV;AACA3iB,UAAAA,KAAK,GAAG;AACNuB,YAAAA,QADM;AAENL,YAAAA,YAAY,EAAEgd,QAAQ,CAACtuB,KAAD,EAAQqI,IAAR,CAFhB;AAGNrI,YAAAA,KAHM;AAINqI,YAAAA,IAJM;AAKN4J,YAAAA,QALM;AAMNsd,YAAAA,SAAS,EAAE5d,QAAQ,GAAG,KAAH,GAAW4d,SANxB;AAONne,YAAAA,UAAU,EAAE;AAPN,WAAR;;AAUA,cAAI0f,kBAAJ,EAAwB;AACtB1gB,YAAAA,KAAK,CAACpQ,KAAN,GAAciS,QAAd;;AAEA,gBAAIA,QAAQ,KAAK,UAAjB,EAA6B;AAC3BmS,cAAAA,WAAW,GAAG,IAAd;AACD,aAFD,MAEO,IAAI,cAAc7Y,IAAd,CAAmB0G,QAAnB,CAAJ,EAAkC;AACvC7B,cAAAA,KAAK,CAACpQ,KAAN,GAAe,WAAUiS,QAAQ,CAC9B9Q,OADsB,CACd,SADc,EACH,EADG,EAEtByZ,WAFsB,EAER,EAFjB;AAGAyJ,cAAAA,UAAU,GAAG,IAAb;AACD,aALM,MAKA,IAAI,CAAC1S,QAAL,EAAe;AACpBvB,cAAAA,KAAK,CAACpQ,KAAN,GAAe,GAAEuvB,SAAS,GAAG,GAAH,GAAS,EAAG,SAAQtd,QAAQ,IAAI5J,IAAK,EAA/D;AACD;AACF;;AAED6H,UAAAA,MAAM,CAAC7I,IAAP,CAAY+I,KAAZ;AACD,SAvDD,MAuDO,IAAI,CAACkC,IAAI,CAACC,IAAL,IAAaD,IAAI,CAACoe,YAAnB,KAAoC,CAACpe,IAAI,CAACse,SAA9C,EAAyD;AAC9D,cAAKvoB,IAAI,KAAK,MAAT,IAAmBuZ,KAAK,CAACvZ,IAAN,KAAe,MAAnC,IAA8CA,IAAI,KAAK,MAA3D,EAAmE;AACjEyiB,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GADY;AAEZ3pB,cAAAA,IAAI,EAAG,mCAAkC+G,IAAK,cAFlC;AAGZ8iB,cAAAA;AAHY,aAAd;AAKA,gBAAI8F,gBAAJ,EAAsB;AACvB;AACF;;AAED,YAAI5oB,IAAI,KAAK,QAAT,IAAqB+I,UAAU,CAAC3J,MAAX,GAAoB,CAA7C,EAAgD;AAC9CqjB,UAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ/F,YAAAA,IAAI,EAAG,qEADK;AAEZ6pB,YAAAA,IAFY;AAGZF,YAAAA;AAHY,WAAd;AAKD;;AAED,YAAI5iB,IAAI,KAAK,QAAT,IAAqB,cAAckD,IAAd,CAAmB0G,QAAnB,CAAzB,EAAuD;AACrDoS,UAAAA,UAAU,GAAG,IAAb;AACD;;AAED,YAAIhc,IAAI,KAAK,QAAb,EAAuB;AACrBuZ,UAAAA,KAAK,CAACnD,MAAN,GAAe2Q,SAAS,CAACpvB,KAAD,CAAxB;AACD;;AAED,YAAIA,KAAK,KAAK,EAAV,IAAgBqI,IAAI,KAAK,MAA7B,EAAqC;AACnCyiB,UAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,YAAAA,GADY;AAEZ3pB,YAAAA,IAAI,EAAG,IAAG+G,IAAK,yCAFH;AAGZ8iB,YAAAA;AAHY,WAAd;AAKA,cAAI8F,gBAAJ,EAAsB;AACvB;;AAEDxf,QAAAA,QAAQ,GAAG;AACTnQ,UAAAA,IAAI,EAAE,UADG;AAET2pB,UAAAA,GAFS;AAGT5iB,UAAAA,IAHS;AAITiK,UAAAA,IAJS;AAKTtS,UAAAA,KAAK,EAAEsuB,QAAQ,CAACtuB,KAAD,EAAQqI,IAAR;AALN,SAAX;;AAQA,YAAIiK,IAAI,CAACiB,SAAL,IAAkBnD,KAAtB,EAA6B;AAC3BwR,UAAAA,KAAK,CAAC7F,UAAN,GAAmB,IAAnB;AAEA,cAAIoX,gBAAgB,GAAGhF,YAAY,CAACnuB,KAAD,CAAnC;AACAyR,UAAAA,QAAQ,CAACzR,KAAT,GAAiBmzB,gBAAgB,CAAC7hB,YAAlC;AACAG,UAAAA,QAAQ,CAAC8B,SAAT,GAAqB4f,gBAAgB,CAAC/hB,UAAtC;;AAEA,cAAIK,QAAQ,CAAC8B,SAAT,CAAmBC,KAAnB,KAA6B,QAAjC,EAA2C;AACzCoO,YAAAA,KAAK,CAAC9H,kBAAN,GAA2B,IAA3B;AACD,WAFD,MAEO;AACL8H,YAAAA,KAAK,CAAC3E,kBAAN,GAA2B,IAA3B;AACD;;AAED,cAAI,CAAC2E,KAAK,CAAC5F,UAAN,CAAiBmX,gBAAgB,CAAC3xB,EAAlC,CAAL,EAA4C;AAC1CogB,YAAAA,KAAK,CAAC5F,UAAN,CAAiBmX,gBAAgB,CAAC3xB,EAAlC,IAAwC;AACtCmF,cAAAA,KAAK,EAAE1H,MAAM,CAACC,IAAP,CAAY0iB,KAAK,CAAC5F,UAAlB,EAA8BvU,MADC;AAEtC8L,cAAAA,SAAS,EAAE4f,gBAF2B;AAGtCxd,cAAAA,KAAK,EAAE;AAH+B,aAAxC;AAKD;;AACDlE,UAAAA,QAAQ,CAAC8D,qBAAT,GACEqM,KAAK,CAAC5F,UAAN,CAAiBmX,gBAAgB,CAAC3xB,EAAlC,EAAsCmF,KADxC;;AAGA,cAAI,CAACib,KAAK,CAAC5F,UAAN,CAAiBmX,gBAAgB,CAAC3xB,EAAlC,EAAsCmU,KAAtC,CAA4CtN,IAA5C,CAAL,EAAwD;AACtD,gBAAI+qB,SAAS,GAAG,IAAhB;AACA,gBAAIC,QAAQ,GAAGjiB,UAAU,CAAC5F,IAAX,CAAiB2F,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAcA,IAAxC,CAAf;;AACA,gBAAIgrB,QAAJ,EAAc;AACZD,cAAAA,SAAS,GAAGC,QAAQ,CAACrzB,KAArB;AACD;;AAED4hB,YAAAA,KAAK,CAAC5F,UAAN,CAAiBmX,gBAAgB,CAAC3xB,EAAlC,EAAsCmU,KAAtC,CAA4CtN,IAA5C,IAAoD;AAClDA,cAAAA,IADkD;AAElD6H,cAAAA,MAAM,EAAE,EAF0C;AAGlDlQ,cAAAA,KAAK,EAAEozB;AAH2C,aAApD;AAKD;;AAEDxR,UAAAA,KAAK,CAAC5F,UAAN,CAAiBmX,gBAAgB,CAAC3xB,EAAlC,EAAsCmU,KAAtC,CAA4CtN,IAA5C,EAAkD6H,MAAlD,CAAyD7I,IAAzD,CAA8D;AAC5DgB,YAAAA,IAAI,EAAE+H,KAAK,CAAC6B,QADgD;AAE5DjS,YAAAA,KAAK,EAAEmzB,gBAAgB,CAAC7hB;AAFoC,WAA9D;AAID;;AAED,YAAIlB,KAAJ,EAAW;AACTqB,UAAAA,QAAQ,CAACrB,KAAT,GAAiBA,KAAK,CAAC6B,QAAvB;AACD;;AAED,YAAIK,IAAI,CAACC,IAAT,EAAe;AACb,cAAI+gB,iBAAiB,GAAG,CAAChhB,IAAI,CAACoe,YAAN,IAAsB,IAAInlB,IAAJ,CAASkG,QAAQ,CAACzR,KAAlB,CAA9C;;AAEA,cAAI,OAAOyR,QAAQ,CAACzR,KAAhB,KAA0B,QAA9B,EAAwC;AACtCyR,YAAAA,QAAQ,CAACzR,KAAT,GAAiByR,QAAQ,CAACzR,KAAT,CAAemB,OAAf,CAAuB,IAAvB,EAA6B,EAA7B,CAAjB;AACD;;AAEDsQ,UAAAA,QAAQ,CAACQ,QAAT,GAAoBA,QAApB,CAPa;;AAUbR,UAAAA,QAAQ,CAACH,YAAT,GAAwBG,QAAQ,CAACzR,KAAjC;;AAEA,cAAI8wB,kBAAJ,EAAwB;AACtBrf,YAAAA,QAAQ,CAACzR,KAAT,GAAkB,GAAEuvB,SAAS,GAAG,GAAH,GAAS,EAAG,SAAQtd,QAAQ,IAAI5J,IAAK,EAAlE;AACD;;AAED,cAAIirB,iBAAJ,EAAuB;AACrB,gBAAIjrB,IAAI,KAAK,MAAT,IAAmBuZ,KAAK,CAACvZ,IAAN,KAAe,MAAtC,EAA8C;AAC5CoJ,cAAAA,QAAQ,CAACH,YAAT,GAAwB,EAAxB;AACD,aAFD,MAEO;AACLG,cAAAA,QAAQ,CAACH,YAAT,GAAwB,KAAxB;;AAEA,kBACE4f,uBAAuB,IACvBtP,KAAK,CAACxN,OADN,KAEC3C,QAAQ,CAACa,IAAT,CAAcjR,KAAd,IACEugB,KAAK,CAACvZ,IAAN,KAAe,MAAf,IAAyBoJ,QAAQ,CAACpJ,IAAT,KAAkB,MAH9C,CADF,EAKE;AACAyiB,gBAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,kBAAAA,GADY;AAEZ3pB,kBAAAA,IAAI,EAAG,2BAA0B+G,IAAK,YAAWA,IAAK,KAAI4J,QAAS,iBAFvD;AAGZkZ,kBAAAA;AAHY,iBAAd;AAKD;AACF;AACF;;AAED,cAAIoI,oBAAoB,GAAG9Q,KAAK,CAACjX,IAAN,CACxBgoB,EAAD,IAAQA,EAAE,CAACnrB,IAAH,MAAa4J,QAAQ,IAAI5J,IAAzB,CADiB,CAA3B;;AAGA;AAEE,WAACoJ,QAAQ,CAACa,IAAT,CAAcue,QAAf,KACC,CAAC0C,oBAAD,IAAyB,CAACA,oBAAoB,CAACjiB,YADhD,CAFF,EAIE;AACA,gBAAIiiB,oBAAJ,EAA0B;AACxBA,cAAAA,oBAAoB,CAAClrB,IAArB,GAA4B4J,QAAQ,IAAI5J,IAAxC;AACAkrB,cAAAA,oBAAoB,CAACjyB,IAArB,GAA4B4uB,WAAW,CAACtO,KAAD,EAAQvZ,IAAR,AAAA,CAAvC;AACAkrB,cAAAA,oBAAoB,CAACjiB,YAArB,GAAoCgB,IAAI,CAACoe,YAAL,GAChC,KADgC,GAEhCjf,QAAQ,CAACH,YAFb;AAGD,aAND,MAMO;AACLmR,cAAAA,KAAK,CAACpb,IAAN,CAAW;AACTgB,gBAAAA,IAAI,EAAE4J,QAAQ,IAAI5J,IADT;AAET/G,gBAAAA,IAAI,EAAE4uB,WAAW,CAACtO,KAAD,EAAQvZ,IAAR,AAAA,CAFR;AAGTiJ,gBAAAA,YAAY,EAAEgB,IAAI,CAACoe,YAAL,GAAoB,KAApB,GAA4Bjf,QAAQ,CAACH;AAH1C,eAAX;AAKD;AACF,WA1DY;;AA4Dd;AACF,OAtRD,MAsRO,IAAI+b,SAAS,CAAClC,IAAD,CAAT,IAAmB,CAAC6F,YAAxB,EAAsC;AAC3C,YAAI,CAAChxB,KAAD,IAAU6uB,UAAU,CAAC1D,IAAD,CAAxB;AAEA,YAAIsI,WAAW,GAAG5F,aAAa,CAAC1C,IAAD,CAA/B;;AACA,YAAIsI,WAAJ,EAAiB;AACfzzB,UAAAA,KAAK,GAAG6uB,UAAU,CAAC7uB,KAAD,CAAlB;AACD;;AAEDyR,QAAAA,QAAQ,GAAG;AACTnQ,UAAAA,IAAI,EAAE,UADG;AAET2pB,UAAAA,GAAG,EAAEwH,MAAM,CAACO,CAAC,GAAG,CAAL,EAAQ,CAAR,EAAW7H,IAAI,CAAC1jB,MAAL,GAAc,CAAzB,CAFF;AAGTzH,UAAAA,KAHS;AAITsS,UAAAA,IAAI,EAAE;AAAEohB,YAAAA,OAAO,EAAE,IAAX;AAAiBD,YAAAA;AAAjB;AAJG,SAAX;AAMD;;AAED,UAAIhiB,QAAJ,EAAc;AACZmQ,QAAAA,KAAK,CAACqJ,GAAN,CAAUuF,GAAV,GAAgB/e,QAAQ,CAACwZ,GAAT,CAAauF,GAA7B;;AAEA,YAAIuC,OAAJ,EAAa;AACX,cACEthB,QAAQ,CAACpJ,IAAT,KAAkB,MAAlB,IACA,CAACoJ,QAAQ,CAACa,IAAT,CAAcohB,OADf,IAEA,CAACtiB,UAAU,CAACjB,IAAX,CAAiBkjB,QAAD,IAAcA,QAAQ,CAAChrB,IAAT,KAAkBoJ,QAAQ,CAACpJ,IAAzD,CAHH,EAIE;AACAyiB,YAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,cAAAA,GAAG,EAAExZ,QAAQ,CAACwZ,GADF;AAEZ3pB,cAAAA,IAAI,EAAG,kCAAiCmQ,QAAQ,CAACpJ,IAAK,yCAF1C;AAGZ8iB,cAAAA;AAHY,aAAd;AAKD;;AAED/a,UAAAA,KAAK,CAACgB,UAAN,CAAiB/J,IAAjB,CAAsBoK,QAAtB;AACD,SAdD,MAcO;AACLL,UAAAA,UAAU,CAAC/J,IAAX,CAAgBoK,QAAhB;AACD;AACF;AACF;;AAEDmQ,IAAAA,KAAK,CAACxQ,UAAN,GAAmBA,UAAnB;AACAwQ,IAAAA,KAAK,CAAC1R,MAAN,GAAekgB,UAAU,CAAClgB,MAAD,CAAzB;;AAEA,QAAI0R,KAAK,CAACvZ,IAAN,KAAe,MAAf,IAAyBuZ,KAAK,CAAC1X,UAAnC,EAA+C;AAC7C,UAAIypB,YAAY,GAAGviB,UAAU,CAC1BjS,MADgB,CACRgS,IAAD,IAAUA,IAAI,CAAC9I,IAAL,KAAc,YAAd,IAA8B8I,IAAI,CAAC9I,IAAL,KAAc,QAD7C,EAEhB9J,GAFgB,CAEX4S,IAAD,IAAUA,IAAI,CAAC9I,IAFH,CAAnB;;AAIA,UAAIsrB,YAAY,CAAClsB,MAAb,GAAsB,CAA1B,EAA6B;AAC3BqjB,QAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ/F,UAAAA,IAAI,EAAG,6GAA4GqyB,YAAY,CAACp0B,IAAb,CACjH,IADiH,CAEjH,wBAHU;AAIZ0rB,UAAAA,GAAG,EAAErJ,KAAK,CAACqJ,GAJC;AAKZE,UAAAA,IAAI,EAAEgG,MAAM,CAACvb,CAAD;AALA,SAAd;AAOD;AACF;AACF;;AAEDwb,EAAAA,KAAK,CAAC5yB,OAAN,CAAc,CAAC2sB,IAAD,EAAOvV,CAAP,KAAa;AACzB,QAAIuV,IAAI,KAAKgG,MAAM,CAACvb,CAAD,CAAN,CAAUyb,SAAV,EAAb,EAAoC;AAClCvG,MAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ/F,QAAAA,IAAI,EAAG,gEADK;AAEZ2pB,QAAAA,GAAG,EAAE;AACHC,UAAAA,KAAK,EAAE;AACLC,YAAAA,IAAI,EAAEvV,CAAC,GAAG;AADL;AADJ,SAFO;AAOZuV,QAAAA,IAAI,EAAEgG,MAAM,CAACvb,CAAD;AAPA,OAAd;AASD;;AAED,QAAIuX,OAAO,CAAChC,IAAD,CAAX,EAAmB;AACjBoH,MAAAA,UAAU,CAACpH,IAAD,EAAOvV,CAAP,CAAV;AACD;AACF,GAhBD;;AAkBA,MAAI+U,KAAK,CAACljB,MAAN,GAAe,CAAnB,EAAsB;AACpB,WAAO,CAAC+oB,GAAG,CAAC7F,KAAK,CAACgI,GAAN,EAAD,EAAcvB,KAAK,CAAC3pB,MAAN,GAAe,CAA7B,CAAX,EAA4C;AAC7C;;AAED,MAAI,CAAC3D,IAAL,EAAW;AACTA,IAAAA,IAAI,GAAG;AACLxC,MAAAA,IAAI,EAAE,OADD;AAEL+G,MAAAA,IAAI,EAAE7G,EAFD;AAGLwa,MAAAA,UAAU,EAAE,EAHP;AAILD,MAAAA,UAAU,EAAE,KAJP;AAKL3H,MAAAA,OAAO,EAAE,IALJ;AAMLE,MAAAA,SAAS,EAAE,KANN;AAOLK,MAAAA,QAAQ,EAAE,KAPL;AAQL4E,MAAAA,OAAO,EAAE,KARJ;AASLU,MAAAA,UAAU,EAAE,KATP;AAULyU,MAAAA,KAAK,EAAE,CAVF;AAWLzD,MAAAA,GAAG,EAAEwH,MAAM,CAAC,CAAD,EAAI,CAAJ,CAXN;AAYLrhB,MAAAA,UAAU,EAAE,EAZP;AAaLlB,MAAAA,MAAM,EAAE;AAbH,KAAP;AAgBA4a,IAAAA,QAAQ,CAACzjB,IAAT,CAAc;AACZ4jB,MAAAA,GAAG,EAAEnnB,IAAI,CAACmnB,GADE;AAEZ3pB,MAAAA,IAAI,EAAG,gBAAeE,EAAG,4DAA2D+vB,gBAAiB,4BAFzF;AAGZpG,MAAAA,IAAI,EAAE;AAHM,KAAd;AAKD;;AAED,MAAIyI,QAAQ,GAAG9vB,IAAI,CAACsN,UAAL,CAAgB5F,IAAhB,CAAsB1J,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAW,IAAvC,CAAf;;AACA,MAAIurB,QAAJ,EAAc;AACZ9vB,IAAAA,IAAI,CAACwC,OAAL,GAAe,IAAf;AACAxC,IAAAA,IAAI,CAAC0C,IAAL,GAAYotB,QAAQ,CAAC5zB,KAArB;AACA8D,IAAAA,IAAI,CAACwD,QAAL,GAAgB3I,IAAI,CAACC,OAAL,CAAa2C,IAAI,CAACJ,OAAL,CAAanD,GAAG,CAACmD,OAAJ,CAAY,KAAZ,EAAmB,GAAnB,CAAb,EAAsC,EAAtC,CAAb,CAAhB;AACA2C,IAAAA,IAAI,CAAC0D,cAAL,GAAsB7I,IAAI,CAACC,OAAL,CAAakF,IAAI,CAACwD,QAAlB,CAAtB;AAEAxD,IAAAA,IAAI,CAACmP,IAAL,GAAY+b,OAAO,CAAClrB,IAAI,CAACsN,UAAL,CAAgB5F,IAAhB,CAAsB1J,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAW,MAAvC,CAAD,CAAnB;AACAvE,IAAAA,IAAI,CAACmgB,UAAL,GAAkBiL,aAAa,CAC7BprB,IAAI,CAACsN,UAAL,CAAgB5F,IAAhB,CAAsB1J,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAW,YAAvC,CAD6B,CAA/B;AAGAvE,IAAAA,IAAI,CAACqgB,YAAL,GAAoBgL,eAAe,CACjCrrB,IAAI,CAACsN,UAAL,CAAgB5F,IAAhB,CAAsB1J,CAAD,IAAOA,CAAC,CAACuG,IAAF,KAAW,cAAvC,CADiC,CAAnC;AAGD,GAbD,MAaO;AACLvE,IAAAA,IAAI,CAACwC,OAAL,GAAe,KAAf;AACD;;AAEDxC,EAAAA,IAAI,CAACwV,4BAAL,GAAoCA,4BAApC;AACAxV,EAAAA,IAAI,CAACsgB,WAAL,GAAmBA,WAAnB;AACAtgB,EAAAA,IAAI,CAACugB,UAAL,GAAkBA,UAAlB;AACAvgB,EAAAA,IAAI,CAAC3F,KAAL,GAAaszB,WAAb;AAEA,SAAO;AACL3uB,IAAAA,KADK;AAEL2f,IAAAA,KAFK;AAGL3e,IAAAA,IAHK;AAILgnB,IAAAA;AAJK,GAAP;AAMD,CAlvBD;;ACjCA,IAAI+I,YAAY,GAAGtyB,IAAI,IAAIA,IAAI,CAAC0C,KAAL,CAAWtF,IAAI,CAACm1B,GAAhB,EAAqBrsB,MAArB,GAA8B,CAAzD;;AAEA,IAAIssB,eAAe,GAAG,CAAC/wB,CAAD,EAAIC,CAAJ,KAAU;AAC9B,MAAI+wB,MAAM,GAAGH,YAAY,CAAC7wB,CAAD,CAAzB;AACA,MAAIixB,MAAM,GAAGJ,YAAY,CAAC5wB,CAAD,CAAzB;AACA,MAAIixB,UAAU,GAAGF,MAAM,GAAGC,MAA1B;AAEA,MAAIC,UAAU,KAAK,CAAnB,EAAsB,OAAOA,UAAP;AAEtB,SAAOlxB,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAYD,CAAC,GAAGC,CAAJ,GAAQ,CAAC,CAAT,GAAa,CAAhC;AACD,CARD;;AAUA,AAAe,SAASkxB,aAAT,CAAuB51B,GAAvB,EAA4B;AACzC,OAAK,IAAI,CAACa,GAAD,EAAMY,KAAN,CAAT,IAAyBzB,GAAzB,EAA8B;AAC5B,QAAIyB,KAAK,CAACX,IAAN,IAAc,CAAlB,EAAqB;AAErBd,IAAAA,GAAG,CAAC0B,GAAJ,CAAQb,GAAR,EAAa,IAAIP,GAAJ,CAAQ,CAAC,GAAGmB,KAAJ,EAAW+C,IAAX,CAAgBgxB,eAAhB,CAAR,CAAb;AACD;AACF;;AChBc,SAASK,UAAT,CAAoB;AACjChxB,EAAAA,WADiC;AAEjCI,EAAAA,SAFiC;AAGjCxF,EAAAA,GAHiC;AAIjCC,EAAAA,OAJiC;AAKjC6H,EAAAA,SALiC;AAMjCrC,EAAAA;AANiC,CAApB,EAOZ;AACD,OAAK,IAAIlC,IAAT,IAAiBiC,SAAjB,EAA4B;AAC1B,QAAIM,IAAI,GAAGL,YAAY,CAACvD,GAAb,CAAiBqB,IAAjB,CAAX;AAEA,QAAIuC,IAAI,CAACC,MAAT,EAAiB;AAEjBD,IAAAA,IAAI,CAACE,MAAL,GAAc8E,KAAK,CAAC;AAClB1F,MAAAA,WADkB;AAElB7B,MAAAA,IAFkB;AAGlBC,MAAAA,EAAE,EAAEsC,IAAI,CAACtC,EAHS;AAIlBxD,MAAAA,GAJkB;AAKlBopB,MAAAA,MAAM,EAAEtjB,IAAI,CAACsjB,MALK;AAMlBjpB,MAAAA,KAAK,EAAE2H;AANW,KAAD,CAAnB;AASA+kB,IAAAA,kBAAkB,CAAC/mB,IAAD,EAAO7F,OAAP,CAAlB;AACD;;AACDk2B,EAAAA,aAAa,CAACruB,SAAD,CAAb;AACD;;AC3BD,IAAIuuB,UAAU,GAAG,CAAC,aAAD,EAAgB,UAAhB,EAA4B,UAA5B,CAAjB;AAEA,AAAe,SAASC,iBAAT,CAA2B/yB,IAA3B,EAAiC;AAC9C,MAAIgzB,SAAS,GAAGF,UAAU,CAAC7oB,IAAX,CAAgB/M,IAAI,IAAI8C,IAAI,CAACiwB,QAAL,CAAc/yB,IAAd,CAAxB,CAAhB;;AAEA,MAAI,CAAC81B,SAAL,EAAgB;AACd,UAAM,IAAIC,KAAJ,CACH,qCAAoCjzB,IAAK,uBADtC,CAAN;AAGD;;AAED,SAAO5C,IAAI,CAACI,QAAL,CAAcJ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAd,CAAP;AACD;;ACXc,SAASkzB,sBAAT,CAAgC;AAC7ClwB,EAAAA,eAD6C;AAE7CuB,EAAAA,SAF6C;AAG7CrC,EAAAA;AAH6C,CAAhC,EAIZ;AACD,AAAC,GAAC,GAAGc,eAAJ,EAAqB/F,OAArB,CAA6B+C,IAAI,IAAI;AACpC,QAAIC,EAAE,GAAG8yB,iBAAiB,CAAC/yB,IAAD,CAA1B;AAEAxB,IAAAA,WAAW,CAAC+F,SAAD,EAAYtE,EAAZ,EAAgBD,IAAhB,CAAX;AAEAkC,IAAAA,YAAY,CAACxD,GAAb,CAAiBsB,IAAjB,EAAuB;AACrBwC,MAAAA,MAAM,EAAE,IADa;AAErBxC,MAAAA,IAFqB;AAGrBC,MAAAA,EAHqB;AAIrB6hB,MAAAA,KAAK,EAAE,KAJc;AAKrB+D,MAAAA,MAAM,EAAE,IALa;AAMrBkD,MAAAA,OAAO,EAAE;AANY,KAAvB;AAQD,GAbA;AAcF;;ACjBc,eAAeoK,gBAAf,CAAgC;AAC7ClxB,EAAAA,SAD6C;AAE7Cc,EAAAA,cAF6C;AAG7CwB,EAAAA,SAH6C;AAI7CrC,EAAAA;AAJ6C,CAAhC,EAKZ;AACD,QAAMmC,OAAO,CAAC1H,GAAR,CACJ,CAAC,GAAGsF,SAAJ,EAAejF,GAAf,CAAmB,MAAMgD,IAAN,IAAc;AAC/B,QAAIC,EAAE,GAAG8yB,iBAAiB,CAAC/yB,IAAD,CAA1B;AAEAxB,IAAAA,WAAW,CAAC+F,SAAD,EAAYtE,EAAZ,EAAgBD,IAAhB,CAAX;AAEA,QAAIuC,IAAI,GAAGL,YAAY,CAACnE,GAAb,CAAiBiC,IAAjB,IAAyBkC,YAAY,CAACvD,GAAb,CAAiBqB,IAAjB,CAAzB,GAAkD,EAA7D;AACA,QAAI8hB,KAAK,GAAG1kB,IAAI,CAACY,IAAL,CAAUZ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAV,EAA8B,UAA9B,CAAZ;AAEAkC,IAAAA,YAAY,CAACxD,GAAb,CAAiBsB,IAAjB,EAAuB,EACrB,GAAGuC,IADkB;AAErBC,MAAAA,MAAM,EAAE,KAFa;AAGrBxC,MAAAA,IAHqB;AAIrBC,MAAAA,EAJqB;AAKrB6hB,MAAAA,KAAK,EAAE/e,cAAc,CAAChF,GAAf,CAAmB+jB,KAAnB,KAA6BA,KALf;AAMrB+D,MAAAA,MAAM,EAAE,MAAMllB,WAAE,CAAC6G,QAAH,CAAYxH,IAAZ,EAAkB,MAAlB,CANO;AAOrB+oB,MAAAA,OAAO,EAAExmB,IAAI,CAACwmB,OAAL,GAAexmB,IAAI,CAACwmB,OAAL,GAAe,CAA9B,GAAkC;AAPtB,KAAvB;AASD,GAjBD,CADI,CAAN;AAoBD;;ACbc,SAASqK,WAAT,CAAqB;AAClCpxB,EAAAA,EAAE,GAAG,WAD6B;AAElCvF,EAAAA,GAFkC;AAGlC8I,EAAAA,KAAK,GAAG,KAH0B;AAIlC7I,EAAAA,OAAO,GAAG;AAJwB,CAArB,EAKZ;AACD,MAAIgM,KAAK,GAAG;AACV1G,IAAAA,EADU;AAEVvF,IAAAA,GAFU;AAGV8I,IAAAA,KAHU;AAIV7I,IAAAA,OAJU;AAKVmF,IAAAA,WAAW,EAAE,IAAI4D,GAAJ,EALH;AAMVlB,IAAAA,SAAS,EAAE,IAAIkB,GAAJ,EAND;AAOVvD,IAAAA,YAAY,EAAE,IAAIuD,GAAJ;AAPJ,GAAZ;;AAUAiD,EAAAA,KAAK,CAAC2qB,YAAN,GAAqB,eAAeA,YAAf,CAA4B;AAC/CvxB,IAAAA,eAAe,GAAG,IAAIxE,GAAJ,EAD6B;AAE/C2E,IAAAA,SAAS,GAAG,IAAI3E,GAAJ,EAFmC;AAG/C0F,IAAAA,eAAe,GAAG,IAAI1F,GAAJ,EAH6B;AAI/CyF,IAAAA,cAAc,GAAG,IAAIzF,GAAJ;AAJ8B,GAA5B,EAKlB;AACD,QAAIwE,eAAe,CAAChE,IAAhB,GAAuB,CAA3B,EAA8B;AAC5B8D,MAAAA,kBAAkB,CAAC;AACjBC,QAAAA,WAAW,EAAE6G,KAAK,CAAC7G,WADF;AAEjBC,QAAAA;AAFiB,OAAD,CAAlB;AAID,KANA;;;AASD,UAAMqxB,gBAAgB,CAAC;AACrBlxB,MAAAA,SADqB;AAErBc,MAAAA,cAFqB;AAGrBwB,MAAAA,SAAS,EAAEmE,KAAK,CAACnE,SAHI;AAIrBrC,MAAAA,YAAY,EAAEwG,KAAK,CAACxG;AAJC,KAAD,CAAtB,CATC;;AAiBDgxB,IAAAA,sBAAsB,CAAC;AACrBlwB,MAAAA,eADqB;AAErBuB,MAAAA,SAAS,EAAEmE,KAAK,CAACnE,SAFI;AAGrBrC,MAAAA,YAAY,EAAEwG,KAAK,CAACxG;AAHC,KAAD,CAAtB,CAjBC;AAwBD;;AACA2wB,IAAAA,UAAU,CAAC;AACThxB,MAAAA,WAAW,EAAE6G,KAAK,CAAC7G,WADV;AAETI,MAAAA,SAFS;AAGTxF,MAAAA,GAAG,EAAEiM,KAAK,CAACjM,GAHF;AAITC,MAAAA,OAAO,EAAEgM,KAAK,CAAChM,OAJN;AAKT6H,MAAAA,SAAS,EAAEmE,KAAK,CAACnE,SALR;AAMTrC,MAAAA,YAAY,EAAEwG,KAAK,CAACxG;AANX,KAAD,CAAV;AASA,QAAIoxB,YAAY,GAAGvxB,aAAa,CAAC;AAC/BC,MAAAA,EAAE,EAAE0G,KAAK,CAAC1G,EADqB;AAE/BH,MAAAA,WAAW,EAAE6G,KAAK,CAAC7G,WAFY;AAG/BI,MAAAA,SAH+B;AAI/BxF,MAAAA,GAAG,EAAEiM,KAAK,CAACjM,GAJoB;AAK/ByF,MAAAA,YAAY,EAAEwG,KAAK,CAACxG;AALW,KAAD,CAAhC,CAlCC;AA2CD;;AACA,QAAIqxB,YAAY,GAAGlK,aAAa,CAAC;AAC/BrnB,MAAAA,EAAE,EAAE0G,KAAK,CAAC1G,EADqB;AAE/BC,MAAAA,SAF+B;AAG/BmiB,MAAAA,aAAa,EAAEvhB,iBAAiB,CAAC6F,KAAK,CAACjM,GAAP,CAHD;AAI/B8L,MAAAA,eAAe,EAAED,mBAAmB,CAACI,KAAK,CAACjM,GAAP,CAJL;AAK/BA,MAAAA,GAL+B;AAM/B8I,MAAAA,KAAK,EAAEmD,KAAK,CAACnD,KANkB;AAO/BhB,MAAAA,SAAS,EAAEmE,KAAK,CAACnE,SAPc;AAQ/BrC,MAAAA,YAAY,EAAEwG,KAAK,CAACxG;AARW,KAAD,CAAhC,CA5CC;;AAwDD,QAAIsxB,UAAU,GAAG,MAAMnvB,OAAO,CAAC1H,GAAR,CAAY,CACjCyH,UAAU,CAACsE,KAAD,CADuB,EAEjCnC,UAAU,CAACmC,KAAD,CAFuB,EAGjCb,WAAW,CAACa,KAAD,CAHsB,EAIjCjC,cAAc,CAACiC,KAAD,CAJmB,EAKjC/B,eAAe,CAAC+B,KAAD,CALkB,EAMjCf,aAAa,CAACe,KAAD,CANoB,CAAZ,CAAvB;AASA,QAAI+qB,YAAY,GAAG,CAAC,GAAGH,YAAJ,EAAkB,GAAGC,YAArB,EAAmC,GAAGC,UAAtC,EAAkD51B,MAAlD,CACjB0S,OADiB,CAAnB;AAIA,UAAMjM,OAAO,CAAC1H,GAAR,CACJ82B,YAAY,CAACz2B,GAAb,CAAiB,CAAC;AAAEgD,MAAAA,IAAF;AAAQ4C,MAAAA;AAAR,KAAD,KACfjC,WAAE,CAACsD,SAAH,CAAajE,IAAb,EAAmB4C,OAAnB,EAA4B,OAA5B,CADF,CADI,CAAN;AAKD,GA/ED;;AAiFA,SAAO8F,KAAP;AACD;;ACpHc,SAASgrB,cAAT,CAAwB;AAAEnxB,EAAAA,IAAF;AAAQL,EAAAA;AAAR,CAAxB,EAAgD;AAC7D,MAAID,SAAS,GAAG,IAAI3E,GAAJ,CAAQ,CAACiF,IAAI,CAACvC,IAAN,CAAR,CAAhB;AACA,MAAI+C,cAAc,GAAG,IAAIzF,GAAJ,EAArB;AACA,MAAIq2B,OAAO,GAAG,IAAIr2B,GAAJ,EAAd;;AAEA,MAAIiF,IAAI,CAACuf,KAAT,EAAgB;AACd/e,IAAAA,cAAc,CAACxF,GAAf,CAAmBgF,IAAI,CAACuf,KAAxB;AACD;;AAED,OAAK,IAAIjc,UAAT,IAAuB3D,YAAY,CAACyD,MAAb,EAAvB,EAA8C;AAC5C,QAAIE,UAAU,CAACrD,MAAf,EAAuB;;AAEvB,QAAIqD,UAAU,CAACpD,MAAX,CAAkBF,IAAlB,CAAuB3F,KAAvB,CAA6BmB,GAA7B,CAAiCwE,IAAI,CAACtC,EAAtC,CAAJ,EAA+C;AAC7CgC,MAAAA,SAAS,CAAC1E,GAAV,CAAcsI,UAAU,CAAC7F,IAAzB;;AACA,UAAI6F,UAAU,CAACic,KAAf,EAAsB;AACpB/e,QAAAA,cAAc,CAACxF,GAAf,CAAmBsI,UAAU,CAACic,KAA9B;AACD;;AACD6R,MAAAA,OAAO,CAACp2B,GAAR,CAAYsI,UAAU,CAAC5F,EAAvB;AACD;AACF;;AAED,SAAO;AAAEgC,IAAAA,SAAF;AAAac,IAAAA,cAAb;AAA6B4wB,IAAAA;AAA7B,GAAP;AACD;;ACPc,eAAeC,UAAf,CAA0B;AAAEC,EAAAA;AAAF,CAA1B,EAAuC;AACpD,MAAIC,OAAO,GAAGC,QAAQ,CAACC,KAAT,CAAezwB,KAAf,EAAsB;AAClCzG,IAAAA,GAAG,EAAE+2B,OAAO,CAACp3B,GADqB;AAElCw3B,IAAAA,OAAO,EAAE,CAAC,YAAD,EAAe,yBAAf,CAFyB;AAGlCC,IAAAA,aAAa,EAAE,IAHmB;;AAAA,GAAtB,CAAd;AAOA,MAAIC,UAAU,GAAG,KAAjB;AACA,MAAIC,KAAK,GAAG,EAAZ;AACA,MAAIC,aAAa,GAAGC,iBAAQ,CAAC,YAAY;AACvC,QAAIF,KAAK,CAACluB,MAAN,KAAiB,CAAjB,IAAsBiuB,UAA1B,EAAsC;AACpC;AACD;;AAED,QAAII,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAjB;AACAA,IAAAA,KAAK,GAAG,EAAR;AAEAD,IAAAA,UAAU,GAAG,IAAb;;AACA,QAAI;AACF,YAAMK,YAAY,CAAC;AAAEJ,QAAAA,KAAK,EAAEG,UAAT;AAAqBV,QAAAA;AAArB,OAAD,CAAlB;AACD,KAFD,CAEE,OAAO/yB,KAAP,EAAc;AACdxC,MAAAA,OAAO,CAACwC,KAAR,CAAcA,KAAd;AACAgH,MAAAA,OAAO,CAAC2sB,IAAR,CAAa,CAAb;AACD;;AACDN,IAAAA,UAAU,GAAG,KAAb;;AAEA,QAAIC,KAAK,CAACluB,MAAN,GAAe,CAAnB,EAAsB;AACpBmuB,MAAAA,aAAa;AACd;AACF,GApB2B,EAoBzB,EApByB,CAA5B;;AAsBA,WAASK,OAAT,CAAiB;AAAE10B,IAAAA,IAAF;AAAQ20B,IAAAA;AAAR,GAAjB,EAA+B;AAC7BP,IAAAA,KAAK,CAACtuB,IAAN,CAAW;AAAE9F,MAAAA,IAAI,EAAE5C,IAAI,CAACY,IAAL,CAAU61B,OAAO,CAACp3B,GAAlB,EAAuBuD,IAAvB,CAAR;AAAsC20B,MAAAA;AAAtC,KAAX;AACAN,IAAAA,aAAa;AACd;;AAEDP,EAAAA,OAAO,CAACc,EAAR,CAAW,KAAX,EAAmB50B,IAAD,IAAU00B,OAAO,CAAC;AAAE10B,IAAAA,IAAF;AAAQ20B,IAAAA,EAAE,EAAE;AAAZ,GAAD,CAAnC;AACAb,EAAAA,OAAO,CAACc,EAAR,CAAW,QAAX,EAAsB50B,IAAD,IAAU00B,OAAO,CAAC;AAAE10B,IAAAA,IAAF;AAAQ20B,IAAAA,EAAE,EAAE;AAAZ,GAAD,CAAtC;AACAb,EAAAA,OAAO,CAACc,EAAR,CAAW,QAAX,EAAsB50B,IAAD,IAAU00B,OAAO,CAAC;AAAE10B,IAAAA,IAAF;AAAQ20B,IAAAA,EAAE,EAAE;AAAZ,GAAD,CAAtC;AAEA,SAAOb,OAAP;AACD;;AAED,eAAeU,YAAf,CAA4B;AAAEJ,EAAAA,KAAF;AAASP,EAAAA;AAAT,CAA5B,EAAgD;AAC9C,MAAIgB,cAAc,GAAG;AACnB5yB,IAAAA,SAAS,EAAE,IAAI3E,GAAJ,EADQ;AAEnByF,IAAAA,cAAc,EAAE,IAAIzF,GAAJ,EAFG;AAGnB0F,IAAAA,eAAe,EAAE,IAAI1F,GAAJ,EAHE;AAInBwE,IAAAA,eAAe,EAAE,IAAIxE,GAAJ;AAJE,GAArB;AAOAw3B,EAAAA,qBAAqB,CAAC;AACpBrxB,IAAAA,KAAK,EAAE2wB,KAAK,CAACx2B,MAAN,CAAcV,IAAD,IAAUA,IAAI,CAACy3B,EAAL,KAAY,QAAnC,CADa;AAEpBd,IAAAA,OAFoB;AAGpBgB,IAAAA;AAHoB,GAAD,CAArB;AAMA,QAAME,eAAe,CAAC;AACpBtxB,IAAAA,KAAK,EAAE2wB,KAAK,CAACx2B,MAAN,CAAcV,IAAD,IAAUA,IAAI,CAACy3B,EAAL,KAAY,QAAnC,CADa;AAEpBd,IAAAA,OAFoB;AAGpBgB,IAAAA;AAHoB,GAAD,CAArB;AAMA,SAAOhB,OAAO,CAACR,YAAR,CAAqBwB,cAArB,CAAP;AACD;;AAED,eAAeE,eAAf,CAA+B;AAAEtxB,EAAAA,KAAF;AAASowB,EAAAA,OAAT;AAAkBgB,EAAAA;AAAlB,CAA/B,EAAmE;AACjE,QAAMxwB,OAAO,CAAC1H,GAAR,CACJ8G,KAAK,CAACzG,GAAN,CAAU,OAAO;AAAEgD,IAAAA;AAAF,GAAP,KAAoB;AAC5B6zB,IAAAA,OAAO,CAACn3B,OAAR,IACE4B,OAAO,CAACC,GAAR,CACEojB,KAAK,CAACqT,OAAN,CAAc,GAAd,CADF,EAEE53B,IAAI,CAACI,QAAL,CAAcJ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAd,CAFF,EAGE2hB,KAAK,CAACsH,GAAN,CAAUjpB,IAAI,CAACJ,OAAL,CAAai0B,OAAO,CAACp3B,GAArB,EAA0B,EAA1B,EAA8BmD,OAA9B,CAAsC,KAAtC,EAA6C,EAA7C,CAAV,CAHF,CADF;;AAOA,QAAI0D,gBAAgB,CAACtD,IAAD,CAApB,EAA4B;AAC1B,UAAIC,EAAE,GAAGkB,SAAS,CAACnB,IAAD,CAAlB;AACA,UAAIf,IAAI,GAAG40B,OAAO,CAAChyB,WAAR,CAAoBlD,GAApB,CAAwBsB,EAAxB,CAAX;AACAhB,MAAAA,IAAI,CAACwF,MAAL,CAAYzE,IAAZ;;AAEA,UAAIf,IAAI,CAACnB,IAAL,KAAc,CAAlB,EAAqB;AACnB+1B,QAAAA,OAAO,CAAChyB,WAAR,CAAoB4C,MAApB,CAA2BxE,EAA3B;AACD;AACF,KARD,MAQO;AACL,UAAIg1B,QAAQ,GAAG73B,IAAI,CAACY,IAAL,CAAUZ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAV,EAA8B,aAA9B,CAAf;AACA,UAAIuC,IAAI,GAAGsxB,OAAO,CAAC3xB,YAAR,CAAqBvD,GAArB,CAAyBs2B,QAAzB,CAAX;AACA,UAAI,CAAC1yB,IAAL,EAAW;AAEX2yB,MAAAA,kBAAkB,CAAC;AAAE3yB,QAAAA,IAAF;AAAQsxB,QAAAA,OAAR;AAAiBgB,QAAAA;AAAjB,OAAD,CAAlB;AAEAA,MAAAA,cAAc,CAAC5yB,SAAf,CAAyBwC,MAAzB,CAAgClC,IAAI,CAACvC,IAArC;AAEA,UAAIm1B,YAAY,GAAGtB,OAAO,CAACtvB,SAAR,CAAkB5F,GAAlB,CAAsB4D,IAAI,CAACtC,EAA3B,CAAnB;AACAk1B,MAAAA,YAAY,CAAC1wB,MAAb,CAAoBlC,IAAI,CAACvC,IAAzB;;AACA,UAAIm1B,YAAY,CAACr3B,IAAb,KAAsB,CAA1B,EAA6B;AAC3B+1B,QAAAA,OAAO,CAACtvB,SAAR,CAAkBE,MAAlB,CAAyBlC,IAAI,CAACtC,EAA9B;AACD;;AAED4zB,MAAAA,OAAO,CAAC3xB,YAAR,CAAqBuC,MAArB,CAA4BlC,IAAI,CAACvC,IAAjC;;AAEA,UAAIiD,UAAU,CAACjD,IAAD,CAAd,EAAsB;AACpB60B,QAAAA,cAAc,CAAC5yB,SAAf,CAAyBwC,MAAzB,CAAgCzE,IAAhC;;AACA,YAAI;AACF,gBAAMW,WAAE,CAACy0B,MAAH,CAAUp1B,IAAI,CAACJ,OAAL,CAAa,aAAb,EAA4B,SAA5B,CAAV,CAAN;AACD,SAFD,CAEE,OAAOkB,KAAP,EAAc;AACjB,OALD,MAKO,IAAIsC,eAAe,CAACpD,IAAD,CAAnB,EAA2B;AAChC,YAAIyD,KAAK,CAAC4xB,KAAN,CAAan4B,IAAD,IAAUA,IAAI,CAAC8C,IAAL,KAAcuC,IAAI,CAACvC,IAAzC,CAAJ,EAAoD;AAClD60B,UAAAA,cAAc,CAAC5yB,SAAf,CAAyB1E,GAAzB,CAA6BgF,IAAI,CAACvC,IAAlC;AACD;;AACD60B,QAAAA,cAAc,CAAC9xB,cAAf,CAA8B0B,MAA9B,CAAqCzE,IAArC;AACD,OALM,MAKA,IAAIqD,gBAAgB,CAACrD,IAAD,CAApB,EAA4B;AACjC60B,QAAAA,cAAc,CAAC7xB,eAAf,CAA+ByB,MAA/B,CAAsCzE,IAAtC;AACD;AACF;AACF,GA/CD,CADI,CAAN;AAkDD;;AAED,SAAS80B,qBAAT,CAA+B;AAAErxB,EAAAA,KAAF;AAASowB,EAAAA,OAAT;AAAkBgB,EAAAA;AAAlB,CAA/B,EAAmE;AACjEpxB,EAAAA,KAAK,CAACxG,OAAN,CAAc,CAAC;AAAE+C,IAAAA,IAAF;AAAQ20B,IAAAA;AAAR,GAAD,KAAkB;AAC9Bd,IAAAA,OAAO,CAACn3B,OAAR,IACE4B,OAAO,CAACC,GAAR,CACEojB,KAAK,CAAC8H,MAAN,CAAakL,EAAE,CAACW,WAAH,GAAiB,CAAjB,CAAb,CADF,EAEEl4B,IAAI,CAACI,QAAL,CAAcJ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAd,CAFF,EAGE2hB,KAAK,CAACsH,GAAN,CAAUjpB,IAAI,CAACJ,OAAL,CAAai0B,OAAO,CAACp3B,GAArB,EAA0B,EAA1B,EAA8BmD,OAA9B,CAAsC,KAAtC,EAA6C,EAA7C,CAAV,CAHF,CADF;;AAOA,QAAI0D,gBAAgB,CAACtD,IAAD,CAApB,EAA4B;AAC1B60B,MAAAA,cAAc,CAAC/yB,eAAf,CAA+BvE,GAA/B,CAAmCyC,IAAnC;AACD,KAFD,MAEO;AACL,UAAIiD,UAAU,CAACjD,IAAD,CAAd,EAAsB;AACpB60B,QAAAA,cAAc,CAAC5yB,SAAf,CAAyB1E,GAAzB,CAA6ByC,IAA7B;AAEA,YAAIu1B,SAAS,GAAGn4B,IAAI,CAACY,IAAL,CAAUZ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAV,EAA8B,UAA9B,CAAhB;;AACA,YAAIgE,aAAU,CAACuxB,SAAD,CAAd,EAA2B;AACzBV,UAAAA,cAAc,CAAC9xB,cAAf,CAA8BxF,GAA9B,CAAkCg4B,SAAlC;AACD;;AAED,YAAIC,UAAU,GAAGp4B,IAAI,CAACY,IAAL,CACfZ,IAAI,CAACC,OAAL,CAAaD,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAb,CADe,EAEf,aAFe,CAAjB;;AAIA,YAAIgE,aAAU,CAACwxB,UAAD,CAAd,EAA4B;AAC1BX,UAAAA,cAAc,CAAC5yB,SAAf,CAAyB1E,GAAzB,CAA6Bi4B,UAA7B;AACD;AACF,OAfD,MAeO,IAAIpyB,eAAe,CAACpD,IAAD,CAAnB,EAA2B;AAChC60B,QAAAA,cAAc,CAAC5yB,SAAf,CAAyB1E,GAAzB,CACEH,IAAI,CAACY,IAAL,CAAUZ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAV,EAA8B,aAA9B,CADF;AAGA60B,QAAAA,cAAc,CAAC9xB,cAAf,CAA8BxF,GAA9B,CAAkCyC,IAAlC;AACD,OALM,MAKA,IAAIqD,gBAAgB,CAACrD,IAAD,CAApB,EAA4B;AACjC60B,QAAAA,cAAc,CAAC7xB,eAAf,CAA+BzF,GAA/B,CAAmCyC,IAAnC;AACD;;AAED,UAAIi1B,QAAQ,GAAG73B,IAAI,CAACY,IAAL,CAAUZ,IAAI,CAACC,OAAL,CAAa2C,IAAb,CAAV,EAA8B,aAA9B,CAAf;AACA,UAAIuC,IAAI,GAAGsxB,OAAO,CAAC3xB,YAAR,CAAqBvD,GAArB,CAAyBs2B,QAAzB,CAAX;AACA,UAAI,CAAC1yB,IAAL,EAAW;AAEX2yB,MAAAA,kBAAkB,CAAC;AAAE3yB,QAAAA,IAAF;AAAQsxB,QAAAA,OAAR;AAAiBgB,QAAAA;AAAjB,OAAD,CAAlB;AACD;AACF,GAzCD;AA0CD;;AAED,SAASK,kBAAT,CAA4B;AAAE3yB,EAAAA,IAAF;AAAQsxB,EAAAA,OAAR;AAAiBgB,EAAAA;AAAjB,CAA5B,EAA+D;AAC7D,MAAI;AAAE5yB,IAAAA,SAAF;AAAac,IAAAA;AAAb,MAAgC2wB,cAAc,CAAC;AACjDnxB,IAAAA,IADiD;AAEjDL,IAAAA,YAAY,EAAE2xB,OAAO,CAAC3xB;AAF2B,GAAD,CAAlD;;AAKA,OAAK,IAAIlC,IAAT,IAAiBiC,SAAjB,EAA4B;AAC1B4yB,IAAAA,cAAc,CAAC5yB,SAAf,CAAyB1E,GAAzB,CAA6ByC,IAA7B;AACD;;AACD,OAAK,IAAIA,IAAT,IAAiB+C,cAAjB,EAAiC;AAC/B8xB,IAAAA,cAAc,CAAC9xB,cAAf,CAA8BxF,GAA9B,CAAkCyC,IAAlC;AACD;AACF;;ACxLc,eAAeg0B,KAAf,CAAqBzL,OAArB,EAA8B;AAC3CjqB,EAAAA,OAAO,CAACm3B,IAAR,CAAa,cAAb;AACA,MAAI5B,OAAO,GAAGT,WAAW,CAAC7K,OAAD,CAAzB;AAEA,QAAMrnB,oBAAoB,CAAC2yB,OAAO,CAACp3B,GAAT,CAA1B;AAEA,QAAMo3B,OAAO,CAACR,YAAR,CAAqB,MAAMxvB,QAAQ,CAACgwB,OAAO,CAACp3B,GAAT,CAAnC,CAAN;;AAEA,MAAI8rB,OAAO,CAAC7rB,OAAZ,EAAqB;AACnB,QAAIm3B,OAAO,CAAChyB,WAAR,CAAoB/D,IAApB,GAA2B,CAA/B,EAAkC;AAChCQ,MAAAA,OAAO,CAACC,GAAR,CAAYojB,KAAK,CAAC8H,MAAN,CAAc,0BAAd,CAAZ;AACAnrB,MAAAA,OAAO,CAACC,GAAR,CAAY,CAAC,GAAGs1B,OAAO,CAAChyB,WAAR,CAAoBlE,IAApB,EAAJ,EAAgC6D,IAAhC,GAAuCxD,IAAvC,CAA4C,IAA5C,CAAZ;AACD;;AAED,QAAIpB,KAAK,GAAG,CAAC,GAAGi3B,OAAO,CAAC3xB,YAAR,CAAqByD,MAArB,EAAJ,CAAZ;AACArH,IAAAA,OAAO,CAACC,GAAR,CACE3B,KAAK,CACFI,GADH,CACQuF,IAAD,IAAU;AACb,UAAImzB,GAAG,GAAGnzB,IAAI,CAACtC,EAAf;;AACA,UAAIsC,IAAI,CAACC,MAAT,EAAiB;AACfkzB,QAAAA,GAAG,GAAI,GAAEnzB,IAAI,CAACtC,EAAG,IAAG0hB,KAAK,CAACsH,GAAN,CAAU,aAAV,CAAyB,EAA7C;AACD,OAFD,MAEO,IAAI1mB,IAAI,CAACuf,KAAT,EAAgB;AACrB4T,QAAAA,GAAG,GAAI,GAAEnzB,IAAI,CAACtC,EAAG,IAAG0hB,KAAK,CAACsH,GAAN,CAAU,aAAV,CAAyB,EAA7C;AACD;;AACD,aAAQ,GAAEtH,KAAK,CAAC8H,MAAN,CAAa,GAAb,CAAkB,IAAG9H,KAAK,CAACqH,KAAN,CAAY,GAAZ,CAAiB,IAAG0M,GAAI,IAAG/T,KAAK,CAACsH,GAAN,CACxD7rB,IAAI,CAACkD,QAAL,CAAcuzB,OAAO,CAACp3B,GAAtB,EAA2B8F,IAAI,CAACvC,IAAhC,CADwD,CAExD,EAFF;AAGD,KAXH,EAYGwB,IAZH,GAaGxD,IAbH,CAaQ,IAbR,CADF;AAiBApB,IAAAA,KAAK,CAACK,OAAN,CAAcqsB,kBAAd;AACD;;AAEDhrB,EAAAA,OAAO,CAACC,GAAR,CAAYojB,KAAK,CAACqH,KAAN,CAAY,wBAAZ,CAAZ;AACA1qB,EAAAA,OAAO,CAACq3B,OAAR,CAAgB,cAAhB;AACA,MAAIpN,OAAO,CAACqN,IAAZ,EAAkB;AAElB,MAAI9B,OAAO,GAAGF,UAAU,CAAC;AAAEC,IAAAA;AAAF,GAAD,CAAxB;AAEA/rB,EAAAA,OAAO,CAAC8sB,EAAR,CAAW,YAAX,EAAyB,MAAM;AAC7Bt2B,IAAAA,OAAO,CAACC,GAAR,CAAY,wCAAZ;AACAu1B,IAAAA,OAAO,CAAC+B,KAAR;AACD,GAHD;AAID;;AC5CD,IAAIC,IAAI,GAAGL,IAAI,IAAI,IAAIpxB,OAAJ,CAAYoD,OAAO,IAAIsuB,UAAU,CAACtuB,OAAD,EAAUguB,IAAV,CAAjC,CAAnB;;AAEC,CAAC,kBAAiB;AACjB,MAAI;AACF5I,IAAAA,CADE;AAEF7qB,IAAAA,EAFE;AAGFxF,WAAAA,OAHE;AAIFw5B,IAAAA,IAJE;AAKFzwB,IAAAA,KALE;AAMFyuB,IAAAA,KAAK,EAAEiC,WANL;AAOFv5B,IAAAA,OAPE;AAQFqsB,IAAAA;AARE,MASAmN,QAAQ,CAACpuB,OAAO,CAACquB,IAAR,CAAa5I,KAAb,CAAmB,CAAnB,CAAD,EAAwB;AAClC6I,IAAAA,KAAK,EAAE;AACLJ,MAAAA,IAAI,EAAE;AADD,KAD2B;AAIlCK,IAAAA,QAAQ,EAAE,CAAC,OAAD,EAAU,MAAV,EAAkB,OAAlB,EAA2B,OAA3B,EAAoC,SAApC,CAJwB;AAKlCC,IAAAA,OAAO,EAAE;AACPt0B,MAAAA,EAAE,EAAE,WADG;AAEPxF,MAAAA,KAAK,EAAE,KAFA;AAGP+I,MAAAA,KAAK,EAAE,IAHA;AAIP7I,MAAAA,OAAO,EAAE,IAJF;AAKPqsB,MAAAA,OAAO,EAAE,KALF;AAMPiL,MAAAA,KAAK,EAAE;AANA;AALyB,GAAxB,CATZ;;AAwBA,MAAI,CAACiC,WAAD,IAAgB1wB,KAApB,EAA2B;AACzBA,IAAAA,KAAK,GAAG,KAAR;AACD;;AAED,MAAIywB,IAAJ,EAAU;AACR13B,IAAAA,OAAO,CAACC,GAAR,CAAa;;;;;;;;;;;;GAAb;AAcAuJ,IAAAA,OAAO,CAAC2sB,IAAR;AACD;;AAED,MAAI1L,OAAJ,EAAa;AACXzqB,IAAAA,OAAO,CAACC,GAAR,CAAa,IAAGg4B,GAAG,CAACxN,OAAQ,EAA5B;AACAjhB,IAAAA,OAAO,CAAC2sB,IAAR;AACD;;AAED,MAAI+B,KAAK,GAAGnnB,KAAK,CAACC,OAAN,CAAcud,CAAd,KAAoBA,CAAC,CAAC,CAAD,CAAjC;;AAEA,MAAI,CAAC2J,KAAD,IAAU,CAAC,CAAC,MAAM71B,WAAE,CAAC81B,IAAH,CAAQD,KAAR,CAAP,EAAuBE,WAAvB,EAAf,EAAqD;AACnDp4B,IAAAA,OAAO,CAACwC,KAAR,CACG,oDAAmD01B,KAAM,aAD5D;AAGA1uB,IAAAA,OAAO,CAAC2sB,IAAR;AACD;;AAED,MAAI,CAACr3B,IAAI,CAACu5B,UAAL,CAAgBH,KAAhB,CAAL,EAA6B;AAC3BA,IAAAA,KAAK,GAAGp5B,IAAI,CAACmZ,SAAL,CAAenZ,IAAI,CAACY,IAAL,CAAU8J,OAAO,CAAChL,GAAR,EAAV,EAAyB05B,KAAzB,CAAf,CAAR;AACD;;AAED,MAAI;AACF,QAAI,CAAC,MAAM71B,WAAE,CAAC81B,IAAH,CAAQr5B,IAAI,CAACY,IAAL,CAAUw4B,KAAV,EAAiB,KAAjB,CAAR,CAAP,EAAyCE,WAAzC,EAAJ,EAA4D;AAC1DF,MAAAA,KAAK,GAAGp5B,IAAI,CAACY,IAAL,CAAUw4B,KAAV,EAAiB,KAAjB,CAAR;AACD;AACF,GAJD,CAIE,OAAO11B,KAAP,EAAc;;AAEhB,MAAItE,OAAJ,EAAW;AACT8B,IAAAA,OAAO,CAACC,GAAR,CAAa,eAAci4B,KAAM,KAAjC;AACA,UAAMI,KAAO,CAACJ,KAAD,EAAQ95B,OAAR,EAAiB,IAAjB,CAAb;AACAoL,IAAAA,OAAO,CAAC2sB,IAAR;AACD,GAJD,MAIO;AACL,UAAMmC,KAAO,CAACJ,KAAD,EAAQ95B,OAAR,CAAb;AACD;;AAEDm6B,EAAAA,cAAc,CAAC;AAAEN,IAAAA;AAAF,GAAD,CAAd,CAAwBO,MAAxB;;AAEA,MAAIp6B,OAAJ,EAAa;AACX4B,IAAAA,OAAO,CAACC,GAAR,CAAYojB,KAAK,CAACoV,SAAN,CAAiB,wBAAuBR,GAAG,CAACxN,OAAQ,EAApD,CAAZ;AAEAzqB,IAAAA,OAAO,CAACC,GAAR,CACG,0BAAyBojB,KAAK,CAACqH,KAAN,CAAYwN,KAAZ,CAAmB,SAAQ7U,KAAK,CAACqH,KAAN,CAAYhnB,EAAZ,CAAgB,KACnEuD,KAAK,GAAG,kBAAH,GAAwB,qBAC9B,EAHH;;AAMA,QAAI0wB,WAAW,IAAI,CAAC1wB,KAApB,EAA2B;AACzBjH,MAAAA,OAAO,CAACC,GAAR,CACEojB,KAAK,CAACqV,KAAN,CAAY,iDAAZ,CADF;AAGA14B,MAAAA,OAAO,CAACC,GAAR;AACAD,MAAAA,OAAO,CAACC,GAAR,CAAa,0BAAb;AACAD,MAAAA,OAAO,CAACC,GAAR,CACEojB,KAAK,CAACsV,IAAN,CACE,sFADF,CADF;AAKA34B,MAAAA,OAAO,CAACC,GAAR;AACAD,MAAAA,OAAO,CAACC,GAAR,CACE,mBADF,EAEEojB,KAAK,CAACsV,IAAN,CAAWtV,KAAK,CAACqH,KAAN,CAAY,qBAAZ,CAAX,CAFF;AAIA1qB,MAAAA,OAAO,CAACC,GAAR;AACAD,MAAAA,OAAO,CAACC,GAAR,CACEojB,KAAK,CAACqV,KAAN,CAAY,iDAAZ,CADF;AAGA,YAAMlB,IAAI,CAAC,KAAD,CAAV;AACD;;AAEDx3B,IAAAA,OAAO,CAACC,GAAR,CAAYojB,KAAK,CAAC8H,MAAN,CAAa,GAAb,CAAZ,EAA+B,SAA/B;AACAnrB,IAAAA,OAAO,CAACC,GAAR,CAAYojB,KAAK,CAACqH,KAAN,CAAY,GAAZ,CAAZ,EAA+B,WAA/B;AACA1qB,IAAAA,OAAO,CAACC,GAAR,CAAYojB,KAAK,CAACqT,OAAN,CAAc,GAAd,CAAZ,EAAiC,WAAjC;AACA12B,IAAAA,OAAO,CAACC,GAAR,CAAY,SAAZ,EAAuBojB,KAAK,CAACkI,IAAN,CAAW,QAAX,CAAvB,EAA6C,wBAA7C;AACD;;AAEDmK,EAAAA,KAAK,CAAC;AACJhyB,IAAAA,EADI;AAEJ4zB,IAAAA,IAAI,EAAE,CAACK,WAFH;AAGJx5B,IAAAA,GAAG,EAAE+5B,KAHD;AAIJjxB,IAAAA,KAJI;AAKJ7I,IAAAA;AALI,GAAD,CAAL;AAOD,CA9HA"}
\No newline at end of file