Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/bbcode/parser/dist/ |
Upload File : |
{"version":3,"file":"parser.bundle.js","sources":["../../shared/src/get-by-index.js","../src/parser-scheme.js","../src/parser.js"],"sourcesContent":["import { Type } from 'main.core';\n\nexport function getByIndex<T>(array: Array<T>, index: number): ?T\n{\n\tif (!Type.isArray(array))\n\t{\n\t\tthrow new TypeError('array is not a array');\n\t}\n\n\tif (!Type.isInteger(index))\n\t{\n\t\tthrow new TypeError('index is not a integer');\n\t}\n\n\tconst preparedIndex = index < 0 ? array.length + index : index;\n\n\treturn array[preparedIndex];\n}\n","import { BBCodeScheme, BBCodeTagScheme, BBCodeNode } from 'ui.bbcode.model';\n\nexport class ParserScheme extends BBCodeScheme\n{\n\tgetTagScheme(tagName: string): BBCodeTagScheme\n\t{\n\t\treturn new BBCodeTagScheme({\n\t\t\tname: 'any',\n\t\t});\n\t}\n\n\tisAllowedTag(tagName: string): boolean\n\t{\n\t\treturn true;\n\t}\n\n\tisChildAllowed(parent: string | BBCodeNode, child: string | BBCodeNode): boolean\n\t{\n\t\treturn true;\n\t}\n}\n","import { Type } from 'main.core';\nimport { AstProcessor } from 'ui.bbcode.ast-processor';\nimport { getByIndex } from '../../shared';\nimport {\n\tBBCodeScheme,\n\tDefaultBBCodeScheme,\n\tBBCodeNode,\n\ttypeof BBCodeRootNode,\n\ttypeof BBCodeElementNode,\n\ttypeof BBCodeTextNode,\n\ttypeof BBCodeTagScheme,\n\ttype BBCodeContentNode,\n\ttype BBCodeSpecialCharNode,\n} from 'ui.bbcode.model';\nimport { BBCodeEncoder } from 'ui.bbcode.encoder';\nimport { Linkify } from 'ui.linkify';\nimport { ParserScheme } from './parser-scheme';\n\nconst TAG_REGEX: RegExp = /\\[(\\/)?(\\w+|\\*).*?]/;\nconst TAG_REGEX_GS: RegExp = /\\[(\\/)?(\\w+|\\*)(.*?)]/gs;\n\nconst LF = '\\n';\nconst CRLF = '\\r\\n';\nconst TAB = '\\t';\n\nconst isLinebreak = (symbol: string): boolean => {\n\treturn [LF, CRLF].includes(symbol);\n};\n\nconst isTab = (symbol: string): boolean => {\n\treturn symbol === TAB;\n};\n\nconst isSpecialChar = (symbol: string): boolean => {\n\treturn isTab(symbol) || isLinebreak(symbol);\n};\n\nconst isList = (tagName: string): boolean => {\n\treturn ['list', 'ul', 'ol'].includes(String(tagName).toLowerCase());\n};\n\nconst isListItem = (tagName: string): boolean => {\n\treturn ['*', 'li'].includes(String(tagName).toLowerCase());\n};\n\nconst parserScheme = new ParserScheme();\n\ntype BBCodeParserOptions = {\n\tscheme?: BBCodeScheme,\n\tonUnknown?: (node: BBCodeContentNode, scheme: BBCodeScheme) => void,\n\tencoder?: BBCodeEncoder,\n\tlinkify?: boolean,\n};\n\ntype NextTagResult = {\n\ttagName: string,\n\tisClosedTag: boolean,\n};\n\nclass BBCodeParser\n{\n\tscheme: BBCodeScheme;\n\tencoder: BBCodeEncoder;\n\tonUnknownHandler: () => any;\n\tallowedLinkify: boolean = true;\n\n\tconstructor(options: BBCodeParserOptions = {})\n\t{\n\t\tif (options.scheme)\n\t\t{\n\t\t\tthis.setScheme(options.scheme);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setScheme(new DefaultBBCodeScheme());\n\t\t}\n\n\t\tif (Type.isFunction(options.onUnknown))\n\t\t{\n\t\t\tthis.setOnUnknown(options.onUnknown);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setOnUnknown(BBCodeParser.defaultOnUnknownHandler);\n\t\t}\n\n\t\tif (options.encoder instanceof BBCodeEncoder)\n\t\t{\n\t\t\tthis.setEncoder(options.encoder);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setEncoder(new BBCodeEncoder());\n\t\t}\n\n\t\tif (Type.isBoolean(options.linkify))\n\t\t{\n\t\t\tthis.setIsAllowedLinkify(options.linkify);\n\t\t}\n\t}\n\n\tsetScheme(scheme: BBCodeScheme)\n\t{\n\t\tthis.scheme = scheme;\n\t}\n\n\tgetScheme(): BBCodeScheme\n\t{\n\t\treturn this.scheme;\n\t}\n\n\tsetOnUnknown(handler: () => any)\n\t{\n\t\tif (!Type.isFunction(handler))\n\t\t{\n\t\t\tthrow new TypeError('handler is not a function');\n\t\t}\n\n\t\tthis.onUnknownHandler = handler;\n\t}\n\n\tgetOnUnknownHandler(): () => any\n\t{\n\t\treturn this.onUnknownHandler;\n\t}\n\n\tsetEncoder(encoder: BBCodeEncoder)\n\t{\n\t\tif (encoder instanceof BBCodeEncoder)\n\t\t{\n\t\t\tthis.encoder = encoder;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new TypeError('encoder is not BBCodeEncoder instance');\n\t\t}\n\t}\n\n\tgetEncoder(): BBCodeEncoder\n\t{\n\t\treturn this.encoder;\n\t}\n\n\tsetIsAllowedLinkify(value: boolean)\n\t{\n\t\tthis.allowedLinkify = Boolean(value);\n\t}\n\n\tisAllowedLinkify(): boolean\n\t{\n\t\treturn this.allowedLinkify;\n\t}\n\n\tcanBeLinkified(node: BBCodeTextNode | BBCodeElementNode): boolean\n\t{\n\t\tif (node.getName() === '#text')\n\t\t{\n\t\t\tconst notAllowedNodeNames = ['url', 'img', 'video', 'code'];\n\t\t\tconst inNotAllowedNode = notAllowedNodeNames.some((name: string) => {\n\t\t\t\treturn Boolean(AstProcessor.findParentNodeByName(node, name));\n\t\t\t});\n\n\t\t\treturn !inNotAllowedNode;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tstatic defaultOnUnknownHandler(node: BBCodeContentNode, scheme: BBCodeScheme): ?Array<BBCodeContentNode>\n\t{\n\t\tif (node.getType() === BBCodeNode.ELEMENT_NODE)\n\t\t{\n\t\t\tconst nodeName: string = node.getName();\n\t\t\tif (['left', 'center', 'right', 'justify'].includes(nodeName))\n\t\t\t{\n\t\t\t\tconst newNode = scheme.createElement({\n\t\t\t\t\tname: 'p',\n\t\t\t\t});\n\t\t\t\tnode.replace(newNode);\n\t\t\t\tnewNode.setChildren(node.getChildren());\n\t\t\t}\n\t\t\telse if (['background', 'color', 'size'].includes(nodeName))\n\t\t\t{\n\t\t\t\tconst newNode = scheme.createElement({\n\t\t\t\t\tname: 'b',\n\t\t\t\t});\n\t\t\t\tnode.replace(newNode);\n\t\t\t\tnewNode.setChildren(node.getChildren());\n\t\t\t}\n\t\t\telse if (['span', 'font'].includes(nodeName))\n\t\t\t{\n\t\t\t\tconst fragment = scheme.createFragment({ children: node.getChildren() });\n\t\t\t\tnode.replace(fragment);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst openingTag: string = node.getOpeningTag();\n\t\t\t\tconst closingTag: string = node.getClosingTag();\n\n\t\t\t\tnode.replace(\n\t\t\t\t\tscheme.createText(openingTag),\n\t\t\t\t\t...node.getChildren(),\n\t\t\t\t\tscheme.createText(closingTag),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic toLowerCase(value: string): string\n\t{\n\t\tif (Type.isStringFilled(value))\n\t\t{\n\t\t\treturn value.toLowerCase();\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tparseText(text: string): Array<BBCodeTextNode | BBCodeSpecialCharNode>\n\t{\n\t\tif (Type.isStringFilled(text))\n\t\t{\n\t\t\tconst regex = /\\\\r\\\\n|\\\\n|\\\\t|\\\\.|.|\\r\\n|\\n|\\t/g;\n\n\t\t\treturn [...text.matchAll(regex)]\n\t\t\t\t.flatMap(([token]) => {\n\t\t\t\t\tif (isLinebreak(token))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [...token];\n\t\t\t\t})\n\t\t\t\t.reduce((acc: Array<BBCodeTextNode | BBCodeSpecialCharNode>, symbol: string) => {\n\t\t\t\t\tif (isSpecialChar(symbol))\n\t\t\t\t\t{\n\t\t\t\t\t\tacc.push(symbol);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tconst lastItem: string = getByIndex(acc, -1);\n\t\t\t\t\t\tif (isSpecialChar(lastItem) || Type.isNil(lastItem))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tacc.push(symbol);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tacc[acc.length - 1] += symbol;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [])\n\t\t\t\t.map((fragment: string) => {\n\t\t\t\t\tif (isLinebreak(fragment))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn parserScheme.createNewLine();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isTab(fragment))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn parserScheme.createTab();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn parserScheme.createText({\n\t\t\t\t\t\tcontent: this.getEncoder().decodeText(fragment),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tstatic findNextTagIndex(bbcode: string, startIndex = 0): number\n\t{\n\t\tconst nextContent: string = bbcode.slice(startIndex);\n\t\tconst matchResult = nextContent.match(new RegExp(TAG_REGEX));\n\t\tif (matchResult)\n\t\t{\n\t\t\treturn matchResult.index + startIndex;\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\tstatic findNextTag(bbcode: string, startIndex = 0): ?NextTagResult\n\t{\n\t\tconst nextContent: string = bbcode.slice(startIndex);\n\t\tconst matchResult = nextContent.match(new RegExp(TAG_REGEX));\n\t\tif (matchResult)\n\t\t{\n\t\t\tconst [, slash, tagName] = matchResult;\n\n\t\t\treturn {\n\t\t\t\ttagName,\n\t\t\t\tisClosedTag: slash === '\\\\',\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic trimQuotes(value: string): string\n\t{\n\t\tconst source = String(value);\n\t\tif ((/^[\"'].*[\"']$/g).test(source))\n\t\t{\n\t\t\treturn source.slice(1, -1);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tparseAttributes(sourceAttributes: string): { value: ?string, attributes: Array<[string, string]> }\n\t{\n\t\tconst result: {value: string, attributes: Array<Array<string, string>>} = { value: '', attributes: [] };\n\n\t\tif (Type.isStringFilled(sourceAttributes))\n\t\t{\n\t\t\tif (sourceAttributes.startsWith('='))\n\t\t\t{\n\t\t\t\tresult.value = this.getEncoder().decodeAttribute(\n\t\t\t\t\tBBCodeParser.trimQuotes(\n\t\t\t\t\t\tsourceAttributes.slice(1),\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn sourceAttributes\n\t\t\t\t.trim()\n\t\t\t\t.split(' ')\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.reduce((acc: typeof result, item: string) => {\n\t\t\t\t\tconst [key: string, value: string = ''] = item.split('=');\n\t\t\t\t\tacc.attributes.push([\n\t\t\t\t\t\tBBCodeParser.toLowerCase(key),\n\t\t\t\t\t\tthis.getEncoder().decodeAttribute(\n\t\t\t\t\t\t\tBBCodeParser.trimQuotes(value),\n\t\t\t\t\t\t),\n\t\t\t\t\t]);\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tparse(bbcode: string): BBCodeRootNode\n\t{\n\t\tconst result: BBCodeRootNode = parserScheme.createRoot();\n\n\t\tconst firstTagIndex: number = BBCodeParser.findNextTagIndex(bbcode);\n\t\tif (firstTagIndex !== 0)\n\t\t{\n\t\t\tconst textBeforeFirstTag: string = firstTagIndex === -1 ? bbcode : bbcode.slice(0, firstTagIndex);\n\t\t\tresult.appendChild(\n\t\t\t\t...this.parseText(textBeforeFirstTag),\n\t\t\t);\n\t\t}\n\n\t\tconst stack: Array<BBCodeElementNode> = [result];\n\t\tconst wasOpened: Array<string> = [];\n\t\tlet current: ?BBCodeElementNode = null;\n\t\tlet level: number = 0;\n\n\t\tbbcode.replace(TAG_REGEX_GS, (fullTag: string, slash: ?string, tagName: string, attrs: ?string, index: number) => {\n\t\t\tconst isOpeningTag: boolean = Boolean(slash) === false;\n\t\t\tconst startIndex: number = fullTag.length + index;\n\t\t\tconst nextContent: string = bbcode.slice(startIndex);\n\t\t\tconst attributes = this.parseAttributes(attrs);\n\t\t\tconst lowerCaseTagName: string = BBCodeParser.toLowerCase(tagName);\n\t\t\tlet parent: ?(BBCodeRootNode | BBCodeElementNode) = stack[level];\n\n\t\t\tif (isOpeningTag)\n\t\t\t{\n\t\t\t\tconst isPotentiallyVoid: boolean = !nextContent.includes(`[/${tagName}]`);\n\t\t\t\tif (\n\t\t\t\t\tisPotentiallyVoid\n\t\t\t\t\t&& !isListItem(lowerCaseTagName)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tconst tagScheme: BBCodeTagScheme = this.getScheme().getTagScheme(lowerCaseTagName);\n\t\t\t\t\tconst isAllowedVoidTag: boolean = tagScheme && tagScheme.isVoid();\n\t\t\t\t\tif (isAllowedVoidTag)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent = parserScheme.createElement({\n\t\t\t\t\t\t\tname: lowerCaseTagName,\n\t\t\t\t\t\t\tvalue: attributes.value,\n\t\t\t\t\t\t\tattributes: Object.fromEntries(attributes.attributes),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcurrent.setScheme(this.getScheme());\n\t\t\t\t\t\tparent.appendChild(current);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tparent.appendChild(\n\t\t\t\t\t\t\tparserScheme.createText(fullTag),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst nextTagIndex: number = BBCodeParser.findNextTagIndex(bbcode, startIndex);\n\t\t\t\t\tif (nextTagIndex !== 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst content: string = nextTagIndex === -1 ? nextContent : bbcode.slice(startIndex, nextTagIndex);\n\t\t\t\t\t\tparent.appendChild(\n\t\t\t\t\t\t\t...this.parseText(content),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (isListItem(lowerCaseTagName) && current && isListItem(current.getName()))\n\t\t\t\t\t{\n\t\t\t\t\t\tlevel--;\n\t\t\t\t\t\tparent = stack[level];\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrent = parserScheme.createElement({\n\t\t\t\t\t\tname: lowerCaseTagName,\n\t\t\t\t\t\tvalue: attributes.value,\n\t\t\t\t\t\tattributes: Object.fromEntries(attributes.attributes),\n\t\t\t\t\t});\n\n\t\t\t\t\tconst nextTagIndex: number = BBCodeParser.findNextTagIndex(bbcode, startIndex);\n\t\t\t\t\tif (nextTagIndex !== 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst content: string = nextTagIndex === -1 ? nextContent : bbcode.slice(startIndex, nextTagIndex);\n\t\t\t\t\t\tcurrent.appendChild(\n\t\t\t\t\t\t\t...this.parseText(content),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!parent)\n\t\t\t\t\t{\n\t\t\t\t\t\tlevel++;\n\t\t\t\t\t\tparent = stack[level];\n\t\t\t\t\t}\n\n\t\t\t\t\tparent.appendChild(current);\n\n\t\t\t\t\tlevel++;\n\t\t\t\t\tstack[level] = current;\n\t\t\t\t\twasOpened.push(lowerCaseTagName);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (wasOpened.includes(lowerCaseTagName))\n\t\t\t\t{\n\t\t\t\t\tlevel--;\n\t\t\t\t\tconst openedTagIndex: number = wasOpened.indexOf(lowerCaseTagName);\n\t\t\t\t\twasOpened.splice(openedTagIndex, 1);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tstack[level].appendChild(\n\t\t\t\t\t\tparserScheme.createText(fullTag),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (isList(lowerCaseTagName) && level > 0)\n\t\t\t\t{\n\t\t\t\t\tlevel--;\n\t\t\t\t}\n\n\t\t\t\tconst nextTagIndex: number = BBCodeParser.findNextTagIndex(bbcode, startIndex);\n\t\t\t\tif (nextTagIndex !== 0 && stack[level])\n\t\t\t\t{\n\t\t\t\t\tconst content: string = nextTagIndex === -1 ? nextContent : bbcode.slice(startIndex, nextTagIndex);\n\t\t\t\t\tstack[level].appendChild(\n\t\t\t\t\t\t...this.parseText(content),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (level > 0 && isListItem(stack[level].getName()))\n\t\t\t\t{\n\t\t\t\t\tconst nextTag: ?NextTagResult = BBCodeParser.findNextTag(bbcode, startIndex);\n\t\t\t\t\tif (Type.isNull(nextTag) || isListItem(nextTag.tagName))\n\t\t\t\t\t{\n\t\t\t\t\t\tlevel--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tconst getFinalLineBreaksIndexes = (node: BBCodeContentNode) => {\n\t\t\tlet skip = false;\n\n\t\t\treturn node\n\t\t\t\t.getChildren()\n\t\t\t\t.reduceRight((acc: Array<BBCodeContentNode>, child: BBCodeContentNode, index: number) => {\n\t\t\t\t\tif (!skip && child.getName() === '#linebreak')\n\t\t\t\t\t{\n\t\t\t\t\t\tacc.push(index);\n\t\t\t\t\t}\n\t\t\t\t\telse if (!skip && child.getName() !== '#tab')\n\t\t\t\t\t{\n\t\t\t\t\t\tskip = true;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, []);\n\t\t};\n\n\t\tBBCodeNode.flattenAst(result).forEach((node: BBCodeContentNode) => {\n\t\t\tif (node.getName() === '*')\n\t\t\t{\n\t\t\t\tconst finalLinebreaksIndexes: Array<number> = getFinalLineBreaksIndexes(node);\n\t\t\t\tif (finalLinebreaksIndexes.length === 1)\n\t\t\t\t{\n\t\t\t\t\tnode.setChildren(\n\t\t\t\t\t\tnode.getChildren().slice(0, getByIndex(finalLinebreaksIndexes, 0)),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (finalLinebreaksIndexes.length > 1 && (finalLinebreaksIndexes & 2) === 0)\n\t\t\t\t{\n\t\t\t\t\tnode.setChildren(\n\t\t\t\t\t\tnode.getChildren().slice(0, getByIndex(finalLinebreaksIndexes, 0)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.isAllowedLinkify()\n\t\t\t\t&& this.canBeLinkified(node)\n\t\t\t)\n\t\t\t{\n\t\t\t\tconst content = node.toString({ encode: false });\n\t\t\t\tconst tokens: Array<Linkify.MultiToken> = Linkify.tokenize(content);\n\n\t\t\t\tconst nodes = tokens.map((token: Linkify.MultiToken) => {\n\t\t\t\t\tif (token.t === 'url')\n\t\t\t\t\t{\n\t\t\t\t\t\treturn parserScheme.createElement({\n\t\t\t\t\t\t\tname: 'url',\n\t\t\t\t\t\t\tvalue: token.toHref().replace(/^http:\\/\\//, 'https://'),\n\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\tparserScheme.createText(token.toString()),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (token.t === 'email')\n\t\t\t\t\t{\n\t\t\t\t\t\treturn parserScheme.createElement({\n\t\t\t\t\t\t\tname: 'url',\n\t\t\t\t\t\t\tvalue: token.toHref(),\n\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\tparserScheme.createText(token.toString()),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn parserScheme.createText(token.toString());\n\t\t\t\t});\n\n\t\t\t\tnode.replace(...nodes);\n\t\t\t}\n\t\t});\n\n\t\tBBCodeNode.flattenAst(result).forEach((node: BBCodeNode) => {\n\t\t\tconst tagScheme: BBCodeTagScheme = this.getScheme().getTagScheme(node);\n\t\t\tif (tagScheme)\n\t\t\t{\n\t\t\t\ttagScheme.runOnParseHandler(node);\n\t\t\t}\n\t\t});\n\n\t\tresult.setScheme(\n\t\t\tthis.getScheme(),\n\t\t\tthis.getOnUnknownHandler(),\n\t\t);\n\n\t\treturn result;\n\t}\n}\n\nexport {\n\tBBCodeParser,\n};\n"],"names":["getByIndex","array","index","Type","isArray","TypeError","isInteger","preparedIndex","length","ParserScheme","BBCodeScheme","getTagScheme","tagName","BBCodeTagScheme","name","isAllowedTag","isChildAllowed","parent","child","TAG_REGEX","TAG_REGEX_GS","LF","CRLF","TAB","isLinebreak","symbol","includes","isTab","isSpecialChar","isList","String","toLowerCase","isListItem","parserScheme","BBCodeParser","constructor","options","allowedLinkify","scheme","setScheme","DefaultBBCodeScheme","isFunction","onUnknown","setOnUnknown","defaultOnUnknownHandler","encoder","BBCodeEncoder","setEncoder","isBoolean","linkify","setIsAllowedLinkify","getScheme","handler","onUnknownHandler","getOnUnknownHandler","getEncoder","value","Boolean","isAllowedLinkify","canBeLinkified","node","getName","notAllowedNodeNames","inNotAllowedNode","some","AstProcessor","findParentNodeByName","getType","BBCodeNode","ELEMENT_NODE","nodeName","newNode","createElement","replace","setChildren","getChildren","fragment","createFragment","children","openingTag","getOpeningTag","closingTag","getClosingTag","createText","isStringFilled","parseText","text","regex","matchAll","flatMap","token","reduce","acc","push","lastItem","isNil","map","createNewLine","createTab","content","decodeText","findNextTagIndex","bbcode","startIndex","nextContent","slice","matchResult","match","RegExp","findNextTag","slash","isClosedTag","trimQuotes","source","test","parseAttributes","sourceAttributes","result","attributes","startsWith","decodeAttribute","trim","split","filter","item","key","parse","createRoot","firstTagIndex","textBeforeFirstTag","appendChild","stack","wasOpened","current","level","fullTag","attrs","isOpeningTag","lowerCaseTagName","isPotentiallyVoid","tagScheme","isAllowedVoidTag","isVoid","Object","fromEntries","nextTagIndex","openedTagIndex","indexOf","splice","nextTag","isNull","getFinalLineBreaksIndexes","skip","reduceRight","flattenAst","forEach","finalLinebreaksIndexes","toString","encode","tokens","Linkify","tokenize","nodes","t","toHref","runOnParseHandler"],"mappings":";;;;;;CAEO,SAASA,UAAU,CAAIC,KAAe,EAAEC,KAAa,EAC5D;GACC,IAAI,CAACC,cAAI,CAACC,OAAO,CAACH,KAAK,CAAC,EACxB;KACC,MAAM,IAAII,SAAS,CAAC,sBAAsB,CAAC;;GAG5C,IAAI,CAACF,cAAI,CAACG,SAAS,CAACJ,KAAK,CAAC,EAC1B;KACC,MAAM,IAAIG,SAAS,CAAC,wBAAwB,CAAC;;GAG9C,MAAME,aAAa,GAAGL,KAAK,GAAG,CAAC,GAAGD,KAAK,CAACO,MAAM,GAAGN,KAAK,GAAGA,KAAK;GAE9D,OAAOD,KAAK,CAACM,aAAa,CAAC;CAC5B;;CCfO,MAAME,YAAY,SAASC,4BAAY,CAC9C;GACCC,YAAY,CAACC,OAAe,EAC5B;KACC,OAAO,IAAIC,+BAAe,CAAC;OAC1BC,IAAI,EAAE;MACN,CAAC;;GAGHC,YAAY,CAACH,OAAe,EAC5B;KACC,OAAO,IAAI;;GAGZI,cAAc,CAACC,MAA2B,EAAEC,KAA0B,EACtE;KACC,OAAO,IAAI;;CAEb;;CCFA,MAAMC,SAAiB,GAAG,qBAAqB;CAC/C,MAAMC,YAAoB,GAAG,yBAAyB;CAEtD,MAAMC,EAAE,GAAG,IAAI;CACf,MAAMC,IAAI,GAAG,MAAM;CACnB,MAAMC,GAAG,GAAG,IAAI;CAEhB,MAAMC,WAAW,GAAIC,MAAc,IAAc;GAChD,OAAO,CAACJ,EAAE,EAAEC,IAAI,CAAC,CAACI,QAAQ,CAACD,MAAM,CAAC;CACnC,CAAC;CAED,MAAME,KAAK,GAAIF,MAAc,IAAc;GAC1C,OAAOA,MAAM,KAAKF,GAAG;CACtB,CAAC;CAED,MAAMK,aAAa,GAAIH,MAAc,IAAc;GAClD,OAAOE,KAAK,CAACF,MAAM,CAAC,IAAID,WAAW,CAACC,MAAM,CAAC;CAC5C,CAAC;CAED,MAAMI,MAAM,GAAIjB,OAAe,IAAc;GAC5C,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAACc,QAAQ,CAACI,MAAM,CAAClB,OAAO,CAAC,CAACmB,WAAW,EAAE,CAAC;CACpE,CAAC;CAED,MAAMC,UAAU,GAAIpB,OAAe,IAAc;GAChD,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAACc,QAAQ,CAACI,MAAM,CAAClB,OAAO,CAAC,CAACmB,WAAW,EAAE,CAAC;CAC3D,CAAC;CAED,MAAME,YAAY,GAAG,IAAIxB,YAAY,EAAE;CAcvC,MAAMyB,YAAY,CAClB;GAMCC,WAAW,CAACC,OAA4B,GAAG,EAAE,EAC7C;KAAA,KAHAC,cAAc,GAAY,IAAI;KAI7B,IAAID,OAAO,CAACE,MAAM,EAClB;OACC,IAAI,CAACC,SAAS,CAACH,OAAO,CAACE,MAAM,CAAC;MAC9B,MAED;OACC,IAAI,CAACC,SAAS,CAAC,IAAIC,mCAAmB,EAAE,CAAC;;KAG1C,IAAIrC,cAAI,CAACsC,UAAU,CAACL,OAAO,CAACM,SAAS,CAAC,EACtC;OACC,IAAI,CAACC,YAAY,CAACP,OAAO,CAACM,SAAS,CAAC;MACpC,MAED;OACC,IAAI,CAACC,YAAY,CAACT,YAAY,CAACU,uBAAuB,CAAC;;KAGxD,IAAIR,OAAO,CAACS,OAAO,YAAYC,+BAAa,EAC5C;OACC,IAAI,CAACC,UAAU,CAACX,OAAO,CAACS,OAAO,CAAC;MAChC,MAED;OACC,IAAI,CAACE,UAAU,CAAC,IAAID,+BAAa,EAAE,CAAC;;KAGrC,IAAI3C,cAAI,CAAC6C,SAAS,CAACZ,OAAO,CAACa,OAAO,CAAC,EACnC;OACC,IAAI,CAACC,mBAAmB,CAACd,OAAO,CAACa,OAAO,CAAC;;;GAI3CV,SAAS,CAACD,MAAoB,EAC9B;KACC,IAAI,CAACA,MAAM,GAAGA,MAAM;;GAGrBa,SAAS,GACT;KACC,OAAO,IAAI,CAACb,MAAM;;GAGnBK,YAAY,CAACS,OAAkB,EAC/B;KACC,IAAI,CAACjD,cAAI,CAACsC,UAAU,CAACW,OAAO,CAAC,EAC7B;OACC,MAAM,IAAI/C,SAAS,CAAC,2BAA2B,CAAC;;KAGjD,IAAI,CAACgD,gBAAgB,GAAGD,OAAO;;GAGhCE,mBAAmB,GACnB;KACC,OAAO,IAAI,CAACD,gBAAgB;;GAG7BN,UAAU,CAACF,OAAsB,EACjC;KACC,IAAIA,OAAO,YAAYC,+BAAa,EACpC;OACC,IAAI,CAACD,OAAO,GAAGA,OAAO;MACtB,MAED;OACC,MAAM,IAAIxC,SAAS,CAAC,uCAAuC,CAAC;;;GAI9DkD,UAAU,GACV;KACC,OAAO,IAAI,CAACV,OAAO;;GAGpBK,mBAAmB,CAACM,KAAc,EAClC;KACC,IAAI,CAACnB,cAAc,GAAGoB,OAAO,CAACD,KAAK,CAAC;;GAGrCE,gBAAgB,GAChB;KACC,OAAO,IAAI,CAACrB,cAAc;;GAG3BsB,cAAc,CAACC,IAAwC,EACvD;KACC,IAAIA,IAAI,CAACC,OAAO,EAAE,KAAK,OAAO,EAC9B;OACC,MAAMC,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;OAC3D,MAAMC,gBAAgB,GAAGD,mBAAmB,CAACE,IAAI,CAAElD,IAAY,IAAK;SACnE,OAAO2C,OAAO,CAACQ,mCAAY,CAACC,oBAAoB,CAACN,IAAI,EAAE9C,IAAI,CAAC,CAAC;QAC7D,CAAC;OAEF,OAAO,CAACiD,gBAAgB;;KAGzB,OAAO,KAAK;;GAGb,OAAOnB,uBAAuB,CAACgB,IAAuB,EAAEtB,MAAoB,EAC5E;KACC,IAAIsB,IAAI,CAACO,OAAO,EAAE,KAAKC,0BAAU,CAACC,YAAY,EAC9C;OACC,MAAMC,QAAgB,GAAGV,IAAI,CAACC,OAAO,EAAE;OACvC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAACnC,QAAQ,CAAC4C,QAAQ,CAAC,EAC7D;SACC,MAAMC,OAAO,GAAGjC,MAAM,CAACkC,aAAa,CAAC;WACpC1D,IAAI,EAAE;UACN,CAAC;SACF8C,IAAI,CAACa,OAAO,CAACF,OAAO,CAAC;SACrBA,OAAO,CAACG,WAAW,CAACd,IAAI,CAACe,WAAW,EAAE,CAAC;QACvC,MACI,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAACjD,QAAQ,CAAC4C,QAAQ,CAAC,EAC3D;SACC,MAAMC,OAAO,GAAGjC,MAAM,CAACkC,aAAa,CAAC;WACpC1D,IAAI,EAAE;UACN,CAAC;SACF8C,IAAI,CAACa,OAAO,CAACF,OAAO,CAAC;SACrBA,OAAO,CAACG,WAAW,CAACd,IAAI,CAACe,WAAW,EAAE,CAAC;QACvC,MACI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAACjD,QAAQ,CAAC4C,QAAQ,CAAC,EAC5C;SACC,MAAMM,QAAQ,GAAGtC,MAAM,CAACuC,cAAc,CAAC;WAAEC,QAAQ,EAAElB,IAAI,CAACe,WAAW;UAAI,CAAC;SACxEf,IAAI,CAACa,OAAO,CAACG,QAAQ,CAAC;QACtB,MAED;SACC,MAAMG,UAAkB,GAAGnB,IAAI,CAACoB,aAAa,EAAE;SAC/C,MAAMC,UAAkB,GAAGrB,IAAI,CAACsB,aAAa,EAAE;SAE/CtB,IAAI,CAACa,OAAO,CACXnC,MAAM,CAAC6C,UAAU,CAACJ,UAAU,CAAC,EAC7B,GAAGnB,IAAI,CAACe,WAAW,EAAE,EACrBrC,MAAM,CAAC6C,UAAU,CAACF,UAAU,CAAC,CAC7B;;;;GAKJ,OAAOlD,WAAW,CAACyB,KAAa,EAChC;KACC,IAAIrD,cAAI,CAACiF,cAAc,CAAC5B,KAAK,CAAC,EAC9B;OACC,OAAOA,KAAK,CAACzB,WAAW,EAAE;;KAG3B,OAAOyB,KAAK;;GAGb6B,SAAS,CAACC,IAAY,EACtB;KACC,IAAInF,cAAI,CAACiF,cAAc,CAACE,IAAI,CAAC,EAC7B;OACC,MAAMC,KAAK,GAAG,kCAAkC;OAEhD,OAAO,CAAC,GAAGD,IAAI,CAACE,QAAQ,CAACD,KAAK,CAAC,CAAC,CAC9BE,OAAO,CAAC,CAAC,CAACC,KAAK,CAAC,KAAK;SACrB,IAAIlE,WAAW,CAACkE,KAAK,CAAC,EACtB;WACC,OAAOA,KAAK;;SAGb,OAAO,CAAC,GAAGA,KAAK,CAAC;QACjB,CAAC,CACDC,MAAM,CAAC,CAACC,GAAkD,EAAEnE,MAAc,KAAK;SAC/E,IAAIG,aAAa,CAACH,MAAM,CAAC,EACzB;WACCmE,GAAG,CAACC,IAAI,CAACpE,MAAM,CAAC;UAChB,MAED;WACC,MAAMqE,QAAgB,GAAG9F,UAAU,CAAC4F,GAAG,EAAE,CAAC,CAAC,CAAC;WAC5C,IAAIhE,aAAa,CAACkE,QAAQ,CAAC,IAAI3F,cAAI,CAAC4F,KAAK,CAACD,QAAQ,CAAC,EACnD;aACCF,GAAG,CAACC,IAAI,CAACpE,MAAM,CAAC;YAChB,MAED;aACCmE,GAAG,CAACA,GAAG,CAACpF,MAAM,GAAG,CAAC,CAAC,IAAIiB,MAAM;;;SAI/B,OAAOmE,GAAG;QACV,EAAE,EAAE,CAAC,CACLI,GAAG,CAAEpB,QAAgB,IAAK;SAC1B,IAAIpD,WAAW,CAACoD,QAAQ,CAAC,EACzB;WACC,OAAO3C,YAAY,CAACgE,aAAa,EAAE;;SAGpC,IAAItE,KAAK,CAACiD,QAAQ,CAAC,EACnB;WACC,OAAO3C,YAAY,CAACiE,SAAS,EAAE;;SAGhC,OAAOjE,YAAY,CAACkD,UAAU,CAAC;WAC9BgB,OAAO,EAAE,IAAI,CAAC5C,UAAU,EAAE,CAAC6C,UAAU,CAACxB,QAAQ;UAC9C,CAAC;QACF,CAAC;;KAGJ,OAAO,EAAE;;GAGV,OAAOyB,gBAAgB,CAACC,MAAc,EAAEC,UAAU,GAAG,CAAC,EACtD;KACC,MAAMC,WAAmB,GAAGF,MAAM,CAACG,KAAK,CAACF,UAAU,CAAC;KACpD,MAAMG,WAAW,GAAGF,WAAW,CAACG,KAAK,CAAC,IAAIC,MAAM,CAACzF,SAAS,CAAC,CAAC;KAC5D,IAAIuF,WAAW,EACf;OACC,OAAOA,WAAW,CAACxG,KAAK,GAAGqG,UAAU;;KAGtC,OAAO,CAAC,CAAC;;GAGV,OAAOM,WAAW,CAACP,MAAc,EAAEC,UAAU,GAAG,CAAC,EACjD;KACC,MAAMC,WAAmB,GAAGF,MAAM,CAACG,KAAK,CAACF,UAAU,CAAC;KACpD,MAAMG,WAAW,GAAGF,WAAW,CAACG,KAAK,CAAC,IAAIC,MAAM,CAACzF,SAAS,CAAC,CAAC;KAC5D,IAAIuF,WAAW,EACf;OACC,MAAM,GAAGI,KAAK,EAAElG,OAAO,CAAC,GAAG8F,WAAW;OAEtC,OAAO;SACN9F,OAAO;SACPmG,WAAW,EAAED,KAAK,KAAK;QACvB;;KAGF,OAAO,IAAI;;GAGZ,OAAOE,UAAU,CAACxD,KAAa,EAC/B;KACC,MAAMyD,MAAM,GAAGnF,MAAM,CAAC0B,KAAK,CAAC;KAC5B,IAAK,eAAe,CAAE0D,IAAI,CAACD,MAAM,CAAC,EAClC;OACC,OAAOA,MAAM,CAACR,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;KAG3B,OAAOjD,KAAK;;GAGb2D,eAAe,CAACC,gBAAwB,EACxC;KACC,MAAMC,MAAiE,GAAG;OAAE7D,KAAK,EAAE,EAAE;OAAE8D,UAAU,EAAE;MAAI;KAEvG,IAAInH,cAAI,CAACiF,cAAc,CAACgC,gBAAgB,CAAC,EACzC;OACC,IAAIA,gBAAgB,CAACG,UAAU,CAAC,GAAG,CAAC,EACpC;SACCF,MAAM,CAAC7D,KAAK,GAAG,IAAI,CAACD,UAAU,EAAE,CAACiE,eAAe,CAC/CtF,YAAY,CAAC8E,UAAU,CACtBI,gBAAgB,CAACX,KAAK,CAAC,CAAC,CAAC,CACzB,CACD;SAED,OAAOY,MAAM;;OAGd,OAAOD,gBAAgB,CACrBK,IAAI,EAAE,CACNC,KAAK,CAAC,GAAG,CAAC,CACVC,MAAM,CAAClE,OAAO,CAAC,CACfkC,MAAM,CAAC,CAACC,GAAkB,EAAEgC,IAAY,KAAK;SAC7C,MAAM,CAACC,GAAW,EAAErE,KAAa,GAAG,EAAE,CAAC,GAAGoE,IAAI,CAACF,KAAK,CAAC,GAAG,CAAC;SACzD9B,GAAG,CAAC0B,UAAU,CAACzB,IAAI,CAAC,CACnB3D,YAAY,CAACH,WAAW,CAAC8F,GAAG,CAAC,EAC7B,IAAI,CAACtE,UAAU,EAAE,CAACiE,eAAe,CAChCtF,YAAY,CAAC8E,UAAU,CAACxD,KAAK,CAAC,CAC9B,CACD,CAAC;SAEF,OAAOoC,GAAG;QACV,EAAEyB,MAAM,CAAC;;KAGZ,OAAOA,MAAM;;GAGdS,KAAK,CAACxB,MAAc,EACpB;KACC,MAAMe,MAAsB,GAAGpF,YAAY,CAAC8F,UAAU,EAAE;KAExD,MAAMC,aAAqB,GAAG9F,YAAY,CAACmE,gBAAgB,CAACC,MAAM,CAAC;KACnE,IAAI0B,aAAa,KAAK,CAAC,EACvB;OACC,MAAMC,kBAA0B,GAAGD,aAAa,KAAK,CAAC,CAAC,GAAG1B,MAAM,GAAGA,MAAM,CAACG,KAAK,CAAC,CAAC,EAAEuB,aAAa,CAAC;OACjGX,MAAM,CAACa,WAAW,CACjB,GAAG,IAAI,CAAC7C,SAAS,CAAC4C,kBAAkB,CAAC,CACrC;;KAGF,MAAME,KAA+B,GAAG,CAACd,MAAM,CAAC;KAChD,MAAMe,SAAwB,GAAG,EAAE;KACnC,IAAIC,OAA2B,GAAG,IAAI;KACtC,IAAIC,KAAa,GAAG,CAAC;KAErBhC,MAAM,CAAC7B,OAAO,CAACrD,YAAY,EAAE,CAACmH,OAAe,EAAEzB,KAAc,EAAElG,OAAe,EAAE4H,KAAc,EAAEtI,KAAa,KAAK;OACjH,MAAMuI,YAAqB,GAAGhF,OAAO,CAACqD,KAAK,CAAC,KAAK,KAAK;OACtD,MAAMP,UAAkB,GAAGgC,OAAO,CAAC/H,MAAM,GAAGN,KAAK;OACjD,MAAMsG,WAAmB,GAAGF,MAAM,CAACG,KAAK,CAACF,UAAU,CAAC;OACpD,MAAMe,UAAU,GAAG,IAAI,CAACH,eAAe,CAACqB,KAAK,CAAC;OAC9C,MAAME,gBAAwB,GAAGxG,YAAY,CAACH,WAAW,CAACnB,OAAO,CAAC;OAClE,IAAIK,MAA6C,GAAGkH,KAAK,CAACG,KAAK,CAAC;OAEhE,IAAIG,YAAY,EAChB;SACC,MAAME,iBAA0B,GAAG,CAACnC,WAAW,CAAC9E,QAAQ,CAAE,KAAId,OAAQ,GAAE,CAAC;SACzE,IACC+H,iBAAiB,IACd,CAAC3G,UAAU,CAAC0G,gBAAgB,CAAC,EAEjC;WACC,MAAME,SAA0B,GAAG,IAAI,CAACzF,SAAS,EAAE,CAACxC,YAAY,CAAC+H,gBAAgB,CAAC;WAClF,MAAMG,gBAAyB,GAAGD,SAAS,IAAIA,SAAS,CAACE,MAAM,EAAE;WACjE,IAAID,gBAAgB,EACpB;aACCR,OAAO,GAAGpG,YAAY,CAACuC,aAAa,CAAC;eACpC1D,IAAI,EAAE4H,gBAAgB;eACtBlF,KAAK,EAAE8D,UAAU,CAAC9D,KAAK;eACvB8D,UAAU,EAAEyB,MAAM,CAACC,WAAW,CAAC1B,UAAU,CAACA,UAAU;cACpD,CAAC;aAEFe,OAAO,CAAC9F,SAAS,CAAC,IAAI,CAACY,SAAS,EAAE,CAAC;aACnClC,MAAM,CAACiH,WAAW,CAACG,OAAO,CAAC;YAC3B,MAED;aACCpH,MAAM,CAACiH,WAAW,CACjBjG,YAAY,CAACkD,UAAU,CAACoD,OAAO,CAAC,CAChC;;WAGF,MAAMU,YAAoB,GAAG/G,YAAY,CAACmE,gBAAgB,CAACC,MAAM,EAAEC,UAAU,CAAC;WAC9E,IAAI0C,YAAY,KAAK,CAAC,EACtB;aACC,MAAM9C,OAAe,GAAG8C,YAAY,KAAK,CAAC,CAAC,GAAGzC,WAAW,GAAGF,MAAM,CAACG,KAAK,CAACF,UAAU,EAAE0C,YAAY,CAAC;aAClGhI,MAAM,CAACiH,WAAW,CACjB,GAAG,IAAI,CAAC7C,SAAS,CAACc,OAAO,CAAC,CAC1B;;UAEF,MAED;WACC,IAAInE,UAAU,CAAC0G,gBAAgB,CAAC,IAAIL,OAAO,IAAIrG,UAAU,CAACqG,OAAO,CAACxE,OAAO,EAAE,CAAC,EAC5E;aACCyE,KAAK,EAAE;aACPrH,MAAM,GAAGkH,KAAK,CAACG,KAAK,CAAC;;WAGtBD,OAAO,GAAGpG,YAAY,CAACuC,aAAa,CAAC;aACpC1D,IAAI,EAAE4H,gBAAgB;aACtBlF,KAAK,EAAE8D,UAAU,CAAC9D,KAAK;aACvB8D,UAAU,EAAEyB,MAAM,CAACC,WAAW,CAAC1B,UAAU,CAACA,UAAU;YACpD,CAAC;WAEF,MAAM2B,YAAoB,GAAG/G,YAAY,CAACmE,gBAAgB,CAACC,MAAM,EAAEC,UAAU,CAAC;WAC9E,IAAI0C,YAAY,KAAK,CAAC,EACtB;aACC,MAAM9C,OAAe,GAAG8C,YAAY,KAAK,CAAC,CAAC,GAAGzC,WAAW,GAAGF,MAAM,CAACG,KAAK,CAACF,UAAU,EAAE0C,YAAY,CAAC;aAClGZ,OAAO,CAACH,WAAW,CAClB,GAAG,IAAI,CAAC7C,SAAS,CAACc,OAAO,CAAC,CAC1B;;WAGF,IAAI,CAAClF,MAAM,EACX;aACCqH,KAAK,EAAE;aACPrH,MAAM,GAAGkH,KAAK,CAACG,KAAK,CAAC;;WAGtBrH,MAAM,CAACiH,WAAW,CAACG,OAAO,CAAC;WAE3BC,KAAK,EAAE;WACPH,KAAK,CAACG,KAAK,CAAC,GAAGD,OAAO;WACtBD,SAAS,CAACvC,IAAI,CAAC6C,gBAAgB,CAAC;;QAEjC,MAED;SACC,IAAIN,SAAS,CAAC1G,QAAQ,CAACgH,gBAAgB,CAAC,EACxC;WACCJ,KAAK,EAAE;WACP,MAAMY,cAAsB,GAAGd,SAAS,CAACe,OAAO,CAACT,gBAAgB,CAAC;WAClEN,SAAS,CAACgB,MAAM,CAACF,cAAc,EAAE,CAAC,CAAC;UACnC,MAED;WACCf,KAAK,CAACG,KAAK,CAAC,CAACJ,WAAW,CACvBjG,YAAY,CAACkD,UAAU,CAACoD,OAAO,CAAC,CAChC;;SAGF,IAAI1G,MAAM,CAAC6G,gBAAgB,CAAC,IAAIJ,KAAK,GAAG,CAAC,EACzC;WACCA,KAAK,EAAE;;SAGR,MAAMW,YAAoB,GAAG/G,YAAY,CAACmE,gBAAgB,CAACC,MAAM,EAAEC,UAAU,CAAC;SAC9E,IAAI0C,YAAY,KAAK,CAAC,IAAId,KAAK,CAACG,KAAK,CAAC,EACtC;WACC,MAAMnC,OAAe,GAAG8C,YAAY,KAAK,CAAC,CAAC,GAAGzC,WAAW,GAAGF,MAAM,CAACG,KAAK,CAACF,UAAU,EAAE0C,YAAY,CAAC;WAClGd,KAAK,CAACG,KAAK,CAAC,CAACJ,WAAW,CACvB,GAAG,IAAI,CAAC7C,SAAS,CAACc,OAAO,CAAC,CAC1B;;SAGF,IAAImC,KAAK,GAAG,CAAC,IAAItG,UAAU,CAACmG,KAAK,CAACG,KAAK,CAAC,CAACzE,OAAO,EAAE,CAAC,EACnD;WACC,MAAMwF,OAAuB,GAAGnH,YAAY,CAAC2E,WAAW,CAACP,MAAM,EAAEC,UAAU,CAAC;WAC5E,IAAIpG,cAAI,CAACmJ,MAAM,CAACD,OAAO,CAAC,IAAIrH,UAAU,CAACqH,OAAO,CAACzI,OAAO,CAAC,EACvD;aACC0H,KAAK,EAAE;;;;MAIV,CAAC;KAEF,MAAMiB,yBAAyB,GAAI3F,IAAuB,IAAK;OAC9D,IAAI4F,IAAI,GAAG,KAAK;OAEhB,OAAO5F,IAAI,CACTe,WAAW,EAAE,CACb8E,WAAW,CAAC,CAAC7D,GAA6B,EAAE1E,KAAwB,EAAEhB,KAAa,KAAK;SACxF,IAAI,CAACsJ,IAAI,IAAItI,KAAK,CAAC2C,OAAO,EAAE,KAAK,YAAY,EAC7C;WACC+B,GAAG,CAACC,IAAI,CAAC3F,KAAK,CAAC;UACf,MACI,IAAI,CAACsJ,IAAI,IAAItI,KAAK,CAAC2C,OAAO,EAAE,KAAK,MAAM,EAC5C;WACC2F,IAAI,GAAG,IAAI;;SAGZ,OAAO5D,GAAG;QACV,EAAE,EAAE,CAAC;MACP;KAEDxB,0BAAU,CAACsF,UAAU,CAACrC,MAAM,CAAC,CAACsC,OAAO,CAAE/F,IAAuB,IAAK;OAClE,IAAIA,IAAI,CAACC,OAAO,EAAE,KAAK,GAAG,EAC1B;SACC,MAAM+F,sBAAqC,GAAGL,yBAAyB,CAAC3F,IAAI,CAAC;SAC7E,IAAIgG,sBAAsB,CAACpJ,MAAM,KAAK,CAAC,EACvC;WACCoD,IAAI,CAACc,WAAW,CACfd,IAAI,CAACe,WAAW,EAAE,CAAC8B,KAAK,CAAC,CAAC,EAAEzG,UAAU,CAAC4J,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAClE;;SAGF,IAAIA,sBAAsB,CAACpJ,MAAM,GAAG,CAAC,IAAI,CAACoJ,sBAAsB,GAAG,CAAC,MAAM,CAAC,EAC3E;WACChG,IAAI,CAACc,WAAW,CACfd,IAAI,CAACe,WAAW,EAAE,CAAC8B,KAAK,CAAC,CAAC,EAAEzG,UAAU,CAAC4J,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAClE;;;OAIH,IACC,IAAI,CAAClG,gBAAgB,EAAE,IACpB,IAAI,CAACC,cAAc,CAACC,IAAI,CAAC,EAE7B;SACC,MAAMuC,OAAO,GAAGvC,IAAI,CAACiG,QAAQ,CAAC;WAAEC,MAAM,EAAE;UAAO,CAAC;SAChD,MAAMC,MAAiC,GAAGC,kBAAO,CAACC,QAAQ,CAAC9D,OAAO,CAAC;SAEnE,MAAM+D,KAAK,GAAGH,MAAM,CAAC/D,GAAG,CAAEN,KAAyB,IAAK;WACvD,IAAIA,KAAK,CAACyE,CAAC,KAAK,KAAK,EACrB;aACC,OAAOlI,YAAY,CAACuC,aAAa,CAAC;eACjC1D,IAAI,EAAE,KAAK;eACX0C,KAAK,EAAEkC,KAAK,CAAC0E,MAAM,EAAE,CAAC3F,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC;eACvDK,QAAQ,EAAE,CACT7C,YAAY,CAACkD,UAAU,CAACO,KAAK,CAACmE,QAAQ,EAAE,CAAC;cAE1C,CAAC;;WAGH,IAAInE,KAAK,CAACyE,CAAC,KAAK,OAAO,EACvB;aACC,OAAOlI,YAAY,CAACuC,aAAa,CAAC;eACjC1D,IAAI,EAAE,KAAK;eACX0C,KAAK,EAAEkC,KAAK,CAAC0E,MAAM,EAAE;eACrBtF,QAAQ,EAAE,CACT7C,YAAY,CAACkD,UAAU,CAACO,KAAK,CAACmE,QAAQ,EAAE,CAAC;cAE1C,CAAC;;WAGH,OAAO5H,YAAY,CAACkD,UAAU,CAACO,KAAK,CAACmE,QAAQ,EAAE,CAAC;UAChD,CAAC;SAEFjG,IAAI,CAACa,OAAO,CAAC,GAAGyF,KAAK,CAAC;;MAEvB,CAAC;KAEF9F,0BAAU,CAACsF,UAAU,CAACrC,MAAM,CAAC,CAACsC,OAAO,CAAE/F,IAAgB,IAAK;OAC3D,MAAMgF,SAA0B,GAAG,IAAI,CAACzF,SAAS,EAAE,CAACxC,YAAY,CAACiD,IAAI,CAAC;OACtE,IAAIgF,SAAS,EACb;SACCA,SAAS,CAACyB,iBAAiB,CAACzG,IAAI,CAAC;;MAElC,CAAC;KAEFyD,MAAM,CAAC9E,SAAS,CACf,IAAI,CAACY,SAAS,EAAE,EAChB,IAAI,CAACG,mBAAmB,EAAE,CAC1B;KAED,OAAO+D,MAAM;;CAEf;;;;;;;;"}