UNPKG

425 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","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/get-formatters.js","morph/react/get-locals.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/did-you-mean.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 { promises as fs } from 'fs'\nimport deleteEmpty from 'delete-empty'\nimport glob from 'fast-glob'\nimport path from 'path'\n\nexport default async function clean(src, verbose) {\n let morphed = await glob(\n [\n '**/*.view.js',\n `Fonts/*.js`,\n 'useFlow.js',\n 'useIsMedia.js',\n 'useIsBefore.js',\n 'useTools.js',\n ],\n {\n bashNative: ['linux'],\n cwd: src,\n ignore: ['*node_modules*'],\n }\n )\n\n await Promise.all(\n morphed.map(f => {\n verbose && console.log(`x ${f}`)\n return fs.unlink(path.join(src, f))\n })\n )\n\n let deleted = await deleteEmpty(src)\n if (verbose) {\n deleted.forEach(d => console.log(`x ${d}`))\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) {\n let r = path.relative(from, to).replace(/\\\\/g, '/')\n return r.substr(r.startsWith('../..') ? 3 : 1)\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\nexport let PATTERNS = {\n filesView: {\n match: ['**/view.blocks'],\n },\n filesViewLogic: {\n match: ['**/logic.js'],\n },\n filesViewCustom: {\n match: ['**/react.js'],\n },\n filesFontCustom: {\n match: [\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}\n\n// @ts-ignore\nexport let isViewFile = async file => mm.isMatch(file, PATTERNS.filesView.match)\nexport let isViewLogicFile = async file =>\n // @ts-ignore\n mm.isMatch(file, PATTERNS.filesViewLogic.match)\nexport let isViewCustomFile = async file =>\n // @ts-ignore\n mm.isMatch(file, PATTERNS.filesViewCustom.match)\nexport let isFontCustomFile = async file =>\n // @ts-ignore\n mm.isMatch(file, PATTERNS.filesFontCustom.match)\n\nexport let MATCH = Object.values(PATTERNS)\n .map(item => item.match)\n .flat()\n\nexport async function getMatchesPerPattern(files) {\n // @ts-ignore\n return Object.fromEntries(\n await Promise.all(\n Object.entries(PATTERNS).map(async ([key, { filter, match, ignore }]) => {\n let matches = mm(files, match, { ignore })\n if (typeof filter === 'function') {\n matches = await filter(matches)\n }\n return [key, new Set(matches)]\n })\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: ['**/node_modules/**', '**/view.js'],\n })\n\n return await getMatchesPerPattern(files)\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 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 }\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 function ensureData({ src }) {\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 // TODO add better error message\n console.log('No import candidates for ', id, 'from', view.file)\n importCandidates = new Set()\n }\n let importViewFile = [...importCandidates][0]\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 return viewsToFiles.get(importViewFile)\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 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 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 fsExtra from 'fs-extra'\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 ((await fsExtra.exists(file)) && process.env.REACT_APP_VIEWS_TOOLS)\n 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')\nlet FILE_LOCAL_CONTAINER = 'LocalContainer.js'\nlet FILE_TRACK_CONTEXT = 'TrackContext.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 )}'`\n\n case 'ViewsUseIsBefore':\n return `import useIsBefore from '${relativise(\n file,\n path.join(src, FILE_USE_IS_BEFORE)\n )}'`\n\n case 'ViewsUseIsHovered':\n return `import useIsHovered from '${relativise(\n file,\n path.join(src, FILE_USE_IS_HOVERED)\n )}'`\n\n case 'ViewsUseData':\n return `import * as fromData from '${relativise(\n file,\n path.join(src, FILE_USE_DATA)\n )}'`\n\n case 'ViewsUseFlow':\n return `import * as fromFlow from '${relativise(\n file,\n path.join(src, FILE_USE_FLOW)\n )}'`\n\n case 'LocalContainer':\n return `import LocalContainer from '${relativise(\n file,\n path.join(src, FILE_LOCAL_CONTAINER)\n )}'`\n\n case 'TrackContext':\n return `import { TrackContext } from '${relativise(\n file,\n path.join(src, FILE_TRACK_CONTEXT)\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 = 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 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 && !scope.isLocal)\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\nlet getScopedConditionPropValue = node => {\n let value = null\n\n 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.flow$/\n\nexport let getScopedCondition = (propNode, blockNode, state) => {\n let scopedProps = getScopedProps(propNode, blockNode)\n\n if (!scopedProps) return false\n\n let conditional = getScopedConditionPropValue(propNode)\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 when = when.replace('props.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 )} : ${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 ? /(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 => 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.isLocal &&\n !scope.isSystem &&\n scope.properties.some(prop => prop.name === propNode.name)\n )\n\nexport let hasLocals = (propNode, blockNode) =>\n blockNode.scopes.some(scope => scope.isLocal)\n\nexport let getLocals = (propNode, blockNode, state) => {\n let locals = {}\n\n blockNode.scopes\n .filter(scope => scope.isLocal)\n .forEach(scope => {\n let prop = scope.properties.find(prop => prop.name === propNode.name)\n if (prop) {\n locals[scope.value] = prop.value\n }\n })\n\n return locals\n}\n\nexport let getLocalsString = (propNode, blockNode, state) => {\n let baseLocalName = `${blockNode.is || blockNode.name}Local`\n let localName = baseLocalName\n let index = 1\n while (localName in state.locals) {\n localName = `${baseLocalName}${index++}`\n }\n\n state.locals[localName] = getLocals(propNode, blockNode, state)\n return wrap(`${localName}[local.state.lang] || ${safe(propNode.value)}`)\n}\n\nexport let makeOnClickTracker = (node, parent, state) => {\n if (!state.track) return node.value\n\n let block = parent.testId\n ? `\"${state.name}.${parent.testId}\"`\n : `props[\"${state.testIdKey}\"] || \"${state.name}\"`\n\n state.isTracking = true\n\n return `event => {\n typeof ${node.value} === 'function' && ${node.value}(event);\n\n track({ block: ${block}, action: \"click\", event, props });\n }`\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 => 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 => scope.properties.filter(prop => prop.animation))\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","import { getLocalsString, hasLocals } from '../utils.js'\n\nexport 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 === 'text' || k === 'placeholder') && hasLocals(node, parent)) {\n return state.render.push(\n ` ${k}=${getLocalsString(node, parent, state)}`\n )\n } else 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\\.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}', ${css.join(', ')}})`\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 {\n getLocalsString,\n getScopedCondition,\n hasCustomScopes,\n hasLocals,\n isSlot,\n} from '../utils.js'\nimport wrap from './wrap.js'\n\nlet parseFormatValue = (value, type) => {\n switch (type) {\n case 'percent':\n return value / 100\n case 'date':\n return `Date.parse('${value}')`\n case 'time':\n let timeValues = value.split(':')\n let timeStr = `Date.UTC(2018, 14, 3`\n // parseInt to remove leading zeroes, it isn't a valid number otherwise\n timeValues.forEach(val => (timeStr += `, ${parseInt(val, 10)}`))\n return `${timeStr})`\n default:\n return value\n }\n}\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 (hasLocals(node, parent)) {\n parent.explicitChildren = getLocalsString(node, parent, state)\n } else if (parent.hasOwnProperty('format')) {\n let type = Object.keys(parent.format)[0]\n parent.explicitChildren = `{${type}Formatters[local.state.lang].format(${parseFormatValue(\n node.value,\n type\n )})}`\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\nexport let enter = [\n BlockMaybeSkip.enter,\n BlockSetTestId.enter,\n BlockOffWhen.enter,\n BlockName.enter,\n BlockTable.enter,\n BlockColumn.enter,\n BlockCapture.enter,\n BlockGoTo.enter,\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 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 (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'\n\nexport default function makeGetImport({\n imports,\n getSystemImport,\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 if (!viewsById.has(id)) {\n throw new Error(\n `Import \"${id}\" doesn't exist. It's being imported from ${view.id}.`\n )\n }\n\n let importView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n if (!importView) {\n throw new Error(\n `Import \"${id}\" doesn't exist. It's being imported from ${view.id}.`\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)\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 if (Object.keys(state.locals).length > 0 || state.isFormatted) {\n render = `<Subscribe to={[LocalContainer]}>\\n{local =>\\n${render}\\n}</Subscribe>`\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 switch (state.data.type) {\n case 'show':\n case 'capture': {\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 break\n }\n\n default: {\n break\n }\n }\n }\n\n if (state.hasRefs) {\n let trackOpen = state.track ? '<TrackContext.Consumer>{track => (' : ''\n let trackClose = state.track ? ')}</TrackContext.Consumer>' : ''\n return `export default class ${name} extends React.Component {\n render() {\n let { props } = this\n return (${trackOpen}${render}${trackClose})\n }\n}`\n } else {\n let ret = render ? `(${render})` : null\n\n return `export default function ${name}(props) {\n ${state.track ? `let track = React.useContext(TrackContext)` : ''}\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\nlet importsFirst = (a, b) => {\n let aIsImport = a.startsWith('import')\n let bIsImport = b.startsWith('import')\n\n if ((aIsImport && bIsImport) || (!aIsImport && !bIsImport))\n return sortAlphabetically(a, b)\n\n if (aIsImport) return -1\n if (bIsImport) return 1\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\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 dependencies.push(getImport(d, state.lazy[d]))\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.track) {\n dependencies.push(getImport('TrackContext'))\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 if (Object.keys(state.locals).length > 0) {\n dependencies.push('import { Subscribe } from \"unstated\"')\n dependencies.push(getImport('LocalContainer'))\n state.dependencies.add('unstated')\n }\n\n return dependencies\n .filter(Boolean)\n .sort(importsFirst)\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","export default state => (state.isFormatted ? createFormatters(state) : '')\n\nlet createFormatters = ({ formats, localSupported }) => {\n return formats\n .map(format => {\n return getFormat(format, localSupported)\n })\n .join('')\n}\n\nlet getFormat = (format, localSupported) => {\n let style = Object.keys(format)[0]\n let type = style === 'currency' || style === 'percent' ? 'Number' : 'DateTime'\n\n let options = getOptions(format[`${style}`], style, type)\n let string = `let ${style}Options = ${options}\\nlet ${style}Formatters = {`\n localSupported.forEach(local => {\n string += `${local}: new Intl.${type}Format('${local}', ${style}Options),\\n`\n })\n\n return `${string} }\\n`\n}\n\nlet getOptions = (format, style, type) => {\n if (style === 'currency')\n return `{ style: 'currency', currency: '${format}' }`\n\n if (style === 'percent')\n return `{ style: 'percent', maximumFractionDigits: 2 }`\n\n if (style === 'time' && format.clock) {\n format.hour12 = format.clock === '24h' ? false : true\n delete format.clock\n }\n return JSON.stringify(format)\n}\n","export default ({ locals }) =>\n `\\n${Object.keys(locals)\n .map(k => `let ${k} = ${JSON.stringify(locals[k], null, ' ')}`)\n .join('\\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'\nimport getFormatters from './get-formatters.js'\nimport getLocals from './get-locals.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${getFormatters(state, name)}\n${getLocals(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 local,\n localSupported,\n track,\n tools,\n view,\n viewsById,\n viewsToFiles,\n}) => {\n let name = view.id\n let finalName = restrictedNames.includes(name) ? `${name}1` : name\n if (name !== finalName) {\n console.warn(\n `// \"${name}\" is a Views reserved name.\n We've renamed it to \"${finalName}\", so your view should work but this isn't ideal.\n To fix this, change its file name to something else.`\n )\n }\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 local,\n locals: {},\n localSupported: [],\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 track,\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 block === finalName\n )\n return\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 state.localSupported = localSupported\n\n walk(view.parsed.view, visitor, state)\n\n return {\n code: toComponent({\n getImport: makeGetImport({\n imports,\n getSystemImport,\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 // 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(`}) : 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 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 state.render.push(`<${name}`)\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\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 BlockBackgroundImage.enter,\n BlockInList.enter,\n BlockAddTestIdProp.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 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 (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 local,\n localSupported,\n reactNativeLibraryImport = 'react-native',\n tools,\n track,\n view,\n viewsById,\n viewsToFiles,\n}) => {\n let name = view.id\n let finalName = restrictedNames.includes(name) ? `${name}1` : name\n if (name !== finalName) {\n console.warn(\n `// \"${name}\" is a Views reserved name.\n We've renamed it to \"${finalName}\", so your view should work but this isn't ideal.\n To fix this, change its file name to something else.`\n )\n }\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 local,\n locals: {},\n localSupported: [],\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 track,\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 block === finalName\n )\n return\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 state.localSupported = localSupported\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 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'\nimport prettier from 'prettier'\n\nexport default function maybeMorph({\n as,\n getFontImport,\n getSystemImport,\n local,\n track,\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 // isStory,\n local,\n // localSupported,\n track,\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 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 local,\n filesView,\n tools,\n track,\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 local,\n tools,\n track,\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 '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 '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","import Levenshtein from 'levenshtein'\nimport sortBy from 'lodash.sortby'\n\n/**\n * Creates a fuzzy matcher.\n *\n * Usage:\n *\n * ```\n * var m = new Matcher({\n * values: 'init install update upgrade',\n * threshold: 4\n * });\n *\n * m.list('udpate') // [ { value: 'update', distance: 2 }, { value: 'upgrade', distance: 4 } ]\n * m.get('udpate') // { value: 'update', distance: 2 }\n * ```\n *\n * You can also initialize with an array or with a string directly:\n *\n * ```\n * new Matcher('init install update upgrade');\n * new Matcher(['init', 'install', 'update', 'upgrade']);\n * ```\n *\n * @param options {Object} may contain:\n *\n * * `threshold` (number, default `2`) — maximum search distance, increase\n * for more relaxed search\n *\n * * `values` (array or string, default `[]`) — an array of words to match from;\n * if a string is given, values can be separated with comma or whitespace\n *\n * * `caseSensitive` (boolean, default `false`) — ignore case when matching\n */\nvar Matcher = function(options) {\n options = options || {}\n if (typeof options == 'string' || Array.isArray(options))\n options = { values: options }\n this.values = []\n this.threshold = options.threshold || 2\n\n // Try to initialize via `options.values`\n\n if (Array.isArray(options.values)) this.values = options.values\n else if (typeof options.values == 'string')\n this.values = options.values.split(/[, ]\\s*/g)\n\n this.caseSensitive = options.caseSensitive || false\n}\n\n/**\n * Adds values to the dictionary.\n *\n * Usage:\n *\n * ```\n * new Matcher().add('update', 'upgrade', 'delete').get('deete')\n * ```\n *\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.add = function() {\n ;[].push.apply(this.values, arguments)\n return this\n}\n\n/**\n * Chainable helper for settings `this.caseSensitive = false`.\n *\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.ignoreCase = function() {\n this.caseSensitive = false\n return this\n}\n\n/**\n * Chainable helper for settings `this.caseSensitive = true`.\n *\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.matchCase = function() {\n this.caseSensitive = true\n return this\n}\n\n/**\n * Chainable helper for settings `this.threshold`.\n *\n * @param num {Number} new threshold\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.setThreshold = function(num) {\n this.threshold = num\n return this\n}\n\n/**\n * Calculate distance (how much difference) between two strings\n *\n * @param word1 {String} a string input\n * @param word2 {String} the other string input\n * @returns {Number} Levenshtein distance between word1 and word2\n */\nMatcher.prototype.distance = function(word1, word2) {\n return new Levenshtein(word1, word2).distance\n}\n\n/**\n * Lists all results from dictionary which are similar to `q`.\n *\n * ```\n * new Matcher({\n * values: 'init install update upgrade',\n * threshold: 4\n * }).list('udpdate');\n * // [ { value: 'update', distance: 2 }, { value: 'upgrade', distance: 4 } ]\n * ```\n *\n * The results are sorted by their distance (similarity). The distance of `0` means\n * a strict match.\n *\n * You can increase `threshold` for more relaxed search, or decrease it to shorten the results.\n *\n * @param q {String} — search string\n * @returns {Array} — an array of objects `{ value: String, distance: Number }`\n */\nMatcher.prototype.list = function(q) {\n var m = this\n q = q.trim()\n if (!m.caseSensitive) q = q.toLowerCase()\n var matches = this.values.reduce(function(results, word) {\n var d = m.distance(q, m.caseSensitive ? word : word.toLowerCase())\n if (d > m.threshold) return results\n return results.concat({\n value: word,\n distance: d,\n })\n }, [])\n return sortBy(matches, 'distance')\n}\n\n/**\n * Returns a single closest match (or `null` if no values from the dictionary\n * are similar to `q`).\n *\n * @param q {String} — search string\n * @returns {String} — closest match or `null`\n */\nMatcher.prototype.get = function(q) {\n var closest = this.list(q)[0]\n return closest ? closest.value : null\n}\n\nexport default Matcher\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}\n","import { isRowStyle, isStyle, STYLE } from './prop-is-style.js'\nimport { fontFamily as googleFontFamilies } from '../morph/fonts.js'\nimport DidYouMeanMatcher from './did-you-mean.js'\nimport isNumber from './prop-is-number.js'\nimport locales from 'i18n-locales'\nimport toSlugCase from 'to-slug-case'\n\nlet LOCAL_SCOPES = locales.map(item => item.replace(/-/g, ''))\n\nlet 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\nexport let didYouMeanProp = prop => dymPropMatcher.get(prop)\n\nexport 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)\nexport let isAnimation = line => 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[2]\n let [context = null] = /\\./.test(path) ? path.split('.') : [path]\n\n return { type: match[1], 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\nexport let isLocalScope = name => LOCAL_SCOPES.includes(name)\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 => !/^(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') 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 isLocalScope,\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 enableLocalScopes = true,\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 fonts = []\n let isDefiningChildrenExplicitly = false\n let locals = []\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 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 } 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 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 (id === name) {\n warnings.push({\n loc: block.loc,\n type: `Is this a typo? You can't use the view within itself.\\nRename the view or use a different block instead of ${name} here. This won't be morphed to avoid loops.`,\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\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 ${last.is ||\n last.name} 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: `${block.is ||\n block.name} 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: `${block.is ||\n block.name} 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 ${block.is ||\n block.name} within the top block and indent all nested views within ${block.is ||\n block.name}, 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 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 } 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 let isLocal = enableLocalScopes && isLocalScope(slotName)\n\n if (isLocal) {\n if (!locals.includes(value)) {\n locals.push(slotName)\n }\n }\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 // TODO warning\n // if (isLocal && (name !== 'text' || name !== 'placeholder')) {\n // }\n\n tags.scope = value\n inScope = true\n scope = {\n isLocal,\n isSystem,\n defaultValue: getValue(value, name),\n value,\n name,\n slotName,\n slotIsNot: isSystem || isLocal ? 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 && !isLocal) {\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 ||\n 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 if (\n !inScope &&\n !propNode.tags.fragment &&\n !slots.some(vp => vp.name === (slotName || name))\n ) {\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 } 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 locals,\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 local = 'en',\n src,\n tools = false,\n track = false,\n verbose = true,\n}) {\n let state = {\n as,\n local,\n src,\n tools,\n track,\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 local: state.local,\n tools: state.tools,\n track: state.track,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n console.time('a')\n let filesToWrite = [\n ...morphedFonts,\n ...morphedViews,\n // TODO optimise, only if they changed, cache, etc\n await ensureData(state),\n await ensureFlow(state),\n await ensureTools(state),\n await ensureIsBefore(state),\n await ensureIsHovered(state),\n await ensureIsMedia(state),\n ].filter(Boolean)\n console.timeEnd('a')\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 { 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: [\n path.join('**', 'node_modules', '**'),\n path.join('**', 'view.js'),\n path.join('**', 'DesignSystem', 'Fonts', '*.js'),\n path.join('**', 'Logic', 'ViewsFlow.js'),\n path.join('**', 'Logic', 'useIsMedia.js'),\n path.join('**', 'Logic', 'useIsBefore.js'),\n path.join('**', 'Logic', 'useIsHovered.js'),\n path.join('**', 'Logic', 'ViewsTools.js'),\n path.join('**', 'Data', 'ViewsData.js'),\n ],\n ignoreInitial: true,\n // awaitWriteFinish: true,\n })\n\n let skipTimeout = null\n let processEventsPromise = null\n let queue = []\n\n function onEvent({ file, op }) {\n queue.push({ file: path.join(morpher.src, file), op })\n maybeProcess()\n }\n\n function maybeProcess() {\n // if busy, try again in a bit\n clearTimeout(skipTimeout)\n skipTimeout = null\n if (processEventsPromise) {\n skipTimeout = setTimeout(maybeProcess, 50)\n return\n }\n processEvents()\n }\n\n async function processEvents() {\n if (queue.length === 0 || processEventsPromise) {\n return\n }\n\n let queueClone = [...queue]\n queue = []\n processEventsPromise = new Promise(async resolve => {\n try {\n await processQueue({ queue: queueClone, morpher })\n } catch (error) {\n console.error(error)\n } finally {\n resolve()\n processEventsPromise = null\n }\n })\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 await Promise.all([\n processUnlinked({\n files: queue.filter(item => item.op === 'unlink'),\n morpher,\n filesToProcess,\n }),\n processAddedOrChanged({\n files: queue.filter(item => item.op !== 'unlink'),\n morpher,\n filesToProcess,\n }),\n ])\n\n await morpher.processFiles(filesToProcess)\n\n if (!morpher.verbose) return // && viewsId.size > 0) {\n\n // Object.entries(filesToProcess).forEach(([key, value]) => {\n // console.log(chalk.greenBright(key), [...value])\n // })\n\n // console.log(chalk.green('M'), [...viewsId].join(', '))\n // }\n}\n\nfunction processUnlinked({ files, morpher, filesToProcess }) {\n return 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 (await 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 morpher.viewsById.delete(view.id)\n morpher.viewsToFiles.delete(view.file)\n\n if (await 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 (await isViewLogicFile(file)) {\n filesToProcess.filesView.add(view.file)\n filesToProcess.filesViewLogic.delete(file)\n } else if (await isViewCustomFile(file)) {\n filesToProcess.filesViewCustom.delete(file)\n }\n }\n })\n )\n}\n\nfunction processAddedOrChanged({ files, morpher, filesToProcess }) {\n return Promise.all(\n files.map(async ({ 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 (await isFontCustomFile(file)) {\n filesToProcess.filesFontCustom.add(file)\n } else {\n if (await 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 (await isViewLogicFile(file)) {\n filesToProcess.filesView.add(\n path.join(path.dirname(file), 'view.blocks')\n )\n filesToProcess.filesViewLogic.add(file)\n } else if (await 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 // morpher.verbose &&\n // console.log(\n // op === 'add'\n // ? `${chalk.yellow('A')} ${chalk.green('M')}`\n // : chalk.green('M'),\n // getViewIdFromFile(file),\n // chalk.dim(`-> ${file}`)\n // )\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 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(process.cwd(), view.file)\n )}`\n })\n .sort()\n .join('\\n')\n )\n\n views.forEach(maybePrintWarnings)\n }\n\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 local,\n tools,\n track,\n watch: shouldWatch,\n verbose,\n version,\n } = minimist(process.argv.slice(2), {\n alias: {\n help: 'h',\n },\n booleans: ['clean', 'help', 'track', 'tools', 'watch', 'version'],\n default: {\n as: 'react-dom',\n clean: false,\n local: 'en',\n tools: true,\n track: false,\n verbose: true,\n version: false,\n watch: false,\n },\n })\n\n if (!shouldWatch && tools) {\n tools = false\n }\n\n track = track === 'true'\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 --local default local language, defaults to English (en)\n --tools use with Views Tools, defauls to true when\n --watch is enabled, otherwise defaults to false\n --track enable UI tracking, 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)\n process.exit()\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.blue('X'), `= Deleted`)\n console.log('\\nPress', chalk.blue('ctrl+c'), 'to stop at any time.\\n')\n }\n\n watch({\n as,\n local,\n once: !shouldWatch,\n src: input,\n tools,\n track,\n verbose,\n })\n})()\n"],"names":["clean","src","verbose","morphed","glob","bashNative","cwd","ignore","Promise","all","map","f","console","log","fs","unlink","path","join","deleted","deleteEmpty","forEach","d","addToMapSet","key","value","has","set","Set","get","add","getWeights","variants","filter","v","includes","list","font","category","family","weights","byName","fontFamily","isGoogleFont","maybeAddFallbackFont","sources","body","replace","weight","style","type","file","id","relativise","from","to","r","relative","substr","startsWith","ensureDir","dir","mkdir","recursive","error","morphFont","morphFontAsReactDom","morphFontAsReactNative","ensureFontsDirectory","getFontId","basename","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","match","filesViewLogic","filesViewCustom","isViewFile","mm","isMatch","isViewLogicFile","isViewCustomFile","isFontCustomFile","MATCH","Object","values","item","flat","getMatchesPerPattern","files","fromEntries","entries","matches","getFiles","absolute","ensureFile","dirname","DATA","ensureData","getViewRelativeToView","viewsById","importCandidates","importViewFile","size","pathToView","maybeFileViewInside","maybeFileViewCustomInside","ensureFirstStoryIsOn","flow","stories","story","index","isSeparate","makeFlow","tools","flowMap","Map","flowMapStr","isStory","states","views","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","fsExtra","exists","process","env","REACT_APP_VIEWS_TOOLS","FILE_USE_IS_BEFORE","FILE_USE_IS_HOVERED","FILE_USE_IS_MEDIA","FILE_USE_DATA","FILE_USE_FLOW","FILE_LOCAL_CONTAINER","FILE_TRACK_CONTEXT","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","shadowOffsetY","shadowOffsetX","shadowBlur","shadowSpread","skew","spreadRadius","top","translateX","translateY","wordSpacing","zIndex","UNITS_KEYS","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","p","nodeScope","prop","properties","getPropValueOrDefault","defaultValue","hasProp","getScopedProps","propNode","blockNode","isSystem","isLocal","when","Boolean","reverse","isEmpty","getScopedConditionPropValue","tags","slot","safe","unit","CHILD_VALUES","DATA_VALUES","IS_HOVERED_OR_SELECTED_HOVER","IS_FLOW","getScopedCondition","scopedProps","conditional","data","hasCustomBlockParent","flowPath","getFlowPath","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","hasLocals","getLocals","locals","getLocalsString","baseLocalName","localName","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","setFlowTo","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","use","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","parseFormatValue","timeValues","timeStr","val","parseInt","HAS_RESTRICTED_CHARACTERS","hasOwnProperty","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","block","scopedCondition","isText","shadowColor","shadowInset","shadowInsetValue","getTransformValue","transformOriginX","transformOriginY","Number","isInteger","isUrl","getImageSource","slots","ON_IS_SELECTED","disabled","slotName","useFlow","actionableParent","actionableProp","makeGetImport","imports","getImport","externalImport","Error","importView","importFile","logic","importPath","animated","blockId","configValues","spring","toValue","fromValue","current","uses","maybeDataContext","maybeDataFormat","dataFormat","maybeDataValidate","dataValidate","trackOpen","track","trackClose","useIsBefore","useIsMedia","dataDefinition","context","formatIn","formatOut","validate","required","NATIVE","sortAlphabetically","importsFirst","aIsImport","bIsImport","usesNative","usesSvg","useNative","useSvg","dependencies","SVG","lazy","usedFont","getFontImport","img","component","svg","m","reactNativeLibraryImport","createFormatters","localSupported","getFormat","options","getOptions","string","local","clock","hour12","getStyles","getDependencies","getFlatList","getFormatters","getBody","getDefaultProps","walk","ast","visit","fn","ViewsModalOverlay","finalName","restrictedNames","warn","AutoSizer","Column","Table","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","reactNativeMorph","reactDom","reactNative","reactPdf","maybeMorph","result","morphers","version","chalk","green","dim","prettier","parser","singleQuote","trailingComma","red","codeFrame","message","stack","morphAllViews","maybePrintWarnings","warnings","warning","yellow","loc","start","line","blue","STYLE","ROWSTYLE","isRowStyle","Matcher","threshold","caseSensitive","prototype","apply","arguments","ignoreCase","matchCase","setThreshold","num","distance","word1","word2","Levenshtein","q","trim","results","word","concat","sortBy","closest","LOCAL_SCOPES","locales","dymPropMatcher","DidYouMeanMatcher","makeDidYouMeanBlock","dymBlockMatcher","didYouMeanProp","makeDidYouMeanFontFamily","dymFontFamilyMatcher","googleFontFamilies","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","formatKey","_2","slotIsNot","_3","getSlot","getUnsupportedShorthandExpanded","theValue","x","y","parseFloat","isLocalScope","SYSTEM_SCOPES","isSystemScope","isActionable","getPropType","isNumber","sortScopes","scolumn","ecolumn","column","end","SLOT_PROPS","shouldBeSlot","rowStyle","validSlot","fragment","convertSlotToProps","enableLocalScopes","enableSystemScopes","skipComments","skipInvalidProps","warnMissingDefaultValue","rlines","lines","trimRight","topBlockShouldBe","endsWith","viewsInView","didYouMeanBlock","didYouMeanFontFamily","blockIds","getBlockId","maybeId","lookForFonts","fontFamilyProp","fontWeightProp","toString","fontStyleProp","meant","lookForMultiples","freq","multiples","endLine","max","parseBlock","shouldPushToStack","getLoc","last","pop","blocker","parseProps","endOfBlockIndex","inScope","j","getTags","currentAnimation","baseValue","baseProp","needsDefaultValue","vp","userComment","comment","invalidProps","flowProp","getFileDepth","sep","sortByFileDepth","depthA","depthB","depthDelta","sortSetsInMap","parseViews","EXTENSIONS","getViewIdFromFile","extension","processViewCustomFiles","processViewFiles","makeMorpher","processFiles","morphedFonts","morphedViews","time","filesToWrite","timeEnd","writeFile","getPointsOfUse","viewsId","watchFiles","morpher","watcher","chokidar","watch","ignored","ignoreInitial","skipTimeout","processEventsPromise","queue","onEvent","op","maybeProcess","clearTimeout","setTimeout","processEvents","queueClone","processQueue","on","filesToProcess","processUnlinked","processAddedOrChanged","magenta","delete","viewFile","processPointsOfUse","toUpperCase","logicFile","existsSync","parentFile","msg","once","close","wait","help","shouldWatch","minimist","argv","alias","booleans","default","exit","pkg","input","stat","isDirectory","isAbsolute","cleanup","updateNotifier","notify","underline","bgRed","bold"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKe,eAAeA,KAAf,CAAqBC,GAArB,EAA0BC,OAA1B,EAAmC;AAChD,MAAIC,OAAO,GAAG,MAAMC,IAAI,CACtB,CACE,cADF,EAEG,YAFH,EAGE,YAHF,EAIE,eAJF,EAKE,gBALF,EAME,aANF,CADsB,EAStB;AACEC,IAAAA,UAAU,EAAE,CAAC,OAAD,CADd;AAEEC,IAAAA,GAAG,EAAEL,GAFP;AAGEM,IAAAA,MAAM,EAAE,CAAC,gBAAD;AAHV,GATsB,CAAxB;AAgBA,QAAMC,OAAO,CAACC,GAAR,CACJN,OAAO,CAACO,GAAR,CAAYC,CAAC,IAAI;AACfT,IAAAA,OAAO,IAAIU,OAAO,CAACC,GAAR,CAAa,KAAIF,CAAE,EAAnB,CAAX;AACA,WAAOG,WAAE,CAACC,MAAH,CAAUC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAeU,CAAf,CAAV,CAAP;AACD,GAHD,CADI,CAAN;AAOA,MAAIO,OAAO,GAAG,MAAMC,WAAW,CAAClB,GAAD,CAA/B;;AACA,MAAIC,OAAJ,EAAa;AACXgB,IAAAA,OAAO,CAACE,OAAR,CAAgBC,CAAC,IAAIT,OAAO,CAACC,GAAR,CAAa,KAAIQ,CAAE,EAAnB,CAArB;AACD;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCc,SAASC,WAAT,CAAqBZ,GAArB,EAA0Ba,GAA1B,EAA+BC,KAA/B,EAAsC;AACnD,MAAI,CAACd,GAAG,CAACe,GAAJ,CAAQF,GAAR,CAAL,EAAmB;AACjBb,IAAAA,GAAG,CAACgB,GAAJ,CAAQH,GAAR,EAAa,IAAII,GAAJ,EAAb;AACD;;AACDjB,EAAAA,GAAG,CAACkB,GAAJ,CAAQL,GAAR,EAAaM,GAAb,CAAiBL,KAAjB;AACD;;ACHD,IAAIM,UAAU,GAAGC,QAAQ,IACvBA,QAAQ,CACLC,MADH,CACUC,CAAC,IAAI,CAACA,CAAC,CAACC,QAAF,CAAW,QAAX,CADhB,EAEGxB,GAFH,CAEOuB,CAAC,IAAKA,CAAC,KAAK,SAAN,GAAkB,GAAlB,GAAwBA,CAFrC,CADF;;AAKA,IAAIxB,GAAG,GAAG0B,IAAI,CAACzB,GAAL,CAAS0B,IAAI,KAAK;AAC1BC,EAAAA,QAAQ,EAAED,IAAI,CAACC,QADW;AAE1Bb,EAAAA,KAAK,EAAEY,IAAI,CAACE,MAFc;AAG1BC,EAAAA,OAAO,EAAET,UAAU,CAACM,IAAI,CAACL,QAAN;AAHO,CAAL,CAAb,CAAV;AAMA,IAAIS,MAAM,GAAG,EAAb;AACA/B,GAAG,CAACW,OAAJ,CAAYT,CAAC,IAAK6B,MAAM,CAAC7B,CAAC,CAACa,KAAH,CAAN,GAAkBb,CAApC;AAEA,AAAO,IAAI8B,UAAU,GAAGhC,GAAG,CAACC,GAAJ,CAAQC,CAAC,IAAIA,CAAC,CAACa,KAAf,CAAjB;AAEP,AAAO,IAAIkB,YAAY,GAAGJ,MAAM,IAAI,CAAC,CAACE,MAAM,CAACF,MAAD,CAArC;AAEP,AAAO,IAAIK,oBAAoB,GAAGhC,CAAC,IAAI;AACrC,MAAIyB,IAAI,GAAGI,MAAM,CAAC7B,CAAD,CAAjB;AAEA,SAAOyB,IAAI,IAAIA,IAAI,CAACC,QAAb,GAAyB,GAAE1B,CAAE,KAAIyB,IAAI,CAACC,QAAS,EAA/C,GAAmD1B,CAA1D;AACD,CAJM;;AClBP,2BAAe,CAACyB,IAAD,EAAOQ,OAAP,KAAmB;AAChC,MAAIC,IAAJ;;AAEA,MAAIH,YAAY,CAACN,IAAI,CAACE,MAAN,CAAhB,EAA+B;AAC7BO,IAAAA,IAAI,GAAI,sEAAqET,IAAI,CAACE,MAAL,CAAYQ,OAAZ,CAC3E,KAD2E,EAE3E,GAF2E,CAG3E,IAAGV,IAAI,CAACW,MAAO,GAAEX,IAAI,CAACY,KAAL,KAAe,QAAf,GAA0B,GAA1B,GAAgC,EAAG,aAHtD;AAID,GALD,MAKO;AACLH,IAAAA,IAAI,GAAI,GAAED,OAAO,CACdlC,GADO,CACHT,GAAG,IAAK,UAASA,GAAG,CAACgD,IAAK,UAAShD,GAAG,CAACiD,IAAK,GADzC,EAEPjC,IAFO,CAEF,IAFE,CAEI;;;kBAGAmB,IAAI,CAACE,MAAO;gBACdF,IAAI,CAACY,KAAM;iBACVZ,IAAI,CAACW,MAAO;SACpBH,OAAO,CACXlC,GADI,CACAT,GAAG,IAAK,UAASA,GAAG,CAACgD,IAAK,cAAahD,GAAG,CAACgD,IAAK,IADhD,EAEJhC,IAFI,CAEC,IAFD,CAEO;KAVZ;AAYD;;AAED,SAAQ,2CAA0C4B,IAAK,EAAvD;AACD,CAxBD;;ACFA,8BAAe,CAACT,IAAD,EAAOQ,OAAP,KAAmB;AAChC;AACA,SAAQ,mBAAkBR,IAAI,CAACe,EAAG,GAAlC,CAFgC;AAKhC;AACA;AACA;AACA;AACA;AACA;AACD,CAXD;;ACEe,SAASC,UAAT,CAAoBC,IAApB,EAA0BC,EAA1B,EAA8B;AAC3C,MAAIC,CAAC,GAAGvC,IAAI,CAACwC,QAAL,CAAcH,IAAd,EAAoBC,EAApB,EAAwBR,OAAxB,CAAgC,KAAhC,EAAuC,GAAvC,CAAR;AACA,SAAOS,CAAC,CAACE,MAAF,CAASF,CAAC,CAACG,UAAF,CAAa,OAAb,IAAwB,CAAxB,GAA4B,CAArC,CAAP;AACD;;ACHc,eAAeC,SAAf,CAAyBC,GAAzB,EAA8B;AAC3C,MAAI;AACF,UAAM9C,WAAE,CAAC+C,KAAH,CAASD,GAAT,EAAc;AAAEE,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,CAAoClE,GAApC,EAAyC;AAC9C,QAAM0D,SAAS,CAAC3C,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,cAAf,EAA+B,OAA/B,CAAD,CAAf;AACD;AAED,AAAO,IAAImE,SAAS,GAAGlB,IAAI,IAAIlC,IAAI,CAACqD,QAAL,CAAcnB,IAAd,EAAoBlC,IAAI,CAACsD,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,IAAI9C,GAAJ,CACL+C,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;AAChC1D,IAAAA,WAAW,CAACyD,WAAD,EAAcX,SAAS,CAAClB,IAAD,CAAvB,EAA+BA,IAA/B,CAAX;AACD;;AACD,OAAK,IAAI,CAACC,EAAD,EAAKsB,KAAL,CAAT,IAAwBM,WAAxB,EAAqC;AACnCA,IAAAA,WAAW,CAACrD,GAAZ,CAAgByB,EAAhB,EAAoBqB,SAAS,CAACC,KAAD,CAA7B;AACD;AACF;AAED,AAAO,SAASQ,aAAT,CAAuB;AAC5BC,EAAAA,EAD4B;AAE5BH,EAAAA,WAF4B;AAG5BI,EAAAA,SAH4B;AAI5BlF,EAAAA,GAJ4B;AAK5BmF,EAAAA;AAL4B,CAAvB,EAMJ;AACD,MAAIC,cAAc,GAAGrE,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,cAAf,EAA+B,OAA/B,CAArB;AACA,MAAIqF,UAAU,GAAG,IAAI3D,GAAJ,EAAjB;;AAEA,MAAI4D,aAAa,GAAGrC,IAAI,KAAK;AAC3BD,IAAAA,IAAI,EAAEuC,UAAU,CAACxE,IAAI,CAACsD,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,CAACxD,GAAb,CAAiBsB,IAAjB,CAAX;AAEA,QAAIuC,IAAI,CAACC,MAAT,EAAiB;AAEjBD,IAAAA,IAAI,CAACE,MAAL,CAAYlB,KAAZ,CAAkBrD,OAAlB,CAA0BgB,IAAI,IAAI;AAChCkD,MAAAA,UAAU,CAACzD,GAAX,CAAeO,IAAI,CAACe,EAApB;AACD,KAFD;AAGD;;AAED,SAAO,CAAC,GAAGmC,UAAJ,EAAgB5E,GAAhB,CAAoB0B,IAAI,IAAI;AACjC,QAAI,CAACE,MAAD,EAASS,MAAT,EAAiBC,KAAK,GAAG,QAAzB,IAAqCZ,IAAI,CAACwD,KAAL,CAAW,GAAX,CAAzC;AAEA,QAAIC,iBAAiB,GAAG,EAAxB;;AACA,QAAId,WAAW,CAACtD,GAAZ,CAAgBW,IAAhB,CAAJ,EAA2B;AACzByD,MAAAA,iBAAiB,GAAG,CAAC,GAAGd,WAAW,CAACnD,GAAZ,CAAgBQ,IAAhB,CAAJ,EAA2B1B,GAA3B,CAA+B6E,aAA/B,CAApB;AACD;;AAED,WAAO;AACLrC,MAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,cAAf,EAA+B,OAA/B,EAAyC,GAAEmC,IAAK,KAAhD,CADD;AAEL0D,MAAAA,OAAO,EAAE9B,SAAS,CAACkB,EAAD,CAAT,CACP;AACE/B,QAAAA,EAAE,EAAEf,IADN;AAEEE,QAAAA,MAFF;AAGEU,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,GAAG9F,GAAG,IAAI,CAACmC,IAAD,EAAOqD,IAAP,KACnC,WAAUrC,UAAU,CACnBqC,IAAI,CAACvC,IADc,EAEnBlC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,cAAf,EAA+B,OAA/B,EAAyC,GAAEmC,IAAK,KAAhD,CAFmB,CAGnB,GAJG;;ACpGA,IAAI4D,QAAQ,GAAG;AACpBb,EAAAA,SAAS,EAAE;AACTc,IAAAA,KAAK,EAAE,CAAC,gBAAD;AADE,GADS;AAIpBC,EAAAA,cAAc,EAAE;AACdD,IAAAA,KAAK,EAAE,CAAC,aAAD;AADO,GAJI;AAOpBE,EAAAA,eAAe,EAAE;AACfF,IAAAA,KAAK,EAAE,CAAC,aAAD;AADQ,GAPG;AAUpBjB,EAAAA,eAAe,EAAE;AACfiB,IAAAA,KAAK,EAAE,CACL,6BADK,EAEL,6BAFK,EAGL,6BAHK,EAIL,6BAJK,EAKL,8BALK,EAML,+BANK;AADQ;AAVG,CAAf;;AAuBP,AAAO,IAAIG,UAAU,GAAG,MAAMlD,IAAN,IAAcmD,EAAE,CAACC,OAAH,CAAWpD,IAAX,EAAiB8C,QAAQ,CAACb,SAAT,CAAmBc,KAApC,CAA/B;AACP,AAAO,IAAIM,eAAe,GAAG,MAAMrD,IAAN;AAE3BmD,EAAE,CAACC,OAAH,CAAWpD,IAAX,EAAiB8C,QAAQ,CAACE,cAAT,CAAwBD,KAAzC,CAFK;AAGP,AAAO,IAAIO,gBAAgB,GAAG,MAAMtD,IAAN;AAE5BmD,EAAE,CAACC,OAAH,CAAWpD,IAAX,EAAiB8C,QAAQ,CAACG,eAAT,CAAyBF,KAA1C,CAFK;AAGP,AAAO,IAAIQ,gBAAgB,GAAG,MAAMvD,IAAN;AAE5BmD,EAAE,CAACC,OAAH,CAAWpD,IAAX,EAAiB8C,QAAQ,CAAChB,eAAT,CAAyBiB,KAA1C,CAFK;AAIP,AAAO,IAAIS,KAAK,GAAGC,MAAM,CAACC,MAAP,CAAcZ,QAAd,EAChBtF,GADgB,CACZmG,IAAI,IAAIA,IAAI,CAACZ,KADD,EAEhBa,IAFgB,EAAZ;AAIP,AAAO,eAAeC,oBAAf,CAAoCC,KAApC,EAA2C;AAChD;AACA,SAAOL,MAAM,CAACM,WAAP,EACL,MAAMzG,OAAO,CAACC,GAAR,CACJkG,MAAM,CAACO,OAAP,CAAelB,QAAf,EAAyBtF,GAAzB,CAA6B,OAAO,CAACa,GAAD,EAAM;AAAES,IAAAA,MAAF;AAAUiE,IAAAA,KAAV;AAAiB1F,IAAAA;AAAjB,GAAN,CAAP,KAA4C;AACvE,QAAI4G,OAAO,GAAGd,EAAE,CAACW,KAAD,EAAQf,KAAR,EAAe;AAAE1F,MAAAA;AAAF,KAAf,CAAhB;;AACA,QAAI,OAAOyB,MAAP,KAAkB,UAAtB,EAAkC;AAChCmF,MAAAA,OAAO,GAAG,MAAMnF,MAAM,CAACmF,OAAD,CAAtB;AACD;;AACD,WAAO,CAAC5F,GAAD,EAAM,IAAII,GAAJ,CAAQwF,OAAR,CAAN,CAAP;AACD,GAND,CADI,CADD,EAAP;AAWD;;AClDc,eAAeC,QAAf,CAAwBnH,GAAxB,EAA6B;AAC1C,MAAI+G,KAAK,GAAG,MAAM5G,IAAI,CAACsG,KAAD,EAAQ;AAC5BW,IAAAA,QAAQ,EAAE,IADkB;AAE5B/G,IAAAA,GAAG,EAAEL,GAFuB;AAG5BM,IAAAA,MAAM,EAAE,CAAC,oBAAD,EAAuB,YAAvB;AAHoB,GAAR,CAAtB;AAMA,SAAO,MAAMwG,oBAAoB,CAACC,KAAD,CAAjC;AACD;;ACPc,eAAeM,UAAf,CAA0B;AAAEpE,EAAAA,IAAF;AAAQ4C,EAAAA;AAAR,CAA1B,EAA6C;AAC1D,QAAMnC,SAAS,CAAC3C,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAD,CAAf;AAEA,SAAO;AACLA,IAAAA,IADK;AAEL4C,IAAAA,OAFK;AAIL;AACA;AACA;AACA;;AAPK,GAAP;AASD;;ACbD,IAAI0B,IAAI,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAZ;AA6NA,AAAe,SAASC,UAAT,CAAoB;AAAExH,EAAAA;AAAF,CAApB,EAA6B;AAC1C,SAAOqH,UAAU,CAAC;AAChBpE,IAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,MAAf,EAAuB,cAAvB,CADU;AAEhB6F,IAAAA,OAAO,EAAE0B;AAFO,GAAD,CAAjB;AAID;;ACnOc,SAASE,qBAAT,CAA+B;AAC5CvE,EAAAA,EAD4C;AAE5CsC,EAAAA,IAF4C;AAG5CkC,EAAAA,SAH4C;AAI5CvC,EAAAA;AAJ4C,CAA/B,EAKZ;AACD,MAAIwC,gBAAgB,GAAGD,SAAS,CAAC/F,GAAV,CAAcuB,EAAd,CAAvB;;AACA,MAAI,CAACyE,gBAAL,EAAuB;AACrB;AACAhH,IAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ,EAAyCsC,EAAzC,EAA6C,MAA7C,EAAqDsC,IAAI,CAACvC,IAA1D;AACA0E,IAAAA,gBAAgB,GAAG,IAAIjG,GAAJ,EAAnB;AACD;;AACD,MAAIkG,cAAc,GAAG,CAAC,GAAGD,gBAAJ,EAAsB,CAAtB,CAArB;;AACA,MAAIA,gBAAgB,CAACE,IAAjB,GAAwB,CAA5B,EAA+B;AAC7B,QAAIC,UAAU,GAAG/G,IAAI,CAACuG,OAAL,CAAa9B,IAAI,CAACvC,IAAlB,CAAjB;AAEA,QAAI8E,mBAAmB,GAAGhH,IAAI,CAC3BC,IADuB,CAClB8G,UADkB,EACN5E,EADM,EACF,aADE,EAEvBL,OAFuB,CAEf,KAFe,EAER,GAFQ,CAA1B;AAGA,QAAImF,yBAAyB,GAAGjH,IAAI,CACjCC,IAD6B,CACxB8G,UADwB,EACZ5E,EADY,EACR,UADQ,EAE7BL,OAF6B,CAErB,KAFqB,EAEd,GAFc,CAAhC;;AAGA,QAAI8E,gBAAgB,CAACnG,GAAjB,CAAqBuG,mBAArB,CAAJ,EAA+C;AAC7CH,MAAAA,cAAc,GAAGG,mBAAjB;AACD,KAFD,MAEO,IAAIJ,gBAAgB,CAACnG,GAAjB,CAAqBwG,yBAArB,CAAJ,EAAqD;AAC1DJ,MAAAA,cAAc,GAAGI,yBAAjB;AACD;AACF;;AAED,SAAO7C,YAAY,CAACxD,GAAb,CAAiBiG,cAAjB,CAAP;AACD;;AC5BD,SAASK,oBAAT,CAA8BC,IAA9B,EAAoC5G,GAApC,EAAyC6G,OAAzC,EAAkD;AAChD,MAAI,CAACA,OAAO,CAAC3G,GAAR,CAAYF,GAAZ,CAAL,EAAuB;AAEvB,MAAI8G,KAAK,GAAGF,IAAI,CAACvG,GAAL,CAASL,GAAT,CAAZ;;AACA,MAAI8G,KAAK,IAAIA,KAAK,CAACD,OAAN,CAAcN,IAAd,GAAqB,CAAlC,EAAqC;AACnC,QAAIQ,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,CAACvG,GAAR,CAAYsB,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;AAASd,EAAAA,SAAT;AAAoBvC,EAAAA;AAApB,CAAlB,EAAsD;AACpD,MAAIsD,OAAO,GAAG,IAAIC,GAAJ,EAAd;AACA,MAAIC,UAAU,GAAG,EAAjB;;AAEA,OAAK,IAAInD,IAAT,IAAiBL,YAAY,CAACwB,MAAb,EAAjB,EAAwC;AACtC,QAAI,CAACnB,IAAD,IAASA,IAAI,CAACC,MAAd,IAAwB,CAACD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBoD,OAA9C,EAAuD;AAEvD,QAAIC,MAAM,GAAG,EAAb;;AACA,SAAK,IAAI3F,EAAT,IAAesC,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBsD,KAAhC,EAAuC;AACrC,UAAIC,UAAU,GAAGtB,qBAAqB,CAAC;AACrCvE,QAAAA,EADqC;AAErCsC,QAAAA,IAFqC;AAGrCkC,QAAAA,SAHqC;AAIrCvC,QAAAA;AAJqC,OAAD,CAAtC;;AAOA,UAAI4D,UAAU,IAAI,CAACA,UAAU,CAACtD,MAA1B,IAAoCsD,UAAU,CAACrD,MAAX,CAAkBF,IAAlB,CAAuBoD,OAA/D,EAAwE;AACtEC,QAAAA,MAAM,CAACG,IAAP,CAAYD,UAAU,CAACrD,MAAX,CAAkBF,IAAlB,CAAuByD,QAAnC,EADsE;AAEvE;AACF;;AAED,QAAIX,UAAU,GAAG9C,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB0C,IAAjB,KAA0B,UAA3C;AACA,QAAIgB,MAAM,GAAG1D,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB2D,cAA9B;AAEAR,IAAAA,UAAU,CAACK,IAAX,CACG,KAAIxD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiByD,QAAS,oBAAmBX,UAAW,cAC3DY,MAAM,KAAK,GAAX,GAAiB,EAAjB,GAAsBA,MACvB;qBACcL,MAAM,CAACO,MAAP,GAAgB,CAAhB,GAAoBC,IAAI,CAACC,SAAL,CAAeT,MAAf,CAApB,GAA6C,EAAG,MAJjE;AAMAJ,IAAAA,OAAO,CAAChH,GAAR,CAAY+D,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiByD,QAA7B,EAAuC;AACrCC,MAAAA,MADqC;AAErCZ,MAAAA,UAFqC;AAGrCH,MAAAA,OAAO,EAAE,IAAIzG,GAAJ,CAAQmH,MAAR;AAH4B,KAAvC;AAKD;;AAED,MAAIU,QAAQ,GAAG,MAAf;AACA,MAAIC,YAAY,GAAG,IAAI9H,GAAJ,CAAQ,CAAC6H,QAAD,CAAR,CAAnB;AACAtB,EAAAA,oBAAoB,CAACQ,OAAD,EAAUc,QAAV,EAAoBC,YAApB,CAApB;AAEA,SAAQ;;;;;;EAMRhB,KAAK,GAAG,0CAAH,GAAgD,EAAG;;;EAGxDG,UAAU,CAAC3H,IAAX,CAAgB,KAAhB,CAAuB;;;mBAGNuI,QAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsGtBf,KAAK,GACA;;;;;MADA,GAOD,EACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+CGA,KAAK,GACD,0DADC,GAED,kBACL;;;;;;0BAMmBa,IAAI,CAACC,SAAL,CAAe,CAAC,GAAGE,YAAJ,CAAf,EAAkC,IAAlC,EAAwC,IAAxC,CAA8C;;;;;;EAlLtE;AAyLD;;AAED,AAAe,SAASC,UAAT,CAAoB;AAAEzJ,EAAAA,GAAF;AAAOwI,EAAAA,KAAP;AAAcd,EAAAA,SAAd;AAAyBvC,EAAAA;AAAzB,CAApB,EAA6D;AAC1E,SAAOkC,UAAU,CAAC;AAChBpE,IAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,OAAf,EAAwB,cAAxB,CADU;AAEhB6F,IAAAA,OAAO,EAAE0C,QAAQ,CAAC;AAAEC,MAAAA,KAAF;AAASd,MAAAA,SAAT;AAAoBvC,MAAAA;AAApB,KAAD;AAFD,GAAD,CAAjB;AAID;;AC1PD,IAAIuE,aAAa,GAAI;;;;;;;;;;;;;;;;;;;EAArB;AAqBA,AAAe,SAASC,cAAT,CAAwB;AAAE3J,EAAAA;AAAF,CAAxB,EAAiC;AAC9C,SAAOqH,UAAU,CAAC;AAChBpE,IAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,OAAf,EAAwB,gBAAxB,CADU;AAEhB6F,IAAAA,OAAO,EAAE6D;AAFO,GAAD,CAAjB;AAID;;AC1BD,IAAIE,cAAc,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAtB;AAyCA,AAAe,SAASC,eAAT,CAAyB;AAAE7J,EAAAA;AAAF,CAAzB,EAAkC;AAC/C,SAAOqH,UAAU,CAAC;AAChBpE,IAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,OAAf,EAAwB,iBAAxB,CADU;AAEhB6F,IAAAA,OAAO,EAAE+D;AAFO,GAAD,CAAjB;AAID;;AC7CD,IAAIE,cAAc,GAAGC,KAAK,IAAK;;;;;;;;IAQ3BA,KAAK,CACJtJ,GADD,CACK,CAAC;AAAEuJ,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,CAACnJ,IAAJ,CAAS,EAAT,CAAP;AACD,CARD,EASCA,IATD,CASM,GATN,CASW;;0BAjBf;;AAqBA,eAAeoJ,cAAf,CAA8BpK,GAA9B,EAAmC;AACjC,MAAI+J,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,EACN,MAAM5J,WAAE,CAAC6J,QAAH,CACJ3J,IAAI,CAAC4J,OAAL,CAAa5J,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,IAAf,EAAqB,gBAArB,CAAb,CADI,EAEJ,MAFI,CADA,GAKN+J,KALF;AAMA,WAAOA,KAAK,CAACa,IAAb;AACD,GARD,CAQE,OAAO9G,KAAP,EAAc;;AAEhB,SAAO4C,MAAM,CAACO,OAAP,CAAe8C,KAAf,EACJtF,IADI,CACC,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAAC,CAAD,CAAD,CAAK4F,KAAL,GAAa3F,CAAC,CAAC,CAAD,CAAD,CAAK2F,KAD7B,EAEJ7J,GAFI,CAEA,CAAC,CAACuJ,IAAD,EAAOpD,IAAP,CAAD,EAAeyB,KAAf,EAAsBnG,IAAtB,MAAgC;AACnC8H,IAAAA,IADmC;AAEnCC,IAAAA,QAAQ,EAAE5B,KAAK,KAAK,CAAV,GAAc,CAAd,GAAkBnG,IAAI,CAACmG,KAAK,GAAG,CAAT,CAAJ,CAAgB,CAAhB,EAAmBiC,KAAnB,GAA2B,CAFpB;AAGnCJ,IAAAA,QAAQ,EACN7B,KAAK,KAAK,CAAV,GACIzB,IAAI,CAAC0D,KADT,GAEIjC,KAAK,KAAKnG,IAAI,CAACkH,MAAL,GAAc,CAAxB,GACA,IADA,GAEAxC,IAAI,CAAC0D;AARwB,GAAhC,CAFA,CAAP;AAYD;;AAED,AAAe,eAAeO,aAAf,CAA6B;AAAE7K,EAAAA;AAAF,CAA7B,EAAsC;AACnD,SAAOqH,UAAU,CAAC;AAChBpE,IAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,OAAf,EAAwB,eAAxB,CADU;AAEhB6F,IAAAA,OAAO,EAAEiE,cAAc,EAAC,MAAMM,cAAc,CAACpK,GAAD,CAArB;AAFP,GAAD,CAAjB;AAID;;AC9DD,IAAI8K,UAAU,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;EAAlB;AA2BA,AAAe,eAAeC,WAAf,CAA2B;AAAE/K,EAAAA;AAAF,CAA3B,EAAoC;AACjD,MAAIiD,IAAI,GAAGlC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe,OAAf,EAAwB,eAAxB,CAAX;AAEA,MAAI,CAAC,MAAMgL,OAAO,CAACC,MAAR,CAAehI,IAAf,CAAP,KAAgCiI,OAAO,CAACC,GAAR,CAAYC,qBAAhD,EACE,OAAO,IAAP;AAEF,SAAO/D,UAAU,CAAC;AAAEpE,IAAAA,IAAF;AAAQ4C,IAAAA,OAAO,EAAEiF;AAAjB,GAAD,CAAjB;AACD;;ACnCD,IAAIO,kBAAkB,GAAGtK,IAAI,CAACC,IAAL,CAAU,OAAV,EAAmB,gBAAnB,CAAzB;AACA,IAAIsK,mBAAmB,GAAGvK,IAAI,CAACC,IAAL,CAAU,OAAV,EAAmB,iBAAnB,CAA1B;AACA,IAAIuK,iBAAiB,GAAGxK,IAAI,CAACC,IAAL,CAAU,OAAV,EAAmB,eAAnB,CAAxB;AACA,IAAIwK,aAAa,GAAGzK,IAAI,CAACC,IAAL,CAAU,MAAV,EAAkB,cAAlB,CAApB;AACA,IAAIyK,aAAa,GAAG1K,IAAI,CAACC,IAAL,CAAU,OAAV,EAAmB,cAAnB,CAApB;AACA,IAAI0K,oBAAoB,GAAG,mBAA3B;AACA,IAAIC,kBAAkB,GAAG,iBAAzB;AAEA,AAAe,SAASC,mBAAT,CAA6B5L,GAA7B,EAAkC;AAC/C,SAAO,SAAS6L,eAAT,CAAyB3I,EAAzB,EAA6BD,IAA7B,EAAmC;AACxC,YAAQC,EAAR;AACE,WAAK,QAAL;AACE;AACA;;AAEF,WAAK,iBAAL;AACE,eAAQ,2BAA0BC,UAAU,CAC1CF,IAD0C,EAE1ClC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAeuL,iBAAf,CAF0C,CAG1C,GAHF;;AAKF,WAAK,kBAAL;AACE,eAAQ,4BAA2BpI,UAAU,CAC3CF,IAD2C,EAE3ClC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAeqL,kBAAf,CAF2C,CAG3C,GAHF;;AAKF,WAAK,mBAAL;AACE,eAAQ,6BAA4BlI,UAAU,CAC5CF,IAD4C,EAE5ClC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAesL,mBAAf,CAF4C,CAG5C,GAHF;;AAKF,WAAK,cAAL;AACE,eAAQ,8BAA6BnI,UAAU,CAC7CF,IAD6C,EAE7ClC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAewL,aAAf,CAF6C,CAG7C,GAHF;;AAKF,WAAK,cAAL;AACE,eAAQ,8BAA6BrI,UAAU,CAC7CF,IAD6C,EAE7ClC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAeyL,aAAf,CAF6C,CAG7C,GAHF;;AAKF,WAAK,gBAAL;AACE,eAAQ,+BAA8BtI,UAAU,CAC9CF,IAD8C,EAE9ClC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe0L,oBAAf,CAF8C,CAG9C,GAHF;;AAKF,WAAK,cAAL;AACE,eAAQ,iCAAgCvI,UAAU,CAChDF,IADgD,EAEhDlC,IAAI,CAACC,IAAL,CAAUhB,GAAV,EAAe2L,kBAAf,CAFgD,CAGhD,GAHF;;AAKF;AACE,eAAO,KAAP;AAhDJ;AAkDD,GAnDD;AAoDD;;AChEM,IAAIG,KAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAT,EAAqB;AAErB,MAAI1K,KAAJ;;AACA,MAAI2H,MAAJ,EAAY;AACV3H,IAAAA,KAAK,GAAI,IAAGyK,KAAK,CAAChC,IAAK,IAAG+B,IAAI,CAACG,MAAO,GAAtC;AACD,GAFD,MAEO;AACL3K,IAAAA,KAAK,GAAI,gBAAeyK,KAAK,CAACG,SAAU,UAASJ,IAAI,CAACG,MAAO,OAA7D;AACD;;AAEDF,EAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAGgD,KAAK,CAACG,SAAU,IAAG5K,KAAM,EAA/C;AACD,CAXM;;ACAA,IAAIuK,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAL,IAAmB,CAACf,OAAO,CAACC,GAAR,CAAYC,qBAApC,EAA2D;;AAE3D,MAAIY,KAAK,CAAC/C,QAAV,EAAoB;AAClB+C,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAGgD,KAAK,CAACK,WAAY,KAAIL,KAAK,CAAC/C,QAAS,GAA3D;AACD,GAFD,MAEO;AACL+C,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAGgD,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,GAAGpB,IAAI,IAAI;AACpB,MAAIqB,KAAK,GAAGC,QAAQ,CAACtB,IAAI,CAAC/B,IAAN,CAApB;AAEA,MAAI,OAAO+B,IAAI,CAACxK,KAAZ,KAAsB,QAA1B,EAAoC,OAAO6L,KAAK,CAAC,CAAD,CAAL,IAAY,EAAnB;AAEpC,MAAIpH,KAAK,GAAG+F,IAAI,CAACxK,KAAL,CAAWyE,KAAX,CAAiBsG,MAAM,CAACgB,IAAP,CAAYvB,IAAI,CAACxK,KAAjB,IAA0B+K,MAA1B,GAAmCC,QAApD,CAAZ;AACA,SAAQvG,KAAK,IAAIoH,KAAK,CAACG,IAAN,CAAWC,CAAC,IAAIA,CAAC,KAAKxH,KAAK,CAAC,CAAD,CAA3B,CAAV,IAA8CoH,KAAK,CAAC,CAAD,CAAnD,IAA0D,EAAjE;AACD,CAPD;AAUA,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;AA2BVvD,EAAAA,QAAQ,EAAEuD,MA3BA;AA4BVgC,EAAAA,SAAS,EAAEhC,MA5BD;AA6BVxD,EAAAA,QAAQ,EAAEwD,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,aAAa,EAAElD,MA/CL;AAgDVmD,EAAAA,aAAa,EAAEnD,MAhDL;AAiDVoD,EAAAA,UAAU,EAAEpD,MAjDF;AAkDVqD,EAAAA,YAAY,EAAErD,MAlDJ;AAmDVsD,EAAAA,IAAI,EAAEnD,KAnDI;AAoDVoD,EAAAA,YAAY,EAAEvD,MApDJ;AAqDVwD,EAAAA,GAAG,EAAExD,MArDK;AAsDVyD,EAAAA,UAAU,EAAEzD,MAtDF;AAuDV0D,EAAAA,UAAU,EAAE1D,MAvDF;AAwDVnD,EAAAA,KAAK,EAAEmD,MAxDG;AAyDV2D,EAAAA,WAAW,EAAE3D,MAzDH;AA0DV4D,EAAAA,MAAM,EAAExD;AA1DE,CAAZ;AA4DA,IAAIyD,UAAU,GAAG5K,MAAM,CAAC6K,IAAP,CAAYzD,KAAZ,CAAjB;;AAEA,IAAIT,QAAQ,GAAG/L,GAAG,IAAI;AACpB,MAAIkQ,KAAK,GAAGF,UAAU,CAAC/D,IAAX,CAAgBkE,IAAI,IAAInQ,GAAG,CAACmC,UAAJ,CAAegO,IAAf,CAAxB,CAAZ;AACA,SAAO3D,KAAK,CAAC0D,KAAD,CAAL,IAAgB3D,QAAvB;AACD,CAHD;;ACtGA,YAAe6D,CAAC,IAAK,IAAGA,CAAE,GAA1B;;ACGA,YAAe,CAACnQ,KAAD,EAAQwK,IAAR,KACb,OAAOxK,KAAP,KAAiB,QAAjB,IAA6B,CAACoQ,MAAM,CAACpQ,KAAD,EAAQwK,IAAR,CAApC,GACI1C,IAAI,CAACC,SAAL,CAAe/H,KAAf,CADJ,GAEIqQ,IAAI,CAACrQ,KAAD,CAHV;;ACQO,IAAIsQ,eAAe,GAAG,CAAC9F,IAAD,EAAO+F,QAAP,KAAoB;AAC/C,MACEA,QAAQ,KAAK,WAAb,IACAA,QAAQ,KAAK,YADb,IAEAA,QAAQ,KAAK,YAFb,IAGAA,QAAQ,KAAK,mBAHb,IAIA,CAAC/F,IAAI,CAAC7C,MALR,EAOE,OAAO,KAAP;AAEF,MAAI6I,kBAAkB,GAAGhG,IAAI,CAAC7C,MAAL,CAAY8I,MAAZ,CAAmBC,IAAnB,CACvBC,KAAK,IAAIA,KAAK,CAAC3Q,KAAN,KAAgBuQ,QADF,CAAzB;AAIA,SAAOC,kBAAkB,KAAKhG,IAAI,CAAC7C,MAAL,CAAYiJ,EAAZ,IAAkBpG,IAAI,CAAC7C,MAAL,CAAYc,IAAnC,CAAzB;AACD,CAfM;AAiBP,IAAIoI,aAAa,GAAG,UAApB;AACA,AAAO,IAAIC,eAAe,GAAGC,GAAG,IAAIF,aAAa,CAAC9E,IAAd,CAAmBgF,GAAnB,CAA7B;AACP,AAAO,IAAIC,aAAa,GAAGD,GAAG,IAAI;AAChC,MAAItM,KAAK,GAAGsM,GAAG,CAACtM,KAAJ,CAAUoM,aAAV,CAAZ;AACA,SAAOpM,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAR,GAAcsM,GAA1B;AACD,CAHM;AAKP,AAAO,IAAIE,iBAAiB,GAAGC,GAAG,IAChCC,KAAK,CAACC,OAAN,CAAcF,GAAd,IACK,IAAGA,GAAG,CAAChS,GAAJ,CAAQ+R,iBAAR,CAA2B,GADnC,GAEIZ,IAAI,CACFlL,MAAM,CAAC6K,IAAP,CAAYkB,GAAZ,EACGhS,GADH,CACOmS,CAAC,IAAI;AACR,MAAI5Q,CAAC,GACH,OAAOyQ,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,GAAEvJ,IAAI,CAACC,SAAL,CAAesJ,CAAf,CAAkB,KAAI5Q,CAAE,EAAlC;AACD,CAPH,EAQGhB,IARH,CAQQ,GARR,CADE,CAHH;AAeP,AAUO,IAAI8R,OAAO,GAAG,CAAC/G,IAAD,EAAOzK,GAAP,EAAY4Q,KAAK,GAAG,MAApB,KAA+B;AAClD,MAAIa,MAAM,GACR,OAAOzR,GAAP,KAAe,QAAf,GAA0B0R,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW1I,GAA1C,GAAgD0R,CAAC,IAAI1R,GAAG,CAACgM,IAAJ,CAAS0F,CAAC,CAAChJ,IAAX,CADvD;;AAGA,MAAIkI,KAAK,KAAK,MAAd,EAAsB;AACpB,QAAIe,SAAS,GAAGlH,IAAI,CAACiG,MAAL,CAAYzE,IAAZ,CAAiB3G,IAAI,IAAIA,IAAI,CAACrF,KAAL,KAAe2Q,KAAxC,CAAhB;AACA,QAAIgB,IAAI,GAAGD,SAAS,IAAIA,SAAS,CAACE,UAAV,CAAqB5F,IAArB,CAA0BwF,MAA1B,CAAxB;;AACA,QAAIG,IAAJ,EAAU;AACR,aAAOA,IAAP;AACD;AACF;;AAED,SAAOnH,IAAI,CAACoH,UAAL,IAAmBpH,IAAI,CAACoH,UAAL,CAAgB5F,IAAhB,CAAqBwF,MAArB,CAA1B;AACD,CAbM;AAeP,AAAO,IAAIK,qBAAqB,GAAG,CAACrH,IAAD,EAAOzK,GAAP,EAAY+R,YAAZ,KAA6B;AAC9D,SAAOC,OAAO,CAACvH,IAAD,EAAOzK,GAAP,CAAP,GAAqBwR,OAAO,CAAC/G,IAAD,EAAOzK,GAAP,CAAP,CAAmBC,KAAxC,GAAgD8R,YAAvD;AACD,CAFM;AAIP;AAEA,IAAIE,cAAc,GAAG,CAACC,QAAD,EAAWC,SAAX,KAAyB;AAC5C,MAAIzB,MAAM,GAAGyB,SAAS,CAACzB,MAAV,CACVjQ,MADU,CACHmQ,KAAK,IAAI,CAACA,KAAK,CAACwB,QAAP,IAAmB,CAACxB,KAAK,CAACyB,OADhC,EAEVlT,GAFU,CAENyR,KAAK,IAAI;AACZ,QAAIgB,IAAI,GAAGhB,KAAK,CAACiB,UAAN,CAAiB5F,IAAjB,CAAsB2F,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAcwJ,QAAQ,CAACxJ,IAArD,CAAX;AACA,WAAOkJ,IAAI,IAAI;AAAEA,MAAAA,IAAF;AAAQU,MAAAA,IAAI,EAAE1B,KAAK,CAAC3Q,KAApB;AAA2B2Q,MAAAA;AAA3B,KAAf;AACD,GALU,EAMVnQ,MANU,CAMH8R,OANG,EAOVC,OAPU,EAAb;AASA,MAAIC,OAAO,CAAC/B,MAAD,CAAX,EAAqB,OAAO,KAAP;AAErB,SAAOA,MAAP;AACD,CAbD;;AAeA,IAAIgC,2BAA2B,GAAGjI,IAAI,IAAI;AACxC,MAAIxK,KAAK,GAAG,IAAZ;;AAEA,MAAIwK,IAAI,CAACkI,IAAL,CAAUC,IAAd,EAAoB;AAClB3S,IAAAA,KAAK,GAAGwK,IAAI,CAACxK,KAAb;AACD,GAFD,MAEO,IAAI,OAAOwK,IAAI,CAACxK,KAAZ,KAAsB,QAA1B,EAAoC;AACzCA,IAAAA,KAAK,GAAG4S,IAAI,CAACpI,IAAI,CAACxK,KAAN,CAAZ;AACD,GAFM,MAEA,IAAI,OAAOwK,IAAI,CAACxK,KAAZ,KAAsB,SAAtB,IAAmCwK,IAAI,CAAC/B,IAAL,KAAc,aAArD,EAAoE;AACzEzI,IAAAA,KAAK,GAAGwK,IAAI,CAACxK,KAAL,GAAa,SAAb,GAAyB,IAAjC;AACD,GAFM,MAEA;AACL,QAAI6S,IAAI,GAAGjH,OAAO,CAACpB,IAAD,CAAlB;AACAxK,IAAAA,KAAK,GAAG6S,IAAI,GAAI,IAAGrI,IAAI,CAACxK,KAAM,GAAE6S,IAAK,GAAzB,GAA8BrI,IAAI,CAACxK,KAA/C;AACD;;AAED,SAAOA,KAAP;AACD,CAfD;;AAiBA,IAAI8S,YAAY,GAAG,6DAAnB;AACA,IAAIC,WAAW,GAAG,oEAAlB;AACA,IAAIC,4BAA4B,GAAG,wCAAnC;AACA,IAAIC,OAAO,GAAG,eAAd;AAEA,AAAO,IAAIC,kBAAkB,GAAG,CAACjB,QAAD,EAAWC,SAAX,EAAsBzH,KAAtB,KAAgC;AAC9D,MAAI0I,WAAW,GAAGnB,cAAc,CAACC,QAAD,EAAWC,SAAX,CAAhC;AAEA,MAAI,CAACiB,WAAL,EAAkB,OAAO,KAAP;AAElB,MAAIC,WAAW,GAAGX,2BAA2B,CAACR,QAAD,CAA7C;AACAkB,EAAAA,WAAW,CAACvT,OAAZ,CAAoB+Q,KAAK,IAAI;AAC3B,QAAI0B,IAAI,GAAG1B,KAAK,CAAC0B,IAAjB;;AACA,QAAI5H,KAAK,CAAC4I,IAAN,IAAcN,WAAW,CAAChH,IAAZ,CAAiBsG,IAAjB,CAAlB,EAA0C;AACxCA,MAAAA,IAAI,GAAGA,IAAI,CAAC/Q,OAAL,CAAa,OAAb,EAAsB,MAAtB,CAAP;AACD,KAFD,MAEO,IAAIgS,oBAAoB,CAACpB,SAAD,CAApB,IAAmCY,YAAY,CAAC/G,IAAb,CAAkBsG,IAAlB,CAAvC,EAAgE;AACrEA,MAAAA,IAAI,GAAGA,IAAI,CAAC/Q,OAAL,CAAa,QAAb,EAAuB,aAAvB,CAAP;AACD,KAFM,MAEA,IAAI2R,OAAO,CAAClH,IAAR,CAAasG,IAAb,CAAJ,EAAwB;AAC7B,UAAIkB,QAAQ,GAAGC,WAAW,CAAC7C,KAAK,CAACA,KAAP,EAAcuB,SAAd,EAAyBzH,KAAzB,CAA1B;AACA4H,MAAAA,IAAI,GAAGA,IAAI,CAAC/Q,OAAL,CAAa,YAAb,EAA4B,aAAYiS,QAAS,IAAjD,CAAP;AACD,KAHM,MAGA,IACL,CAACrB,SAAS,CAACuB,MAAV,IAAoB,CAAC,CAACC,mBAAmB,CAACxB,SAAD,CAA1C,KACAc,4BAA4B,CAACjH,IAA7B,CAAkCsG,IAAlC,CAFK,EAGL;AACAA,MAAAA,IAAI,GAAGA,IAAI,CAAC/Q,OAAL,CAAa,QAAb,EAAuB,EAAvB,CAAP;AACD;;AAED8R,IAAAA,WAAW,GAAI,GAAEf,IAAK,MAAKI,2BAA2B,CACpD9B,KAAK,CAACgB,IAD8C,CAEpD,MAAKyB,WAAY,EAFnB;AAGD,GAnBD;AAqBA,MAAIO,SAAS,GAAGR,WAAW,CAACA,WAAW,CAACtL,MAAZ,GAAqB,CAAtB,CAA3B;;AAEA,MACE,CAAC8L,SAAS,CAAChC,IAAV,CAAeiC,SAAhB,IACAD,SAAS,CAAChC,IAAV,CAAeiC,SAAf,CAAyBC,KAAzB,KAAmC,QAFrC,EAGE;AACAF,IAAAA,SAAS,CAAChC,IAAV,CAAeyB,WAAf,GAA6BA,WAA7B;AACD;;AAED,SAAOA,WAAP;AACD,CArCM;AAuCP,AAAO,IAAIU,uBAAuB,GAAG,CAACrD,MAAD,EAASsD,WAAT,EAAsBC,WAAtB,KAAsC;AACzE,MAAIZ,WAAW,GAAGY,WAAlB;AAEAvD,EAAAA,MAAM,CAAC7Q,OAAP,CAAe,CAAC+Q,KAAD,EAAQ7J,KAAR,KAAkB;AAC/BsM,IAAAA,WAAW,GAAI,GAAEzC,KAAK,CAAC0B,IAAK,MAAK0B,WAAW,CAACjN,KAAD,CAAQ,KAAtC,GAA6CsM,WAA3D;AACD,GAFD;AAIA,SAAOA,WAAP;AACD,CARM;AAUP,IAAIa,UAAU,GAAG,CACf,WADe,EAEf,WAFe,EAGf,eAHe,EAIf,YAJe,EAKf,YALe,EAMf,mBANe,CAAjB;AAQA,AAAO,IAAIC,YAAY,GAAG1J,IAAI,IAC5ByJ,UAAU,CAACjI,IAAX,CAAgBmI,GAAG,IAAIC,KAAK,CAAC5J,IAAD,EAAO2J,GAAP,CAA5B,KAA4C,MADvC;AAEP,AAAO,IAAI7C,OAAO,GAAGJ,GAAG,IAAI/L,MAAM,CAAC6K,IAAP,CAAYkB,GAAZ,EAAiBrJ,MAAjB,GAA0B,CAA/C;AACP,AAAO,IAAIwM,iBAAiB,GAAGnD,GAAG,IAChC/L,MAAM,CAAC6K,IAAP,CAAYkB,GAAZ,EAAiBR,IAAjB,CAAsBW,CAAC,IAAIC,OAAO,CAACJ,GAAG,CAACG,CAAD,CAAJ,CAAlC,CADK;AAGP,AAAO,IAAIU,OAAO,GAAG,CAACvH,IAAD,EAAOzK,GAAP,EAAY0E,KAAZ,KAAsB;AACzC,MAAIkN,IAAI,GAAGJ,OAAO,CAAC/G,IAAD,EAAOzK,GAAP,CAAlB;AACA,MAAI,CAAC4R,IAAL,EAAW,OAAO,KAAP;AACX,SAAO,OAAOlN,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACkN,IAAI,CAAC3R,KAAN,CAAnC,GAAkD,IAAzD;AACD,CAJM;AAMP,AAGO,IAAIoQ,MAAM,GAAG,CAACkE,UAAD,EAAaC,UAAb,KAA4B;AAC9C,MAAI/J,IAAI,GAAG+J,UAAU,IAAID,UAAzB;AAEA,SAAO,OAAO9J,IAAP,KAAgB,QAAhB,GACH,uDAAuDuB,IAAvD,CAA4DvB,IAA5D,CADG,GAEH4J,KAAK,CAAC5J,IAAD,EAAO,MAAP,CAFT;AAGD,CANM;AAOP,AAAO,IAAIgK,OAAO,GAAGhK,IAAI,IAAI4J,KAAK,CAAC5J,IAAD,EAAO,OAAP,CAA3B;AACP,AACO,IAAI4J,KAAK,GAAG,CAAC5J,IAAD,EAAO2J,GAAP,KAAe3J,IAAI,IAAIA,IAAI,CAACkI,IAAL,CAAUyB,GAAV,CAAnC;AAEP,AAAO,IAAIT,mBAAmB,GAAGlJ,IAAI,IAAI;AACvC,MAAI,CAACA,IAAI,CAAC7C,MAAV,EAAkB,OAAO,KAAP;AAClB,MAAI6C,IAAI,CAAC7C,MAAL,CAAY8L,MAAhB,EAAwB,OAAOjJ,IAAI,CAAC7C,MAAZ;AACxB,SAAO+L,mBAAmB,CAAClJ,IAAI,CAAC7C,MAAN,CAA1B;AACD,CAJM;AAMP,AAAO,IAAI2L,oBAAoB,GAAG9I,IAAI,IAAI;AACxC,MAAI,CAACA,IAAI,CAAC7C,MAAV,EAAkB,OAAO,CAAC6C,IAAI,CAACiK,OAAb;AAClB,MAAI,CAACjK,IAAI,CAAC7C,MAAL,CAAY8M,OAAjB,EAA0B,OAAO,IAAP;AAC1B,SAAOnB,oBAAoB,CAAC9I,IAAI,CAAC7C,MAAN,CAA3B;AACD,CAJM;AAMP,AAAO,IAAI+M,mBAAmB,GAAGlK,IAAI,IAAI;AACvC,MAAIA,IAAI,CAACmK,SAAT,EAAoB;AAClB,WAAO,CAAC,MAAD,EAAS,WAAT,EAAsB,WAAtB,EAAmC,YAAnC,EAAiD,eAAjD,CAAP;AACD,GAFD,MAEO,IAAInK,IAAI,CAACiJ,MAAL,IAAemB,OAAO,CAACpK,IAAD,CAAtB,IAAgCkJ,mBAAmB,CAAClJ,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,IAAIqK,MAAM,GAAGrK,IAAI,IACtBA,IAAI,IAAIA,IAAI,CAAC/I,IAAL,KAAc,OAAtB,IAAiC+I,IAAI,CAAC/B,IAAL,KAAc,MAD1C;AAGP,AAAO,IAAIqM,MAAM,GAAGtK,IAAI,IAAIA,IAAI,CAACoH,UAAL,CAAgBlB,IAAhB,CAAqBiB,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAc,QAA3C,CAArB;AAEP,AAAO,IAAIsM,QAAQ,GAAGvK,IAAI,IACxBA,IAAI,CAACoH,UAAL,CAAgBlB,IAAhB,CAAqBiB,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAc,UAA3C,CADK;AAGP,AAAO,IAAIuM,QAAQ,GAAGxK,IAAI,IACxBA,IAAI,IAAIA,IAAI,CAAC/I,IAAL,KAAc,OAAtB,IAAiC+I,IAAI,CAAC/B,IAAL,KAAc,QAD1C;AAGP,AAAO,IAAImM,OAAO,GAAGpK,IAAI,IACvBA,IAAI,IAAIA,IAAI,CAAC/I,IAAL,KAAc,OAAtB,IAAiC+I,IAAI,CAAC/B,IAAL,KAAc,OAD1C;AAGP,AAAO,IAAI+J,OAAO,GAAG7R,IAAI,IAAIA,IAAI,CAACkH,MAAL,KAAgB,CAAtC;AAEP,AAAO,IAAIoN,aAAa,GAAG,CAACzK,IAAD,EAAO7C,MAAP,KACzB6C,IAAI,CAAC/B,IAAL,KAAc,QAAd,IAA0Bd,MAAM,CAACc,IAAP,KAAgB,OAA1C,IAAqDd,MAAM,CAAC8M,OADvD;AAGP,AAAO,IAAIS,gBAAgB,GAAG,CAACzK,KAAD,EAAQsJ,WAAR,EAAqBoB,KAArB,KAC5BpB,WAAW,CAACnU,OAAZ,CAAoB6I,IAAI,IAAI;AAC1B,MAAIjJ,IAAI,GAAG2V,KAAK,CAACpB,WAAW,CAACqB,SAAZ,CAAsB/P,IAAI,IAAIA,IAAI,KAAKoD,IAAvC,CAAD,CAAhB;;AACA,MAAI,CAACgC,KAAK,CAAC4K,MAAN,CAAa3U,QAAb,CAAsBlB,IAAtB,CAAL,EAAkC;AAChCiL,IAAAA,KAAK,CAAC4K,MAAN,CAAa5N,IAAb,CAAkB;AAChBgB,MAAAA,IADgB;AAEhB/G,MAAAA,IAAI,EAAElC;AAFU,KAAlB;AAID;AACF,CARD,CADK;AAWP,AAAO,IAAI8V,SAAS,GAAG,CAAC9K,IAAD,EAAO7C,MAAP,KAAkB;AACvC,MAAIwL,WAAW,GAAGnB,cAAc,CAACxH,IAAD,EAAO7C,MAAP,CAAhC;AACA,MAAI,CAACwL,WAAL,EAAkB,OAAO,KAAP;AAClB,MAAIgC,KAAK,GAAGhC,WAAW,CAACjU,GAAZ,CAAgByR,KAAK,IAAIA,KAAK,CAACgB,IAAN,CAAW3R,KAApC,CAAZ;AACA,MAAI+T,WAAW,GAAGoB,KAAK,CAACjW,GAAN,CAAUM,IAAI,IAAI+V,WAAW,CAAC/V,IAAD,CAA7B,CAAlB;AAEA,SAAO;AAAE2T,IAAAA,WAAF;AAAegC,IAAAA,KAAf;AAAsBpB,IAAAA;AAAtB,GAAP;AACD,CAPM;AASP,AAAO,IAAIyB,KAAK,GAAGhL,IAAI,IAAI,OAAOuB,IAAP,CAAYvB,IAAI,CAAC/B,IAAjB,KAA0B+B,IAAI,CAACiK,OAAnD;AAEP,AAAO,IAAIgB,eAAe,GAAG,CAACxD,QAAD,EAAWC,SAAX,KAC3BA,SAAS,CAACzB,MAAV,CAAiBC,IAAjB,CACEC,KAAK,IACH,CAACA,KAAK,CAACyB,OAAP,IACA,CAACzB,KAAK,CAACwB,QADP,IAEAxB,KAAK,CAACiB,UAAN,CAAiBlB,IAAjB,CAAsBiB,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAcwJ,QAAQ,CAACxJ,IAArD,CAJJ,CADK;AAQP,AAAO,IAAIiN,SAAS,GAAG,CAACzD,QAAD,EAAWC,SAAX,KACrBA,SAAS,CAACzB,MAAV,CAAiBC,IAAjB,CAAsBC,KAAK,IAAIA,KAAK,CAACyB,OAArC,CADK;AAGP,AAAO,IAAIuD,SAAS,GAAG,CAAC1D,QAAD,EAAWC,SAAX,EAAsBzH,KAAtB,KAAgC;AACrD,MAAImL,MAAM,GAAG,EAAb;AAEA1D,EAAAA,SAAS,CAACzB,MAAV,CACGjQ,MADH,CACUmQ,KAAK,IAAIA,KAAK,CAACyB,OADzB,EAEGxS,OAFH,CAEW+Q,KAAK,IAAI;AAChB,QAAIgB,IAAI,GAAGhB,KAAK,CAACiB,UAAN,CAAiB5F,IAAjB,CAAsB2F,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAcwJ,QAAQ,CAACxJ,IAArD,CAAX;;AACA,QAAIkJ,IAAJ,EAAU;AACRiE,MAAAA,MAAM,CAACjF,KAAK,CAAC3Q,KAAP,CAAN,GAAsB2R,IAAI,CAAC3R,KAA3B;AACD;AACF,GAPH;AASA,SAAO4V,MAAP;AACD,CAbM;AAeP,AAAO,IAAIC,eAAe,GAAG,CAAC5D,QAAD,EAAWC,SAAX,EAAsBzH,KAAtB,KAAgC;AAC3D,MAAIqL,aAAa,GAAI,GAAE5D,SAAS,CAACtB,EAAV,IAAgBsB,SAAS,CAACzJ,IAAK,OAAtD;AACA,MAAIsN,SAAS,GAAGD,aAAhB;AACA,MAAIhP,KAAK,GAAG,CAAZ;;AACA,SAAOiP,SAAS,IAAItL,KAAK,CAACmL,MAA1B,EAAkC;AAChCG,IAAAA,SAAS,GAAI,GAAED,aAAc,GAAEhP,KAAK,EAAG,EAAvC;AACD;;AAED2D,EAAAA,KAAK,CAACmL,MAAN,CAAaG,SAAb,IAA0BJ,SAAS,CAAC1D,QAAD,EAAWC,SAAX,AAAA,CAAnC;AACA,SAAO7B,IAAI,CAAE,GAAE0F,SAAU,yBAAwBnD,IAAI,CAACX,QAAQ,CAACjS,KAAV,CAAiB,EAA3D,CAAX;AACD,CAVM;AAYP,AAiBA;;AAEA,IAAIgW,yBAAyB,GAAG,CAACxL,IAAD,EAAOmH,IAAP,EAAasE,QAAb,KAA0B;AACxD,MAAIjW,KAAK,GAAI,WAAUwK,IAAI,CAAC7I,EAAG,GAC7BgQ,IAAI,CAACuE,qBAAL,GAA6B,CAA7B,GAAiCvE,IAAI,CAACuE,qBAAtC,GAA8D,EAC/D,IAAGvE,IAAI,CAAClJ,IAAK,EAFd,CADwD;AAMxD;AACA;AACA;;AAEA,SAAQ,GAAEwN,QAAQ,GAAGtE,IAAI,CAAClJ,IAAR,GAAgB,MAAKkJ,IAAI,CAAClJ,IAAK,GAAG,KAAIzI,KAAM,EAA9D;AACD,CAXD;;AAaA,IAAImW,kBAAkB,GAAG,CAAC3L,IAAD,EAAO4L,SAAP,EAAkBH,QAAlB,KAA+B;AACtD,MAAII,YAAY,GAAI,cAApB;AAEAD,EAAAA,SAAS,CAACE,KAAV,CAAgB1W,OAAhB,CAAwB,CAAC+R,IAAD,EAAO4E,CAAP,KAAa;AACnCF,IAAAA,YAAY,IAAK,IAAGG,iBAAiB,CAAChM,IAAD,EAAOmH,IAAP,EAAasE,QAAb,CAAuB,IAA5D;AACD,GAFD;AAIA,SAAQ,GAAEI,YAAa,GAAvB;AACD,CARD;AAqBO,IAAII,iBAAiB,GAAG,CAACjM,IAAD,EAAOyL,QAAP,KAAoB;AACjD,MAAIK,KAAK,GAAGL,QAAQ,GAAGS,mBAAmB,CAAClM,IAAD,EAAO,IAAP,CAAtB,GAAqCmM,cAAc,CAACnM,IAAD,CAAvE;AAEA,SAAO8L,KAAK,CAACpX,GAAN,CAAUyS,IAAI,IAAI6E,iBAAiB,CAAChM,IAAD,EAAOmH,IAAP,EAAasE,QAAb,CAAnC,EAA2DxW,IAA3D,CAAgE,IAAhE,CAAP;AACD,CAJM;;AAMP,IAAImX,YAAY,GAAG,CAACjF,IAAD,EAAOkF,gBAAgB,GAAG,IAA1B,KAAmC;AACpD,MAAIhE,IAAI,GAAGjH,OAAO,CAAC+F,IAAD,CAAlB;;AACA,MAAIkB,IAAJ,EAAU;AACR,QAAI7S,KAAK,GAAG6W,gBAAgB,GACvB,QAAOlF,IAAI,CAAC3R,KAAM,IAAG6S,IAAK,IADH,GAEvB,IAAGlB,IAAI,CAAC3R,KAAM,GAAE6S,IAAK,GAF1B;AAGA,WAAQ,UAASlB,IAAI,CAAC3R,KAAM,mBAAkBA,KAAM,MAAK2R,IAAI,CAAC3R,KAAM,EAApE;AACD,GALD,MAKO;AACL,WAAO2R,IAAI,CAAC3R,KAAZ;AACD;AACF,CAVD;;AAYA,AAAO,IAAI8W,gBAAgB,GAAGtM,IAAI,IAAI;AACpC,SAAOuM,OAAO,CAAC,CACbvM,IAAI,CAACoH,UAAL,CACGpR,MADH,CAEImR,IAAI,IAAIA,IAAI,CAACe,IAAL,CAAUlR,KAAV,IAAmBmQ,IAAI,CAACe,IAAL,CAAUC,IAA7B,IAAqC,CAACX,cAAc,CAACL,IAAD,EAAOnH,IAAP,CAFhE,EAIGtL,GAJH,CAIOyS,IAAI,IAAK,MAAKA,IAAI,CAAClJ,IAAK,MAAKmO,YAAY,CAACjF,IAAD,CAAO,EAJvD,CADa,EAMbnH,IAAI,CAACiG,MAAL,CAAYvR,GAAZ,CAAgByR,KAAK,IACnBA,KAAK,CAACiB,UAAN,CACGpR,MADH,CACUmR,IAAI,IAAIA,IAAI,CAACe,IAAL,CAAUlR,KAD5B,EAEGtC,GAFH,CAEOyS,IAAI,IAAI;AACX,QAAI3R,KAAK,GAAG,IAAZ;;AAEA,QAAI2R,IAAI,CAACyB,WAAT,EAAsB;AACpBpT,MAAAA,KAAK,GAAG2R,IAAI,CAACyB,WAAb,CADoB;AAGpB;AACD;;AAED,WAAOpT,KAAK,IAAK,MAAK2R,IAAI,CAAClJ,IAAK,MAAKzI,KAAM,EAA3C;AACD,GAZH,CADF,CANa,CAAD,CAAP,CAqBJQ,MArBI,CAqBG8R,OArBH,CAAP;AAsBD,CAvBM;;AAyBP,IAAIkE,iBAAiB,GAAG,CAAChM,IAAD,EAAOmH,IAAP,EAAasE,QAAb,KACtBtE,IAAI,CAAClJ,IAAL,KAAc,WAAd,GACI0N,kBAAkB,CAAC3L,IAAD,EAAOmH,IAAP,EAAasE,QAAb,CADtB,GAEID,yBAAyB,CAACxL,IAAD,EAAOmH,IAAP,EAAasE,QAAb,CAH/B;;AAKA,AAAO,IAAIe,2BAA2B,GAAGxM,IAAI,IAAI;AAC/C,MAAIyM,aAAa,GAAGP,mBAAmB,CAAClM,IAAD,EAAO,IAAP,CAAnB,CAAgCtL,GAAhC,CAAoCyS,IAAI,IAAIA,IAAI,CAAClJ,IAAjD,CAApB;AACA,MAAIyO,kBAAkB,GAAGD,aAAa,CAACvW,QAAd,CAAuB,WAAvB,IACrBgW,mBAAmB,CAAClM,IAAD,EAAO,IAAP,CAAnB,CACGwB,IADH,CACQ2F,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAc,WAD9B,EAEG6N,KAFH,CAESpX,GAFT,CAEayS,IAAI,IAAIA,IAAI,CAAClJ,IAF1B,CADqB,GAIrB,EAJJ;AAMA,SAAOtD,MAAM,CAAC6K,IAAP,CAAYxF,IAAI,CAAChJ,KAAL,CAAW2V,OAAX,CAAmB9N,IAA/B,EACJ7I,MADI,CAEHT,GAAG,IAAI,CAACkX,aAAa,CAACvW,QAAd,CAAuBX,GAAvB,CAAD,IAAgC,CAACmX,kBAAkB,CAACxW,QAAnB,CAA4BX,GAA5B,CAFrC,EAIJqX,MAJI,CAIG,CAAClG,GAAD,EAAMnR,GAAN,KAAc;AACpBmR,IAAAA,GAAG,CAACnR,GAAD,CAAH,GAAWyK,IAAI,CAAChJ,KAAL,CAAW2V,OAAX,CAAmB9N,IAAnB,CAAwBtJ,GAAxB,CAAX;AACA,WAAOmR,GAAP;AACD,GAPI,EAOF,EAPE,CAAP;AAQD,CAhBM;AAkBP,AAAO,IAAIwF,mBAAmB,GAAG,CAAClM,IAAD,EAAOyL,QAAP,KAAoB;AACnD,MAAIK,KAAK,GAAGS,OAAO,CACjBvM,IAAI,CAACiG,MAAL,CAAYvR,GAAZ,CAAgByR,KAAK,IAAIA,KAAK,CAACiB,UAAN,CAAiBpR,MAAjB,CAAwBmR,IAAI,IAAIA,IAAI,CAACiC,SAArC,CAAzB,CADiB,CAAnB;AAGA,SAAOyD,kBAAkB,CAACf,KAAD,CAAlB,IAA6BL,QAA7B,GACHqB,iBAAiB,CAAChB,KAAD,CADd,GAEHA,KAFJ;AAGD,CAPM;;AASP,IAAIgB,iBAAiB,GAAGhB,KAAK,IAAI;AAC/B;AACA,MAAIF,SAAS,GAAG;AAAE3N,IAAAA,IAAI,EAAE,WAAR;AAAqB6N,IAAAA,KAAK,EAAE;AAA5B,GAAhB;AACAA,EAAAA,KAAK,CAAC1W,OAAN,CAAc,CAAC+R,IAAD,EAAO4E,CAAP,KAAa;AACzB,QAAIgB,mBAAmB,CAAC5F,IAAI,CAAClJ,IAAN,CAAvB,EAAoC;AAClCkJ,MAAAA,IAAI,CAAC6F,WAAL,GAAmB,IAAnB;AACApB,MAAAA,SAAS,CAACE,KAAV,CAAgB7O,IAAhB,CAAqBkK,IAArB;AACD;AACF,GALD;AAMA2E,EAAAA,KAAK,CAAC7O,IAAN,CAAW2O,SAAX;AACA,SAAOE,KAAK,CAAC9V,MAAN,CAAamR,IAAI,IAAI,CAACA,IAAI,CAAC6F,WAA3B,CAAP;AACD,CAXD;;AAaA,IAAIH,kBAAkB,GAAGf,KAAK,IAC5BA,KAAK,CAAC5F,IAAN,CAAWiB,IAAI,IAAI4F,mBAAmB,CAAC5F,IAAI,CAAClJ,IAAN,CAAtC,CADF;;AAGA,AAAO,IAAIgP,cAAc,GAAGjN,IAAI,IAC9BuM,OAAO,CACLvM,IAAI,CAACiG,MAAL,CAAYvR,GAAZ,CAAgByR,KAAK,IACnBA,KAAK,CAACiB,UAAN,CAAiBpR,MAAjB,CACEmR,IAAI,IAAIA,IAAI,CAACiC,SAAL,IAAkBjC,IAAI,CAACiC,SAAL,CAAeC,KAAf,KAAyB,QADrD,CADF,CADK,CADF;;AASP,IAAI8C,cAAc,GAAGnM,IAAI,IACvBuM,OAAO,CACLvM,IAAI,CAACiG,MAAL,CAAYvR,GAAZ,CAAgByR,KAAK,IACnBA,KAAK,CAACiB,UAAN,CAAiBpR,MAAjB,CACEmR,IAAI,IAAIA,IAAI,CAACiC,SAAL,IAAkBjC,IAAI,CAACiC,SAAL,CAAeC,KAAf,KAAyB,QADrD,CADF,CADK,CADT;AA6BA,IAAI0D,mBAAmB,GAAG;AACxB5H,EAAAA,UAAU,EAAE,IADY;AAExBC,EAAAA,UAAU,EAAE,IAFY;AAGxBX,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,IAAI8I,QAAQ,GAAG,CAAClN,IAAD,EAAOC,KAAP,EAAckN,YAAY,GAAG,IAA7B,KAAsC;AAC1D,MAAIhW,EAAE,GAAG6I,IAAI,CAACoG,EAAL,IAAWpG,IAAI,CAAC/B,IAAzB,CAD0D;;AAG1D,MAAIgC,KAAK,CAACmN,cAAN,CAAqBjW,EAArB,CAAJ,EAA8B;AAC5BA,IAAAA,EAAE,GAAI,GAAEA,EAAG,GAAE8I,KAAK,CAACmN,cAAN,CAAqBjW,EAArB,GAA2B,EAAxC;AACD,GAFD,MAEO;AACL8I,IAAAA,KAAK,CAACmN,cAAN,CAAqBjW,EAArB,IAA2B,CAA3B;AACD;;AAED6I,EAAAA,IAAI,CAACqN,SAAL,GAAiBlW,EAAjB;;AACA,MAAIgW,YAAY,IAAInN,IAAI,CAACsN,SAAzB,EAAoC;AAClCtN,IAAAA,IAAI,CAACsN,SAAL,CAAerQ,IAAf,CAAqB,aAAY9F,EAAG,GAApC;AACD;;AAED,SAAOA,EAAP;AACD,CAfM;AAiBP,IAAIoW,6BAA6B,GAAG,CAClC,YADkC,EAElC,eAFkC,EAGlC,aAHkC,EAIlC,cAJkC,EAKlC,eALkC,EAMlC,gBANkC,EAOlC,YAPkC,CAApC;;AAUA,IAAIC,2BAA2B,GAAGrG,IAAI,IACpCoG,6BAA6B,CAACrX,QAA9B,CAAuCiR,IAAvC,CADF;;AAGA,AAAO,IAAIsG,4BAA4B,GAAGC,UAAU,IAClD/S,MAAM,CAAC6K,IAAP,CAAYkI,UAAZ,EAAwBxH,IAAxB,CAA6BsH,2BAA7B,CADK;AAGP,AAAO,IAAIG,6BAA6B,GAAGD,UAAU,IACnD/S,MAAM,CAAC6K,IAAP,CAAYkI,UAAZ,EACG1X,MADH,CACUwX,2BADV,EAEGZ,MAFH,CAEU,CAAClG,GAAD,EAAMnR,GAAN,KAAc;AACpBmR,EAAAA,GAAG,CAACnR,GAAD,CAAH,GAAWmY,UAAU,CAACnY,GAAD,CAArB;AACA,SAAOmR,GAAP;AACD,CALH,EAKK,EALL,CADK;AAQP,AAAO,IAAIkH,gCAAgC,GAAGF,UAAU,IACtD/S,MAAM,CAAC6K,IAAP,CAAYkI,UAAZ,EACG1X,MADH,CACUT,GAAG,IAAI,CAACiY,2BAA2B,CAACjY,GAAD,CAD7C,EAEGqX,MAFH,CAEU,CAAClG,GAAD,EAAMnR,GAAN,KAAc;AACpBmR,EAAAA,GAAG,CAACnR,GAAD,CAAH,GAAWmY,UAAU,CAACnY,GAAD,CAArB;AACA,SAAOmR,GAAP;AACD,CALH,EAKK,EALL,CADK;AAQP,AAAO,IAAImH,YAAY,GAAG7N,IAAI,IAC5BA,IAAI,CAACoH,UAAL,CAAgBlB,IAAhB,CACEiB,IAAI,IAAIA,IAAI,CAAClJ,IAAL,CAAUhE,KAAV,CAAgB,MAAhB,KAA2BkN,IAAI,CAAClJ,IAAL,KAAc,WADnD,CADK;AAKP,IAAI6P,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;AAAE9P,EAAAA,IAAF;AAAQzI,EAAAA;AAAR,CAAD,KAC/BsY,4BAA4B,CAAC5X,QAA7B,CAAsC+H,IAAtC,KAA+C,cAAcsD,IAAd,CAAmB/L,KAAnB,CAA/C,GACIwY,UAAU,CAACxY,KAAD,CADd,GAEIA,KAHC;AAKP,AAAO,IAAIqH,OAAO,GAAG,CAACmD,IAAD,EAAOC,KAAP,KACnB,CAACD,IAAI,CAACiK,OAAN,IAAiBhK,KAAK,CAACpD,OAAN,CAAcmD,IAAI,CAAC/B,IAAnB,CAAjB,IAA6CgC,KAAK,CAAC9D,IAAN,KAAe,UADvD;AAGP,AAAO,SAAS6M,WAAT,CAAqBhJ,IAArB,EAA2B7C,MAA3B,EAAmC8C,KAAnC,EAA0C;AAC/C;AACA;AACA,MAAIgO,SAAS,GAAGjO,IAAI,CAACsH,YAArB;;AACA,MAAI,CAAC2G,SAAS,CAACvW,UAAV,CAAqB,GAArB,CAAL,EAAgC;AAC9BuW,IAAAA,SAAS,GAAGjZ,IAAI,CAACkZ,SAAL,CAAelZ,IAAI,CAACC,IAAL,CAAUgL,KAAK,CAAC/C,QAAhB,EAA0B+Q,SAA1B,CAAf,CAAZ;AACD;;AAED,SAAOA,SAAP;AACD;;ACzlBD,IAAIE,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;AAMbtX,EAAAA,IAAI,EAAE;AANO,CAAf;AASA,AAAO,IAAI6I,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAI,CAACD,IAAI,CAACmK,SAAN,IAAmBnK,IAAI,CAAC/B,IAAL,KAAc,iBAArC,EAAwD;AAExD,MAAIhH,IAAI,GAAG8P,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAlB;;AAEA,MAAI4F,MAAM,CAAC3O,IAAD,CAAV,EAAkB;AAChBgJ,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,SAAQmL,IAAI,CAACnR,IAAI,CAACzB,KAAN,CAAa,EAA5C,EADgB;AAIhB;;AACA,QAAIiZ,WAAW,GAAG,CAACxQ,IAAD,EAAOyQ,aAAP,KACf,GAAEzQ,IAAK,KAAIhH,IAAI,CAACzB,KAAM,oBACrByB,IAAI,CAACzB,KACN,kBAAiBkZ,aAAc,gBAHlC;;AAIAzO,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkBwR,WAAW,CAAC,WAAD,EAAc,SAAd,CAA7B;AACAxO,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkBwR,WAAW,CAAC,SAAD,EAAY,QAAZ,CAA7B;AACD,GAXD,MAWO;AACLxO,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,SAAQmL,IAAI,CAAC+F,QAAQ,CAAClX,IAAI,CAACzB,KAAN,CAAT,CAAuB,EAAtD,EADK;AAIL;;AACA,QAAIyB,IAAI,CAACzB,KAAL,KAAe,QAAf,IAA2ByB,IAAI,CAACzB,KAAL,KAAe,OAA9C,EAAuD;AACrDyK,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,uCAAnB;AACD;AACF;AACF,CAzBM;;ACVA,SAAS8C,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAIzK,KAAK,GAAGyK,KAAK,CAAC0O,mBAAN,CAA0B3O,IAA1B,EAAgC7C,MAAhC,EAAwC8C,KAAxC,CAAZ;;AAEA,MAAIzK,KAAJ,EAAW;AACTmF,IAAAA,MAAM,CAAC6K,IAAP,CAAYhQ,KAAZ,EAAmBJ,OAAnB,CAA2ByR,CAAC,IAAI;AAC9B,UAAI,CAACA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,aAAvB,KAAyCqE,SAAS,CAAClL,IAAD,EAAO7C,MAAP,CAAtD,EAAsE;AACpE,eAAO8C,KAAK,CAACI,MAAN,CAAapD,IAAb,CACJ,IAAG4J,CAAE,IAAGwE,eAAe,CAACrL,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAsB,EADzC,CAAP;AAGD,OAJD,MAIO,IAAI4G,CAAC,KAAK,KAAV,EAAiB;AACtB,eAAO5G,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,QAAOzH,KAAK,CAACqR,CAAD,CAAI,GAAnC,CAAP;AACD,OAFM,MAEA;AACL,eAAO5G,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAG4J,CAAE,IAAGrR,KAAK,CAACqR,CAAD,CAAI,EAApC,CAAP;AACD;AACF,KAVD;AAWD;AACF;;ACfM,SAAS9G,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAI,CAACuK,QAAQ,CAACxK,IAAD,CAAb,EAAqB;AAErB,MAAI4O,OAAO,GAAG7H,OAAO,CAAC/G,IAAD,EAAO,KAAP,CAArB;AACA,MAAIzB,KAAK,GAAGsQ,QAAQ,CAAC7O,IAAD,EAAO7C,MAAP,CAApB;AAEA8C,EAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,aAAY2R,OAAO,CAACpZ,KAAM,YAAW+I,KAAM,GAA9D,EANyC;AASzC;AACA;AACA;;AAEA,MAAIuQ,MAAM,GAAG9O,IAAI,CAAC+O,QAAL,CAAcvN,IAAd,CAAmB+I,QAAnB,CAAb;;AACA,MAAIuE,MAAM,IAAI,CAACA,MAAM,CAAC7E,OAAtB,EAA+B;AAC7BhK,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,oCAAmC6R,MAAM,CAAC7Q,IAAK,oBADlD;AAGA6Q,IAAAA,MAAM,CAAC1H,UAAP,CAAkBhS,OAAlB,CAA0BqS,QAAQ,IAAI;AACpC,UAAIA,QAAQ,CAACxJ,IAAT,KAAkB,UAAtB,EAAkC;AAClC+Q,MAAAA,OAAA,CAAmBvH,QAAnB,EAA6BqH,MAA7B,EAAqC7O,KAArC;AACD,KAHD;AAIAA,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,MAAnB;AACD;;AAED,MAAIgS,IAAI,GAAGjP,IAAI,CAAC+O,QAAL,CAAcvN,IAAd,CAAmB8I,MAAnB,CAAX;;AACA,MAAI2E,IAAI,IAAI,CAACA,IAAI,CAAChF,OAAlB,EAA2B;AACzBhK,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,gCAA+BgS,IAAI,CAAChR,IAAK,kBAD5C;AAGAgR,IAAAA,IAAI,CAAC7H,UAAL,CAAgBhS,OAAhB,CAAwBqS,QAAQ,IAAI;AAClC,UAAIA,QAAQ,CAACxJ,IAAT,KAAkB,QAAtB,EAAgC;AAChC+Q,MAAAA,OAAA,CAAmBvH,QAAnB,EAA6BwH,IAA7B,EAAmChP,KAAnC;AACD,KAHD;AAIAA,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,MAAnB;AACD;AACF;;AAED,IAAI4R,QAAQ,GAAG,CAAC7O,IAAD,EAAO7C,MAAP,KAAkB;AAC/B,MAAIoB,KAAK,GAAGwI,OAAO,CAAC/G,IAAD,EAAO,OAAP,CAAnB;;AACA,MAAIzB,KAAK,IAAIA,KAAK,CAAC/I,KAAN,KAAgB,MAA7B,EAAqC;AACnC,WAAO+I,KAAK,CAAC/I,KAAb;AACD;;AAED,MAAI0Z,OAAO,GAAG/R,MAAM,CAAC4R,QAAP,CAAgB/Y,MAAhB,CAAuBmZ,KAAK,IAAIA,KAAK,CAAClR,IAAN,KAAe,QAA/C,CAAd;AACA,MAAImR,qBAAqB,GAAGF,OAAO,CAChCxa,GADyB,CACrBsL,IAAI,IAAI;AACX,QAAIzB,KAAK,GAAGwI,OAAO,CAAC/G,IAAD,EAAO,OAAP,CAAnB;AACA,WAAOzB,KAAK,IAAI,OAAOA,KAAK,CAAC/I,KAAb,KAAuB,QAAhC,IAA4C+I,KAAK,CAAC/I,KAAzD;AACD,GAJyB,EAKzBQ,MALyB,CAKlB8R,OALkB,CAA5B;AAOA,MAAIuH,eAAe,GAAGD,qBAAqB,CAACxC,MAAtB,CACpB,CAAC0C,GAAD,EAAM9Z,KAAN,KAAgB8Z,GAAG,GAAG9Z,KADF,EAEpB,CAFoB,CAAtB;AAKA,SAAO6Z,eAAe,GACjB,YAAWA,eAAgB,OAAMH,OAAO,CAAC7R,MAAR,GAChC+R,qBAAqB,CAAC/R,MAAO,EAFb,GAGjB,WAAU6R,OAAO,CAAC7R,MAAO,EAH9B;AAID,CAvBD;AA0BA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;AC9EO,SAASkS,KAAT,CAAevP,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACwP,gBAAT,EAA2B;AACzBvP,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,GAAlB;AACAgD,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB+C,IAAI,CAACwP,gBAAvB;AACD;AACF;;ACFM,IAAIzP,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACyP,IAAT,EAAe;AACb,QAAIA,IAAI,GAAG1I,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAlB;AACAC,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,SAAQmL,IAAI,CAACqH,IAAI,CAACja,KAAN,CAAa,4CAD5B;AAGD;AACF,CAPM;;ACHA,SAASuK,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MACE,CAACD,IAAI,CAAC0P,4BAAN,IACA1P,IAAI,CAAC2P,OADL,IAEA3P,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,GAAuB,CAFvB,IAGA,CAAC2C,IAAI,CAAC4P,SAAL,CAAe1Z,QAAf,CAAwB,UAAxB,CAJH,EAKE;AACA+J,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,GAAlB;;AAEA,QAAI,CAAC+C,IAAI,CAACiK,OAAV,EAAmB;AACjBhK,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,kBAAlB;;AACA,UAAI+C,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,GAAuB,CAA3B,EAA8B;AAC5B4C,QAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,kBAAlB;AACD;AACF;AACF;AACF;AAED,AAAO,SAASsS,OAAT,CAAevP,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MACE,CAACD,IAAI,CAAC0P,4BAAN,IACA1P,IAAI,CAAC2P,OADL,IAEA3P,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,GAAuB,CAFvB,IAGA,CAAC2C,IAAI,CAAC4P,SAAL,CAAe1Z,QAAf,CAAwB,UAAxB,CAHD,IAIA,CAAC8J,IAAI,CAACiK,OALR,EAME;AACA,QAAIjK,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,GAAuB,CAA3B,EAA8B;AAC5B4C,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,mBAAlB;AACD;;AACDgD,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,IAAlB;AACD;AACF;;AC7BM,SAAS8C,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAIoK,MAAM,CAAClN,MAAD,CAAV,EAAoB;AAClB8C,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,gBAAnB;AAEA,QAAI4S,IAAI,GAAG9I,OAAO,CAAC5J,MAAD,EAAS,MAAT,CAAlB;;AACA,QAAI0S,IAAJ,EAAU;AACR5P,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAG4S,IAAI,CAACra,KAAM,KAAIqa,IAAI,CAACra,KAAM,GAAhD;AACD,KAFD,MAEO;AACLyK,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,YAAlB;AACD;;AAED,QAAI,CAACE,MAAM,CAACyS,SAAP,CAAiB1Z,QAAjB,CAA0B,UAA1B,CAAL,EAA4C;AAC1C,UAAIX,GAAG,GAAGwR,OAAO,CAAC/G,IAAD,EAAO,KAAP,CAAjB;AACAzK,MAAAA,GAAG,GAAGA,GAAG,GAAGA,GAAG,CAACC,KAAP,GAAe,OAAxB;AAEAyK,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,SAAQ1H,GAAI,GAA/B;AACD;AACF;AACF;;AClBM,SAASwK,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAIoK,MAAM,CAACrK,IAAD,CAAV,EAAkB;AAChB,QAAI3I,IAAI,GAAG0P,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAlB;AACA,QAAI,CAAC3I,IAAL,EAAW;AAEX,QAAIwY,IAAI,GAAG9I,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAlB;AACA,QAAI8P,QAAQ,GAAGD,IAAI,GAAGA,IAAI,CAACra,KAAR,GAAgB,MAAnC;;AAEA,QAAIwK,IAAI,CAAC4P,SAAL,CAAe1Z,QAAf,CAAwB,UAAxB,CAAJ,EAAyC;AACvC,UAAIX,GAAG,GAAGwR,OAAO,CAAC/G,IAAI,CAAC+O,QAAL,CAAc,CAAd,CAAD,EAAmB,KAAnB,CAAjB;AACAxZ,MAAAA,GAAG,GAAGA,GAAG,GAAGA,GAAG,CAACC,KAAP,GAAe,OAAxB;AAEAyK,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,SACC5F,IAAI,CAAC7B,KACN,oCAAmCD,GAAI,oBAAmBua,QAAS,eAHtE;AAKD,KATD,MASO;AACL7P,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,kBAAiB5F,IAAI,CAAC7B,KAAM,QAC3B6B,IAAI,CAAC7B,KACN,SAAQsa,QAAS,cAHpB;AAKD;AACF;AACF;AAED,AAAO,SAASP,OAAT,CAAevP,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAIoK,MAAM,CAACrK,IAAD,CAAV,EAAkB;AAChBC,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB+C,IAAI,CAAC4P,SAAL,CAAe1Z,QAAf,CAAwB,UAAxB,IAAsC,GAAtC,GAA4C,IAA9D;AACD;AACF;;ACjCM,IAAI6J,OAAK,GAAGC,IAAI,IAAIA,IAAI,CAAC+P,IAAzB;;ACAA,SAASR,OAAT,CAAevP,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC0P,4BAAT,EAAuC;;AAEvC,MACE,CAAE,CAACvS,MAAD,IAAW6C,IAAI,CAAC2P,OAAjB,IACC3P,IAAI,CAACwP,gBADN,IAEExP,IAAI,CAAC2P,OAAL,IAAgB3P,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,GAAuB,CAF1C,KAGA,CAAC2C,IAAI,CAAC4P,SAAL,CAAe1Z,QAAf,CAAwB,UAAxB,CAJH,EAKE;AACA,QAAI,CAACiH,MAAD,IAAW6C,IAAI,CAAC2P,OAApB,EAA6B;AAC3B,UAAI3P,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,KAAyB,CAA7B,EAAgC;AAC9B4C,QAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,GAAlB;AACD;;AAED,UAAI,CAACgD,KAAK,CAAC+P,yBAAX,EAAsC;AACpC/P,QAAAA,KAAK,CAAC+P,yBAAN,GAAkC,IAAlC;AACA/P,QAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,kBAAnB;AACD;AACF;;AAEDgD,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,KAAI+C,IAAI,CAAC4P,SAAU,GAAtC;AACD,GAlBD,MAkBO;AACL3P,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,IAAlB;AACD;AACF;;ACtBD,mBAAe,CAAC+C,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AACtC,MAAImK,OAAO,CAACpK,IAAD,CAAX,EAAmB;AACjB,QAAI3I,IAAI,GAAG0P,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAlB,CADiB;;AAGjB,QAAI,CAAC3I,IAAL,EAAW,OAAO,IAAP;AAEX4I,IAAAA,KAAK,CAACmK,OAAN,GAAgB,IAAhB;AAEAnK,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,sCAAnB;AACD;;AAED,SAAOqN,MAAM,CAACtK,IAAD,CAAN,IAAgBuK,QAAQ,CAACvK,IAAD,CAA/B;AACD,CAZD;;ACCA,oBAAe,CAACA,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AACtC,MAAIhC,IAAI,GAAG+B,IAAI,CAAC/B,IAAhB;;AAEA,UAAQ+B,IAAI,CAAC/B,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,GAAGgS,iBAAiB,CAACjQ,IAAD,EAAO7C,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,GAAG8M,WAAW,CAAC/K,IAAI,CAAC/B,IAAL,CAAUnH,OAAV,CAAkB,KAAlB,EAAyB,EAAzB,CAAD,CAAlB;AACA;;AAEF,SAAK,OAAL;AACA,SAAK,MAAL;AACEmH,MAAAA,IAAI,GAAG,gBAAP;AACA;AArDJ;;AA2DA,MAAI+B,IAAI,CAACkQ,kBAAT,EAA6B;AAC3B,WAAQ,YAAWjS,IAAK,EAAxB;AACD;;AAED,SAAOA,IAAP;AACD,CAnED;;AAqEA,IAAIgS,iBAAiB,GAAG,CAACjQ,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC/C,MAAIhC,IAAI,GAAG,KAAX;;AAEA,MAAI+B,IAAI,CAACE,UAAT,EAAqB;AACnBjC,IAAAA,IAAI,GAAG,gBAAP;AACD,GAFD,MAEO,IAAIsJ,OAAO,CAACvH,IAAD,EAAO,SAAP,CAAX,EAA8B;AACnC/B,IAAAA,IAAI,GAAG,mBAAP;AACD,GAFM,MAEA,IAAId,MAAM,IAAIoK,OAAO,CAACpK,MAAD,EAAS,SAAT,CAArB,EAA0C;AAC/Cc,IAAAA,IAAI,GAAG,0BAAP;AACD,GAFM,MAEA,IAAIsJ,OAAO,CAACvH,IAAD,EAAO,MAAP,CAAX,EAA2B;AAChC/B,IAAAA,IAAI,GAAG,GAAP;AACA+B,IAAAA,IAAI,CAACyP,IAAL,GAAY,IAAZ;AACAzP,IAAAA,IAAI,CAACiJ,MAAL,GAAclC,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAP,CAAsBxK,KAApC;AACD,GAJM,MAIA,IAAI+R,OAAO,CAACvH,IAAD,EAAO,SAAP,CAAX,EAA8B;AACnC,QAAIyH,QAAQ,GAAGV,OAAO,CAAC/G,IAAD,EAAO,SAAP,CAAtB;AACA,QAAImQ,UAAU,GAAGhT,MAAjB;AACA,QAAIiT,WAAW,GAAG,IAAlB;;AAEA,WAAOD,UAAU,IAAIC,WAArB,EAAkC;AAChC,UAAID,UAAU,CAAClZ,IAAX,KAAoB,OAAxB,EAAiC;AAC/BmZ,QAAAA,WAAW,GAAG,CAAC7I,OAAO,CAAC4I,UAAD,EAAa,SAAb,CAAtB;AACD;;AACDA,MAAAA,UAAU,GAAGA,UAAU,CAAChT,MAAxB;AACD;;AAED,QAAIiT,WAAJ,EAAiB;AACf,UAAI,CAAC7I,OAAO,CAACvH,IAAD,EAAO,eAAP,CAAZ,EAAqC;AACnC/B,QAAAA,IAAI,GAAG,QAAP;AACD;;AACD+B,MAAAA,IAAI,CAACiJ,MAAL,GAAcxB,QAAQ,CAACjS,KAAvB;AACD;AACF,GAlBM,MAkBA,IAAI+R,OAAO,CAACvH,IAAD,EAAO,WAAP,EAAoB/J,CAAC,IAAIA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,QAA/C,CAAX,EAAqE;AAC1EgI,IAAAA,IAAI,GAAG,KAAP;AACD,GAFM,MAEA,IAAIsJ,OAAO,CAACvH,IAAD,EAAO,UAAP,CAAX,EAA+B;AACpC/B,IAAAA,IAAI,GAAG,MAAP;AACD;;AAED,SAAOA,IAAP;AACD,CAtCD;;AC/DO,SAAS8B,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC;AACA,MAAID,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,KAAyB,CAAhD,EAAmD,OAAO,IAAP;;AACnD,MAAI2C,IAAI,CAACqQ,UAAT,EAAqB;AACnBpQ,IAAAA,KAAK,CAAC+P,yBAAN,GAAkC,IAAlC;AAEA/P,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,sFADH;AAGA,QAAIqT,YAAY,GAAG,CAAC,CAACpH,mBAAmB,CAAClJ,IAAD,CAAxC;;AACA,QAAIsQ,YAAJ,EAAkB;AAChBrQ,MAAAA,KAAK,CAACqQ,YAAN,GAAqB,IAArB;AACArQ,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,gCAAlB;AACD;;AACDgD,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,YAAnB;AAEA,WAAO,IAAP;AACD;;AAED,MAAI+C,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC/B,IAAL,KAAc,MAArC,EAA6C;AAC3CgC,IAAAA,KAAK,CAAC9D,IAAN,GAAakL,qBAAqB,CAACrH,IAAD,EAAO,IAAP,EAAa,KAAb,CAAlC;AACAC,IAAAA,KAAK,CAACsQ,gBAAN,GAAyB,IAAzB;AACD;;AAED,MAAI1T,OAAO,CAACmD,IAAD,EAAOC,KAAP,CAAX,EAA0B;AACxBA,IAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACD;;AAED,MAAIvS,IAAI,GAAGwS,YAAY,CAACzQ,IAAD,EAAO7C,MAAP,AAAA,CAAvB;AACA,MAAIc,IAAI,KAAK,IAAb,EAAmB,OAAO,IAAP;AAEnBgC,EAAAA,KAAK,CAACuQ,GAAN,CAAUvS,IAAV,EAAgB+B,IAAI,CAAC0Q,MAArB,EA/ByC;;AAkCzC1Q,EAAAA,IAAI,CAAC4P,SAAL,GAAiB3R,IAAjB;AACA+B,EAAAA,IAAI,CAAC2Q,OAAL,GAAe1S,IAAf;AAEA,MAAI2S,WAAW,CAAC5Q,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAf,EAAsC,OAAO,IAAP;;AAEtC,MAAI,CAACD,IAAI,CAAC0P,4BAAV,EAAwC;AACtCzP,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAG+C,IAAI,CAAC4P,SAAU,EAArC;AACD;AACF;;AC3CD,IAAIiB,QAAQ,GAAG,wBAAf;AACA,IAAItI,aAAW,GAAG,oEAAlB;AACA,IAAID,cAAY,GAAG,2CAAnB;AACA,IAAIwI,UAAU,GAAG,wCAAjB;AACA,IAAIrI,SAAO,GAAG,gBAAd;AAEA,AAAO,SAAS1I,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,KAAyB,CAAhD,EAAmD,OADV;;AAIzC,MAAI0T,MAAM,GAAGhK,OAAO,CAAC/G,IAAD,EAAO,QAAP,CAApB;;AAEA,MAAI+Q,MAAJ,EAAY;AACV/Q,IAAAA,IAAI,CAAC+Q,MAAL,GAAc,IAAd;AAEA,QAAI5T,MAAM,IAAI,CAACkN,MAAM,CAAClN,MAAD,CAArB,EAA+B8C,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,GAAlB;AAE/B,QAAIzH,KAAK,GAAGub,MAAM,CAACvb,KAAnB;;AACA,QAAIyK,KAAK,CAAC4I,IAAN,IAAcN,aAAW,CAAChH,IAAZ,CAAiB/L,KAAjB,CAAlB,EAA2C;AACzCA,MAAAA,KAAK,GAAGA,KAAK,CAACsB,OAAN,CAAc,OAAd,EAAuB,MAAvB,CAAR;AACD,KAFD,MAEO,IAAI+Z,QAAQ,CAACtP,IAAT,CAAc/L,KAAd,CAAJ,EAA0B;AAC/B,UAAI,GAAGwb,QAAH,EAAahT,KAAb,IAAsBxI,KAAK,CAACyE,KAAN,CAAY4W,QAAZ,CAA1B;AACArb,MAAAA,KAAK,GAAI,GAAEwb,QAAQ,CAACla,OAAT,CAAiB,QAAjB,EAA2B,EAA3B,CAA+B,IAAGkH,KAAK,CAACiT,WAAN,EAAoB,EAAjE;AACD,KAHM,MAGA,IAAInI,oBAAoB,CAAC9I,IAAD,CAApB,IAA8BsI,cAAY,CAAC/G,IAAb,CAAkB/L,KAAlB,CAAlC,EAA4D;AACjEA,MAAAA,KAAK,GAAGA,KAAK,CAACsB,OAAN,CAAc,QAAd,EAAwB,aAAxB,CAAR;AACD,KAFM,MAEA,IAAI2R,SAAO,CAAClH,IAAR,CAAa/L,KAAb,CAAJ,EAAyB;AAC9B,UAAIuT,QAAQ,GAAGC,WAAW,CAAC+H,MAAD,EAAS/Q,IAAT,EAAeC,KAAf,CAA1B;AACAzK,MAAAA,KAAK,GAAGA,KAAK,CAACsB,OAAN,CAAc,YAAd,EAA6B,aAAYiS,QAAS,IAAlD,CAAR;AACD,KAHM,MAGA,IAAI+H,UAAU,CAACvP,IAAX,CAAgB/L,KAAhB,CAAJ,EAA4B;AACjCA,MAAAA,KAAK,GAAGA,KAAK,CAACsB,OAAN,CAAc,QAAd,EAAwB,EAAxB,CAAR;AACD;;AAEDmJ,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,GAAEzH,KAAM,KAA3B;AACD,GArBD,MAqBO,IAAIqH,OAAO,CAACmD,IAAD,EAAOC,KAAP,CAAX,EAA0B;AAC/BD,IAAAA,IAAI,CAAC+Q,MAAL,GAAc,IAAd;AACA9Q,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,cAAagD,KAAK,CAAC/C,QAAS,IAAG8C,IAAI,CAAC/B,IAAK,OAA5D;AACD;AACF;AAED,AAAO,SAASsR,OAAT,CAAevP,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC+Q,MAAT,EAAiB;AACf9Q,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,SAAnB;AACA,QAAIE,MAAM,IAAI,CAACkN,MAAM,CAAClN,MAAD,CAArB,EAA+B8C,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,GAAlB;AAChC;AACF;;ACjDM,IAAI8C,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1CD,EAAAA,IAAI,CAACsN,SAAL,GAAiBtN,IAAI,CAACiK,OAAL,GACb,CACEjK,IAAI,CAAC/B,IAAL,KAAc,MAAd,GACI,YADJ,GAEI+B,IAAI,CAACmK,SAAL,GACA,eADA,GAEA,aALN,CADa,GAQb,EARJ;AAUA,MAAImD,SAAS,GAAGvG,OAAO,CAAC/G,IAAD,EAAO,WAAP,CAAvB;;AACA,MAAIsN,SAAJ,EAAe;AACbtN,IAAAA,IAAI,CAACsN,SAAL,CAAerQ,IAAf,CACEqQ,SAAS,CAACpF,IAAV,CAAeC,IAAf,GAAuB,MAAKmF,SAAS,CAAC9X,KAAM,GAA5C,GAAiD8X,SAAS,CAAC9X,KAD7D;AAGD;AACF,CAjBM;AAmBP,AAAO,IAAI+Z,OAAK,GAAG,CAACvP,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAT,EAAqB;;AAErB,MAAIF,IAAI,CAACsN,SAAL,CAAejQ,MAAf,KAA0B,CAA9B,EAAiC;AAC/B,QAAIiQ,SAAS,GAAGtN,IAAI,CAACsN,SAAL,CAAe,CAAf,CAAhB;AACA,QAAI4D,UAAU,GAAG,IAAjB;;AAEA,QAAI5K,eAAe,CAACgH,SAAD,CAAnB,EAAgC;AAC9BA,MAAAA,SAAS,GAAG9G,aAAa,CAAC8G,SAAD,CAAzB;AACD,KAFD,MAEO,IAAI,CAAC1H,MAAM,CAAC0H,SAAD,CAAX,EAAwB;AAC7BA,MAAAA,SAAS,GAAI,IAAGA,SAAU,GAA1B;AACA4D,MAAAA,UAAU,GAAG,KAAb;AACD;;AAEDjR,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,cAAaiU,UAAU,GAAGrL,IAAI,CAACyH,SAAD,CAAP,GAAqBA,SAAU,EAAzE;AACD,GAZD,MAYO,IAAItN,IAAI,CAACsN,SAAL,CAAejQ,MAAf,GAAwB,CAA5B,EAA+B;AACpC,QAAIiQ,SAAS,GAAI,KAAItN,IAAI,CAACsN,SAAL,CAAerY,IAAf,CAAoB,GAApB,CAAyB,IAA9C;AACAgL,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,cAAa4I,IAAI,CAACyH,SAAD,CAAY,EAAhD;AACD;AACF,CAnBM;;ACtBA,IAAIvN,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C;AACA,MAAID,IAAI,CAAC/B,IAAL,KAAc,OAAlB,EAA2B;AACzBgC,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,WAAlB;AACD;AACF,CALM;;ACGA,SAAS8C,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzCD,EAAAA,IAAI,CAAChJ,KAAL,GAAa;AACX2V,IAAAA,OAAO,EAAE;AACP9N,MAAAA,IAAI,EAAE,EADC;AAEPsS,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;AACN5S,MAAAA,IAAI,EAAE,EADA;AAENsS,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,MAAIxR,IAAI,CAACE,UAAT,EAAqB,OAtBoB;;AAyBzCF,EAAAA,IAAI,CAACiG,MAAL,CACGjQ,MADH,CACUmQ,KAAK,IAAIA,KAAK,CAACwB,QADzB,EAEGvS,OAFH,CAEW+Q,KAAK,IAAI;AAChBA,IAAAA,KAAK,CAACiB,UAAN,CAAiBhS,OAAjB,CAAyBqS,QAAQ,IAAI;AACnC,UAAIA,QAAQ,CAACxJ,IAAT,KAAkB,MAAtB,EAA8B;AAE9B,UAAI;AAAEyT,QAAAA,OAAF;AAAW,WAAGC;AAAd,UAAmC1R,KAAK,CAAC2R,mBAAN,CACrCnK,QADqC,EAErCzH,IAFqC,EAGrCC,KAHqC,EAIrC2F,MAAM,CAAC6B,QAAD,CAJ+B,CAAvC;;AAOA,UAAIiK,OAAJ,EAAa;AACX/W,QAAAA,MAAM,CAAC6K,IAAP,CAAYmM,gBAAZ,EAA8Bvc,OAA9B,CAAsCyR,CAAC,IACrC5G,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAG4J,CAAE,IAAGuB,IAAI,CAACuJ,gBAAgB,CAAC9K,CAAD,CAAjB,EAAsB7G,IAAtB,CAA4B,EAA3D,CADF;AAGD,OAJD,MAIO;AACL,YAAI6R,iBAAiB,GACnB1U,MAAM,IAAI6C,IAAI,CAAC8R,SAAf,GACIhM,eAAe,CAAC9F,IAAD,EAAOmG,KAAK,CAAC3Q,KAAb,CADnB,GAEI,KAHN;AAIA,YAAIuc,MAAM,GACRnM,MAAM,CAAC6B,QAAD,CAAN,IAAoBoK,iBAApB,GACI7R,IAAI,CAAChJ,KAAL,CAAW2V,OADf,GAEI3M,IAAI,CAAChJ,KAAL,CAAWya,MAHjB;AAKA9W,QAAAA,MAAM,CAACqX,MAAP,CAAcD,MAAM,CAAC5L,KAAK,CAAC3Q,KAAP,CAApB,EAAmCmc,gBAAnC;AACD;AACF,KA1BD;AA2BD,GA9BH,EAzByC;;AA0DzC,MAAI3R,IAAI,CAAC2P,OAAL,IAAgB3P,IAAI,CAAC/B,IAAL,KAAc,YAAlC,EAAgD;AAC9C+B,IAAAA,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAlB,CAAuBoT,aAAvB,GAAuC,KAAvC;AACD;AACF;;AC7CM,SAAS1C,OAAT,CAAevP,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAT,EAAqB;AAErB,MAAIgS,gBAAgB,GAAGhI,mBAAmB,CAAClK,IAAD,CAA1C;AAEA,MAAImS,iBAAiB,GACnB,CAACnS,IAAI,CAACmK,SAAN,IAAmB,CAACnK,IAAI,CAACiJ,MAAzB,IAAmCC,mBAAmB,CAAClJ,IAAD,CADxD;;AAGA,MAAImS,iBAAJ,EAAuB;AACrBA,IAAAA,iBAAiB,GAAGA,iBAAiB,CAAC9E,SAAtC;AACD;;AAED,MAAIrN,IAAI,CAACkQ,kBAAT,EAA6B;AAC3BjQ,IAAAA,KAAK,CAACmS,UAAN,GAAmB,IAAnB;AACAnS,IAAAA,KAAK,CAACiQ,kBAAN,GAA2B,IAA3B;AACAjQ,IAAAA,KAAK,CAACoS,UAAN,CAAiBrS,IAAI,CAAC7I,EAAtB,IAA4B6I,IAAI,CAACqS,UAAjC;AACApS,IAAAA,KAAK,CAACgG,MAAN,GAAejG,IAAI,CAACiG,MAApB;AACD;;AAED,MAAI9O,EAAE,GAAG,IAAT;;AAEA,MAAIiT,OAAO,CAACpK,IAAD,CAAP,IAAiB6N,YAAY,CAAC7N,IAAD,CAAjC,EAAyC;AACvC7I,IAAAA,EAAE,GAAG+V,QAAQ,CAAClN,IAAD,EAAOC,KAAP,EAAc,KAAd,CAAb;AACAqS,IAAAA,cAAc,CAAC;AAAEtS,MAAAA,IAAF;AAAQC,MAAAA,KAAR;AAAe9I,MAAAA,EAAf;AAAmBgb,MAAAA;AAAnB,KAAD,CAAd;AACD;;AAED,MAAII,GAAG,GAAG,CACRC,YAAY,CAAC;AAAExS,IAAAA,IAAF;AAAQmS,IAAAA,iBAAR;AAA2BlS,IAAAA,KAA3B;AAAkCiS,IAAAA;AAAlC,GAAD,CADJ,EAERlS,IAAI,CAACoS,UAAL,IAAmBK,cAAc,CAACzS,IAAD,CAFzB,EAGR0S,aAAa,CAAC;AAAE1S,IAAAA,IAAF;AAAQmS,IAAAA,iBAAR;AAA2BlS,IAAAA,KAA3B;AAAkCiS,IAAAA;AAAlC,GAAD,CAHL,EAIRlc,MAJQ,CAID8R,OAJC,CAAV;;AAMA,MAAIyK,GAAG,CAAClV,MAAJ,GAAa,CAAjB,EAAoB;AAClB,QAAIlG,EAAE,KAAK,IAAX,EAAiB;AACfA,MAAAA,EAAE,GAAG+V,QAAQ,CAAClN,IAAD,EAAOC,KAAP,CAAb;AACD,KAFD,MAEO,IAAImK,OAAO,CAACpK,IAAD,CAAX,EAAmB;AACxB,UAAIA,IAAI,CAACsN,SAAT,EAAoB;AAClBtN,QAAAA,IAAI,CAACsN,SAAL,CAAerQ,IAAf,CAAqB,aAAY9F,EAAG,GAApC;AACD;AACF;;AAED8I,IAAAA,KAAK,CAAC0S,MAAN,CAAaxb,EAAb,IAAoB,gBAAeA,EAAG,MAAKob,GAAG,CAACtd,IAAJ,CAAS,IAAT,CAAe,IAA1D;AACAgL,IAAAA,KAAK,CAAC2S,WAAN,CAAkB3V,IAAlB,CAAuB9F,EAAvB;AACD;AACF;;AAED,IAAI0b,aAAa,GAAG,CAAC7S,IAAD,EAAO2S,MAAP,EAAeR,iBAAf,KAAqC;AACvD,MAAID,gBAAgB,GAAGhI,mBAAmB,CAAClK,IAAD,CAA1C;;AAEA,MAAI6J,iBAAiB,CAAC8I,MAAM,CAAChG,OAAR,CAArB,EAAuC;AACrC,QAAImG,SAAS,GAAGnY,MAAM,CAAC6K,IAAP,CAAYmN,MAAM,CAAClB,MAAnB,EACbzb,MADa,CAEZT,GAAG,IAAI2c,gBAAgB,CAAChc,QAAjB,CAA0BX,GAA1B,KAAkCuR,OAAO,CAAC6L,MAAM,CAAClB,MAAP,CAAclc,GAAd,CAAD,CAFpC,EAIbb,GAJa,CAITa,GAAG,IACNwd,KAAK,CACHC,WAAW,CAACL,MAAM,CAAClB,MAAP,CAAclc,GAAd,CAAD,EAAqBoF,MAAM,CAAC6K,IAAP,CAAYmN,MAAM,CAAChG,OAAP,CAAepX,GAAf,CAAZ,CAArB,CADR,EAEHA,GAFG,EAGH4c,iBAHG,CAAL,CAIEld,IAJF,CAIO,IAJP,CALY,CAAhB;AAYA6d,IAAAA,SAAS,GAAGA,SAAS,CAAC7d,IAAV,CAAe,KAAf,CAAZ;AAEA,QAAIge,UAAU,GAAGtY,MAAM,CAAC6K,IAAP,CAAYmN,MAAM,CAAChG,OAAnB,EACd3W,MADc,CAEbT,GAAG,IAAI2c,gBAAgB,CAAChc,QAAjB,CAA0BX,GAA1B,KAAkCuR,OAAO,CAAC6L,MAAM,CAAChG,OAAP,CAAepX,GAAf,CAAD,CAFnC,EAIdb,GAJc,CAIVa,GAAG,IACNwd,KAAK,CAACG,YAAY,CAACP,MAAM,CAAChG,OAAP,CAAepX,GAAf,CAAD,CAAb,EAAoCA,GAApC,EAAyC4c,iBAAzC,CAAL,CAAiEld,IAAjE,CACE,IADF,CALa,EASdA,IATc,CAST,KATS,CAAjB;AAWA,WAAO;AAAEge,MAAAA,UAAF;AAAcH,MAAAA;AAAd,KAAP;AACD;;AAED,MAAIA,SAAS,GAAGnY,MAAM,CAAC6K,IAAP,CAAYmN,MAAM,CAAClB,MAAnB,EACbzb,MADa,CAEZT,GAAG,IAAI2c,gBAAgB,CAAChc,QAAjB,CAA0BX,GAA1B,KAAkCuR,OAAO,CAAC6L,MAAM,CAAClB,MAAP,CAAclc,GAAd,CAAD,CAFpC,EAIbb,GAJa,CAITa,GAAG,IACNwd,KAAK,CAACC,WAAW,CAACL,MAAM,CAAClB,MAAP,CAAclc,GAAd,CAAD,CAAZ,EAAkCA,GAAlC,EAAuC4c,iBAAvC,CAAL,CAA+Dld,IAA/D,CAAoE,IAApE,CALY,EAObA,IAPa,CAOR,KAPQ,CAAhB;AASA,SAAO;AAAE6d,IAAAA;AAAF,GAAP;AACD,CA1CD;;AA4CA,IAAIN,YAAY,GAAG,CAAC;AAAExS,EAAAA,IAAF;AAAQmS,EAAAA,iBAAR;AAA2BlS,EAAAA,KAA3B;AAAkCiS,EAAAA;AAAlC,CAAD,KAA0D;AAC3E,MAAIlb,KAAK,GAAGgJ,IAAI,CAAChJ,KAAL,CAAWya,MAAvB;AACA,MAAI,CAAC5H,iBAAiB,CAAC7S,KAAD,CAAtB,EAA+B,OAAO,KAAP;AAE/BiJ,EAAAA,KAAK,CAAC6S,SAAN,GAAkB,IAAlB;AAEA,MAAIK,aAAa,GAAGtJ,iBAAiB,CAAC7J,IAAI,CAAChJ,KAAL,CAAW2V,OAAZ,CAArC;AAEA,SAAOhS,MAAM,CAAC6K,IAAP,CAAYxO,KAAZ,EACJhB,MADI,CACGT,GAAG,IAAI2c,gBAAgB,CAAChc,QAAjB,CAA0BX,GAA1B,KAAkCuR,OAAO,CAAC9P,KAAK,CAACzB,GAAD,CAAN,CADnD,EAEJb,GAFI,CAEAa,GAAG,IACNwd,KAAK,CACHC,WAAW,CACThc,KAAK,CAACzB,GAAD,CADI,EAET4d,aAAa,GAAGxY,MAAM,CAAC6K,IAAP,CAAYxF,IAAI,CAAChJ,KAAL,CAAW2V,OAAX,CAAmBpX,GAAnB,CAAZ,CAAH,GAA0C,EAF9C,CADR,EAKHA,GALG,EAMH4c,iBANG,CAAL,CAOEld,IAPF,CAOO,IAPP,CAHG,EAYJA,IAZI,CAYC,KAZD,CAAP;AAaD,CArBD;;AAuBA,IAAIyd,aAAa,GAAG,CAAC;AAAE1S,EAAAA,IAAF;AAAQmS,EAAAA,iBAAR;AAA2BlS,EAAAA,KAA3B;AAAkCiS,EAAAA;AAAlC,CAAD,KAA0D;AAC5E,MAAIlb,KAAK,GAAGgJ,IAAI,CAAChJ,KAAL,CAAW2V,OAAvB;AACA,MAAI,CAAC9C,iBAAiB,CAAC7S,KAAD,CAAtB,EAA+B,OAAO,KAAP;AAE/BiJ,EAAAA,KAAK,CAACgT,UAAN,GAAmB,IAAnB;AACAjT,EAAAA,IAAI,CAACqN,SAAL,GAAiBrN,IAAI,CAAC4P,SAAtB;;AAEA,MAAI5P,IAAI,CAACkQ,kBAAT,EAA6B;AAC3BjQ,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,YAAWgP,iBAAiB,CAC3BjM,IAD2B,EAE3BC,KAAK,CAACmT,aAFqB,CAG3B,IAAG9G,gBAAgB,CAACtM,IAAD,CAAO,IAJ9B;AAMD,GAPD,MAOO;AACL,QAAIqT,mBAAmB,GAAG/G,gBAAgB,CAACtM,IAAD,CAA1C;;AACA,QAAIqT,mBAAJ,EAAyB;AACvBpT,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,YAAWoW,mBAAoB,IAAlD;AACD;AACF;;AAED,SAAO1Y,MAAM,CAAC6K,IAAP,CAAYxO,KAAZ,EACJhB,MADI,CACGT,GAAG,IAAI2c,gBAAgB,CAAChc,QAAjB,CAA0BX,GAA1B,KAAkCuR,OAAO,CAAC9P,KAAK,CAACzB,GAAD,CAAN,CADnD,EAEJb,GAFI,CAEAa,GAAG,IACNwd,KAAK,CAACG,YAAY,CAAClc,KAAK,CAACzB,GAAD,CAAN,CAAb,EAA2BA,GAA3B,EAAgC4c,iBAAhC,CAAL,CAAwDld,IAAxD,CAA6D,IAA7D,CAHG,EAKJA,IALI,CAKC,KALD,CAAP;AAMD,CA3BD;;AA6BA,IAAIwd,cAAc,GAAGzS,IAAI,IAAI;AAC3B,MAAIA,IAAI,CAACsT,kBAAT,EAA6B;AAC3B,QAAIC,UAAU,GAAGC,IAAI,CAACvG,cAAc,CAACjN,IAAD,CAAd,CAAqBtL,GAArB,CAAyB+e,cAAzB,CAAD,CAAJ,CAA+Cxe,IAA/C,CAAoD,IAApD,CAAjB;AAEA,WAAQ,kBAAiBse,UAAW,oBAAmBG,cAAc,CACnE1T,IADmE,CAEnE,GAFF;AAGD;;AAED,SAAQ,kBAAiB0T,cAAc,CAAC1T,IAAD,CAAO,GAA9C;AACD,CAVD;;AAYA,IAAI0T,cAAc,GAAG1T,IAAI,IAAI;AAC3B,MAAI2T,KAAK,GAAG,CACV,GAAG,IAAIhe,GAAJ,CAAQuW,mBAAmB,CAAClM,IAAD,EAAO,KAAP,CAAnB,CAAiCtL,GAAjC,CAAqCyS,IAAI,IAAIA,IAAI,CAAClJ,IAAlD,CAAR,CADO,CAAZ;AAGA,SAAOuV,IAAI,CAACG,KAAK,CAACjf,GAAN,CAAUuJ,IAAI,IAAI2V,cAAc,CAAC3V,IAAD,CAAhC,CAAD,CAAJ,CAA8ChJ,IAA9C,CAAmD,IAAnD,CAAP;AACD,CALD;;AAOA,IAAI2e,cAAc,GAAG3V,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,aAAO+P,UAAU,CAAC/P,IAAD,CAAjB;AApBJ;AAsBD,CAvBD;;AAyBA,IAAIwV,cAAc,GAAG,CAAC;AAAExV,EAAAA,IAAF;AAAQmL,EAAAA;AAAR,CAAD,KACnB,CACEwK,cAAc,CAAC3V,IAAD,CADhB,EAEG,GAAEmL,SAAS,CAACyK,QAAS,IAFxB,EAGE7F,UAAU,CAAC5E,SAAS,CAACC,KAAX,CAHZ,EAIED,SAAS,CAAC0K,KAAV,IAAoB,GAAE1K,SAAS,CAAC0K,KAAM,IAJxC,EAMG9d,MANH,CAMU8R,OANV,EAOG7S,IAPH,CAOQ,GAPR,CADF;;AAUA,IAAIie,YAAY,GAAGP,MAAM,IACvBhY,MAAM,CAAC6K,IAAP,CAAYmN,MAAZ,EAAoBje,GAApB,CAAwByS,IAAI,IAAK,GAAEA,IAAK,KAAIwL,MAAM,CAACxL,IAAD,CAAO,EAAzD,CADF;;AAGA,IAAIiB,MAAI,GAAG7B,GAAG,IACZ,OAAOA,GAAP,KAAe,QAAf,GAA2B,IAAGA,GAAG,CAACzP,OAAJ,CAAY,IAAZ,EAAkB,GAAlB,CAAuB,GAArD,GAA0DyP,GAD5D;;AAGA,IAAIyM,WAAW,GAAG,CAACL,MAAD,EAASoB,aAAa,GAAG,EAAzB,KAChBpZ,MAAM,CAAC6K,IAAP,CAAYmN,MAAZ,EACG3c,MADH,CACUmR,IAAI,IAAI,CAAC4M,aAAa,CAAC7d,QAAd,CAAuBiR,IAAvB,CADnB,EAEGzS,GAFH,CAEOyS,IAAI,IAAK,GAAEA,IAAK,KAAIiB,MAAI,CAACuK,MAAM,CAACxL,IAAD,CAAP,CAAe,EAF9C,CADF;;AAKA,IAAI6M,mBAAmB,GAAG;AACxB3C,EAAAA,UAAU,EAAE,UADY;AAExB;AACAD,EAAAA,SAAS,EAAE;AAHa,CAA1B;;AAKA,IAAI6C,uBAAuB,GAAG1e,GAAG,IAAIye,mBAAmB,CAACze,GAAD,CAAnB,IAA4BA,GAAjE;;AAEA,IAAIwd,KAAK,GAAG,CAACJ,MAAD,EAASpd,GAAT,EAAc4c,iBAAd,KAAoC;AAC9C,MAAII,GAAG,GAAG,EAAV;;AAEA,MAAIhd,GAAG,KAAK,MAAZ,EAAoB;AAClB,QAAI4c,iBAAJ,EAAuB;AACrB,UAAIhV,MAAM,GAAI,cAAagV,iBAAkB,GAA7C;AACA,UAAI+B,MAAM,GAAGD,uBAAuB,CAAC1e,GAAD,CAApC;AACAgd,MAAAA,GAAG,CAACtV,IAAJ,CAAU,MAAKE,MAAO,IAAG+W,MAAO,UAAhC;AACD,KAJD,MAIO,IACL3e,GAAG,KAAK,YAAR;AAEAA,IAAAA,GAAG,KAAK,WAHH,EAIL;AACAgd,MAAAA,GAAG,CAACtV,IAAJ,CAAU,MAAKgX,uBAAuB,CAAC1e,GAAD,CAAM,MAA5C;AACD,KANM,MAMA,IAAIA,GAAG,KAAK,eAAZ,EAA6B;AAClCgd,MAAAA,GAAG,CAACtV,IAAJ,CAAU,qBAAV;AACD;AACF;;AAEDsV,EAAAA,GAAG,CAACtV,IAAJ,CAAS0V,MAAM,CAAC1d,IAAP,CAAY,KAAZ,CAAT;AAEA,MAAIM,GAAG,KAAK,MAAZ,EAAoBgd,GAAG,CAACtV,IAAJ,CAAU,GAAV;AAEpB,SAAOsV,GAAP;AACD,CAxBD;;AA0BA,IAAID,cAAc,GAAG,CAAC;AAAEtS,EAAAA,IAAF;AAAQC,EAAAA,KAAR;AAAe9I,EAAAA,EAAf;AAAmBgb,EAAAA;AAAnB,CAAD,KAA4C;AAC/D,MAAIgC,YAAY,GAAG,EAAnB;AACA,MAAIC,eAAe,GAAG,EAAtB;AAEAzZ,EAAAA,MAAM,CAACO,OAAP,CAAe8E,IAAI,CAAChJ,KAApB,EAA2B5B,OAA3B,CAAmC,CAAC,CAAC6B,IAAD,EAAOod,UAAP,CAAD,KAAwB;AACzD,QAAI,EAAEpd,IAAI,IAAImd,eAAV,CAAJ,EAAgC;AAC9BA,MAAAA,eAAe,CAACnd,IAAD,CAAf,GAAwB,EAAxB;AACD;;AACD,QAAI,EAAEA,IAAI,IAAIkd,YAAV,CAAJ,EAA6B;AAC3BA,MAAAA,YAAY,CAACld,IAAD,CAAZ,GAAqB,EAArB;AACD;;AAED0D,IAAAA,MAAM,CAACO,OAAP,CAAemZ,UAAf,EAA2Bjf,OAA3B,CAAmC,CAAC,CAAC+Q,KAAD,EAAQmO,WAAR,CAAD,KAA0B;AAC3D,UAAI,EAAEnO,KAAK,IAAIiO,eAAe,CAACnd,IAAD,CAA1B,CAAJ,EAAuC;AACrCmd,QAAAA,eAAe,CAACnd,IAAD,CAAf,CAAsBkP,KAAtB,IAA+B,EAA/B;AACD;;AACD,UAAI,EAAEA,KAAK,IAAIgO,YAAY,CAACld,IAAD,CAAvB,CAAJ,EAAoC;AAClCkd,QAAAA,YAAY,CAACld,IAAD,CAAZ,CAAmBkP,KAAnB,IAA4B,EAA5B;AACD;;AAEDxL,MAAAA,MAAM,CAACO,OAAP,CAAeoZ,WAAf,EAA4Blf,OAA5B,CAAoC,CAAC,CAACG,GAAD,EAAMC,KAAN,CAAD,KAAkB;AACpD,gBAAQD,GAAR;AACE,eAAK,UAAL;AACE4e,YAAAA,YAAY,CAACld,IAAD,CAAZ,CAAmBkP,KAAnB,EAA0B,OAA1B,IAAqC3Q,KAArC;AACA,mBAAOwK,IAAI,CAAChJ,KAAL,CAAWC,IAAX,EAAiBkP,KAAjB,EAAwB5Q,GAAxB,CAAP;AACA;;AACF,eAAK,oBAAL;AACE4e,YAAAA,YAAY,CAACld,IAAD,CAAZ,CAAmBkP,KAAnB,EAA0B,iBAA1B,IAA+C3Q,KAA/C;AACA,mBAAOwK,IAAI,CAAChJ,KAAL,CAAWC,IAAX,EAAiBkP,KAAjB,EAAwB5Q,GAAxB,CAAP;AACA;;AACF,eAAK,mBAAL;AACE6e,YAAAA,eAAe,CAACnd,IAAD,CAAf,CAAsBkP,KAAtB,EAA6B,OAA7B,IAAwC3Q,KAAxC;AACA,mBAAOwK,IAAI,CAAChJ,KAAL,CAAWC,IAAX,EAAiBkP,KAAjB,EAAwB5Q,GAAxB,CAAP;AACA;;AACF,eAAK,6BAAL;AACE6e,YAAAA,eAAe,CAACnd,IAAD,CAAf,CAAsBkP,KAAtB,EAA6B,iBAA7B,IAAkD3Q,KAAlD;AACA,mBAAOwK,IAAI,CAAChJ,KAAL,CAAWC,IAAX,EAAiBkP,KAAjB,EAAwB5Q,GAAxB,CAAP;AACA;AAhBJ;AAqBD,OAtBD;AAuBD,KA/BD;AAgCD,GAxCD;AA0CA,MAAI;AAAE0d,IAAAA,UAAU,EAAEsB,aAAd;AAA6BzB,IAAAA,SAAS,EAAE0B;AAAxC,MAAyD3B,aAAa,CACxE7S,IADwE,EAExEmU,YAFwE,EAGxEhC,iBAHwE,CAA1E;AAMA,MAAI;AACFc,IAAAA,UAAU,EAAEwB,gBADV;AAEF3B,IAAAA,SAAS,EAAE4B;AAFT,MAGA7B,aAAa,CAAC7S,IAAD,EAAOoU,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;AAIAzU,EAAAA,IAAI,CAAC6U,mBAAL,GAA2B,CAAC,EAAEN,aAAa,IAAIE,gBAAnB,CAA5B;AACAxU,EAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,yBAAwB9F,EAAG,MAA9C;AAEA8I,EAAAA,KAAK,CAAC0S,MAAN,CAAc,GAAExb,EAAG,KAAnB,IAA4B;MACxBwd,SAAS,GAAI,KAAIA,SAAU,EAAlB,GAAsB,EAAG;MAClCC,YAAY,GAAI,2BAA0BA,YAAa,GAA3C,GAAgD,EAAG;OAFnE;AAIA3U,EAAAA,KAAK,CAAC2S,WAAN,CAAkB3V,IAAlB,CAAwB,GAAE9F,EAAG,KAA7B;AACD,CAzED;;ACnQO,IAAI4I,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAAC+O,QAAL,IAAiB/O,IAAI,CAAC+O,QAAL,CAAc7I,IAAd,CAAmBiJ,KAAK,IAAIA,KAAK,CAAC2F,MAAlC,CAArB,EAAgE;AAC9D7U,IAAAA,KAAK,CAAC8U,WAAN,GAAoB,IAApB;AACA9U,IAAAA,KAAK,CAAC+U,OAAN,GAAgB,EAAhB;AACAhV,IAAAA,IAAI,CAAC+O,QAAL,CACG/Y,MADH,CACUmZ,KAAK,IAAIA,KAAK,CAAC2F,MADzB,EAEG1f,OAFH,CAEW+Z,KAAK,IAAIlP,KAAK,CAAC+U,OAAN,CAAc/X,IAAd,CAAmBkS,KAAK,CAAC2F,MAAzB,CAFpB;AAGD,GAND,MAMO,IAAI9U,IAAI,CAAC8U,MAAL,IAAe,CAAC3X,MAApB,EAA4B;AACjC8C,IAAAA,KAAK,CAAC8U,WAAN,GAAoB,IAApB;AACA9U,IAAAA,KAAK,CAAC+U,OAAN,GAAgB,EAAhB;AACA/U,IAAAA,KAAK,CAAC+U,OAAN,CAAc/X,IAAd,CAAmB+C,IAAI,CAAC8U,MAAxB;AACD;AACF,CAZM;;ACAA,SAAS/U,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAI,CAACD,IAAI,CAACiJ,MAAN,IAAgB,gBAAgBjJ,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAtD,EAA4D;AAE5DmB,EAAAA,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAlB,CAAuBoW,UAAvB,GAAoC,MAApC;AACD;;ACFM,SAASlV,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC/B,IAAL,KAAc,KAAlB,EAAyB;AACvB,QAAI,CAACd,MAAM,CAAC8M,OAAZ,EAAqB;AACnBhK,MAAAA,KAAK,CAACiV,OAAN,GAAgB,IAAhB;AACD,KAHsB;;;AAMvBjV,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,IAAGE,MAAM,CAAC2U,SAAP,GAAmB,UAAnB,GAAgC,KAAM,IAAGjM,IAAI,CAAC7F,IAAI,CAACxK,KAAN,CAAa,EADhE;AAGA,WAAO,IAAP;AACD;AACF;;ACJD,IAAI2f,gCAAgC,GAAG;AACrC1e,EAAAA,UAAU,EAAE,YADyB;AAErCoO,EAAAA,aAAa,EAAE,eAFsB;AAGrCD,EAAAA,aAAa,EAAE;AAHsB,CAAvC;AAMA,AAAO,SAAS7E,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MACE,CAAC+J,OAAO,CAAChK,IAAD,CAAR,IACA,CAAC7C,MAAM,CAAC8M,OADR,IAECe,KAAK,CAAC7N,MAAD,CAAL,IAAiB8C,KAAK,CAACmT,aAFxB,IAGAjW,MAAM,CAACc,IAAP,KAAgB,UAJlB,EAME;AAEF,MAAImX,IAAI,GAAGxP,MAAM,CAAC5F,IAAD,CAAjB;;AAEA,MAAI,CAACoV,IAAD,IAASnV,KAAK,CAACmT,aAAnB,EAAkC;AAChC,QAAIiC,SAAS,GAAGF,gCAAgC,CAACnV,IAAI,CAAC/B,IAAN,CAAhD;;AACA,QAAIoX,SAAJ,EAAe;AACbD,MAAAA,IAAI,GAAGxP,MAAM,CAACmB,OAAO,CAAC5J,MAAD,EAASkY,SAAT,CAAR,CAAb;AACD;AACF;;AAED,MAAI;AAAE3D,IAAAA,OAAF;AAAW4D,IAAAA,SAAX;AAAsB,OAAG3D;AAAzB,MAA8C1R,KAAK,CAAC2R,mBAAN,CAChD5R,IADgD,EAEhD7C,MAFgD,EAGhD8C,KAHgD,EAIhDmV,IAJgD,CAAlD;;AAOA,MAAI1D,OAAJ,EAAa;AACX/W,IAAAA,MAAM,CAAC6K,IAAP,CAAYmM,gBAAZ,EAA8Bvc,OAA9B,CAAsCyR,CAAC,IACrC5G,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAG4J,CAAE,IAAGuB,IAAI,CAACuJ,gBAAgB,CAAC9K,CAAD,CAAjB,EAAsB7G,IAAtB,CAA4B,EAA3D,CADF;AAGD,GAJD,MAIO;AACL,QAAI6R,iBAAiB,GACnB1U,MAAM,IAAI6C,IAAI,CAAC8R,SAAf,GACIhM,eAAe,CAAC9F,IAAD,EAAO0J,YAAY,CAAC1J,IAAD,CAAnB,CADnB,GAEI,KAHN;AAIA,QAAI+R,MAAM,GACRqD,IAAI,IAAIE,SAAR,IAAqBzD,iBAArB,GACI1U,MAAM,CAACnG,KAAP,CAAa2V,OADjB,GAEIxP,MAAM,CAACnG,KAAP,CAAaya,MAHnB;AAKA9W,IAAAA,MAAM,CAACqX,MAAP,CAAcD,MAAM,CAACrI,YAAY,CAAC1J,IAAD,CAAb,CAApB,EAA0C2R,gBAA1C;AACD;;AAED,SAAO,IAAP;AACD;;AClDD,IAAI4D,gBAAgB,GAAG,CAAC/f,KAAD,EAAQyB,IAAR,KAAiB;AACtC,UAAQA,IAAR;AACE,SAAK,SAAL;AACE,aAAOzB,KAAK,GAAG,GAAf;;AACF,SAAK,MAAL;AACE,aAAQ,eAAcA,KAAM,IAA5B;;AACF,SAAK,MAAL;AACE,UAAIggB,UAAU,GAAGhgB,KAAK,CAACoE,KAAN,CAAY,GAAZ,CAAjB;AACA,UAAI6b,OAAO,GAAI,sBAAf,CAFF;;AAIED,MAAAA,UAAU,CAACpgB,OAAX,CAAmBsgB,GAAG,IAAKD,OAAO,IAAK,KAAIE,QAAQ,CAACD,GAAD,EAAM,EAAN,CAAU,EAA7D;AACA,aAAQ,GAAED,OAAQ,GAAlB;;AACF;AACE,aAAOjgB,KAAP;AAZJ;AAcD,CAfD;;AAiBA,IAAIogB,yBAAyB,GAAG,SAAhC;AAEA,AAAO,SAAS7V,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC/B,IAAL,KAAc,MAAd,IAAwBd,MAAM,CAACc,IAAP,KAAgB,MAA5C,EAAoD;AAClD,QAAIgC,KAAK,CAAC4I,IAAN,IAAc7I,IAAI,CAACxK,KAAL,KAAe,aAAjC,EAAgD;AAC9C2H,MAAAA,MAAM,CAACqS,gBAAP,GAA0B,cAA1B;AACD,KAFD,MAEO,IAAIvE,eAAe,CAACjL,IAAD,EAAO7C,MAAP,CAAnB,EAAmC;AACxCA,MAAAA,MAAM,CAACqS,gBAAP,GAA0B3J,IAAI,CAAC6C,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAnB,CAA9B;AACD,KAFM,MAEA,IAAI2F,MAAM,CAAC5F,IAAD,CAAV,EAAkB;AACvB7C,MAAAA,MAAM,CAACqS,gBAAP,GAA0B3J,IAAI,CAAC7F,IAAI,CAACxK,KAAN,CAA9B;AACD,KAFM,MAEA,IAAI0V,SAAS,CAAClL,IAAD,EAAO7C,MAAP,CAAb,EAA6B;AAClCA,MAAAA,MAAM,CAACqS,gBAAP,GAA0BnE,eAAe,CAACrL,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAzC;AACD,KAFM,MAEA,IAAI9C,MAAM,CAAC0Y,cAAP,CAAsB,QAAtB,CAAJ,EAAqC;AAC1C,UAAI5e,IAAI,GAAG0D,MAAM,CAAC6K,IAAP,CAAYrI,MAAM,CAAC2X,MAAnB,EAA2B,CAA3B,CAAX;AACA3X,MAAAA,MAAM,CAACqS,gBAAP,GAA2B,IAAGvY,IAAK,uCAAsCse,gBAAgB,CACvFvV,IAAI,CAACxK,KADkF,EAEvFyB,IAFuF,CAGvF,IAHF;AAID,KANM,MAMA,IAAI2e,yBAAyB,CAACrU,IAA1B,CAA+BvB,IAAI,CAACxK,KAApC,CAAJ,EAAgD;AACrD2H,MAAAA,MAAM,CAACqS,gBAAP,GAA2B,KAAIxP,IAAI,CAACxK,KAAM,IAA1C;AACD,KAFM,MAEA;AACL2H,MAAAA,MAAM,CAACqS,gBAAP,GAA0BxP,IAAI,CAACxK,KAA/B;AACD;;AAED,WAAO,IAAP;AACD;AACF;;ACpDM,SAASuK,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACiK,OAAL,IAAgB,CAAChK,KAAK,CAAC/C,QAA3B,EAAqC,OADI;AAIzC;;AACA+C,EAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,aAAYgD,KAAK,CAAC/C,QAAS,IAAG8C,IAAI,CAAC/B,IAAK,GAA3D;AACD;;ACND,IAAI6X,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,CAAC9V,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KACb,CAAC6V,SAAS,CAAC5f,QAAV,CAAmB8J,IAAI,CAAC/B,IAAL,CAAUgT,WAAV,EAAnB,CADH;;ACNO,SAASlR,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAT,EAAqB,OAAO,KAAP;AAErB6V,EAAAA,OAAA,CAAsB/V,IAAtB,EAA4B7C,MAA5B,EAAoC8C,KAApC;AACA+V,EAAAA,OAAA,CAA0BhW,IAA1B,AAAA;AACAiW,EAAAA,OAAA,CAAsBjW,IAAtB,EAA4B7C,MAA5B,EAAoC8C,KAApC;AACAiW,EAAAA,OAAA,CAAqBlW,IAArB,EAA2B7C,MAA3B,EAAmC8C,KAAnC;AACAkW,EAAAA,OAAA,CAAuBnW,IAAvB,EAA6B7C,MAA7B,EAAqC8C,KAArC;AAEAD,EAAAA,IAAI,CAACoH,UAAL,CAAgBhS,OAAhB,CAAwBqS,QAAQ,IAAI;AAClC,QACEA,QAAQ,CAACxJ,IAAT,KAAkB,MAAlB,IACAwJ,QAAQ,CAACxJ,IAAT,KAAkB,IADlB,IAEAwJ,QAAQ,CAACxJ,IAAT,KAAkB,MAFlB,IAGAwJ,QAAQ,CAACxJ,IAAT,KAAkB,QAHlB,IAIAwJ,QAAQ,CAACS,IAAT,CAAckO,oBAJd,IAKC,CAACC,uBAAuB,CAAC5O,QAAD,AAAA,CAAxB,IAAmDzH,IAAI,CAACiK,OALzD,IAMCxC,QAAQ,CAACxJ,IAAT,KAAkB,MAAlB,KACE+B,IAAI,CAAC/B,IAAL,KAAc,MAAd,IAAwB+B,IAAI,CAAC/B,IAAL,KAAc,OADxC,CAND,IAQCwJ,QAAQ,CAACxJ,IAAT,KAAkB,KAAlB,IAA2Bd,MAAM,CAACkN,MARnC,IASC5C,QAAQ,CAACxJ,IAAT,KAAkB,MAAlB,IAA4B+B,IAAI,CAACqK,MATlC,IAUC5C,QAAQ,CAACxJ,IAAT,KAAkB,OAAlB,IAA6BuM,QAAQ,CAACxK,IAAD,CAXxC,EAaE;AAEF,KAACsW,OAAA,CAAkB7O,QAAlB,EAA4BzH,IAA5B,EAAkCC,KAAlC,CAAD,IACE,CAACsW,OAAA,CAAoB9O,QAApB,EAA8BzH,IAA9B,EAAoCC,KAApC,CADH,IAEE,CAACuW,OAAA,CAAmB/O,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAFH,IAGE+O,OAAA,CAAmBvH,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAHF;AAID,GApBD;AAqBAwW,EAAAA,OAAA,CAAgCzW,IAAhC,AAAA;AAEA+V,EAAAA,OAAA,CAAsB/V,IAAtB,EAA4B7C,MAA5B,EAAoC8C,KAApC;AACA+V,EAAAA,OAAA,CAA0BhW,IAA1B,EAAgC7C,MAAhC,EAAwC8C,KAAxC;AACD;;AC/CM,IAAIF,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAIyW,SAAS,GAAG1W,IAAI,CAACoG,EAAL,IAAWpG,IAAI,CAAC/B,IAAhC;;AAEA,MAAI,OAAOgC,KAAK,CAAC0W,OAAN,CAAcD,SAAd,CAAP,KAAoC,QAAxC,EAAkD;AAChDzW,IAAAA,KAAK,CAAC0W,OAAN,CAAcD,SAAd;AACAA,IAAAA,SAAS,GAAI,GAAEA,SAAU,IAAGzW,KAAK,CAAC0W,OAAN,CAAcD,SAAd,CAAyB,EAArD;AACD,GAHD,MAGO;AACLzW,IAAAA,KAAK,CAAC0W,OAAN,CAAcD,SAAd,IAA2B,CAA3B;AACD;;AAED1W,EAAAA,IAAI,CAACG,MAAL,GAAcuW,SAAd;AACD,CAXM;;ACEA,SAAS3W,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAI,CAACmK,OAAO,CAACpK,IAAD,CAAZ,EAAoB;AAEpBC,EAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,0IADH;AAGD;AAED,AAAO,SAASsS,OAAT,CAAevP,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAI,CAACmK,OAAO,CAACpK,IAAD,CAAZ,EAAoB;AAEpBC,EAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,gBAAnB;AACD;;ACEM,IAAI8C,OAAK,GAAG,CACjB6W,OADiB,EAEjBC,OAFiB,EAGjBC,OAHiB,EAIjBC,OAJiB,EAKjBC,OALiB,EAMjBC,OANiB,EAOjBC,OAPiB,EAQjBC,OARiB,EASjBC,OATiB,EAUjBC,KAViB,EAWjBC,OAXiB,EAYjBC,OAZiB,EAajBC,OAbiB,EAcjBC,OAdiB,CAAZ;AAiBP,AAAO,IAAIlI,OAAK,GAAG,CACjBkI,OADiB,EAEjBC,KAFiB,EAGjBF,OAHiB,EAIjBT,OAJiB,EAKjBC,OALiB,EAMjBF,OANiB,CAAZ;;;;;;;;ACzBQ,SAASlF,mBAAT,CAA6B5R,IAA7B,EAAmC7C,MAAnC,EAA2C8C,KAA3C,EAAkDmV,IAAlD,EAAwD;AACrE,MAAIuC,SAAS,GAAGC,YAAY,CAAC5X,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAA5B;;AAEA,MAAI0X,SAAJ,EAAe;AACb,YAAQ3X,IAAI,CAAC/B,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;AACLqX,UAAAA,SAAS,EAAE,IADN;AAEL1J,UAAAA,SAAS,EAAG,IAAGiM,YAAY,CAAC7X,IAAD,EAAO7C,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,cAAI2a,MAAM,GAAGC,SAAS,CAAC/X,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAtB;AACA,cAAI1K,GAAG,GAAGoF,MAAM,CAAC6K,IAAP,CAAYsS,MAAZ,EAAoB,CAApB,CAAV;AAEA,iBAAO;AACLxC,YAAAA,SAAS,EAAE,IADN;AAEL,aAAC/f,GAAD,GAAQ,IAAGuiB,MAAM,CAACviB,GAAD,CAAM;AAFlB,WAAP;AAID;;AAED;AACE,eAAO;AACL+f,UAAAA,SAAS,EAAE,IADN;AAEL,WAACtV,IAAI,CAAC/B,IAAN,GAAa0Z;AAFR,SAAP;AA9BJ;AAmCD;;AAED,UAAQ3X,IAAI,CAAC/B,IAAb;AACE,SAAK,WAAL;AACE,aAAO;AACL+Z,QAAAA,eAAe,EAAEC,UAAU,CAACjY,IAAD,EAAOoV,IAAP;AADtB,OAAP;;AAIF,SAAK,iBAAL;AACE,aAAO;AACL8C,QAAAA,eAAe,EAAE9C,IAAI,GAChB,YAAW+C,KAAK,CAACnY,IAAD,CAAO,MADP,GAEhB,QAAOA,IAAI,CAACxK,KAAM;AAHlB,OAAP;;AAMF,SAAK,YAAL;AACE,aAAO;AACLiB,QAAAA,UAAU,EAAE2e,IAAI,GAAG+C,KAAK,CAACnY,IAAD,CAAR,GAAiBrJ,oBAAoB,CAACqJ,IAAI,CAACxK,KAAN;AADhD,OAAP;;AAIF,SAAK,aAAL;AACA,SAAK,YAAL;AACA,SAAK,eAAL;AACA,SAAK,eAAL;AACA,SAAK,cAAL;AACA,SAAK,aAAL;AACE,aAAOuiB,SAAS,CAAC/X,IAAD,EAAO7C,MAAP,EAAe8C,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;AAAE2L,QAAAA,SAAS,EAAEiM,YAAY,CAAC7X,IAAD,EAAO7C,MAAP,AAAA;AAAzB,OAAP;;AAEF,SAAK,kBAAL;AACA,SAAK,kBAAL;AACE,aAAO;AACLib,QAAAA,eAAe,EAAEC,kBAAkB,CAACrY,IAAD,EAAO7C,MAAP,AAAA;AAD9B,OAAP;;AAIF,SAAK,QAAL;AACE,aAAO;AACLmI,QAAAA,MAAM,EAAE8P,IAAI,GAAG+C,KAAK,CAACnY,IAAD,CAAR,GAAiB2V,QAAQ,CAAC3V,IAAI,CAACxK,KAAN,EAAa,EAAb;AADhC,OAAP;;AAIF;AACE,aAAO;AACL,SAACwK,IAAI,CAAC/B,IAAN,GAAaga,UAAU,CAACjY,IAAD,EAAOoV,IAAP;AADlB,OAAP;AAhDJ;AAoDD;;AAED,IAAI6C,UAAU,GAAG,CAAC9Q,IAAD,EAAOiO,IAAP,KACfA,IAAI,GAAG+C,KAAK,CAAChR,IAAD,CAAR,GAAiB4G,mBAAmB,CAAC5G,IAAD,CAD1C;;AAGA,IAAIgR,KAAK,GAAGhR,IAAI,IAAK,UAASA,IAAI,CAAClJ,IAAK,IAAxC;;AAEA,IAAI2Z,YAAY,GAAG,CAACzQ,IAAD,EAAOmR,KAAP,EAAcrY,KAAd,KAAwB;AACzC,MACEkH,IAAI,CAAChB,KAAL,KAAe,WAAf,IACAgB,IAAI,CAAChB,KAAL,KAAe,WADf,IAEAgB,IAAI,CAAChB,KAAL,KAAe,YAHjB,EAKE,OAAO,KAAP;AAEF,MAAIoS,eAAe,GAAG7P,kBAAkB,CAACvB,IAAD,EAAOmR,KAAP,EAAcrY,KAAd,CAAxC;AACA,SAAOsY,eAAe,IAAIJ,KAAK,CAAChR,IAAD,CAA/B;AACD,CAVD;;AAYA,IAAIiF,cAAY,GAAG,CAACjF,IAAD,EAAOmR,KAAP,EAAcrY,KAAd,EAAqBoI,IAAI,GAAG,EAA5B,KAAmC;AACpD,MAAI,CAAClB,IAAL,EAAW,OAAO,KAAP;AAEX,MAAIwQ,SAAS,GAAGC,YAAY,CAACzQ,IAAD,EAAOmR,KAAP,EAAcrY,KAAd,CAA5B;AAEA,MAAI0X,SAAJ,EAAe,OAAOA,SAAP;;AAEf,MAAIxQ,IAAI,CAACe,IAAL,CAAUC,IAAd,EAAoB;AAClB,WAAQ,SAAQhB,IAAI,CAAClJ,IAAK,GAA1B;AACD;;AAED,SAAO,OAAOkJ,IAAI,CAAC3R,KAAZ,KAAsB,QAAtB,GAAkC,GAAE2R,IAAI,CAAC3R,KAAM,GAAE6S,IAAK,EAAtD,GAA0DlB,IAAI,CAAC3R,KAAtE;AACD,CAZD;;AAcA,IAAIuiB,SAAS,GAAG,CAAC/X,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AACvC,MAAIuY,MAAM,GAAGrb,MAAM,CAACc,IAAP,KAAgB,MAA7B;AAEA,MAAIwa,WAAW,GAAG1R,OAAO,CAAC5J,MAAD,EAAS,aAAT,EAAwB6C,IAAI,CAACmG,KAA7B,CAAzB;AACA,MAAIrB,UAAU,GAAGiC,OAAO,CAAC5J,MAAD,EAAS,YAAT,EAAuB6C,IAAI,CAACmG,KAA5B,CAAxB;AACA,MAAItB,aAAa,GAAGkC,OAAO,CAAC5J,MAAD,EAAS,eAAT,EAA0B6C,IAAI,CAACmG,KAA/B,CAA3B;AACA,MAAIvB,aAAa,GAAGmC,OAAO,CAAC5J,MAAD,EAAS,eAAT,EAA0B6C,IAAI,CAACmG,KAA/B,CAA3B;AACA,MAAIpB,YAAY,GAAGgC,OAAO,CAAC5J,MAAD,EAAS,cAAT,EAAyB6C,IAAI,CAACmG,KAA9B,CAA1B;AACA,MAAIuS,WAAW,GAAG3R,OAAO,CAAC5J,MAAD,EAAS,aAAT,EAAwB6C,IAAI,CAACmG,KAA7B,CAAzB;AACA,MAAIwS,gBAAgB,GAAGvM,cAAY,CAACsM,WAAD,EAAcvb,MAAd,EAAsB8C,KAAtB,CAAnC;AAEA,MAAIzK,KAAK,GAAG,CACV,CAACgjB,MAAD,KACG,OAAOG,gBAAP,KAA4B,QAA5B,IAAwC,QAAQpX,IAAR,CAAaoX,gBAAb,CAAxC,GACGA,gBADH,GAEGA,gBAAgB,IAAI,OAH1B,CADU,EAKVvM,cAAY,CAACvH,aAAD,EAAgB1H,MAAhB,EAAwB8C,KAAxB,EAA+B,IAA/B,CALF,EAMVmM,cAAY,CAACxH,aAAD,EAAgBzH,MAAhB,EAAwB8C,KAAxB,EAA+B,IAA/B,CANF,EAOVmM,cAAY,CAACtH,UAAD,EAAa3H,MAAb,EAAqB8C,KAArB,EAA4B,IAA5B,CAPF,EAQV,CAACuY,MAAD,IAAWpM,cAAY,CAACrH,YAAD,EAAe5H,MAAf,EAAuB8C,KAAvB,EAA8B,IAA9B,CARb,EASVmM,cAAY,CAACqM,WAAD,EAActb,MAAd,EAAsB8C,KAAtB,CATF,EAWTjK,MAXS,CAWF8R,OAXE,EAYT7S,IAZS,CAYJ,GAZI,EAaT6B,OAbS,CAaD,IAbC,EAaK,EAbL,CAAZ;;AAeA,MACE8O,MAAM,CAAC6S,WAAD,CAAN,IACA7S,MAAM,CAACd,UAAD,CADN,IAEAc,MAAM,CAAChB,aAAD,CAFN,IAGAgB,MAAM,CAACf,aAAD,CAHN,IAIAe,MAAM,CAACb,YAAD,CAJN,IAKAa,MAAM,CAAC8S,WAAD,CANR,EAOE;AACAljB,IAAAA,KAAK,GAAI,KAAIA,KAAM,IAAnB;AACD;;AAED,SAAO;AACL,KAACgjB,MAAM,GAAG,YAAH,GAAkB,WAAzB,GAAuChjB;AADlC,GAAP;AAGD,CAxCD;;AA0CA,IAAIojB,iBAAiB,GAAG,CAACzR,IAAD,EAAOhK,MAAP,EAAekL,IAAf,KAAwB;AAC9C,MAAI,CAAClB,IAAL,EAAW,OAAO,KAAP;AACX,SAAQ,GAAEA,IAAI,CAAClJ,IAAK,IAAGmO,cAAY,CAACjF,IAAD,EAAOhK,MAAP,EAAekL,IAAf,CAAqB,GAAxD;AACD,CAHD;;AAKA,IAAIwP,YAAY,GAAG,CAAC7X,IAAD,EAAO7C,MAAP,KAAkB;AACnC,MAAImH,MAAM,GAAGyC,OAAO,CAAC5J,MAAD,EAAS,QAAT,EAAmB6C,IAAI,CAACmG,KAAxB,CAApB;AACA,MAAI5B,OAAO,GAAGwC,OAAO,CAAC5J,MAAD,EAAS,SAAT,EAAoB6C,IAAI,CAACmG,KAAzB,CAArB;AACA,MAAI3B,OAAO,GAAGuC,OAAO,CAAC5J,MAAD,EAAS,SAAT,EAAoB6C,IAAI,CAACmG,KAAzB,CAArB;AACA,MAAI1B,KAAK,GAAGsC,OAAO,CAAC5J,MAAD,EAAS,OAAT,EAAkB6C,IAAI,CAACmG,KAAvB,CAAnB;AACA,MAAIzB,MAAM,GAAGqC,OAAO,CAAC5J,MAAD,EAAS,QAAT,EAAmB6C,IAAI,CAACmG,KAAxB,CAApB;AACA,MAAIxB,MAAM,GAAGoC,OAAO,CAAC5J,MAAD,EAAS,QAAT,EAAmB6C,IAAI,CAACmG,KAAxB,CAApB;AACA,MAAIhB,UAAU,GAAG4B,OAAO,CAAC5J,MAAD,EAAS,YAAT,EAAuB6C,IAAI,CAACmG,KAA5B,CAAxB;AACA,MAAIf,UAAU,GAAG2B,OAAO,CAAC5J,MAAD,EAAS,YAAT,EAAuB6C,IAAI,CAACmG,KAA5B,CAAxB;AAEA,MAAI3Q,KAAK,GAAG,CACVojB,iBAAiB,CAACtU,MAAD,EAASnH,MAAT,EAAiB,KAAjB,CADP,EAEVyb,iBAAiB,CAACrU,OAAD,EAAUpH,MAAV,EAAkB,KAAlB,CAFP,EAGVyb,iBAAiB,CAACpU,OAAD,EAAUrH,MAAV,EAAkB,KAAlB,CAHP,EAIVyb,iBAAiB,CAACnU,KAAD,EAAQtH,MAAR,EAAgB,EAAhB,CAJP,EAKVyb,iBAAiB,CAAClU,MAAD,EAASvH,MAAT,EAAiB,EAAjB,CALP,EAMVyb,iBAAiB,CAACjU,MAAD,EAASxH,MAAT,EAAiB,EAAjB,CANP,EAQVyb,iBAAiB,CAACzT,UAAD,EAAahI,MAAb,EAAqB,IAArB,CARP,EASVyb,iBAAiB,CAACxT,UAAD,EAAajI,MAAb,EAAqB,IAArB,CATP,EAWTnH,MAXS,CAWF8R,OAXE,EAYT7S,IAZS,CAYJ,GAZI,CAAZ;;AAcA,MACE2Q,MAAM,CAACtB,MAAD,CAAN,IACAsB,MAAM,CAACrB,OAAD,CADN,IAEAqB,MAAM,CAACpB,OAAD,CAFN,IAGAoB,MAAM,CAACnB,KAAD,CAHN,IAIAmB,MAAM,CAAClB,MAAD,CAJN,IAKAkB,MAAM,CAACjB,MAAD,CALN,IAMAiB,MAAM,CAACT,UAAD,CANN,IAOAS,MAAM,CAACR,UAAD,CARR,EASE;AACA5P,IAAAA,KAAK,GAAI,KAAIA,KAAM,IAAnB;AACD,GAnCkC;AAsCnC;;;AACA,SAAOA,KAAK,CAACsB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAP;AACD,CAxCD;;AA0CA,IAAIuhB,kBAAkB,GAAG,CAACrY,IAAD,EAAO7C,MAAP,KAAkB;AACzC,MAAI0b,gBAAgB,GAAG9R,OAAO,CAAC5J,MAAD,EAAS,kBAAT,EAA6B6C,IAAI,CAACmG,KAAlC,CAA9B;AACA,MAAI2S,gBAAgB,GAAG/R,OAAO,CAAC5J,MAAD,EAAS,kBAAT,EAA6B6C,IAAI,CAACmG,KAAlC,CAA9B;AACA,MAAI3Q,KAAK,GAAG,CACV4W,cAAY,CACVyM,gBADU,EAEV1b,MAFU,EAGV4b,MAAM,CAACC,SAAP,CAAiBH,gBAAgB,CAACrjB,KAAlC,IAA2C,IAA3C,GAAkD,EAHxC,CADF,EAMV4W,cAAY,CACV0M,gBADU,EAEV3b,MAFU,EAGV4b,MAAM,CAACC,SAAP,CAAiBF,gBAAgB,CAACtjB,KAAlC,IAA2C,IAA3C,GAAkD,EAHxC,CANF,EAYTQ,MAZS,CAYF8R,OAZE,EAaT7S,IAbS,CAaJ,GAbI,CAAZ;;AAeA,MAAI2Q,MAAM,CAACiT,gBAAD,CAAN,IAA4BjT,MAAM,CAACkT,gBAAD,CAAtC,EAA0D;AACxDtjB,IAAAA,KAAK,GAAI,KAAIA,KAAM,IAAnB;AACD;;AACD,SAAOA,KAAP;AACD,CAtBD;;AC7NA,iBAAe,CAAC;AAAEmd,EAAAA,MAAF;AAAUC,EAAAA;AAAV,CAAD,KAA6B;AAC1C,MAAI,CAAC9L,OAAO,CAAC6L,MAAD,CAAZ,EAAsB,OAAO,EAAP;AAEtB,MAAIrD,GAAG,GAAG,CAAE,iBAAF,CAAV;AAEAsD,EAAAA,WAAW,CAACxd,OAAZ,CAAoB+B,EAAE,IAAI;AACxBmY,IAAAA,GAAG,CAACrS,IAAJ,CAAU,UAAS9F,EAAG,MAAKwb,MAAM,CAACxb,EAAD,CAAK,EAAtC;AACD,GAFD;AAIA,SAAOmY,GAAG,CAACra,IAAJ,CAAS,IAAT,CAAP;AACD,CAVD;;ACaA,IAAIgkB,KAAK,GAAG1S,GAAG,IAAI,eAAehF,IAAf,CAAoBgF,GAApB,CAAnB;;AAEA,SAAS2S,cAAT,CAAwBlZ,IAAxB,EAA8B7C,MAA9B,EAAsC8C,KAAtC,EAA6C;AAC3C,MAAIgG,MAAM,GAAG6E,SAAS,CAAC9K,IAAD,EAAO7C,MAAP,CAAtB;;AAEA,MAAI8I,MAAM,KAAKgT,KAAK,CAACjZ,IAAI,CAACxK,KAAN,CAAL,IAAqBwK,IAAI,CAACkI,IAAL,CAAUC,IAApC,CAAV,EAAqD;AACnD,WAAOtC,IAAI,CAAC6C,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAnB,CAAX;AACD,GAFD,MAEO,IAAIgZ,KAAK,CAACjZ,IAAI,CAACxK,KAAN,CAAL,IAAqBwK,IAAI,CAACkI,IAAL,CAAUC,IAAnC,EAAyC;AAC9C,QAAInI,IAAI,CAACsH,YAAL,IAAqB,CAAC2R,KAAK,CAACjZ,IAAI,CAACsH,YAAN,CAA/B,EAAoD;AAClDrH,MAAAA,KAAK,CAACkZ,KAAN,CAAY/jB,OAAZ,CAAoByF,IAAI,IAAI;AAC1B,YAAIA,IAAI,CAACyM,YAAL,KAAsBtH,IAAI,CAACsH,YAA/B,EAA6C;AAC3CzM,UAAAA,IAAI,CAAC5D,IAAL,GAAY,QAAZ;AACA,cAAIgH,IAAI,GAAG8M,WAAW,CAAClQ,IAAI,CAACyM,YAAN,CAAtB;;AACA,cAAI,CAACrH,KAAK,CAAC4K,MAAN,CAAa3U,QAAb,CAAsB2E,IAAI,CAACyM,YAA3B,CAAL,EAA+C;AAC7CrH,YAAAA,KAAK,CAAC4K,MAAN,CAAa5N,IAAb,CAAkB;AAChBgB,cAAAA,IADgB;AAEhB/G,cAAAA,IAAI,EAAE2D,IAAI,CAACyM;AAFK,aAAlB;AAID;;AACDzM,UAAAA,IAAI,CAACyM,YAAL,GAAoBrJ,IAApB;AACD;AACF,OAZD;AAaD;;AACD,WAAOmK,IAAI,CAACpI,IAAI,CAACxK,KAAN,CAAX;AACD,GAjBM,MAiBA;AACL,QAAIyQ,MAAJ,EAAY;AACVyE,MAAAA,gBAAgB,CAACzK,KAAD,EAAQgG,MAAM,CAACsD,WAAf,EAA4BtD,MAAM,CAAC0E,KAAnC,CAAhB;AACD;;AACD,QAAI1M,IAAI,GAAG8M,WAAW,CAAC/K,IAAI,CAACxK,KAAN,CAAtB;;AACA,QAAI,CAACyK,KAAK,CAAC4K,MAAN,CAAa3U,QAAb,CAAsB8J,IAAI,CAACxK,KAA3B,CAAL,EAAwC;AACtCyK,MAAAA,KAAK,CAAC4K,MAAN,CAAa5N,IAAb,CAAkB;AAChBgB,QAAAA,IADgB;AAEhB/G,QAAAA,IAAI,EAAE8I,IAAI,CAACxK;AAFK,OAAlB;AAID;;AACD,WAAOyQ,MAAM,GACTJ,IAAI,CACFyD,uBAAuB,CAACrD,MAAM,CAAC0C,WAAR,EAAqB1C,MAAM,CAACsD,WAA5B,EAAyCtL,IAAzC,CADrB,CADK,GAIR,IAAGA,IAAK,GAJb;AAKD;AACF;;AAED,IAAIqK,cAAY,GAAG,2DAAnB;AACA,IAAI8Q,cAAc,GAAG,wBAArB;AAEA,AAAe,SAASzK,mBAAT,CAA6B3O,IAA7B,EAAmC7C,MAAnC,EAA2C8C,KAA3C,EAAkD;AAC/D,MACEA,KAAK,CAAC4I,IAAN,KACC7I,IAAI,CAACxK,KAAL,KAAe,cAAf,IACCwK,IAAI,CAACxK,KAAL,KAAe,aADhB,IAECwK,IAAI,CAACxK,KAAL,KAAe,gBAFhB,IAGCwK,IAAI,CAACxK,KAAL,KAAe,gBAHhB,IAICwK,IAAI,CAACxK,KAAL,KAAe,iBAJhB,IAKCwK,IAAI,CAACxK,KAAL,KAAe,wBALhB,IAMCwK,IAAI,CAACxK,KAAL,KAAe,eANhB,IAOCwK,IAAI,CAACxK,KAAL,KAAe,sBAPhB,IAQCwK,IAAI,CAACxK,KAAL,KAAe,gBATjB,CADF,EAWE;AACA,WAAO;AACL,OAACwK,IAAI,CAAC/B,IAAN,GAAc,IAAG+B,IAAI,CAACxK,KAAL,CAAWsB,OAAX,CAAmB,QAAnB,EAA6B,OAA7B,CAAsC;AADlD,KAAP;AAGD,GAfD,MAeO,IAAIgS,oBAAoB,CAAC3L,MAAD,CAApB,IAAgCmL,cAAY,CAAC/G,IAAb,CAAkBvB,IAAI,CAACxK,KAAvB,CAApC,EAAmE;AACxE,WAAO;AACL,OAACwK,IAAI,CAAC/B,IAAN,GAAc,IAAG+B,IAAI,CAACxK,KAAL,CAAWsB,OAAX,CAAmB,QAAnB,EAA6B,aAA7B,CAA4C;AADxD,KAAP;AAGD,GAJM,MAIA,IAAI2T,aAAa,CAACzK,IAAD,EAAO7C,MAAP,CAAjB,EAAiC;AACtC,WAAO;AACLlJ,MAAAA,GAAG,EAAEilB,cAAc,CAAClZ,IAAD,EAAO7C,MAAP,EAAe8C,KAAf;AADd,KAAP;AAGD,GAJM,MAIA,IAAI9C,MAAM,CAAC8M,OAAP,IAAkBjK,IAAI,CAAC/B,IAAL,KAAc,YAApC,EAAkD;AACvD,WAAO;AACLob,MAAAA,QAAQ,EAAEjR,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AADT,KAAP;AAGD,GAJM,MAIA,IAAI0I,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAtB,EAA6C;AAClD,WAAO;AACL,OAACD,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACM,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAnB;AADZ,KAAP;AAGD,GAJM,MAIA,IAAI,WAAWsB,IAAX,CAAgBvB,IAAI,CAAC/B,IAArB,KAA8B+B,IAAI,CAACsZ,QAAL,KAAkB,WAApD,EAAiE;AACtE,QAAIvQ,QAAQ,GAAGC,WAAW,CAAChJ,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAA1B;AACAA,IAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACAvQ,IAAAA,KAAK,CAACgO,SAAN,GAAkB,IAAlB;AAEA,QAAI7P,GAAG,GAAG;AACR,OAAC4B,IAAI,CAAC/B,IAAN,GAAc,qBAAoB8K,QAAS;AADnC,KAAV;;AAIA,QAAI,CAAC5L,MAAM,CAAC8M,OAAR,IAAmBmP,cAAc,CAAC7X,IAAf,CAAoBvB,IAAI,CAAC/B,IAAzB,CAAvB,EAAuD;AACrDgC,MAAAA,KAAK,CAACsZ,OAAN,GAAgB,IAAhB;AACAnb,MAAAA,GAAG,CACD4B,IAAI,CAAC/B,IAAL,CAAUnH,OAAV,CAAkBsiB,cAAlB,EAAkC,YAAlC,CADC,CAAH,GAEK,cAAarQ,QAAS,KAF3B;AAGD;;AAED,QAAI5L,MAAM,CAAC8M,OAAP,IAAkBmP,cAAc,CAAC7X,IAAf,CAAoBvB,IAAI,CAAC/B,IAAzB,CAAtB,EAAsD;AACpDgC,MAAAA,KAAK,CAACqQ,YAAN,GAAqB,IAArB;AACAlS,MAAAA,GAAG,CAAC,KAAD,CAAH,GAAc,GAAE4B,IAAI,CAAC/B,IAAL,CAAUnH,OAAV,CAAkBsiB,cAAlB,EAAkC,WAAlC,CAA+C,MAA/D;AACD;;AAED,WAAOhb,GAAP;AACD,GAtBM,MAsBA,IAAIjB,MAAM,CAAC8M,OAAP,IAAkBmP,cAAc,CAAC7X,IAAf,CAAoBvB,IAAI,CAAC/B,IAAzB,CAAtB,EAAsD;AAC3DgC,IAAAA,KAAK,CAACqQ,YAAN,GAAqB,IAArB;AACA,WAAO;AACL,aAAQ,GAAEtQ,IAAI,CAAC/B,IAAL,CAAUnH,OAAV,CAAkBsiB,cAAlB,EAAkC,WAAlC,CAA+C,MADpD;AAEL,OAACpZ,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AAFZ,KAAP;AAID,GANM,MAMA,IACLsI,cAAY,CAAC/G,IAAb,CAAkBvB,IAAI,CAACxK,KAAvB,KACA,CAAC,CAAC0T,mBAAmB,CAAC/L,MAAD,CADrB,IAEA,CAACA,MAAM,CAAC8M,OAHH,EAIL;AACA;AACA;AACA,QAAI,YAAY1I,IAAZ,CAAiBvB,IAAI,CAACxK,KAAtB,CAAJ,EAAkC;AAChC,aAAO;AACL,SAACwK,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAL,CAAWsB,OAAX,CAAmB,QAAnB,EAA6B,EAA7B,CAAD,EAAmCkJ,IAAnC;AADZ,OAAP;AAGD,KAJD,MAIO,IAAI,aAAauB,IAAb,CAAkBvB,IAAI,CAACxK,KAAvB,CAAJ,EAAmC;AACxC,UAAIgkB,gBAAgB,GAAGtQ,mBAAmB,CAAC/L,MAAD,CAA1C;AACA,UAAIsc,cAAc,GAChB1S,OAAO,CAACyS,gBAAD,EAAmB,SAAnB,CAAP,IACAzS,OAAO,CAACyS,gBAAD,EAAmB,MAAnB,CAFT;;AAGA,UAAI,CAACC,cAAc,CAACnS,YAApB,EAAkC;AAChC,eAAO;AACL,WAACtH,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AADZ,SAAP;AAGD;;AAED,UAAI+I,QAAQ,GAAGC,WAAW,CAACyQ,cAAD,EAAiBD,gBAAjB,EAAmCvZ,KAAnC,CAA1B;AACAA,MAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACAvQ,MAAAA,KAAK,CAACsZ,OAAN,GAAgB,IAAhB;AACA,aAAO;AACL,SAACvZ,IAAI,CAAC/B,IAAN,GAAc,cAAa8K,QAAS;AAD/B,OAAP;AAGD,KAjBM,MAiBA;AACL,aAAO;AACL,SAAC/I,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AADZ,OAAP;AAGD;AACF,GAjCM,MAiCA;AACL,WAAO;AACL,OAACA,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AADZ,KAAP;AAGD;AACF;;AC3Jc,SAAS0Z,aAAT,CAAuB;AACpCC,EAAAA,OADoC;AAEpC7Z,EAAAA,eAFoC;AAGpCrG,EAAAA,IAHoC;AAIpCkC,EAAAA,SAJoC;AAKpCvC,EAAAA;AALoC,CAAvB,EAMZ;AACD,SAAO,SAASwgB,SAAT,CAAmBziB,EAAnB,EAAuBuZ,MAAvB,EAA+B;AACpC,QAAIiJ,OAAO,CAACxiB,EAAD,CAAX,EAAiB,OAAOwiB,OAAO,CAACxiB,EAAD,CAAd;AAEjB,QAAI0iB,cAAc,GAAG/Z,eAAe,CAAC3I,EAAD,EAAKsC,IAAI,CAACvC,IAAV,CAApC;AACA,QAAI2iB,cAAJ,EAAoB,OAAOA,cAAP;;AAEpB,QAAI,CAACle,SAAS,CAAClG,GAAV,CAAc0B,EAAd,CAAL,EAAwB;AACtB,YAAM,IAAI2iB,KAAJ,CACH,WAAU3iB,EAAG,6CAA4CsC,IAAI,CAACtC,EAAG,GAD9D,CAAN;AAGD;;AAED,QAAI4iB,UAAU,GAAGre,qBAAqB,CAAC;AACrCvE,MAAAA,EADqC;AAErCsC,MAAAA,IAFqC;AAGrCkC,MAAAA,SAHqC;AAIrCvC,MAAAA;AAJqC,KAAD,CAAtC;;AAMA,QAAI,CAAC2gB,UAAL,EAAiB;AACf,YAAM,IAAID,KAAJ,CACH,WAAU3iB,EAAG,6CAA4CsC,IAAI,CAACtC,EAAG,GAD9D,CAAN;AAGD;;AAED,QAAI6iB,UAAU,GAAGD,UAAU,CAAC7iB,IAA5B;;AAEA,QAAI6iB,UAAU,CAACE,KAAf,EAAsB;AACpBD,MAAAA,UAAU,GAAGD,UAAU,CAACE,KAAxB;AACD,KAFD,MAEO,IAAI,CAACF,UAAU,CAACrgB,MAAhB,EAAwB;AAC7BsgB,MAAAA,UAAU,GAAGhlB,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACuG,OAAL,CAAaye,UAAb,CAAV,EAAoC,SAApC,CAAb;AACD;;AACD,QAAIE,UAAU,GAAG9iB,UAAU,CAACqC,IAAI,CAACvC,IAAN,EAAY8iB,UAAZ,CAA3B;AAEA,WAAOtJ,MAAM,GACR,OAAMvZ,EAAG,+BAA8B+iB,UAAW,KAD1C,GAER,UAAS/iB,EAAG,UAAS+iB,UAAW,GAFrC;AAGD,GApCD;AAqCD;;AChDD,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;AAAEja,EAAAA,KAAF;AAAShC,EAAAA;AAAT,CAAD,KAAqB;AAClC,MAAIoC,MAAM,GAAGJ,KAAK,CAACI,MAAN,CAAapL,IAAb,CAAkB,EAAlB,CAAb;;AACA,MAAI0F,MAAM,CAAC6K,IAAP,CAAYvF,KAAK,CAACmL,MAAlB,EAA0B/N,MAA1B,GAAmC,CAAnC,IAAwC4C,KAAK,CAAC8U,WAAlD,EAA+D;AAC7D1U,IAAAA,MAAM,GAAI,iDAAgDA,MAAO,iBAAjE;AACD;;AAED,MAAI8Z,QAAQ,GAAG,EAAf;;AACA,MAAIla,KAAK,CAACmS,UAAV,EAAsB;AACpBzX,IAAAA,MAAM,CAAC6K,IAAP,CAAYvF,KAAK,CAACoS,UAAlB,EAA8Bjd,OAA9B,CAAsCglB,OAAO,IAAI;AAC/Czf,MAAAA,MAAM,CAACC,MAAP,CAAcqF,KAAK,CAACoS,UAAN,CAAiB+H,OAAjB,CAAd,EAAyChlB,OAAzC,CAAiDyF,IAAI,IAAI;AACvD,YAAI;AAAEwO,UAAAA,KAAF;AAAS,aAAGgR;AAAZ,YAA6Bxf,IAAI,CAACuO,SAAL,CAAehC,UAAhD;AAEA,YAAI,CAACnH,KAAK,CAACmT,aAAP,IAAwB/J,KAAK,KAAK,QAAtC,EAAgD;AAEhD,YAAIiR,MAAM,GAAG,CAAC,GAAD,EAAM,aAAN,CAAb;AACA3f,QAAAA,MAAM,CAACO,OAAP,CAAemf,YAAf,EAA6BjlB,OAA7B,CAAqC,CAAC,CAACyR,CAAD,EAAI5Q,CAAJ,CAAD,KAAY;AAC/CqkB,UAAAA,MAAM,CAACrd,IAAP,CAAa,GAAE4J,CAAE,KAAIvJ,IAAI,CAACC,SAAL,CAAetH,CAAf,CAAkB,GAAvC;AACD,SAFD;;AAIA,YAAIoT,KAAK,KAAK,QAAV,IAAsBA,KAAK,KAAK,QAApC,EAA8C;AAC5CiR,UAAAA,MAAM,CAACrd,IAAP,CAAa,oBAAmBoM,KAAK,CAACvS,OAAN,CAAc,MAAd,EAAsB,WAAtB,CAAmC,GAAnE;AACD;;AACDwjB,QAAAA,MAAM,CAACrd,IAAP,CAAY,IAAZ;AAEA,YAAIsd,OAAO,GAAG,EAAd;AACA,YAAIC,SAAS,GAAG,EAAhB;AACA7f,QAAAA,MAAM,CAACC,MAAP,CAAcC,IAAI,CAACiR,KAAnB,EAA0B1W,OAA1B,CAAkC+R,IAAI,IAAI;AACxCA,UAAAA,IAAI,CAAClB,MAAL,CAAY8B,OAAZ;AAEA,cAAIvS,KAAK,GAAG2R,IAAI,CAAClB,MAAL,CAAY2G,MAAZ,CACV,CAAC6N,OAAD,EAAUtU,KAAV,KACG,SAAQA,KAAK,CAAClI,IAAK,KAAIX,IAAI,CAACC,SAAL,CACtB4I,KAAK,CAAC3Q,KADgB,CAEtB,MAAKilB,OAAQ,EAJP,EAKVnd,IAAI,CAACC,SAAL,CAAe4J,IAAI,CAAC3R,KAApB,CALU,CAAZ;AAQA+kB,UAAAA,OAAO,CAACtd,IAAR,CAAc,GAAEK,IAAI,CAACC,SAAL,CAAe4J,IAAI,CAAClJ,IAApB,CAA0B,KAAIzI,KAAM,EAApD;AACAglB,UAAAA,SAAS,CAACvd,IAAV,CACG,GAAEK,IAAI,CAACC,SAAL,CAAe4J,IAAI,CAAClJ,IAApB,CAA0B,KAAIX,IAAI,CAACC,SAAL,CAC/B4J,IAAI,CAAClB,MAAL,CAAY,CAAZ,EAAezQ,KADgB,CAE/B,EAHJ;AAKD,SAjBD;AAmBA8kB,QAAAA,MAAM,CAACrd,IAAP,CAAa,YAAWud,SAAS,CAACvlB,IAAV,CAAe,GAAf,CAAoB,IAA5C;AACAqlB,QAAAA,MAAM,CAACrd,IAAP,CAAa,UAASsd,OAAO,CAACtlB,IAAR,CAAa,GAAb,CAAkB,IAAxC;AACAqlB,QAAAA,MAAM,CAACrd,IAAP,CAAY,GAAZ;AAEAkd,QAAAA,QAAQ,CAACld,IAAT,CACG,eAAcmd,OAAQ,GACrBvf,IAAI,CAACyB,KAAL,GAAa,CAAb,GAAiBzB,IAAI,CAACyB,KAAtB,GAA8B,EAC/B,gBAAege,MAAM,CAACrlB,IAAP,CAAY,IAAZ,CAAkB,GAHpC;AAKD,OA7CD;AA8CD,KA/CD;AAgDD;;AAED,MAAIkH,IAAI,GAAG,EAAX;;AACA,MACE8D,KAAK,CAACsZ,OAAN,IACCtZ,KAAK,CAAC9D,IAAN,KAAe,UAAf,IAA6B8D,KAAK,CAACya,IAAN,CAAWxkB,QAAX,CAAoB,cAApB,CAFhC,EAGE;AACAiG,IAAAA,IAAI,CAACc,IAAL,CAAW,+BAAX;AACD;;AACD,MAAIgD,KAAK,CAACgO,SAAV,EAAqB;AACnB9R,IAAAA,IAAI,CAACc,IAAL,CAAW,yCAAX;AACD;;AACD,MAAI4L,IAAI,GAAG,EAAX;;AACA,MAAI5I,KAAK,CAAC4I,IAAV,EAAgB;AACd,YAAQ5I,KAAK,CAAC4I,IAAN,CAAW5R,IAAnB;AACE,WAAK,MAAL;AACA,WAAK,SAAL;AAAgB;AACd4R,UAAAA,IAAI,CAAC5L,IAAL,CAAW,wCAAuCgD,KAAK,CAAC4I,IAAN,CAAW7T,IAAK,KAAlE;AACA2lB,UAAAA,gBAAgB,CAAC1a,KAAK,CAAC4I,IAAP,EAAaA,IAAb,CAAhB;AACA+R,UAAAA,eAAe,CAAC3a,KAAK,CAAC4a,UAAP,EAAmBhS,IAAnB,CAAf;AACAiS,UAAAA,iBAAiB,CAAC7a,KAAK,CAAC8a,YAAP,EAAqBlS,IAArB,CAAjB;AACAA,UAAAA,IAAI,CAAC5L,IAAL,CAAU,IAAV;AACA;AACD;AATH;AAeD;;AAED,MAAIgD,KAAK,CAACiV,OAAV,EAAmB;AACjB,QAAI8F,SAAS,GAAG/a,KAAK,CAACgb,KAAN,GAAc,oCAAd,GAAqD,EAArE;AACA,QAAIC,UAAU,GAAGjb,KAAK,CAACgb,KAAN,GAAc,4BAAd,GAA6C,EAA9D;AACA,WAAQ,wBAAuBhd,IAAK;;;cAG1B+c,SAAU,GAAE3a,MAAO,GAAE6a,UAAW;;EAH1C;AAMD,GATD,MASO;AACL,QAAI9c,GAAG,GAAGiC,MAAM,GAAI,IAAGA,MAAO,GAAd,GAAmB,IAAnC;AAEA,WAAQ,2BAA0BpC,IAAK;MACrCgC,KAAK,CAACgb,KAAN,GAAe,4CAAf,GAA6D,EAAG;MAChEhb,KAAK,CAACkb,WAAN,GAAoB,8BAApB,GAAqD,EAAG;MAExDlb,KAAK,CAACqQ,YAAN,GACI,yEADJ,GAEI,EACL;MACCrQ,KAAK,CAACmb,UAAN,GAAmB,4BAAnB,GAAkD,EAAG;MACrDjB,QAAQ,CAACllB,IAAT,CAAc,IAAd,CAAoB;MACpBkH,IAAI,CAAClH,IAAL,CAAU,IAAV,CAAgB;MAChB4T,IAAI,CAAC5T,IAAL,CAAU,IAAV,CAAgB;;WAEXmJ,GAAI;EAbX;AAeD;AACF,CAnHD;;AAqHA,SAASuc,gBAAT,CAA0BU,cAA1B,EAA0CxS,IAA1C,EAAgD;AAC9C,MAAIwS,cAAc,CAACC,OAAf,KAA2B,IAA/B,EAAqC;AAErCzS,EAAAA,IAAI,CAAC5L,IAAL,CAAW,aAAYoe,cAAc,CAACC,OAAQ,IAA9C;AACD;;AACD,SAASV,eAAT,CAAyB9F,MAAzB,EAAiCjM,IAAjC,EAAuC;AACrC,MAAI,CAACiM,MAAL,EAAa;;AAEb,MAAIA,MAAM,CAACyG,QAAX,EAAqB;AACnB1S,IAAAA,IAAI,CAAC5L,IAAL,CAAW,cAAa6X,MAAM,CAACyG,QAAS,IAAxC;AACD;;AAED,MAAIzG,MAAM,CAAC0G,SAAX,EAAsB;AACpB3S,IAAAA,IAAI,CAAC5L,IAAL,CAAW,eAAc6X,MAAM,CAAC0G,SAAU,IAA1C;AACD;AACF;;AACD,SAASV,iBAAT,CAA2BW,QAA3B,EAAqC5S,IAArC,EAA2C;AACzC,MAAI,CAAC4S,QAAD,IAAaA,QAAQ,CAACxkB,IAAT,KAAkB,IAAnC,EAAyC;AACzC4R,EAAAA,IAAI,CAAC5L,IAAL,CAAW,cAAawe,QAAQ,CAACjmB,KAAM,IAAvC;;AACA,MAAIimB,QAAQ,CAACC,QAAb,EAAuB;AACrB7S,IAAAA,IAAI,CAAC5L,IAAL,CAAU,yBAAV;AACD;AACF;;AC3ID,IAAIM,SAAS,GAAG4K,IAAI,IAAI;AACtB,MAAIA,IAAI,CAAClR,IAAL,KAAc,OAAlB,EAA2B;AACzB,WAAOqG,IAAI,CAACC,SAAL,CAAe,EAAf,CAAP;AACD,GAFD,MAEO,IAAI,WAAWgE,IAAX,CAAgB4G,IAAI,CAACb,YAArB,KAAsCa,IAAI,CAAClR,IAAL,KAAc,QAAxD,EAAkE;AACvE,WAAOkR,IAAI,CAACb,YAAZ;AACD,GAFM,MAEA;AACL,WAAOhK,IAAI,CAACC,SAAL,CAAe4K,IAAI,CAACb,YAApB,CAAP;AACD;AACF,CARD;;AAUA,uBAAe,CAAC;AAAErH,EAAAA,KAAF;AAAShC,EAAAA;AAAT,CAAD,KAAqB;AAClC,MAAIkb,KAAK,GAAGlZ,KAAK,CAACkZ,KAAN,CACTnjB,MADS,CACFmS,IAAI,IAAIA,IAAI,CAACb,YAAL,KAAsB,KAD5B,EAET5S,GAFS,CAELyT,IAAI,IAAK,GAAEA,IAAI,CAAClK,IAAK,KAAIV,SAAS,CAAC4K,IAAD,CAAO,EAFpC,CAAZ;AAIA,SAAOgR,KAAK,CAAC9b,MAAN,KAAiB,CAAjB,GACH,EADG,GAEF,GAAEY,IAAK,oBAAmBkb,KAAK,CAAClkB,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,IAAI0mB,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,CAACjjB,CAAD,EAAIC,CAAJ,KAAU;AACjC,SAAOD,CAAC,KAAKC,CAAN,GAAU,CAAV,GAAcD,CAAC,GAAGC,CAAJ,GAAQ,CAAC,CAAT,GAAa,CAAlC;AACD,CAFD;;AAIA,IAAIijB,YAAY,GAAG,CAACljB,CAAD,EAAIC,CAAJ,KAAU;AAC3B,MAAIkjB,SAAS,GAAGnjB,CAAC,CAACjB,UAAF,CAAa,QAAb,CAAhB;AACA,MAAIqkB,SAAS,GAAGnjB,CAAC,CAAClB,UAAF,CAAa,QAAb,CAAhB;AAEA,MAAKokB,SAAS,IAAIC,SAAd,IAA6B,CAACD,SAAD,IAAc,CAACC,SAAhD,EACE,OAAOH,kBAAkB,CAACjjB,CAAD,EAAIC,CAAJ,CAAzB;AAEF,MAAIkjB,SAAJ,EAAe,OAAO,CAAC,CAAR;AACf,MAAIC,SAAJ,EAAe,OAAO,CAAP;AAChB,CATD;;AAWA,uBAAe,CAAC9b,KAAD,EAAQ2Z,SAAR,KAAsB;AACnC,MAAIoC,UAAU,GAAG,EAAjB;AACA,MAAIC,OAAO,GAAG,EAAd;;AAEA,MAAIC,SAAS,GAAG7mB,CAAC,IAAI;AACnB,QAAI,CAAC2mB,UAAU,CAAC9lB,QAAX,CAAoBb,CAApB,CAAL,EAA6B;AAC3B2mB,MAAAA,UAAU,CAAC/e,IAAX,CAAgB5H,CAAhB;AACD;AACF,GAJD;;AAKA,MAAI8mB,MAAM,GAAG9mB,CAAC,IAAI;AAChB,QAAI,CAAC4mB,OAAO,CAAC/lB,QAAR,CAAiBb,CAAjB,CAAL,EAA0B;AACxB4mB,MAAAA,OAAO,CAAChf,IAAR,CAAa5H,CAAb;AACD;AACF,GAJD;;AAMA,MAAI+mB,YAAY,GAAG,CAAE,2BAAF,CAAnB;AAEAnc,EAAAA,KAAK,CAACya,IAAN,CAAWhiB,IAAX,GAAkBtD,OAAlB,CAA0BC,CAAC,IAAI;AAC7B,QAAI4K,KAAK,CAACmT,aAAN,IAAuBuI,MAAM,CAACzlB,QAAP,CAAgBb,CAAhB,CAA3B,EAA+C;AAC7C6mB,MAAAA,SAAS,CAAC7mB,CAAD,CAAT;AACD,KAFD,MAEO,IAAI4K,KAAK,CAACmT,aAAN,IAAuBiJ,GAAG,CAACnmB,QAAJ,CAAab,CAAb,CAA3B,EAA4C;AACjD8mB,MAAAA,MAAM,CACJ9mB,CAAC,KAAK,KAAN,GACIA,CADJ,GAEIA,CAAC,KAAK,UAAN,GACC,eADD,GAEC,GAAEA,CAAC,CAACyB,OAAF,CAAU,KAAV,EAAiB,EAAjB,CAAqB,OAAMzB,CAAE,EALhC,CAAN;AAOD,KARM,MAQA,IAAIA,CAAC,KAAK,OAAV,EAAmB,CAAnB,MACA,IAAI,SAASkM,IAAT,CAAclM,CAAd,CAAJ,EAAsB;AAC3B+mB,MAAAA,YAAY,CAACnf,IAAb,CAAkB2c,SAAS,CAACvkB,CAAD,EAAI4K,KAAK,CAACqc,IAAN,CAAWjnB,CAAX,CAAJ,CAA3B;AACD;AACF,GAfD;;AAiBA,MAAI4K,KAAK,CAACmT,aAAV,EAAyB,CAAzB,MAGO;AACLnT,IAAAA,KAAK,CAACxH,KAAN,CAAYrD,OAAZ,CAAoBmnB,QAAQ,IAC1BH,YAAY,CAACnf,IAAb,CAAkBgD,KAAK,CAACuc,aAAN,CAAoBD,QAAQ,CAACplB,EAA7B,CAAlB,CADF;AAGD,GAzCkC;AA4CnC;;;AACA8I,EAAAA,KAAK,CAAC4K,MAAN,CAAazV,OAAb,CAAqBqnB,GAAG,IACtBL,YAAY,CAACnf,IAAb,CAAmB,UAASwf,GAAG,CAACxe,IAAK,UAASwe,GAAG,CAACvlB,IAAK,GAAvD,CADF;;AAIA,MAAI+I,KAAK,CAACgT,UAAN,IAAoBhT,KAAK,CAAC6S,SAA9B,EAAyC;AACvCsJ,IAAAA,YAAY,CAACnf,IAAb,CAAkB,+BAAlB;AACAgD,IAAAA,KAAK,CAACmc,YAAN,CAAmBvmB,GAAnB,CAAuB,SAAvB;AACD;;AAED,MAAIoK,KAAK,CAACmS,UAAV,EAAsB;AACpB,QAAIC,UAAU,GAAG,CACf,UADe,EAEf,CAACpS,KAAK,CAACiQ,kBAAN,IACEjQ,KAAK,CAACqT,kBAAN,IAA4BrT,KAAK,CAACmT,aADrC,KAEE,WAJa,EAKfpd,MALe,CAKR8R,OALQ,CAAjB;;AAOA,QAAIuK,UAAU,CAAChV,MAAX,GAAoB,CAAxB,EAA2B;AACzB+e,MAAAA,YAAY,CAACnf,IAAb,CACG,YAAWoV,UAAU,CAACpd,IAAX,CAAgB,IAAhB,CAAsB,wBADpC;AAIAgL,MAAAA,KAAK,CAACmc,YAAN,CAAmBvmB,GAAnB,CAAuB,cAAvB;;AAEA,UAAIoK,KAAK,CAACqT,kBAAN,IAA4BrT,KAAK,CAACmT,aAAtC,EAAqD;AACnDgJ,QAAAA,YAAY,CAACnf,IAAb,CAAmB,mCAAnB;AACAgD,QAAAA,KAAK,CAACmc,YAAN,CAAmBvmB,GAAnB,CAAuB,SAAvB;AACD;AACF;AACF;;AAED,MAAIoK,KAAK,CAACmT,aAAV,EAAyB;AACvB,SAAK,IAAIsJ,SAAT,IAAsBzc,KAAK,CAACka,QAA5B,EAAsC;AACpCiC,MAAAA,YAAY,CAACnf,IAAb,CAAmB,eAAcyf,SAAU,eAAcA,SAAU,GAAnE;AACD;AACF;;AAED,MAAIzc,KAAK,CAACmK,OAAV,EAAmB;AACjBgS,IAAAA,YAAY,CAACnf,IAAb,CACG,gEACCgD,KAAK,CAACmT,aAAN,GAAsB,QAAtB,GAAiC,KAClC,GAHH;AAKAnT,IAAAA,KAAK,CAACmc,YAAN,CAAmBvmB,GAAnB,CAAuB,oBAAvB;AACD;;AAED,MAAIomB,OAAO,CAAC5e,MAAR,GAAiB,CAArB,EAAwB;AACtB,QAAIsf,GAAG,GAAGV,OAAO,CAACjmB,MAAR,CAAe4mB,CAAC,IAAIA,CAAC,KAAK,KAA1B,EAAiC3nB,IAAjC,CAAsC,IAAtC,CAAV;AACAmnB,IAAAA,YAAY,CAACnf,IAAb,CAAmB,iBAAgB0f,GAAI,4BAAvC;AACD;;AAED,MAAIX,UAAU,CAAC3e,MAAX,GAAoB,CAAxB,EAA2B;AACzB+e,IAAAA,YAAY,CAACnf,IAAb,CACG,YAAW+e,UAAU,CAAC/mB,IAAX,CAAgB,IAAhB,CAAsB,YAChCgL,KAAK,CAAC4c,wBACP,GAHH;AAKD;;AAED,MAAI5c,KAAK,CAACgb,KAAV,EAAiB;AACfmB,IAAAA,YAAY,CAACnf,IAAb,CAAkB2c,SAAS,CAAC,cAAD,CAA3B;AACD;;AAED,MAAI3Z,KAAK,CAACkb,WAAV,EAAuB;AACrBiB,IAAAA,YAAY,CAACnf,IAAb,CAAkB2c,SAAS,CAAC,kBAAD,CAA3B;AACD;;AAED,MAAI3Z,KAAK,CAACqQ,YAAV,EAAwB;AACtB8L,IAAAA,YAAY,CAACnf,IAAb,CAAkB2c,SAAS,CAAC,mBAAD,CAA3B;AACD;;AAED,MAAI3Z,KAAK,CAACmb,UAAV,EAAsB;AACpBgB,IAAAA,YAAY,CAACnf,IAAb,CAAkB2c,SAAS,CAAC,iBAAD,CAA3B;AACD;;AAED,MAAIjf,MAAM,CAAC6K,IAAP,CAAYvF,KAAK,CAACmL,MAAlB,EAA0B/N,MAA1B,GAAmC,CAAvC,EAA0C;AACxC+e,IAAAA,YAAY,CAACnf,IAAb,CAAkB,sCAAlB;AACAmf,IAAAA,YAAY,CAACnf,IAAb,CAAkB2c,SAAS,CAAC,gBAAD,CAA3B;AACA3Z,IAAAA,KAAK,CAACmc,YAAN,CAAmBvmB,GAAnB,CAAuB,UAAvB;AACD;;AAED,SAAOumB,YAAY,CAChBpmB,MADI,CACG8R,OADH,EAEJpP,IAFI,CAECmjB,YAFD,EAGJ5mB,IAHI,CAGC,IAHD,CAAP;AAID,CAlID;;AC/BA,mBAAe,CAAC;AAAEylB,EAAAA;AAAF,CAAD,KAAc;AAC3B,SAAOA,IAAI,CAACxkB,QAAL,CAAc,UAAd,KAA6BwkB,IAAI,CAACxkB,QAAL,CAAc,UAAd,CAA7B,GACF,mEADE,GAEH,EAFJ;AAGD,CAJD;;ACAA,qBAAe+J,KAAK,IAAKA,KAAK,CAAC8U,WAAN,GAAoB+H,gBAAgB,CAAC7c,KAAD,CAApC,GAA8C,EAAvE;;AAEA,IAAI6c,gBAAgB,GAAG,CAAC;AAAE9H,EAAAA,OAAF;AAAW+H,EAAAA;AAAX,CAAD,KAAiC;AACtD,SAAO/H,OAAO,CACXtgB,GADI,CACAogB,MAAM,IAAI;AACb,WAAOkI,SAAS,CAAClI,MAAD,EAASiI,cAAT,CAAhB;AACD,GAHI,EAIJ9nB,IAJI,CAIC,EAJD,CAAP;AAKD,CAND;;AAQA,IAAI+nB,SAAS,GAAG,CAAClI,MAAD,EAASiI,cAAT,KAA4B;AAC1C,MAAI/lB,KAAK,GAAG2D,MAAM,CAAC6K,IAAP,CAAYsP,MAAZ,EAAoB,CAApB,CAAZ;AACA,MAAI7d,IAAI,GAAGD,KAAK,KAAK,UAAV,IAAwBA,KAAK,KAAK,SAAlC,GAA8C,QAA9C,GAAyD,UAApE;AAEA,MAAIimB,OAAO,GAAGC,UAAU,CAACpI,MAAM,CAAE,GAAE9d,KAAM,EAAV,CAAP,EAAqBA,KAArB,AAAA,CAAxB;AACA,MAAImmB,MAAM,GAAI,OAAMnmB,KAAM,aAAYimB,OAAQ,SAAQjmB,KAAM,gBAA5D;AACA+lB,EAAAA,cAAc,CAAC3nB,OAAf,CAAuBgoB,KAAK,IAAI;AAC9BD,IAAAA,MAAM,IAAK,GAAEC,KAAM,cAAanmB,IAAK,WAAUmmB,KAAM,MAAKpmB,KAAM,aAAhE;AACD,GAFD;AAIA,SAAQ,GAAEmmB,MAAO,MAAjB;AACD,CAXD;;AAaA,IAAID,UAAU,GAAG,CAACpI,MAAD,EAAS9d,KAAT,EAAgBC,IAAhB,KAAyB;AACxC,MAAID,KAAK,KAAK,UAAd,EACE,OAAQ,mCAAkC8d,MAAO,KAAjD;AAEF,MAAI9d,KAAK,KAAK,SAAd,EACE,OAAQ,gDAAR;;AAEF,MAAIA,KAAK,KAAK,MAAV,IAAoB8d,MAAM,CAACuI,KAA/B,EAAsC;AACpCvI,IAAAA,MAAM,CAACwI,MAAP,GAAgBxI,MAAM,CAACuI,KAAP,KAAiB,KAAjB,GAAyB,KAAzB,GAAiC,IAAjD;AACA,WAAOvI,MAAM,CAACuI,KAAd;AACD;;AACD,SAAO/f,IAAI,CAACC,SAAL,CAAeuX,MAAf,CAAP;AACD,CAZD;;ACvBA,mBAAe,CAAC;AAAE1J,EAAAA;AAAF,CAAD,KACZ,KAAIzQ,MAAM,CAAC6K,IAAP,CAAY4F,MAAZ,EACF1W,GADE,CACEmS,CAAC,IAAK,OAAMA,CAAE,MAAKvJ,IAAI,CAACC,SAAL,CAAe6N,MAAM,CAACvE,CAAD,CAArB,EAA0B,IAA1B,EAAgC,GAAhC,CAAqC,EAD1D,EAEF5R,IAFE,CAEG,IAFH,CAES,EAHhB;;ACOA,mBAAe,CAAC;AAAE2kB,EAAAA,SAAF;AAAa2D,EAAAA,SAAb;AAAwBtf,EAAAA,IAAxB;AAA8BgC,EAAAA;AAA9B,CAAD,KAA2C;AACxD;AACA;AACA,SAAQ;uCAC6BhC,IAAK;EAC1Cuf,eAAe,CAACvd,KAAD,EAAQ2Z,SAAR,CAAmB;;EAElC2D,SAAS,CAACtd,KAAD,EAAQhC,IAAR,CAAc;EACvBwf,WAAW,CAACxd,KAAD,AAAA,CAAc;EACzByd,aAAa,CAACzd,KAAD,AAAA,CAAc;EAC3BkL,WAAS,CAAClL,KAAD,AAAA,CAAc;;EAEvB0d,OAAO,CAAC;AAAE1d,IAAAA,KAAF;AAAShC,IAAAA;AAAT,GAAD,CAAkB;EACzB2f,eAAe,CAAC;AAAE3d,IAAAA,KAAF;AAAShC,IAAAA;AAAT,GAAD,CAAkB,EAVjC;AAWD,CAdD;;ACPe,SAAS4f,IAAT,CAAcC,GAAd,EAAmB;AAAE/d,EAAAA,KAAF;AAASwP,EAAAA;AAAT,CAAnB,EAAqCtP,KAArC,EAA4C;AACzD8d,EAAAA,KAAK,CAACD,GAAD,EAAM,IAAN,EAAY/d,KAAZ,EAAmBwP,KAAnB,EAA0BtP,KAA1B,CAAL;AACD;;AAED,SAAS8d,KAAT,CAAe/d,IAAf,EAAqB7C,MAArB,EAA6B4C,KAA7B,EAAoCwP,KAApC,EAA2CtP,KAA3C,EAAkD;AAChD,MAAI,CAACD,IAAL,EAAW;;AAEX,MAAID,KAAJ,EAAW;AACT,QAAIA,KAAK,CAACmG,IAAN,CAAW8X,EAAE,IAAIA,EAAE,CAAChe,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAnB,CAAJ,EAA+C;AAChD;;AAED,MAAI0G,KAAK,CAACC,OAAN,CAAc5G,IAAI,CAAC+O,QAAnB,CAAJ,EAAkC;AAChC/O,IAAAA,IAAI,CAAC+O,QAAL,CAAc3Z,OAAd,CAAsB+Z,KAAK,IAAI;AAC7BA,MAAAA,KAAK,CAAChS,MAAN,GAAe6C,IAAf;AACA+d,MAAAA,KAAK,CAAC5O,KAAD,EAAQnP,IAAR,EAAcD,KAAd,EAAqBwP,KAArB,EAA4BtP,KAA5B,CAAL;AACD,KAHD;AAID;;AAED,MAAIsP,KAAJ,EAAW;AACTA,IAAAA,KAAK,CAACna,OAAN,CAAc4oB,EAAE,IAAIA,EAAE,CAAChe,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAtB;AACD;AACF;;ACXD,IAAI0Z,OAAO,GAAG;AACZsE,EAAAA,iBAAiB,EACf;AAFU,CAAd;AAKA,gBAAe,CAAC;AACdzB,EAAAA,aADc;AAEd1c,EAAAA,eAFc;AAGdsd,EAAAA,KAHc;AAIdL,EAAAA,cAJc;AAKd9B,EAAAA,KALc;AAMdxe,EAAAA,KANc;AAOdhD,EAAAA,IAPc;AAQdkC,EAAAA,SARc;AASdvC,EAAAA;AATc,CAAD,KAUT;AACJ,MAAI6E,IAAI,GAAGxE,IAAI,CAACtC,EAAhB;AACA,MAAI+mB,SAAS,GAAGC,eAAe,CAACjoB,QAAhB,CAAyB+H,IAAzB,IAAkC,GAAEA,IAAK,GAAzC,GAA8CA,IAA9D;;AACA,MAAIA,IAAI,KAAKigB,SAAb,EAAwB;AACtBtpB,IAAAA,OAAO,CAACwpB,IAAR,CACG,OAAMngB,IAAK;6BACWigB,SAAU;2DAFnC;AAKD;;AAED,MAAIje,KAAK,GAAG;AACVka,IAAAA,QAAQ,EAAE,IAAIxkB,GAAJ,EADA;AAEV0c,IAAAA,UAAU,EAAE,EAFF;AAGVY,IAAAA,UAAU,EAAE,KAHF;AAIVH,IAAAA,SAAS,EAAE,KAJD;AAKVjK,IAAAA,IAAI,EAAEpP,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBoP,IALb;AAMVgS,IAAAA,UAAU,EAAEphB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBohB,UANnB;AAOVE,IAAAA,YAAY,EAAEthB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBshB,YAPrB;AAQVqB,IAAAA,YAAY,EAAE,IAAIzmB,GAAJ,EARJ;AASVwG,IAAAA,IAAI,EAAE,IATI;AAUV8R,IAAAA,SAAS,EAAE,KAVD;AAWVuO,IAAAA,aAAa,EAAEpmB,IAAI,IAAIomB,aAAa,CAACpmB,IAAD,EAAOqD,IAAP,CAX1B;AAYVmY,IAAAA,mBAZU;AAaVjD,IAAAA,mBAbU;AAcVuG,IAAAA,OAAO,EAAE,KAdC;AAeVrK,IAAAA,MAAM,EAAE,EAfE;AAgBViH,IAAAA,SAAS,EAAE,KAhBD;AAiBVsB,IAAAA,aAAa,EAAE,KAjBL;AAkBVvW,IAAAA,OAAO,EAAE1F,EAAE,IAAI;AACb,UAAI6F,UAAU,GAAGtB,qBAAqB,CAAC;AACrCvE,QAAAA,EADqC;AAErCsC,QAAAA,IAFqC;AAGrCkC,QAAAA,SAHqC;AAIrCvC,QAAAA;AAJqC,OAAD,CAAtC;AAOA,aAAO4D,UAAU,IAAI,CAACA,UAAU,CAACtD,MAA1B,IAAoCsD,UAAU,CAACrD,MAAX,CAAkBF,IAAlB,CAAuBoD,OAAlE;AACD,KA3BS;AA4BVyf,IAAAA,IAAI,EAAE,EA5BI;AA6BVc,IAAAA,KA7BU;AA8BVhS,IAAAA,MAAM,EAAE,EA9BE;AA+BV2R,IAAAA,cAAc,EAAE,EA/BN;AAgCV9e,IAAAA,IAAI,EAAEigB,SAhCI;AAiCVhhB,IAAAA,QAAQ,EAAEzD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiByD,QAjCjB;AAkCVE,IAAAA,cAAc,EAAE3D,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB2D,cAlCvB;AAmCViD,IAAAA,MAAM,EAAE,EAnCE;AAoCVsS,IAAAA,MAAM,EAAE,EApCE;AAqCVC,IAAAA,WAAW,EAAE,EArCH;AAsCVxF,IAAAA,cAAc,EAAE;AAAE,OAAC8Q,SAAD,GAAa,CAAf;AAAkBG,MAAAA,SAAS,EAAE,CAA7B;AAAgCC,MAAAA,MAAM,EAAE,CAAxC;AAA2CC,MAAAA,KAAK,EAAE;AAAlD,KAtCN;AAuCV7D,IAAAA,IAAI,EAAE,EAvCI;AAwCVta,IAAAA,SAAS,EAAE,aAxCD;AAyCVE,IAAAA,WAAW,EAAE,gBAzCH;AA0CVqW,IAAAA,OAAO,EAAE,EA1CC;AA2CVla,IAAAA,KA3CU;AA4CVwe,IAAAA,KA5CU;;AA6CVzK,IAAAA,GAAG,CAAC8H,KAAD,EAAQ5H,MAAM,GAAG,KAAjB,EAAwB;AACzB,UAAIA,MAAJ,EAAY;AACVzQ,QAAAA,KAAK,CAACqc,IAAN,CAAWhE,KAAX,IAAoB,IAApB;AACD;;AAED,UACErY,KAAK,CAACya,IAAN,CAAWxkB,QAAX,CAAoBoiB,KAApB,KACA,QAAQ/W,IAAR,CAAa+W,KAAb,CADA,IAEA,YAAY/W,IAAZ,CAAiB+W,KAAjB,CAFA,IAGA,qBAAqBA,KAHrB,IAIA,+BAA+BA,KAJ/B,IAKAA,KAAK,KAAK4F,SANZ,EAQE;AAEFje,MAAAA,KAAK,CAACya,IAAN,CAAWzd,IAAX,CAAgBqb,KAAhB;AACD,KA7DS;;AA8DV6C,IAAAA,WAAW,EAAE1hB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB0hB,WA9DpB;AA+DVC,IAAAA,UAAU,EAAE3hB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB2hB;AA/DnB,GAAZ,CAXI;AA8EJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAInb,KAAK,CAAC4I,IAAV,EAAgB;AACd5I,IAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACD;;AAED,MAAIvS,IAAI,KAAKigB,SAAb,EAAwB;AACtBtpB,IAAAA,OAAO,CAACwpB,IAAR,CACG,MAAKngB,IAAK,iFADb;AAGD;;AAEDgC,EAAAA,KAAK,CAACxH,KAAN,GAAcgB,IAAI,CAACE,MAAL,CAAYlB,KAA1B;AACAwH,EAAAA,KAAK,CAACkZ,KAAN,GAAc1f,IAAI,CAACE,MAAL,CAAYwf,KAA1B;AACAlZ,EAAAA,KAAK,CAAC8c,cAAN,GAAuBA,cAAvB;AAEAc,EAAAA,IAAI,CAACpkB,IAAI,CAACE,MAAL,CAAYF,IAAb,EAAmB+kB,OAAnB,EAA4Bve,KAA5B,CAAJ;AAEA,SAAO;AACLmV,IAAAA,IAAI,EAAEqJ,WAAW,CAAC;AAChB7E,MAAAA,SAAS,EAAEF,aAAa,CAAC;AACvBC,QAAAA,OADuB;AAEvB7Z,QAAAA,eAFuB;AAGvBrG,QAAAA,IAHuB;AAIvBkC,QAAAA,SAJuB;AAKvBvC,QAAAA;AALuB,OAAD,CADR;AAQhBmkB,MAAAA,SARgB;AAShBtf,MAAAA,IAAI,EAAEigB,SATU;AAUhBje,MAAAA;AAVgB,KAAD,CADZ;AAaLmc,IAAAA,YAAY,EAAEnc,KAAK,CAACmc,YAbf;AAcLjgB,IAAAA,IAAI,EAAE8D,KAAK,CAAC9D,IAdP;AAeLoU,IAAAA,gBAAgB,EAAEtQ,KAAK,CAACsQ,gBAfnB;AAiBL;AACA;;AAlBK,GAAP;AAoBD,CApID;;ACbA,IAAImO,aAAa,GAAG,CAClB,cADkB,EAElB,qBAFkB,EAGlB,sBAHkB,EAIlB,wBAJkB,EAKlB,yBALkB,CAApB;AAQA,AAAO,IAAI3e,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACkY,eAAT,EAA0B;AACxB,QAAIyG,MAAM,GAAGlY,iBAAiB,CAAC;AAAEmY,MAAAA,GAAG,EAAE5e,IAAI,CAACkY;AAAZ,KAAD,CAA9B;AAEA,QAAI2G,UAAU,GAAG9X,OAAO,CAAC/G,IAAD,EAAO,gBAAP,CAAxB;AACA6e,IAAAA,UAAU,GAAGzW,IAAI,CAACyW,UAAU,GAAGA,UAAU,CAACrpB,KAAX,CAAiBA,KAApB,GAA4B,OAAvC,CAAjB;AAEAyK,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,eAAc4hB,UAAW,YAAWF,MAAO,GAA9D,EANwB;AASxB;;AACAD,IAAAA,aAAa,CAACtpB,OAAd,CAAsB+R,IAAI,IAAI;AAC5B,UAAII,OAAO,CAACvH,IAAD,EAAOmH,IAAP,CAAX,EAAyB;AACvB,YAAIM,QAAQ,GAAGV,OAAO,CAAC/G,IAAD,EAAOmH,IAAP,CAAtB;AACAlH,QAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAGkK,IAAK,KAAIM,QAAQ,CAACjS,KAAT,CAAeA,KAAM,GAApD;AACD;AACF,KALD;AAMD;AACF,CAlBM;;ACRP,IAAIspB,YAAY,GAAG;AACjB1Q,EAAAA,KAAK,EAAE,eADU;AAEjBE,EAAAA,MAAM,EAAE,SAFS;AAGjBC,EAAAA,KAAK,EAAE;AAHU,CAAnB;AAMA,AAAO,IAAIxO,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAI,CAACD,IAAI,CAACmK,SAAV,EAAqB;;AAErB,MAAInK,IAAI,CAAC/B,IAAL,KAAc,iBAAlB,EAAqC;AACnCgC,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,mBAAnB;AACD,GAFD,MAEO;AACL,QAAIhG,IAAI,GAAG8P,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAlB,CADK;AAIL;;AACA,QAAI/I,IAAI,CAACzB,KAAL,KAAe,MAAnB,EAA2B;AACzByB,MAAAA,IAAI,CAACzB,KAAL,GAAa,MAAb;AACD;;AAED,QAAIyB,IAAI,CAACzB,KAAL,KAAe,QAAnB,EAA6B;AAC3ByK,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,kBAAnB;AACD,KAFD,MAEO;AACL,UAAI2I,MAAM,CAAC3O,IAAD,CAAV,EAAkB;AAChB,YAAI8nB,mBAAmB,GAAI;YACvB9nB,IAAI,CAACzB,KAAM;eACRspB,YAAY,CAAC1Q,KAAM;gBAClBnX,IAAI,CAACzB,KAAM;mBACRspB,YAAY,CAACxQ,MAAO;kBACrBrX,IAAI,CAACzB,KAAM;qBACRspB,YAAY,CAACvQ,KAAM;SANhC;AAQAtO,QAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,kBAAiB8hB,mBAAoB,GAAxD;AACD,OAVD,MAUO,IAAID,YAAY,CAAC7nB,IAAI,CAACzB,KAAN,CAAhB,EAA8B;AACnCyK,QAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,kBAAiB6hB,YAAY,CAAC7nB,IAAI,CAACzB,KAAN,CAAa,GAA7D;AACD;AACF;AACF;;AAED,MAAIwpB,WAAW,GAAGjY,OAAO,CAAC/G,IAAD,EAAO,aAAP,CAAzB;;AACA,MAAI,CAACgf,WAAL,EAAkB;AAChB/e,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,sBAAnB;AACD;;AAED,MAAIgiB,qBAAqB,GAAGlY,OAAO,CAAC/G,IAAD,EAAO,uBAAP,CAAnC;;AACA,MAAI,CAACif,qBAAL,EAA4B;AAC1Bhf,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,sCAAnB;AACD;;AAED,MAAIiiB,iBAAiB,GAAGnY,OAAO,CAAC/G,IAAD,EAAO,mBAAP,CAA/B;;AACA,MAAI,CAACkf,iBAAL,EAAwB;AACtBjf,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,0BAAnB;AACD;AACF,CA/CM;;ACNP,sBAAe,CAAC+C,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AACtC,UAAQD,IAAI,CAAC/B,IAAb;AACE,SAAK,SAAL;AACA,SAAK,iBAAL;AACE,aAAO,WAAP;;AAEF,SAAK,YAAL;AACA,SAAK,UAAL;AACE,aAAOgS,mBAAiB,CAACjQ,IAAD,EAAOC,KAAP,CAAxB;;AAEF,SAAK,MAAL;AACE,aAAOkf,gBAAgB,CAACnf,IAAD,EAAOC,KAAP,CAAvB;;AAEF,SAAK,MAAL;AACE,UAAID,IAAI,CAACoS,UAAT,EAAqB;AACnBnS,QAAAA,KAAK,CAACka,QAAN,CAAetkB,GAAf,CAAmB,MAAnB;AACA,eAAO,cAAP;AACD,OAHD,MAGO;AACL,eAAO,MAAP;AACD;;AAEH,SAAK,OAAL;AACA,SAAK,MAAL;AACE,aAAO,gBAAP;;AAEF;AACE,aAAOmK,IAAI,CAAC/B,IAAZ;AAzBJ;AA2BD,CA5BD;;AA8BA,IAAIgS,mBAAiB,GAAG,CAACjQ,IAAD,EAAOC,KAAP,KAAiB;AACvC,MAAIhC,IAAI,GAAG,MAAX;;AAEA,MAAI+B,IAAI,CAACE,UAAT,EAAqB;AACnBjC,IAAAA,IAAI,GAAG,gBAAP;AACD,GAFD,MAEO,IAAIsJ,OAAO,CAACvH,IAAD,EAAO,MAAP,CAAX,EAA2B;AAChCA,IAAAA,IAAI,CAACyP,IAAL,GAAY,IAAZ;AACA,QAAIhI,QAAQ,GAAGV,OAAO,CAAC/G,IAAD,EAAO,MAAP,CAAtB;AACAA,IAAAA,IAAI,CAACiJ,MAAL,GAAcxB,QAAQ,CAACjS,KAAvB;AACD,GAJM,MAIA,IAAI+R,OAAO,CAACvH,IAAD,EAAO,SAAP,CAAX,EAA8B;AACnC,QAAIyH,QAAQ,GAAGV,OAAO,CAAC/G,IAAD,EAAO,SAAP,CAAtB;AACAA,IAAAA,IAAI,CAACiJ,MAAL,GAAcxB,QAAQ,CAACjS,KAAvB;AACD;;AAED,MAAI+R,OAAO,CAACvH,IAAD,EAAO,iBAAP,CAAX,EAAsC;AACpC,QAAIyH,QAAQ,GAAGV,OAAO,CAAC/G,IAAD,EAAO,iBAAP,CAAtB;AACAA,IAAAA,IAAI,CAACkY,eAAL,GAAuBtS,MAAM,CAAC6B,QAAD,CAAN,GACnBA,QAAQ,CAACjS,KADU,GAEnB8H,IAAI,CAACC,SAAL,CAAekK,QAAQ,CAACjS,KAAxB,CAFJ;AAIAyI,IAAAA,IAAI,GAAG,OAAP;AACD,GAPD,MAOO,IAAIsJ,OAAO,CAACvH,IAAD,EAAO,WAAP,EAAoB/J,CAAC,IAAIA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,QAA/C,CAAX,EAAqE;AAC1EgI,IAAAA,IAAI,GAAG,YAAP;AACD;;AAED,MAAI+B,IAAI,CAACoS,UAAT,EAAqB;AACnBnS,IAAAA,KAAK,CAACka,QAAN,CAAetkB,GAAf,CAAmBoI,IAAnB;AACAA,IAAAA,IAAI,GAAI,WAAUA,IAAK,EAAvB;AACD;;AAED,SAAOA,IAAP;AACD,CA/BD;;AAiCA,IAAIkhB,gBAAgB,GAAG,CAACnf,IAAD,EAAOC,KAAP,KAAiB;AACtC,MAAIpB,IAAI,GAAG0I,OAAO,CAACvH,IAAD,EAAO,WAAP,EAAoB/J,CAAC,IAAIA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,QAA/C,CAAP,GACP,UADO,GAEP,MAFJ;;AAGA,MAAI+J,IAAI,CAACoS,UAAT,EAAqB;AACnBnS,IAAAA,KAAK,CAACka,QAAN,CAAetkB,GAAf,CAAmBgJ,IAAnB;AACA,WAAQ,WAAUA,IAAK,EAAvB;AACD,GAHD,MAGO;AACL,WAAOA,IAAP;AACD;AACF,CAVD;;ACxDO,SAASkB,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC;AACA,MAAID,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC+O,QAAL,CAAc1R,MAAd,KAAyB,CAAhD,EAAmD,OAAO,IAAP;;AACnD,MAAI2C,IAAI,CAACqQ,UAAT,EAAqB;AACnBpQ,IAAAA,KAAK,CAAC+P,yBAAN,GAAkC,IAAlC;AAEA/P,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,sFADH;AAGA,QAAIqT,YAAY,GAAG,CAAC,CAACpH,mBAAmB,CAAClJ,IAAD,CAAxC;;AACA,QAAIsQ,YAAJ,EAAkB;AAChBrQ,MAAAA,KAAK,CAACqQ,YAAN,GAAqB,IAArB;AACArQ,MAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB,gCAAlB;AACD;;AACDgD,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,YAAnB;AAEA,WAAO,IAAP;AACD;;AAED,MAAI+C,IAAI,CAACE,UAAL,IAAmBF,IAAI,CAAC/B,IAAL,KAAc,MAArC,EAA6C;AAC3CgC,IAAAA,KAAK,CAAC9D,IAAN,GAAakL,qBAAqB,CAACrH,IAAD,EAAO,IAAP,EAAa,KAAb,CAAlC;AACAC,IAAAA,KAAK,CAACsQ,gBAAN,GAAyB,IAAzB;AACD;;AAED,MAAI1T,OAAO,CAACmD,IAAD,EAAOC,KAAP,CAAX,EAA0B;AACxBA,IAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACD;;AAED,MAAIvS,IAAI,GAAGwS,cAAY,CAACzQ,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAvB;AACA,MAAIhC,IAAI,KAAK,IAAb,EAAmB,OAAO,IAAP;;AAEnB,MAAIA,IAAI,KAAK,mBAAb,EAAkC;AAChCgC,IAAAA,KAAK,CAACuQ,GAAN,CAAU,UAAV;AACAvS,IAAAA,IAAI,GAAG,kBAAP;AACD;;AAEDgC,EAAAA,KAAK,CAACuQ,GAAN,CAAUxQ,IAAI,CAACiK,OAAL,GAAehM,IAAI,CAACnH,OAAL,CAAa,WAAb,EAA0B,EAA1B,CAAf,GAA+CmH,IAAzD,EAA+D+B,IAAI,CAAC0Q,MAApE;AAEA1Q,EAAAA,IAAI,CAAC4P,SAAL,GAAiB3R,IAAjB;AAEA,MAAI2S,WAAW,CAAC5Q,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAf,EAAsC,OAAO,IAAP;AAEtCA,EAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,IAAGgB,IAAK,EAA3B;AACD;;ACrCM,IAAIsR,OAAK,GAAG,CAACvP,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACE,UAAT,EAAqB;AAErB,MAAI6T,aAAa,GAAGvH,2BAA2B,CAACxM,IAAD,CAA/C;AACA,MAAIof,SAAS,GAAG,IAAhB;AACA,MAAIC,aAAa,GAAG,IAApB;AACA,MAAIC,YAAY,GAAG,IAAnB;AACA,MAAIC,cAAc,GAAG,IAArB;;AAEA,MACEvf,IAAI,CAACwf,qBAAL,KACC,EAAE,qBAAqBxf,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAzC,KACC,EAAE,qBAAqBmB,IAAI,CAAChJ,KAAL,CAAW2V,OAAX,CAAmB9N,IAA1C,CAFF,CADF,EAIE;AACAmB,IAAAA,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAlB,CAAuB4gB,eAAvB,GAAyC,aAAzC;AACD;;AAED,MAAI3Y,OAAO,CAAC9G,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAnB,CAAX,EAAqC;AACnC,QAAI1H,EAAE,GAAG+V,QAAQ,CAAClN,IAAD,EAAOC,KAAP,CAAjB;;AACA,QACED,IAAI,CAAC4P,SAAL,CAAe1Z,QAAf,CAAwB,UAAxB,KACAuX,4BAA4B,CAACzN,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAnB,CAF9B,EAGE;AACAoB,MAAAA,KAAK,CAAC0S,MAAN,CAAc,GAAExb,EAAG,kBAAnB,IAAwCwW,6BAA6B,CACnE3N,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IADiD,CAArE;AAGAmB,MAAAA,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAlB,GAAyB+O,gCAAgC,CACvD5N,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IADqC,CAAzD;AAGA0gB,MAAAA,cAAc,GAAI,UAASpoB,EAAG,kBAA9B;AACD;;AACD,QAAI2P,OAAO,CAAC9G,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAAnB,CAAX,EAAqC;AACnCoB,MAAAA,KAAK,CAAC0S,MAAN,CAAaxb,EAAb,IAAmB6I,IAAI,CAAChJ,KAAL,CAAWya,MAAX,CAAkB5S,IAArC;AACAugB,MAAAA,SAAS,GAAI,UAASjoB,EAAG,EAAzB;AACD;AACF;;AAED,MAAI6I,IAAI,CAACoS,UAAT,EAAqB;AACnBiN,IAAAA,aAAa,GAAGpT,iBAAiB,CAACjM,IAAD,EAAOC,KAAK,CAACmT,aAAb,CAAjC;AAEAnT,IAAAA,KAAK,CAACmS,UAAN,GAAmB,IAAnB;AACAnS,IAAAA,KAAK,CAACoS,UAAN,CAAiBrS,IAAI,CAAC7I,EAAtB,IAA4B6I,IAAI,CAACqS,UAAjC;;AACA,QAAIrS,IAAI,CAACkQ,kBAAT,EAA6B;AAC3BjQ,MAAAA,KAAK,CAACiQ,kBAAN,GAA2B,IAA3B;AACD;;AAED,QAAIlQ,IAAI,CAACsT,kBAAT,EAA6B;AAC3BrT,MAAAA,KAAK,CAACqT,kBAAN,GAA2B,IAA3B;AACD;;AACDrT,IAAAA,KAAK,CAACgG,MAAN,GAAejG,IAAI,CAACiG,MAApB;AACD;;AAED,MAAIa,OAAO,CAACiN,aAAD,CAAX,EAA4B;AAC1B,QACE/T,IAAI,CAAC4P,SAAL,CAAe1Z,QAAf,CAAwB,UAAxB,KACAuX,4BAA4B,CAACsG,aAAD,CAF9B,EAGE;AACA,UAAI2L,qBAAqB,GAAGjZ,iBAAiB,CAC3CkH,6BAA6B,CAACoG,aAAD,CADc,CAA7C;AAGAA,MAAAA,aAAa,GAAGnG,gCAAgC,CAACmG,aAAD,CAAhD;AACAwL,MAAAA,cAAc,GAAGA,cAAc,GAC1B,IAAGA,cAAe,IAAGG,qBAAsB,GADjB,GAE3BA,qBAFJ;AAGD;;AACD,QAAI5Y,OAAO,CAACiN,aAAD,CAAX,EAA4B;AAC1BuL,MAAAA,YAAY,GAAG7Y,iBAAiB,CAACsN,aAAD,CAAhC;AACAuL,MAAAA,YAAY,GAAGA,YAAY,CAAC7nB,MAAb,CAAoB,CAApB,EAAuB6nB,YAAY,CAACjiB,MAAb,GAAsB,CAA7C,CAAf;AACD;AACF;;AAED,MAAI+hB,SAAS,IAAIC,aAAb,IAA8BC,YAAlC,EAAgD;AAC9C,QAAItoB,KAAK,GAAGooB,SAAZ;;AACA,QAAIC,aAAJ,EAAmB;AACjB;AACA;AACAroB,MAAAA,KAAK,GAAI,OAAMooB,SAAU,IAAGC,aAAc,IAAGC,YAAY,IAAI,EAAG,GAAhE;AACD,KAJD,MAIO,IAAIA,YAAJ,EAAkB;AACvBtoB,MAAAA,KAAK,GAAI,IAAGooB,SAAU,KAAIE,YAAa,IAAvC;AACD;;AAEDrf,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,WAAUjG,KAAM,GAAnC;AACD;;AAED,MAAIuoB,cAAJ,EAAoB;AAClBtf,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAmB,2BAA0BsiB,cAAe,GAA5D;AACD;AACF,CAvFM;;ACfP,IAAIzJ,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,CAAC9V,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KACb,CAAC6V,WAAS,CAAC5f,QAAV,CAAmB8J,IAAI,CAAC/B,IAAL,CAAUgT,WAAV,EAAnB,CADH;;ACrBO,SAASlR,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAACE,UAAT,EAAqB,OAAO,KAAP;AAErB6V,EAAAA,OAAA,CAAsB/V,IAAtB,EAA4B7C,MAA5B,EAAoC8C,KAApC;AACAiW,EAAAA,OAAA,CAAqBlW,IAArB,EAA2B7C,MAA3B,EAAmC8C,KAAnC;AACAkW,EAAAA,OAAA,CAAuBnW,IAAvB,EAA6B7C,MAA7B,EAAqC8C,KAArC;AAEAD,EAAAA,IAAI,CAACoH,UAAL,CAAgBhS,OAAhB,CAAwBqS,QAAQ,IAAI;AAClC,QACEA,QAAQ,CAACxJ,IAAT,KAAkB,MAAlB,IACAwJ,QAAQ,CAACxJ,IAAT,KAAkB,IADlB,IAEAwJ,QAAQ,CAACxJ,IAAT,KAAkB,MAFlB,IAGAwJ,QAAQ,CAACxJ,IAAT,KAAkB,QAHlB,IAIAwJ,QAAQ,CAACS,IAAT,CAAckO,oBAJd,IAKC,CAACC,yBAAuB,CAAC5O,QAAD,AAAA,CAAxB,IAAmDzH,IAAI,CAACiK,OALzD,IAMCxC,QAAQ,CAACxJ,IAAT,KAAkB,MAAlB,KACE+B,IAAI,CAAC/B,IAAL,KAAc,MAAd,IAAwB+B,IAAI,CAAC/B,IAAL,KAAc,OADxC,CAND,IAQCwJ,QAAQ,CAACxJ,IAAT,KAAkB,KAAlB,IAA2Bd,MAAM,CAACkN,MARnC,IASC5C,QAAQ,CAACxJ,IAAT,KAAkB,MAAlB,IAA4B+B,IAAI,CAACqK,MATlC,IAUC5C,QAAQ,CAACxJ,IAAT,KAAkB,SAAlB,IAA+BgC,KAAK,CAAC+K,KAVtC,IAWCvD,QAAQ,CAACxJ,IAAT,KAAkB,OAAlB,IAA6BuM,QAAQ,CAACxK,IAAD,CAZxC,EAcE;AAEF,KAACsW,OAAA,CAAkB7O,QAAlB,EAA4BzH,IAA5B,EAAkCC,KAAlC,CAAD,IACE,CAACsW,OAAA,CAAoB9O,QAApB,EAA8BzH,IAA9B,EAAoCC,KAApC,CADH,IAEE,CAACuW,OAAA,CAAmB/O,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAFH,IAGE+O,OAAA,CAAmBvH,QAAnB,EAA6BzH,IAA7B,EAAmCC,KAAnC,CAHF;AAID,GArBD;AAuBA8V,EAAAA,OAAA,CAAsB/V,IAAtB,EAA4B7C,MAA5B,EAAoC8C,KAApC;AACD;;ACvCD,IAAI0f,uBAAuB,GAAG,CAC5B,SAD4B,EAE5B,WAF4B,EAG5B,YAH4B,EAI5B,YAJ4B,EAK5B,aAL4B,EAM5B,SAN4B,EAO5B,SAP4B,CAA9B;AAUA,AAAO,SAAS5f,OAAT,CAAeC,IAAf,EAAqB7C,MAArB,EAA6B8C,KAA7B,EAAoC;AACzC,MAAID,IAAI,CAAC/B,IAAL,KAAc,KAAd,IAAuB,CAACd,MAA5B,EAAoC;AAClC8C,IAAAA,KAAK,CAAC+K,KAAN,GAAc,IAAd;AACA/K,IAAAA,KAAK,CAAC2f,UAAN,GAAmB7Y,OAAO,CAAC/G,IAAD,EAAO,SAAP,CAA1B;AACD,GAHD,MAGO,IACLC,KAAK,CAAC+K,KAAN,IACA/K,KAAK,CAAC2f,UADN,IAEAD,uBAAuB,CAACzpB,QAAxB,CAAiC8J,IAAI,CAAC/B,IAAtC,CAHK,EAIL;AACA,QAAIsJ,OAAO,CAACvH,IAAD,EAAO,MAAP,CAAX,EAA2B;AACzBA,MAAAA,IAAI,CAACoH,UAAL,CAAgBnK,IAAhB,CAAqB,EAAE,GAAGgD,KAAK,CAAC2f,UAAX;AAAuB3hB,QAAAA,IAAI,EAAE;AAA7B,OAArB;AACD;;AAED,QAAIsJ,OAAO,CAACvH,IAAD,EAAO,QAAP,CAAX,EAA6B;AAC3BA,MAAAA,IAAI,CAACoH,UAAL,CAAgBnK,IAAhB,CAAqB,EAAE,GAAGgD,KAAK,CAAC2f,UAAX;AAAuB3hB,QAAAA,IAAI,EAAE;AAA7B,OAArB;AACD;AACF;AACF;;ACzBM,IAAI8B,OAAK,GAAG,CAACC,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAIhC,IAAI,GAAGwS,cAAY,CAACzQ,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAvB;;AACA,MACEhC,IAAI,KAAK,MAAT,IACAd,MADA,KAECA,MAAM,CAAC+a,eAAP,IAA0B/a,MAAM,CAACqiB,qBAFlC,CADF,EAIE;AACAxf,IAAAA,IAAI,CAACwf,qBAAL,GAA6B,IAA7B;AACD;;AAED,MAAIxf,IAAI,CAACiJ,MAAT,EAAiB;AACf,QAAIqP,KAAK,GAAG,0BAAZ;AACA,QAAIjH,UAAU,GAAGtK,OAAO,CAAC/G,IAAD,EAAO,YAAP,CAAxB;AACA,QAAI6f,OAAO,GAAG9Y,OAAO,CAAC/G,IAAD,EAAO,SAAP,CAArB;AAEA,QAAI8f,OAAO,GAAGja,IAAI,CAACga,OAAO,CAACrqB,KAAT,CAAlB;;AAEA,QAAI,WAAW+L,IAAX,CAAgBse,OAAO,CAAC5hB,IAAxB,KAAiC4hB,OAAO,CAACvG,QAAR,KAAqB,WAA1D,EAAuE;AACrE;AACA;AACA,UAAIrL,SAAS,GAAGjF,WAAW,CAAC6W,OAAD,EAAU1iB,MAAV,EAAkB8C,KAAlB,CAA3B;AACAA,MAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACAvQ,MAAAA,KAAK,CAACgO,SAAN,GAAkB,IAAlB;AAEA6R,MAAAA,OAAO,GAAI,qBAAoB7R,SAAU,KAAzC;AACD;;AAED,QAAI1Y,GAAG,GAAGwR,OAAO,CAAC/G,IAAD,EAAO,KAAP,CAAjB;AAEAC,IAAAA,KAAK,CAACuQ,GAAN,CAAU8H,KAAV;AAEArY,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CACG,IAAGqb,KAAM;;oBAEIwH,OAAQ;YAChBzO,UAAU,GAAI,YAAWxL,IAAI,CAACwL,UAAU,CAAC7b,KAAZ,CAAmB,EAAtC,GAA0C,EAAG;;YAEvDwK,IAAI,CAAC+f,QAAL,GAAiB,QAAOxqB,GAAG,GAAGA,GAAG,CAACC,KAAP,GAAe,OAAQ,GAAlD,GAAuD,EAAG,GANlE;AAQAwK,IAAAA,IAAI,CAACggB,OAAL,GAAgB,KAAI1H,KAAM,GAA1B;AACD,GA9BD,MA8BO,IAAItY,IAAI,CAACyP,IAAT,EAAe;AAIvB,CA5CM;AA8CP,AAAO,IAAIF,OAAK,GAAG,CAACvP,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAID,IAAI,CAACggB,OAAT,EAAkB;AAChB/f,IAAAA,KAAK,CAACI,MAAN,CAAapD,IAAb,CAAkB+C,IAAI,CAACggB,OAAvB;AACD;AACF,CAJM;;ACjCA,IAAIjgB,OAAK,GAAG,CACjB6W,OADiB,EAEjBC,OAFiB,EAGjBC,OAHiB,EAIjBmJ,OAJiB,EAKjBlJ,OALiB,EAMjBC,OANiB,EAOjBC,OAPiB,EAQjBiJ,OARiB,EASjBhJ,OATiB,EAUjBiJ,OAViB,EAWjB/I,OAXiB,EAYjBC,KAZiB,EAajBE,OAbiB,EAcjBC,OAdiB,EAejBC,OAfiB,CAAZ;AAkBP,AAAO,IAAIlI,OAAK,GAAG,CACjBkI,OADiB,EAEjBC,KAFiB,EAGjBF,OAHiB,EAIjBT,OAJiB,EAKjBC,OALiB,EAMjBiJ,OANiB,EAOjBnJ,OAPiB,CAAZ;;;;;;;;AC5BQ,SAASlF,qBAAT,CAA6B5R,IAA7B,EAAmC7C,MAAnC,EAA2C8C,KAA3C,EAAkDmV,IAAlD,EAAwD;AACrE,MAAImD,eAAe,GAAG7P,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAxC;;AACA,MAAIsY,eAAJ,EAAqB;AACnB,YAAQvY,IAAI,CAAC/B,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;AACLqX,UAAAA,SAAS,EAAE,IADN;AAEL1J,UAAAA,SAAS,EAAEiM,cAAY,CAAC7X,IAAD,EAAO7C,MAAP,EAAe8C,KAAf;AAFlB,SAAP;;AAKF;AACE,eAAO;AACLqV,UAAAA,SAAS,EAAE,IADN;AAEL,WAACtV,IAAI,CAAC/B,IAAN,GAAayK,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf;AAF1B,SAAP;AAfJ;AAoBD;;AAED,UAAQD,IAAI,CAAC/B,IAAb;AACE,SAAK,qBAAL;AACA,SAAK,sBAAL;AACA,SAAK,wBAAL;AACA,SAAK,yBAAL;AACE,aAAO;AACL,SAACd,MAAM,CAACc,IAAP,KAAgB,OAAhB,GAA0B,cAA1B,GAA2C+B,IAAI,CAAC/B,IAAjD,GAAwD+B,IAAI,CAACxK;AADxD,OAAP;;AAIF,SAAK,gBAAL;AACA,SAAK,mBAAL;AACA,SAAK,iBAAL;AACA,SAAK,kBAAL;AACE,aAAO;AACL4qB,QAAAA,WAAW,EAAEpgB,IAAI,CAACxK;AADb,OAAP;;AAIF,SAAK,aAAL;AACE,aAAO6qB,cAAc,CAAC;AACpB5H,QAAAA,WAAW,EAAEzY,IAAI,CAACxK;AADE,OAAD,CAArB;;AAIF,SAAK,YAAL;AACE,aAAO6qB,cAAc,CAAC;AACpBC,QAAAA,YAAY,EAAEtgB,IAAI,CAACxK;AADC,OAAD,CAArB;;AAIF,SAAK,eAAL;AACA,SAAK,eAAL;AACE,aAAO+qB,eAAe,CAACvgB,IAAD,EAAO7C,MAAP,AAAA,CAAtB;;AAEF,SAAK,YAAL;AACA,SAAK,YAAL;AACE,aAAO;AACL1G,QAAAA,UAAU,EAAE+pB,aAAa,CAACxgB,IAAD,EAAO7C,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;AACLyO,QAAAA,SAAS,EAAEiM,cAAY,CAAC7X,IAAD,EAAO7C,MAAP,EAAe8C,KAAf;AADlB,OAAP;;AAIF,SAAK,QAAL;AACE,aAAO;AACLqF,QAAAA,MAAM,EAAE8P,IAAI,GAAGpV,IAAI,CAACxK,KAAR,GAAgBmgB,QAAQ,CAAC3V,IAAI,CAACxK,KAAN,EAAa,EAAb;AAD/B,OAAP;;AAIF,SAAK,OAAL;AACE;AACA,UAAI,UAAU+L,IAAV,CAAepE,MAAM,CAACc,IAAtB,KAA+B2L,KAAK,CAAC5J,IAAD,EAAO,aAAP,CAAxC,EAA+D;AAC7D,eAAO;AACL0R,UAAAA,OAAO,EAAE,IADJ;AAEL+O,UAAAA,oBAAoB,EAAEzgB,IAAI,CAACxK;AAFtB,SAAP;AAID,OAPH;AASE;;;AACA,aAAO;AACLkrB,QAAAA,KAAK,EAAE1gB,IAAI,CAACxK;AADP,OAAP;;AAIF,SAAK,YAAL;AACE,aAAO;AACL2N,QAAAA,UAAU,EAAEwd,aAAa,CAAC3gB,IAAD,EAAO7C,MAAP;AADpB,OAAP;;AAIF;AACE,aAAO;AACL,SAAC6C,IAAI,CAAC/B,IAAN,GAAa8P,mBAAmB,CAAC/N,IAAD;AAD3B,OAAP;AA1EJ;AA8ED;;AAED,IAAIwgB,aAAa,GAAG,CAACxgB,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC3C,MAAI2gB,UAAU,GAAG7Z,OAAO,CAAC5J,MAAD,EAAS,YAAT,CAAxB,CAD2C;;AAG3C,MAAI1G,UAAU,GAAGuJ,IAAI,CAACxK,KAAL,CAAWsB,OAAX,CAAmB,KAAnB,EAA0B,EAA1B,CAAjB;;AAEA,MAAI8pB,UAAU,KAAK5gB,IAAI,CAACkI,IAAL,CAAUC,IAAV,IAAkByY,UAAU,CAAC1Y,IAAX,CAAgBC,IAAvC,CAAd,EAA4D;AAC1D,WAAQ,KAAInI,IAAI,CAACkI,IAAL,CAAUC,IAAV,GAAiB,qBAAjB,GAAyC1R,UAAW,IAC9DmqB,UAAU,CAAC1Y,IAAX,CAAgBC,IAAhB,GAAuB,qBAAvB,GAA+CyY,UAAU,CAACprB,KAC3D,IAFD;AAGD;;AAED,SAAOorB,UAAU,GAAI,GAAEnqB,UAAW,IAAGmqB,UAAU,CAACprB,KAAM,EAArC,GAAyCiB,UAA1D;AACD,CAZD;;AAcA,IAAIkqB,aAAa,GAAG,CAAC3gB,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC3C,MAAI8C,QAAQ,GAAGgE,OAAO,CAAC5J,MAAD,EAAS,UAAT,CAAtB,CAD2C;;AAG3C,MAAI0jB,aAAa,GAAG9d,QAAQ,GAAGA,QAAQ,CAACvN,KAAZ,GAAoB,EAAhD;AACA,SAAOwK,IAAI,CAACxK,KAAL,GAAaqrB,aAApB;AACD,CALD;;AAOA,IAAIN,eAAe,GAAG,CAACvgB,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC7C,MAAI4E,aAAa,GAAGkC,OAAO,CAAC5J,MAAD,EAAS,eAAT,CAA3B;AACA,MAAIyH,aAAa,GAAGmC,OAAO,CAAC5J,MAAD,EAAS,eAAT,CAA3B;AAEA,SAAOkjB,cAAc,CAAC;AACpB;AACAS,IAAAA,YAAY,EAAE;AACZviB,MAAAA,KAAK,EAAEsG,aAAa,GAAGA,aAAa,CAACrP,KAAjB,GAAyB,CADjC;AAEZwN,MAAAA,MAAM,EAAE4B,aAAa,GAAGA,aAAa,CAACpP,KAAjB,GAAyB;AAFlC;AAFM,GAAD,CAArB;AAOD,CAXD;;AAaA,IAAI6qB,cAAc,GAAG3Z,GAAG,IAAI;AAC1BA,EAAAA,GAAG,CAACqa,SAAJ,GAAgB,CAAhB,CAD0B;;AAE1Bra,EAAAA,GAAG,CAACsa,aAAJ,GAAoB,CAApB;AACA,SAAOta,GAAP;AACD,CAJD;;AAMA,IAAI0F,cAAY,GAAG,CAACjF,IAAD,EAAOmR,KAAP,EAAcrY,KAAd,EAAqBoI,IAAI,GAAG,EAA5B,KAAmC;AACpD,MAAI,CAAClB,IAAL,EAAW,OAAO,KAAP;AAEX,MAAIoR,eAAe,GAAG7P,kBAAkB,CAACvB,IAAD,EAAOmR,KAAP,EAAcrY,KAAd,CAAxC;;AACA,MAAIsY,eAAJ,EAAqB;AACnB,WAAOlQ,IAAI,GAAI,QAAOkQ,eAAgB,IAAGlQ,IAAK,IAAnC,GAAyCkQ,eAApD;AACD;;AAED,MAAIpR,IAAI,CAACe,IAAL,CAAUC,IAAd,EAAoB;AAClB,WAAQ,MAAKhB,IAAI,CAAC3R,KAAM,IAAG6S,IAAK,EAAhC;AACD;;AAED,SAAO,OAAOlB,IAAI,CAAC3R,KAAZ,KAAsB,QAAtB,IAAkC6S,IAAlC,GACF,GAAElB,IAAI,CAAC3R,KAAM,GAAE6S,IAAK,EADlB,GAEHlB,IAAI,CAAC3R,KAFT;AAGD,CAfD;;AAiBA,IAAIojB,mBAAiB,GAAG,CAACzR,IAAD,EAAOhK,MAAP,EAAe8C,KAAf,EAAsBoI,IAAtB,KACtBlB,IAAI,IAAI;AACN,GAACA,IAAI,CAAClJ,IAAN,GAAamO,cAAY,CAACjF,IAAD,EAAOhK,MAAP,EAAe8C,KAAf,EAAsBoI,IAAtB;AADnB,CADV;;AAKA,IAAIwP,cAAY,GAAG,CAAC7X,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,KAAyB;AAC1C,MAAIqE,MAAM,GAAGyC,OAAO,CAAC5J,MAAD,EAAS,QAAT,CAApB;AACA,MAAIoH,OAAO,GAAGwC,OAAO,CAAC5J,MAAD,EAAS,SAAT,CAArB;AACA,MAAIqH,OAAO,GAAGuC,OAAO,CAAC5J,MAAD,EAAS,SAAT,CAArB;AACA,MAAIsH,KAAK,GAAGsC,OAAO,CAAC5J,MAAD,EAAS,OAAT,CAAnB;AACA,MAAIuH,MAAM,GAAGqC,OAAO,CAAC5J,MAAD,EAAS,QAAT,CAApB;AACA,MAAIwH,MAAM,GAAGoC,OAAO,CAAC5J,MAAD,EAAS,QAAT,CAApB;AACA,MAAIgI,UAAU,GAAG4B,OAAO,CAAC5J,MAAD,EAAS,YAAT,CAAxB;AACA,MAAIiI,UAAU,GAAG2B,OAAO,CAAC5J,MAAD,EAAS,YAAT,CAAxB;AAEA,SAAO,CACLyb,mBAAiB,CAACtU,MAAD,EAASnH,MAAT,EAAiB8C,KAAjB,EAAwB,KAAxB,CADZ,EAEL2Y,mBAAiB,CAACrU,OAAD,EAAUpH,MAAV,EAAkB8C,KAAlB,EAAyB,KAAzB,CAFZ,EAGL2Y,mBAAiB,CAACpU,OAAD,EAAUrH,MAAV,EAAkB8C,KAAlB,EAAyB,KAAzB,CAHZ,EAIL2Y,mBAAiB,CAACnU,KAAD,EAAQtH,MAAR,EAAgB8C,KAAhB,CAJZ,EAKL2Y,mBAAiB,CAAClU,MAAD,EAASvH,MAAT,EAAiB8C,KAAjB,CALZ,EAML2Y,mBAAiB,CAACjU,MAAD,EAASxH,MAAT,EAAiB8C,KAAjB,CANZ,EAOL2Y,mBAAiB,CAACzT,UAAD,EAAahI,MAAb,EAAqB8C,KAArB,CAPZ,EAQL2Y,mBAAiB,CAACxT,UAAD,EAAajI,MAAb,EAAqB8C,KAArB,CARZ,EASLjK,MATK,CASE8R,OATF,CAAP;AAUD,CApBD;;AC5KA,mBAAe,CAAC;AAAE6K,EAAAA;AAAF,CAAD,KACb7L,OAAO,CAAC6L,MAAD,CAAP,GACK,kCAAiCrV,IAAI,CAACC,SAAL,CAAeoV,MAAf,CAAuB,GAD7D,GAEI,EAHN;;ACaA,IAAIsG,OAAK,GAAG1S,GAAG,IAAI,eAAehF,IAAf,CAAoBgF,GAApB,CAAnB;;AAEA,SAAS2S,gBAAT,CAAwBlZ,IAAxB,EAA8B7C,MAA9B,EAAsC8C,KAAtC,EAA6C;AAC3C,MAAIgG,MAAM,GAAG6E,SAAS,CAAC9K,IAAD,EAAO7C,MAAP,AAAA,CAAtB;;AAEA,MAAI8I,MAAM,KAAKgT,OAAK,CAACjZ,IAAI,CAACxK,KAAN,CAAL,IAAqBwK,IAAI,CAACkI,IAAL,CAAUC,IAApC,CAAV,EAAqD;AACnD,WAAQ,WAAUO,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAsB,KAA1D;AACD,GAFD,MAEO,IAAIgZ,OAAK,CAACjZ,IAAI,CAACxK,KAAN,CAAL,IAAqBwK,IAAI,CAACkI,IAAL,CAAUC,IAAnC,EAAyC;AAC9C,QAAInI,IAAI,CAACsH,YAAL,IAAqB,CAAC2R,OAAK,CAACjZ,IAAI,CAACsH,YAAN,CAA/B,EAAoD;AAClDrH,MAAAA,KAAK,CAACkZ,KAAN,CAAY/jB,OAAZ,CAAoByF,IAAI,IAAI;AAC1B,YAAIA,IAAI,CAACyM,YAAL,KAAsBtH,IAAI,CAACsH,YAA/B,EAA6C;AAC3CzM,UAAAA,IAAI,CAAC5D,IAAL,GAAY,QAAZ;AACA,cAAIgH,IAAI,GAAG8M,WAAW,CAAClQ,IAAI,CAACyM,YAAN,CAAtB;;AACA,cAAI,CAACrH,KAAK,CAAC4K,MAAN,CAAa3U,QAAb,CAAsB2E,IAAI,CAACyM,YAA3B,CAAL,EAA+C;AAC7CrH,YAAAA,KAAK,CAAC4K,MAAN,CAAa5N,IAAb,CAAkB;AAChBgB,cAAAA,IADgB;AAEhB/G,cAAAA,IAAI,EAAE2D,IAAI,CAACyM;AAFK,aAAlB;AAID;;AACDzM,UAAAA,IAAI,CAACyM,YAAL,GAAoBrJ,IAApB;AACD;AACF,OAZD;AAaD;;AACD,WAAQ,WAAU+B,IAAI,CAACkI,IAAL,CAAUC,IAAV,GAAiBnI,IAAI,CAACxK,KAAtB,GAA8B4S,IAAI,CAACpI,IAAI,CAACxK,KAAN,CAAa,KAAjE;AACD,GAjBM,MAiBA;AACL,QAAIyQ,MAAJ,EAAY;AACVyE,MAAAA,gBAAgB,CAACzK,KAAD,EAAQgG,MAAM,CAACsD,WAAf,EAA4BtD,MAAM,CAAC0E,KAAnC,CAAhB;AACD;;AACD,QAAI1M,IAAI,GAAG8M,WAAW,CAAC/K,IAAI,CAACxK,KAAN,CAAtB;;AACA,QAAI,CAACyK,KAAK,CAAC4K,MAAN,CAAa3U,QAAb,CAAsB8J,IAAI,CAACxK,KAA3B,CAAL,EAAwC;AACtCyK,MAAAA,KAAK,CAAC4K,MAAN,CAAa5N,IAAb,CAAkB;AAChBgB,QAAAA,IADgB;AAEhB/G,QAAAA,IAAI,EAAE8I,IAAI,CAACxK;AAFK,OAAlB;AAID;;AAED,WAAOyQ,MAAM,GACTJ,IAAI,CACFyD,uBAAuB,CAACrD,MAAM,CAAC0C,WAAR,EAAqB1C,MAAM,CAACsD,WAA5B,EAAyCtL,IAAzC,CADrB,CADK,GAIR,IAAGA,IAAK,GAJb;AAKD;AACF;;AAED,IAAIqK,cAAY,GAAG,2DAAnB;AACA,IAAI8Q,gBAAc,GAAG,wBAArB;AAEA,AAAe,SAASzK,qBAAT,CAA6B3O,IAA7B,EAAmC7C,MAAnC,EAA2C8C,KAA3C,EAAkD;AAC/D,MACEA,KAAK,CAAC4I,IAAN,KACC7I,IAAI,CAACxK,KAAL,KAAe,cAAf,IACCwK,IAAI,CAACxK,KAAL,KAAe,aADhB,IAECwK,IAAI,CAACxK,KAAL,KAAe,gBAFhB,IAGCwK,IAAI,CAACxK,KAAL,KAAe,gBAHhB,IAICwK,IAAI,CAACxK,KAAL,KAAe,iBAJhB,IAKCwK,IAAI,CAACxK,KAAL,KAAe,wBALhB,IAMCwK,IAAI,CAACxK,KAAL,KAAe,eANhB,IAOCwK,IAAI,CAACxK,KAAL,KAAe,sBAPhB,IAQCwK,IAAI,CAACxK,KAAL,KAAe,gBATjB,CADF,EAWE;AACA,WAAO;AACL,OAACwK,IAAI,CAAC/B,IAAN,GAAc,IAAG+B,IAAI,CAACxK,KAAL,CAAWsB,OAAX,CAAmB,QAAnB,EAA6B,OAA7B,CAAsC;AADlD,KAAP;AAGD,GAfD,MAeO,IAAIgS,oBAAoB,CAAC3L,MAAD,CAApB,IAAgCmL,cAAY,CAAC/G,IAAb,CAAkBvB,IAAI,CAACxK,KAAvB,CAApC,EAAmE;AACxE,WAAO;AACL,OAACwK,IAAI,CAAC/B,IAAN,GAAc,IAAG+B,IAAI,CAACxK,KAAL,CAAWsB,OAAX,CAAmB,QAAnB,EAA6B,aAA7B,CAA4C;AADxD,KAAP;AAGD,GAJM,MAIA,IAAI2T,aAAa,CAACzK,IAAD,EAAO7C,MAAP,CAAjB,EAAiC;AACtC,WACE,CAACA,MAAM,CAAC6N,KAAR,IAAiB;AACf2T,MAAAA,MAAM,EAAEzF,gBAAc,CAAClZ,IAAD,EAAO7C,MAAP,EAAe8C,KAAf;AADP,KADnB;AAKD,GANM,MAMA,IAAIyI,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAtB,EAA6C;AAClD,WAAO;AACL,OAACD,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACM,kBAAkB,CAAC1I,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAAnB;AADZ,KAAP;AAGD,GAJM,MAIA,IAAI,WAAWsB,IAAX,CAAgBvB,IAAI,CAAC/B,IAArB,KAA8B+B,IAAI,CAACsZ,QAAL,KAAkB,WAApD,EAAiE;AACtE,QAAIvQ,QAAQ,GAAGC,WAAW,CAAChJ,IAAD,EAAO7C,MAAP,EAAe8C,KAAf,CAA1B;AACAA,IAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACAvQ,IAAAA,KAAK,CAACgO,SAAN,GAAkB,IAAlB;AAEA,QAAI7P,GAAG,GAAG;AACR,OAAC4B,IAAI,CAAC/B,IAAN,GAAc,qBAAoB8K,QAAS;AADnC,KAAV;;AAIA,QAAI,CAAC5L,MAAM,CAAC8M,OAAR,IAAmBmP,gBAAc,CAAC7X,IAAf,CAAoBvB,IAAI,CAAC/B,IAAzB,CAAvB,EAAuD;AACrDgC,MAAAA,KAAK,CAACsZ,OAAN,GAAgB,IAAhB;AACAnb,MAAAA,GAAG,CACD4B,IAAI,CAAC/B,IAAL,CAAUnH,OAAV,CAAkBsiB,gBAAlB,EAAkC,YAAlC,CADC,CAAH,GAEK,cAAarQ,QAAS,KAF3B;AAGD;;AAED,QAAI5L,MAAM,CAAC8M,OAAP,IAAkBmP,gBAAc,CAAC7X,IAAf,CAAoBvB,IAAI,CAAC/B,IAAzB,CAAtB,EAAsD;AACpDgC,MAAAA,KAAK,CAACqQ,YAAN,GAAqB,IAArB;AACAlS,MAAAA,GAAG,CAAC,KAAD,CAAH,GAAc,GAAE4B,IAAI,CAAC/B,IAAL,CAAUnH,OAAV,CAAkBsiB,gBAAlB,EAAkC,WAAlC,CAA+C,MAA/D;AACD;;AAED,WAAOhb,GAAP;AACD,GAtBM,MAsBA,IAAIjB,MAAM,CAAC8M,OAAP,IAAkBmP,gBAAc,CAAC7X,IAAf,CAAoBvB,IAAI,CAAC/B,IAAzB,CAAtB,EAAsD;AAC3DgC,IAAAA,KAAK,CAACqQ,YAAN,GAAqB,IAArB;AACA,WAAO;AACL,aAAQ,GAAEtQ,IAAI,CAAC/B,IAAL,CAAUnH,OAAV,CAAkBsiB,gBAAlB,EAAkC,WAAlC,CAA+C,MADpD;AAEL,OAACpZ,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AAFZ,KAAP;AAID,GANM,MAMA,IACLsI,cAAY,CAAC/G,IAAb,CAAkBvB,IAAI,CAACxK,KAAvB,KACA,CAAC,CAAC0T,mBAAmB,CAAC/L,MAAD,CADrB,IAEA,CAACA,MAAM,CAAC8M,OAHH,EAIL;AACA;AACA;AACA,QAAI,YAAY1I,IAAZ,CAAiBvB,IAAI,CAACxK,KAAtB,CAAJ,EAAkC;AAChC,aAAO;AACL,SAACwK,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAL,CAAWsB,OAAX,CAAmB,QAAnB,EAA6B,EAA7B,CAAD,EAAmCkJ,IAAnC;AADZ,OAAP;AAGD,KAJD,MAIO,IAAI,aAAauB,IAAb,CAAkBvB,IAAI,CAACxK,KAAvB,CAAJ,EAAmC;AACxC,UAAI;AACF,YAAIgkB,gBAAgB,GAAGtQ,mBAAmB,CAAC/L,MAAD,CAA1C;AACA,YAAI4L,QAAQ,GAAGC,WAAW,CACxBjC,OAAO,CAACyS,gBAAD,EAAmB,SAAnB,CADiB,EAExBA,gBAFwB,EAGxBvZ,KAHwB,CAA1B;AAKAA,QAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACAvQ,QAAAA,KAAK,CAACsZ,OAAN,GAAgB,IAAhB;AACA,eAAO;AACL,WAACvZ,IAAI,CAAC/B,IAAN,GAAc,cAAa8K,QAAS;AAD/B,SAAP;AAGD,OAZD,CAYE,OAAOhR,KAAP,EAAc;AACd,eAAO;AACL,WAACiI,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AADZ,SAAP;AAGD;AACF,KAlBM,MAkBA;AACL,aAAO;AACL,SAACA,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AADZ,OAAP;AAGD;AACF,GAlCM,MAkCA;AACL,WAAO;AACL,OAACA,IAAI,CAAC/B,IAAN,GAAamK,IAAI,CAACpI,IAAI,CAACxK,KAAN,EAAawK,IAAb;AADZ,KAAP;AAGD;AACF;;AC/JD,2BAAeC,KAAK,IAAI;AACtB,MAAItF,MAAM,CAAC6K,IAAP,CAAYvF,KAAK,CAAC0S,MAAlB,EAA0BtV,MAA1B,GAAmC,CAAvC,EAA0C;AACxC4C,IAAAA,KAAK,CAACya,IAAN,CAAWzd,IAAX,CAAgB,YAAhB;AACD;AACF,CAJD;;ACYA,IAAI0c,SAAO,GAAG;AACZsH,EAAAA,eAAe,EAAG;AADN,CAAd;AAIA,mBAAe,CAAC;AACdzE,EAAAA,aADc;AAEd1c,EAAAA,eAFc;AAGdsd,EAAAA,KAHc;AAIdL,EAAAA,cAJc;AAKdF,EAAAA,wBAAwB,GAAG,cALb;AAMdpgB,EAAAA,KANc;AAOdwe,EAAAA,KAPc;AAQdxhB,EAAAA,IARc;AASdkC,EAAAA,SATc;AAUdvC,EAAAA;AAVc,CAAD,KAWT;AACJ,MAAI6E,IAAI,GAAGxE,IAAI,CAACtC,EAAhB;AACA,MAAI+mB,SAAS,GAAGC,eAAe,CAACjoB,QAAhB,CAAyB+H,IAAzB,IAAkC,GAAEA,IAAK,GAAzC,GAA8CA,IAA9D;;AACA,MAAIA,IAAI,KAAKigB,SAAb,EAAwB;AACtBtpB,IAAAA,OAAO,CAACwpB,IAAR,CACG,OAAMngB,IAAK;6BACWigB,SAAU;2DAFnC;AAKD;;AAED,MAAIje,KAAK,GAAG;AACVoS,IAAAA,UAAU,EAAE,EADF;AAEV8H,IAAAA,QAAQ,EAAE,IAAIxkB,GAAJ,EAFA;AAGVkV,IAAAA,MAAM,EAAE,EAHE;AAIVhC,IAAAA,IAAI,EAAEpP,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBoP,IAJb;AAKVgS,IAAAA,UAAU,EAAEphB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBohB,UALnB;AAMVE,IAAAA,YAAY,EAAEthB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiBshB,YANrB;AAOVqB,IAAAA,YAAY,EAAE,IAAIzmB,GAAJ,EAPJ;AAQVwG,IAAAA,IAAI,EAAE,IARI;AASV8R,IAAAA,SAAS,EAAE,KATD;AAUVuO,IAAAA,aAAa,EAAEpmB,IAAI,IAAIomB,aAAa,CAACpmB,IAAD,EAAOqD,IAAP,CAV1B;AAWVmY,yBAAAA,qBAXU;AAYVjD,yBAAAA,qBAZU;AAaVuG,IAAAA,OAAO,EAAE,KAbC;AAcV9B,IAAAA,aAAa,EAAE,IAdL;AAeVvW,IAAAA,OAAO,EAAE1F,EAAE,IAAI;AACb,UAAI6F,UAAU,GAAGtB,qBAAqB,CAAC;AACrCvE,QAAAA,EADqC;AAErCsC,QAAAA,IAFqC;AAGrCkC,QAAAA,SAHqC;AAIrCvC,QAAAA;AAJqC,OAAD,CAAtC;AAOA,aAAO4D,UAAU,IAAI,CAACA,UAAU,CAACtD,MAA1B,IAAoCsD,UAAU,CAACrD,MAAX,CAAkBF,IAAlB,CAAuBoD,OAAlE;AACD,KAxBS;AAyBVyf,IAAAA,IAAI,EAAE,EAzBI;AA0BVc,IAAAA,KA1BU;AA2BVhS,IAAAA,MAAM,EAAE,EA3BE;AA4BV2R,IAAAA,cAAc,EAAE,EA5BN;AA6BV9e,IAAAA,IAAI,EAAEigB,SA7BI;AA8BVhhB,IAAAA,QAAQ,EAAEzD,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiByD,QA9BjB;AA+BVE,IAAAA,cAAc,EAAE3D,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB2D,cA/BvB;AAgCV8jB,IAAAA,KAAK,EAAE,EAhCG;AAiCV7gB,IAAAA,MAAM,EAAE,EAjCE;AAkCVsS,IAAAA,MAAM,EAAE,EAlCE;AAmCVvS,IAAAA,SAAS,EAAE,QAnCD;AAoCVE,IAAAA,WAAW,EAAE,QApCH;AAqCVqW,IAAAA,OAAO,EAAE,EArCC;AAsCVla,IAAAA,KAtCU;AAuCVwe,IAAAA,KAvCU;AAwCV4B,IAAAA,wBAxCU;AAyCVzP,IAAAA,cAAc,EAAE;AAAE,OAAC8Q,SAAD,GAAa,CAAf;AAAkBG,MAAAA,SAAS,EAAE,CAA7B;AAAgCC,MAAAA,MAAM,EAAE,CAAxC;AAA2CC,MAAAA,KAAK,EAAE;AAAlD,KAzCN;AA0CV7D,IAAAA,IAAI,EAAE,EA1CI;;AA2CVlK,IAAAA,GAAG,CAAC8H,KAAD,EAAQ5H,MAAM,GAAG,KAAjB,EAAwB;AACzB,UAAIA,MAAJ,EAAY;AACVzQ,QAAAA,KAAK,CAACqc,IAAN,CAAWhE,KAAX,IAAoB,IAApB;AACD;;AAED,UACErY,KAAK,CAACya,IAAN,CAAWxkB,QAAX,CAAoBoiB,KAApB,KACA,QAAQ/W,IAAR,CAAa+W,KAAb,CADA,IAEA,qBAAqBA,KAFrB,IAGAA,KAAK,KAAK4F,SAJZ,EAME;AAEFje,MAAAA,KAAK,CAACya,IAAN,CAAWzd,IAAX,CAAgBqb,KAAhB;AACD,KAzDS;;AA0DV6C,IAAAA,WAAW,EAAE1hB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB0hB,WA1DpB;AA2DVC,IAAAA,UAAU,EAAE3hB,IAAI,CAACE,MAAL,CAAYF,IAAZ,CAAiB2hB;AA3DnB,GAAZ;AA8DAnb,EAAAA,KAAK,CAACxH,KAAN,GAAcgB,IAAI,CAACE,MAAL,CAAYlB,KAA1B;AACAwH,EAAAA,KAAK,CAACkZ,KAAN,GAAc1f,IAAI,CAACE,MAAL,CAAYwf,KAA1B;AACAlZ,EAAAA,KAAK,CAAC8c,cAAN,GAAuBA,cAAvB;AAEAc,EAAAA,IAAI,CAACpkB,IAAI,CAACE,MAAL,CAAYF,IAAb,EAAmB+kB,SAAnB,EAA4Bve,KAA5B,CAAJ;AAEAkhB,AACAC,EAAAA,mBAAmB,CAACnhB,KAAD,CAAnB;;AAEA,MAAIA,KAAK,CAAC4I,IAAV,EAAgB;AACd5I,IAAAA,KAAK,CAACuQ,GAAN,CAAU,cAAV;AACD;;AAED,SAAO;AACL4E,IAAAA,IAAI,EAAEqJ,WAAW,CAAC;AAChB7E,MAAAA,SAAS,EAAEF,aAAa,CAAC;AACvBC,iBAAAA,SADuB;AAEvB7Z,QAAAA,eAFuB;AAGvBrG,QAAAA,IAHuB;AAIvBkC,QAAAA,SAJuB;AAKvBvC,QAAAA;AALuB,OAAD,CADR;AAQhBmkB,iBAAAA,WARgB;AAShBtf,MAAAA,IAAI,EAAEigB,SATU;AAUhBje,MAAAA;AAVgB,KAAD,CADZ;AAaLmc,IAAAA,YAAY,EAAEnc,KAAK,CAACmc,YAbf;AAcLjgB,IAAAA,IAAI,EAAE8D,KAAK,CAAC9D,IAdP;AAeLoU,IAAAA,gBAAgB,EAAEtQ,KAAK,CAACsQ,gBAfnB;AAiBL;;AAjBK,GAAP;AAmBD,CApHD;;ACdA,gBAAe0M,OAAO,IACpBoE,WAAgB,CAAC,EACf,GAAGpE,OADY;AAEfJ,EAAAA,wBAAwB,EAAE;AAFX,CAAD,CADlB;;ACEA,eAAe;AACb,eAAayE,QADA;AAEb,kBAAgBC,WAFH;AAGb,eAAaC;AAHA,CAAf;;ACAe,SAASC,UAAT,CAAoB;AACjCvoB,EAAAA,EADiC;AAEjCsjB,EAAAA,aAFiC;AAGjC1c,EAAAA,eAHiC;AAIjCsd,EAAAA,KAJiC;AAKjCnC,EAAAA,KALiC;AAMjCxe,EAAAA,KANiC;AAOjChD,EAAAA,IAPiC;AAQjCkC,EAAAA,SARiC;AASjCvC,EAAAA,YATiC;AAUjClF,EAAAA;AAViC,CAApB,EAWZ;AACD,MAAIwtB,MAAM,GAAG,IAAb;;AACA,MAAI;AACFA,IAAAA,MAAM,GAAGC,QAAQ,CAACzoB,EAAD,CAAR,CAAa;AACpBsjB,MAAAA,aADoB;AAEpB1c,MAAAA,eAFoB;AAGpB;AACAsd,MAAAA,KAJoB;AAKpB;AACAnC,MAAAA,KANoB;AAOpBxe,MAAAA,KAPoB;AAQpBhD,MAAAA,IARoB;AASpBkC,MAAAA,SAToB;AAUpBvC,MAAAA;AAVoB,KAAb,CAAT;AAaAK,IAAAA,IAAI,CAACmoB,OAAL;AAEA1tB,IAAAA,OAAO,IACLU,OAAO,CAACC,GAAR,CACG,GAAEgtB,KAAK,CAACC,KAAN,CAAY,GAAZ,CAAiB,IAAGroB,IAAI,CAACtC,EAAG,IAAGsC,IAAI,CAACmoB,OAAQ,IAAGC,KAAK,CAACE,GAAN,CAAUtoB,IAAI,CAACvC,IAAf,CAAqB,EADzE,CADF;AAKA,WAAO8qB,QAAQ,CAAClN,MAAT,CAAgB4M,MAAM,CAACtM,IAAvB,EAA6B;AAClC6M,MAAAA,MAAM,EAAE,OAD0B;AAElCC,MAAAA,WAAW,EAAE,IAFqB;AAGlCC,MAAAA,aAAa,EAAE;AAHmB,KAA7B,CAAP;AAKD,GA1BD,CA0BE,OAAOpqB,KAAP,EAAc;AACdnD,IAAAA,OAAO,CAACmD,KAAR,CAAc8pB,KAAK,CAACO,GAAN,CAAU,GAAV,CAAd,EAA8B3oB,IAA9B,EAAoC1B,KAAK,CAACsqB,SAAN,IAAmBtqB,KAAvD;AACA,WAAQ;;0BAEc0B,IAAI,CAACtC,EAAG;;;;eAInBsC,IAAI,CAACtC,EAAG;eACRsC,IAAI,CAACvC,IAAK;;;;;4BAKGuC,IAAI,CAACtC,EAAG;;;;;EAKlCuqB,MAAM,IAAIA,MAAM,CAACtM,IAAP,CAAYte,OAAZ,CAAoB,cAApB,EAAoC,EAApC,CAAwC;;;;EAIlDiB,KAAK,CAACuqB,OAAQ;EACdvqB,KAAK,CAACwqB,KAAM;GAtBV;AAwBD;AACF;;ACnEc,SAASC,aAAT,CAAuB;AACpCtpB,EAAAA,EADoC;AAEpCsjB,EAAAA,aAFoC;AAGpC1c,EAAAA,eAHoC;AAIpCsd,EAAAA,KAJoC;AAKpCjkB,EAAAA,SALoC;AAMpCsD,EAAAA,KANoC;AAOpCwe,EAAAA,KAPoC;AAQpCtf,EAAAA,SARoC;AASpCvC,EAAAA;AAToC,CAAvB,EAUZ;AACD,SAAO,CAAC,GAAGD,SAAJ,EACJzE,GADI,CACAwC,IAAI,IAAIkC,YAAY,CAACxD,GAAb,CAAiBsB,IAAjB,CADR,EAEJlB,MAFI,CAEGyD,IAAI,IAAI,CAACA,IAAI,CAACC,MAFjB,EAGJhF,GAHI,CAGA+E,IAAI,KAAK;AACZvC,IAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACuG,OAAL,CAAa9B,IAAI,CAACvC,IAAlB,CAAV,EAAmC,SAAnC,CADM;AAEZ4C,IAAAA,OAAO,EAAE2nB,UAAU,CAAC;AAClBvoB,MAAAA,EADkB;AAElBsjB,MAAAA,aAFkB;AAGlB1c,MAAAA,eAHkB;AAIlBsd,MAAAA,KAJkB;AAKlB3gB,MAAAA,KALkB;AAMlBwe,MAAAA,KANkB;AAOlB/mB,MAAAA,OAAO,EAAE,KAPS;AAQlBuF,MAAAA,IARkB;AASlBkC,MAAAA,SATkB;AAUlBvC,MAAAA;AAVkB,KAAD;AAFP,GAAL,CAHJ,CAAP;AAkBD;;AC9Bc,SAASqpB,kBAAT,CAA4BhpB,IAA5B,EAAkCvF,OAAlC,EAA2C;AACxD,MAAI,CAACA,OAAD,IAAY,CAACuF,IAAI,CAACE,MAAlB,IAA4BF,IAAI,CAACE,MAAL,CAAY+oB,QAAZ,CAAqBrlB,MAArB,KAAgC,CAAhE,EAAmE;AAEnEzI,EAAAA,OAAO,CAACmD,KAAR,CAAc8pB,KAAK,CAACO,GAAN,CAAU3oB,IAAI,CAACtC,EAAf,CAAd,EAAkC0qB,KAAK,CAACE,GAAN,CAAUtoB,IAAI,CAACvC,IAAf,CAAlC;AAEAuC,EAAAA,IAAI,CAACE,MAAL,CAAY+oB,QAAZ,CAAqBttB,OAArB,CAA6ButB,OAAO,IAAI;AACtC/tB,IAAAA,OAAO,CAACmD,KAAR,CACG,KAAI8pB,KAAK,CAACe,MAAN,CAAaD,OAAO,CAACE,GAAR,CAAYC,KAAZ,CAAkBC,IAA/B,CAAqC,KAAIlB,KAAK,CAACmB,IAAN,CAC5CL,OAAO,CAAC1rB,IADoC,CAE5C,WAAU0rB,OAAO,CAACI,IAAK,GAH3B;AAKD,GAND;AAOAnuB,EAAAA,OAAO,CAACC,GAAR,CAAY,EAAZ;AACD;;ACfM,IAAIouB,KAAK,GAAG,CACjB,cADiB,EAEjB,YAFiB,EAGjB,WAHiB,EAIjB,WAJiB,EAKjB,YALiB,EAMjB,iBANiB,EAOjB,iBAPiB,EAQjB,oBARiB,EASjB,kBATiB,EAUjB,gBAViB,EAWjB,gBAXiB,EAYjB,mBAZiB,EAajB,wBAbiB,EAcjB,yBAdiB,EAejB,mBAfiB,EAgBjB,mBAhBiB,EAiBjB,aAjBiB,EAkBjB,iBAlBiB,EAmBjB,iBAnBiB,EAoBjB,iBApBiB,EAqBjB,kBArBiB,EAsBjB,kBAtBiB,EAuBjB,kBAvBiB,EAwBjB,aAxBiB,EAyBjB,gBAzBiB,EA0BjB,qBA1BiB,EA2BjB,sBA3BiB,EA4BjB,gBA5BiB,EA6BjB,gBA7BiB,EA8BjB,aA9BiB,EA+BjB,QA/BiB,EAgCjB,UAhCiB,EAiCjB,OAjCiB,EAkCjB,QAlCiB,EAmCjB,SAnCiB,EAoCjB,WApCiB,EAqCjB,MArCiB,EAsCjB,QAtCiB,EAuCjB,UAvCiB,EAwCjB,WAxCiB,EAyCjB,eAzCiB,EA0CjB,UA1CiB,EA2CjB,YA3CiB,EA4CjB,UA5CiB,EA6CjB,YA7CiB,EA8CjB,UA9CiB,EA+CjB,WA/CiB,EAgDjB,YAhDiB,EAiDjB,QAjDiB,EAkDjB,SAlDiB,EAmDjB,gBAnDiB,EAoDjB,MApDiB,EAqDjB,eArDiB,EAsDjB,YAtDiB,EAuDjB,cAvDiB,EAwDjB,YAxDiB,EAyDjB,aAzDiB,EA0DjB,WA1DiB,EA2DjB,WA3DiB,EA4DjB,UA5DiB,EA6DjB,WA7DiB,EA8DjB,UA9DiB,EA+DjB,SA/DiB,EAgEjB,cAhEiB,EAiEjB,eAjEiB,EAkEjB,cAlEiB,EAmEjB,cAnEiB,EAoEjB,cApEiB,EAqEjB,WArEiB,EAsEjB,WAtEiB,EAuEjB,eAvEiB,EAwEjB,aAxEiB,EAyEjB,cAzEiB,EA0EjB,YA1EiB,EA2EjB,eA3EiB,EA4EjB,UA5EiB,EA6EjB,QA7EiB,EA8EjB,OA9EiB,EA+EjB,aA/EiB,EAgFjB,eAhFiB,EAiFjB,eAjFiB,EAkFjB,YAlFiB,EAmFjB,cAnFiB,EAoFjB,aApFiB,EAqFjB,QArFiB,EAsFjB,WAtFiB,EAuFjB,gBAvFiB,EAwFjB,cAxFiB,EAyFjB,aAzFiB,EA0FjB,eA1FiB,EA2FjB,KA3FiB,EA4FjB,YA5FiB,EA6FjB,YA7FiB,EA8FjB,OA9FiB,EA+FjB,QA/FiB,EAgGjB,QAhGiB,EAiGjB,QAjGiB,EAkGjB,SAlGiB,EAmGjB,SAnGiB,EAoGjB,kBApGiB,EAqGjB,kBArGiB,EAsGjB,YAtGiB,EAuGjB,aAvGiB,EAwGjB,YAxGiB,EAyGjB,YAzGiB,EA0GjB,OA1GiB,EA2GjB,WA3GiB,EA4GjB,aA5GiB,EA6GjB,UA7GiB,EA8GjB,QA9GiB;AAgHjB;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,OA5KiB;AA8KjB;AACA;AACA;AACA;AACA;AACA,aAnLiB,EAoLjB,mBApLiB;AAsLjB;AACA;AACA;AACA,qBAzLiB,EA0LjB,oBA1LiB,EA2LjB,qBA3LiB;AA6LjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YArMiB,CAAZ;AAuMP,AAAO,IAAIC,QAAQ,GAAG,CACpB,oBADoB,EAEpB,6BAFoB,EAGpB,UAHoB,EAIpB,mBAJoB,CAAf;AAOP,AAAO,IAAIlZ,SAAO,GAAG/L,IAAI,IAAIglB,KAAK,CAAC/sB,QAAN,CAAe+H,IAAf,CAAtB;AACP,AAAO,IAAIklB,UAAU,GAAGllB,IAAI,IAAIilB,QAAQ,CAAChtB,QAAT,CAAkB+H,IAAlB,CAAzB;;AC5MP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAImlB,OAAO,GAAG,UAASnG,OAAT,EAAkB;AAC9BA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;AACA,MAAI,OAAOA,OAAP,IAAkB,QAAlB,IAA8BtW,KAAK,CAACC,OAAN,CAAcqW,OAAd,CAAlC,EACEA,OAAO,GAAG;AAAEriB,IAAAA,MAAM,EAAEqiB;AAAV,GAAV;AACF,OAAKriB,MAAL,GAAc,EAAd;AACA,OAAKyoB,SAAL,GAAiBpG,OAAO,CAACoG,SAAR,IAAqB,CAAtC,CAL8B;;AAS9B,MAAI1c,KAAK,CAACC,OAAN,CAAcqW,OAAO,CAACriB,MAAtB,CAAJ,EAAmC,KAAKA,MAAL,GAAcqiB,OAAO,CAACriB,MAAtB,CAAnC,KACK,IAAI,OAAOqiB,OAAO,CAACriB,MAAf,IAAyB,QAA7B,EACH,KAAKA,MAAL,GAAcqiB,OAAO,CAACriB,MAAR,CAAehB,KAAf,CAAqB,UAArB,CAAd;AAEF,OAAK0pB,aAAL,GAAqBrG,OAAO,CAACqG,aAAR,IAAyB,KAA9C;AACD,CAdD;AAgBA;;;;;;;;;;;;;AAWAF,OAAO,CAACG,SAAR,CAAkB1tB,GAAlB,GAAwB,YAAW;AACjC,AAAC,KAAGoH,IAAH,CAAQumB,KAAR,CAAc,KAAK5oB,MAAnB,EAA2B6oB,SAA3B;AACD,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;AAKAL,OAAO,CAACG,SAAR,CAAkBG,UAAlB,GAA+B,YAAW;AACxC,OAAKJ,aAAL,GAAqB,KAArB;AACA,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;AAKAF,OAAO,CAACG,SAAR,CAAkBI,SAAlB,GAA8B,YAAW;AACvC,OAAKL,aAAL,GAAqB,IAArB;AACA,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;;AAMAF,OAAO,CAACG,SAAR,CAAkBK,YAAlB,GAAiC,UAASC,GAAT,EAAc;AAC7C,OAAKR,SAAL,GAAiBQ,GAAjB;AACA,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;;;AAOAT,OAAO,CAACG,SAAR,CAAkBO,QAAlB,GAA6B,UAASC,KAAT,EAAgBC,KAAhB,EAAuB;AAClD,SAAO,IAAIC,WAAJ,CAAgBF,KAAhB,EAAuBC,KAAvB,EAA8BF,QAArC;AACD,CAFD;AAIA;;;;;;;;;;;;;;;;;;;;;AAmBAV,OAAO,CAACG,SAAR,CAAkBptB,IAAlB,GAAyB,UAAS+tB,CAAT,EAAY;AACnC,MAAItH,CAAC,GAAG,IAAR;AACAsH,EAAAA,CAAC,GAAGA,CAAC,CAACC,IAAF,EAAJ;AACA,MAAI,CAACvH,CAAC,CAAC0G,aAAP,EAAsBY,CAAC,GAAGA,CAAC,CAACjT,WAAF,EAAJ;AACtB,MAAI9V,OAAO,GAAG,KAAKP,MAAL,CAAYgS,MAAZ,CAAmB,UAASwX,OAAT,EAAkBC,IAAlB,EAAwB;AACvD,QAAIhvB,CAAC,GAAGunB,CAAC,CAACkH,QAAF,CAAWI,CAAX,EAActH,CAAC,CAAC0G,aAAF,GAAkBe,IAAlB,GAAyBA,IAAI,CAACpT,WAAL,EAAvC,CAAR;AACA,QAAI5b,CAAC,GAAGunB,CAAC,CAACyG,SAAV,EAAqB,OAAOe,OAAP;AACrB,WAAOA,OAAO,CAACE,MAAR,CAAe;AACpB9uB,MAAAA,KAAK,EAAE6uB,IADa;AAEpBP,MAAAA,QAAQ,EAAEzuB;AAFU,KAAf,CAAP;AAID,GAPa,EAOX,EAPW,CAAd;AAQA,SAAOkvB,MAAM,CAACppB,OAAD,EAAU,UAAV,CAAb;AACD,CAbD;AAeA;;;;;;;;;AAOAioB,OAAO,CAACG,SAAR,CAAkB3tB,GAAlB,GAAwB,UAASsuB,CAAT,EAAY;AAClC,MAAIM,OAAO,GAAG,KAAKruB,IAAL,CAAU+tB,CAAV,EAAa,CAAb,CAAd;AACA,SAAOM,OAAO,GAAGA,OAAO,CAAChvB,KAAX,GAAmB,IAAjC;AACD,CAHD;;ACtJA,eAAe;AACb+I,EAAAA,KAAK,EAAE,IADM;AAEbJ,EAAAA,QAAQ,EAAE,IAFG;AAGbD,EAAAA,QAAQ,EAAE,IAHG;AAIb8E,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;AAoBba,EAAAA,GAAG,EAAE,IApBQ;AAqBbpB,EAAAA,OAAO,EAAE,IArBI;AAsBbD,EAAAA,OAAO,EAAE,IAtBI;AAuBbyB,EAAAA,MAAM,EAAE,IAvBK;AAwBbV,EAAAA,aAAa,EAAE,IAxBF;AAyBbC,EAAAA,aAAa,EAAE,IAzBF;AA0BbE,EAAAA,YAAY,EAAE,IA1BD;AA2Bbub,EAAAA,YAAY,EAAE,IA3BD;AA4Bblc,EAAAA,WAAW,EAAE,IA5BA;AA6BbK,EAAAA,KAAK,EAAE,IA7BM;AA8BbC,EAAAA,MAAM,EAAE,IA9BK;AA+BbC,EAAAA,MAAM,EAAE,IA/BK;AAgCbQ,EAAAA,UAAU,EAAE,IAhCC;AAiCbC,EAAAA,UAAU,EAAE,IAjCC;AAkCbnD,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;AA6Cb6d,EAAAA,UAAU,EAAE,IA7CC;AA8Cb1d,EAAAA,aAAa,EAAE,IA9CF;AA+CbC,EAAAA,UAAU,EAAE,IA/CC;AAgDbkC,EAAAA,WAAW,EAAE;AAhDA,CAAf;;ACOA,IAAIof,YAAY,GAAGC,OAAO,CAAChwB,GAAR,CAAYmG,IAAI,IAAIA,IAAI,CAAC/D,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAApB,CAAnB;AAEA,IAAI6tB,cAAc,GAAG,IAAIC,OAAJ,CAAsB,CACzC,GAAG3B,KADsC,EAEzC,IAFyC,EAGzC,WAHyC,EAIzC,IAJyC,EAKzC,IALyC,EAMzC,GANyC,EAOzC,MAPyC,EAQzC,OARyC,EASzC,YATyC,EAUzC,cAVyC,EAWzC,MAXyC,EAYzC,MAZyC,EAazC,WAbyC,EAczC,IAdyC,EAezC,IAfyC,EAgBzC,KAhByC,EAiBzC,WAjByC,EAkBzC,KAlByC,EAmBzC,KAnByC,EAoBzC,QApByC,EAqBzC,UArByC,EAsBzC,SAtByC,EAuBzC,eAvByC,EAwBzC,QAxByC,EAyBzC,WAzByC,EA0BzC,aA1ByC,EA2BzC,YA3ByC,EA4BzC,aA5ByC,EA6BzC,YA7ByC,EA8BzC,aA9ByC,EA+BzC,QA/ByC,EAgCzC,SAhCyC,EAiCzC,SAjCyC,EAkCzC,aAlCyC,EAmCzC,cAnCyC,EAoCzC,cApCyC,EAqCzC,aArCyC,EAsCzC,aAtCyC,EAuCzC,WAvCyC,EAwCzC,SAxCyC,EAyCzC,QAzCyC,EA0CzC,OA1CyC,EA2CzC,GA3CyC,EA4CzC,KA5CyC,EA6CzC,IA7CyC,EA8CzC,IA9CyC,EA+CzC,MA/CyC,EAgDzC,QAhDyC,EAiDzC,QAjDyC,EAkDzC,eAlDyC,EAmDzC,gBAnDyC,EAoDzC,kBApDyC,EAqDzC,aArDyC,EAsDzC,UAtDyC,EAuDzC,MAvDyC,EAwDzC,MAxDyC,EAyDzC,OAzDyC,EA0DzC,SA1DyC,EA2DzC,MA3DyC,EA4DzC,GA5DyC,EA6DzC,IA7DyC,EA8DzC,IA9DyC,EA+DzC,GA/DyC,EAgEzC,IAhEyC,EAiEzC,IAjEyC,CAAtB,CAArB;AAoEA,AAAO,IAAI4B,mBAAmB,GAAG9nB,KAAK,IAAI;AACxC,MAAI+nB,eAAe,GAAG,IAAIF,OAAJ,CACpB,gPACGhrB,KADH,CACS,GADT,EAEG0qB,MAFH,CAEUvnB,KAFV,CADoB,CAAtB;AAKA,SAAOub,KAAK,IAAIwM,eAAe,CAAClvB,GAAhB,CAAoB0iB,KAApB,CAAhB;AACD,CAPM;AASP,AAAO,IAAIyM,cAAc,GAAG5d,IAAI,IAAIwd,cAAc,CAAC/uB,GAAf,CAAmBuR,IAAnB,CAA7B;AAEP,AAAO,IAAI6d,wBAAwB,GAAGjsB,WAAW,IAAI;AACnD,MAAIksB,oBAAoB,GAAG,IAAIL,OAAJ,CACzBM,UAAkB,CAACZ,MAAnB,CAA0BvrB,WAA1B,CADyB,CAA3B;AAGA,SAAOzC,MAAM,IAAI2uB,oBAAoB,CAACrvB,GAArB,CAAyBU,MAAzB,CAAjB;AACD,CALM;AAOP,IAAI6uB,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;AAM1B/jB,EAAAA,YAAY,EAAE,CACZ,qBADY,EAEZ,sBAFY,EAGZ,wBAHY,EAIZ,yBAJY,CANY;AAY1BgkB,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;AAoB1BljB,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;AAsB1BwiB,EAAAA,UAAU,EAAE,CAAC,eAAD,EAAkB,eAAlB,EAAmC,YAAnC,EAAiD,aAAjD,CAtBc;AAuB1BziB,EAAAA,OAAO,EAAE,CAAC,cAAD,EAAiB,cAAjB,EAAiC,cAAjC,CAvBiB;AAwB1B0iB,EAAAA,QAAQ,EAAE,CAAC,WAAD,EAAc,WAAd,CAxBgB;AAyB1B5a,EAAAA,SAAS,EAAE,CACT,QADS,EAET,SAFS,EAGT,SAHS,EAIT,OAJS,EAKT,YALS,EAMT,YANS,CAzBe;AAiC1BwM,EAAAA,eAAe,EAAE,CAAC,kBAAD,EAAqB,kBAArB;AAjCS,CAA5B;AAmCA,IAAIqO,IAAI,GAAG,SAAX;AACA,IAAIC,YAAY,GAAG,UAAnB;;AAEA,IAAIC,IAAI,GAAG,oCAAX;AAEA,AAAO,IAAIvgB,EAAE,GAAG,CAACwgB,KAAD,EAAQ7D,IAAR,KAAiB6D,KAAK,CAACrlB,IAAN,CAAWwhB,IAAX,CAA1B;AACP,AAAO,IAAI8D,WAAW,GAAG9D,IAAI,IAAI3c,EAAE,CAAC+e,SAAD,EAAYpC,IAAZ,CAA5B;AACP,AAAO,IAAI9Y,OAAO,GAAG8Y,IAAI,IAAI3c,EAAE,CAACgf,KAAD,EAAQrC,IAAR,CAAxB;AACP,AAAO,IAAI+D,OAAO,GAAG/D,IAAI,IAAI3c,EAAE,CAACif,KAAD,EAAQtC,IAAR,CAAxB;AACP,AAAO,IAAIgE,MAAM,GAAGhE,IAAI,IAAI3c,EAAE,CAACkf,IAAD,EAAOvC,IAAP,CAAvB;AACP,AAAO,IAAI5Y,SAAS,GAAG4Y,IAAI,IAAI3c,EAAE,CAACmf,OAAD,EAAUxC,IAAV,CAA1B;AACP,AAAO,IAAIvY,UAAQ,GAAGuY,IAAI,IAAIA,IAAI,KAAK,QAAhC;AACP,AAAO,IAAIiE,SAAS,GAAGjE,IAAI,IAAI3c,EAAE,CAACqf,OAAD,EAAU1C,IAAV,CAA1B;AACP,AAAO,IAAIkE,WAAW,GAAGlE,IAAI,IAAIA,IAAI,KAAK,EAAnC;AACP,AACO,IAAImE,OAAO,GAAGnE,IAAI,IAAI3c,EAAE,CAACsf,KAAD,EAAQ3C,IAAR,CAAxB;AACP,AAAO,IAAI7iB,UAAU,GAAG6iB,IAAI,IAAIA,IAAI,KAAK,YAAlC;AACP,AAAO,IAAIoE,UAAU,GAAGpE,IAAI,IAAI3c,EAAE,CAACuf,QAAD,EAAW5C,IAAX,CAA3B;AACP,AAAO,IAAIpT,OAAO,GAAGoT,IAAI,IAAI,CAAC3c,EAAE,CAACyf,SAAD,EAAY9C,IAAZ,CAAH,IAAwB,CAAC5Y,SAAS,CAAC4Y,IAAD,CAAxD;AACP,AAAO,IAAI1Y,QAAM,GAAG0Y,IAAI,IAAIA,IAAI,KAAK,MAA9B;AACP,AAAO,IAAIqE,KAAK,GAAGrE,IAAI,IAAI3c,EAAE,CAACwf,GAAD,EAAM7C,IAAN,CAAtB;AACP,AAAO,IAAIsE,MAAM,GAAGtE,IAAI,IAAI3c,EAAE,CAAC0f,IAAD,EAAO/C,IAAP,CAAvB;AACP,AACO,IAAI3Y,SAAO,GAAG2Y,IAAI,IAAIA,IAAI,KAAK,OAA/B;AACP,AAAO,IAAIuE,sBAAsB,GAAGrpB,IAAI,IAAIA,IAAI,IAAI8nB,qBAA7C;AACP,AACO,IAAIwB,MAAM,GAAGxE,IAAI,IAAI3c,EAAE,CAACqgB,IAAD,EAAO1D,IAAP,CAAvB;AACP,AAAO,IAAIyE,aAAa,GAAGzE,IAAI,IAAI3c,EAAE,CAACsgB,YAAD,EAAe3D,IAAf,CAA9B;;AAEP,IAAIntB,GAAG,GAAG,CAAC6xB,KAAD,EAAQ1E,IAAR,KAAiBA,IAAI,CAAC9oB,KAAL,CAAWwtB,KAAX,CAA3B;;AAEA,IAAIC,WAAW,GAAG,CAACC,aAAD,EAAgBvgB,UAAhB,KAA+B;AAC/C;AACA;AACA;AAEA,MAAIugB,aAAa,KAAK,QAAlB,IAA8B,CAACvgB,UAAU,CAACyM,QAA9C,EAAwD;AACtDzM,IAAAA,UAAU,CAACyM,QAAX,GAAsB,GAAtB;AACD,GAFD,MAEO,IAAI8T,aAAa,KAAK,QAAtB,EAAgC;AACrC,QAAI,CAACvgB,UAAU,CAACwgB,OAAhB,EAAyB;AACvBxgB,MAAAA,UAAU,CAACwgB,OAAX,GAAqB,GAArB;AACD;;AACD,QAAI,CAACxgB,UAAU,CAACygB,QAAhB,EAA0B;AACxBzgB,MAAAA,UAAU,CAACygB,QAAX,GAAsB,EAAtB;AACD;AACF;;AACD,SAAOzgB,UAAP;AACD,CAhBD;;AAkBA,AAAO,IAAI0gB,YAAY,GAAG/E,IAAI,IAAI;AAChC;AACA,MAAI,CAACgF,CAAD,EAAIzgB,YAAJ,EAAkBqgB,aAAlB,EAAiCK,eAAjC,IAAoDpyB,GAAG,CAACuvB,SAAD,EAAYpC,IAAZ,CAA3D;AACA,MAAI3b,UAAU,GAAG;AACfiC,IAAAA,KAAK,EAAEse;AADQ,GAAjB;;AAIA,MAAIK,eAAJ,EAAqB;AACnB,QAAIptB,MAAM,GAAGotB,eAAe,CAACpuB,KAAhB,CAAsB,GAAtB,CAAb;;AACA,SAAK,IAAImS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGnR,MAAM,CAACyC,MAA3B,EAAmC0O,CAAC,GAAGA,CAAC,GAAG,CAA3C,EAA8C;AAC5C3E,MAAAA,UAAU,CAACxM,MAAM,CAACmR,CAAD,CAAP,CAAV,GAAwBkc,QAAQ,CAACrtB,MAAM,CAACmR,CAAC,GAAG,CAAL,CAAP,CAAhC;AACD;AACF;;AAED2b,EAAAA,WAAW,CAACC,aAAD,EAAgBvgB,UAAhB,CAAX;AAEA,SAAO;AACLjQ,IAAAA,EAAE,EAAEwD,MAAM,CAAC6K,IAAP,CAAY4B,UAAZ,EACD1O,IADC,GAEDhE,GAFC,CAEGa,GAAG,IAAK,GAAEA,GAAI,GAAE6R,UAAU,CAAC7R,GAAD,CAAM,EAFnC,EAGDN,IAHC,CAGI,EAHJ,CADC;AAKLqS,IAAAA,YAAY,EAAE2gB,QAAQ,CAAC3gB,YAAD,CALjB;AAMLF,IAAAA;AANK,GAAP;AAQD,CAxBM;AA0BP,AAAO,IAAI8gB,QAAQ,GAAGnF,IAAI,IAAI;AAC5B;AACA,MAAI,CAACgF,CAAD,EAAII,WAAJ,EAAiB/hB,EAAjB,EAAqBgiB,EAArB,EAAyB9P,KAAzB,IAAkC1iB,GAAG,CAACyvB,KAAD,EAAQtC,IAAR,CAAzC;AACA,SAAO;AACLzK,IAAAA,KAAK,EAAEA,KAAK,IAAIlS,EADX;AAELA,IAAAA,EAAE,EAAEkS,KAAK,GAAGlS,EAAH,GAAQ,IAFZ;AAGLiiB,IAAAA,KAAK,EAAEC,IAAI,CAACC,KAAL,CAAWJ,WAAW,CAAC9qB,MAAZ,GAAqB,CAAhC;AAHF,GAAP;AAKD,CARM;AASP,AAAO,IAAImrB,UAAU,GAAGzF,IAAI,IAAI;AAC9B,MAAI;AACF,WAAOntB,GAAG,CAAC6vB,OAAD,EAAU1C,IAAV,CAAH,CAAmB0F,KAAnB,CAAyB,CAAzB,CAAP;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,WAAO,EAAP;AACD;AACF,CANM;AAQP,AAAO,IAAIC,OAAO,GAAGC,SAAS,IAAI;AAChC,MAAI,CAACA,SAAL,EAAgB,OAAO,IAAP;AAEhB,MAAI3uB,KAAK,GAAG2uB,SAAS,CAACpzB,KAAV,CAAgByE,KAAhB,CAAsB,yBAAtB,CAAZ;AACA,MAAI,CAACA,KAAL,EAAY,OAAO,IAAP;AAEZ,MAAIjF,IAAI,GAAGiF,KAAK,CAAC,CAAD,CAAhB;AACA,MAAI,CAACqhB,OAAO,GAAG,IAAX,IAAmB,KAAK/Z,IAAL,CAAUvM,IAAV,IAAkBA,IAAI,CAAC4E,KAAL,CAAW,GAAX,CAAlB,GAAoC,CAAC5E,IAAD,CAA3D;AAEA,SAAO;AAAEiC,IAAAA,IAAI,EAAEgD,KAAK,CAAC,CAAD,CAAb;AAAkBjF,IAAAA,IAAlB;AAAwBsmB,IAAAA;AAAxB,GAAP;AACD,CAVM;AAYP,AAAO,IAAIuN,aAAa,GAAGD,SAAS,IAAI;AACtC,MAAI,CAACA,SAAD,IAAc,CAACA,SAAS,CAACpzB,KAA7B,EAAoC,OAAO,IAAP;AACpC,MAAI,CAAC+lB,QAAD,EAAWC,SAAX,IAAwBoN,SAAS,CAACpzB,KAAV,CAAgBoE,KAAhB,CAAsB,GAAtB,CAA5B;AACA,SAAO;AACL3C,IAAAA,IAAI,EAAE,IADD;AAELskB,IAAAA,QAFK;AAGLC,IAAAA;AAHK,GAAP;AAKD,CARM;AAUP,AAAO,IAAIsN,eAAe,GAAGF,SAAS,IAAI;AACxC,MAAI,CAACA,SAAD,IAAc,CAACA,SAAS,CAACpzB,KAA7B,EAAoC,OAAO,IAAP;AACpC,MAAI,CAACA,KAAD,EAAQkmB,QAAR,IAAoBkN,SAAS,CAACpzB,KAAV,CAAgBoE,KAAhB,CAAsB,GAAtB,CAAxB;AACA,SAAO;AACL3C,IAAAA,IAAI,EAAE,IADD;AAELzB,IAAAA,KAFK;AAGLkmB,IAAAA,QAAQ,EAAEA,QAAQ,KAAK;AAHlB,GAAP;AAKD,CARM;AAUP,AAAO,IAAIsB,WAAS,GAAG+F,IAAI,IAAI;AAC7B,MAAI3b,UAAU,GAAG,EAAjB;AACA,MAAIxM,MAAM,GAAGmoB,IAAI,CAACnpB,KAAL,CAAW,GAAX,CAAb;AACA,MAAImvB,SAAS,GAAGnuB,MAAM,CAAC,CAAD,CAAtB;;AAEA,MAAIA,MAAM,CAACyC,MAAP,KAAkB,CAAtB,EAAyB;AACvB+J,IAAAA,UAAU,CAAC2hB,SAAD,CAAV,GAAwBnuB,MAAM,CAAC,CAAD,CAA9B;AACD,GAFD,MAEO;AACLwM,IAAAA,UAAU,CAAC2hB,SAAD,CAAV,GAAwB,EAAxB;;AACA,SAAK,IAAIhd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGnR,MAAM,CAACyC,MAA3B,EAAmC0O,CAAC,GAAGA,CAAC,GAAG,CAA3C,EAA8C;AAC5C3E,MAAAA,UAAU,CAAC2hB,SAAD,CAAV,CAAsBnuB,MAAM,CAACmR,CAAD,CAA5B,IAAmCkc,QAAQ,CAACrtB,MAAM,CAACmR,CAAC,GAAG,CAAL,CAAP,CAA3C;AACD;AACF;;AAED,SAAO3E,UAAP;AACD,CAfM;AAgBP,AAAO,IAAIL,SAAO,GAAGgc,IAAI,IAAI;AAC3B;AACA,MAAI,CAACgF,CAAD,EAAI9pB,IAAJ,EAAUmqB,EAAV,EAAc5yB,KAAK,GAAG,EAAtB,IAA4BI,GAAG,CAACkwB,IAAD,EAAO/C,IAAP,CAAnC;AAEA,MAAI5b,IAAI,GAAG;AAAElJ,IAAAA,IAAF;AAAQ2H,IAAAA,MAAM,EAAE,KAAhB;AAAuBpQ,IAAAA;AAAvB,GAAX;;AAEA,MAAI4Q,EAAE,CAACugB,IAAD,EAAOnxB,KAAP,CAAN,EAAqB;AACnB,QAAI;AAEFwzB,IAAAA,EAFE,EAGFC,SAAS,GAAG,KAHV,EAIF3P,QAAQ,GAAG,EAJT;AAMF4P,IAAAA,EANE;AAQF5hB,IAAAA,YAAY,GAAG,EARb,IASA6hB,OAAO,CAAC3zB,KAAD,CATX;AAWA2R,IAAAA,IAAI,CAACvB,MAAL,GAAc,IAAd;AACAuB,IAAAA,IAAI,CAAC8hB,SAAL,GAAiBA,SAAS,KAAK,GAA/B;AACA9hB,IAAAA,IAAI,CAACmS,QAAL,GAAgBA,QAAhB;AACAnS,IAAAA,IAAI,CAAC3R,KAAL,GAAa8R,YAAY,IAAI9R,KAA7B;AACD;;AAED,SAAO2R,IAAP;AACD,CAzBM;AA0BP,AAAO,IAAIgiB,OAAO,GAAGpG,IAAI,IAAIntB,GAAG,CAAC+wB,IAAD,EAAO5D,IAAP,CAAH,CAAgB0F,KAAhB,CAAsB,CAAtB,CAAtB;AACP,AAAO,IAAIW,+BAA+B,GAAG,CAACnrB,IAAD,EAAOzI,KAAP,KAAiB;AAC5D,MAAIsW,KAAK,GAAGia,qBAAqB,CAAC9nB,IAAD,CAAjC;;AAEA,MAAIA,IAAI,KAAK,cAAb,EAA6B;AAC3B,QAAIorB,QAAQ,GAAG7zB,KAAK,CAACsB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAf;AAEA,WAAO,CACJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAGud,QAAS,EADnB,EAEJ,GAAEvd,KAAK,CAAC,CAAD,CAAI,IAAGud,QAAS,EAFnB,EAGJ,GAAEvd,KAAK,CAAC,CAAD,CAAI,IAAGud,QAAS,EAHnB,EAIJ,GAAEvd,KAAK,CAAC,CAAD,CAAI,IAAGud,QAAS,EAJnB,CAAP;AAMD,GATD,MASO,IAAIprB,IAAI,CAACvG,UAAL,CAAgB,QAAhB,KAA6BuG,IAAI,KAAK,SAA1C,EAAqD;AAC1D,QAAI,CAACM,KAAD,EAAQvH,KAAR,EAAe,GAAG0pB,KAAlB,IAA2BlrB,KAAK,CAACoE,KAAN,CAAY,GAAZ,CAA/B;AAEA,WAAO,CACJ,GAAEkS,KAAK,CAAC,CAAD,CAAI,IAAGvN,KAAK,CAACzH,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAwB,EADlC,EAEJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAG9U,KAAM,EAFhB,EAGJ,GAAE8U,KAAK,CAAC,CAAD,CAAI,IAAG4U,KAAK,CAACzrB,IAAN,CAAW,GAAX,CAAgB,EAH1B,CAAP;AAKD,GARM,MAQA,IAAIgJ,IAAI,KAAK,WAAb,EAA0B;AAC/B,QAAI,CAAC0F,OAAD,EAAUC,OAAV,EAAmB5B,UAAnB,EAA+BiD,YAA/B,EAA6C,GAAGyb,KAAhD,IAAyDlrB,KAAK,CAACoE,KAAN,CAC3D,GAD2D,CAA7D;AAIA,WAAO,CACJ,GAAEkS,KAAK,CAAC,CAAD,CAAI,IAAGnI,OAAO,CAAC7M,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EADpC,EAEJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAGlI,OAAO,CAAC9M,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EAFpC,EAGJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAG9J,UAAU,CAAClL,OAAX,CAAmB,IAAnB,EAAyB,EAAzB,CAA6B,EAHvC,EAIJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAG7G,YAAY,CAACnO,OAAb,CAAqB,IAArB,EAA2B,EAA3B,CAA+B,EAJzC,EAKJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAG4U,KAAK,CAACzrB,IAAN,CAAW,GAAX,CAAgB,EAL1B,CAAP;AAOD,GAZM,MAYA,IAAIgJ,IAAI,KAAK,YAAb,EAA2B;AAChC,QAAI,CAAC0F,OAAD,EAAUC,OAAV,EAAmB5B,UAAnB,EAA+B,GAAG0e,KAAlC,IAA2ClrB,KAAK,CAACoE,KAAN,CAAY,GAAZ,CAA/C;AAEA,WAAO,CACJ,GAAEkS,KAAK,CAAC,CAAD,CAAI,IAAGnI,OAAO,CAAC7M,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EADpC,EAEJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAGlI,OAAO,CAAC9M,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAA0B,EAFpC,EAGJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAG9J,UAAU,CAAClL,OAAX,CAAmB,IAAnB,EAAyB,EAAzB,CAA6B,EAHvC,EAIJ,GAAEgV,KAAK,CAAC,CAAD,CAAI,IAAG4U,KAAK,CAACzrB,IAAN,CAAW,GAAX,CAAgB,EAJ1B,CAAP;AAMD,GATM,MASA,IAAIgJ,IAAI,KAAK,UAAb,EAAyB;AAC9B,WAAO,CAAE,GAAE6N,KAAK,CAAC,CAAD,CAAI,IAAGtW,KAAM,EAAtB,EAA0B,GAAEsW,KAAK,CAAC,CAAD,CAAI,IAAGtW,KAAM,EAA9C,CAAP;AACD,GAFM,MAEA,IAAIyI,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,QAAnC,EAA6C;AAClD,QAAI,CAACiH,GAAD,EAAMb,KAAN,EAAa1B,MAAb,EAAqBM,IAArB,IAA6BzN,KAAK,CAACoE,KAAN,CAAY,GAAZ,CAAjC;AACAsL,IAAAA,GAAG,GAAGA,GAAG,CAACpO,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;AACAuN,IAAAA,KAAK,GAAGA,KAAK,GAAGA,KAAK,CAACvN,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAH,GAA6BoO,GAA1C;AACAvC,IAAAA,MAAM,GAAGA,MAAM,GAAGA,MAAM,CAAC7L,OAAP,CAAe,IAAf,EAAqB,EAArB,CAAH,GAA8BoO,GAA7C;AACAjC,IAAAA,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAACnM,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAH,GAA4BuN,KAAK,IAAIa,GAAhD;AAEA,WAAO,CACJ,GAAE4G,KAAK,CAAC,CAAD,CAAI,IAAG5G,GAAI,EADd,EAEJ,GAAE4G,KAAK,CAAC,CAAD,CAAI,IAAGzH,KAAM,EAFhB,EAGJ,GAAEyH,KAAK,CAAC,CAAD,CAAI,IAAGnJ,MAAO,EAHjB,EAIJ,GAAEmJ,KAAK,CAAC,CAAD,CAAI,IAAG7I,IAAK,EAJf,CAAP;AAMD,GAbM,MAaA,IAAIhF,IAAI,KAAK,MAAb,EAAqB;AAC1B,WAAO,CAAE,YAAWzI,KAAM,EAAnB,EAAsB,cAAtB,EAAsC,cAAtC,CAAP;AACD,GAFM,MAEA,IAAIyI,IAAI,KAAK,WAAb,EAA0B;AAC/B,WAAO,CAAE,uCAAF,CAAP;AACD,GAFM,MAEA,IAAIA,IAAI,KAAK,iBAAb,EAAgC;AACrC,QAAI,CAACqrB,CAAD,EAAIC,CAAJ,IAAS/zB,KAAK,CAACoE,KAAN,CAAY,GAAZ,CAAb;AACA,WAAO,CAAE,GAAEkS,KAAK,CAAC,CAAD,CAAI,IAAGwd,CAAE,EAAlB,EAAsB,GAAExd,KAAK,CAAC,CAAD,CAAI,IAAGyd,CAAC,IAAID,CAAE,EAA3C,CAAP;AACD;;AAED,SAAO,EAAP;AACD,CAlEM;AAmEP,AAAO,IAAIrB,QAAQ,GAAG,CAACzyB,KAAD,EAAQyI,IAAR,KAAiB;AACrC,MAAIipB,OAAO,CAAC1xB,KAAD,CAAX,EAAoB;AAClB,WAAOg0B,UAAU,CAACh0B,KAAD,EAAQ,EAAR,CAAjB;AACD,GAFD,MAEO,IAAI4xB,KAAK,CAAC5xB,KAAD,CAAT,EAAkB;AACvB,WAAOmgB,QAAQ,CAACngB,KAAD,EAAQ,EAAR,CAAf;AACD,GAFM,MAEA,IAAIyxB,WAAW,CAACzxB,KAAD,CAAf,EAAwB;AAC7B,WAAO,EAAP;AACD,GAFM,MAEA,IAAIuxB,MAAM,CAACvxB,KAAD,CAAV,EAAmB;AACxB,WAAO+xB,MAAM,CAAC/xB,KAAD,CAAb;AACD,GAFM,MAEA;AACL,WAAOuY,qBAAmB,CAACvY,KAAD,EAAQyI,IAAR,CAA1B;AACD;AACF,CAZM;AAcP,AAAO,IAAIwrB,YAAY,GAAGxrB,IAAI,IAAIwmB,YAAY,CAACvuB,QAAb,CAAsB+H,IAAtB,CAA3B;AAEP,IAAIyrB,aAAa,GAAG,CAClB,YADkB,EAElB,WAFkB;AAIlB,eAJkB;AAMlB;AANkB,CAApB;AAQA,AAAO,IAAIC,aAAa,GAAG1rB,IAAI,IAAIyrB,aAAa,CAACxzB,QAAd,CAAuB+H,IAAvB,CAA5B;;AAEP,IAAI2rB,YAAY,GAAG3rB,IAAI,IAAIA,IAAI,KAAK,QAAT,IAAqB,WAAWsD,IAAX,CAAgBtD,IAAhB,CAAhD;;AAEA,AAAO,IAAI4rB,WAAW,GAAG,CAACvR,KAAD,EAAQra,IAAR,EAAcqJ,YAAd,KACvBgR,KAAK,CAACjO,MAAN,IAAgBpM,IAAI,KAAK,MAAzB,GACI,OADJ,GAEI2rB,YAAY,CAAC3rB,IAAD,CAAZ,GACA,UADA,GAEA6rB,QAAQ,CAAC7rB,IAAD,CAAR,GACA,QADA,GAEA,QAPC;AASP,IAAI6P,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,CAACvY,KAAD,EAAQyI,IAAR,KAC/B6P,8BAA4B,CAAC5X,QAA7B,CAAsC+H,IAAtC,KAA+C,cAAcsD,IAAd,CAAmB/L,KAAnB,CAA/C,GACIwY,UAAU,CAACxY,KAAD,CADd,GAEIA,KAHC;AAKP,AAAO,SAASu0B,UAAT,CAAoB9jB,MAApB,EAA4B;AACjC,MAAIkL,SAAS,GAAGlL,MAAM,CAACzE,IAAP,CAAY3G,IAAI,IAAIA,IAAI,CAACye,QAAL,KAAkB,WAAtC,CAAhB;AACA,MAAI/H,UAAU,GAAGtL,MAAM,CAACzE,IAAP,CAAY3G,IAAI,IAAIA,IAAI,CAACye,QAAL,KAAkB,YAAtC,CAAjB;AACA,MAAI9H,iBAAiB,GAAGvL,MAAM,CAACzE,IAAP,CACtB3G,IAAI,IAAIA,IAAI,CAACye,QAAL,KAAkB,mBADJ,CAAxB;AAIA,SAAO,CACL9H,iBADK,EAELD,UAFK,EAGLJ,SAHK,EAIL,GAAGlL,MAAM,CAACjQ,MAAP,CACD6E,IAAI,IAAI,CAAC,6CAA6C0G,IAA7C,CAAkD1G,IAAI,CAACye,QAAvD,CADR,CAJE,EAOLtjB,MAPK,CAOE8R,OAPF,CAAP;AAQD;;ACndD,cAAe,CAACib,IAAD,EAAOiH,OAAP,EAAgBC,OAAhB,MAA6B;AAC1CnH,EAAAA,KAAK,EAAE;AACLC,IAAAA,IADK;AAELmH,IAAAA,MAAM,EAAEF;AAFH,GADmC;AAK1CG,EAAAA,GAAG,EAAE;AACHpH,IAAAA,IADG;AAEHmH,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,CAACljB,IAAD,EAAOmR,KAAP,KACjB8R,UAAU,CAACl0B,QAAX,CAAoBiR,IAApB,KAA8BmR,KAAK,CAACjO,MAAN,IAAgBlD,IAAI,KAAK,MADzD;;AAGA,eAAe,CAAC;AAAElJ,EAAAA,IAAF;AAAQ2H,EAAAA,MAAR;AAAgBqjB,EAAAA,SAAhB;AAA2BzzB,EAAAA,KAA3B;AAAkC8iB,EAAAA;AAAlC,CAAD,KAA+C;AAC5D,MAAIpQ,IAAI,GAAG,EAAX;AAEA,MAAI2e,WAAW,CAACrxB,KAAD,CAAX,IAAsByI,IAAI,KAAK,MAAnC,EAA2CiK,IAAI,CAACkB,SAAL,GAAiB,IAAjB;AAC3C,MAAIY,SAAO,CAAC/L,IAAD,CAAX,EAAmBiK,IAAI,CAAClR,KAAL,GAAa,IAAb;;AACnB,MAAImsB,UAAU,CAACllB,IAAD,CAAd,EAAsB;AACpBiK,IAAAA,IAAI,CAAClR,KAAL,GAAa,IAAb;AACAkR,IAAAA,IAAI,CAACoiB,QAAL,GAAgB,IAAhB;AACD;;AACD,MACEhD,sBAAsB,CAACrpB,IAAD,CAAtB,IACAqa,KAAK,CAACrO,OADN,IAEA,CAACqO,KAAK,CAACra,IAAN,CAAWvG,UAAX,CAAsB,KAAtB,CAHH,EAIE;AACAwQ,IAAAA,IAAI,CAACkO,oBAAL,GAA4B,IAA5B;AACD;;AAED,MAAIiU,YAAY,CAACpsB,IAAD,EAAOqa,KAAP,CAAhB,EAA+BpQ,IAAI,CAACmiB,YAAL,GAAoB,IAApB;AAC/B,MAAIzkB,MAAJ,EAAYsC,IAAI,CAACC,IAAL,GAAY,IAAZ;AACZ,MAAI8gB,SAAJ,EAAe/gB,IAAI,CAAC+gB,SAAL,GAAiB,IAAjB;AAEf/gB,EAAAA,IAAI,CAACqiB,SAAL,GAAiBriB,IAAI,CAACC,IAAL,IAAcD,IAAI,CAACmiB,YAAL,IAAqBniB,IAAI,CAACC,IAAxC,IAAiD,IAAlE;AAEA,MAAIjI,UAAU,CAACjC,IAAD,CAAd,EAAsBiK,IAAI,CAACsiB,QAAL,GAAgB,IAAhB;AAEtB,SAAOtiB,IAAP;AACD,CA1BD;;ACCA,aAAe,CAAC;AACduiB,EAAAA,kBAAkB,GAAG,IADP;AAEd1xB,EAAAA,WAFc;AAGd2xB,EAAAA,iBAAiB,GAAG,IAHN;AAIdC,EAAAA,kBAAkB,GAAG,IAJP;AAKdzzB,EAAAA,IALc;AAMdC,EAAAA,EANc;AAOdyzB,EAAAA,YAAY,GAAG,IAPD;AAQdC,EAAAA,gBAAgB,GAAG,IARL;AASdC,EAAAA,uBAAuB,GAAG,KATZ;AAUdnM,EAAAA,MAVc;AAWd1qB,EAAAA,GAXc;AAYd8I,EAAAA;AAZc,CAAD,KAaT;AACJ;AACA,MAAIsR,IAAI,GAAGsQ,MAAM,CAAC7nB,OAAP,CAAe,OAAf,EAAwB,IAAxB,CAAX;AACA,MAAIi0B,MAAM,GAAG1c,IAAI,CAACzU,KAAL,CAAW,IAAX,CAAb;AACA,MAAIoxB,KAAK,GAAGD,MAAM,CAACr2B,GAAP,CAAWquB,IAAI,IAAIA,IAAI,CAACkI,SAAL,EAAnB,CAAZ;AACA,MAAIxyB,KAAK,GAAG,EAAZ;AACA,MAAIiX,4BAA4B,GAAG,KAAnC;AACA,MAAItE,MAAM,GAAG,EAAb;AACA,MAAImX,KAAK,GAAG,EAAZ;AACA,MAAIpJ,KAAK,GAAG,EAAZ;AACA,MAAIgC,WAAW,GAAG,KAAlB;AACA,MAAIC,UAAU,GAAG,KAAjB;AACA,MAAI8P,gBAAgB,GAAGh0B,IAAI,CAACi0B,QAAL,CAAc,OAAd,IAAyB,MAAzB,GAAkC,OAAzD;AACA,MAAI1xB,IAAI,GAAG,IAAX;AACA,MAAI2xB,WAAW,GAAG,IAAIz1B,GAAJ,EAAlB;AACA,MAAI+sB,QAAQ,GAAG,EAAf;AAEA,MAAI2I,eAAe,GAAGxG,mBAAmB,CAAC,CAAC,GAAG9nB,KAAK,CAACyI,IAAN,EAAJ,CAAD,CAAzC;AACA,MAAI8lB,oBAAoB,GAAGtG,wBAAwB,CACjD,CAAC,GAAGjsB,WAAW,CAACyM,IAAZ,EAAJ,EAAwB9Q,GAAxB,CAA4ByC,EAAE,IAAIA,EAAE,CAACyC,KAAH,CAAS,GAAT,EAAc,CAAd,CAAlC,CADiD,CAAnD;AAIA,MAAI2xB,QAAQ,GAAG,EAAf;;AACA,WAASC,UAAT,CAAoBxrB,IAApB,EAA0B;AACxB,QAAIyrB,OAAO,GAAGzrB,IAAI,CAACoG,EAAL,IAAWpG,IAAI,CAAC/B,IAA9B;;AAEA,QAAI,CAACstB,QAAQ,CAACr1B,QAAT,CAAkBu1B,OAAlB,CAAL,EAAiC;AAC/BF,MAAAA,QAAQ,CAACtuB,IAAT,CAAcwuB,OAAd;AACA,aAAOA,OAAP;AACD;;AAED,QAAInvB,KAAK,GAAG,CAAZ;;AACA,WAAOivB,QAAQ,CAACr1B,QAAT,CAAmB,GAAEu1B,OAAQ,GAAEnvB,KAAM,EAArC,CAAP,EAAgD;AAC9CA,MAAAA,KAAK;AACN;;AACD,QAAInF,EAAE,GAAI,GAAEs0B,OAAQ,GAAEnvB,KAAM,EAA5B;AACAivB,IAAAA,QAAQ,CAACtuB,IAAT,CAAc9F,EAAd;AACA,WAAOA,EAAP;AACD;;AAED,WAASu0B,YAAT,CAAsBpT,KAAtB,EAA6B;AAC3B,QAAIA,KAAK,CAAClR,UAAN,KAAqB+f,UAAU,CAAC7O,KAAK,CAACra,IAAP,CAAV,IAA0B,CAACqa,KAAK,CAACrO,OAAtD,CAAJ,EAAoE;AAClE,UAAI0hB,cAAc,GAAGrT,KAAK,CAAClR,UAAN,CAAiB5F,IAAjB,CAAsByF,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW,YAAtC,CAArB;AACA,UAAI,CAAC0tB,cAAL,EAAqB;AAErB,UAAIr1B,MAAM,GAAGq1B,cAAc,CAACn2B,KAA5B;AAEA,UAAIo2B,cAAc,GAAGtT,KAAK,CAAClR,UAAN,CAAiB5F,IAAjB,CAAsByF,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW,YAAtC,CAArB;AACA,UAAIlH,MAAM,GAAG60B,cAAc,GAAGA,cAAc,CAACp2B,KAAf,CAAqBq2B,QAArB,EAAH,GAAqC,KAAhE;AAEA,UAAIC,aAAa,GAAGxT,KAAK,CAAClR,UAAN,CAAiB5F,IAAjB,CAAsByF,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW,WAAtC,CAApB;AACA,UAAIjH,KAAK,GAAG80B,aAAa,GAAGA,aAAa,CAACt2B,KAAd,CAAoBq2B,QAApB,EAAH,GAAoC,QAA7D;;AAEA,UACE,CAACpzB,KAAK,CAAC+I,IAAN,CACCpL,IAAI,IACFA,IAAI,CAACE,MAAL,KAAgBA,MAAhB,IACAF,IAAI,CAACW,MAAL,KAAgBA,MADhB,IAEAX,IAAI,CAACY,KAAL,KAAeA,KAJlB,CADH,EAOE;AACA,YAAIZ,IAAI,GAAG;AACTe,UAAAA,EAAE,EAAG,GAAEb,MAAO,IAAGS,MAAO,GAAEC,KAAK,KAAK,QAAV,GAAqB,SAArB,GAAiC,EAAG,EADrD;AAETN,UAAAA,YAAY,EAAEA,YAAY,CAACJ,MAAD,CAFjB;AAGTA,UAAAA,MAHS;AAITS,UAAAA,MAJS;AAKTC,UAAAA;AALS,SAAX;;AAQA,YAAIZ,IAAI,CAACM,YAAL,IAAqBqC,WAAW,CAACtD,GAAZ,CAAgBW,IAAI,CAACe,EAArB,CAAzB,EAAmD;AACjDsB,UAAAA,KAAK,CAACwE,IAAN,CAAW7G,IAAX;AACD,SAFD,MAEO;AACL,cAAI21B,KAAK,GAAGT,oBAAoB,CAACh1B,MAAD,CAAhC;;AACA,cAAIy1B,KAAK,IAAIA,KAAK,KAAKz1B,MAAvB,EAA+B;AAC7BosB,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GAAG,EAAE8I,cAAc,CAAC9I,GADR;AAEZ5rB,cAAAA,IAAI,EAAG,aAAYX,MAAO,+BAA8By1B,KAAM,qDAAoD31B,IAAI,CAACe,EAAG,aAAYf,IAAI,CAACe,EAAG,YAAWf,IAAI,CAACe,EAAG,gDAFrJ;AAGZ4rB,cAAAA,IAAI,EAAEiI,KAAK,CAACW,cAAc,CAAC9I,GAAf,CAAmBC,KAAnB,CAAyBC,IAAzB,GAAgC,CAAjC;AAHC,aAAd;AAKD,WAND,MAMO,IAAI,CAAC3sB,IAAI,CAACW,MAAL,CAAYW,UAAZ,CAAuB,QAAvB,CAAL,EAAuC;AAC5CgrB,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GAAG,EAAE8I,cAAc,CAAC9I,GADR;AAEZ5rB,cAAAA,IAAI,EAAG,aAAYX,MAAO,gDAA+CF,IAAI,CAACe,EAAG,aAAYf,IAAI,CAACe,EAAG,YAAWf,IAAI,CAACe,EAAG,gDAF5G;AAGZ4rB,cAAAA,IAAI,EAAEiI,KAAK,CAACW,cAAc,CAAC9I,GAAf,CAAmBC,KAAnB,CAAyBC,IAAzB,GAAgC,CAAjC;AAHC,aAAd;AAKD;AACF;AACF;AACF;AACF;;AAED,WAASiJ,gBAAT,CAA0B1T,KAA1B,EAAiC;AAC/B,QAAI2T,IAAI,GAAG,EAAX;AACA3T,IAAAA,KAAK,CAAClR,UAAN,CAAiBhS,OAAjB,CAAyB+R,IAAI,IAAI;AAC/B,UAAI,EAAEA,IAAI,CAAClJ,IAAL,IAAaguB,IAAf,CAAJ,EAA0B;AACxBA,QAAAA,IAAI,CAAC9kB,IAAI,CAAClJ,IAAN,CAAJ,GAAkB,CAAlB;AACD;;AACDguB,MAAAA,IAAI,CAAC9kB,IAAI,CAAClJ,IAAN,CAAJ;AACD,KALD;AAOA,QAAIiuB,SAAS,GAAGvxB,MAAM,CAAC6K,IAAP,CAAYymB,IAAZ,EAAkBj2B,MAAlB,CAAyBiI,IAAI,IAAIguB,IAAI,CAAChuB,IAAD,CAAJ,GAAa,CAA9C,CAAhB;;AAEA,QAAIiuB,SAAS,CAAC7uB,MAAV,GAAmB,CAAvB,EAA0B;AACxB6uB,MAAAA,SAAS,CAAC92B,OAAV,CAAkB6I,IAAI,IACpBykB,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,QAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,QAAAA,IAAI,EAAG,iCAAgCgH,IAAK,IAAGguB,IAAI,CAAChuB,IAAD,CAAO,0EAF9C;AAGZ8kB,QAAAA,IAAI,EAAEiI,KAAK,CAAC1S,KAAK,CAACuK,GAAN,CAAUC,KAAV,CAAgBC,IAAhB,GAAuB,CAAxB;AAHC,OAAd,CADF;AAOD;AACF;;AAED,WAASoH,GAAT,CAAa7R,KAAb,EAAoB6T,OAApB,EAA6B;AAC3B7T,IAAAA,KAAK,CAACuK,GAAN,CAAUsH,GAAV,GAAgB;AACdpH,MAAAA,IAAI,EAAEoJ,OAAO,GAAG,CADF;AAEdjC,MAAAA,MAAM,EAAE5B,IAAI,CAAC8D,GAAL,CAAS,CAAT,EAAYpB,KAAK,CAACmB,OAAD,CAAL,CAAe9uB,MAAf,GAAwB,CAApC;AAFM,KAAhB;;AAKA,QAAI,CAACib,KAAK,CAAClR,UAAX,EAAuB;AACrBkR,MAAAA,KAAK,CAAClR,UAAN,GAAmB,EAAnB;AACD;;AAED,QACEkR,KAAK,CAACra,IAAN,KAAe,MAAf,IACA,CAACqa,KAAK,CAAClR,UAAN,CAAiBlB,IAAjB,CAAsBiB,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAc,MAA5C,CAFH,EAGE;AACAykB,MAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,QAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,QAAAA,IAAI,EAAG,+BAFK;AAGZ8rB,QAAAA,IAAI,EAAEiI,KAAK,CAAC1S,KAAK,CAACuK,GAAN,CAAUC,KAAV,CAAgBC,IAAhB,GAAuB,CAAxB;AAHC,OAAd;AAKD;;AAED,QAAIR,KAAK,CAACllB,MAAN,KAAiB,CAArB,EAAwB;AACtB;AACA5D,MAAAA,IAAI,GAAG6e,KAAP;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAED,WAAS+T,UAAT,CAAoBtJ,IAApB,EAA0BhX,CAA1B,EAA6B;AAC3B,QAAI;AAAEuM,MAAAA,KAAK,EAAEra,IAAT;AAAemI,MAAAA,EAAf;AAAmBiiB,MAAAA;AAAnB,QAA6BH,QAAQ,CAACnF,IAAD,CAAzC;AACA,QAAIuJ,iBAAiB,GAAG,KAAxB;AAEA,QAAIjc,UAAU,GAAGpS,IAAI,KAAK,UAA1B;;AACA,QAAIoS,UAAJ,EAAgB;AACdX,MAAAA,4BAA4B,GAAG,IAA/B;AACD;;AAED,QAAI4I,KAAK,GAAG;AACVrhB,MAAAA,IAAI,EAAE,OADI;AAEVgH,MAAAA,IAFU;AAGVoU,MAAAA,UAAU,EAAE,EAHF;AAIVD,MAAAA,UAAU,EAAE,KAJF;AAKVnI,MAAAA,OAAO,EAAEA,OAAO,CAAChM,IAAD,CALN;AAMVkM,MAAAA,SAAS,EAAEA,SAAS,CAAClM,IAAD,CANV;AAOVuM,MAAAA,QAAQ,EAAEA,UAAQ,CAACvM,IAAD,CAPR;AAQV0R,MAAAA,OAAO,EAAE,KARC;AASVU,MAAAA,UATU;AAUVgY,MAAAA,KAVU;AAWVxF,MAAAA,GAAG,EAAE0J,MAAM,CAACxgB,CAAC,GAAG,CAAL,EAAQ,CAAR,CAXD;AAYV3E,MAAAA,UAAU,EAAE,EAZF;AAaVnB,MAAAA,MAAM,EAAE;AAbE,KAAZ;AAgBA,QAAI8lB,KAAK,GAAGV,eAAe,CAACptB,IAAD,CAA3B;;AACA,QAAI8tB,KAAJ,EAAW;AACT,UAAIA,KAAK,KAAK9tB,IAAd,EAAoB;AAClBykB,QAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,UAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,UAAAA,IAAI,EAAG,IAAGgH,IAAK,uDAAsD8tB,KAAM,iBAAgB9tB,IAAK,IAFpF;AAGZ8kB,UAAAA;AAHY,SAAd;AAKAzK,QAAAA,KAAK,CAACvI,IAAN,GAAa,IAAb;AACD;AACF,KATD,MASO;AACL2S,MAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,QAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,QAAAA,IAAI,EAAG,IAAGgH,IAAK,wGAFH;AAGZ8kB,QAAAA;AAHY,OAAd;AAKAzK,MAAAA,KAAK,CAACvI,IAAN,GAAa,IAAb;AACD;;AAED,QAAI5Y,EAAE,KAAK8G,IAAX,EAAiB;AACfykB,MAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,QAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,QAAAA,IAAI,EAAG,8GAA6GgH,IAAK,8CAF7G;AAGZ8kB,QAAAA;AAHY,OAAd;AAKAzK,MAAAA,KAAK,CAACvI,IAAN,GAAa,IAAb;AACD;;AAED,QAAI,CAACuI,KAAK,CAACrO,OAAX,EAAoB;AAClBmhB,MAAAA,WAAW,CAACv1B,GAAZ,CAAgByiB,KAAK,CAACra,IAAtB;AACD;;AAED,QAAImI,EAAJ,EAAQ;AACNkS,MAAAA,KAAK,CAAClS,EAAN,GAAWA,EAAX;AACD;;AACDkS,IAAAA,KAAK,CAACnhB,EAAN,GAAWq0B,UAAU,CAAClT,KAAD,CAArB;AAEA,QAAIkU,IAAI,GAAGjK,KAAK,CAACA,KAAK,CAACllB,MAAN,GAAe,CAAhB,CAAhB;;AACA,WAAOmvB,IAAI,IAAIA,IAAI,CAACnE,KAAL,IAAc/P,KAAK,CAAC+P,KAAnC,EAA0C;AACxC8B,MAAAA,GAAG,CAAC5H,KAAK,CAACkK,GAAN,EAAD,EAAc1gB,CAAd,CAAH;AACAygB,MAAAA,IAAI,GAAGjK,KAAK,CAACA,KAAK,CAACllB,MAAN,GAAe,CAAhB,CAAZ;AACD;;AAED,QAAImvB,IAAJ,EAAU;AACRF,MAAAA,iBAAiB,GAAG,IAApB;;AAEA,UAAIE,IAAI,CAAC7c,OAAT,EAAkB;AAChB,YAAI6c,IAAI,CAACniB,MAAT,EAAiB;AACf,cAAIiO,KAAK,CAACrO,OAAV,EAAmB;AACjByY,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,cAAAA,IAAI,EAAG,kBAAiBqhB,KAAK,CAACra,IAAK,wDAFvB;AAGZ8kB,cAAAA,IAHY;AAIZ2J,cAAAA,OAAO,EAAE;AAJG,aAAd;AAMD,WAPD,MAOO,IAAIF,IAAI,CAACzd,QAAL,CAAc1R,MAAd,GAAuB,CAA3B,EAA8B;AACnCqlB,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,cAAAA,IAAI,EAAG,0CAAyCqhB,KAAK,CAACra,IAAK,8CAF/C;AAGZ8kB,cAAAA;AAHY,aAAd;AAKD,WANM,MAMA;AACLyJ,YAAAA,IAAI,CAACzd,QAAL,CAAc9R,IAAd,CAAmBqb,KAAnB;AACD;AACF,SAjBD,MAiBO,IAAIA,KAAK,CAAC9N,QAAN,IAAkB,CAACgiB,IAAI,CAACpiB,OAA5B,EAAqC;AAC1CsY,UAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,YAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,YAAAA,IAAI,EAAG,2EAFK;AAGZ8rB,YAAAA;AAHY,WAAd;AAKD,SANM,MAMA;AACLyJ,UAAAA,IAAI,CAACzd,QAAL,CAAc9R,IAAd,CAAmBqb,KAAnB;AACD;AACF,OA3BD,MA2BO;AACL6R,QAAAA,GAAG,CAAC5H,KAAK,CAACkK,GAAN,EAAD,EAAc1gB,CAAd,CAAH,CADK;;AAIL,YAAIygB,IAAI,CAACviB,OAAT,EAAkB;AAChByY,UAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,YAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,YAAAA,IAAI,EAAG,GAAEqhB,KAAK,CAAClS,EAAN,IAAYkS,KAAK,CAACra,IAAK,sBAAqBuuB,IAAI,CAACpmB,EAAL,IACnDomB,IAAI,CAACvuB,IAAK,QACVuuB,IAAI,CAACvuB,IACN,mFALW;AAMZ8kB,YAAAA;AANY,WAAd;AAQD,SATD,MASO;AACLL,UAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,YAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,YAAAA,IAAI,EAAG,GAAEqhB,KAAK,CAAClS,EAAN,IACPkS,KAAK,CAACra,IAAK,qIAHD;AAIZ8kB,YAAAA;AAJY,WAAd;AAMD;AACF;AACF,KApDD,MAoDO,IAAItpB,IAAI,KAAK,IAAb,EAAmB;AACxBipB,MAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,QAAAA,GAAG,EAAEvK,KAAK,CAACuK,GADC;AAEZ5rB,QAAAA,IAAI,EAAG,GAAEqhB,KAAK,CAAClS,EAAN,IACPkS,KAAK,CAACra,IAAK,4GAA2GitB,gBAAiB,0CAAyC5S,KAAK,CAAClS,EAAN,IAChLkS,KAAK,CAACra,IAAK,4DAA2Dqa,KAAK,CAAClS,EAAN,IACtEkS,KAAK,CAACra,IAAK,qBALD;AAMZ8kB,QAAAA;AANY,OAAd;AAQD;;AAED,QAAIpT,OAAO,CAAC1R,IAAD,CAAX,EAAmB;AACjBqa,MAAAA,KAAK,CAAC3I,OAAN,GAAgB,IAAhB;AACA2I,MAAAA,KAAK,CAACjO,MAAN,GAAeA,QAAM,CAACpM,IAAD,CAArB;AACAqa,MAAAA,KAAK,CAAClO,OAAN,GAAgBA,SAAO,CAACnM,IAAD,CAAvB;AACAqa,MAAAA,KAAK,CAACvJ,QAAN,GAAiB,EAAjB;AACD;;AAED,QAAIuJ,KAAK,CAACrO,OAAN,KAAkBqO,KAAK,CAACra,IAAN,KAAe,MAAf,IAAyBqa,KAAK,CAACra,IAAN,KAAe,OAA1D,CAAJ,EAAwE;AACtEqa,MAAAA,KAAK,CAACpY,UAAN,GAAmB,IAAnB;;AACA,UAAIqiB,KAAK,CAACllB,MAAN,GAAe,CAAnB,EAAsB;AACpBqlB,QAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZhG,UAAAA,IAAI,EAAG,4BAA2BqhB,KAAK,CAACra,IAAK,+DADjC;AAEZ8kB,UAAAA,IAFY;AAGZF,UAAAA,GAAG,EAAEvK,KAAK,CAACuK;AAHC,SAAd;AAKD;AACF,KATD,MASO,IAAIN,KAAK,CAACllB,MAAN,KAAiB,CAArB,EAAwB;AAC7BqlB,MAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZhG,QAAAA,IAAI,EAAG,4BAA2Bi0B,gBAAiB,WAAU5S,KAAK,CAACra,IAAK,2CAA0CitB,gBAAiB,oBADvH;AAEZnI,QAAAA,IAFY;AAGZF,QAAAA,GAAG,EAAEvK,KAAK,CAACuK;AAHC,OAAd;AAKD;;AAED,QAAIyJ,iBAAiB,IAAI/J,KAAK,CAACllB,MAAN,KAAiB,CAA1C,EAA6C;AAC3CklB,MAAAA,KAAK,CAACtlB,IAAN,CAAWqb,KAAX;AACD;;AAEDqU,IAAAA,UAAU,CAAC5gB,CAAD,EAAIuM,KAAJ,AAAA,CAAV;AACAoT,IAAAA,YAAY,CAACpT,KAAD,CAAZ;AACA0T,IAAAA,gBAAgB,CAAC1T,KAAD,CAAhB;AACD;;AAED,WAASqU,UAAT,CAAoB5gB,CAApB,EAAuBuM,KAAvB,EAA8B;AAC5B,QAAIsU,eAAe,GAAG7gB,CAAtB;;AACA,WACE6gB,eAAe,GAAG5B,KAAK,CAAC3tB,MAAN,GAAe,CAAjC,IACA,CAACypB,OAAO,CAACkE,KAAK,CAAC4B,eAAe,GAAG,CAAnB,CAAN,CAFV,EAGE;AACAA,MAAAA,eAAe;AAChB;;AAED,QAAIxlB,UAAU,GAAG,EAAjB;AACA,QAAInB,MAAM,GAAG,EAAb;AACA,QAAIE,KAAJ;AACA,QAAI0mB,OAAO,GAAG,KAAd;;AAEA,SAAK,IAAIC,CAAC,GAAG/gB,CAAb,EAAgB+gB,CAAC,IAAIF,eAArB,EAAsCE,CAAC,EAAvC,EAA2C;AACzC,UAAI/J,IAAI,GAAGiI,KAAK,CAAC8B,CAAD,CAAL,CAAS3I,IAAT,EAAX;AAEA,UAAI1c,QAAQ,GAAG,IAAf;;AAEA,UAAI4f,MAAM,CAACtE,IAAD,CAAV,EAAkB;AAChB,YAAI;AAAE9kB,UAAAA,IAAF;AAAQ2H,UAAAA,MAAR;AAAgB0T,UAAAA,QAAhB;AAA0B2P,UAAAA,SAA1B;AAAqCzzB,UAAAA;AAArC,YAA+CuR,SAAO,CAACgc,IAAD,CAA1D;AACA,YAAIF,GAAG,GAAG0J,MAAM,CAACO,CAAC,GAAG,CAAL,EAAQ/J,IAAI,CAAClqB,OAAL,CAAaoF,IAAb,CAAR,EAA4B8kB,IAAI,CAAC1lB,MAAL,GAAc,CAA1C,CAAhB;AACA,YAAI6K,IAAI,GAAG6kB,OAAO,CAAC;AACjB9uB,UAAAA,IADiB;AAEjB2H,UAAAA,MAFiB;AAGjBqjB,UAAAA,SAHiB;AAIjBzzB,UAAAA,KAJiB;AAKjB8iB,UAAAA;AALiB,SAAD,CAAlB;;AAQA,YAAIA,KAAK,CAACrO,OAAV,EAAmB;AACjB,cAAI/B,IAAI,CAACkO,oBAAT,EAA+B;AAC7BsM,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GADY;AAEZ5rB,cAAAA,IAAI,EAAG,iBAAgBgH,IAAK,kDAAiDmrB,+BAA+B,CAC1GnrB,IAD0G,EAE1GzI,KAF0G,CAA/B,CAG3EP,IAH2E,CAGtE,IAHsE,CAGhE,EALD;AAMZ8tB,cAAAA;AANY,aAAd;AAQD,WATD,MASO;AACL,gBAAIgJ,KAAK,GAAGhH,cAAc,CAAC9mB,IAAD,CAA1B;;AACA,gBAAI8tB,KAAK,IAAIA,KAAK,KAAK9tB,IAAvB,EAA6B;AAC3BykB,cAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,gBAAAA,GADY;AAEZ5rB,gBAAAA,IAAI,EAAG,iBAAgB80B,KAAM,iBAAgB9tB,IAAK,IAFtC;AAGZ8kB,gBAAAA;AAHY,eAAd;AAKD;AACF;;AAED,cAAI7a,IAAI,CAACsiB,QAAL,IAAiBlS,KAAK,CAAC3I,OAA3B,EAAoC;AAClC,gBAAI/J,MAAJ,EAAY;AACV8c,cAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,gBAAAA,GADY;AAEZ5rB,gBAAAA,IAAI,EAAG,6GAFK;AAGZ8rB,gBAAAA;AAHY,eAAd;AAKD;;AACDzK,YAAAA,KAAK,CAACpY,UAAN,GAAmB,IAAnB;AACD;;AAED,cAAIoY,KAAK,CAACrhB,IAAN,KAAe,SAAf,IAA4B,CAACuuB,aAAa,CAACtvB,QAAd,CAAuBV,KAAvB,CAAjC,EAAgE;AAC9D,gBAAI,YAAY+L,IAAZ,CAAiB/L,KAAjB,CAAJ,EAA6B;AAC3BktB,cAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,gBAAAA,GADY;AAEZ5rB,gBAAAA,IAAI,EAAG,gBAAezB,KAAM,sGAFhB;AAGZutB,gBAAAA;AAHY,eAAd;AAKD,aAND,MAMO;AACLL,cAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,gBAAAA,GADY;AAEZ5rB,gBAAAA,IAAI,EAAG,gBAAezB,KAAM,6BAA4BgwB,aAAa,CAACvwB,IAAd,CACtD,IADsD,CAEtD,iCAJU;AAKZ8tB,gBAAAA;AALY,eAAd;AAOD;;AACDvtB,YAAAA,KAAK,GAAG,MAAR;AACD;AACF,SAlDD,MAkDO;AACL,cAAIyI,IAAI,KAAK,MAAb,EAAqB;AACnBqa,YAAAA,KAAK,CAAC5H,MAAN,GAAe,IAAf;AACD;AACF;;AAED,YAAIzS,IAAI,KAAK,MAAb,EAAqB;AACnB,cAAI0J,QAAQ,GAAGgjB,kBAAkB,IAAIhB,aAAa,CAACrQ,QAAD,CAAlD;AACA,cAAI1R,OAAO,GAAG8iB,iBAAiB,IAAIjB,YAAY,CAACnQ,QAAD,CAA/C;;AAEA,cAAI1R,OAAJ,EAAa;AACX,gBAAI,CAACwD,MAAM,CAAClV,QAAP,CAAgBV,KAAhB,CAAL,EAA6B;AAC3B4V,cAAAA,MAAM,CAACnO,IAAP,CAAYqc,QAAZ;AACD;AACF;;AAED,cAAI9jB,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,GAA1B,IAAiCA,KAAK,KAAK,IAA/C,EAAqD;AACnDktB,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GADY;AAEZ5rB,cAAAA,IAAI,EACF,8EAHU;AAIZ8rB,cAAAA;AAJY,aAAd;AAMA,gBAAI8H,gBAAJ,EAAsB;AACvB,WARD,MAQO,IAAI,CAAC3iB,IAAI,CAACqiB,SAAV,EAAqB;AAC1B7H,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GADY;AAEZ5rB,cAAAA,IAAI,EAAG,kBAAiBgH,IAAK,kDAFjB;AAGZ8kB,cAAAA;AAHY,aAAd;AAKA,gBAAI8H,gBAAJ,EAAsB;AACvB;;AAED,cAAIljB,QAAQ,IAAIshB,SAAhB,EAA2B;AACzBvG,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GADY;AAEZ5rB,cAAAA,IAAI,EAAG,IAAGqiB,QAAS,yFAAwFA,QAAS;AAFxG,aAAd;AAID,WAhCkB;AAmCnB;AACA;;;AAEApR,UAAAA,IAAI,CAAC/B,KAAL,GAAa3Q,KAAb;AACAq3B,UAAAA,OAAO,GAAG,IAAV;AACA1mB,UAAAA,KAAK,GAAG;AACNyB,YAAAA,OADM;AAEND,YAAAA,QAFM;AAGNL,YAAAA,YAAY,EAAE2gB,QAAQ,CAACzyB,KAAD,EAAQyI,IAAR,CAHhB;AAINzI,YAAAA,KAJM;AAKNyI,YAAAA,IALM;AAMNqb,YAAAA,QANM;AAON2P,YAAAA,SAAS,EAAEthB,QAAQ,IAAIC,OAAZ,GAAsB,KAAtB,GAA8BqhB,SAPnC;AAQN7hB,YAAAA,UAAU,EAAE;AARN,WAAR;;AAWA,cAAIqjB,kBAAJ,EAAwB;AACtBtkB,YAAAA,KAAK,CAAC3Q,KAAN,GAAc8jB,QAAd;;AAEA,gBAAIA,QAAQ,KAAK,UAAjB,EAA6B;AAC3B6B,cAAAA,WAAW,GAAG,IAAd;AACD,aAFD,MAEO,IAAI,cAAc5Z,IAAd,CAAmB+X,QAAnB,CAAJ,EAAkC;AACvCnT,cAAAA,KAAK,CAAC3Q,KAAN,GAAe,WAAU8jB,QAAQ,CAC9BxiB,OADsB,CACd,SADc,EACH,EADG,EAEtBma,WAFsB,EAER,EAFjB;AAGAmK,cAAAA,UAAU,GAAG,IAAb;AACD,aALM,MAKA,IAAI,CAACzT,QAAD,IAAa,CAACC,OAAlB,EAA2B;AAChCzB,cAAAA,KAAK,CAAC3Q,KAAN,GAAe,GAAEyzB,SAAS,GAAG,GAAH,GAAS,EAAG,SAAQ3P,QAAQ,IAAIrb,IAAK,EAA/D;AACD;AACF;;AAEDgI,UAAAA,MAAM,CAAChJ,IAAP,CAAYkJ,KAAZ;AACD,SAnED,MAmEO,IAAI,CAAC+B,IAAI,CAACC,IAAL,IAAaD,IAAI,CAACmiB,YAAnB,KAAoC,CAACniB,IAAI,CAACqiB,SAA9C,EAAyD;AAC9D,cAAKtsB,IAAI,KAAK,MAAT,IAAmBqa,KAAK,CAACra,IAAN,KAAe,MAAnC,IAA8CA,IAAI,KAAK,MAA3D,EAAmE;AACjEykB,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GADY;AAEZ5rB,cAAAA,IAAI,EAAG,mCAAkCgH,IAAK,cAFlC;AAGZ8kB,cAAAA;AAHY,aAAd;AAKA,gBAAI8H,gBAAJ,EAAsB;AACvB;AACF;;AAED,YAAI5sB,IAAI,KAAK,QAAT,IAAqBmJ,UAAU,CAAC/J,MAAX,GAAoB,CAA7C,EAAgD;AAC9CqlB,UAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZhG,YAAAA,IAAI,EAAG,qEADK;AAEZ8rB,YAAAA,IAFY;AAGZF,YAAAA;AAHY,WAAd;AAKD;;AAED,YAAI5kB,IAAI,KAAK,QAAT,IAAqB,cAAcsD,IAAd,CAAmB+X,QAAnB,CAAzB,EAAuD;AACrD8B,UAAAA,UAAU,GAAG,IAAb;AACD;;AAED,YAAInd,IAAI,KAAK,QAAb,EAAuB;AACrBqa,UAAAA,KAAK,CAACxD,MAAN,GAAekI,WAAS,CAACxnB,KAAD,CAAxB;AACD;;AAED,YAAIA,KAAK,KAAK,EAAV,IAAgByI,IAAI,KAAK,MAA7B,EAAqC;AACnCykB,UAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,YAAAA,GADY;AAEZ5rB,YAAAA,IAAI,EAAG,IAAGgH,IAAK,yCAFH;AAGZ8kB,YAAAA;AAHY,WAAd;AAKA,cAAI8H,gBAAJ,EAAsB;AACvB;;AAEDpjB,QAAAA,QAAQ,GAAG;AACTxQ,UAAAA,IAAI,EAAE,UADG;AAET4rB,UAAAA,GAFS;AAGT5kB,UAAAA,IAHS;AAITiK,UAAAA,IAJS;AAKT1S,UAAAA,KAAK,EAAEyyB,QAAQ,CAACzyB,KAAD,EAAQyI,IAAR;AALN,SAAX;;AAQA,YAAIiK,IAAI,CAACkB,SAAL,IAAkBjD,KAAtB,EAA6B;AAC3BmS,UAAAA,KAAK,CAAClG,UAAN,GAAmB,IAAnB;AAEA,cAAI4a,gBAAgB,GAAGlF,YAAY,CAACtyB,KAAD,CAAnC;AACAiS,UAAAA,QAAQ,CAACjS,KAAT,GAAiBw3B,gBAAgB,CAAC1lB,YAAlC;AACAG,UAAAA,QAAQ,CAAC2B,SAAT,GAAqB4jB,gBAAgB,CAAC5lB,UAAtC;;AAEA,cAAIK,QAAQ,CAAC2B,SAAT,CAAmBC,KAAnB,KAA6B,QAAjC,EAA2C;AACzCiP,YAAAA,KAAK,CAACpI,kBAAN,GAA2B,IAA3B;AACD,WAFD,MAEO;AACLoI,YAAAA,KAAK,CAAChF,kBAAN,GAA2B,IAA3B;AACD;;AAED,cAAI,CAACgF,KAAK,CAACjG,UAAN,CAAiB2a,gBAAgB,CAAC71B,EAAlC,CAAL,EAA4C;AAC1CmhB,YAAAA,KAAK,CAACjG,UAAN,CAAiB2a,gBAAgB,CAAC71B,EAAlC,IAAwC;AACtCmF,cAAAA,KAAK,EAAE3B,MAAM,CAAC6K,IAAP,CAAY8S,KAAK,CAACjG,UAAlB,EAA8BhV,MADC;AAEtC+L,cAAAA,SAAS,EAAE4jB,gBAF2B;AAGtClhB,cAAAA,KAAK,EAAE;AAH+B,aAAxC;AAKD;;AACDrE,UAAAA,QAAQ,CAACiE,qBAAT,GACE4M,KAAK,CAACjG,UAAN,CAAiB2a,gBAAgB,CAAC71B,EAAlC,EAAsCmF,KADxC;;AAGA,cAAI,CAACgc,KAAK,CAACjG,UAAN,CAAiB2a,gBAAgB,CAAC71B,EAAlC,EAAsC2U,KAAtC,CAA4C7N,IAA5C,CAAL,EAAwD;AACtD,gBAAIgvB,SAAS,GAAG,IAAhB;AACA,gBAAIC,QAAQ,GAAG9lB,UAAU,CAAC5F,IAAX,CAAgB2F,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAcA,IAAtC,CAAf;;AACA,gBAAIivB,QAAJ,EAAc;AACZD,cAAAA,SAAS,GAAGC,QAAQ,CAAC13B,KAArB;AACD;;AAED8iB,YAAAA,KAAK,CAACjG,UAAN,CAAiB2a,gBAAgB,CAAC71B,EAAlC,EAAsC2U,KAAtC,CAA4C7N,IAA5C,IAAoD;AAClDA,cAAAA,IADkD;AAElDgI,cAAAA,MAAM,EAAE,EAF0C;AAGlDzQ,cAAAA,KAAK,EAAEy3B;AAH2C,aAApD;AAKD;;AAED3U,UAAAA,KAAK,CAACjG,UAAN,CAAiB2a,gBAAgB,CAAC71B,EAAlC,EAAsC2U,KAAtC,CAA4C7N,IAA5C,EAAkDgI,MAAlD,CAAyDhJ,IAAzD,CAA8D;AAC5DgB,YAAAA,IAAI,EAAEkI,KAAK,CAACmT,QADgD;AAE5D9jB,YAAAA,KAAK,EAAEw3B,gBAAgB,CAAC1lB;AAFoC,WAA9D;AAID;;AAED,YAAInB,KAAJ,EAAW;AACTsB,UAAAA,QAAQ,CAACtB,KAAT,GAAiBA,KAAK,CAACmT,QAAvB;AACD;;AAED,YAAIpR,IAAI,CAACC,IAAT,EAAe;AACb,cAAIglB,iBAAiB,GAAG,CAACjlB,IAAI,CAACmiB,YAAN,IAAsB,IAAI9oB,IAAJ,CAASkG,QAAQ,CAACjS,KAAlB,CAA9C;;AAEA,cAAI,OAAOiS,QAAQ,CAACjS,KAAhB,KAA0B,QAA9B,EAAwC;AACtCiS,YAAAA,QAAQ,CAACjS,KAAT,GAAiBiS,QAAQ,CAACjS,KAAT,CAAesB,OAAf,CAAuB,IAAvB,EAA6B,EAA7B,CAAjB;AACD;;AAED2Q,UAAAA,QAAQ,CAAC6R,QAAT,GAAoBA,QAApB;;AAEA,cAAIrb,IAAI,KAAK,MAAT,IAAoBA,IAAI,KAAK,MAAT,IAAmB,CAACkI,KAAK,CAACwB,QAAlD,EAA6D;AAC3DF,YAAAA,QAAQ,CAACH,YAAT,GAAwBG,QAAQ,CAACjS,KAAjC;;AAEA,gBAAIi1B,kBAAJ,EAAwB;AACtBhjB,cAAAA,QAAQ,CAACjS,KAAT,GAAkB,GAAEyzB,SAAS,GAAG,GAAH,GAAS,EAAG,SAAQ3P,QAAQ,IACvDrb,IAAK,EADP;AAED;;AAED,gBAAIkvB,iBAAJ,EAAuB;AACrB,kBAAIlvB,IAAI,KAAK,MAAT,IAAmBqa,KAAK,CAACra,IAAN,KAAe,MAAtC,EAA8C;AAC5CwJ,gBAAAA,QAAQ,CAACH,YAAT,GAAwB,EAAxB;AACD,eAFD,MAEO;AACLG,gBAAAA,QAAQ,CAACH,YAAT,GAAwB,KAAxB;;AAEA,oBACEwjB,uBAAuB,IACvBxS,KAAK,CAACrO,OADN,KAECxC,QAAQ,CAACS,IAAT,CAAclR,KAAd,IACEshB,KAAK,CAACra,IAAN,KAAe,MAAf,IAAyBwJ,QAAQ,CAACxJ,IAAT,KAAkB,MAH9C,CADF,EAKE;AACAykB,kBAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,oBAAAA,GADY;AAEZ5rB,oBAAAA,IAAI,EAAG,2BAA0BgH,IAAK,YAAWA,IAAK,KAAIqb,QAAS,iBAFvD;AAGZyJ,oBAAAA;AAHY,mBAAd;AAKD;AACF;AACF;;AAED,gBACE,CAAC8J,OAAD,IACA,CAACplB,QAAQ,CAACS,IAAT,CAAcsiB,QADf,IAEA,CAACrR,KAAK,CAACjT,IAAN,CAAWknB,EAAE,IAAIA,EAAE,CAACnvB,IAAH,MAAaqb,QAAQ,IAAIrb,IAAzB,CAAjB,CAHH,EAIE;AACAkb,cAAAA,KAAK,CAAClc,IAAN,CAAW;AACTgB,gBAAAA,IAAI,EAAEqb,QAAQ,IAAIrb,IADT;AAEThH,gBAAAA,IAAI,EAAE4yB,WAAW,CAACvR,KAAD,EAAQra,IAAR,AAAA,CAFR;AAGTqJ,gBAAAA,YAAY,EAAEY,IAAI,CAACmiB,YAAL,GAAoB,KAApB,GAA4B5iB,QAAQ,CAACH;AAH1C,eAAX;AAKD;AACF;AACF;AACF,OApRD,MAoRO,IAAI0f,SAAS,CAACjE,IAAD,CAAT,IAAmB,CAAC6H,YAAxB,EAAsC;AAC3C,YAAI,CAACp1B,KAAD,IAAUgzB,UAAU,CAACzF,IAAD,CAAxB;AAEA,YAAIsK,WAAW,GAAG7F,aAAa,CAACzE,IAAD,CAA/B;;AACA,YAAIsK,WAAJ,EAAiB;AACf73B,UAAAA,KAAK,GAAGgzB,UAAU,CAAChzB,KAAD,CAAlB;AACD;;AAEDiS,QAAAA,QAAQ,GAAG;AACTxQ,UAAAA,IAAI,EAAE,UADG;AAET4rB,UAAAA,GAAG,EAAE0J,MAAM,CAACO,CAAC,GAAG,CAAL,EAAQ,CAAR,EAAW/J,IAAI,CAAC1lB,MAAL,GAAc,CAAzB,CAFF;AAGT7H,UAAAA,KAHS;AAIT0S,UAAAA,IAAI,EAAE;AAAEolB,YAAAA,OAAO,EAAE,IAAX;AAAiBD,YAAAA;AAAjB;AAJG,SAAX;AAMD;;AAED,UAAI5lB,QAAJ,EAAc;AACZ6Q,QAAAA,KAAK,CAACuK,GAAN,CAAUsH,GAAV,GAAgB1iB,QAAQ,CAACob,GAAT,CAAasH,GAA7B;;AAEA,YAAI0C,OAAJ,EAAa;AACX,cACEplB,QAAQ,CAACxJ,IAAT,KAAkB,MAAlB,IACA,CAACwJ,QAAQ,CAACS,IAAT,CAAcolB,OADf,IAEA,CAAClmB,UAAU,CAAClB,IAAX,CAAgBgnB,QAAQ,IAAIA,QAAQ,CAACjvB,IAAT,KAAkBwJ,QAAQ,CAACxJ,IAAvD,CAHH,EAIE;AACAykB,YAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,cAAAA,GAAG,EAAEpb,QAAQ,CAACob,GADF;AAEZ5rB,cAAAA,IAAI,EAAG,kCAAiCwQ,QAAQ,CAACxJ,IAAK,yCAF1C;AAGZ8kB,cAAAA;AAHY,aAAd;AAKD;;AAED5c,UAAAA,KAAK,CAACiB,UAAN,CAAiBnK,IAAjB,CAAsBwK,QAAtB;AACD,SAdD,MAcO;AACLL,UAAAA,UAAU,CAACnK,IAAX,CAAgBwK,QAAhB;AACD;AACF;AACF;;AAED6Q,IAAAA,KAAK,CAAClR,UAAN,GAAmBA,UAAnB;AACAkR,IAAAA,KAAK,CAACrS,MAAN,GAAe8jB,UAAU,CAAC9jB,MAAD,CAAzB;;AAEA,QAAIqS,KAAK,CAACra,IAAN,KAAe,MAAf,IAAyBqa,KAAK,CAACpY,UAAnC,EAA+C;AAC7C,UAAIqtB,YAAY,GAAGnmB,UAAU,CAC1BpR,MADgB,CACTmR,IAAI,IAAIA,IAAI,CAAClJ,IAAL,KAAc,YAAd,IAA8BkJ,IAAI,CAAClJ,IAAL,KAAc,QAD3C,EAEhBvJ,GAFgB,CAEZyS,IAAI,IAAIA,IAAI,CAAClJ,IAFD,CAAnB;;AAIA,UAAIsvB,YAAY,CAAClwB,MAAb,GAAsB,CAA1B,EAA6B;AAC3BqlB,QAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZhG,UAAAA,IAAI,EAAG,6GAA4Gs2B,YAAY,CAACt4B,IAAb,CACjH,IADiH,CAEjH,wBAHU;AAIZ4tB,UAAAA,GAAG,EAAEvK,KAAK,CAACuK,GAJC;AAKZE,UAAAA,IAAI,EAAEgI,MAAM,CAAChf,CAAD;AALA,SAAd;AAOD;AACF;AACF;;AAEDif,EAAAA,KAAK,CAAC51B,OAAN,CAAc,CAAC2tB,IAAD,EAAOhX,CAAP,KAAa;AACzB,QAAIgX,IAAI,KAAKgI,MAAM,CAAChf,CAAD,CAAN,CAAUkf,SAAV,EAAb,EAAoC;AAClCvI,MAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZhG,QAAAA,IAAI,EAAG,gEADK;AAEZ4rB,QAAAA,GAAG,EAAE;AACHC,UAAAA,KAAK,EAAE;AACLC,YAAAA,IAAI,EAAEhX,CAAC,GAAG;AADL;AADJ,SAFO;AAOZgX,QAAAA,IAAI,EAAEgI,MAAM,CAAChf,CAAD;AAPA,OAAd;AASD;;AAED,QAAI+a,OAAO,CAAC/D,IAAD,CAAX,EAAmB;AACjBsJ,MAAAA,UAAU,CAACtJ,IAAD,EAAOhX,CAAP,CAAV;AACD;AACF,GAhBD;;AAkBA,MAAIwW,KAAK,CAACllB,MAAN,GAAe,CAAnB,EAAsB;AACpB,WAAO,CAAC8sB,GAAG,CAAC5H,KAAK,CAACkK,GAAN,EAAD,EAAczB,KAAK,CAAC3tB,MAAN,GAAe,CAA7B,CAAX,EAA4C;AAC7C;;AAED,MAAI,CAAC5D,IAAL,EAAW;AACTA,IAAAA,IAAI,GAAG;AACLxC,MAAAA,IAAI,EAAE,OADD;AAELgH,MAAAA,IAAI,EAAE9G,EAFD;AAGLkb,MAAAA,UAAU,EAAE,EAHP;AAILD,MAAAA,UAAU,EAAE,KAJP;AAKLnI,MAAAA,OAAO,EAAE,IALJ;AAMLE,MAAAA,SAAS,EAAE,KANN;AAOLK,MAAAA,QAAQ,EAAE,KAPL;AAQLmF,MAAAA,OAAO,EAAE,KARJ;AASLU,MAAAA,UAAU,EAAE,KATP;AAULgY,MAAAA,KAAK,EAAE,CAVF;AAWLxF,MAAAA,GAAG,EAAE0J,MAAM,CAAC,CAAD,EAAI,CAAJ,CAXN;AAYLnlB,MAAAA,UAAU,EAAE,EAZP;AAaLnB,MAAAA,MAAM,EAAE;AAbH,KAAP;AAgBAyc,IAAAA,QAAQ,CAACzlB,IAAT,CAAc;AACZ4lB,MAAAA,GAAG,EAAEppB,IAAI,CAACopB,GADE;AAEZ5rB,MAAAA,IAAI,EAAG,gBAAeE,EAAG,4DAA2D+zB,gBAAiB,4BAFzF;AAGZnI,MAAAA,IAAI,EAAE;AAHM,KAAd;AAKD;;AAED,MAAIyK,QAAQ,GAAG/zB,IAAI,CAAC2N,UAAL,CAAgB5F,IAAhB,CAAqByF,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW,IAArC,CAAf;;AACA,MAAIuvB,QAAJ,EAAc;AACZ/zB,IAAAA,IAAI,CAACoD,OAAL,GAAe,IAAf;AACApD,IAAAA,IAAI,CAAC0C,IAAL,GAAYqxB,QAAQ,CAACh4B,KAArB;AACAiE,IAAAA,IAAI,CAACyD,QAAL,GAAgBlI,IAAI,CAACuG,OAAL,CAAarE,IAAI,CAACJ,OAAL,CAAa7C,GAAG,CAAC6C,OAAJ,CAAY,KAAZ,EAAmB,GAAnB,CAAb,EAAsC,EAAtC,CAAb,CAAhB;AACA2C,IAAAA,IAAI,CAAC2D,cAAL,GAAsBpI,IAAI,CAACuG,OAAL,CAAa9B,IAAI,CAACyD,QAAlB,CAAtB;AAEAzD,IAAAA,IAAI,CAACoP,IAAL,GAAY8f,OAAO,CAAClvB,IAAI,CAAC2N,UAAL,CAAgB5F,IAAhB,CAAqByF,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW,MAArC,CAAD,CAAnB;AACAxE,IAAAA,IAAI,CAACohB,UAAL,GAAkBgO,aAAa,CAC7BpvB,IAAI,CAAC2N,UAAL,CAAgB5F,IAAhB,CAAqByF,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW,YAArC,CAD6B,CAA/B;AAGAxE,IAAAA,IAAI,CAACshB,YAAL,GAAoB+N,eAAe,CACjCrvB,IAAI,CAAC2N,UAAL,CAAgB5F,IAAhB,CAAqByF,CAAC,IAAIA,CAAC,CAAChJ,IAAF,KAAW,cAArC,CADiC,CAAnC;AAGD,GAbD,MAaO;AACLxE,IAAAA,IAAI,CAACoD,OAAL,GAAe,KAAf;AACD;;AAEDpD,EAAAA,IAAI,CAACiW,4BAAL,GAAoCA,4BAApC;AACAjW,EAAAA,IAAI,CAAC0hB,WAAL,GAAmBA,WAAnB;AACA1hB,EAAAA,IAAI,CAAC2hB,UAAL,GAAkBA,UAAlB;AACA3hB,EAAAA,IAAI,CAACsD,KAAL,GAAaquB,WAAb;AAEA,SAAO;AACL3yB,IAAAA,KADK;AAEL2S,IAAAA,MAFK;AAGL+N,IAAAA,KAHK;AAIL1f,IAAAA,IAJK;AAKLipB,IAAAA;AALK,GAAP;AAOD,CA7uBD;;AClCA,IAAI+K,YAAY,GAAGv2B,IAAI,IAAIA,IAAI,CAAC0C,KAAL,CAAW5E,IAAI,CAAC04B,GAAhB,EAAqBrwB,MAArB,GAA8B,CAAzD;;AAEA,IAAIswB,eAAe,GAAG,CAACh1B,CAAD,EAAIC,CAAJ,KAAU;AAC9B,MAAIg1B,MAAM,GAAGH,YAAY,CAAC90B,CAAD,CAAzB;AACA,MAAIk1B,MAAM,GAAGJ,YAAY,CAAC70B,CAAD,CAAzB;AACA,MAAIk1B,UAAU,GAAGF,MAAM,GAAGC,MAA1B;AAEA,MAAIC,UAAU,KAAK,CAAnB,EAAsB,OAAOA,UAAP;AAEtB,SAAOn1B,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAYD,CAAC,GAAGC,CAAJ,GAAQ,CAAC,CAAT,GAAa,CAAhC;AACD,CARD;;AAUA,AAAe,SAASm1B,aAAT,CAAuBr5B,GAAvB,EAA4B;AACzC,OAAK,IAAI,CAACa,GAAD,EAAMC,KAAN,CAAT,IAAyBd,GAAzB,EAA8B;AAC5B,QAAIc,KAAK,CAACsG,IAAN,IAAc,CAAlB,EAAqB;AAErBpH,IAAAA,GAAG,CAACgB,GAAJ,CAAQH,GAAR,EAAa,IAAII,GAAJ,CAAQ,CAAC,GAAGH,KAAJ,EAAWkD,IAAX,CAAgBi1B,eAAhB,CAAR,CAAb;AACD;AACF;;AChBc,SAASK,UAAT,CAAoB;AACjCj1B,EAAAA,WADiC;AAEjCI,EAAAA,SAFiC;AAGjClF,EAAAA,GAHiC;AAIjCC,EAAAA,OAJiC;AAKjCyH,EAAAA,SALiC;AAMjCvC,EAAAA;AANiC,CAApB,EAOZ;AACD,OAAK,IAAIlC,IAAT,IAAiBiC,SAAjB,EAA4B;AAC1B,QAAIM,IAAI,GAAGL,YAAY,CAACxD,GAAb,CAAiBsB,IAAjB,CAAX;AAEA,QAAIuC,IAAI,CAACC,MAAT,EAAiB;AAEjBD,IAAAA,IAAI,CAACE,MAAL,GAAc+E,KAAK,CAAC;AAClB3F,MAAAA,WADkB;AAElB7B,MAAAA,IAFkB;AAGlBC,MAAAA,EAAE,EAAEsC,IAAI,CAACtC,EAHS;AAIlBlD,MAAAA,GAJkB;AAKlB0qB,MAAAA,MAAM,EAAEllB,IAAI,CAACklB,MALK;AAMlB5hB,MAAAA,KAAK,EAAEpB;AANW,KAAD,CAAnB;AASA8mB,IAAAA,kBAAkB,CAAChpB,IAAD,EAAOvF,OAAP,CAAlB;AACD;;AACD65B,EAAAA,aAAa,CAACpyB,SAAD,CAAb;AACD;;AC3BD,IAAIsyB,UAAU,GAAG,CAAC,aAAD,EAAgB,UAAhB,EAA4B,UAA5B,CAAjB;AAEA,AAAe,SAASC,iBAAT,CAA2Bh3B,IAA3B,EAAiC;AAC9C,MAAIi3B,SAAS,GAAGF,UAAU,CAACzsB,IAAX,CAAgB3G,IAAI,IAAI3D,IAAI,CAACi0B,QAAL,CAActwB,IAAd,CAAxB,CAAhB;;AAEA,MAAI,CAACszB,SAAL,EAAgB;AACd,UAAM,IAAIrU,KAAJ,CACH,qCAAoC5iB,IAAK,uBADtC,CAAN;AAGD;;AAED,SAAOlC,IAAI,CAACqD,QAAL,CAAcrD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAd,CAAP;AACD;;ACXc,SAASk3B,sBAAT,CAAgC;AAC7Cj0B,EAAAA,eAD6C;AAE7CwB,EAAAA,SAF6C;AAG7CvC,EAAAA;AAH6C,CAAhC,EAIZ;AACD,AAAC,GAAC,GAAGe,eAAJ,EAAqB/E,OAArB,CAA6B8B,IAAI,IAAI;AACpC,QAAIC,EAAE,GAAG+2B,iBAAiB,CAACh3B,IAAD,CAA1B;AAEA5B,IAAAA,WAAW,CAACqG,SAAD,EAAYxE,EAAZ,EAAgBD,IAAhB,CAAX;AAEAkC,IAAAA,YAAY,CAAC1D,GAAb,CAAiBwB,IAAjB,EAAuB;AACrBwC,MAAAA,MAAM,EAAE,IADa;AAErBxC,MAAAA,IAFqB;AAGrBC,MAAAA,EAHqB;AAIrB8iB,MAAAA,KAAK,EAAE,KAJc;AAKrB0E,MAAAA,MAAM,EAAE,IALa;AAMrBiD,MAAAA,OAAO,EAAE;AANY,KAAvB;AAQD,GAbA;AAcF;;ACjBc,eAAeyM,gBAAf,CAAgC;AAC7Cl1B,EAAAA,SAD6C;AAE7Ce,EAAAA,cAF6C;AAG7CyB,EAAAA,SAH6C;AAI7CvC,EAAAA;AAJ6C,CAAhC,EAKZ;AACD,QAAM5E,OAAO,CAACC,GAAR,CACJ,CAAC,GAAG0E,SAAJ,EAAezE,GAAf,CAAmB,MAAMwC,IAAN,IAAc;AAC/B,QAAIC,EAAE,GAAG+2B,iBAAiB,CAACh3B,IAAD,CAA1B;AAEA5B,IAAAA,WAAW,CAACqG,SAAD,EAAYxE,EAAZ,EAAgBD,IAAhB,CAAX;AAEA,QAAIuC,IAAI,GAAGL,YAAY,CAAC3D,GAAb,CAAiByB,IAAjB,IAAyBkC,YAAY,CAACxD,GAAb,CAAiBsB,IAAjB,CAAzB,GAAkD,EAA7D;AACA,QAAI+iB,KAAK,GAAGjlB,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAV,EAA8B,UAA9B,CAAZ;AAEAkC,IAAAA,YAAY,CAAC1D,GAAb,CAAiBwB,IAAjB,EAAuB,EACrB,GAAGuC,IADkB;AAErBC,MAAAA,MAAM,EAAE,KAFa;AAGrBxC,MAAAA,IAHqB;AAIrBC,MAAAA,EAJqB;AAKrB8iB,MAAAA,KAAK,EAAE/f,cAAc,CAACzE,GAAf,CAAmBwkB,KAAnB,KAA6BA,KALf;AAMrB0E,MAAAA,MAAM,EAAE,MAAM7pB,WAAE,CAAC6J,QAAH,CAAYzH,IAAZ,EAAkB,MAAlB,CANO;AAOrB0qB,MAAAA,OAAO,EAAEnoB,IAAI,CAACmoB,OAAL,GAAenoB,IAAI,CAACmoB,OAAL,GAAe,CAA9B,GAAkC;AAPtB,KAAvB;AASD,GAjBD,CADI,CAAN;AAoBD;;ACbc,SAAS0M,WAAT,CAAqB;AAClCp1B,EAAAA,EAAE,GAAG,WAD6B;AAElCkkB,EAAAA,KAAK,GAAG,IAF0B;AAGlCnpB,EAAAA,GAHkC;AAIlCwI,EAAAA,KAAK,GAAG,KAJ0B;AAKlCwe,EAAAA,KAAK,GAAG,KAL0B;AAMlC/mB,EAAAA,OAAO,GAAG;AANwB,CAArB,EAOZ;AACD,MAAI+L,KAAK,GAAG;AACV/G,IAAAA,EADU;AAEVkkB,IAAAA,KAFU;AAGVnpB,IAAAA,GAHU;AAIVwI,IAAAA,KAJU;AAKVwe,IAAAA,KALU;AAMV/mB,IAAAA,OANU;AAOV6E,IAAAA,WAAW,EAAE,IAAI4D,GAAJ,EAPH;AAQVhB,IAAAA,SAAS,EAAE,IAAIgB,GAAJ,EARD;AASVvD,IAAAA,YAAY,EAAE,IAAIuD,GAAJ;AATJ,GAAZ;;AAYAsD,EAAAA,KAAK,CAACsuB,YAAN,GAAqB,eAAeA,YAAf,CAA4B;AAC/Cv1B,IAAAA,eAAe,GAAG,IAAIrD,GAAJ,EAD6B;AAE/CwD,IAAAA,SAAS,GAAG,IAAIxD,GAAJ,EAFmC;AAG/CwE,IAAAA,eAAe,GAAG,IAAIxE,GAAJ,EAH6B;AAI/CuE,IAAAA,cAAc,GAAG,IAAIvE,GAAJ;AAJ8B,GAA5B,EAKlB;AACD,QAAIqD,eAAe,CAAC8C,IAAhB,GAAuB,CAA3B,EAA8B;AAC5BhD,MAAAA,kBAAkB,CAAC;AACjBC,QAAAA,WAAW,EAAEkH,KAAK,CAAClH,WADF;AAEjBC,QAAAA;AAFiB,OAAD,CAAlB;AAID,KANA;;;AASD,UAAMq1B,gBAAgB,CAAC;AACrBl1B,MAAAA,SADqB;AAErBe,MAAAA,cAFqB;AAGrByB,MAAAA,SAAS,EAAEsE,KAAK,CAACtE,SAHI;AAIrBvC,MAAAA,YAAY,EAAE6G,KAAK,CAAC7G;AAJC,KAAD,CAAtB,CATC;;AAiBDg1B,IAAAA,sBAAsB,CAAC;AACrBj0B,MAAAA,eADqB;AAErBwB,MAAAA,SAAS,EAAEsE,KAAK,CAACtE,SAFI;AAGrBvC,MAAAA,YAAY,EAAE6G,KAAK,CAAC7G;AAHC,KAAD,CAAtB,CAjBC;AAwBD;;AACA40B,IAAAA,UAAU,CAAC;AACTj1B,MAAAA,WAAW,EAAEkH,KAAK,CAAClH,WADV;AAETI,MAAAA,SAFS;AAGTlF,MAAAA,GAAG,EAAEgM,KAAK,CAAChM,GAHF;AAITC,MAAAA,OAAO,EAAE+L,KAAK,CAAC/L,OAJN;AAKTyH,MAAAA,SAAS,EAAEsE,KAAK,CAACtE,SALR;AAMTvC,MAAAA,YAAY,EAAE6G,KAAK,CAAC7G;AANX,KAAD,CAAV;AASA,QAAIo1B,YAAY,GAAGv1B,aAAa,CAAC;AAC/BC,MAAAA,EAAE,EAAE+G,KAAK,CAAC/G,EADqB;AAE/BH,MAAAA,WAAW,EAAEkH,KAAK,CAAClH,WAFY;AAG/BI,MAAAA,SAH+B;AAI/BlF,MAAAA,GAAG,EAAEgM,KAAK,CAAChM,GAJoB;AAK/BmF,MAAAA,YAAY,EAAE6G,KAAK,CAAC7G;AALW,KAAD,CAAhC,CAlCC;AA2CD;;AACA,QAAIq1B,YAAY,GAAGjM,aAAa,CAAC;AAC/BtpB,MAAAA,EAAE,EAAE+G,KAAK,CAAC/G,EADqB;AAE/BC,MAAAA,SAF+B;AAG/BqjB,MAAAA,aAAa,EAAEziB,iBAAiB,CAACkG,KAAK,CAAChM,GAAP,CAHD;AAI/B6L,MAAAA,eAAe,EAAED,mBAAmB,CAACI,KAAK,CAAChM,GAAP,CAJL;AAK/BmpB,MAAAA,KAAK,EAAEnd,KAAK,CAACmd,KALkB;AAM/B3gB,MAAAA,KAAK,EAAEwD,KAAK,CAACxD,KANkB;AAO/Bwe,MAAAA,KAAK,EAAEhb,KAAK,CAACgb,KAPkB;AAQ/Btf,MAAAA,SAAS,EAAEsE,KAAK,CAACtE,SARc;AAS/BvC,MAAAA,YAAY,EAAE6G,KAAK,CAAC7G;AATW,KAAD,CAAhC;AAYAxE,IAAAA,OAAO,CAAC85B,IAAR,CAAa,GAAb;AACA,QAAIC,YAAY,GAAG,CACjB,GAAGH,YADc,EAEjB,GAAGC,YAFc;AAIjB,UAAMhzB,UAAU,CAACwE,KAAD,CAJC,EAKjB,MAAMvC,UAAU,CAACuC,KAAD,CALC,EAMjB,MAAMjB,WAAW,CAACiB,KAAD,CANA,EAOjB,MAAMrC,cAAc,CAACqC,KAAD,CAPH,EAQjB,MAAMnC,eAAe,CAACmC,KAAD,CARJ,EASjB,MAAMnB,aAAa,CAACmB,KAAD,CATF,EAUjBjK,MAViB,CAUV8R,OAVU,CAAnB;AAWAlT,IAAAA,OAAO,CAACg6B,OAAR,CAAgB,GAAhB;AAEA,UAAMp6B,OAAO,CAACC,GAAR,CACJk6B,YAAY,CAACj6B,GAAb,CAAiB,CAAC;AAAEwC,MAAAA,IAAF;AAAQ4C,MAAAA;AAAR,KAAD,KACfhF,WAAE,CAAC+5B,SAAH,CAAa33B,IAAb,EAAmB4C,OAAnB,EAA4B,OAA5B,CADF,CADI,CAAN;AAKD,GAhFD;;AAkFA,SAAOmG,KAAP;AACD;;ACzHc,SAAS6uB,cAAT,CAAwB;AAAEr1B,EAAAA,IAAF;AAAQL,EAAAA;AAAR,CAAxB,EAAgD;AAC7D,MAAID,SAAS,GAAG,IAAIxD,GAAJ,CAAQ,CAAC8D,IAAI,CAACvC,IAAN,CAAR,CAAhB;AACA,MAAIgD,cAAc,GAAG,IAAIvE,GAAJ,EAArB;AACA,MAAIo5B,OAAO,GAAG,IAAIp5B,GAAJ,EAAd;;AAEA,MAAI8D,IAAI,CAACwgB,KAAT,EAAgB;AACd/f,IAAAA,cAAc,CAACrE,GAAf,CAAmB4D,IAAI,CAACwgB,KAAxB;AACD;;AAED,OAAK,IAAIjd,UAAT,IAAuB5D,YAAY,CAACwB,MAAb,EAAvB,EAA8C;AAC5C,QAAIoC,UAAU,CAACtD,MAAf,EAAuB;;AAEvB,QAAIsD,UAAU,CAACrD,MAAX,CAAkBF,IAAlB,CAAuBsD,KAAvB,CAA6BtH,GAA7B,CAAiCgE,IAAI,CAACtC,EAAtC,CAAJ,EAA+C;AAC7CgC,MAAAA,SAAS,CAACtD,GAAV,CAAcmH,UAAU,CAAC9F,IAAzB;;AACA,UAAI8F,UAAU,CAACid,KAAf,EAAsB;AACpB/f,QAAAA,cAAc,CAACrE,GAAf,CAAmBmH,UAAU,CAACid,KAA9B;AACD;;AACD8U,MAAAA,OAAO,CAACl5B,GAAR,CAAYmH,UAAU,CAAC7F,EAAvB;AACD;AACF;;AAED,SAAO;AAAEgC,IAAAA,SAAF;AAAae,IAAAA,cAAb;AAA6B60B,IAAAA;AAA7B,GAAP;AACD;;ACRc,eAAeC,UAAf,CAA0B;AAAEC,EAAAA;AAAF,CAA1B,EAAuC;AACpD,MAAIC,OAAO,GAAGC,QAAQ,CAACC,KAAT,CAAe10B,KAAf,EAAsB;AAClCpG,IAAAA,GAAG,EAAE26B,OAAO,CAACh7B,GADqB;AAElCo7B,IAAAA,OAAO,EAAE,CACPr6B,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,cAAhB,EAAgC,IAAhC,CADO,EAEPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,SAAhB,CAFO,EAGPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,cAAhB,EAAgC,OAAhC,EAAyC,MAAzC,CAHO,EAIPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,OAAhB,EAAyB,cAAzB,CAJO,EAKPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,OAAhB,EAAyB,eAAzB,CALO,EAMPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,OAAhB,EAAyB,gBAAzB,CANO,EAOPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,OAAhB,EAAyB,iBAAzB,CAPO,EAQPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,OAAhB,EAAyB,eAAzB,CARO,EASPD,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgB,MAAhB,EAAwB,cAAxB,CATO,CAFyB;AAalCq6B,IAAAA,aAAa,EAAE,IAbmB;;AAAA,GAAtB,CAAd;AAiBA,MAAIC,WAAW,GAAG,IAAlB;AACA,MAAIC,oBAAoB,GAAG,IAA3B;AACA,MAAIC,KAAK,GAAG,EAAZ;;AAEA,WAASC,OAAT,CAAiB;AAAEx4B,IAAAA,IAAF;AAAQy4B,IAAAA;AAAR,GAAjB,EAA+B;AAC7BF,IAAAA,KAAK,CAACxyB,IAAN,CAAW;AAAE/F,MAAAA,IAAI,EAAElC,IAAI,CAACC,IAAL,CAAUg6B,OAAO,CAACh7B,GAAlB,EAAuBiD,IAAvB,CAAR;AAAsCy4B,MAAAA;AAAtC,KAAX;AACAC,IAAAA,YAAY;AACb;;AAED,WAASA,YAAT,GAAwB;AACtB;AACAC,IAAAA,YAAY,CAACN,WAAD,CAAZ;AACAA,IAAAA,WAAW,GAAG,IAAd;;AACA,QAAIC,oBAAJ,EAA0B;AACxBD,MAAAA,WAAW,GAAGO,UAAU,CAACF,YAAD,EAAe,EAAf,CAAxB;AACA;AACD;;AACDG,IAAAA,aAAa;AACd;;AAED,iBAAeA,aAAf,GAA+B;AAC7B,QAAIN,KAAK,CAACpyB,MAAN,KAAiB,CAAjB,IAAsBmyB,oBAA1B,EAAgD;AAC9C;AACD;;AAED,QAAIQ,UAAU,GAAG,CAAC,GAAGP,KAAJ,CAAjB;AACAA,IAAAA,KAAK,GAAG,EAAR;AACAD,IAAAA,oBAAoB,GAAG,IAAIh7B,OAAJ,CAAY,MAAMoK,OAAN,IAAiB;AAClD,UAAI;AACF,cAAMqxB,YAAY,CAAC;AAAER,UAAAA,KAAK,EAAEO,UAAT;AAAqBf,UAAAA;AAArB,SAAD,CAAlB;AACD,OAFD,CAEE,OAAOl3B,KAAP,EAAc;AACdnD,QAAAA,OAAO,CAACmD,KAAR,CAAcA,KAAd;AACD,OAJD,SAIU;AACR6G,QAAAA,OAAO;AACP4wB,QAAAA,oBAAoB,GAAG,IAAvB;AACD;AACF,KATsB,CAAvB;AAUD;;AAEDN,EAAAA,OAAO,CAACgB,EAAR,CAAW,KAAX,EAAkBh5B,IAAI,IAAIw4B,OAAO,CAAC;AAAEx4B,IAAAA,IAAF;AAAQy4B,IAAAA,EAAE,EAAE;AAAZ,GAAD,CAAjC;AACAT,EAAAA,OAAO,CAACgB,EAAR,CAAW,QAAX,EAAqBh5B,IAAI,IAAIw4B,OAAO,CAAC;AAAEx4B,IAAAA,IAAF;AAAQy4B,IAAAA,EAAE,EAAE;AAAZ,GAAD,CAApC;AACAT,EAAAA,OAAO,CAACgB,EAAR,CAAW,QAAX,EAAqBh5B,IAAI,IAAIw4B,OAAO,CAAC;AAAEx4B,IAAAA,IAAF;AAAQy4B,IAAAA,EAAE,EAAE;AAAZ,GAAD,CAApC;AAEA,SAAOT,OAAP;AACD;;AAED,eAAee,YAAf,CAA4B;AAAER,EAAAA,KAAF;AAASR,EAAAA;AAAT,CAA5B,EAAgD;AAC9C,MAAIkB,cAAc,GAAG;AACnBh3B,IAAAA,SAAS,EAAE,IAAIxD,GAAJ,EADQ;AAEnBuE,IAAAA,cAAc,EAAE,IAAIvE,GAAJ,EAFG;AAGnBwE,IAAAA,eAAe,EAAE,IAAIxE,GAAJ,EAHE;AAInBqD,IAAAA,eAAe,EAAE,IAAIrD,GAAJ;AAJE,GAArB;AAOA,QAAMnB,OAAO,CAACC,GAAR,CAAY,CAChB27B,eAAe,CAAC;AACdp1B,IAAAA,KAAK,EAAEy0B,KAAK,CAACz5B,MAAN,CAAa6E,IAAI,IAAIA,IAAI,CAAC80B,EAAL,KAAY,QAAjC,CADO;AAEdV,IAAAA,OAFc;AAGdkB,IAAAA;AAHc,GAAD,CADC,EAMhBE,qBAAqB,CAAC;AACpBr1B,IAAAA,KAAK,EAAEy0B,KAAK,CAACz5B,MAAN,CAAa6E,IAAI,IAAIA,IAAI,CAAC80B,EAAL,KAAY,QAAjC,CADa;AAEpBV,IAAAA,OAFoB;AAGpBkB,IAAAA;AAHoB,GAAD,CANL,CAAZ,CAAN;AAaA,QAAMlB,OAAO,CAACV,YAAR,CAAqB4B,cAArB,CAAN;AAEA,MAAI,CAAClB,OAAO,CAAC/6B,OAAb,EAAsB,OAvBwB;AAyB9C;AACA;AACA;AAEA;AACA;AACD;;AAED,SAASk8B,eAAT,CAAyB;AAAEp1B,EAAAA,KAAF;AAASi0B,EAAAA,OAAT;AAAkBkB,EAAAA;AAAlB,CAAzB,EAA6D;AAC3D,SAAO37B,OAAO,CAACC,GAAR,CACLuG,KAAK,CAACtG,GAAN,CAAU,OAAO;AAAEwC,IAAAA;AAAF,GAAP,KAAoB;AAC5B+3B,IAAAA,OAAO,CAAC/6B,OAAR,IACEU,OAAO,CAACC,GAAR,CACEgtB,KAAK,CAACyO,OAAN,CAAc,GAAd,CADF,EAEEt7B,IAAI,CAACqD,QAAL,CAAcrD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAd,CAFF,EAGE2qB,KAAK,CAACE,GAAN,CAAU7qB,IAAI,CAACJ,OAAL,CAAam4B,OAAO,CAACh7B,GAArB,EAA0B,EAA1B,EAA8B6C,OAA9B,CAAsC,KAAtC,EAA6C,EAA7C,CAAV,CAHF,CADF;;AAOA,QAAI,MAAM2D,gBAAgB,CAACvD,IAAD,CAA1B,EAAkC;AAChC,UAAIC,EAAE,GAAGiB,SAAS,CAAClB,IAAD,CAAlB;AACA,UAAId,IAAI,GAAG64B,OAAO,CAACl2B,WAAR,CAAoBnD,GAApB,CAAwBuB,EAAxB,CAAX;AACAf,MAAAA,IAAI,CAACm6B,MAAL,CAAYr5B,IAAZ;;AAEA,UAAId,IAAI,CAAC0F,IAAL,KAAc,CAAlB,EAAqB;AACnBmzB,QAAAA,OAAO,CAACl2B,WAAR,CAAoBw3B,MAApB,CAA2Bp5B,EAA3B;AACD;AACF,KARD,MAQO;AACL,UAAIq5B,QAAQ,GAAGx7B,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAV,EAA8B,aAA9B,CAAf;AACA,UAAIuC,IAAI,GAAGw1B,OAAO,CAAC71B,YAAR,CAAqBxD,GAArB,CAAyB46B,QAAzB,CAAX;AACA,UAAI,CAAC/2B,IAAL,EAAW;AAEXg3B,MAAAA,kBAAkB,CAAC;AAAEh3B,QAAAA,IAAF;AAAQw1B,QAAAA,OAAR;AAAiBkB,QAAAA;AAAjB,OAAD,CAAlB;AAEAA,MAAAA,cAAc,CAACh3B,SAAf,CAAyBo3B,MAAzB,CAAgC92B,IAAI,CAACvC,IAArC;AACA+3B,MAAAA,OAAO,CAACtzB,SAAR,CAAkB40B,MAAlB,CAAyB92B,IAAI,CAACtC,EAA9B;AACA83B,MAAAA,OAAO,CAAC71B,YAAR,CAAqBm3B,MAArB,CAA4B92B,IAAI,CAACvC,IAAjC;;AAEA,UAAI,MAAMkD,UAAU,CAAClD,IAAD,CAApB,EAA4B;AAC1Bi5B,QAAAA,cAAc,CAACh3B,SAAf,CAAyBo3B,MAAzB,CAAgCr5B,IAAhC;;AACA,YAAI;AACF,gBAAMpC,WAAE,CAACC,MAAH,CAAUmC,IAAI,CAACJ,OAAL,CAAa,aAAb,EAA4B,SAA5B,CAAV,CAAN;AACD,SAFD,CAEE,OAAOiB,KAAP,EAAc;AACjB,OALD,MAKO,IAAI,MAAMwC,eAAe,CAACrD,IAAD,CAAzB,EAAiC;AACtCi5B,QAAAA,cAAc,CAACh3B,SAAf,CAAyBtD,GAAzB,CAA6B4D,IAAI,CAACvC,IAAlC;AACAi5B,QAAAA,cAAc,CAACj2B,cAAf,CAA8Bq2B,MAA9B,CAAqCr5B,IAArC;AACD,OAHM,MAGA,IAAI,MAAMsD,gBAAgB,CAACtD,IAAD,CAA1B,EAAkC;AACvCi5B,QAAAA,cAAc,CAACh2B,eAAf,CAA+Bo2B,MAA/B,CAAsCr5B,IAAtC;AACD;AACF;AACF,GAvCD,CADK,CAAP;AA0CD;;AAED,SAASm5B,qBAAT,CAA+B;AAAEr1B,EAAAA,KAAF;AAASi0B,EAAAA,OAAT;AAAkBkB,EAAAA;AAAlB,CAA/B,EAAmE;AACjE,SAAO37B,OAAO,CAACC,GAAR,CACLuG,KAAK,CAACtG,GAAN,CAAU,OAAO;AAAEwC,IAAAA,IAAF;AAAQy4B,IAAAA;AAAR,GAAP,KAAwB;AAChCV,IAAAA,OAAO,CAAC/6B,OAAR,IACEU,OAAO,CAACC,GAAR,CACEgtB,KAAK,CAACe,MAAN,CAAa+M,EAAE,CAACe,WAAH,GAAiB,CAAjB,CAAb,CADF,EAEE17B,IAAI,CAACqD,QAAL,CAAcrD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAd,CAFF,EAGE2qB,KAAK,CAACE,GAAN,CAAU7qB,IAAI,CAACJ,OAAL,CAAam4B,OAAO,CAACh7B,GAArB,EAA0B,EAA1B,EAA8B6C,OAA9B,CAAsC,KAAtC,EAA6C,EAA7C,CAAV,CAHF,CADF;;AAOA,QAAI,MAAM2D,gBAAgB,CAACvD,IAAD,CAA1B,EAAkC;AAChCi5B,MAAAA,cAAc,CAACn3B,eAAf,CAA+BnD,GAA/B,CAAmCqB,IAAnC;AACD,KAFD,MAEO;AACL,UAAI,MAAMkD,UAAU,CAAClD,IAAD,CAApB,EAA4B;AAC1Bi5B,QAAAA,cAAc,CAACh3B,SAAf,CAAyBtD,GAAzB,CAA6BqB,IAA7B;AAEA,YAAIy5B,SAAS,GAAG37B,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAV,EAA8B,UAA9B,CAAhB;;AACA,YAAI05B,aAAU,CAACD,SAAD,CAAd,EAA2B;AACzBR,UAAAA,cAAc,CAACj2B,cAAf,CAA8BrE,GAA9B,CAAkC86B,SAAlC;AACD;;AAED,YAAIE,UAAU,GAAG77B,IAAI,CAACC,IAAL,CACfD,IAAI,CAACuG,OAAL,CAAavG,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAb,CADe,EAEf,aAFe,CAAjB;;AAIA,YAAI05B,aAAU,CAACC,UAAD,CAAd,EAA4B;AAC1BV,UAAAA,cAAc,CAACh3B,SAAf,CAAyBtD,GAAzB,CAA6Bg7B,UAA7B;AACD;AACF,OAfD,MAeO,IAAI,MAAMt2B,eAAe,CAACrD,IAAD,CAAzB,EAAiC;AACtCi5B,QAAAA,cAAc,CAACh3B,SAAf,CAAyBtD,GAAzB,CACEb,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAV,EAA8B,aAA9B,CADF;AAGAi5B,QAAAA,cAAc,CAACj2B,cAAf,CAA8BrE,GAA9B,CAAkCqB,IAAlC;AACD,OALM,MAKA,IAAI,MAAMsD,gBAAgB,CAACtD,IAAD,CAA1B,EAAkC;AACvCi5B,QAAAA,cAAc,CAACh2B,eAAf,CAA+BtE,GAA/B,CAAmCqB,IAAnC;AACD;;AAED,UAAIs5B,QAAQ,GAAGx7B,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACuG,OAAL,CAAarE,IAAb,CAAV,EAA8B,aAA9B,CAAf;AACA,UAAIuC,IAAI,GAAGw1B,OAAO,CAAC71B,YAAR,CAAqBxD,GAArB,CAAyB46B,QAAzB,CAAX;AACA,UAAI,CAAC/2B,IAAL,EAAW;AAEXg3B,MAAAA,kBAAkB,CAAC;AAAEh3B,QAAAA,IAAF;AAAQw1B,QAAAA,OAAR;AAAiBkB,QAAAA;AAAjB,OAAD,CAAlB;AACD,KAxC+B;AA2ChC;AACA;AACA;AACA;AACA;AACA;AACA;;AACD,GAlDD,CADK,CAAP;AAqDD;;AAED,SAASM,kBAAT,CAA4B;AAAEh3B,EAAAA,IAAF;AAAQw1B,EAAAA,OAAR;AAAiBkB,EAAAA;AAAjB,CAA5B,EAA+D;AAC7D,MAAI;AAAEh3B,IAAAA,SAAF;AAAae,IAAAA;AAAb,MAAgC40B,cAAc,CAAC;AACjDr1B,IAAAA,IADiD;AAEjDL,IAAAA,YAAY,EAAE61B,OAAO,CAAC71B;AAF2B,GAAD,CAAlD;;AAKA,OAAK,IAAIlC,IAAT,IAAiBiC,SAAjB,EAA4B;AAC1Bg3B,IAAAA,cAAc,CAACh3B,SAAf,CAAyBtD,GAAzB,CAA6BqB,IAA7B;AACD;;AACD,OAAK,IAAIA,IAAT,IAAiBgD,cAAjB,EAAiC;AAC/Bi2B,IAAAA,cAAc,CAACj2B,cAAf,CAA8BrE,GAA9B,CAAkCqB,IAAlC;AACD;AACF;;ACxNc,eAAek4B,KAAf,CAAqBnS,OAArB,EAA8B;AAC3C,MAAIgS,OAAO,GAAGX,WAAW,CAACrR,OAAD,CAAzB;AAEA,QAAM9kB,oBAAoB,CAAC82B,OAAO,CAACh7B,GAAT,CAA1B;AAEA,QAAMg7B,OAAO,CAACV,YAAR,EAAqB,MAAMnzB,QAAQ,CAAC6zB,OAAO,CAACh7B,GAAT,CAAnC,EAAN;;AAEA,MAAIgpB,OAAO,CAAC/oB,OAAZ,EAAqB;AACnB,QAAI+6B,OAAO,CAACl2B,WAAR,CAAoB+C,IAApB,GAA2B,CAA/B,EAAkC;AAChClH,MAAAA,OAAO,CAACC,GAAR,CAAYgtB,KAAK,CAACe,MAAN,CAAc,0BAAd,CAAZ;AACAhuB,MAAAA,OAAO,CAACC,GAAR,CAAY,CAAC,GAAGo6B,OAAO,CAACl2B,WAAR,CAAoByM,IAApB,EAAJ,EAAgC9M,IAAhC,GAAuCzD,IAAvC,CAA4C,IAA5C,CAAZ;AACD;;AAED,QAAI8H,KAAK,GAAG,CAAC,GAAGkyB,OAAO,CAAC71B,YAAR,CAAqBwB,MAArB,EAAJ,CAAZ;AACAhG,IAAAA,OAAO,CAACC,GAAR,CACEkI,KAAK,CACFrI,GADH,CACO+E,IAAI,IAAI;AACX,UAAIq3B,GAAG,GAAGr3B,IAAI,CAACtC,EAAf;;AACA,UAAIsC,IAAI,CAACC,MAAT,EAAiB;AACfo3B,QAAAA,GAAG,GAAI,GAAEr3B,IAAI,CAACtC,EAAG,IAAG0qB,KAAK,CAACE,GAAN,CAAU,aAAV,CAAyB,EAA7C;AACD,OAFD,MAEO,IAAItoB,IAAI,CAACwgB,KAAT,EAAgB;AACrB6W,QAAAA,GAAG,GAAI,GAAEr3B,IAAI,CAACtC,EAAG,IAAG0qB,KAAK,CAACE,GAAN,CAAU,aAAV,CAAyB,EAA7C;AACD;;AACD,aAAQ,GAAEF,KAAK,CAACe,MAAN,CAAa,GAAb,CAAkB,IAAGf,KAAK,CAACC,KAAN,CAAY,GAAZ,CAAiB,IAAGgP,GAAI,IAAGjP,KAAK,CAACE,GAAN,CACxD/sB,IAAI,CAACwC,QAAL,CAAc2H,OAAO,CAAC7K,GAAR,EAAd,EAA6BmF,IAAI,CAACvC,IAAlC,CADwD,CAExD,EAFF;AAGD,KAXH,EAYGwB,IAZH,GAaGzD,IAbH,CAaQ,IAbR,CADF;AAiBA8H,IAAAA,KAAK,CAAC3H,OAAN,CAAcqtB,kBAAd;AACD;;AAED,MAAIxF,OAAO,CAAC8T,IAAZ,EAAkB;AAElB,MAAI7B,OAAO,GAAGF,UAAU,CAAC;AAAEC,IAAAA;AAAF,GAAD,CAAxB;AAEA9vB,EAAAA,OAAO,CAAC+wB,EAAR,CAAW,YAAX,EAAyB,MAAM;AAC7Bt7B,IAAAA,OAAO,CAACC,GAAR,CAAY,wCAAZ;AACAq6B,IAAAA,OAAO,CAAC8B,KAAR;AACD,GAHD;AAID;;ACzCD,IAAIC,IAAI,GAAGvC,IAAI,IAAI,IAAIl6B,OAAJ,CAAYoK,OAAO,IAAIkxB,UAAU,CAAClxB,OAAD,EAAU8vB,IAAV,CAAjC,CAAnB;;AAEC,CAAC,kBAAiB;AACjB,MAAI;AACF3G,IAAAA,CADE;AAEF7uB,IAAAA,EAFE;AAGFlF,WAAAA,OAHE;AAIFk9B,IAAAA,IAJE;AAKF9T,IAAAA,KALE;AAMF3gB,IAAAA,KANE;AAOFwe,IAAAA,KAPE;AAQFmU,IAAAA,KAAK,EAAE+B,WARL;AASFj9B,IAAAA,OATE;AAUF0tB,IAAAA;AAVE,MAWAwP,QAAQ,CAACjyB,OAAO,CAACkyB,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,OAApC,EAA6C,SAA7C,CAJwB;AAKlCC,IAAAA,OAAO,EAAE;AACPt4B,MAAAA,EAAE,EAAE,WADG;AAEPlF,MAAAA,KAAK,EAAE,KAFA;AAGPopB,MAAAA,KAAK,EAAE,IAHA;AAIP3gB,MAAAA,KAAK,EAAE,IAJA;AAKPwe,MAAAA,KAAK,EAAE,KALA;AAMP/mB,MAAAA,OAAO,EAAE,IANF;AAOP0tB,MAAAA,OAAO,EAAE,KAPF;AAQPwN,MAAAA,KAAK,EAAE;AARA;AALyB,GAAxB,CAXZ;;AA4BA,MAAI,CAAC+B,WAAD,IAAgB10B,KAApB,EAA2B;AACzBA,IAAAA,KAAK,GAAG,KAAR;AACD;;AAEDwe,EAAAA,KAAK,GAAGA,KAAK,KAAK,MAAlB;;AAEA,MAAIiW,IAAJ,EAAU;AACRt8B,IAAAA,OAAO,CAACC,GAAR,CAAa;;;;;;;;;;;;;;GAAb;AAgBAsK,IAAAA,OAAO,CAACsyB,IAAR;AACD;;AAED,MAAI7P,OAAJ,EAAa;AACXhtB,IAAAA,OAAO,CAACC,GAAR,CAAa,IAAG68B,GAAG,CAAC9P,OAAQ,EAA5B;AACAziB,IAAAA,OAAO,CAACsyB,IAAR;AACD;;AAED,MAAIE,KAAK,GAAGhrB,KAAK,CAACC,OAAN,CAAcmhB,CAAd,KAAoBA,CAAC,CAAC,CAAD,CAAjC;;AAEA,MAAI,CAAC4J,KAAD,IAAU,CAAC,CAAC,MAAM78B,WAAE,CAAC88B,IAAH,CAAQD,KAAR,CAAP,EAAuBE,WAAvB,EAAf,EAAqD;AACnDj9B,IAAAA,OAAO,CAACmD,KAAR,CACG,oDAAmD45B,KAAM,aAD5D;AAGAxyB,IAAAA,OAAO,CAACsyB,IAAR;AACD;;AAED,MAAI,CAACz8B,IAAI,CAAC88B,UAAL,CAAgBH,KAAhB,CAAL,EAA6B;AAC3BA,IAAAA,KAAK,GAAG38B,IAAI,CAACkZ,SAAL,CAAelZ,IAAI,CAACC,IAAL,CAAUkK,OAAO,CAAC7K,GAAR,EAAV,EAAyBq9B,KAAzB,CAAf,CAAR;AACD;;AAED,MAAI;AACF,QAAI,CAAC,MAAM78B,WAAE,CAAC88B,IAAH,CAAQ58B,IAAI,CAACC,IAAL,CAAU08B,KAAV,EAAiB,KAAjB,CAAR,CAAP,EAAyCE,WAAzC,EAAJ,EAA4D;AAC1DF,MAAAA,KAAK,GAAG38B,IAAI,CAACC,IAAL,CAAU08B,KAAV,EAAiB,KAAjB,CAAR;AACD;AACF,GAJD,CAIE,OAAO55B,KAAP,EAAc;;AAEhB,MAAI/D,OAAJ,EAAW;AACTY,IAAAA,OAAO,CAACC,GAAR,CAAa,eAAc88B,KAAM,KAAjC;AACA,UAAMI,KAAO,CAACJ,KAAD,EAAQz9B,OAAR,CAAb;AACAiL,IAAAA,OAAO,CAACsyB,IAAR;AACD;;AAEDO,EAAAA,cAAc,CAAC;AAAEN,IAAAA;AAAF,GAAD,CAAd,CAAwBO,MAAxB;;AAEA,MAAI/9B,OAAJ,EAAa;AACXU,IAAAA,OAAO,CAACC,GAAR,CAAYgtB,KAAK,CAACqQ,SAAN,CAAiB,wBAAuBR,GAAG,CAAC9P,OAAQ,EAApD,CAAZ;AAEAhtB,IAAAA,OAAO,CAACC,GAAR,CACG,0BAAyBgtB,KAAK,CAACC,KAAN,CAAY6P,KAAZ,CAAmB,SAAQ9P,KAAK,CAACC,KAAN,CAAY5oB,EAAZ,CAAgB,KACnEuD,KAAK,GAAG,kBAAH,GAAwB,qBAC9B,EAHH;;AAMA,QAAI00B,WAAW,IAAI,CAAC10B,KAApB,EAA2B;AACzB7H,MAAAA,OAAO,CAACC,GAAR,CACEgtB,KAAK,CAACsQ,KAAN,CAAY,iDAAZ,CADF;AAGAv9B,MAAAA,OAAO,CAACC,GAAR;AACAD,MAAAA,OAAO,CAACC,GAAR,CAAa,0BAAb;AACAD,MAAAA,OAAO,CAACC,GAAR,CACEgtB,KAAK,CAACuQ,IAAN,CACE,sFADF,CADF;AAKAx9B,MAAAA,OAAO,CAACC,GAAR;AACAD,MAAAA,OAAO,CAACC,GAAR,CACE,mBADF,EAEEgtB,KAAK,CAACuQ,IAAN,CAAWvQ,KAAK,CAACC,KAAN,CAAY,qBAAZ,CAAX,CAFF;AAIAltB,MAAAA,OAAO,CAACC,GAAR;AACAD,MAAAA,OAAO,CAACC,GAAR,CACEgtB,KAAK,CAACsQ,KAAN,CAAY,iDAAZ,CADF;AAGA,YAAMlB,IAAI,CAAC,KAAD,CAAV;AACD;;AAEDr8B,IAAAA,OAAO,CAACC,GAAR,CAAYgtB,KAAK,CAACe,MAAN,CAAa,GAAb,CAAZ,EAA+B,SAA/B;AACAhuB,IAAAA,OAAO,CAACC,GAAR,CAAYgtB,KAAK,CAACC,KAAN,CAAY,GAAZ,CAAZ,EAA+B,WAA/B;AACAltB,IAAAA,OAAO,CAACC,GAAR,CAAYgtB,KAAK,CAACmB,IAAN,CAAW,GAAX,CAAZ,EAA8B,WAA9B;AACApuB,IAAAA,OAAO,CAACC,GAAR,CAAY,SAAZ,EAAuBgtB,KAAK,CAACmB,IAAN,CAAW,QAAX,CAAvB,EAA6C,wBAA7C;AACD;;AAEDoM,EAAAA,KAAK,CAAC;AACJl2B,IAAAA,EADI;AAEJkkB,IAAAA,KAFI;AAGJ2T,IAAAA,IAAI,EAAE,CAACI,WAHH;AAIJl9B,IAAAA,GAAG,EAAE09B,KAJD;AAKJl1B,IAAAA,KALI;AAMJwe,IAAAA,KANI;AAOJ/mB,IAAAA;AAPI,GAAD,CAAL;AASD,CAtIA"}
\No newline at end of file